﻿function _service(){
	// Public Vars
	
	var ME = this
	ME.synchronic = true
	ME.onCall = null
	ME.onLoad = null
	ME.onError = null
	ME.responseText = null
	var ajax
	var checkInterval =0
	// this.invoke
	ME.invoke = function(ServiceFile, ExeFunction) {
		if (typeof (ME.synchronic) != "boolean") ME.synchronic = true
		if (typeof (ME.onCall) == "function") ME.onCall()
		var n
		var sentParams = 'service=' + ServiceFile + '&ExeFunction=' + ExeFunction
		for (n = 2; n < arguments.length; n++) {
			sentParams += "&a=" +  encodeURI(escape(arguments[n]))
		}
		var rnd = "&rnd=" + Math.random().toString()
		var url = '/_services/invoke.asp?'  + rnd
		try{
		//	console.log(url)
			
		}catch(e){}
		try{
			ajax = GetCallback(url, null, "POST", !ME.synchronic)
			ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			//ajax.setRequestHeader("Content-length", sentParams.length);
			//ajax.setRequestHeader("Connection", "close");

			ajax.send(sentParams);
			//console.log(ajax.responseText)
		}catch(e){
			try{
				//console.log(url)
				//console.log(ajax.responseText)
				
			}catch(e){}
			
		}
		//alert(ME)
		if (ME.synchronic) {
		
			//console.log(ajax.responseText)
			return eval(ajax.responseText)
		} else {
			if (typeof (ME.onLoad) == "function") {
				checkInterval = setInterval(checkRedyState, 40)
			}
		}
	}	
	//GetCallback
	function GetCallback(url, Qform, Method, isAsync){
	var xmlHttp;
	try{ // Firefox, Opera 8.0+, Safari 
		xmlHttp = new XMLHttpRequest(); 
	}catch(e){  		 
		try{ // Internet Explorer 
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){  
			try{ // Other Internet Explorer
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");     
			}catch(e){ 
				alert("Your browser does not support AJAX!");
				return false;      
			}
		}
	}
	xmlHttp.open(Method,url,isAsync);
	
	//xmlHttp.send(Qform);
	return xmlHttp;
	}/* GetCallback */	
	
	var checkRedyState = function(){
		if(ajax.readyState == 4){
			//console.log(ajax.responseText)
			clearInterval(checkInterval)
			ME.responseText = ajax.responseText
			result = eval(ME.responseText)
			ME.onLoad(result)
			
			
		}
		
		
	}
}

/*var tmm = new _service
tmm.synchronic = false;
tmm.onLoad = function(){
	//alert("ori" + tmm.responseText )	
	
}
tmm.invoke('test','ori',1, 2)
*/
