﻿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
	if(Page.designation==2){
		var pageSTR = "&p=" +Page.id
	}else{
		var pageSTR = "&s=" +Page.id
	}
	ME.setSPage =function(p){
		pageSTR = "&s=" +p
	}
	ME.setPPage =function(p){
		pageSTR = "&p=" +p
	}
	
	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+ pageSTR+ '&p_language='+ Page.language
		for (n = 2; n < arguments.length; n++) {
			sentParams += "&a=" +  encodeURI(escape(arguments[n]))
		}
		//trace(sentParams)
		var rnd = "&rnd=" + Math.random().toString()
		var url = '/_services/invoke.asp?'  + rnd
		try{
			if(sentParams.length<400){
				ajax = GetCallback(url + "&" + sentParams, null, "GET", !ME.synchronic)
				ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				ajax.send();
			}else{
				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);
				
			}
		}catch(e){
			trace("ERROR ON SUBMIT")
		}
		if (ME.synchronic) {
			//trace(ajax.responseText)
			return eval(ajax.responseText)
		} else {
			if (typeof (ME.onLoad) == "function") {
				checkInterval = setInterval(checkRedyState, 40)
			}
		}
	}// this.invoke
	
	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);
	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)
*/

