// (c) 2010 Каныгин А.В. универсальная функция ajax-запроса
// Две упрощенных функции ajaxGET ajaxPOST вызывают сразу /ajaxtype.cfm
//Example: ajaxGET('account/login.cfm?t=2&r=1','tagid')
//Examole: agaxPOST('main.cfm?t=2&r=1','divid')
//Example: ajaxRequest('http://www.pokazuha.ru/a.cfm','t=2&d=5','GET','MyHTMLtagId',MyFunc);
// MyFunc(text,tagid) может быть не указана - тогда будет стандартная $('tagid).innerHTML = text;
// Если в параметрах вызова текст, то лучше text=encodeURIComponent(text);

function ajaxGET(param,tagid) {
	var tmp = param.indexOf('?'); 
	if( tmp != -1) param = param.substring(0,tmp)+'&'+param.substring(tmp+1,param.length+1);
	while(param.substr(0,1)==' ' || param.substr(0,1)=='/') { param=param.substring(1,param.length+1);}
	if(param.substr(0,7)=='http://') {alert('ajaxGET: используйте относительный путь!');return false;}
	ajaxRequest('/ajaxtype.cfm',encodeURI('filename='+param),'GET',tagid,TextWithoutDebugInfo)	
}
function ajaxPOST(param,tagid) {
	var tmp = param.indexOf('?'); 
	if( tmp != -1) param = param.substring(0,tmp)+'&'+param.substring(tmp+1,param.length+1);
	while(param.substr(0,1)==' ' || param.substr(0,1)=='/') { param=param.substring(1,param.length+1);}
	if(param.substr(0,7)=='http://') {alert('ajaxPOST: используйте относительный путь!');return false;}
	ajaxRequest('/ajaxtype.cfm',encodeURI('filename='+param),'POST',tagid,TextWithoutDebugInfo)	
}
function TextWithoutDebugInfo(text,tagid){
	if (typeof($) != 'function') var $ = function (v,o) { return((typeof(o)=='object'?o:document).getElementById(v));};
	var tmp = text.indexOf('<P><HR><B>Queries</B>'); //две строки для отсечения 
	if( tmp != -1) text = text.substring(1,tmp-1);   //отладочной информации внизу
	$(tagid).innerHTML = unescape(text);
}

function ajaxRequest(url,param,method,tagid,func) {
	if(func) var ResultFunc = func;
	else {
		if (typeof($) != 'function') var $ = function (v,o) { return((typeof(o)=='object'?o:document).getElementById(v));};
		var ResultFunc = function(text,tagid) {$(tagid).innerHTML = unescape(text);};
	}	

	var req = false;
	if (window.XMLHttpRequest) {
		req=new XMLHttpRequest();
		if (req.overrideMimeType) {
			req.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			req=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				req=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!req) { alert("Невозможно создать HTTPXML object!"); return false;}

	req.onreadystatechange=function() {
	if (req.readyState == 4) {
		if (req.status == 200) ResultFunc(req.responseText,tagid);
		else alert('Ошибка соединения с сервером. Status:'+req.status);
		}
	};

	if(method == 'GET'){
		if(param != '') param = '?'+param; 
		req.open('GET',url+param,true);
		req.send(null);
	}else{
		req.open('POST',url,true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.send(param);
	} 
}

