var gvaDissolve = new Array();
var gvaCollapse = new Array();

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function vslElIsVisible(sID)
{
	var oEl = vslGetHTMLElement(sID);
	if (!oEl || !oEl.style)
		return(false);

	if (navigator && navigator.vendor && navigator.vendor.indexOf("Apple") >= 0)
		return(vslElGetStyleProp(sID, 'visibility') == 'visible');

	if (vslElGetStyleProp(sID, 'visibility') != 'hidden')
		return(true);

	return(false);
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function vslElGetStyleProp(sID, sProp)
{
	var oEl = vslGetHTMLElement(sID);
	if (!oEl)
		return(false);
	
	var mPropValue = null;
	if (oEl.currentStyle)
		mPropValue = oEl.currentStyle[sProp];
	else if (window.getComputedStyle)
		mPropValue = document.defaultView.getComputedStyle(oEl, null).getPropertyValue(sProp);

	return(mPropValue);
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function vslSEL(sID)
{
	var oEl = vslGetHTMLElement(sID);
	if (!oEl || !oEl.style)
		return(false);

	try
	{	oEl.style.visibility = 'visible';
		oEl.style.display = 'block';
	}
	catch(e)
	{	return(false);
	}

	return(true);
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function vslHEL(sID)
{
	var oEl = vslGetHTMLElement(sID);
	if (!oEl || !oEl.style)
		return(false);

	try
	{
		//if (!_gvaELHeight[sID])
		//	_gvaELHeight[sID] = clGetElementHeight(sID);
		
		oEl.style.visibility = 'hidden';
		oEl.style.display = 'none';
	}
	catch(e)
	{	return(false);
	}
	
	return(true);
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function vslGetHTMLElement(sID)
{
	if(document.getElementById && document.getElementById(sID))
		return document.getElementById(sID);

	if (document.all && document.all(sID))
		return document.all(sID);

	if (document.layers && document.layers[sID])
		return document.layers[sName];

	return(null);
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/


function vslCollapseEL(sID, nFrom, nTo, nStep, nSpeed, fCallBack)
{
	if (sID == '' || nStep == 0 || nSpeed == 0 || (nFrom == 0 && nTo == 0)) 
		return(false);

	var oEl = vslGetHTMLElement(sID);
	if (!oEl || !oEl.style) 
		return(false);

	var oElStyle = oEl.style;

	try
	{	if (gvaCollapse[sID] && gvaCollapse[sID][0])
			clearInterval(gvaCollapse[sID][0]);

		if (nFrom < 0) 
			nFrom = vslGetElementHeight(sID);

		gvaCollapse[sID] = new Array(null, nFrom);

		var nSIntID = setInterval(function ()
		{	
			var nLevel = gvaCollapse[sID][1];
			nLevel += nStep;

			var bStop = false;

			if (nStep > 0) 
			{	if (nLevel >= nTo) 
					bStop = true;
			}
			else 
			{
				if (nLevel <= nTo) 
					bStop = true;
			}

			if (bStop) 
			{	if (gvaCollapse[sID][0]) 
					clearInterval(gvaCollapse[sID][0]);

				nLevel = nTo;

				if (fCallBack != null) 
					fCallBack();
			}

			oElStyle.height = nLevel + 'px';
			
			gvaCollapse[sID][1] = nLevel;

		}, nSpeed);

		gvaCollapse[sID] = new Array(nSIntID, nFrom);
	}
	catch(e)
	{	return(false);
	}

	return(true);
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function vslGetCookie(sName)
{
	var asCookies = document.cookie.split("; ");
	for (var nCnt = 0; nCnt < asCookies.length; nCnt++)
	{	var asCookie = asCookies[nCnt].split("=");
		if (sName == asCookie[0])
			return(unescape(asCookie[1]));
	}
	return("");
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function vslSetCookie(sName, sVal, nDays, sDomain)
{
	var dtNow = new Date();
	var dtExpires = new Date();
	dtExpires.setTime(dtNow.getTime() + 3600000 * 24 * nDays);
	
	sCookie = sName + "=" + escape(sVal) + ";expires=" + dtExpires.toGMTString() + ";path=/";
	if (sDomain != "")
		sCookie += ";domain=" + escape(sDomain);

	document.cookie = sCookie;
	return(true);
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function getAjaxObj() {
	Ajax = new Object(); 
	Ajax.isUpdating = true; 

	Ajax.Request = function(method, url, callback,params) {
		this.isUpdating = true;
		this.callbackMethod = callback;
		this.callBackParams = params;
		this.request = (window.XMLHttpRequest) ? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP");
		this.request.onreadystatechange = function() { Ajax.checkReadyState(); };
		this.request.open(method, url, true);
		this.request.send(url);
	}

	Ajax.checkReadyState = function(_id) {
		switch(this.request.readyState)	{
			case 1: break;
			case 2: break;
			case 3: break;
			case 4:
				this.isUpdating = false;
				this.callbackMethod(this.request,this.callBackParams);
		}
	}

	Ajax.updateHTML = function(method, url, idElement) {
		this.isUpdating = true;
		this.callbackMethod = function(doc){document.getElementById(idElement).innerHTML = doc.responseText};
		this.request = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP");
		this.request.onreadystatechange = function() { Ajax.checkReadyState(); };
		this.request.open(method, url, true);
		this.request.send(url);
	}

	return Ajax;
}

/*---------------------------------------------------------*
*
*----------------------------------------------------------*/

function addEvent(obj, ev, fn) {
	if(obj.addEventListener) {
		obj.addEventListener(ev, fn, false);
	} else if(obj.attachEvent) {
		obj.attachEvent('on'+ev, fn);
	} else {
		if(typeof(obj['on'+ev])=='function') {
			var f=obj['on'+ev];
			obj['on'+ev]=function(){if(f)f();fn()}
		}
		else obj['on'+ev]=fn;
	}
}

/*---------------------------------------------------------*
* 
*----------------------------------------------------------*/

function vslGetXMLReq()
{
	var XMLReq = false;

	if (typeof(XMLHttpRequest) != 'undefined')
	{	try
		{	XMLReq = new XMLHttpRequest();
		}
		catch (e)
		{	XMLReq = false;
		}
	}
	else if (typeof(ActiveXObject) != 'undefined')
	{	try
		{	XMLReq = new ActiveXObject("Msxml2.XMLHTTP");;
		}
		catch (e)
		{	try
			{	XMLReq = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e2)
			{	XMLReq = false;
			}
		}
	}

	return(XMLReq);
}

