if(typeof(XML)=='undefined')XML=function(){};XML.ObjTree=function(){return this;};XML.ObjTree.VERSION="0.24";XML.ObjTree.prototype.xmlDecl='<?xml version="1.0" encoding="UTF-8" ?>\n';XML.ObjTree.prototype.attr_prefix='-';XML.ObjTree.prototype.overrideMimeType='text/xml';XML.ObjTree.prototype.parseXML=function(xml){var root;if(window.DOMParser){var xmldom=new DOMParser();var dom=xmldom.parseFromString(xml,"application/xml");if(!dom)return;root=dom.documentElement;}else if(window.ActiveXObject){xmldom=new ActiveXObject('Microsoft.XMLDOM');xmldom.async=false;xmldom.loadXML(xml);root=xmldom.documentElement;}
if(!root)return;return this.parseDOM(root);};XML.ObjTree.prototype.parseHTTP=function(url,options,callback){var myopt={};for(var key in options){myopt[key]=options[key];}
if(!myopt.method){if(typeof(myopt.postBody)=="undefined"&&typeof(myopt.postbody)=="undefined"&&typeof(myopt.parameters)=="undefined"){myopt.method="get";}else{myopt.method="post";}}
if(callback){myopt.asynchronous=true;var __this=this;var __func=callback;var __save=myopt.onComplete;myopt.onComplete=function(trans){var tree;if(trans&&trans.responseXML&&trans.responseXML.documentElement){tree=__this.parseDOM(trans.responseXML.documentElement);}else if(trans&&trans.responseText){tree=__this.parseXML(trans.responseText);}
__func(tree,trans);if(__save)__save(trans);};}else{myopt.asynchronous=false;}
var trans;if(typeof(HTTP)!="undefined"&&HTTP.Request){myopt.uri=url;var req=new HTTP.Request(myopt);if(req)trans=req.transport;}else if(typeof(Ajax)!="undefined"&&Ajax.Request){var req=new Ajax.Request(url,myopt);if(req)trans=req.transport;}
if(callback)return trans;if(trans&&trans.responseXML&&trans.responseXML.documentElement){return this.parseDOM(trans.responseXML.documentElement);}else if(trans&&trans.responseText){return this.parseXML(trans.responseText);}}
XML.ObjTree.prototype.parseDOM=function(root){if(!root)return;this.__force_array={};if(this.force_array){for(var i=0;i<this.force_array.length;i++){this.__force_array[this.force_array[i]]=1;}}
var json=this.parseElement(root);if(this.__force_array[root.nodeName]){json=[json];}
if(root.nodeType!=11){var tmp={};tmp[root.nodeName]=json;json=tmp;}
return json;};XML.ObjTree.prototype.parseElement=function(elem){if(elem.nodeType==7){return;}
if(elem.nodeType==3||elem.nodeType==4){var bool=elem.nodeValue.match(/[^\x00-\x20]/);if(bool==null)return;return elem.nodeValue;}
var retval;var cnt={};if(elem.attributes&&elem.attributes.length){retval={};for(var i=0;i<elem.attributes.length;i++){var key=elem.attributes[i].nodeName;if(typeof(key)!="string")continue;var val=elem.attributes[i].nodeValue;if(!val)continue;key=this.attr_prefix+key;if(typeof(cnt[key])=="undefined")cnt[key]=0;cnt[key]++;this.addNode(retval,key,cnt[key],val);}}
if(elem.childNodes&&elem.childNodes.length){var textonly=true;if(retval)textonly=false;for(var i=0;i<elem.childNodes.length&&textonly;i++){var ntype=elem.childNodes[i].nodeType;if(ntype==3||ntype==4)continue;textonly=false;}
if(textonly){if(!retval)retval="";for(var i=0;i<elem.childNodes.length;i++){retval+=elem.childNodes[i].nodeValue;}}else{if(!retval)retval={};for(var i=0;i<elem.childNodes.length;i++){var key=elem.childNodes[i].nodeName;if(typeof(key)!="string")continue;var val=this.parseElement(elem.childNodes[i]);if(!val)continue;if(typeof(cnt[key])=="undefined")cnt[key]=0;cnt[key]++;this.addNode(retval,key,cnt[key],val);}}}
return retval;};XML.ObjTree.prototype.addNode=function(hash,key,cnts,val){if(this.__force_array[key]){if(cnts==1)hash[key]=[];hash[key][hash[key].length]=val;}else if(cnts==1){hash[key]=val;}else if(cnts==2){hash[key]=[hash[key],val];}else{hash[key][hash[key].length]=val;}};XML.ObjTree.prototype.writeXML=function(tree){var xml=this.hash_to_xml(null,tree);return this.xmlDecl+xml;};XML.ObjTree.prototype.hash_to_xml=function(name,tree){var elem=[];var attr=[];for(var key in tree){if(!tree.hasOwnProperty(key))continue;var val=tree[key];if(key.charAt(0)!=this.attr_prefix){if(typeof(val)=="undefined"||val==null){elem[elem.length]="<"+key+" />";}else if(typeof(val)=="object"&&val.constructor==Array){elem[elem.length]=this.array_to_xml(key,val);}else if(typeof(val)=="object"){elem[elem.length]=this.hash_to_xml(key,val);}else{elem[elem.length]=this.scalar_to_xml(key,val);}}else{attr[attr.length]=" "+(key.substring(1))+'="'+(this.xml_escape(val))+'"';}}
var jattr=attr.join("");var jelem=elem.join("");if(typeof(name)=="undefined"||name==null){}else if(elem.length>0){if(jelem.match(/\n/)){jelem="<"+name+jattr+">\n"+jelem+"</"+name+">\n";}else{jelem="<"+name+jattr+">"+jelem+"</"+name+">\n";}}else{jelem="<"+name+jattr+" />\n";}
return jelem;};XML.ObjTree.prototype.array_to_xml=function(name,array){var out=[];for(var i=0;i<array.length;i++){var val=array[i];if(typeof(val)=="undefined"||val==null){out[out.length]="<"+name+" />";}else if(typeof(val)=="object"&&val.constructor==Array){out[out.length]=this.array_to_xml(name,val);}else if(typeof(val)=="object"){out[out.length]=this.hash_to_xml(name,val);}else{out[out.length]=this.scalar_to_xml(name,val);}}
return out.join("");};XML.ObjTree.prototype.scalar_to_xml=function(name,text){if(name=="#text"){return this.xml_escape(text);}else{return"<"+name+">"+this.xml_escape(text)+"</"+name+">\n";}};XML.ObjTree.prototype.xml_escape=function(text){return String(text).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');};if(typeof(Method)=="undefined"){Method={};}
if(typeof(Method["bind"])=="undefined"){Method.bind=function(method,object){return function(){method.apply(object,arguments);}};}
if(typeof(HTTP)=="undefined"){HTTP={};}
if(typeof(HTTP.Request)=="undefined"){HTTP.Request=function(options){if(!options)options={};this.options={};for(var i in options){this.setOption(i,options[i]);}
if(this.getOption("method")==undefined){this.setOption("method","post");}
if(this.getOption("asynchronous")==undefined){this.setOption("asynchronous",true);}
if(this.getOption("parameters")==undefined){this.setOption("parameters","");}
if(this.getOption("transport")==undefined){this.setOption("transport",HTTP.Request.Transport);}
if(this.getOption("uri"))
this.request();};HTTP.Request.EventNames=["uninitialized"
,"loading"
,"loaded"
,"interactive"
,"complete"];HTTP.Request.prototype.getOption=function(name){if(typeof(name)!="string"){return;}
return this.options[name.toLowerCase()];};HTTP.Request.prototype.setOption=function(name,value){if(typeof(name)!="string"){return;}
name=name.toLowerCase();this.options[name]=value;if(name=="method"){if(!(this.options.method=="get"||this.options.method=="post"||this.options.method=="head")){this.options.method="post";}}
if(name=="transport"){if(typeof(value)!="function"){this.options.transport=HTTP.Request.Transport;}}};HTTP.Request.prototype.request=function(uri){if(!uri)uri=this.getOption("uri");if(!uri)return;var parameters=this.getOption("parameters");if(parameters.length>0)parameters+="&_=";var method=this.getOption("method");if(method=="get"){uri+="?"+parameters;}
this.transport=new(this.getOption("transport"))();var async=this.getOption("asynchronous");this.transport.open(method,uri,async);if(async){this.transport.onreadystatechange=Method.bind(this.onStateChange,this);setTimeout(Method.bind(function(){this.respondToReadyState(1)}
,this)
,10);}
this.setRequestHeaders();if(method=="post"){var body=this.getOption("postbody");if(!body)body=parameters;this.transport.send(body);}
else{this.transport.send(null);}};HTTP.Request.prototype.setRequestHeaders=function(){this.transport.setRequestHeader("X-Requested-With","HTTP.Request");this.transport.setRequestHeader("X-HTTP-Request-Version",HTTP.Request.VERSION);if(this.getOption("method")=="post"){this.transport.setRequestHeader("Content-type","application/x-www-form-urlencoded");if(this.transport.overrideMimeType){this.transport.setRequestHeader("Connection","close");}}};HTTP.Request.prototype.isSuccess=function(){return this.transport.status==undefined
||this.transport.status==0
||(this.transport.status>=200&&this.transport.status<300);};HTTP.Request.prototype.onStateChange=function(){var readyState=this.transport.readyState;if(readyState!=1){this.respondToReadyState(this.transport.readyState);}};HTTP.Request.prototype.respondToReadyState=function(readyState){var event=HTTP.Request.EventNames[readyState];if(event=="complete"){var func=this.getOption("on"+this.transport.status);if(!func){if(this.isSuccess()){func=this.getOption("onsuccess");}
else{func=this.getOption("onfailure");}}
if(func){(func)(this.transport);}}
if(this.getOption("on"+event))
(this.getOption("on"+event))(this.transport);if(event=="complete"){this.transport.onreadystatechange=function(){};}};HTTP.Request.VERSION=0.03;}
if(typeof(HTTP.Request.Transport)=="undefined"){if(window.XMLHttpRequest){HTTP.Request.Transport=window.XMLHttpRequest;}
else if(window.ActiveXObject&&window.clipboardData){var msxmls=new Array("Msxml2.XMLHTTP.5.0"
,"Msxml2.XMLHTTP.4.0"
,"Msxml2.XMLHTTP.3.0"
,"Msxml2.XMLHTTP"
,"Microsoft.XMLHTTP");for(var i=0;i<msxmls.length;i++){try{new ActiveXObject(msxmls[i]);HTTP.Request.Transport=function(){return new ActiveXObject(msxmls[i]);};break;}
catch(e){}}}
if(typeof(HTTP.Request.Transport)=="undefined"){}
if(typeof(HTTP.Request.Transport)=="undefined"){throw new Error("Unable to locate XMLHttpRequest or other HTTP transport mechanism");}}
