function xml2json(f,h){var g={toObj:function(m){var b={};if(m.nodeType==1){if(m.attributes.length){for(var c=0;c<m.attributes.length;c++){b["$"+m.attributes[c].nodeName]=(m.attributes[c].nodeValue||"").toString();}}if(m.firstChild){var n=0,d=0,i=false;for(var a=m.firstChild;a;a=a.nextSibling){if(a.nodeType==1){i=true;}else{if(a.nodeType==3&&a.nodeValue.match(/[^ \f\n\r\t\v]/)){n++;}else{if(a.nodeType==4){d++;}}}}if(i){if(n<2&&d<2){g.removeWhite(m);for(var a=m.firstChild;a;a=a.nextSibling){if(a.nodeType==3){b["#text"]=g.escape(a.nodeValue);}else{if(a.nodeType==4){b["#cdata"]=g.escape(a.nodeValue);}else{if(b[a.nodeName]){if(b[a.nodeName] instanceof Array){b[a.nodeName][b[a.nodeName].length]=g.toObj(a);}else{b[a.nodeName]=[b[a.nodeName],g.toObj(a)];}}else{b[a.nodeName]=g.toObj(a);}}}}}else{if(!m.attributes.length){b=g.escape(g.innerXml(m));}else{b["#text"]=g.escape(g.innerXml(m));}}}else{if(n){if(!m.attributes.length){b=g.escape(g.innerXml(m));}else{b["#text"]=g.escape(g.innerXml(m));}}else{if(d){if(d>1){b=g.escape(g.innerXml(m));}else{for(var a=m.firstChild;a;a=a.nextSibling){b["#cdata"]=g.escape(a.nodeValue);}}}}}}if(!m.attributes.length&&!m.firstChild){b=null;}}else{if(m.nodeType==9){b=g.toObj(m.documentElement);}else{alert("unhandled node type: "+m.nodeName+" "+m.nodeType);}}return b;},toJson:function(a,i,b){var c=i?('"'+i+'"'):"";if(a instanceof Array){for(var d=0,o=a.length;d<o;d++){a[d]=g.toJson(a[d],"",b+"\t");}c+=(i?":[":"[")+(a.length>1?("\n"+b+"\t"+a.join(",\n"+b+"\t")+"\n"+b):a.join(""))+"]";}else{if(a==null){c+=(i&&":")+"null";}else{if(typeof(a)=="object"){var m=[];for(var n in a){m[m.length]=g.toJson(a[n],n,b+"\t");}c+=(i?":{":"{")+(m.length>1?("\n"+b+"\t"+m.join(",\n"+b+"\t")+"\n"+b):m.join(""))+"}";}else{if(typeof(a)=="string"){c+=(i&&":")+'"'+a.toString()+'"';}else{c+=(i&&":")+a.toString();}}}}return c;},innerXml:function(b){var c="";if("innerHTML" in b){c=b.innerHTML;}else{var d=function(i){var o="";if(i.nodeType==1){o+="<"+i.nodeName;for(var p=0;p<i.attributes.length;p++){o+=" "+i.attributes[p].nodeName+'="'+(i.attributes[p].nodeValue||"").toString()+'"';}if(i.firstChild){o+=">";for(var n=i.firstChild;n;n=n.nextSibling){o+=d(n);}o+="</"+i.nodeName+">";}else{o+="/>";}}else{if(i.nodeType==3){o+=i.nodeValue;}else{if(i.nodeType==4){o+="<![CDATA["+i.nodeValue+"]]>";}}}return o;};for(var a=b.firstChild;a;a=a.nextSibling){c+=d(a);}}return c;},escape:function(a){return a.replace(/[\\]/g,"\\\\").replace(/[\"]/g,'\\"').replace(/[\n]/g,"\\n").replace(/[\r]/g,"\\r");},removeWhite:function(b){b.normalize();for(var a=b.firstChild;a;){if(a.nodeType==3){if(!a.nodeValue.match(/[^ \f\n\r\t\v]/)){var c=a.nextSibling;b.removeChild(a);a=c;}else{a=a.nextSibling;}}else{if(a.nodeType==1){g.removeWhite(a);a=a.nextSibling;}else{a=a.nextSibling;}}}return b;}};if(f.nodeType==9){f=f.documentElement;}var e=g.toJson(g.toObj(g.removeWhite(f)),f.nodeName,"\t");return"{\n"+h+(h?e.replace(/\t/g,h):e.replace(/\t|\n/g,""))+"\n}";}
