
var req,intervalId=lastVals=null,f;function UpdateValues(encodedVals)
{req=null;if(window.XMLHttpRequest)
req=new XMLHttpRequest();else
req=new ActiveXObject("MSXML2.XMLHTTP.3.0");req.onreadystatechange=DataReadyStateChanged;req.open("POST",calcHandlerURL);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");req.send("params="+encodeURIComponent(encodedVals));}
function DataReadyStateChanged()
{if(req.readyState==4)
{if(req.status==200)
{var response=req.responseText;var calcResponse=response.split("|||");if(calcResponse[1]!=null)
{var cells=calcResponse[1].split("||");var cell,el;for(var i=0;i<cells.length;i++)
{cell=cells[i].split("|");if(cell[0]=="ERR")
{alert(cell[1]);}
else
{el=document.getElementById(cell[0]);if(el.tagName=="SELECT")
el.value=cell[1];else
{if('string'==typeof el.innerText)el.innerText=cell[1];if('string'==typeof el.textContent)el.textContent=cell[1];if('string'==typeof el.value)el.value=cell[1];}}}
var x=GetInputVals();var encodedVals=FormEncode(x);lastVals=encodedVals;}}}}
function GetInputVals()
{var x=new Object();var calForm=document.getElementById("CalcForm");var inputs=calForm.getElementsByTagName("input");for(var i=0;i<inputs.length;i++)
{x[inputs[i].id]=inputs[i].value;}
inputs=calForm.getElementsByTagName("select");for(var i=0;i<inputs.length;i++)
{x[inputs[i].id]=inputs[i].value;}
return x;}
function FormEncode(obj)
{var out="";var val="";for(var name in obj)
{val="";if(name.substr(0,2)!="__"&&name!="")
{val=obj[name];val=val.replace(/[^0-9a-zA-Z\$\,\.\(\)\%\-]/g,"");out+=name+"="+val+"&";}}
return out;}
function submitter()
{var x=GetInputVals();var changed=false;var encodedVals=FormEncode(x);if(encodedVals!=lastVals)
changed=true;lastVals=encodedVals;if(changed)
UpdateValues(encodedVals);}
function onWinLoad()
{f=get("CalcForm");if(null==f)
{if(intervalId==null)
{intervalId=setInterval("onWinLoad()",500);}}
else
{if(intervalId!=null)
{clearInterval(intervalId);}
AddHandler(f,"onsubmit",onSubmit);}}
function onSubmit(e)
{if(e.preventDefault)
e.preventDefault();return false;}
function get(id)
{return document.getElementById(id);}
function AddHandler(hobj,e,pFn){if(hobj.addEventListener){hobj.addEventListener(e.substring(2),pFn,false);}
else if(hobj.attachEvent){hobj.attachEvent(e,pFn);}
else{var punk=hobj[e];if(punk==null){hobj[e]=pFn;}else{hobj[e]=function(){punk();pFn();}}}}
AddHandler(window,"onload",onWinLoad);