
function xpathLog(msg){};function xsltLog(msg){};function xsltLogXml(msg){};function assert(b){if(!b){throw"Assertion failed";}}
function stringSplit(s,c){var a=s.indexOf(c);if(a==-1){return[s];}
var parts=[];parts.push(s.substr(0,a));while(a!=-1){var a1=s.indexOf(c,a+1);if(a1!=-1){parts.push(s.substr(a+1,a1-a-1));}else{parts.push(s.substr(a+1));}
a=a1;}
return parts;}
function xmlImportNode(doc,node){if(node.nodeType==DOM_TEXT_NODE){return domCreateTextNode(doc,node.nodeValue);}else if(node.nodeType==DOM_CDATA_SECTION_NODE){return domCreateCDATASection(doc,node.nodeValue);}else if(node.nodeType==DOM_ELEMENT_NODE){var newNode=domCreateElement(doc,node.nodeName);for(var i=0;i<node.attributes.length;++i){var an=node.attributes[i];var name=an.nodeName;var value=an.nodeValue;domSetAttribute(newNode,name,value);}
for(var c=node.firstChild;c;c=c.nextSibling){var cn=arguments.callee(doc,c);domAppendChild(newNode,cn);}
return newNode;}else{return domCreateComment(doc,node.nodeName);}}
function Set(){this.keys=[];}
Set.prototype.size=function(){return this.keys.length;}
Set.prototype.add=function(key,opt_value){var value=opt_value||1;if(!this.contains(key)){this[':'+key]=value;this.keys.push(key);}}
Set.prototype.set=function(key,opt_value){var value=opt_value||1;if(!this.contains(key)){this[':'+key]=value;this.keys.push(key);}else{this[':'+key]=value;}}
Set.prototype.inc=function(key){if(!this.contains(key)){this[':'+key]=1;this.keys.push(key);}else{this[':'+key]++;}}
Set.prototype.get=function(key){if(this.contains(key)){return this[':'+key];}else{var undefined;return undefined;}}
Set.prototype.remove=function(key){if(this.contains(key)){delete this[':'+key];removeFromArray(this.keys,key,true);}}
Set.prototype.contains=function(entry){return typeof this[':'+entry]!='undefined';}
Set.prototype.items=function(){var list=[];for(var i=0;i<this.keys.length;++i){var k=this.keys[i];var v=this[':'+k];list.push(v);}
return list;}
Set.prototype.map=function(f){for(var i=0;i<this.keys.length;++i){var k=this.keys[i];f.call(this,k,this[':'+k]);}}
Set.prototype.clear=function(){for(var i=0;i<this.keys.length;++i){delete this[':'+this.keys[i]];}
this.keys.length=0;}
function mapExec(array,func){for(var i=0;i<array.length;++i){func.call(this,array[i],i);}}
function mapExpr(array,func){var ret=[];for(var i=0;i<array.length;++i){ret.push(func(array[i]));}
return ret;};function reverseInplace(array){for(var i=0;i<array.length/2;++i){var h=array[i];var ii=array.length-i-1;array[i]=array[ii];array[ii]=h;}}
function removeFromArray(array,value,opt_notype){var shift=0;for(var i=0;i<array.length;++i){if(array[i]===value||(opt_notype&&array[i]==value)){array.splice(i--,1);shift++;}}
return shift;}
function copyArray(dst,src){for(var i=0;i<src.length;++i){dst.push(src[i]);}}
function xmlValue(node){if(!node){return'';}
var ret='';if(node.nodeType==DOM_TEXT_NODE||node.nodeType==DOM_CDATA_SECTION_NODE||node.nodeType==DOM_ATTRIBUTE_NODE){ret+=node.nodeValue;}else if(node.nodeType==DOM_ELEMENT_NODE||node.nodeType==DOM_DOCUMENT_NODE||node.nodeType==DOM_DOCUMENT_FRAGMENT_NODE){for(var i=0;i<node.childNodes.length;++i){ret+=arguments.callee(node.childNodes[i]);}}
return ret;}
function xmlText(node,opt_cdata){var buf=[];xmlTextR(node,buf,opt_cdata);return buf.join('');}
function xmlTextR(node,buf,cdata){if(node.nodeType==DOM_TEXT_NODE){buf.push(xmlEscapeText(node.nodeValue));}else if(node.nodeType==DOM_CDATA_SECTION_NODE){if(cdata){buf.push(node.nodeValue);}else{buf.push('<![CDATA['+node.nodeValue+']]>');}}else if(node.nodeType==DOM_COMMENT_NODE){buf.push('<!--'+node.nodeValue+'-->');}else if(node.nodeType==DOM_ELEMENT_NODE){buf.push('<'+xmlFullNodeName(node));for(var i=0;i<node.attributes.length;++i){var a=node.attributes[i];if(a&&a.nodeName&&a.nodeValue){buf.push(' '+xmlFullNodeName(a)+'="'+
xmlEscapeAttr(a.nodeValue)+'"');}}
if(node.childNodes.length==0){buf.push('/>');}else{buf.push('>');for(var i=0;i<node.childNodes.length;++i){arguments.callee(node.childNodes[i],buf,cdata);}
buf.push('</'+xmlFullNodeName(node)+'>');}}else if(node.nodeType==DOM_DOCUMENT_NODE||node.nodeType==DOM_DOCUMENT_FRAGMENT_NODE){for(var i=0;i<node.childNodes.length;++i){arguments.callee(node.childNodes[i],buf,cdata);}}}
function xmlFullNodeName(n){if(n.prefix&&n.nodeName.indexOf(n.prefix+':')!=0){return n.prefix+':'+n.nodeName;}else{return n.nodeName;}}
function xmlEscapeText(s){return(''+s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');}
function xmlEscapeAttr(s){return xmlEscapeText(s).replace(/\"/g,'&quot;');}
function xmlEscapeTags(s){return s.replace(/</g,'&lt;').replace(/>/g,'&gt;');}
function xmlOwnerDocument(node){if(node.nodeType==DOM_DOCUMENT_NODE){return node;}else{return node.ownerDocument;}}
function domGetAttribute(node,name){return node.getAttribute(name);}
function domSetAttribute(node,name,value){return node.setAttribute(name,value);}
function domRemoveAttribute(node,name){return node.removeAttribute(name);}
function domAppendChild(node,child){return node.appendChild(child);}
function domRemoveChild(node,child){return node.removeChild(child);}
function domReplaceChild(node,newChild,oldChild){return node.replaceChild(newChild,oldChild);}
function domInsertBefore(node,newChild,oldChild){return node.insertBefore(newChild,oldChild);}
function domRemoveNode(node){return domRemoveChild(node.parentNode,node);}
function domCreateTextNode(doc,text){return doc.createTextNode(text);}
function domCreateElement(doc,name){return doc.createElement(name);}
function domCreateAttribute(doc,name){return doc.createAttribute(name);}
function domCreateCDATASection(doc,data){return doc.createCDATASection(data);}
function domCreateComment(doc,text){return doc.createComment(text);}
function domCreateDocumentFragment(doc){return doc.createDocumentFragment();}
function domGetElementById(doc,id){return doc.getElementById(id);}
function windowSetInterval(win,fun,time){return win.setInterval(fun,time);}
function windowClearInterval(win,id){return win.clearInterval(id);}