
var isIE=!window.opera&&navigator.userAgent.indexOf('MSIE')!=-1;function MS1_Client(){this.request=RequestResponseBroker;this.tools=Tools;this.map=null;this.loadScreen=LoadingScreenManager;this.componentNames=new Array();this.cacheComponents=true;var me=this;this.addComponents=function(componentVarArray){this.componentNames=componentVarArray;if(this.cacheComponents==true){addEvent(window,'unload',this.saveState);}}
this.saveState=function(){for(var i in me.componentNames){eval("if(typeof("+me.componentNames[i]+")!='undefined')compState="+me.componentNames[i]+".saveState();");}
state=JSONstring.make(me.componentNames);createCookie(me.request.sessionId,state,0);}
this.addButton=function(button){this.buttons.addButton(button);}
this.addLoadScreen=function(loadScreen){this.loadScreen=loadScreen;}
this.addTool=function(tool){this.tools.addTool(tool);}
this.addMap=function(map){this.map=map;}
this.mapMouseMove=function(ev){var e=getEvent(ev);var t=getTarget(e);this.tools.eventFired('mousemove',ev,t);return true;}
this.mapMouseClickUp=function(ev){var e=getEvent(ev);var t=getTarget(e);this.tools.eventFired('mouseup',ev,t);return true;}
this.mapMouseClickDown=function(ev){var e=getEvent(ev);var t=getTarget(e);this.tools.eventFired('mousedown',ev,t);return true;}}
JSONstring={compactOutput:false,includeProtos:false,includeFunctions:false,detectCirculars:true,restoreCirculars:true,make:function(arg,restore){this.restore=restore;this.mem=[];this.pathMem=[];return this.toJsonStringArray(arg).join('');},toObject:function(x){eval("this.myObj="+x);if(!this.restoreCirculars||!alert){return this.myObj};this.restoreCode=[];this.make(this.myObj,true);var r=this.restoreCode.join(";")+";";eval('r=r.replace(/\\W([0-9]{1,})(\\W)/g,"[$1]$2").replace(/\\.\\;/g,";")');eval(r);return this.myObj},toJsonStringArray:function(arg,out){if(!out){this.path=[]};out=out||[];var u;switch(typeof arg){case'object':this.lastObj=arg;if(this.detectCirculars){var m=this.mem;var n=this.pathMem;for(var i=0;i<m.length;i++){if(arg===m[i]){out.push('"JSONcircRef:'+n[i]+'"');return out}};m.push(arg);n.push(this.path.join("."));};if(arg){if(arg.constructor==Array){out.push('[');for(var i=0;i<arg.length;++i){this.path.push(i);if(i>0)
out.push(',\n');this.toJsonStringArray(arg[i],out);this.path.pop();}
out.push(']');return out;}else if(typeof arg.toString!='undefined'){out.push('{');var first=true;for(var i in arg){if(!this.includeProtos&&arg[i]===arg.constructor.prototype[i]){continue};this.path.push(i);var curr=out.length;if(!first)
out.push(this.compactOutput?',':',\n');this.toJsonStringArray(i,out);out.push(':');this.toJsonStringArray(arg[i],out);if(out[out.length-1]==u)
out.splice(curr,out.length-curr);else
first=false;this.path.pop();}
out.push('}');return out;}
return out;}
out.push('null');return out;case'unknown':case'undefined':case'function':out.push(this.includeFunctions?arg:u);return out;case'string':if(this.restore&&arg.indexOf("JSONcircRef:")==0){this.restoreCode.push('this.myObj.'+this.path.join(".")+"="+arg.split("JSONcircRef:").join("this.myObj."));};out.push('"');var a=['\n','\\n','\r','\\r','"','\\"'];arg+="";for(var i=0;i<6;i+=2){arg=arg.split(a[i]).join(a[i+1])};out.push(arg);out.push('"');return out;default:out.push(String(arg));return out;}}}
var LoadingScreenManager=new function(){this.addScreen=function(screen){this.screen=screen;}
this.turnOn=function(){if(this.screen){this.screen.turnOn();}}
this.turnOff=function(){if(this.screen){this.screen.turnOff();}}}
var RequestResponseBroker=new function(){this.remoteMethodCalls=new Array();this.sentMethodCalls=new Array();this.ajax=new AjaxPool();this.requestURL=null;this.sessionId=null;this.proxyURL=null;this.parameters="";this.setRequestURL=function(requestURL){this.requestURL=requestURL;}
this.setSessionId=function(sessionId){this.sessionId=sessionId;}
this.setProxyURL=function(proxyURL){this.proxyURL=proxyURL;}
this.setParameter=function(name,value){this.parameters+="&"+name+"="+value;}
this.makeDelayedMethodCall=function(remoteObjName,remoteMethodName,params){this.addMethodCall(remoteObjName,remoteMethodName,params);}
this.makeImmediateMethodCall=function(remoteObjName,remoteMethodName,params){this.addMethodCall(remoteObjName,remoteMethodName,params);this.sendRequest();}
this.addMethodCall=function(remoteObjName,remoteMethodName,params){this.remoteMethodCalls.push(new RemoteMethod(remoteObjName,remoteMethodName,params));}
this.clearMethodCalls=function(requestRecieved){this.sentMethodCalls[requestRecieved]=null;}
this.sendRequest=function(){if(this.remoteMethodCalls.length>0){LoadingScreenManager.turnOn();time=new Date;time=time.getTime();this.sentMethodCalls[time]=this.remoteMethodCalls;rm=JSONstring.make(this.remoteMethodCalls);this.remoteMethodCalls=new Array();if(this.proxyURL!=null){this.ajax.doGet(this.proxyURL+"?mscc="+time+this.parameters+"&mssess="+this.sessionId+"&ms="+rm,this.parseResponse);}else{this.ajax.doGet(this.requestURL+"?mscc="+time+this.parameters+"&mssess="+this.sessionId+"&ms="+rm,this.parseResponse);}
document.body.style.cursor="wait";}}
this.parseResponse=function(response){try{objResponses=eval(response);}catch(e){if(e.name=="SyntaxError"){alert("An error occured processing this statement:\n"+response);}}
if(!objResponses[1]['error']){requestSet=objResponses[2];objResponses=objResponses[1];for(i in objResponses){if(objResponses[i].arguments.length==0){eval(objResponses[i].methodName+"()");}else if(objResponses[i].arguments.length==1){eval(objResponses[i].methodName+"(objResponses[i].arguments[0])");}else if(objResponses[i].arguments.length>1){argStringArray=new Array();for(j in objResponses[i].arguments){argStringArray[j]="objResponses[i].arguments["+j+"]";}
eval(objResponses[i].methodName+"("+argStringArray.join(",")+")");}}
RequestResponseBroker.clearMethodCalls(requestSet);document.body.style.cursor="default";LoadingScreenManager.turnOff();}else{input_box=confirm(objResponses[1]['error']);document.body.style.cursor="default";LoadingScreenManager.turnOff();if(input_box==true){RequestResponseBroker.clearMethodCalls(requestSet);}else{RequestResponseBroker.clearMethodCalls(requestSet);window.location.reload(true);}}}
function obj2XMLRPC(obj){}}
function RemoteMethod(objName,methodName,params){this.objectName=objName;this.methodName=methodName;this.parameters=params;this.sent=false;}
function AjaxPool(){this.pool=new Array();this.poolNumber=2;for(i=0;i<this.poolNumber;i++){this.pool[i]=new Ajax();}
this.getAjaxObj=function(){i=0;found=false;while(i<this.pool.length){if(this.pool[i].busy==false){found=true
break;}
i++;}
if(found==true){return this.pool[i];}else{return false;}};this.doGet=function(url,hand,format){var ajax=this.getAjaxObj();ajax.doGet(url,hand,format);};this.doPost=function(url,dataPayload,hand,format){this.url=url;this.dataPayload=dataPayload;this.handleResp=hand;this.responseFormat=format||'text';this.method='POST';this.doReq();};};function Ajax(){this.req=null;this.busy=false;this.url=null;this.status=null;this.statusText='';this.method='GET';this.async=true;this.dataPayload=null;this.readyState=null;this.responseText=null;this.responseXML=null;this.handleResp=null;this.responseFormat='text',this.mimeType=null;this.headers=[];this.init=function(){var i=0;var reqTry=[function(){return new XMLHttpRequest();},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')}];while(!this.req&&(i<reqTry.length)){try{this.req=reqTry[i++]();}
catch(e){}}
return true;};this.doGet=function(url,hand,format){this.busy=true;this.url=url;this.handleResp=hand;this.responseFormat=format||'text';this.doReq();};this.doPost=function(url,dataPayload,hand,format){this.url=url;this.dataPayload=dataPayload;this.handleResp=hand;this.responseFormat=format||'text';this.method='POST';this.doReq();};this.doReq=function(){var self=null;var req=null;var headArr=[];if(!this.init()){alert('Could not create XMLHttpRequest object.');return;}
req=this.req;req.open(this.method,this.url,this.async);if(this.method=="POST"){this.req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}
if(this.method=='POST'){req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}
self=this;req.onreadystatechange=function(){var resp=null;self.readyState=req.readyState;if(req.readyState==4){self.status=req.status;self.statusText=req.statusText;self.responseText=req.responseText;self.responseXML=req.responseXML;switch(self.responseFormat){case'text':resp=self.responseText;break;case'xml':resp=self.responseXML;break;case'object':resp=req;break;}
if(self.status>199&&self.status<300){if(!self.handleResp){alert('No response handler defined '+'for this XMLHttpRequest object.');return;}else{self.busy=false;self.handleResp(resp);}}else{self.busy=false;self.handleErr(resp);}}}
req.send(this.dataPayload);};this.abort=function(){if(this.req){this.req.onreadystatechange=function(){};this.req.abort();this.req=null;}};this.handleErr=function(){};this.setMimeType=function(mimeType){this.mimeType=mimeType;};this.setHandlerResp=function(funcRef){this.handleResp=funcRef;};this.setHandlerErr=function(funcRef){this.handleErr=funcRef;};this.setHandlerBoth=function(funcRef){this.handleResp=funcRef;this.handleErr=funcRef;};this.setRequestHeader=function(headerName,headerValue){this.headers.push(headerName+': '+headerValue);};}
function addEvent(elm,evType,fn,useCapture)
{if(elm.addEventListener){var r=elm.addEventListener(evType,fn,useCapture);return true;}else if(elm.attachEvent){var r=elm.attachEvent('on'+evType,fn);return r;}else{elm['on'+evType]=fn;}}
function removeEvent(obj,evType,fn,useCapture){if(obj.removeEventListener){obj.removeEventListener(evType,fn,useCapture);return true;}else if(obj.detachEvent){var r=obj.detachEvent("on"+evType,fn);return r;}else{alert("Handler could not be removed");}}
function cancelBubble(e){if(window.event){window.event.cancelBubble=true;window.event.returnValue=false;}
if(e&&e.stopPropagation&&e.preventDefault){e.stopPropagation();e.preventDefault();}}
function getTargetObj(e){if(window.event&&window.event.srcElement)
el=window.event.srcElement;if(e&&e.target)
el=e.target;if(!el)
return;else
return el;}
function findPosX(obj){var curLeft=0;if(obj.offsetParent){do{curLeft+=obj.offsetLeft;}while(obj=obj.offsetParent);}
else if(obj.x){curLeft+=obj.x;}
return curLeft;}
function findPosY(obj){var curTop=0;if(obj.offsetParent){do{curTop+=obj.offsetTop;}while(obj=obj.offsetParent);}
else if(obj.y){curTop+=obj.y;}
return curTop;}
function attVal(element,attName){return parseInt(element.getAttribute(attName));}
function findXYPos(e){target=getTargetObj(e);var mX,mY;if(e.pageX&&e.pageY){mX=e.pageX;mY=e.pageY;}else if(e.clientX||e.clientY){mX=e.clientX;mY=e.clientY;if(isIE){var iebody=(document.compatMode&&document.compatMode!="BackCompat")?document.documentElement:document.body
var dsocleft=document.all?iebody.scrollLeft:pageXOffset
var dsoctop=document.all?iebody.scrollTop:pageYOffset
mX+=dsocleft;mY+=dsoctop;}}
return new Array(mX,mY);}
function moveObj(obj,x,y){obj.style.left=x+"px";obj.style.top=y+"px";}
function DL_GetElementLeft(eElement)
{if(!eElement&&this)
{eElement=this;}
var DL_bIE=document.all?true:false;var nLeftPos=eElement.offsetLeft;var eParElement=eElement.offsetParent;while(eParElement!=null)
{if(DL_bIE)
{if((eParElement.tagName!="TABLE")&&(eParElement.tagName!="BODY"))
{nLeftPos+=eParElement.clientLeft;}}
else
{if(eParElement.tagName=="TABLE")
{var nParBorder=parseInt(eParElement.border);if(isNaN(nParBorder))
{var nParFrame=eParElement.getAttribute('frame');if(nParFrame!=null)
{nLeftPos+=1;}}
else if(nParBorder>0)
{nLeftPos+=nParBorder;}}
if(eParElement.tagName=="DIV")
{var bord=parseInt(eParElement.style.border);if(bord>0){nLeftPos+=bord;}}}
nLeftPos+=eParElement.offsetLeft;eParElement=eParElement.offsetParent;}
return nLeftPos;}
function DL_GetElementTop(eElement)
{if(!eElement&&this)
{eElement=this;}
var DL_bIE=document.all?true:false;var nTopPos=eElement.offsetTop;var eParElement=eElement.offsetParent;while(eParElement!=null)
{if(DL_bIE)
{if((eParElement.tagName!="TABLE")&&(eParElement.tagName!="BODY"))
{nTopPos+=eParElement.clientTop;}}
else
{if(eParElement.tagName=="TABLE")
{var nParBorder=parseInt(eParElement.border);if(isNaN(nParBorder))
{var nParFrame=eParElement.getAttribute('frame');if(nParFrame!=null)
{nTopPos+=1;}}
else if(nParBorder>0)
{nTopPos+=nParBorder;}}
if(eParElement.tagName=="DIV")
{var bord=parseInt(eParElement.style.border);if(bord>0){nTopPos+=bord;}}}
nTopPos+=eParElement.offsetTop;eParElement=eParElement.offsetParent;}
return nTopPos;}
function setZindex(p_tag,p){if(isIE){p_tag.style.zIndex=p;}else{p_tag.setAttribute('style','z-index:'+p+';');}}
function getStyle(x,styleProp){if(x.currentStyle)
var y=x.currentStyle[styleProp];else if(window.getComputedStyle)
var y=document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);return y;}
function createCookie(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}
else var expires="";document.cookie=name+"="+escape(value)+expires+"; path=/";}
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return unescape(c.substring(nameEQ.length,c.length));}
return null;}
function eraseCookie(name){createCookie(name,"",-1);}
function clearOldState(oldSessionId){state=readCookie(oldSessionId);if(state!=-99){components=eval(state);for(var i in components){eraseCookie(components[i]+'Loaded');}
eraseCookie(oldSessionId);}}
function getMouseButton(e){if(e.which)return e.which;else if(e.button)return e.button;}
var Tools=new function(){this.tools=new Array();this.currentTool=null;this.addTool=function(tool){tool.toolManager=this;this.tools.push(tool);}
this.selectTool=function(tool){if(this.currentTool){this.currentTool.unselect();}
this.currentTool=tool;}
this.eventFired=function(eventType,event,target){this.currentTool.event(target);}}