//Version:	JSMX V2.6.4 (compressed)
//Author:	Todd Kingham (todd@lalabird.com) 
//Website:	www.lalabird.com
//License:	http://creativecommons.org/licenses/by-sa/2.5/
var jsmx = new jsmxConstructor(); 
function jsmxConstructor(){ this.isJSMX = true; this.async = true; this.debug = false; this.strict = true; this.waitDiv = 'JSMX_loading'; this.http = http; this.onWait = _popWait; this.onWaitEnd = _killWait; this.onError = _onError; this.onDebug = _onDebug; }
function http(verb,url,cb,q){ var self = (this.isJSMX) ? this : jsmx ; var qryStr = (!q) ? '' : _toQueryString(q); var calledOnce = false; var url = (verb.toLowerCase() == 'get') ? _addQS(url,qryStr) : url ; var readystatecalled = false; self.cb = cb; try{ var xhr = ( window.XMLHttpRequest )?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"); xhr.onreadystatechange = function(){ switch(xhr.readyState){ case 1: if(!calledOnce){ readystatecalled = true; self.onWait(self.waitDiv); calledOnce = true; } break; case 2: break; case 3: break; case 4: self.onWaitEnd(self.waitDiv); if ( xhr.status == 200 ){ var success = true; try{ var rObj = _parseResponse( xhr ); } catch(e){ if(self.strict){ self.onError(xhr,self,1);success = false; } else{ var rObj = xhr.responseText; } } if(success){ self.cb( rObj ); } }else{ self.onError(xhr,self,2); } if(self.debug){self.onDebug(xhr.responseText);} delete xhr; break; } }; xhr.open( verb , _noCache(url) , self.async ); if(verb.toLowerCase() == 'post') { xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); } xhr.send(qryStr); if(!readystatecalled){ self.cb( _parseResponse(xhr)); } }catch(e){ self.onError(xhr,self,3); } } 
function _parseResponse($$){ var str = _cleanString($$.responseText); var xml = $$.responseXML; if(str.indexOf("<wddxPacket") == 0){ return _parseWDDX(str); } if(xml != null && xml.childNodes.length){ return xml; } try{ return eval('('+str+')'); } catch(e){ return _parseClsc(str); } }
function _cleanString(s){ str = leftTrim(s); var i = str.indexOf("HTTP/1"); if (i > -1) { str = str.substring(i, str.length); i = str.indexOf(String.fromCharCode(13, 10, 13, 10)); if (i > -1) { str = str.substring(i + 2, str.length); } } return str; }
function _parseClsc(str){ eval(str); var r = eval(str.split('=')[0].replace(/\s/g,'')); return r; }
function leftTrim(str){ var rex = /\S/i; str = str.substring(str.search(rex),str.length); return str; }
function _parseWDDX(str){ var wddx = xmlStr2Doc(str); var data = wddx.getElementsByTagName("data"); return _parseWDDXnode(data[0].firstChild); }
function xmlStr2Doc(str){ var xml; if(typeof(DOMParser) == 'undefined'){ xml=new ActiveXObject("Microsoft.XMLDOM"); xml.async="false"; xml.loadXML(str); }else{ var domParser = new DOMParser(); xml = domParser.parseFromString(str, 'application/xml'); } return xml; }
function _parseWDDXnode(n){ var val; switch(n.tagName){ case 'string': val = _parseWDDXstring(n); break; case 'number': val = parseFloat(n.firstChild.data); break; case 'boolean': val = n.getAttribute('value'); break; case 'dateTime': val = Date(n.firstChild.data); break; case 'array': val = _parseWDDXarray(n); break; case 'struct': val = _parseWDDXstruct(n); break; case 'recordset': val = _parseWDDXrecordset(n); break; case 'binary': val = n.firstChild.data; break; case 'char': val = _parseWDDXchar(n);; break; case 'null': val = ''; break; default: val = n.tagName; break; } return val; }
function _parseWDDXstring(node){ var items = node.childNodes; var str = ''; for(var x=0;x < items.length;x++){ if(typeof(items[x].data) != 'undefined') str += items[x].data; else str += _parseWDDXnode(items[x]); } return str; }
function _parseWDDXchar(node){ switch(node.getAttribute('code')){ case '0d': return '\r'; case '0c': return '\f'; case '0a': return '\n'; case '09': return '\t'; } }
function _parseWDDXarray(node){ var items = node.childNodes; var arr=[]; for(var i=0;i < items.length;i++){ arr[i] = _parseWDDXnode(items[i]); } return arr; }
function _parseWDDXstruct(node){ var items = node.childNodes; var obj={}; for(var i=0;i < items.length;i++){ obj[items[i].getAttribute('name').toLowerCase()] = _parseWDDXnode(items[i].childNodes[0]); } return obj; }
function _parseWDDXrecordset(node){ var qry={}; var fields = node.getElementsByTagName("field"); var items; var dataType; var values; for(var x = 0; x < fields.length; x++){ items = fields[x].childNodes; values=[]; for(var i = 0; i < items.length; i++){ values[values.length] = _parseWDDXnode(items[i]); } qry[fields[x].getAttribute('name').toLowerCase()] = values; } return qry; }
function _toQueryString(obj){ if(typeof(obj) == 'string'){ return obj; } if(typeof(obj) == 'object'){ if(typeof obj.elements == 'undefined'){return _object2queryString(obj); } else{ return _form2queryString(obj); } } }
function _object2queryString(obj){ var ar=[]; for(x in obj){ ar[ar.length] = _escape_utf8(x)+'='+_escape_utf8(obj[x]); } return ar.join('&'); }
function _form2queryString(form){ var obj={}; var ar=[]; for(var i=0;i < form.elements.length;i++){ try { elm = form.elements[i]; nm = elm.name; if(nm != ''){ switch(elm.type.split('-')[0]){ case "select": for(var s=0;s < elm.options.length;s++){ if(elm.options[s].selected){ if(typeof(obj[nm]) == 'undefined'){ obj[nm]=[]; } obj[nm][obj[nm].length] = _escape_utf8(elm.options[s].value); } } break; case "radio": if(elm.checked){ if(typeof(obj[nm]) == 'undefined'){ obj[nm]=[]; } obj[nm][obj[nm].length] = _escape_utf8(elm.value); } break; case "checkbox": if(elm.checked){ if(typeof(obj[nm]) == 'undefined'){ obj[nm]=[]; } obj[nm][obj[nm].length] = _escape_utf8(elm.value); } break; default: if(typeof(obj[nm]) == 'undefined'){ obj[nm]=[]; } obj[nm][obj[nm].length] = _escape_utf8(elm.value); break; } } }catch(e){} } for(x in obj){ ar[ar.length] = x+'='+obj[x].join(','); } return ar.join('&'); }
function _noCache(url){ return _addQS(url,'noCache='+new Date().getTime()); }
function _addQS(url,q){ if(q.length > 0){ var qs=[]; var arr = url.split('?'); var src = arr[0]; if(arr[1]){ qs = arr[1].split('&'); } qs[qs.length]=q; url = src+'?'+qs.join('&'); } return url; }
function _popWait(id){ proc = document.getElementById(id); if( proc == null ){ var p = document.createElement("div"); p.id = id; document.body.appendChild(p); } }
function _killWait(id){ proc = document.getElementById(id); if( proc != null ){ document.body.removeChild(proc); } }
function _onError(obj,inst,errCode){ var msg; switch(errCode){ case 1: msg = (inst.debug) ? obj.responseText : 'Parsing Error: The value returned could not be evaluated.'; break; case 2: msg = (inst.debug) ? obj.responseText : 'There was a problem retrieving the data:\n' + obj.status+' : '+obj.statusText; break; case 3: msg = 'Unsupported browser detected.'; return; break; } if(!inst.debug){ alert(msg); } }
function _onDebug(msg){ var debugWin = window.open('','error'); debugWin.document.write(msg); debugWin.focus(); }
function _escape_utf8(data) { if (data=="" || data == null){ return ""; } data = data.toString(); var buf = ""; for (var i=0;i< data.length;i++) { var c=data.charCodeAt(i); var bs=[]; if (c>0x10000) { bs[0] = 0xF0 | ((c & 0x1C0000) >>> 18); bs[1] = 0x80 | ((c & 0x3F000) >>> 12); bs[2] = 0x80 | ((c & 0xFC0) >>> 6); bs[3] = 0x80 | (c & 0x3F); } else if (c>0x800) { bs[0] = 0xE0 | ((c & 0xF000) >>> 12); bs[1] = 0x80 | ((c & 0xFC0) >>> 6); bs[2] = 0x80 | (c & 0x3F); } else if (c>0x80) { bs[0] = 0xC0 | ((c & 0x7C0) >>> 6); bs[1] = 0x80 | (c & 0x3F); } else{ bs[0] = c; } if (c == 10 || c == 13){ buf += '%0'+c.toString(16); } else if (bs.length == 1 && c>=48 && c< 127 && c!=92){buf += data.charAt(i);} else{ for(var j=0;j< bs.length;j++){ buf+='%'+bs[j].toString(16);} } } return buf; }
function $(id){ return document.getElementById(id); }