function SOAPClientParameters(){var _pl=new Array();this.add=function(name,value){_pl[name]=value;return this;};this.toXml=function(){var xml="";for(var p in _pl){switch(typeof(_pl[p])){case "string":case "number":case "boolean":case "object":xml+="<"+p+">"+SOAPClientParameters._serialize(_pl[p])+"</"+p+">";break;default:break;}}return xml;}};SOAPClientParameters._serialize=function(o){var s="";switch(typeof(o)){case "string":s+=o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");break;case "number":case "boolean":s+=o.toString();break;case "object":if(o.constructor.toString().indexOf("function Date()")> -1){var year=o.getFullYear().toString();var month=(o.getMonth()+1).toString();month=(month.length==1)?"0"+month:month;var date=o.getDate().toString();date=(date.length==1)?"0"+date:date;var hours=o.getHours().toString();hours=(hours.length==1)?"0"+hours:hours;var minutes=o.getMinutes().toString();minutes=(minutes.length==1)?"0"+minutes:minutes;var seconds=o.getSeconds().toString();seconds=(seconds.length==1)?"0"+seconds:seconds;var milliseconds=o.getMilliseconds().toString();var tzminutes=Math.abs(o.getTimezoneOffset());var tzhours=0;while(tzminutes>=60){tzhours++;tzminutes-=60;}tzminutes=(tzminutes.toString().length==1)?"0"+tzminutes.toString():tzminutes.toString();tzhours=(tzhours.toString().length==1)?"0"+tzhours.toString():tzhours.toString();var timezone=((o.getTimezoneOffset()<0)?"+":"-")+tzhours+":"+tzminutes;s+=year+"-"+month+"-"+date+"T"+hours+":"+minutes+":"+seconds+"."+milliseconds+timezone;}else if(o.constructor.toString().indexOf("function Array()")> -1){for(var p in o){if(!isNaN(p)){(/function\s+(\w*)\s*\(/ig).exec(o[p].constructor.toString());var type=RegExp.$1;switch(type){case "":type=typeof(o[p]);case "String":type="string";break;case "Number":type="int";break;case "Boolean":type="bool";break;case "Date":type="DateTime";break;}s+="<"+type+">"+SOAPClientParameters._serialize(o[p])+"</"+type+">"}else s+="<"+p+">"+SOAPClientParameters._serialize(o[p])+"</"+p+">"}}else for(var p in o)s+="<"+p+">"+SOAPClientParameters._serialize(o[p])+"</"+p+">";break;default:break;}return s;};function SOAPClient(){};SOAPClient.username=null;SOAPClient.password=null;SOAPClient.invoke=function(url,method,parameters,async,callback){if(async)SOAPClient._loadWsdl(url,method,parameters,async,callback);else return SOAPClient._loadWsdl(url,method,parameters,async,callback);};SOAPClient_cacheWsdl=new Array();SOAPClient._loadWsdl=function(url,method,parameters,async,callback){var wsdl=SOAPClient_cacheWsdl[url];if(wsdl&&typeof wsdl!="undefined")return SOAPClient._sendSoapRequest(url,method,parameters,async,callback,wsdl);var xmlHttp=SOAPClient._getXmlHttp();xmlHttp.open("GET",url+"?wsdl",async);if(async){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4)SOAPClient._onLoadWsdl(url,method,parameters,async,callback,xmlHttp);}}xmlHttp.send(null);if(!async)return SOAPClient._onLoadWsdl(url,method,parameters,async,callback,xmlHttp);};SOAPClient._onLoadWsdl=function(url,method,parameters,async,callback,req){var wsdl=req.responseXML;SOAPClient_cacheWsdl[url]=wsdl;return SOAPClient._sendSoapRequest(url,method,parameters,async,callback,wsdl);};SOAPClient._sendSoapRequest=function(url,method,parameters,async,callback,wsdl){var ns=(wsdl.documentElement.attributes["targetNamespace"]+""=="undefined")?wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue:wsdl.documentElement.attributes["targetNamespace"].value;var sr="<?xml version=\"1.0\" encoding=\"utf-8\"?>"+"<soap:Envelope "+"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "+"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "+"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"+"<soap:Body>"+"<"+method+" xmlns=\""+ns+"\">"+parameters.toXml()+"</"+method+"></soap:Body></soap:Envelope>";var xmlHttp=SOAPClient._getXmlHttp();if(SOAPClient.userName&&SOAPClient.password){xmlHttp.open("POST",url,async,SOAPClient.userName,SOAPClient.password);xmlHttp.setRequestHeader("Authorization","Basic "+SOAPClient._toBase64(SOAPClient.userName+":"+SOAPClient.password));}else xmlHttp.open("POST",url,async);var soapaction=((ns.lastIndexOf("/")!=ns.length-1)?ns+"/":ns)+method;xmlHttp.setRequestHeader("SOAPAction",soapaction);xmlHttp.setRequestHeader("Content-Type","text/xml; charset=utf-8");if(async){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4)SOAPClient._onSendSoapRequest(method,async,callback,wsdl,xmlHttp);}}xmlHttp.send(sr);if(!async)return SOAPClient._onSendSoapRequest(method,async,callback,wsdl,xmlHttp);};SOAPClient._onSendSoapRequest=function(method,async,callback,wsdl,req){var o=null;var nd=SOAPClient._getElementsByTagName(req.responseXML,method+"Result");if(nd.length==0)nd=SOAPClient._getElementsByTagName(req.responseXML,"return");if(nd.length==0){if(req.responseXML.getElementsByTagName("faultcode").length>0){if(async||callback)o=new Error(500,req.responseXML.getElementsByTagName("faultstring")[0].childNodes[0].nodeValue);else throw new Error(500,req.responseXML.getElementsByTagName("faultstring")[0].childNodes[0].nodeValue);}}else o=SOAPClient._soapresult2object(nd[0],wsdl);if(callback)callback(o,req.responseXML);if(!async)return o;};SOAPClient._soapresult2object=function(node,wsdl){var wsdlTypes=SOAPClient._getTypesFromWsdl(wsdl);return SOAPClient._node2object(node,wsdlTypes);};SOAPClient._node2object=function(node,wsdlTypes){if(node==null)return null;if(node.nodeType==3||node.nodeType==4)return SOAPClient._extractValue(node,wsdlTypes);if(node.childNodes.length==1&&(node.childNodes[0].nodeType==3||node.childNodes[0].nodeType==4))return SOAPClient._node2object(node.childNodes[0],wsdlTypes);var isarray=SOAPClient._getTypeFromWsdl(node.nodeName,wsdlTypes).toLowerCase().indexOf("arrayof")!= -1;if(!isarray){var obj=null;if(node.hasChildNodes())obj=new Object();for(var i=0;i<node.childNodes.length;i++){var p=SOAPClient._node2object(node.childNodes[i],wsdlTypes);obj[node.childNodes[i].nodeName]=p;}return obj;}else{var l=new Array();for(var i=0;i<node.childNodes.length;i++)l[l.length]=SOAPClient._node2object(node.childNodes[i],wsdlTypes);return l;}return null;};SOAPClient._extractValue=function(node,wsdlTypes){var value=node.nodeValue;switch(SOAPClient._getTypeFromWsdl(node.parentNode.nodeName,wsdlTypes).toLowerCase()){default:case "s:string":return(value!=null)?value+"":"";case "s:boolean":return value+""=="true";case "s:int":case "s:long":return(value!=null)?parseInt(value+"",10):0;case "s:double":return(value!=null)?parseFloat(value+""):0;case "s:datetime":if(value==null)return null;else{value=value+"";value=value.substring(0,(value.lastIndexOf(".")== -1?value.length:value.lastIndexOf(".")));value=value.replace(/T/gi," ");value=value.replace(/-/gi,"/");var d=new Date();d.setTime(Date.parse(value));return d;}}};SOAPClient._getTypesFromWsdl=function(wsdl){var wsdlTypes=new Array();var ell=wsdl.getElementsByTagName("s:element");var useNamedItem=true;if(ell.length==0){ell=wsdl.getElementsByTagName("element");useNamedItem=false;}for(var i=0;i<ell.length;i++){if(useNamedItem){if(ell[i].attributes.getNamedItem("name")!=null&&ell[i].attributes.getNamedItem("type")!=null)wsdlTypes[ell[i].attributes.getNamedItem("name").nodeValue]=ell[i].attributes.getNamedItem("type").nodeValue;}else{if(ell[i].attributes["name"]!=null&&ell[i].attributes["type"]!=null)wsdlTypes[ell[i].attributes["name"].value]=ell[i].attributes["type"].value;}}return wsdlTypes;};SOAPClient._getTypeFromWsdl=function(elementname,wsdlTypes){var type=wsdlTypes[elementname]+"";return(type=="undefined")?"":type;};SOAPClient._getElementsByTagName=function(document,tagName){try{return document.selectNodes(".//*[local-name()=\""+tagName+"\"]");}catch(ex){}return document.getElementsByTagName(tagName);};SOAPClient._getXmlHttp=function(){try{if(window.XMLHttpRequest){var req=new XMLHttpRequest();if(req.readyState==null){req.readyState=1;req.addEventListener("load",function(){req.readyState=4;if(typeof req.onreadystatechange=="function")req.onreadystatechange();},false);}return req;}if(window.ActiveXObject)return new ActiveXObject(SOAPClient._getXmlHttpProgID());}catch(ex){}throw new Error("Your browser does not support XmlHttp objects");};SOAPClient._getXmlHttpProgID=function(){if(SOAPClient._getXmlHttpProgID.progid)return SOAPClient._getXmlHttpProgID.progid;var progids=["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];var o;for(var i=0;i<progids.length;i++){try{o=new ActiveXObject(progids[i]);return SOAPClient._getXmlHttpProgID.progid=progids[i];}catch(ex){};}throw new Error("Could not find an installed XML parser");};SOAPClient._toBase64=function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);}while(i<input.length);return output;}
