var xmlHttp = createXmlHttpRequestObject();

var cache = new Array();
var cacheDiv = new Array();
var arrDivInfo = new Array();
function createXmlHttpRequestObject()
{
	var xmlHttp;
	try
	{
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
		"MSXML2.XMLHTTP.5.0",
		"MSXML2.XMLHTTP.4.0",
		"MSXML2.XMLHTTP.3.0",
		"MSXML2.XMLHTTP",
		"Microsoft.XMLHTTP");
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
		{
			try
			{
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {}
		}
	}
	if (!xmlHttp)
	alert("Error creating the XMLHttpRequest object.");
	else
	return xmlHttp;
}

function updateDiv(divName,script,arguments,progresstype,updatetype)
{
	if (!progresstype) progresstype = 'none';
	if (!updatetype) updatetype = 'rewrite';
	jaxDivInProgress(divName,progresstype);
	var cacheItem = new Array(script,arguments);
	cache.push(cacheItem);
	var divShow = new Array(divName,updatetype);
	cacheDiv.push(divShow);
	jaxSendXmlHttp();
}

function jaxSendXmlHttp()
{
	if (xmlHttp)
	{
		try
		{
			if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0)
			{
				var cacheEntry = cache.shift();
				xmlHttp.open("POST", cacheEntry[0], true);
				xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange = jaxHandleResponse;
				xmlHttp.send(cacheEntry[1]);
			}

		}
		catch (e)
		{
			alert("Can't connect to server:\n" + e.toString());
		}
	}
}

function jaxHandleResponse()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
			try
			{
				jaxDisplayPageInDiv();
				if (cache.length > 0 )
				  jaxSendXmlHttp();
			}
			catch(e)
			{
				alert("Error reading the response: " + e.toString());
			}
		}
		else
		{
			alert("There was a problem retrieving the data:\n" +
			xmlHttp.statusText);
		}
	}
}

// handles the response received from the server
function jaxDisplayPageInDiv()
{
	var response = xmlHttp.responseText;
	if (cacheDiv.length > 0 )
	{
		var cacheDivEntry = cacheDiv.shift();
		var divName = cacheDivEntry[0];
		var updateType = cacheDivEntry[1];
		myDiv = document.getElementById(divName);
		if (updateType=='rewrite'){
			myDiv.innerHTML = response;
		}
		if (updateType=='append'){
			myDiv.innerHTML = myDiv.innerHTML + response;
		}
		if (updateType=='prepend'){
			myDiv.innerHTML = response + myDiv.innerHTML;
		}
		  
	}
}


function jaxDivInProgress(divName,progresstype)
{
	if (progresstype=='none')
	  return;
	if (progresstype=='savesct') {
		if (document.getElementById(divName+'_sv')){
			var div = document.getElementById(divName+'_sv');
			div.style.backgroundColor = 'orange';
		}
	}
	/*var div = document.getElementById(divName);
	div.innerHTML = 'Ukládání ...';*/
	
	/*var div = document.getElementById(divName);
	content=div.innerHTML;
	div.innerHTML = '<div style="width:100%" id="'+divName+'fade">'+content+'</div>';
	var divLayer = document.getElementById(divName+'layer');
	changeOpac(20,divName+'fade');*/

}

function changeOpac(opacity, id) {
	var div = document.getElementById(id);
	object = div.style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

function opacity(id, opacStart, opacEnd, millisec) { 

	  var speed = Math.round(millisec / 100); 
    var timer = 0; 

    if(opacStart > opacEnd) { 
        for(i = opacStart; i >= opacEnd; i--) { 
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    } else if(opacStart < opacEnd) { 
        for(i = opacStart; i <= opacEnd; i++) 
            { 
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    } 
}

function shiftOpacity(id, millisec) { 
    //if an element is invisible, make it visible, else make it ivisible 
    if(document.getElementById(id).style.opacity == 0) { 
        opacity(id, 0, 100, millisec); 
    } else { 
        opacity(id, 100, 0, millisec); 
    } 
}

function loadParams(formname){
	formular=document.forms[formname];
	if (formular){
		var parts = new Array();
		for(i=0; i<formular.elements.length; i++)
			{
				if (formular.elements[i].name.length)
  				parts.push(encodeURIComponent(formular.elements[i].name.toLowerCase()) + "=" + encodeURIComponent(formular.elements[i].value));
			}
		return parts.join('&');
	}
	return '';
}
