function TF_mail_form_constructor()
{
	var ua = navigator.userAgent.toLowerCase();
	var isIE = (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1);
	var isGecko = (ua.indexOf("gecko") != -1);
	var isChrome = false, chrome_version = false;
	if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
		isChrome = true;
	};

	//Размер окна по горизонтали(по X)
	var getDocumentWidth = function()
	{
		return (window.innerWidth)?window.innerWidth:((document.all)?document.documentElement.offsetWidth:null);
	};
	//Размер окна по вертикали(по Y)
	var getDocumentHeight = function()
	{
		return (window.innerHeight)?window.innerHeight:((document.all)?document.documentElement.offsetHeight:null);
	};
	// На сколько проскролена страница по X
	var getBodyScrollLeft = function()
	{
		return self.pageXOffset ||	(document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
	};
	// На сколько проскролена страница по Y
	var getBodyScrollTop = function()
	{
		return self.pageYOffset ||	(document.documentElement && document.documentElement.scrollTop) ||	(document.body && document.body.scrollTop);
	};
	// Ценрт монитора с учётом скрола по X
	var getClientCenterX = function()
	{
		return parseInt(getDocumentWidth()/2)+getBodyScrollLeft();
	};
	// Ценрт монитора с учётом скрола по Y
	var getClientCenterY = function()
	{
		return parseInt(getDocumentHeight()/2)+getBodyScrollTop();
	};

	var $TF_mail_form_config = {
		div_width: 400
		,mail_to: '' // берётся из передаваемого параметра в функцию $TF_mail_form_createForm(mail)
		,head : "Отправка письма администрации сайта"
		,use_default_program : "использовать стандартную программу"
		,use_default_program_title : "Использовать Outlook, The Bat\nили другую настроенную на браузер программу"

	};

	var $TF_mail_form_input_config = {
		0 : {tagName : "input", type : "text", name : "from", text : "Ваш e-mail", value : ""}
		,1 : {tagName : "input", type : "text", name : "theme", text : "Тема", value : ""}
		,2 : {tagName : "textarea", name : "message", text : "Сообщение", value : ""}
	};

	var $TF_mail_form_events = function(evt) {
		evt = evt || window.event;
		var key = evt.keyCode || evt.which;
		// escKey only && when isset TF_mail_form
		if (key == 27 && $('TF_mail_form') && $('TF_mail_form').style.display=="inline")
		{
			if(evt.stopPropagation) evt.stopPropagation();
			else evt.cancelBubble = true;
			if(evt.preventDefault) evt.preventDefault();
			else evt.returnValue = false;
			$TF_mail_form_closeForm();
			return false;
		}
	};

	this.$TF_mail_form_closeForm_inter = function()
	{
		$TF_mail_form_closeForm();
	}

	var $TF_mail_form_closeForm = function()
	{
		if($('TF_mail_form'))
		{
			var div = $('TF_mail_form');
			div.style.display="none";
		}
	};

	this.$TF_mail_form_createForm = function(mail)
	{
		if(mail) $TF_mail_form_config.mail_to = mail;
		if(!$('TF_mail_form'))
		{
			var str = '<div id="TF_mail_form" style="background:#F5F5F5; z-index:100; border: 1px solid #555; padding:1em; font-family: Arial; font-size: 90%; color:black; margin:auto;position:absolute;display:none;"></div>';
			// Варианты дописывания окна в тег body
			if(document.body.innerHTML) document.body.innerHTML+=str;
			else if (document.getElementsByTagName("body")[0].innerHTML) document.getElementsByTagName("body")[0].innerHTML+=str;
			else if (document.childNodes[1].childNodes[1].innerHTML) document.childNodes[1].childNodes[1].innerHTML+=str;
		}
		// Центрирование окна
		var div = $('TF_mail_form');
		var left = getClientCenterX() - ($TF_mail_form_config.div_width/2);
		var top = getClientCenterY() - 150;
		div.style.width = $TF_mail_form_config.div_width+'px';
		div.style.left = left+'px';
		div.style.top = top+'px';
		// Запись данных в окно
		$TF_mail_form_insertData();
	};

	var $TF_mail_form_insertData = function()
	{
		var text = '';
		if($TF_mail_form_input_config)
		{
			text += '<div><strong>'+$TF_mail_form_config.head+'</strong></div>';			
			text += '<form id="TF_mail_form_id">';
			text += '<table border="0" align="center" width="95%">';
			text += '<tr align="left"><td width="100">Ваш e-mail</td><td width="260"><input type="text" name="from" id="TF_mail_from" style="width:260px;" tabindex="1"/></td></tr>';
			text += '<tr align="left"><td>Тема</td><td><input type="text" name="theme" id="TF_mail_theme" style="width:260px;" tabindex="1"/></td></tr>';
			text += '<tr align="left"><td>Сообщение</td><td><textarea name="message" rows="6" id="TF_mail_message" style="width:260px;" tabindex="1"/></textarea></td></tr>';
			text += '<tr><td colspan="2"><input type="button" value="Отправить" onclick="TF_mail_form.$TF_mail_form_checkData();" tabindex="1"/> <input type="button" value="Отмена" onclick="TF_mail_form.$TF_mail_form_closeForm_inter();" tabindex="1" accesskey="q"/></td></tr>';
			text += '</table>';
			text += '</form>';
		}
		$('TF_mail_form').innerHTML = text;
		$('TF_mail_form').style.display = "inline";
		// setTimeout для IE, ибо она тормоз и иначе не успевает поставить фокус, т.к. элемент не успевает стать видимым =/
		isIE ? setTimeout("$('TF_mail_from').focus();", 300) : $('TF_mail_from').focus();
	};

	this.$TF_mail_form_checkData = function()
	{
		if($('TF_mail_from').value != '' && $('TF_mail_theme').value != '' && $('TF_mail_message').value != '')
		{
			$TF_mail_form_sendForm();
		}
		else
		{
			alert("Не все поля заполнены");
		}
	}

	// Отсылка формы
	var $TF_mail_form_sendForm = function()
	{
		$TF_mail_form_closeForm();
		new Ajax.Request("/TF_mail_form/TF_mail_form.php?", {
			method: 'get',
			parameters: {
				mail_to : $TF_mail_form_config.mail_to
				,mail_from : $('TF_mail_from').value
				,mail_theme : $('TF_mail_theme').value
				,mail_message : $('TF_mail_message').value
			},
			onFailure: function(transport) {
				alert(transport.responseText);
			},
			onSuccess: function(transport) {
				//var data = eval('('+transport.responseText+')')
				//alert(transport.responseText);
			}
		});
	};

	var $TF_mail_form_handler = function(object, event, handler, useCapture)
	{
		if (object.addEventListener)
		{
			object.addEventListener(event, handler, useCapture ? useCapture : false);
		}
		else if (object.attachEvent)
		{
			object.attachEvent('on' + event, handler);
		}
		else return false;
	};

	// stupid isIE & isChrome
	if (isIE || isChrome) $TF_mail_form_handler(document, "keydown", $TF_mail_form_events);
	else $TF_mail_form_handler(document, "keypress", $TF_mail_form_events);
};

var TF_mail_form = new TF_mail_form_constructor();