﻿
    var xmlRequester = null;
    var READY_STATE_SUCCESS = 4;
    var RPC_Initialized = false;
    var RPC_Busy = false;

    function callAsyncRPC(rpcPath,sXML,callBackFunc)
    {
        try
        {
            xmlRequester.open("POST", rpcPath, true);
            if (trim(sXML)=="")
                sXML = "<XML></XML>";
            xmlRequester.onreadystatechange = callBackFunc;
            xmlRequester.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlRequester.send("XML=" + escape(sXML.replace(/\+/g,"%2B")));
        }
        catch(ex)
        {
            //alert(ex.message);
        }
    }  
        
    function callRPC(rpcPath,sXML)
    {
        var JSONReturn;
        try
        {
            xmlRequester.open("POST", rpcPath, false);
            if (trim(sXML)=="")
                sXML = "<XML></XML>";
            xmlRequester.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlRequester.send("XML=" + escape(sXML.replace(/\+/g,"%2B")));
            JSONReturn = eval("(" + xmlRequester.responseText + ")");
        }
        catch(ex)
        {
            alert("error: " + ex.message);
        }        
        
        return JSONReturn;
    }    
    
    function InitRPC()
    {
        if (window.XMLHttpRequest)
        {
            xmlRequester = new XMLHttpRequest();
        }
        else if (window.ActiveXObject)
        {
            xmlRequester = new ActiveXObject("Microsoft.XMLHTTP");
        }
        
        RPC_Initialized = true;     
    }

    function trim(sBuf)
    {
        if (!sBuf)
            return "";
        //var iNum = parseInt(sBuf);
        //if (!isNaN(iNum))
            //return iNum.toString();
        while (sBuf.lastIndexOf(" ") == sBuf.length - 1) 
        {
            sBuf = sBuf.substring(0,sBuf.lastIndexOf(" "));
            if (sBuf == "")
                return sBuf;
        }
        while (sBuf.indexOf(" ") == 0) 
        {
            sBuf = sBuf.substring(1,sBuf.length);
        }
        return sBuf;
    }      

    function getBetweenText(sBuffer, sStartText, sEndText)
    {
	    if((sBuffer.indexOf(sStartText) > -1) && (sBuffer.indexOf(sEndText) > -1))
	    {
		    return(sBuffer.substring(sBuffer.indexOf(sStartText) + sStartText.length, sBuffer.indexOf(sEndText)));
	    }
	    else
	    {
		    return(null);
	    }
    }
    
    function appendOptionToSelect(theVal, theText, selectName)
    {
      var elOptNew = document.createElement('option');
      elOptNew.text = theText;
      elOptNew.value = theVal;
      var elSel = document.getElementById(selectName);

      try {
        elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
      }
      catch(ex) {
        elSel.add(elOptNew); // IE only
      }
    }

    function clearDropDown(selectName)
    {
        document.getElementById(selectName).options.length = 0;    
    }     

    function findPos(obj) 
    {
	    var curleft = curtop = 0;
	    if (obj.offsetParent) {
		    curleft = obj.offsetLeft
		    curtop = obj.offsetTop
		    while (obj = obj.offsetParent) {
			    curleft += obj.offsetLeft
			    curtop += obj.offsetTop
		    }
	    }
	    return [curleft,curtop];
    }


    function getRadioSelectedValue(radioList)
    {
        var options = radioList.getElementsByTagName('input');
        for(var i=0;i<options.length;i++)
        {
            var opt = options[i];
            if(opt.checked)
            {
                return opt.value;
            }
        }
    }
    