/**
 * @include  "d:/www/_common/js/js_common.js"
 * @include  "d:/www/_common/js/ajaqs_sender.js"
 * @include  "d:/www/_common/js/events.js"
 * @include  "_p_messages.js"
 * @include  "_p_scripts.js"
 * @include  "_p_scripts.js"
 */

/**
 * пытается показать окно обратной связи
 *
 * @return boolean - всегда TRUE
 */
function feedback()
{
	if (!xmlHttp) return false;        // запуск Аякса невозможен - пропускаем

	var loDiv = id('feed_shell');

	feed_overlay_start();
	feed_overlay();

	if (!loDiv)		//	нету формы - сначала ее создаем
	{
		var lcRand = Math.random() * Math.random() * Math.random();
		var lcUrl = './feed-form/'+lcRand+'/';
	    oAjax.start(lcUrl, feedback_Response, 'txtNone=1', true);
	}
	else feedback_Show();		//	показываем форму

	return null;
}

/**
 * устанавливает заголовок псевдоокна и подсказку в "окнах" сообщения админу и 
 * письма аффтару объявы
 * 
 * @param {HTMLElement} toWin - ссылка на элемент-псевдоокно
 * @param {String} tcMode - режим работы message или feedback
 * @return void
 */
function set_feed_title(toWin, tcMode)
{
	var loHelp = id('feed_help');
	var loTitle = id('feed_title');

	switch(tcMode)
	{
		case 'message': 
			loTitle.innerHTML = p_msg.messTitle;
			loHelp.innerHTML = p_msg.messHelp;
			break;
		case 'feedback': 
			loTitle.innerHTML = p_msg.feedTitle;
			loHelp.innerHTML = p_msg.feedHelp;
			break;
	}
}

/**
 * получает HTML-код формы обратной связи с сервера
 *
 * @return boolean - всегда TRUE
 */
function feedback_Response()
{
	if (oAjax.responseText != '')
	{
		var loDiv = dce('div');
		loDiv.id = 'feed_shell';
		loDiv.className = 'psevdo_window';
		loDiv.innerHTML = oAjax.responseText;

		dbac(loDiv);
		feedback_Show();		//	показываем форму
	}
	else hide('feed_overlay');
	return true;
}

/**
 * показывает форму обратной связи
 *
 * @return void
 */
function feedback_Show()
{
	var loDiv = id('feed_shell');

	loDiv.style.width = p_obj.feedW + 'px';
	loDiv.style.height = p_obj.feedH + 'px';

    var lnTop = calcPWindowY(p_obj.feedH);	// вертикальное позиционирование контейнера посредине окна
    var lnLeft = calcPWindowX(p_obj.feedW);	// горизонтальное позиционирование контейнера посредине окна

    setXY(loDiv, lnLeft, lnTop);
    
	loDiv.style.display = "block";

	set_feed_title(loDiv, 'feedback');

	id('cmdSendFeed').onclick = feedback_send;

	id('txtFName').focus();
}

/**
 * проверяет форму обратной связи на правильность,
 * и если все Ок инициализирует отправку данных на сервер
 *
 * @return boolean - всегда TRUE
 */
function feedback_send()
{
	if (! feedback_check_form()) return false;

	var laValues = ['txtFName', 'txtFEmail', 'txtFTema', 'edtFText'];

	oAjax.start('./feed-send/', feedback_send_Response, laValues, true);

	return true;
}

/**
 * проверяет правильность заполнения формы обратной связи
 * @return boolean - TRUE - если с формой все ОК
 */
function feedback_check_form()
{
	var loEmail = id('txtFEmail');
	var loText = id('txtFEmail');

	if (id('feed_shell').style.display != 'block') return false;

	if (loEmail.value == '') { alert('Укажите свой e-mail!'); loEmail.focus(); return false; }
	if (loEmail.value!=''  &&  !check_email_valid(loEmail.value)) { alert('Укажите правильно свой e-mail!'); loEmail.focus(); return false; }

	if (loText.value == '') { alert('А что же Вы сообщить хотели?'); loText.focus(); return false; }
	if (loText.value.length > p_obj.maxFeedLen) { alert('Слишком длинное сообщение!'); loText.focus(); return false; }

	return true;
}

/**
 * обрабатывает ответ сервера после отправки сообщения обратной связи
 *
 * @return boolean - всегда TRUE
 */
function feedback_send_Response()
{
	if (oAjax.responseObj.result == 'Error') { alert(oAjax.responseObj.error); return true; }
	else
	{
		alert(oAjax.responseObj.message);
		id('txtFTema').value = '';
		id('edtFText').value = '';
		close_feed_form();
	}
	return true;
}

/**
 * закрывает форму (скрывает "окно") обратной связи
 *
 * @return void
 */
function close_feed_form()
{
	hide('feed_shell');
	hide('feed_overlay');
}

/**
 * проверяет сколько еще можно ввести в поле "текст сообщения" в форме обратной связи
 *
 * @param HTMLobject toObj - ссылка на объект, длину которого проверям
 * @return integer - сколько еще можно ввести в поле "текст сообщения"
 */
function check_feed_len(toObj)
{
	return check_text_field_len(toObj, 'edtFText_Left', p_obj.maxFeedLen);
}

/**
 * создает элемент-перекрытие для предпросмотра объявления
 *
 * @return void
 */
function feed_overlay_start()
{
	var loOver = id('feed_overlay');

	if (! loOver)
	{
	    var overlay = dce("div");
	    overlay.id = "feed_overlay";

	    if (document.all) overlay.style.cursor = 'hand'; // для ИЭ так, как 'hand' - некорректное значение

	    overlay.style.opacity = 0.5;    //  добавляем тут чтоб FF не ругалсо

	    overlay.onclick = close_feed_form; // добавляем к нему возможность - по клику - закрытие окна предпросмотра

	    dbac(overlay); // добавляем перекрытие в структуру DOM
	}
}

/**
 * стартует анимацию проявления перекрытия для формы обратной связи
 *
 * @return void
 */
function feed_overlay()
{
    var over = id("feed_overlay");

    //	установка его размеров по высоте и ширине текущей страницы
    //	(что пригодится в случае прокрутки)
    over.style.height = pageHeight() + "px";
    over.style.width  = pageWidth() + "px";

    //	и проявление
    fadeIn(over, 30, 5);
}
