//Functie care initializeaza obiectul xmlHttp
function initAjax()
{
	var xmlHttp;
	try
	{
	  // Firefox, Opera 8.0+, Safari
	  xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
	  // Internet Explorer
		try
    	{
		    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	    }
		catch (e)
		{
			try
		    {
		    	xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		    }
		    catch (e)
		    {
		    	alert("Your browser does not support AJAX!");
		   		return undefined;
		    }
		}
	}
	
	return xmlHttp;
}

//functie care creaza pe baza unei forme stringul pt POST
function buildPOST(formaNume)
{
	var qs = ''	
	var forma = document.forms[formaNume];		

    for (e=0;e<forma.elements.length;e++) 
	{
        if (forma.elements[e].id != '') 
		{
			//caz special pentru checkbox si radio button
			if(forma.elements[e].type == "checkbox" || forma.elements[e].type == "radio")
			{
				if(forma.elements[e].checked)
				{
					var nume = forma.elements[e].id;
					qs+=(qs=='')?'':'&'
					qs+= nume+'='+encodeURIComponent(forma.elements[e].value);
				}
			}
			else
			{
				var nume = forma.elements[e].id;
				qs+=(qs=='')?'':'&'
				qs+= nume+'='+encodeURIComponent(forma.elements[e].value);
			}
        }
		else
		{
			if (forma.elements[e].name!='') 
			{
				//caz special pentru checkbox si radio button
				if(forma.elements[e].type == "checkbox" || forma.elements[e].type == "radio")
				{
					if(forma.elements[e].checked)
					{
						var nume = forma.elements[e].name;
						qs+=(qs=='')?'':'&'
						qs+= nume+'='+encodeURIComponent(forma.elements[e].value);
					}
				}
				else
				{
					var nume = forma.elements[e].name;
					qs+=(qs=='')?'':'&'
					qs+= nume+'='+encodeURIComponent(forma.elements[e].value);
				}
			}
		}
    }
    //qs+="\n";  
    return qs;
}

function evalScript(html)
{
	var temp = html;
 	while(true) 
 	{
    	var sindex = temp.indexOf("<script"+">");
    	if(sindex < 0) break;
    	var eindex = temp.indexOf("</"+"script>",sindex);
    	var js = temp.substring(sindex+8,eindex);           
    	eval(js);
    	temp = temp.substring(eindex+9);
	}     
}

function showLoader(elem)
{
	var referinta;
	
	var div = document.createElement('div');
	div.innerHTML = "<center><img src='img/loading.gif' border='0'><br></center>";
	
	
	if(elem.childNodes.length == 0)
		referinta = null;
	else
		referinta = elem.childNodes[0];
		
	if(referinta == null)
	{
		elem.appendChild(div);
	}
	else
	{
		elem.appendChild(div);
		//elem.insertBefore(div, referinta);
	}
	
}

//functie care incarca valoarea unui control prin metoda GET
function refreshValGET(controlNume, pagina, param, asincron)
{
	//initializam obiectul
	var xmlHttp = initAjax();
	
	//daca initializarea a esuat terminam
	if(xmlHttp == undefined)
		return;

	//sincron sau asincron
	if(asincron == undefined)
		asincron = true;
	
	var control;
	
	if(typeof(controlNume) == 'string')
		control = document.getElementById(controlNume);
	else
		control = controlNume;
	
	//atasam functia care interpreteaza rezultatele
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if(xmlHttp.status == 200)
				control.value = xmlHttp.responseText;
		}		
	}
	
	//dechidem conexiuniea	
	xmlHttp.open('GET',pagina + '?' + param,asincron);
	xmlHttp.send(null);	
}

//functie care incarca valoarea unui control prin metoda POST
function refreshValPOST(controlNume, pagina, param, forma, asincron)
{
	//initializam obiectul
	var xmlHttp = initAjax();
	
	//daca initializarea a esuat terminam
	if(xmlHttp == undefined)
		return;

	//sincron sau asincron
	if(asincron == undefined)
		asincron = true;
	
	var control;
	
	if(typeof(controlNume) == 'string')
		control = document.getElementById(controlNume);
	else
		control = controlNume;
	
	//atasam functia care interpreteaza rezultatele
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if(xmlHttp.status == 200)
				control.value = xmlHttp.responseText;
		}		
	}
	
	//deschidem conexiuniea	
	xmlHttp.open('POST',pagina + '?' + param,asincron);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(buildPOST(forma));	
}

//functie care incarca continutul unui element prin metoda GET
function refreshContentGET(elemNume, pagina, param, asincron)
{
	//initializam obiectul
	var xmlHttp = initAjax();
	//daca initializarea a esuat terminam
	if(xmlHttp == undefined)
		return;

	//sincron sau asincron
	if(asincron == undefined)
		asincron = true;

	var elem;

	if(typeof(elemNume) == 'string')
		elem = document.getElementById(elemNume);
	else
		elem = elemNume;
	
	//setam flagul care controleaza afisarea imaginii
//	xmlHttp.imgLoaded = false;
	imgLoaded = false;
	
	//atasam functia care interpreteaza rezultatele
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if(xmlHttp.status == 200)
			{
				elem.innerHTML = xmlHttp.responseText;		
				evalScript(xmlHttp.responseText);
			}
				
		}
		else
		{
			if(imgLoaded == false)
			{
				showLoader(elem);
				//elem.innerHTML = '<center><img src="img/loading.gif" border="0" /></center>';				
				imgLoaded = true;
			}
		}
	}
	
	//dechidem conexiuniea	
	xmlHttp.open('GET',pagina + '?' + param,asincron);	
	xmlHttp.send(null);	
}

//functie care incarca continutul unui element prin metoda POST
function refreshContentPOST(elemNume, pagina, param, forma, asincron)
{
	//initializam obiectul
	var xmlHttp = initAjax();
	
	//daca initializarea a esuat terminam
	if(xmlHttp == undefined)
		return;

	//sincron sau asincron
	if(asincron == undefined)
		asincron = true;

		
	var elem;
	
	if(typeof(elemNume) == 'string')
		elem = document.getElementById(elemNume);
	else
		elem = elemNume;
	
	//setam flagul care controleaza afisarea imaginii
	imgLoaded = false;
	
	//atasam functia care interpreteaza rezultatele
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if(xmlHttp.status == 200)
			{
				elem.innerHTML = xmlHttp.responseText;		
				evalScript(xmlHttp.responseText);						
			}
		}
		else
		{
			if(imgLoaded == false)
			{
				showLoader(elem);
				//elem.innerHTML = '<center><img src="img/loading.gif" border="0" /></center>' + elem.innerHTML;				
				imgLoaded = true;
			}
		}
	}
	
	//deschidem conexiuniea	
	xmlHttp.open('POST',pagina + '?' + param,asincron);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(buildPOST(forma));	
}

//functie care reincarca valoarea unui atribut de element prin GET
function refreshAttribGET(controlNume, atr, pagina, param, asincron)
{
	//initializam obiectul
	var xmlHttp = initAjax();
	
	//daca initializarea a esuat terminam
	if(xmlHttp == undefined)
		return;

	//sincron sau asincron
	if(asincron == undefined)
		asincron = true;
	
	var control;
	
	if(typeof(controlNume) == 'string')
		control = document.getElementById(controlNume);
	else
		control = controlNume;
	
	//atasam functia care interpreteaza rezultatele
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if(xmlHttp.status == 200)
				control.setAttribute(atr, xmlHttp.responseText);
		}		
	}
	
	//dechidem conexiuniea	
	xmlHttp.open('GET',pagina + '?' + param,asincron);
	xmlHttp.send(null);	
}

//functie care reincarca valoarea unui atribut de element prin POST
function refreshAttribPOST(controlNume, atr, pagina, param, forma, asincron)
{
	//initializam obiectul
	var xmlHttp = initAjax();
	
	//daca initializarea a esuat terminam
	if(xmlHttp == undefined)
		return;

	//sincron sau asincron
	if(asincron == undefined)
		asincron = true;
	
	var control;
	
	if(typeof(controlNume) == 'string')
		control = document.getElementById(controlNume);
	else
		control = controlNume;
	
	//atasam functia care interpreteaza rezultatele
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if(xmlHttp.status == 200)
				control.setAttribute(atr, xmlHttp.responseText);
		}		
	}
	
	//deschidem conexiuniea	
	xmlHttp.open('POST',pagina + '?' + param,asincron);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(buildPOST(forma));	
}
