var httpRequest = createHttpRequest();
var AjaxxReturn = '';
var AjaxxDebugTrue = 1;
var debugdiv;
var statediv;


function createHttpRequest() {
	var httpRequest;
	var browser = navigator.appName;

	if (browser == "Microsoft Internet Explorer") {
		httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	} 
	else {
		httpRequest = new XMLHttpRequest();
	}
	return httpRequest;
}

function sendRequest(file, getRequestProc) {
	AjaxxDebug('sending request to ' + file + '...');
	if ((httpRequest.readyState !=4)&&(httpRequest.readyState !=0)) {
		setTimeout('sendRequest("'+file+'", "'+getRequestProc+'")', 500)
		return 0;
	};
	AjaxxReturn = getRequestProc;
	var a = new Array();
	a = file.split("?", 2);
	httpRequest.open('post', a[0]);
        httpRequest.onreadystatechange = AjaxxCheckState;
        httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	httpRequest.send(a[1]+'&xml=1&rand='+Math.random());
	
	return 1;
}


function AjaxxCheckState() {
	if (!statediv) {
		statediv = document.getElementById('stateDiv');
		if (!statediv) {
			statediv = document.createElement('DIV');
			statediv.id = 'stateDiv';
			statediv.className = 'stateDiv';
			document.body.appendChild(statediv);
		}
	};
	window.status = AjaxxStat();
	statediv.innerHTML = AjaxxStat();
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			AjaxxDebug('Ok evaling : '+AjaxxReturn+'(httpRequest.responseText)');
			eval(AjaxxReturn+'(httpRequest.responseText)');
		}
		else {
			AjaxxDebug('Error: '+httpRequest.statusText);
		};
	};
	return 1;
}

function AjaxxDebug(s) {
	if (!AjaxxDebugTrue) {
		return 0;
	};
	if (!debugdiv) {
		debugdiv = document.getElementById('debugDiv');
		if (!debugdiv) {
			debugdiv = document.createElement('DIV');
			debugdiv.id = 'debugDiv';
			debugdiv.className = 'debugDiv';
			document.body.appendChild(debugdiv);
		}
	};
	debugdiv.innerHTML = s + '<br>' + debugdiv.innerHTML;
	return 1;
}

function AjaxxStat() {
	switch (httpRequest.readyState) {
    		case 0:
    			return "не инициализирован";
	    		break;
		      
		case 1: 
			return "загрузка...";
			break;
		  
		case 2: 
		        return "загружено";
			break;
		case 3: 
    			return "в процессе...";
        		break;
	        
	    	case 4: 
	        	return "готово";
		        break;
			    
		default:
		      return "неизвестное состояние";  
	}  
	return 0;
}

function elem(s) {
	return document.getElementById(s);
}

function parseXML (text) {
	// code for IE
	if (window.ActiveXObject) {
		var doc=new ActiveXObject("Microsoft.XMLDOM");
	        doc.async="false";
	        doc.loadXML(text);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else {
		var parser=new DOMParser();
		var doc=parser.parseFromString(text,"text/xml");
	}
			  
	return doc.documentElement;
}

function XMLNodeText(parent, tagname) {
        if (!parent) return 0;
        var node = parent.getElementsByTagName(tagname);
        if (!node) return 0;
        if (node.lenght > 1) {
                return node;
        }
	if (!node[0].childNodes[0]) {
		return '';
	};
        return node[0].childNodes[0].nodeValue;
}
								
function XMLNodeAttr(node, attrname) {
        if (!node) return 0;
	if (!node.getAttribute(attrname)) {
		return '';
	}
	else {
    		return node.getAttribute(attrname);
	};
}
							