/*
*    Clean AJAX Engine v4.3
*    Copyright (C) 2005-2008 Carlos Eduardo Goncalves (cadu.goncalves@gmail.com)
*
*    Available via GNU General Public License (http://www.gnu.org/copyleft/gpl.html)
*/
var clean_environment={};clean_environment.version="4.3";clean_environment.userAgent={};clean_environment.debug=false;clean_environment.hashAlgorithm="md5";clean_environment.cleanPath="";clean_environment.scripts={};clean_environment.classes={};clean_environment.libraries={};clean_environment.libraries.ajaxslt=["ajaxslt.util","ajaxslt.xmltoken","ajaxslt.dom","ajaxslt.xpath","ajaxslt.xslt"];clean_environment.libraries.pajhome=["pajhome.md5","pajhome.sha1"];clean_environment.libraries.openAjax=["openajax.OpenAjax"];function getPath (){var path="";var scripts=document.getElementsByTagName("script");for(var i=0; i<scripts.length; i++){var src=scripts[i].getAttribute("src");if(src){var loader=src.match(/^(.*?)\/?clean-ajax-[boot.js|all.js]/);if(loader){var root=loader[0];path=root.substring(0,root.lastIndexOf("/")+1);break;}}}return path;}function importScript(file){if(clean_environment.scripts[file]==undefined){clean_environment.scripts[file]=file;if(clean_environment.userAgent.isSafari)document.writeln("<script type='text/javascript' src='"+file+"'></script>");else {var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.type="text/javascript";script.src=file;head.appendChild(script);}return true;}return false;}function importLibrary(library){for(var f in library){var file=library[f].replace(/\./g,"/")+".js";importScript(clean_environment.cleanPath+"lib/"+file);}}function importClass(clazz){var file=clazz.replace(/\./g,"/")+".js";if(importScript(clean_environment.cleanPath+file)){var clazzName=clazz.substring(clazz.lastIndexOf(".")+1);clean_environment.classes[clazzName]=clazzName;}}function sniffBrowser(){var agent=navigator.userAgent.toLowerCase();clean_environment.userAgent.isMsie=(agent.indexOf("msie")!=-1);clean_environment.userAgent.isOpera=(agent.indexOf("opera")!=-1);clean_environment.userAgent.isChrome=(agent.indexOf("chrome")!=-1);clean_environment.userAgent.isSafari=(agent.indexOf("safari")!=-1)&&!clean_environment.userAgent.isChrome;clean_environment.userAgent.isMozilla=(agent.indexOf("mozilla")!=-1)&&!(clean_environment.userAgent.isChrome|clean_environment.userAgent.isSafari|clean_environment.userAgent.isOpera);}function prepareStart(){if(typeof window.addEventListener!="undefined")window.addEventListener("load",main,false);else if(typeof document.addEventListener!="undefined")document.addEventListener("load",main,false);else if(typeof window.attachEvent!="undefined")window.attachEvent("onload",main);else {if(typeof window.onload=="function"){var current=onload;window.onload=function(){current();main();};}else window.onload=main;}}function main(){if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary("clean-ajax","http://clean-ajax.sourceforge.net","4.2",{});}HistoryTool.install();Engine.start(clean_environment.debug,createEngineProgressBar());}function createEngineProgressBar(){var img_path=clean_environment.cleanPath+"resources/loading.gif";var progress_bar=new FlyProgressBar(document,"<p><img src='"+img_path+"'/></p>");return progress_bar;}function bootstrap(){clean_environment.cleanPath=getPath();importLibrary(clean_environment.libraries.openAjax);importLibrary(clean_environment.libraries.openAjax);importLibrary(clean_environment.libraries.pajhome);if((typeof XSLTProcessor=="undefined")&&(window.ActiveXObject==null))importLibrary(clean_environment.libraries.ajaxslt);sniffBrowser();prepareStart();}bootstrap();
function Clean(){};Clean.createSimpleMessage=function(url,consumer,on_error){var msg=new Message();msg.address=url;msg.consumer=consumer;msg.onError=on_error;return msg;};Clean.createMessage=function(url,xslt,consumer,_refresh,on_error){var msg=new Message();msg.address=url;msg.xslt=xslt;msg.refresh=_refresh;msg.consumer=consumer;msg.onError=on_error;return msg;};Clean.createFullMessage=function(url,xslt,consumer,_refresh,on_error,on_change,on_complete){var msg=new Message();msg.address=url;msg.xslt=xslt;msg.consumer=consumer;msg.refresh=_refresh;msg.onError=on_error;msg.onChange=on_change;msg.onComplete=on_complete;return msg;};Clean.doGet=function(msg){msg.method="GET";return Connection.sendMessage(msg);};Clean.doPost=function(msg,value,encrypt){msg.method="POST";msg.value=value;return Clean.sendMessage(msg,encrypt);};Clean.doPut=function(msg,value,encrypt){msg.method="PUT";msg.value=value;return Clean.sendMessage(msg,encrypt);};Clean.doDelete=function(msg,value,encrypt){msg.method="DELETE";msg.value=value;return Clean.sendMessage(msg,encrypt);};Clean.sendMessage=function(msg,encrypt){if(encrypt)msg.value=HashTool.encodeString(msg.value);return Connection.sendMessage(msg);};Clean.doJSONP=function(url){var script=document.createElement("script");script.type="text/javascript";script.src=url;document.getElementsByTagName("head")[0].appendChild(script);};Clean.sendFormById=function(msg,form_id,encrypt){var iterator=new DomIterator(document);var form=iterator.getFormById(form_id);if(form!=null)return Connection.sendFormByMessage(msg,form,encrypt);};Clean.sendFormByName=function(msg,form_name,encrypt){var iterator=new DomIterator(document);var form=iterator.getFormByName(form_name);if(form!=null)return Connection.sendFormByMessage(msg,form,encrypt);};Clean.abortMessage=function(msg_id){Connection.abortMessage(msg_id);};Clean.callWebService=function(msg,rpc){msg.method="POST";return Connection.callWebService(msg,rpc);};
function Engine(){};Engine.ACTIVEX_XHR=["Microsoft.XMLHTTP","MSXML2.XMLHTTP"];Engine.ACTIVEX_DOM=["Microsoft.XMLDOM","MSXML2.DOMDocument","MSXML.DOMDocument"];Engine.HTTP_METHODS=["HEAD","GET","POST","PUT","DELETE","TRACE","OPTIONS","CONNECT"];Engine.HTTP_STATUS_CODES={200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",205:"Reset Content",204:"No Content",206:"Partial Content",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported"};Engine.debug=null;Engine.progressBar=null;Engine.start=function(debug,progress_bar){Engine.debug=debug;if(Engine.assertOneOfTypes(progress_bar,[EmbeddedProgressBar,FlyProgressBar]))Engine.progressBar=progress_bar;if(Engine.debug)Console.start();setInterval(Engine.doTimer,500);};Engine.reportException=function(msg_id,exception){if(Engine.debug)Console.trace(exception,Console.EXCEPTION);else {var msg=MessageQueue.getMessage(msg_id);if((msg==null)||(msg.onError==null))throw exception;else msg.onError(exception);}MessageQueue.remove(msg_id);};Engine.doTimer=function(){if(Engine.progressBar!=null)Engine.progressBar.update(MessageQueue.hasActiveMessage());MessageQueue.clear();};Engine.setProgressBar=function(progress_bar){if(!Engine.assertOneOfTypes(progress_bar,[EmbeddedProgressBar,FlyProgressBar]))return;if(Engine.progressBar!=null)Engine.progressBar.free();Engine.progressBar=progress_bar;};Engine.buildActiveX=function(names){var obj=null;for(var i=0; i<names.length; i++){try {obj=new ActiveXObject(names[i]);break;}catch (e){/*Ignore the exception and try the next*/}}return obj;};Engine.buildRequest=function(){try {var obj=(typeof XMLHttpRequest!="undefined")?new XMLHttpRequest():Engine.buildActiveX(Engine.ACTIVEX_XHR);return obj;}catch(e){Engine.reportException(null,e);}};Engine.loadFile=function(url){try {var req=Engine.buildRequest();req.open("GET",url,false);req.send("");return req.responseXML;}catch(e){Engine.reportException(null,e);}};Engine.assertType=function(obj,type){if(obj==null)return false;var obj_type=typeof obj;return (obj_type.toLowerCase()=="object")&&(obj.constructor==type);};Engine.assertOneOfTypes=function(obj,types){var r=false;for(var i=0; i<types.length;++i){r=Engine.assertType(obj,types[i]);if(r==true)return r;}return r;};Engine.doAsPrivileged=function(){try {netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");}catch (e){/*Ignore the exception*/}};Engine.publishEvent=function(name,value){if(typeof OpenAjax!="undefined")OpenAjax.hub.publish(name,value);};
function Base64(value){Base64.prototype.bytes=value;};Base64.CHAR_MAP="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";Base64.prototype.encode=function(){if(typeof btoa=="function")this.bytes=btoa(this.bytes);else {var _byte=new Array(),_char=new Array(),_result=new Array();var j=0;for (var i=0; i<this.bytes.length; i+=3){_byte[0]=this.bytes.charCodeAt(i);_byte[1]=this.bytes.charCodeAt(i+1);_byte[2]=this.bytes.charCodeAt(i+2);_char[0]=_byte[0]>>2;_char[1]=((_byte[0]&3)<<4)|(_byte[1]>>4);_char[2]=((_byte[1]&15)<<2)|(_byte[2]>>6);_char[3]=_byte[2]&63;if(isNaN(_byte[1]))_char[2]=_char[3]=64;else if(isNaN(_byte[2]))_char[3]=64;_result[j++]=Base64.CHAR_MAP.charAt(_char[0])+Base64.CHAR_MAP.charAt(_char[1])+Base64.CHAR_MAP.charAt(_char[2])+Base64.CHAR_MAP.charAt(_char[3]);}this.bytes=_result.join("");}return this.bytes;};Base64.prototype.decode=function(){if(typeof atob=="function")this.bytes=atob(this.bytes);else {var _byte=new Array(),_char=new Array(),_result=new Array();var j=0;while ((this.bytes.length%4)!=0)this.bytes+="=";for (var i=0; i<this.bytes.length; i+=4){_char[0]=Base64.CHAR_MAP.indexOf(this.bytes.charAt(i));_char[1]=Base64.CHAR_MAP.indexOf(this.bytes.charAt(i+1));_char[2]=Base64.CHAR_MAP.indexOf(this.bytes.charAt(i+2));_char[3]=Base64.CHAR_MAP.indexOf(this.bytes.charAt(i+3));_byte[0]=(_char[0]<<2)|(_char[1]>>4);_byte[1]=((_char[1]&15)<<4)|(_char[2]>>2);_byte[2]=((_char[2]&3)<<6)|_char[3];_result[j++]=String.fromCharCode(_byte[0]);if(_char[2]!=64)_result[j++]=String.fromCharCode(_byte[1]);if(_char[3]!=64)_result[j++]=String.fromCharCode(_byte[2]);}this.bytes=_result.join("");}return this.bytes;};
Date.prototype.toIso8601=function(){var year=this.getYear();if(year<1900)year+=1900;var month=this.getMonth()+1;if(month<10)month="0"+month;var day=this.getDate();if(day<10)day="0"+day;var time=this.toTimeString().substr(0,8);return year+month+day+"T"+time;};Date.fromIso8601=function(value){var year=value.substr(0,4);var month=value.substr(4,2);var day=value.substr(6,2);var hour=value.substr(9,2);var minute=value.substr(12,2);var sec=value.substr(15,2);return new Date(year,month-1,day,hour,minute,sec,0);};Date.toJson=function(){function fmt(n){return n<10?"0"+n:n;}return this.getUTCFullYear()+"-"+fmt(this.getMonth()+1)+"-"+fmt(this.getUTCDate())+"T"+fmt(this.getUTCHours())+":"+fmt(this.getUTCMinutes())+":"+fmt(this.getUTCSeconds())+"Z";}
function QName(namespace_uri,local_part,prefix){QName.prototype.namespaceURI=namespace_uri;QName.prototype.localPart=local_part;QName.prototype.prefix=prefix;};QName.prototype.toString=function(){return this.prefix+":"+this.localPart+" xmlns:"+this.prefix+"='"+this.namespaceURI+"'";};QName.prototype.getValue=function(){return this.prefix+":"+this.localPart;};
function DomIterator(doc){DomIterator.prototype.doc=doc;};DomIterator.prototype.applyValue=function(id,value,replace_old){try {var el=this.getElementById(id);if(el==null)return;var iframes=this.getElementsByTagName("iframe");for(var i=0; i<=iframes.length;++i){if(iframes[i]!=null)if(iframes[i].id==el.id){el.contentWindow.document.body.innerHTML=(replace_old)?value:el.contentWindow.document.body.innerHTML+value;return;}}if(el.value!=null){el.value=(replace_old)?value:el.value+value;return;}if(el.innerHTML!=null){el.innerHTML=(replace_old)?value:el.innerHTML+value;return;}}catch(e){Engine.reportException(null,e);}};DomIterator.prototype.getValue=function(id){try {var el=this.getElementById(id);if(el==null)return null;var iframes=this.getElementsByTagName("iframe");for(var i=0; i<=iframes.length;++i){if(iframes[i]!=null)if(iframes[i].id==el.id)return el.contentWindow.document.body.innerHTML;}if(el.value!=null)return el.value;if(el.innerHTML!=null)return el.innerHTML;}catch(e){Engine.reportException(null,e);}};DomIterator.prototype.getFormById=function(form_id){var form=null;var forms=this.getElementsByTagName("form");for(var i=0; i<=forms.length;++i){if(forms[i]!=null){if(forms[i].id==form_id){form=forms[i];break;}}}return form;};DomIterator.prototype.getFormByName=function(form_name){var form=null;var forms=this.getElementsByTagName("form");for(var i=0; i<=forms.length;++i){if(forms[i]!=null){if(forms[i].name==form_name){form=forms[i];break;}}}return form;};DomIterator.prototype.getElementsByTagName=function(tag){if((clean_environment.userAgent.isMsie)||(clean_environment.userAgent.isSafari))return this.doc.getElementsByTagName(tag);else {var xpath="//"+tag;var result=XPathTool.evaluate(xpath,this.doc);return result;}};DomIterator.prototype.getElementById=function(id){if((clean_environment.userAgent.isMsie)||(clean_environment.userAgent.isSafari))return this.doc.getElementById(id);else {var xpath="//*[@id='"+id+"']";var result=XPathTool.evaluate(xpath,this.doc);return result.pop();}};DomIterator.prototype.getElementsByClass=function(clazz){var xpath="//*[@class='"+clazz+"']";var result=XPathTool.evaluate(xpath,this.doc);};
function Effect(params){Effect.prototype.params={};this.params.steps=params.steps?(params.steps>0&&params.steps<=30)?params.steps:30:25;this.params.delay=params.delay?(params.delay>0&&params.delay<=100)?params.delay:100:50;this.params.style=params.style?(Effect.STYLES.toString().indexOf(params.style.toString().toUpperCase())!=-1)?params.style:"FADE":"FADE";Effect.prototype.transition=null;switch(this.params.style.toUpperCase()){case "FADE":this.transition=Effect.transitions.fade;break;default:this.transition=Effect.transitions.drop;}Effect.prototype.currentStep=0;Effect.prototype.show=false;Effect.prototype.element=null;Effect.prototype.interval=0;Effect.prototype.onBeforeFinish=null;Effect.prototype.onFinish=null;};Effect.STYLES=["FADE","HDROP","VDROP","DDROP"];Effect.prototype.loop=function(){var _this=this;var _continue=this.advance(this.currentStep);if(_continue===false){clearInterval(this.interval);return;}this.currentStep++;if(this.currentStep>=this.params.steps){clearInterval(this.interval);if(this.onBeforeFinish!=null)setTimeout(function(){_this.onBeforeFinish();},this.params.delay);if(this.onFinish!=null){Effect.running=false;this.onFinish();}}};Effect.prototype.start=function(element){if(!Effect.running){var _this=this;Effect.running=true;this.element=element;this.interval=setInterval(function(){_this.loop();},this.params.delay);if(this.show){this.onFinish=function(){Effect.running=false;};}else{this.onFinish=function(){var complement=new Effect(_this.params);complement.show=true;complement.start(_this.element);};}}};Effect.prototype.advance=function(step){var rate=this.transition((step+1)/this.params.steps);switch(this.params.style.toUpperCase()){case "FADE":var opacity=this.show?0+(1-0)*rate:1+(0-1)*rate;this.element.style.opacity=""+opacity;this.element.style.filter="alpha(opacity="+opacity*100+");zoom:1";break;case "VDROP":if(step==0&&!this.show){Effect.store.height=this.element.clientHeight;this.element.style.overflow="hidden";}else if(step==0&&this.show){Effect.store.height=this.element.scrollHeight;}var height=this.show?0+Math.round(Effect.store.height*rate):Effect.store.height-Math.round(Effect.store.height*rate);this.element.style.height=height+"px";break;case "HDROP":if(step==0&&!this.show){Effect.store.width=this.element.clientWidth;this.element.style.overflow="hidden";}var width=this.show?0+Math.round(Effect.store.width*rate):Effect.store.width-Math.round(Effect.store.width*rate);this.element.style.width=width+"px";break;case "DDROP":if(step==0&&!this.show){Effect.store.height=this.element.clientHeight;Effect.store.width=this.element.clientWidth;this.element.style.overflow="hidden";}else if(step==0&&this.show){Effect.store.height=this.element.scrollHeight;}var height=this.show?0+Math.round(Effect.store.height*rate):Effect.store.height-Math.round(Effect.store.height*rate);var width=this.show?0+Math.round(Effect.store.width*rate):Effect.store.width-Math.round(Effect.store.width*rate);this.element.style.height=height+"px";this.element.style.width=width+"px";break;}};Effect.running=false;Effect.transitions={};Effect.store={};Effect.transitions.fade=function(value){return (Math.sin( Math.PI*(value-0.5))+1)/2;};Effect.transitions.drop=function(value){return Math.sin( Math.PI*(value-1)/2)+1;};
function EmbeddedProgressBar(doc,element_id){try {EmbeddedProgressBar.prototype.doc=doc;var iterator=new DomIterator(doc);EmbeddedProgressBar.prototype.bar=iterator.getElementById(element_id);}catch(e){Engine.reportException(null,e);}};EmbeddedProgressBar.prototype.update=function(show){try {if(this.bar!=null)this.bar.style.display=(show==true)?"inline":"none";}catch(e){/*Ignore the exception*/}};EmbeddedProgressBar.prototype.free=function(){};
function FlyProgressBar(doc,content){try {FlyProgressBar.prototype.doc=doc;FlyProgressBar.prototype.bar=this.doc.createElement("div");this.bar.innerHTML=content;this.bar.align="left";this.bar.style.width="auto";this.bar.style.left="5px";this.bar.style.top="0px";this.bar.style.margin="0px";this.bar.style.padding="0px";this.bar.style.position="absolute";this.bar.style.display="none";this.doc.body.insertBefore(this.bar,this.doc.body.firstChild);}catch(e){Engine.reportException(null,e);}};FlyProgressBar.prototype.update=function(show){try {var top=0;if(window.pageYOffset!=null)top=window.pageYOffset;else if((this.doc.documentElement!=null)&&(this.doc.documentElement.scrollTop!=null))top=this.doc.documentElement.scrollTop;else if((this.doc.body!=null)&&(this.doc.body.scrollTop!=null))top=this.doc.body.scrollTop;this.bar.style.top=top+"px";this.bar.style.display=(show==true)?"block":"none";}catch(e){/*Ignore the exception*/}};FlyProgressBar.prototype.free=function(){try {this.doc.body.removeChild(this.bar);}catch(e){/*Ignore the exception*/}};
function Console(){}Console.counter=1;Console.window=null;Console.RPC_DATA="rpc_data";Console.REQUEST="request";Console.RESPONSE="response";Console.EXCEPTION="exception";Console.start=function(){try {var opener=document.createElement("div");opener.align="right";opener.style.width="auto";opener.style.right="5px";opener.style.top="0px";opener.innerHTML="<a style='color:#000000; text-decoration:none; background:#FFFFFF; border:1px solid #000000;' href='javascript:Console.open()'>Clean Console</a>";document.body.insertBefore(opener,document.body.firstChild);}catch(e){Engine.reportException(null,e);}};Console.open=function(){try {if(!Console.isOpen())Console.window=window.open(clean_environment.cleanPath+"resources/console.html","console","height=350,width=450,scrollbars");Console.window.focus();}catch(e){Engine.reportException(null,e);}};Console.isOpen=function(){if(Console.window==null)return false;else return (!(Console.window.closed)&&(Console.window.document!=null));};Console.trace=function(value,trace_event){try {if(Console.isOpen()){var stack=ParserTool.jsToTraceRegister(Console.counter,null,false);var data=ParserTool.jsToTraceRegister(value,Console.counter,(trace_event==Console.RPC_DATA));var title="<a href='javascript:expand("+Console.counter+")'>"+trace_event.toUpperCase()+"</a>";++Console.counter;var iterator=new DomIterator(Console.window.document);var table=iterator.getElementById("trace_table");var row=table.insertRow(-1);row.className=trace_event;var cell_1=row.insertCell(-1);var cell_2=row.insertCell(-1);cell_1.vAlign="top";cell_2.vAlign="top";cell_1.innerHTML=stack;cell_2.innerHTML=title+data;}}catch(e){Engine.reportException(null,e);}};
function Connection(){};Connection.sendMessage=function(msg){try {if(!Engine.assertType(msg,Message))throw "Message required on paremeter 1";if(msg.progressBar!=null){if(!Engine.assertType(msg.progressBar,EmbeddedProgressBar))msg.progressBar=null;else msg.silent=true;}var wrapper=MessageQueue.add(msg);msg.id=wrapper.id;if(msg.method.toUpperCase()=="GET")wrapper.request.setRequestHeader("If-Modified-Since","Tue,1 Jan 1980 00:00:00 GMT");if(msg.progressBar!=null)msg.progressBar.update(true);wrapper.request.send(msg.value);Console.trace(msg,Console.REQUEST);return msg.id;}catch(e){Engine.reportException(msg.id,e);}};Connection.sendFormByMessage=function(msg,form,encrypt){try {if(!Engine.assertType(msg,Message))throw "Message required on paremeter 1";msg.method="POST";msg.value=ParserTool.formToUrl(form);if(msg.progressBar!=null){if(!Engine.assertType(msg.progressBar,EmbeddedProgressBar))msg.progressBar=null;else msg.silent=true;}if(encrypt)msg.value=HashTool.encodeQuery(msg.value);var wrapper=MessageQueue.add(msg);msg.id=wrapper.id;wrapper.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(msg.progressBar!=null)msg.progressBar.update(true);wrapper.request.send(msg.value);Console.trace(msg,Console.REQUEST);return msg.id;}catch(e){Engine.reportException(msg.id,e);}};Connection.callWebService=function(msg,rpc){try {Engine.doAsPrivileged();if(!Engine.assertType(msg,Message))throw "Message required on paremeter 1";if(!Engine.assertType(rpc,RemoteMethod))throw "RemoteMethod required on paremeter 2";msg.method="POST";msg.value=rpc;if(msg.progressBar!=null){if(!Engine.assertType(msg.progressBar,EmbeddedProgressBar))msg.progressBar=null;else msg.silent=true;}var wrapper=MessageQueue.add(msg);msg.id=wrapper.id;if(msg.progressBar!=null)msg.progressBar.update(true);wrapper.request.send(wrapper.parsedMethod);Console.trace(msg,Console.REQUEST);return msg.id;}catch(e){Engine.reportException(msg.id,e);}};Connection.abortMessage=function(msg_id){try {var wrapper=MessageQueue.getMessage(msg_id);if(wrapper!=null){wrapper.request.abort();MessageQueue.remove(msg_id);}}catch(e){Engine.reportException(msg_id,e);}};
function Message(){Message.prototype.id=null;Message.prototype.method="";Message.prototype.address=null;Message.prototype.xslt=null;Message.prototype.value=null;Message.prototype.doc=document;Message.prototype.consumer=null;Message.prototype.refresh=true;Message.prototype.cache=true;Message.prototype.silent=false;Message.prototype.effect=null;Message.prototype.progressBar=null;Message.prototype.onChange=null;Message.prototype.onError=null;Message.prototype.onComplete=null;};
function MessageQueue(){};MessageQueue.messages={};MessageQueue.add=function(msg){try {var wrapper=new MessageWrapper();wrapper.wrap(msg);MessageQueue.messages[wrapper.id]=wrapper;return wrapper;}catch(e){Engine.reportException(null,e);}};MessageQueue.remove=function(msg_id){try {delete MessageQueue.messages[msg_id];}catch(e){Engine.reportException(null,e);}};MessageQueue.getMessage=function(msg_id){try {if(MessageQueue.messages[msg_id]!="undefined")return MessageQueue.messages[msg_id];else return null;}catch(e){Engine.reportException(null,e);}};MessageQueue.clear=function(){try {for(var wrapper in MessageQueue.messages){if(MessageQueue.messages[wrapper]!="undefined")if(MessageQueue.messages[wrapper].request.readyState==4)delete MessageQueue.messages[wrapper];}}catch(e){Engine.reportException(null,e);}};MessageQueue.hasActiveMessage=function(){try {var active=false;for(var wrapper in MessageQueue.messages){if(MessageQueue.messages[wrapper]!="undefined")if((MessageQueue.messages[wrapper].request.readyState<4)&&(MessageQueue.messages[wrapper].silent==false)){active=true;break;}}return active;}catch(e){Engine.reportException(null,e);}};MessageQueue.getUniqueId=function(){var timestamp=(new Date()).getTime();return timestamp;};
function MessageWrapper(){MessageWrapper.prototype.style=null;MessageWrapper.prototype.id=null;MessageWrapper.prototype.consumer=null;MessageWrapper.prototype.refresh=null;MessageWrapper.prototype.cache=null;MessageWrapper.prototype.doc=null;MessageWrapper.prototype.address=null;MessageWrapper.prototype.silent=null;MessageWrapper.prototype.progressBar=null;MessageWrapper.prototype.remoteMethod=null;MessageWrapper.prototype.parsedMethod=null;MessageWrapper.prototype.request=null;MessageWrapper.prototype.onError=null;MessageWrapper.prototype.onComplete=null;MessageWrapper.prototype.effect=null;};MessageWrapper.prototype.wrap=function(msg){try {if(!Engine.assertType(msg,Message))throw "Invalid parameter";if(Engine.HTTP_METHODS.toString().indexOf(msg.method.toUpperCase())==-1)msg.method="POST";if(msg.xslt!=null)this.style=Engine.loadFile(msg.xslt);this.id=MessageQueue.getUniqueId();this.consumer=msg.consumer;this.refresh=msg.refresh;this.cache=msg.cache;this.doc=msg.doc;this.address=msg.address;this.silent=msg.silent;this.progressBar=msg.progressBar;if((msg.effect!=null)&&(!clean_environment.userAgent.isMsie))this.effect=new Effect(msg.effect);if(Engine.assertType(msg.value,RemoteMethod)){var stream=this.getStream(msg.value.protocol);if(stream!=null){this.remoteMethod=msg.value;this.parsedMethod=stream.write(this.remoteMethod);}}this.request=Engine.buildRequest();this.request.open(msg.method,msg.address);this.onError=msg.onError;this.onComplete=msg.onComplete;if(msg.onChange!=null)this.request.onreadystatechange=msg.onChange;else {var _this=this;var args=[this];this.request.onreadystatechange=function(){_this.onChange.apply(args[0],args);};}}catch(e){Engine.reportException(null,e);}};MessageWrapper.prototype.getStream=function(format){if(format==null)return null;switch(format.toUpperCase()){case "SOAP":return new SoapStream();case "XMLRPC":return new XmlRpcStream();case "JSONRPC":return new JsonRpcStream();default:return null;}};MessageWrapper.prototype.onChange=function(){try {if(this.request.readyState==4){if(this.progressBar!=null)this.progressBar.update(false);if(this.remoteMethod!=null)Engine.doAsPrivileged();var s=this.parseStatus(this.request.status)+":"+this.address;Console.trace(s,Console.RESPONSE);if(this.request.status>=200&&this.request.status<=299){var iterator=new DomIterator(this.doc);if(this.style!=null)iterator.applyValue(this.consumer,XsltTool.transform(this.request.responseXML,this.style),this.refresh);else {if(this.remoteMethod!=null){var stream=this.getStream(this.remoteMethod.protocol);if(stream!=null){Console.trace(this.request.responseText,Console.RPC_DATA);var rpc_result=stream.read(this.request.responseXML);if(stream.faultValue!=null){if(this.remoteMethod.onError!=null)this.remoteMethod.onError(rpc_result);}else {if(this.remoteMethod.onResult!=null)this.remoteMethod.onResult(rpc_result);}}}else{if(this.effect!=null){var _this=this;this.effect.onBeforeFinish=function(){iterator.applyValue(_this.consumer,_this.request.responseText,_this.refresh);};this.effect.show=false;this.effect.start(iterator.getElementById(this.consumer));}else iterator.applyValue(this.consumer,this.request.responseText,this.refresh);}}if((this.cache)&&(this.remoteMethod==null))HistoryTool.save(this.doc,this.consumer);}if(this.onComplete!=null)this.onComplete(this.request);}}catch(e){Engine.reportException(null,e);}};MessageWrapper.prototype.parseStatus=function(status){try {if(Engine.HTTP_STATUS_CODES[status]!="undefined")return status+" "+Engine.HTTP_STATUS_CODES[status];else return "HTTP status "+status;}catch(e){Engine.reportException(null,e);}};
function RemoteMethod(){RemoteMethod.prototype.name=null;RemoteMethod.prototype.params=new Array();RemoteMethod.prototype.protocol="SOAP";RemoteMethod.prototype.onResult=null;RemoteMethod.prototype.onError=null;};RemoteMethod.PROTOCOLS=["SOAP","XMLRPC","JSONRPC"];RemoteMethod.prototype.addParam=function(data){this.params.push(data);};RemoteMethod.prototype.clearParams=function(){this.params.splice(0,this.params.length);};RemoteMethod.prototype.getName=function(){if(Engine.assertType(this.name,QName))return this.name.getValue();else return this.name;};
function JsonRpcStream(){};JsonRpcStream.REQUEST="{\"version\":\"1.1\",\"method\":\"${METHOD}\",\"params\":[${DATA}]}";JsonRpcStream.char_map={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};JsonRpcStream.prototype.write=function(method){try {if(!Engine.assertType(method,RemoteMethod))return null;var json_params="";for(var i=0; i<method.params.length; i++)json_params+=this.serialize(method.params[i]);var json_call=JsonRpcStream.REQUEST.replace("${METHOD}",method.getName());json_call=json_call.replace("${DATA}",json_params);Console.trace(json_call,Console.RPC_DATA);return json_call;}catch(e){Engine.reportException(null,e);}};JsonRpcStream.prototype.read=function(json){var validator=/'^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$'/;return validator.test(json)?this.unserialize(json):undefined;};JsonRpcStream.prototype.serialize=function(data){try {var json="null";if(!(data===null)){var type=typeof data;switch(type.toLowerCase()){case "number":json=data.isFinite()?new String(data):"null";break;case "boolean":json=new String(data);break;case "string":json='"'+data.replace(/["\\\x00-\x1f\x7f-\x9f]/g,JsonRpcStream.escapeUnicode)+'"';break;case "object":if(data.constructor==Number)json=data.isFinite()?data.valueOf():"null";else if(data.constructor==Boolean)json=data.valueOf();else if(data.constructor==String)json='"'+data.replace(/["\\\x00-\x1f\x7f-\x9f]/g,JsonRpcStream.escapeUnicode)+'"';else if(obj.constructor==Date){json=data.toJson();}else if(data.constructor==Array){for(var i=0,temp_arr=[]; i<data.length; i++){temp_arr.push(this.serialize(data[i]));}json="["+temp_arr.join(",")+"]";}else{var temp_arr=[];for(var i in data){temp_arr.push(i+":"+this.serialize(data[i]));}json="{"+temp_arr.join(",")+"}";}break;}}return json;}catch(e){Engine.reportException(null,e);}};JsonRpcStream.prototype.unserialize=function(json){return eval("("+json+")");};JsonRpcStream.prototype.escapeUnicode=function(chr){if(!JsonRpcStream.char_map[chr]){var a=chr.charCodeAt();JsonRpcStream.char_map[chr]="\\u00"+Math.floor(a/16).toString(16)+(a%16).toString(16);}return JsonRpcStream.char_map[chr];};
function SoapStream(){SoapStream.prototype.faultValue=undefined;SoapStream.prototype.tree=[];};SoapStream.PROLOG="<?xml version=\"1.0\"?>\n";SoapStream.ENVELOPE="<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\""+" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\""+" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\""+" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\""+" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\">\n"+"<SOAP-ENV:Body>\n${DATA}</SOAP-ENV:Body></SOAP-ENV:Envelope>";SoapStream.ARRAY="<${NAME} xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"xsd:${TYPE}[${SIZE}]\">\n${DATA}</${NAME}>\n";SoapStream.BASE64="<${NAME} xsi:type=\"SOAP-ENC:base64\">\n${DATA}</${NAME}>\n";SoapStream.SOAP_VALUE="<SOAP-ENC:${TYPE}>${DATA}</SOAP-ENC:${TYPE}>\n";SoapStream.XSD_VALUE="<${NAME} xsi:type=\"xsd:${TYPE}\">${DATA}</${NAME}>\n";SoapStream.GENERIC_VALUE="<${NAME}>\n${DATA}</${NAME}>\n";SoapStream.prototype.write=function(method){try {if(!Engine.assertType(method,RemoteMethod))return null;var xml_params="";for(var i=0; i<method.params.length; i++)xml_params+=this.serialize(method.params[i],null);var xml_method=SoapStream.GENERIC_VALUE;if(Engine.assertType(method.name,QName))xml_method=xml_method.replace("${NAME}",method.name.toString());xml_method=xml_method.replace(/\$\{NAME\}/g,method.getName());xml_method=xml_method.replace("${DATA}",xml_params);var xml_call=SoapStream.PROLOG+SoapStream.ENVELOPE.replace("${DATA}",xml_method);Console.trace(xml_call,Console.RPC_DATA);var dom=(typeof DOMParser!="undefined")?new DOMParser():Engine.buildActiveX(Engine.ACTIVEX_DOM);if(typeof DOMParser!="undefined")return dom.parseFromString(xml_call,"text/xml");else {dom.loadXML(xml_call);return dom;}}catch(e){Engine.reportException(null,e);}};SoapStream.prototype.read=function(doc){this.faultValue=undefined;this.tree=[];if(doc!=null)for(var i=0; i<doc.childNodes.length; i++)this.unserialize(doc.childNodes[i],0);return this.tree[0];};SoapStream.prototype.serialize=function(data,name){try {var xml="",node="";if(typeof data=="object"){if(Engine.assertOneOfTypes(data,[String,Number,Date,Boolean])){if(name!=null){node=SoapStream.XSD_VALUE.replace(/\$\{NAME\}/g,name);node=node.replace(/\$\{TYPE\}/g,this.getDataType(data));}else node=SoapStream.SOAP_VALUE.replace(/\$\{TYPE\}/g,this.getDataType(data));node=node.replace(/\$\{DATA\}/g,(Engine.assertType(data,Date)==true)?data.toIso8601():data);xml+=node;}else if(Engine.assertType(data,Base64)){if(name!=null)node=SoapStream.BASE64.replace(/\$\{NAME\}/g,name);else node=SoapStream.SOAP_VALUE.replace(/\$\{TYPE\}/g,this.getDataType(data));node=node.replace(/\$\{DATA\}/g,data.encode());xml+=node;}else if(Engine.assertType(data,Array)){var array="";for(var element=0; element<data.length; element++)array+=this.serialize(data[element],null);if(name!=null){node=SoapStream.ARRAY.replace(/\$\{NAME\}/g,name);node=node.replace(/\$\{TYPE\}/g,this.getDataType(data[0]));node=node.replace(/\$\{SIZE\}/g,data.length);}else node=SoapStream.SOAP_VALUE.replace(/\$\{TYPE\}/g,this.getDataType(data));node=node.replace(/\$\{DATA\}/g,array);xml+=node;}else {for(var attribute in data){if((typeof data[attribute]!="object")||(Engine.assertOneOfTypes(data[attribute],[String,Number,Date,Boolean,Base64,Array]))){xml+=this.serialize(data[attribute],attribute);}else {node=SoapStream.GENERIC_VALUE.replace(/\$\{NAME\}/g,attribute);xml+=node.replace(/\$\{DATA\}/g,this.serialize(data[attribute],attribute));}}}}else {if(name!=null){node=SoapStream.XSD_VALUE.replace(/\$\{NAME\}/g,name);node=node.replace(/\$\{TYPE\}/g,this.getDataType(data));}else node=SoapStream.SOAP_VALUE.replace(/\$\{TYPE\}/g,this.getDataType(data));node=node.replace(/\$\{DATA\}/g,(Engine.assertType(data,Date)==true)?data.toIso8601():data);xml+=node;}return xml;}catch(e){Engine.reportException(null,e);}};SoapStream.prototype.unserialize=function(node,parent){if(node.nodeType==1){var obj=null;var tag=node.tagName.toLowerCase();var type=node.getAttribute("xsi:type");if(type==null){if(tag.indexOf("soap-enc:")!=-1)type=tag;else type="object";}type=type.toLowerCase();if((type.indexOf("xsd:")!=-1)||(type.indexOf("soap-enc:")!=-1))type=type.split(":")[1];this.propertyName=tag;switch(tag){case "soap-env:envelope":case "soap-env:body":type=null;break;case "soap-env:fault":this.faultValue=true;break;}obj=this.buildObject(type);if(obj!=null){this.tree.push(obj);if(type=="object"||type=="array"){if(this.tree.length>1){switch(this.getDataType(this.tree[parent])){case "object":this.tree[parent][this.propertyName]=this.tree[this.tree.length-1];break;case "array":this.tree[parent].push(this.tree[this.tree.length-1]);break;}}var parent=this.tree.length-1;}}for(var i=0; i<node.childNodes.length; i++){this.unserialize(node.childNodes[i],parent);}}if( (node.nodeType==3)&&(/[^\t\n\r ]/.test(node.nodeValue)) ){switch(this.getDataType(this.tree[this.tree.length-1])){case "datetime":this.tree[this.tree.length-1]=Date.fromIso8601(node.nodeValue);break;case "boolean":this.tree[this.tree.length-1]=(node.nodeValue=="1")?true:false;break;case "int":case "double":this.tree[this.tree.length-1]=new Number(node.nodeValue);break;case "string":this.tree[this.tree.length-1]=new String(node.nodeValue);break;case "base64":this.tree[this.tree.length-1]=new Base64(node.nodeValue);break;}if(this.tree.length>1){switch(this.getDataType(this.tree[parent])){case "object":this.tree[parent][this.propertyName]=this.tree[this.tree.length-1];break;case "array":this.tree[parent].push(this.tree[this.tree.length-1]);break;}}}};SoapStream.prototype.getDataType=function(data){try {var type=typeof data;if(type=="number")type=(Math.round(data)==data)?"int":"double";else if(type=="object"){if(data.constructor==String)type="string";else if(data.constructor==Number)type=(Math.round(data)==data)?"int":"double";else if(data.constructor==Date)type="datetime";else if(data.constructor==Boolean)type="boolean";else if(data.constructor==Base64)type="base64";else if(data.constructor==Array)type="array";}return type;}catch(e){Engine.reportException(null,e);}};SoapStream.prototype.buildObject=function(type){var obj=null;switch(type){case "object":obj=new Object();break;case "array":obj=new Array();break;case "datetime":obj=new Date();break;case "boolean":obj=new Boolean();break;case "int":case "double":obj=new Number();break;case "string":obj=new String();break;case "base64":obj=new Base64();break;}return obj;};
function XmlRpcStream(){XmlRpcStream.prototype.faultValue=undefined;XmlRpcStream.prototype.currentIsName=false;XmlRpcStream.prototype.propertyName="";XmlRpcStream.prototype.params=[];};XmlRpcStream.PROLOG="<?xml version=\"1.0\"?>\n";XmlRpcStream.REQUEST="<methodCall>\n<methodName>${METHOD}</methodName>\n<params>\n${DATA}</params>\n</methodCall>";XmlRpcStream.PARAM="<param>\n<value>\n${DATA}</value>\n</param>\n";XmlRpcStream.ARRAY="<array>\n<data>\n${DATA}</data>\n</array>\n";XmlRpcStream.STRUCT="<struct>\n${DATA}</struct>\n";XmlRpcStream.MEMBER="<member>\n${DATA}</member>\n";XmlRpcStream.NAME="<name>${DATA}</name>\n";XmlRpcStream.VALUE="<value>\n${DATA}</value>\n";XmlRpcStream.SCALAR="<${TYPE}>${DATA}</${TYPE}>\n";XmlRpcStream.prototype.write=function(method){try {if(!Engine.assertType(method,RemoteMethod))return null;var xml_params="";for(var i=0; i<method.params.length; i++)xml_params+=XmlRpcStream.PARAM.replace("${DATA}",this.serialize(method.params[i]));var xml_call=XmlRpcStream.REQUEST.replace("${METHOD}",method.getName());xml_call=XmlRpcStream.PROLOG+xml_call.replace("${DATA}",xml_params);Console.trace(xml_call,Console.RPC_DATA);var dom=(typeof DOMParser!="undefined")?new DOMParser():Engine.buildActiveX(Engine.ACTIVEX_DOM);if(typeof DOMParser!="undefined")return dom.parseFromString(xml_call,"text/xml");else {dom.loadXML(xml_call);return dom;}}catch(e){Engine.reportException(null,e);}};XmlRpcStream.prototype.read=function(doc){this.faultValue=undefined;this.currentIsName=false;this.propertyName="";this.params=[];if(doc!=null)for(var i=0; i<doc.childNodes.length; i++)this.unserialize(doc.childNodes[i],0);return this.params[0];};XmlRpcStream.prototype.serialize=function(data){try {var type=this.getDataTag(data);var scalar_type=XmlRpcStream.SCALAR.replace(/\$\{TYPE\}/g,type);var xml="";switch(type){case "struct":var member="";for(var i in data){var value="";value+=XmlRpcStream.NAME.replace("${DATA}",i);value+=XmlRpcStream.VALUE.replace("${DATA}",this.serialize(data[i]));member+=XmlRpcStream.MEMBER.replace("${DATA}",value);}xml=XmlRpcStream.STRUCT.replace("${DATA}",member); break;case "array":var value="";for(var i=0; i<data.length; i++){value+=XmlRpcStream.VALUE.replace("${DATA}",this.serialize(data[i]));}xml=XmlRpcStream.ARRAY.replace("${DATA}",value); break;case "dateTime.iso8601":xml=scalar_type.replace("${DATA}",data.toIso8601()); break;case "boolean":xml=scalar_type.replace("${DATA}",(data==true)?1:0); break;case "base64":xml=scalar_type.replace("${DATA}",data.encode()); break;default:xml=scalar_type.replace("${DATA}",data); break;}return xml;}catch(e){Engine.reportException(null,e);}};XmlRpcStream.prototype.unserialize=function(node,parent){if(node.nodeType==1){var obj=null;var tag=node.tagName.toLowerCase();switch(tag){case "fault":this.faultValue=true;break;case "name":this.currentIsName=true;break;default:obj=this.getTagData(tag);break;}if(obj!=null){this.params.push(obj);if(tag=="struct"||tag=="array"){if(this.params.length>1){switch(this.getDataTag(this.params[parent])){case "struct":this.params[parent][this.propertyName]=this.params[this.params.length-1];break;case "array":this.params[parent].push(this.params[this.params.length-1]);break;}}var parent=this.params.length-1;}}for(var i=0; i<node.childNodes.length; i++){this.unserialize(node.childNodes[i],parent);}}if( (node.nodeType==3)&&(/[^\t\n\r ]/.test(node.nodeValue)) ){if(this.currentIsName==true){this.propertyName=node.nodeValue;this.currentIsName=false;}else {switch(this.getDataTag(this.params[this.params.length-1])){case "dateTime.iso8601":this.params[this.params.length-1]=Date.fromIso8601(node.nodeValue);break;case "boolean":this.params[this.params.length-1]=(node.nodeValue=="1")?true:false;break;case "int":case "double":this.params[this.params.length-1]=new Number(node.nodeValue);break;case "string":this.params[this.params.length-1]=new String(node.nodeValue);break;case "base64":this.params[this.params.length-1]=new Base64(node.nodeValue);break;}if(this.params.length>1){switch(this.getDataTag(this.params[parent])){case "struct":this.params[parent][this.propertyName]=this.params[this.params.length-1];break;case "array":this.params[parent].push(this.params[this.params.length-1]);break;}}}}};XmlRpcStream.prototype.getDataTag=function(data){try {var tag=typeof data;switch(tag.toLowerCase()){case "number":tag=(Math.round(data)==data)?"int":"double";break;case "object":if(data.constructor==Base64)tag="base64";else if(data.constructor==String)tag="string";else if(data.constructor==Boolean)tag="boolean";else if(data.constructor==Array)tag="array";else if(data.constructor==Date)tag="dateTime.iso8601";else if(data.constructor==Number)tag=(Math.round(data)==data)?"int":"double";else tag="struct";break;}return tag;}catch(e){Engine.reportException(null,e);}};XmlRpcStream.prototype.getTagData=function(tag){var data=null;switch(tag){case "struct":data=new Object();break;case "array":data=new Array();break;case "datetime.iso8601":data=new Date();break;case "boolean":data=new Boolean();break;case "int":case "i4":case "double":data=new Number();break;case "string":data=new String();break;case "base64":data=new Base64();break;}return data;};
function HashTool(){};HashTool.encodeString=function(value){if(clean_environment.hashAlgorithm.toLowerCase()=="md5")return hex_md5(value);else return hex_sha1(value);};HashTool.encodeQuery=function(query){var result="";var values=query.split("&");for(var i=0; i<values.length;++i){var value=values[i].split("=");result+=(value[0]+"="+this.encodeString(value[1]))+"&";}return result.substr(0,(result.length-1));};
function HistoryTool(){};HistoryTool.IFRAME="clean_ajax_HistoryTool_iframe";HistoryTool.last=null;HistoryTool.hashTable={};HistoryTool.hackOpera=false;HistoryTool.save=function(doc,consumer){try {HistoryTool.last=(new Date()).getTime();HistoryTool.hashTable[HistoryTool.last]={ doc:doc,consumer:consumer };var iterator=new DomIterator(doc);var cache=window.cleanHistoryFrame.contentWindow.document;if(window.cleanHistoryFrame!=null){if(clean_environment.userAgent.isSafari||clean_environment.userAgent.isChrome){cache.forms[0].elements[0].value="key="+HistoryTool.last+"&value="+iterator.getValue(consumer);cache.forms[0].action="#?last="+HistoryTool.last;cache.forms[0].submit();}else {var html="<html><head></head><body>";html+="<div id='key'>"+HistoryTool.last+"</div>";html+="<div id='value'>"+iterator.getValue(consumer)+"</div>";if(clean_environment.userAgent.isOpera)html+="<img src=\"javascript:location.href='javascript:parent.opera.iframeOnLoadHack();';\">";html+="</body></html>";cache.open();cache.write(html);cache.close();}}}catch(e){Engine.reportException(null,e);}};HistoryTool.load=function(field){var value=HistoryTool.last;try {if(window.cleanHistoryFrame!=null){var cache=window.cleanHistoryFrame.contentWindow.document;if(clean_environment.userAgent.isSafari||clean_environment.userAgent.isChrome){var data=cache.forms[0].elements[0].value;if(data!=null){data=data.split("&");for(var cnt=0; cnt<data.length;++cnt){if(data[cnt].indexOf(field)!=-1){value=data[cnt].split("=")[1];break;}}}} else{var el=cache.getElementById(field);if(el!=null)value=el.innerHTML;}}return value;}catch(e){Engine.reportException(null,e);}};HistoryTool.change=function(){try {var key=HistoryTool.load("key");if((key!=HistoryTool.last)&&(HistoryTool.last!=null)){HistoryTool.last=key;var iterator=new DomIterator(HistoryTool.hashTable[HistoryTool.last].doc);iterator.applyValue(HistoryTool.hashTable[HistoryTool.last].consumer,HistoryTool.load("value"),true);}}catch(e){/*Ignore the exception*/}};HistoryTool.install=function(){var iframe=document.createElement("iframe");iframe.name=HistoryTool.IFRAME;iframe.id=HistoryTool.IFRAME;iframe.style.display="none";document.body.appendChild(iframe);window.cleanHistoryFrame=iframe;if(clean_environment.userAgent.isMsie){window.cleanHistoryFrame.onreadystatechange=function(){if (window.cleanHistoryFrame.readyState=="complete"){HistoryTool.change();}};}else if(clean_environment.userAgent.isMozilla){window.cleanHistoryFrame.onload=function(){HistoryTool.change();};}else if(clean_environment.userAgent.isOpera){window.opera.iframeOnLoadHack=function(){HistoryTool.change();};}else if(clean_environment.userAgent.isSafari||clean_environment.userAgent.isChrome){window.cleanHistoryFrame.src=clean_environment.cleanPath+"resources/form-cache.html";}};
function ParserTool(){};ParserTool.formToUrl=function(form){var url="";try {for(var i=0; i<form.elements.length;++i){if(form.elements[i].type!=null)switch(form.elements[i].type.toLowerCase()){case "button":case "reset":break;case "radio":case "checkbox":if(form.elements[i].checked)url+=form.elements[i].name+"="+escape(form.elements[i].value)+"&";break;case "select-one":url+=form.elements[i].name+"="+escape(form.elements[i].options[form.elements[i].selectedIndex].value)+"&";break;case "select-multiple":for(var v=0; v<form.elements[i].options.length;++v){if(form.elements[i].options[v].selected)url+=form.elements[i].name+"="+escape(form.elements[i].options[v].value)+"&";}break;default:url+=form.elements[i].name+"="+escape(form.elements[i].value)+"&";break;}}url=url.substr(0,(url.length-1));return url;}catch(e){Engine.reportException(null,e);}};ParserTool.jsToTraceRegister=function(value,id,is_text){try {txt=(id!=null)?"<div class='hide' id='"+id+"'>":"<div>";if(is_text)txt+="<textarea cols='40' rows='8' wrap='off'>"+value.replace(/\t/g,"")+"</textarea>";else if(typeof value=="object")for(var i in value){txt+="<p><b>"+i+"</b>="+value[i]+"</p>";}else txt+="<p>"+value+"</p>";return txt+="</div>" ;}catch(e){Engine.reportException(null,e);}};
function XPathTool(){};XPathTool.evaluate=function(expression,doc){try {var result=new Array();if(typeof doc.evaluate!="undefined"){var xpathResult=doc.evaluate(expression,doc,null,XPathResult.ANY_TYPE,null);var node=xpathResult.iterateNext();while(node){result.push(node);node=xpathResult.iterateNext();}}else {if(typeof xpathDomEval=="undefined")importLibrary(clean_environment.libraries.ajaxslt);var xpathResult=xpathDomEval(expression,doc);result=xpathResult.value;}return result;}catch(e){Engine.reportException(null,e);}};
function XsltTool(){};XsltTool.transform=function(origin,style){try {if(typeof XSLTProcessor!="undefined"){var proc=new XSLTProcessor();proc.importStylesheet(style);return (new XMLSerializer()).serializeToString(proc.transformToDocument(origin));}else if(window.ActiveXObject!=null){var proc=Engine.buildActiveX(Engine.ACTIVEX_DOM);proc.async="false";proc.load(origin);return proc.transformNode(style);}else{importLibrary(clean_environment.libraries.ajaxslt);return xsltProcess(origin,style);}}catch(e){Engine.reportException(null,e);}};