/**
* Разработанные программные коды принадлежат владельцам сайта
* Любое использование кода, без разрешения и согласия владельцев
* является незаконным.
*
* С вопросами, пожеланиями обращаться по адресу:
* info@fater.ru
*
* Fater Media Group
* http://www.fater.ru/
* 2005-2010 г.
*/

var ajax_object =
{
	_global:
	{
		versions:
		[
			'Msxml2.XMLHTTP.7.0',
			'Msxml2.XMLHTTP.6.0',
			'Msxml2.XMLHTTP.5.0',
			'Msxml2.XMLHTTP.4.0',
			'MSXML2.XMLHTTP.3.0',
			'MSXML2.XMLHTTP',
			'Microsoft.XMLHTTP'
		],
		browser: null,
		url: ''
	},

	create_request_object: function (obj)
	{
		if (window.XMLHttpRequest)
			obj.obj = new XMLHttpRequest ();
		else if (window.ActiveXObject)
			for (var i = 0; i < ajax_object._global.versions.length; i++)
				try
				{
					obj.obj = new ActiveXObject (ajax_object._global.versions[i]);
					if (obj.obj)
						break;
				}
				catch (objException)
				{}
	},

	http_request: function (obj)
	{
		if (!obj.obj)
			ajax_object.create_request_object (obj);

		if (obj.timeout && obj.name)
			if (obj.timeout_callback)
				var reset_time_request = setTimeout (obj.name + '.obj.abort ();' + obj.timeout_callback, obj.timeout);
			else
				var reset_time_request = setTimeout (obj.name + '.obj.abort ();', obj.timeout);

		obj.obj.onreadystatechange = function ()
		{
			if (obj.obj.readyState == 4)
				if (obj.obj.status == 200)
				{
					if (reset_time_request)
						clearTimeout (reset_time_request);
					obj.value = obj.obj.responseText;
					if (obj.callback.length > 0)
					{
						if (obj.callback == 'obj.value')
							obj.callback = obj.value;
						eval (obj.callback);
					}
					obj.obj = null;
				}
		}

		obj.obj.open ('post', obj.url, true);
		obj.obj.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
		obj.obj.send (obj.param);
	},

	define: function ()
	{
		var url = window.location.href;
		var url_level = Array ();
		url_level = url.split ("\/");
		ajax_object._global.url = 'http://' + url_level[2] + '/';

		if (navigator.userAgent.indexOf ('Firefox') != -1)
			ajax_object._global.browser = 'ff';
		else if (navigator.userAgent.indexOf ('MSIE') != -1)
			ajax_object._global.browser = 'ie';
		else if (navigator.userAgent.indexOf ('Opera') != -1)
			ajax_object._global.browser = 'opera';
		else
			ajax_object._global.browser = 'other';
/*
		switch (navigator.appName)
		{
			case 'Microsoft Internet Explorer':
				ajax_object._global.browser = 'ie';
				break;
			case 'Netscape':
				ajax_object._global.browser = 'netscape';
				break;
			case 'Opera':
				ajax_object._global.browser = 'opera';
				break;
			default:
				ajax_object._global.browser = 'ie';
		}
*/
	},

	style:
	{
		opacity_effect: function (element_name, action, opacity)
		{
			element = $(element_name);
			if (action == 'show')
			{
				if (!opacity)
				{
					opacity = 0;
					element.style.visibility = 'visible';
				}
				else if (opacity >= 100)
					return null;
				opacity += 10;
			}
			else if (action == 'hide')
			{
				if (opacity <= 0)
				{
					element.style.visibility = 'hidden';
					$$(element_name, '');
					return null;
				}
				else if (!opacity)
					opacity = 100;
				opacity -= 10;
			}

			ajax_object.style.set_style (element_name, 'opacity', opacity);
			setTimeout ('ajax_object.style.opacity_effect (\'' + element_name + '\',\'' + action + '\',' + opacity + ');', 50);
		},

		set_style: function (element, property, value)
		{
			element = $(element);
			switch (property)
			{
				case 'opacity':
					switch (ajax_object._global.browser)
					{
						case 'ie':
							element.style.filter = 'alpha (opacity=' + value + ');';
							break;
						case 'opera':
						case 'ff':
							element.style.opacity = value / 100;
//							element.style['-moz-opacity'] = value / 100;
//							element.style['-khtml-opacity'] = value / 100;
							break;
						default :
							element.style[property] = value;
					}
					break;
			}
		}
	}
}

function $ (element_id)
{
	return document.getElementById (element_id);
}

function $$ (element_id, value)
{
	document.getElementById (element_id).innerHTML = value;
}

window.onLoad = ajax_object.define ();