function getClientWidth()
{
	return (document.compatMode=='CSS1Compat') ? document.documentElement.clientWidth : document.body.clientWidth;
}
function getClientHeight()
{
	return (document.compatMode=='CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight;
}
function getClientY()
{
	return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}
function getClientX()
{
	return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
}
function in_array(needle, haystack, strict)
{  
	var found = false, key, strict = !!strict;  
	for (key in haystack)
	{  
		if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle))
		{  
			found = true;  
			break;  
		}  
	}  
	return found;  
}
function NewHttpRequest() 
{
	if (window.XMLHttpRequest) request = new XMLHttpRequest();
	else if (window.ActiveXObject) request = new ActiveXObject("Microsoft.XMLHTTP");
	
	if (request) return request;
	else return false;
}
function SendHttpRequest(HttpRquest, PostVars) 
{
	var SumString;
	if (PostVars && typeof(PostVars) == 'object')
		for (name in PostVars)
		{
			if (typeof(PostVars[name]) == 'number') PostVars[name] = PostVars[name].toString();
			PostVars[name] = PostVars[name].replace(/=/g,'%3D').replace(/&/g,'%26').replace(/\+/g,'%2B');
			SumString = (SumString) ?  SumString+'&'+name+'='+PostVars[name] : name+'='+PostVars[name];
		}

	if (SumString) HttpRquest.send(SumString);
	else if (window.XMLHttpRequest) HttpRquest.send(null);
	else if (window.ActiveXObject) HttpRquest.send();
}
function RunDinamicScript(SPath, SVariables, ReceiverFunc)
{
	if (typeof(s_nWaitingList) != 'object') s_nWaitingList = new Array();
	s_nWaitingList[s_nWaitingList.length] = new Array(SPath, ReceiverFunc, SVariables);
	if (s_nWaitingList.length == 1)
	{
		WorkUpWList(true);
	}
}
function WorkUpWList(isNotRequest)
{
	if (typeof(isNotRequest) != 'boolean') isNotRequest = false;
	if (!isNotRequest)
	{   
		if (typeof(s_nReceiver) == 'function')
			if (s_nRequest.readyState == 4)
			{
				s_nStatus = s_nRequest.status;
				s_nStatusText = s_nRequest.statusText;
				s_nReceiver(new Array(s_nRequest.readyState, s_nStatus,  s_nStatusText, s_nRequest.responseText, s_nRequest.responseXML));
			}
			else
				s_nReceiver(new Array(s_nRequest.readyState));
		if (s_nRequest.readyState == 4)
		{
			s_nRequest.abort();
			isNotRequest = true;
		}
	}
	if (isNotRequest)
	{
		for (i in s_nWaitingList)
		{
			if (typeof(s_nWaitingList[i][0]) == 'string')
			{
				s_nReceiver = s_nWaitingList[i][1];
				SVariables = s_nWaitingList[i][2];
				if (typeof(SVariables) != 'object') SVariables = new Array();
				SVariables['sfw_load_file'] = s_nWaitingList[i][0];
				s_nRequest = NewHttpRequest();
				s_nRequest.onreadystatechange = WorkUpWList;
				s_nRequest.open('POST', scfg_literun_url, true);
				s_nRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				SendHttpRequest(s_nRequest, SVariables);
			}
			delete(s_nWaitingList[i]);
			return;
		}
		s_nWaitingList = new Array();
	}
}
function newAttachEvent(AttachObj, TypeAction, RunFunction)
{
    if (document.all && !window.opera)
        AttachObj.attachEvent("on"+TypeAction, RunFunction);
	else
		AttachObj.addEventListener(TypeAction, RunFunction, true);
}