//Functie care initializeaza obiectul xmlHttp
function file_exists (url) {
       
    var xmlHttp = initAjax()
      
    xmlHttp.open('HEAD', url, false);
    xmlHttp.send(null);
    if (xmlHttp.status == 200){
        return true;
    }
     return false;
}

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 = '';
    //alert(formaNume);
	var forma = document.forms[formaNume];		
    //alert(forma.elements.length);
    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";
//	alert(qs);  
    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');
	img = (typeof root == "undefined" ? '' : root)+'img/loading.gif';
	div.innerHTML = '<center><img src="'+img+'" border="0" /></center>';	
		
	
	if(elem.childNodes.length == 0)
		referinta = null;
	else
		referinta = elem.childNodes[0];
		
	if(referinta == null)
	{
		elem.appendChild(div);
	}
	else
	{
		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;
		}		
	}
    
    //marcam cererea ca si cerere ajax
    param  = param + '&ajaxmark=1';
	
	//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;
		}		
	}
	
    //marcam cererea ca si cerere ajax
    param  = param + '&ajaxmark=1';
    
	//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, showLoadImg)
{

	//initializam obiectul
	var xmlHttp = initAjax();
	//daca initializarea a esuat terminam
	if(xmlHttp == undefined)
		return;

	//sincron sau asincron
	if(asincron == undefined)
		asincron = true;
        
    if(showLoadImg == undefined)
        showLoadImg = true;

	var elem;

	if(typeof(elemNume) == 'string')
		elem = document.getElementById(elemNume);
	else
		elem = elemNume;
	
	//setam flagul care controleaza afisarea imaginii
    if(showLoadImg)
	    xmlHttp.imgLoaded = false;
    else
        xmlHttp.imgLoaded = true;
	
	//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(xmlHttp.imgLoaded == false)
			{
//				alert(root);
				img = (typeof root == "undefined" ? '' : root)+'img/loading.gif';
//				alert(img);
				elem.innerHTML = '<center><img src="'+img+'" border="0" /></center>';				
				xmlHttp.imgLoaded = true;
			}
		}
	}
	
    //marcam cererea ca si cerere ajax
    param  = param + '&ajaxmark=1';
    
	//dechidem conexiuniea	
	//alert(param);
	xmlHttp.open('GET',pagina + '?' + param,asincron);	
	xmlHttp.send(null);	
}

function ajx_run_page_GET(page, asincron)
{
	initAjax();
	xmlHttp.open('GET',page,asincron);	
	xmlHttp.send(null);	
}

//functie care incarca continutul unui element prin metoda POST
function refreshContentPOST(elemNume, pagina, param, forma, asincron, showLoadImg)
{           
	//initializam obiectul
	var xmlHttp = initAjax();
	
	//daca initializarea a esuat terminam
	if(xmlHttp == undefined)
		return;

	//sincron sau asincron
	if(asincron == undefined)
		asincron = true;

    if(showLoadImg == undefined)
        showLoadImg = true;
		
	var elem;
	
	if(typeof(elemNume) == 'string')
		elem = document.getElementById(elemNume);
	else
		elem = elemNume;
	
	//setam flagul care controleaza afisarea imaginii
	if(showLoadImg)
        xmlHttp.imgLoaded = false;
    else
        xmlHttp.imgLoaded = true;
	
	//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(xmlHttp.imgLoaded == false)
			{
				//fac append la innerHTML pentru a nu strica eventualele <input>
				//elem.innerHTML = '<center><img src="'+(root == undefined ? '' : root)+'img/loading.gif" border="0" /></center>' + elem.innerHTML;
				showLoader(elem);				
				xmlHttp.imgLoaded = true;
			}
		}
	}
	
    //marcam cererea ca si cerere ajax
    param  = param + '&ajaxmark=1';
    
	//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);
		}		
	}
	
    //marcam cererea ca si cerere ajax
    param  = param + '&ajaxmark=1';
    
	//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);
		}		
	}
	
    //marcam cererea ca si cerere ajax
    param  = param + '&ajaxmark=1';
    
	//deschidem conexiuniea	
	xmlHttp.open('POST',pagina + '?' + param,asincron);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(buildPOST(forma));	
}
