﻿var XmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 

function CallFunction(FunctionName,ASYNC_MODE,AddParameter1,AddParameter2)
    {
        switch(FunctionName)
	    {	        
            case "CALCULATE":
                var XML = "<PARAM_LIST>";
            	
	            // Prepare parameters 
	            XML += "<FUNCTION_NAME>" + FunctionName  + "</FUNCTION_NAME>";
	            XML += "<LANGUAGE>english</LANGUAGE>";
	            XML += "<SRVID>SHOP</SRVID>";
	            XML += "<ADAPTER></ADAPTER>";
	            XML += "<ADAPTER_CLASS></ADAPTER_CLASS>";        	    
                XML += "<CALL_PARAMETERS>"; 
                XML += "<PARAMETERS></PARAMETERS>";               
                XML += "<FUNCTION_PARAMETERS>";
                XML += "<FUNCTION_NAME>"+FunctionName+"</FUNCTION_NAME>";
                XML += "<USER_COUNT>"+document.all(USER_COUNT_CLIENT_ID).value+"</USER_COUNT>";
                XML += "<AMOUNT>"+document.all("amount").value+"</AMOUNT>"; 
                XML += "<WALUTA>USD</WALUTA>";               
                XML += "</FUNCTION_PARAMETERS>";
                XML += "</CALL_PARAMETERS>";
                XML += "</PARAM_LIST>";
            break;
        }
        return HttpSend(XML,FunctionName,ASYNC_MODE);
    }   

function HttpSend(XML,FUNCTION,ASYNC_MODE)
{	
  
    if (ASYNC_MODE==null) ASYNC_MODE=false;
    
  						
	try 
	{		
	
		XmlHttp.Open("POST", "MSCallServer.aspx?username=&password=&sfp=&sfu=&FUNCTION=" + FUNCTION , ASYNC_MODE);
		if (ASYNC_MODE==true)
        {
        if (semaphore==0)
        {
        
		     XmlHttp.onreadystatechange = function(){
             
		        if (XmlHttp.readyState == 4)
		        {   
		            
		            semaphore=1;
		            var XmlResult=parseXmlHTTPError();
		            if (!XmlResult) return false;
                   		    		    	        
	                XMLAppsInfo = XmlResult.documentElement;   
		             
		            GetApplicationList();	
		        }
		     };
		 }else XmlHttp.onreadystatechange= eval(HTTP_REQ_POSTBACK_REF); 
    }
		XmlHttp.Send("<?xml version='1.0' ?>" + XML );  			
	}
	catch(e) 
	{
		alert(e.description);
		return null;
	}
	
	if (ASYNC_MODE==true) return;
	var XmlResult=parseXmlHTTPError();
	if(!XmlResult) return false;
   		    		    	        
	return XmlResult.documentElement;   

}

function parseXmlHTTPError()
{

                    if (XmlHttp.status != 200) 
	                {			    
                	
		                alert(HTTP_ERROR_MSG);
		                
		                return null;
	                }			
                  
  	                var XmlResult = new ActiveXObject("microsoft.xmldom");
	                XmlResult.validateOnParse = true;  
	                XmlResult.load(XmlHttp.responseXML);            
                             						
	                if ( XmlResult.parseError.reason != "" )
	                {
		                alert(PARSE_RESPONSE_ERROR_MSG);
		                return null;
	                }
                            	        	                   	               
	                if (XmlResult.documentElement.nodeName=="ERROR")
	                {			  		        
		                var sErrorMsg = XmlResult.selectSingleNode("ERROR").text;
		                if (sErrorMsg.indexOf("API_DISABLED_FOR_ORG")>0){
			                alert(SRV_CRM_NO_API);
		                }else{
			                alert( XmlResult.selectSingleNode("ERROR").text.replace("ERROR:","") );
		                }
                		
		                return null;		  
	                }   
	                return XmlResult;
}