var callTimeout = 3500; // milliseconds before timeout on callback
function wddxDeserializer_parseSimpleType (Contents) { var DataType = Contents.name; if (DataType == 'boolean') { return (Contents.attributes["value"]=='true'); } else { var Value = Contents.contents.length > 0 ? Contents.contents[0].value : ''; if (DataType == 'string') { if (Contents.contents.length > 1) { Value = ''; for (StrItem = 0; StrItem < Contents.contents.length; StrItem++) { if (Contents.contents[StrItem].type == 'chardata') Value = Value + Contents.contents[StrItem].value; else if (Contents.contents[StrItem].name == 'char') { Code = Contents.contents[StrItem].attributes["code"]; if      (Code == '0D') Value = Value + '\r'; else if (Code == '0C') Value = Value + '\f'; else if (Code == '0A') Value = Value + '\n'; else if (Code == '09') Value = Value + '\t'; } } } return Value; } else if (DataType == 'number') { return parseFloat(Value); } else if (DataType == 'null') { return null; } else if (DataType == 'dateTime') { var Value = splitAny(Value, 'T'); var dtDateParts = splitAny(Value[0], '-'); var NewDate; if ( (Value[1].indexOf('-') == -1) & (Value[1].indexOf('+') == -1) ) { var dtTimeParts = splitAny(Value[1], ':'); NewDate = new Date(dtDateParts[0], dtDateParts[1]-1, dtDateParts[2], dtTimeParts[0], dtTimeParts[1], dtTimeParts[2]); } else { if (Value[1].indexOf('-') > -1) dtTimeTZParts = splitAny(Value[1], '-'); else dtTimeTZParts = splitAny(Value[1], '+'); var dtTimeParts = splitAny(dtTimeTZParts[0], ':'); NewDate = new Date(dtDateParts[0], dtDateParts[1]-1, dtDateParts[2], dtTimeParts[0], dtTimeParts[1], dtTimeParts[2]); if (this.useTimezoneInfo == true) { var dtTZParts = splitAny(dtTimeTZParts[1], ':'); var dtOffsetHours = parseInt(dtTZParts[0]); var dtOffsetMins =  parseInt(dtTZParts[1]); if (Value[1].indexOf('-') > -1) { dtOffsetHours = this.timezoneOffsetHours - dtOffsetHours; dtOffsetMins  = this.timezoneOffsetMinutes - dtOffsetMins; } else { dtOffsetHours = this.timezoneOffsetHours + dtOffsetHours; dtOffsetMins  = this.timezoneOffsetMinutes + dtOffsetMins; } NewDate.setHours(NewDate.getHours() - dtOffsetHours); NewDate.setMinutes(NewDate.getMinutes() - dtOffsetMins); } } return NewDate; } } return null; } function wddxDeserializer_parseArray(ArrayAsWDDX) { var JSArray = new Array(); var ArrayLength = parseInt(ArrayAsWDDX.attributes["length"]); for (var Count = 0; Count < ArrayLength; Count++) { JSArray[Count] = this.parseElement(ArrayAsWDDX.contents[Count]); } return JSArray; } function wddxDeserializer_parseStruct(StructAsWDDX) { var JSObject; var StructLength = StructAsWDDX.contents.length; var bCustom = false; if (typeof(StructAsWDDX.attributes["type"]) == 'string') { var ConstructorTest = 'typeof(' +StructAsWDDX.attributes["type"]+ ')'; if ( eval(ConstructorTest) == 'function' ) bCustom = true; } if (bCustom) JSObject = eval('new '+ StructAsWDDX.attributes["type"]); else         JSObject = new Object; for (var Count = 0; Count < StructLength; Count++) { var StructIndex = (this.preserveVarCase == true) ? StructAsWDDX.contents[Count].attributes["name"] : (this.varCaseToUpper == true) ? StructAsWDDX.contents[Count].attributes["name"].toUpperCase() : StructAsWDDX.contents[Count].attributes["name"].toLowerCase(); JSObject[StructIndex] = this.parseElement(StructAsWDDX.contents[Count].contents[0]); } return JSObject; } function wddxDeserializer_parseRecordset(RSAsWDDX) { var RSInfo = RSAsWDDX; var RSColNames = RSInfo.attributes["fieldNames"].toLowerCase(); var RSCols = splitAny(RSColNames, ','); var RSRows = parseInt(RSInfo.attributes["rowCount"]); var ThisRS = new WddxRecordset(RSCols, RSRows); for (var ColNo = 0; ColNo < RSCols.length; ColNo++) { ThisCol = RSCols[ColNo]; ColArray = new Array(); for (var RowNo = 0; RowNo < RSRows; RowNo++) { ColArray[RowNo] = this.parseSimpleType(RSInfo.contents[ColNo].contents[RowNo]); } ThisRS[ThisCol] = ColArray; } return ThisRS; } function wddxDeserializer_parseElement(Element) { if (Element.name == 'recordset') { return this.parseRecordset(Element); } else if (Element.name == 'array') { return this.parseArray(Element); } else if (Element.name == 'struct') { return this.parseStruct(Element); } else if (Element.name == 'binary') { var Bin = new WddxBinary; Bin.encoding = (typeof(Element.attributes["encoding"]) == 'string') ? Element.attributes["encoding"] : 'base64'; if (this.preserveBinaryData) { Bin.data = (typeof(Element.contents[0].value) == 'string') ? Element.contents[0].value : ''; }; return Bin; } else { return this.parseSimpleType(Element); }; return ''; } function splitAny(String, Sep) { if (String.split) SplitArray = String.split(Sep); else SplitArray = splitOld(String, Sep); return SplitArray; } function joinAny(theArray, Sep) { if (theArray.join) JoinedString = theArray.join(Sep); else JoinedString = joinOld(theArray, Sep); return JoinedString; } function wddxDeserializer_deserialize(WDDXPacket) { this.varCaseToUpper = (this.defaultVarCase.toLowerCase() != 'lower'); this.topLevelDatatype = null; this.timezoneOffsetHours   = Math.round(this.timezoneOffset/60); this.timezoneOffsetMinutes = (this.timezoneOffset % 60); _Xparse_count = 0; var XMLRoot = Xparse(WDDXPacket); WDDXPacket = ''; for (var item = 0; item < XMLRoot.index.length; item++) { var ThisItem = XMLRoot.index[item]; if (ThisItem.name == 'data') { this.topLevelDatatype = ThisItem.contents[0].name; if (this.parseActualData == true) { return this.parseElement(ThisItem.contents[0]); break; } } } return null; } function wddxDeserializer_deserializeUrl(url) { var i, pipe, result, packet, posStart, posEnd; var tokStart = '<wddxPacket'; var tokEnd = '</wddxPacket>'; if (url.indexOf('http') != 0) { var ThisURL = window.location.href; var BaseURL = ThisURL.substring(0, ThisURL.lastIndexOf('/')); url = BaseURL + '/' + url; } for (i = 0; i < document.applets.length; i++) { if ( (typeof document.applets[i].getClass != 'undefined') && (document.applets[i].getClass() == 'class urlPipe') ) { pipe = document.applets[i]; pipe.catchPage = true; bAdded = false; if (typeof(this.urlData) == 'object') { for (prop in this.urlData) { pipe.addParam( escape(prop.toString()), escape(this.urlData[prop].toString()) ); bAdded = true; }; }; if (bAdded == false) pipe.addParam('dummyParam', 1); pipe.post( url ); packet = new String(pipe.getPage()); posStart = packet.indexOf(tokStart); posEnd = packet.indexOf(tokEnd, posStart); if (posEnd > posStart) { packet = packet.substring( posStart, (posEnd + tokEnd.length) ); result = this.deserialize(packet); } this.urlData = new Object; break; }; }; return result; }; function WddxDeserializer() { this.preserveVarCase = false; this.defaultVarCase  = 'upper'; this.preserveBinaryData = true; this.useTimezoneInfo = false; var TempDate = new Date; this.timezoneOffset = TempDate.getTimezoneOffset(); this.topLevelDatatype = null; this.parseActualData  = true; this.urlData = new Object; this.parseElement    = wddxDeserializer_parseElement; this.parseSimpleType = wddxDeserializer_parseSimpleType; this.parseArray      = wddxDeserializer_parseArray; this.parseStruct     = wddxDeserializer_parseStruct; this.parseRecordset  = wddxDeserializer_parseRecordset; this.deserialize     = wddxDeserializer_deserialize; this.deserializeUrl  = wddxDeserializer_deserializeUrl; this.implementation = 'JS'; } function WDDXDeserialize(Packet) { var Deser = new WddxDeserializer; return Deser.deserialize(Packet); } function _element() { this.type = "element"; this.name = new String(); this.attributes = new Array(); this.contents = new Array(); this.uid = _Xparse_count++; _Xparse_index[this.uid]=this; } function _chardata() { this.type = "chardata"; this.value = new String(); } function _pi() { this.type = "pi"; this.value = new String(); } function _comment() { this.type = "comment"; this.value = new String(); } function _frag() { this.str = new String(); this.ary = new Array(); this.end = new String(); } var _Xparse_count = 0; var _Xparse_index = new Array(); var _Xparse_isSplitSupported = ('Testing'.split && _Xparse_index.join); var _Xparse_isFromCharCodeSupported = ('Testing'.fromCharCode == 'function'); function Xparse(src) { var frag = new _frag(); frag.str = _prolog(src); var root = new _element(); root.name="ROOT"; frag = _compile(frag); root.contents = frag.ary; root.index = _Xparse_index; _Xparse_index = new Array(); return root; } function _compile(frag) { while(1) { if(frag.str.length == 0) { return frag; } var TagStart = frag.str.indexOf("<"); if(TagStart != 0) { var thisary = frag.ary.length; frag.ary[thisary] = new _chardata(); if(TagStart == -1) { frag.ary[thisary].value = _entity(frag.str); frag.str = ""; } else { frag.ary[thisary].value = _entity(frag.str.substring(0,TagStart)); frag.str = frag.str.substring(TagStart,frag.str.length); } } else { if(frag.str.substring(1,2) == "?") { frag = _tag_pi(frag); } else { if(frag.str.substring(1,4) == "!--") { frag = _tag_comment(frag); } else { if(frag.str.substring(1,9) == "![CDATA[") { frag = _tag_cdata(frag); } else { if(frag.str.substring(1,frag.end.length + 3) == "/" + frag.end + ">" || _strip(frag.str.substring(1,frag.end.length + 3)) == "/" + frag.end) { frag.str = frag.str.substring(frag.end.length + 3,frag.str.length); frag.end = ""; return frag; } else { frag = _tag_element(frag); } } } } } } return ""; } function _tag_element(frag) { var close = frag.str.indexOf(">"); var empty = (frag.str.substring(close - 1,close) == "/"); if(empty) { close -= 1; } var starttag = _normalize(frag.str.substring(1,close)); var nextspace = starttag.indexOf(" "); var attribs = new String(); var name = new String(); if(nextspace != -1) { name = starttag.substring(0,nextspace); attribs = starttag.substring(nextspace + 1,starttag.length); } else { name = starttag; } var thisary = frag.ary.length; frag.ary[thisary] = new _element(); frag.ary[thisary].name = _strip(name); if(attribs.length > 0) { frag.ary[thisary].attributes = _attribution(attribs); } if(!empty) { var contents = new _frag(); contents.str = frag.str.substring(close + 1,frag.str.length); contents.end = name; contents = _compile(contents); frag.ary[thisary].contents = contents.ary; frag.str = contents.str; } else { frag.str = frag.str.substring(close + 2,frag.str.length); } return frag; } function _tag_pi(frag) { var close = frag.str.indexOf("?>"); var val = frag.str.substring(2,close); var thisary = frag.ary.length; frag.ary[thisary] = new _pi(); frag.ary[thisary].value = val; frag.str = frag.str.substring(close + 2,frag.str.length); return frag; } function _tag_comment(frag) { var close = frag.str.indexOf("-->"); var val = frag.str.substring(4,close); var thisary = frag.ary.length; frag.ary[thisary] = new _comment(); frag.ary[thisary].value = val; frag.str = frag.str.substring(close + 3,frag.str.length); return frag; } function _tag_cdata(frag) { var close = frag.str.indexOf("]]>"); var val = frag.str.substring(9,close); var thisary = frag.ary.length; frag.ary[thisary] = new _chardata(); frag.ary[thisary].value = val; frag.str = frag.str.substring(close + 3,frag.str.length); return frag; } function _attribution(str) { var all = new Array(); while(1) { var eq = str.indexOf("="); if(str.length == 0 || eq == -1) { return all; } var id1 = str.indexOf("\'"); var id2 = str.indexOf("\""); var ids = new Number(); var id = new String(); if((id1 < id2 && id1 != -1) || id2 == -1) { ids = id1; id = "\'"; } if((id2 < id1 || id1 == -1) && id2 != -1) { ids = id2; id = "\""; } var nextid = str.indexOf(id,ids + 1); var val = str.substring(ids + 1,nextid); var name = _strip(str.substring(0,eq)); all[name] = _entity(val); str = str.substring(nextid + 1,str.length); } return ""; } function _prolog(str) { var A = new Array(); if (_Xparse_isSplitSupported) { A = str.split("\r\n"); str = A.join("\n"); A = str.split("\r"); str = A.join("\n"); } else { A = splitOld(str, "\r\n"); str = joinOld(A, "\n"); A = splitOld(str, "\r"); str = joinOld(A, "\n"); } var start = str.indexOf("<"); if(str.substring(start,start + 3) == "<?x" || str.substring(start,start + 3) == "<?X" ) { var close = str.indexOf("?>"); str = str.substring(close + 2,str.length); } var start = str.indexOf("<!DOCTYPE"); if(start != -1) { var close = str.indexOf(">",start) + 1; var dp = str.indexOf("[",start); if(dp < close && dp != -1) { close = str.indexOf("]>",start) + 2; } str = str.substring(close,str.length); } return str; } function _strip(str) { var A = new Array(); if (_Xparse_isSplitSupported) { A = str.split("\n"); str = A.join(""); A = str.split(" "); str = A.join(""); A = str.split("\t"); str = A.join(""); } else { A = splitOld(str, "\n"); str = joinOld(A, ""); A = splitOld(str, " "); str = joinOld(A, ""); A = splitOld(str, "\t"); str = joinOld(A, ""); } return str; } function _normalize(str) { var A = new Array(); if (_Xparse_isSplitSupported) { A = str.split("\n"); str = A.join(" "); A = str.split("\t"); str = A.join(" "); } else { A = splitOld(str, "\n"); str = joinOld(A, " "); A = splitOld(str, "\t"); str = joinOld(A, " "); } return str; } function _entity(str) { var A = new Array(); if (_Xparse_isSplitSupported) { A = str.split("&lt;"); str = A.join("<"); A = str.split("&gt;"); str = A.join(">"); A = str.split("&quot;"); str = A.join("\""); A = str.split("&apos;"); str = A.join("\'"); A = str.split("&amp;"); str = A.join("&"); while (str.indexOf('&#') > -1) { var pos1 = str.indexOf('&#'); var pos2 = str.indexOf(';', pos1); var ent = str.substring(pos1, pos2+1); var charNum = parseInt('0' + ent.substring(2)); if (charNum.valueOf() > 0) { if (_Xparse_isFromCharCodeSupported) thisChar = String.fromCharCode(charNum); else thisChar = '                                  !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.charAt(charNum); }; A = str.split(ent); str = A.join(thisChar); } } else { A = splitOld(str, "&lt;"); str = joinOld(A, "<"); A = splitOld(str, "&gt;"); str = joinOld(A, ">"); A = splitOld(str, "&quot;"); str = joinOld(A, "\""); A = splitOld(str, "&apos;"); str = joinOld(A, "\'"); A = splitOld(str, "&amp;"); str = joinOld(A, "&"); while (str.indexOf('&#') > -1) { var pos1 = str.indexOf('&#'); var pos2 = str.indexOf(';', pos1); var ent = str.substring(pos1, pos2+1); var charNum = parseInt('0' + ent.substring(2)); if (charNum.valueOf() > 0) { if (_Xparse_isFromCharCodeSupported) thisChar = String.fromCharCode(charNum); else thisChar = '                                  !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.charAt(charNum); }; A = splitOld(str, ent); str = joinOld(str, thisChar); } } return str; } function splitOld(String, Sep) { var NewArray = new Array; var Chunk = String; Sep = Sep.substring(0, 1); while (Chunk.indexOf(Sep) > -1) { NextSep = Chunk.indexOf(Sep); NewArray[NewArray.length] = Chunk.substring(0, NextSep); Chunk = Chunk.substring(NextSep+1); } NewArray[NewArray.length] = Chunk; return NewArray; } function joinOld(theArray, Sep) { Sep = Sep.substring(0, 1); if (theArray.length == 0) NewString = ''; else NewString = theArray[0]; for (var i = 1; i < theArray.length; i++) { NewString = NewString + Sep + theArray[i]; } return NewString; }
var paramString;var arr;var xmlhttp;var timeoutId;function createXMLHttp(){try{xmlhttp=new XMLHttpRequest();}catch(e){var MSXML_XMLHTTP_PROGIDS=new Array('MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');var success = false;for(var i=0;i<MSXML_XMLHTTP_PROGIDS.length && !success; i++){try {xmlhttp=new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]);success = true;}catch(e){}}if(!success){alert('Cant create XMLHttpRequest - not supported');}}}createXMLHttp();function handleResponse(){if(xmlhttp.readyState == 4){window.clearTimeout(timeoutId);deserialize(xmlhttp.responseText);}}function forceTerminate(){if((xmlhttp.readyState == 1)||(xmlhttp.readyState == 2)||(xmlhttp.readyState == 3)){xmlhttp.abort();window.clearTimeout(timeoutId);timeoutAction();}}function performCallback(paramString) {if ((xmlhttp.readyState == 0)||(xmlhttp.readyState == 4)){performOnCallback();xmlhttp.open('GET', paramString, true);xmlhttp.onreadystatechange = handleResponse;xmlhttp.send(null);timeoutId = window.setTimeout('forceTerminate()', callTimeout);}else{callbackBusyAction();}}function deserialize(wddx){peformOnDeserialize();arr = WDDXDeserialize(wddx);parseReturnData();}

