/**
 * Basic Ajax API
 * @version: 0.1.070414
 */

/*
//Socket states
var STATE_INITIALIZE    = 0;
var STATE_LOADING       = 1;
var STATE_LOADED        = 2;
var STATE_INTERACTIVE   = 3;
var STATE_COMPLETE      = 4;
*/


/**
 * Функция загрузки данных в INPUT элменты
 *
 * @version: 0.1.70409
 * @param mixed divId
 * @param string url
 * @param string postData
 * @param boolean field
 */
function loadFileToDiv(divId, url, postData, field)
{
	//XmlHttpRequest socket object
	var socket = null;

	postData = postData || null;
	field = field || false;

	//Set undefined values
	type = (null == postData) ? 'GET' : 'POST';

	//Create XHR object
    if (window.XMLHttpRequest)
    {
        socket = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        socket = new ActiveXObject("Microsoft.XMLHTTP");
    }


    //Get data
    if (socket)
    {
    	/**
		 * XHR handler
 		 */
        socket.onreadystatechange = function()
        {
  			var ready = socket.readyState;
  			var data = null;

  			//data = (ready == 4) ? unescape(socket.responseText) : "load...";
  			if (ready == 4)
  			{
  				data = unescape(socket.responseText);

				try
				{
					if (typeof divId == 'object')
					{
						if (field)
							divId.value = data;
						else
							divId.innerHTML = data;
					}
					else
					{
						if (field)
							document.getElementById(divId).value = data;
						else
							document.getElementById(divId).innerHTML = data;
					}
				}
				catch(e)
				{
					//:TODO: ОБработка исключения
				}
  			}
        }

        socket.open(type, url, true);

        if ('POST' == type)
        	socket.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        socket.send(postData);
    }

}

/**
 * Функция загрузки данных в INPUT элменты
 *
 * @version: 0.1.70409
 * @param mixed divId
 * @param string url
 * @param string postData
 */
function loadFileToField(divId, url, postData)
{
	loadFileToDiv(divId, url, postData, true);
}



/**
 * Функция для записи данных в плавающий фрейм.
 *
 * @version: 0.1.70411
 * @param mixed frameId
 * @param string text
 */
function iFrameWrite(frameId, text, edit)
{
	edit = edit || false;

	if (navigator.userAgent.match(/msie/i))
	{
		if (typeof frameId == 'object')
		{
			memoFrame = frameId.document;
		}
		else
		{
			memoFrame = frames[frameId].document;
		}
	}
	else
	{
		if (typeof frameId == 'object')
		{
			memoFrame = frameId.contentDocument;
		}
		else
		{
			memoFrame = document.getElementById(frameId).contentDocument;
		}
	}

	try
	{
		if (edit==true)
			memoFrame.designMode = 'On';
		memoFrame.open();
		memoFrame.write(text);
		memoFrame.close();
	}
	catch(e){}
}




/**
 * Функции работы с кукисами.
 */
function cookieEach(val)
{
	if ((endOfCookie = document.cookie.indexOf(";", val)) == -1)
	{
		endOfCookie = document.cookie.length;
	}

	var s=unescape(document.cookie.substring(val, endOfCookie)) ;
	if (s==""){s="0"}
	return s;  
}

function G_COOKIE(cookiename) 
{
	var numOfCookies = document.cookie.length;
	var nameOfCookie = cookiename + "=";
	var cookieLen = nameOfCookie.length;
	var x = 0 ;

	while (x <= numOfCookies) 
	{
		var y = (x + cookieLen);

		if (document.cookie.substring(x, y) == nameOfCookie)
		{
			return (unescape(cookieEach(y)));
		}

		x = document.cookie.indexOf(" ", x) + 1;
		if (x == 0) break;
	}

	return '';
}

function cookieSet(name, value, expiredays)
{
	var todayDate = new Date();
	todayDate.setDate(todayDate.getDate() + expiredays);
	document.cookie = name + "=" + escape(value) + "; expires=" + todayDate.toGMTString() + ";"
}

function  cookieDelete(name)
{
	cookieSet(name,"",-1)
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//


function in_array(value, arr)
{
	for (var i=0, count = arr.length; i < count; i++)
	{
		if (value == arr[i])return true;
	}

	return false;
}
