// JavaScript Document

function ajaxstat(stat){
	if (!stat){var stat = ""};
	if (document.getElementById('AJAXSTAT')){
		document.getElementById('AJAXSTAT').value=stat;
	}
}

function Ajax(method,url,teg,params,lplace,reqcomponent, doev){
	//set ajax statu to busy

	ajaxstat("1");
	if ((lplace) && (lplace.length != "") && document.getElementById(lplace) != null){showobject(lplace, 500)};
	var req;
	var rau_random = Math.round(Math.random() * 100000);
	loadXMLDoc(url);
function loadXMLDoc(url) {
    if (window.XMLHttpRequest) {
		if (reqcomponent == null)
        req = new XMLHttpRequest();
		else
        req = reqcomponent;

        req.onreadystatechange = processReqChange;
		if (method == "POST"){
	        req.open(method, url, true);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req.setRequestHeader("Content-length", params.length);
			req.setRequestHeader("Connection", "close");
			if (params == "")
				params = '_R_A_N_D_I_D='+rau_random;
			else
				params += '&_R_A_N_D_I_D='+rau_random;
			req.send(params);
			
		}else{
	        req.open(method, url+'&_R_A_N_D_I_D='+rau_random, true);
			req.send(null);
		}
        
    // для версии с ActiveX
    } else if (window.ActiveXObject) {
		if (reqcomponent == null)
			try{
				req = new ActiveXObject("mxml.XMLHTTP");
			}catch(e){
		        req = new ActiveXObject("Microsoft.XMLHTTP");
			}
		else
    	    req = reqcomponent;
			
        if (req) {
				req.onreadystatechange = processReqChange;
				if (params == "")
					params = '_R_A_N_D_I_D='+rau_random;
				else
					params += '&_R_A_N_D_I_D='+rau_random;

				if ((method == "POST")){
					req.open(method, url, true);
					req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
					req.setRequestHeader("Content-length", params.length);
					req.setRequestHeader("Connection", "close");
					req.send(params);				
				}else{
		    	    req.open(method, url+'&_R_A_N_D_I_D='+rau_random, true);
					req.send();
				}
		}
    }
}

function processReqChange() {
    // только при состоянии "complete"
    if (req.readyState == 4) {
        // для статуса "OK"
        if (req.status == 200) {
            // здесь идут всякие штуки с полученным ответом
			var resp = req.responseText;
			var r = /<!-- --{(.*[\s\S]*)}-- -->/ig;
			var res = r.exec(resp);
			if (resp.match(/<!-- --{(.*[\s\S]*)}-- -->/ig)){
				for (i=1;i<=res.length;i++)
					if (res[i]) eval(res[i]);
			}

			
			resp = resp.replace(/<!-- --{(.*[\s\S]*)}-- -->/ig, '');
			if (teg){
				if (!teg.childNodes){
					document.getElementById(teg).innerHTML=resp;
				}else{
					teg.innerHTML=resp;
				}
			}
			
			if (doev){
				eval(doev);
			}
			
			//set ajax status to Free
			//ajaxstat("");
			//setTimeOut("pngfix();", 1000);
			//showobject(teg, 500);
			if ((lplace) && (lplace.length != "") && (lplace != teg)){fadeobject(lplace, 500)};
        } else {
			if (!(lplace) || (lplace.length == "")) {lplace = teg;}
			if (document.getElementById(lplace) == null){
				return ;
			}
			alert(document.getElementById(lplace) + "\n" + lplace);
				document.getElementById(lplace).innerHTML = '\
					<div class=\"blank\" style="color:red; text-align: center">\
						Error while trying to connect to server!: <br /> Reason is : ' +req.statusText +'\
					</div>';
        }
    }else if((req.readyState == 1) || (req.readyState == 2) || (req.readyState == 3)){
		if (!(lplace) || (lplace.length == "")) {return}
		document.getElementById(lplace).innerHTML='<div style="width:50%; height:auto; float:left" align="center"><div style="float:right; width:auto; text-align:center; background-color:#e7e7e7; border:#666666 1px solid;" align="center"><div style="float:left; width:auto; height:auto;"><img src="/img/Loading.gif" width="15" height="15" hspace="0" vspace="0" border="0" /></div></div></div>';
	}
}

}

function doAjax(method,url,params,lplace,reqcomponent,func, failfunc){
	//set ajax statu to busy
	ajaxstat("1");
	if ((lplace) && (lplace.length != 0)){showobject(lplace, 500)};
	var req;
	var rau_random = Math.round(Math.random() * 100000);

loadXMLDoc(url);
function loadXMLDoc(url) {
    if (window.XMLHttpRequest) {
		if ((!reqcomponent) || (reqcomponent == null))
        req = new XMLHttpRequest();
		else
        req = reqcomponent;

        req.onreadystatechange = processReqChange;
		if (method == "POST"){
	        req.open(method, url, true);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req.setRequestHeader("Content-length", params.length);
			req.setRequestHeader("Connection", "close");
			if (params == "")
				params = '_R_A_N_D_I_D='+rau_random;
			else
				params += '&_R_A_N_D_I_D='+rau_random;				
			
			req.send(params);
			
		}else{
	        req.open(method, url+'&_R_A_N_D_I_D='+rau_random, true);
			req.send(null);
		}
        
    // для версии с ActiveX
    } else if (window.ActiveXObject) {
		
		if (reqcomponent == null)
	        req = new ActiveXObject("Microsoft.XMLHTTP");
		else
    	    req = reqcomponent;
			
        if (req) {
				req.onreadystatechange = processReqChange;
				req.open(method, url, true);
			if ((method == "POST")  &&(params.length > 0)){
				req.open(method, url, true);
				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				req.setRequestHeader("Content-length", params.length);
				req.setRequestHeader("Connection", "close");
				if (params == "")
					params = '_R_A_N_D_I_D='+rau_random;
				else
					params += '&_R_A_N_D_I_D='+rau_random;
				req.send(params);				
			}else{
				req.send();
			}
		}
    }
}

function processReqChange() {
    // только при состоянии "complete"
    if (req.readyState == 4) {
        // для статуса "OK"
        if (req.status == 200) {
            // здесь идут всякие штуки с полученным ответом
			eval(func);
			//set ajax status to Free
			ajaxstat("");
			if ((lplace) && (lplace.length != "")){fadeobject(lplace, 500)};
        } else {
			if (failfunc != ""){
				eval(failfunc);
				pngfix();
			}else{
            	alert("Error while trying to connect to server!:\n" +req.statusText);
			}
			if ((lplace) && (lplace.length != "")){fadeobject(lplace, 500)};
        }
    }else if((req.readyState == 1) || (req.readyState == 2) || (req.readyState == 3)){
		if (!(lplace) || (lplace.length == "")) {return}
		document.getElementById(lplace).innerHTML='<div style="width:200px; height:auto; float:left" align="center"><div style="float:right; width:auto; text-align:center; background-color:#e7e7e7; border:#666666 1px solid;" align="center"><div style="float:left; width:auto; height:auto; padding:5px"><img src="/img/Loading.gif" width="16" height="16" hspace="0" vspace="0" border="0" /></div><div style="float:left; height:auto; color:#993300; padding-left: 5px; padding-right: 5px; padding-top:5px">Please, wait...</div></div></div>';
	}
}

}

function Ajax_getvalues(obj, startwith){
	var getstr = "";
	if (obj.tagName == "INPUT") {
    	if (obj.type == "text") {
        	getstr += startwith + obj.name + "=" + obj.value;
        }
		if (obj.type == "checkbox") {
			if (obj.checked) {
				getstr += startwith + obj.name + "=" + obj.value;
			}
			/*else {
				getstr += obj.name + "=&";
			}*/
		}
		if (obj.type == "radio") {
			if (obj.checked) {
				getstr += startwith + obj.name + "=" + obj.value;
			}
		}
	}else if (obj.tagName == "SELECT") {
		var sel = obj;
		if (sel.options[sel.selectedIndex].value.length != 0){
			getstr += startwith + sel.name + "=" + sel.options[sel.selectedIndex].value;
		}
	}else if (obj.tagName == "TEXTAREA") {
		var sel = obj;
		var v = "";
		try {
			v = editAreaLoader.getValue(sel.id);
		}catch (err){
		}
		alert(sel.id + v);
		if ( v.length != 0){
			getstr += startwith + sel.name + "=" + sel.value;
		}
	}
	return getstr;
}


function Ajax_getparams(obj, startwith, childproc) {
	if (!obj.childNodes) obj = document.getElementById(obj);
	var getstr = "";
	if (!startwith) startwith = "";
	
	//alert("OBJECT == " + obj.id + ' = ' + obj.tagName + ' == ' + obj.childNodes.length);	
    for (var i=0; i<obj.childNodes.length; i++) {
		var ch = obj.childNodes[i];
		//alert(ch.id + ' = ' + ch.tagName + ' == ' + ch.childNodes.length);
		if (ch.childNodes.length >= 1){
			getstr += Ajax_getparams(ch, (getstr.length == 0 ? "" : "&"), '1');
		}else{
			getstr += Ajax_getvalues(ch, (getstr.length == 0 ? "" : "&"));
		}
    }
	//alert(getstr);
	if (getstr.length != 0) getstr = startwith + getstr;
	//if (!childproc)	alert(getstr.replace('1', 'b'));
	return getstr;
}