var WebthitethJs = function() {};;
;
;
WebthitethJs.__uniqueCounter__ = 0;;
WebthitethJs.makeTmpId = function () {
 return ("WEBTHITETHJSID" || "")  + ("" + WebthitethJs.__uniqueCounter__++ || "") ;
};
;
;
;
;
;
WebthitethJs.$ = function (id) {
 return function() {
var retn = document.getElementById (id);
 return function() {if ((retn === WebthitethJs.getNull ()) !== false) {
 return false;;
}  else if (true !== false) {
 return retn;;
}  else { return false; }}();}();
};
;
WebthitethJs.buildNode = function (n) {
 return function() {if (WebthitethJs.definedP (n.childNodes) !== false) {
 return n;;
}  else if (true !== false) {
 return document.createTextNode (n);;
}  else { return false; }}();
};
;
WebthitethJs.handleStyleIntValue = function (val) {
 return function() {if ((val && typeof(val) == "number") !== false) {
 return val  + "px" ;;
}  else if (true !== false) {
 return val;;
}  else { return false; }}();
};
;
WebthitethJs.clearChildren = function (elem) {
 return function(){ while (true) {
if (((elem.childNodes || []).length === 0) !== false) {
return;;
}
elem.removeChild (function(lst){return lst && lst.length > 0 && lst[0];}(elem.childNodes));
}}()
;
};
;
WebthitethJs.replaceChildren = function (elem,newChildren) {
WebthitethJs.clearChildren (elem);

 return WebthitethJs.appendChild (elem,newChildren);
};
;
WebthitethJs.buildStackTrace = function() { 
var callstack = [];
   var isCallstackPopulated = false;
   try {
     i.dont.exist+=0; //doesn't exist- that's the point
   } catch(e) {
     if (e.stack) //Firefox
       return e.stack;
     var lines = e.stack.split('n');
     for (var i=0, len=lines.length; i < len; i++) {
       if (lines[i].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {
         callstack.push(lines[i]);
       }
     }
     //Remove call to printStackTrace()
     callstack.shift();
     isCallstackPopulated = true;
   }
   return callstack;}
;
WebthitethJs.appendChild = function (e,child) {
 return function() {if ((! (WebthitethJs.definedP (e) !== false)) !== false) {
 return WebthitethLoggingJs.logError (("Can't append child to undefined element" || "") );;
}  else if ((! (WebthitethJs.definedP (e.appendChild) !== false)) !== false) {
 return WebthitethLoggingJs.logError (("Element does not have append-child: " || "")  + (e || "") );;
}  else if ((! (WebthitethJs.definedP (child) !== false)) !== false) {
 return function() {
WebthitethLoggingJs.logError (("Child was undefined when adding to " || "")  + (e || "") );

 return WebthitethLoggingJs.logError (WebthitethJs.buildStackTrace ());}();;
}  else if (child !== false) {
 return function() {if (function(lst){ return lst && (typeof(lst) == 'object') && lst.constructor !== undefined && lst.constructor.toString().match(/ Array *()/) !== null}(child) !== false) {
 return function() {var __WEBTHITETH_SAFE__G511 = new Array();
var __WEBTHITETH_SAFE__G510 = function (it) {
 return WebthitethJs.appendChild (e,it);
};
var __WEBTHITETH_SAFE__G512 = child;
for (var __WEBTHITETH_SAFE__G513 = 0 ; __WEBTHITETH_SAFE__G513 < __WEBTHITETH_SAFE__G512.length  ; __WEBTHITETH_SAFE__G513++ ) {
 __WEBTHITETH_SAFE__G511[__WEBTHITETH_SAFE__G513] = __WEBTHITETH_SAFE__G510(__WEBTHITETH_SAFE__G512[__WEBTHITETH_SAFE__G513]);
}
return __WEBTHITETH_SAFE__G511;}();;
}  else if (true !== false) {
 return e.appendChild (WebthitethJs.buildNode (child));;
}  else { return false; }}();;
}  else { return false; }}();
};
;
WebthitethJs.removeFromParent = function (e) {
 return e.parentNode.removeChild (e);
};
;
WebthitethJs.regexMatch = function (str,regex) {
 return (! ((WebthitethJs.getNull () === str.match (regex)) !== false));
};
;
WebthitethJs.getNull = function() { 
return null;}
;
WebthitethJs.getDocument = function() { 
return document;}
;
WebthitethJs.getWindow = function() { 
return window;}
;
WebthitethJs.definedP = function() {var x = arguments[0];;
 
return (x !== undefined);}
;
;
WebthitethJs.__document__ = WebthitethJs.getDocument ();;
WebthitethJs.__window__ = WebthitethJs.getWindow ();;
WebthitethJs.handleKeyPress = function (func) {
 return function (e) {
 return function() {if (WebthitethJs.definedP (window.event) !== false) {
 return func (e.keyCode);;
}  else if (true !== false) {
 return func (e.which);;
}  else { return false; }}();
};
};
;
WebthitethJs.addEvent = function (elem,type,func) {
 return function() {if ((! (elem !== false)) !== false) {
 return false;;
}  else if (WebthitethJs.definedP (elem.addEventListener) !== false) {
 return elem.addEventListener (type,func,false);;
}  else if (WebthitethJs.definedP (elem.attachEvent) !== false) {
 return elem.attachEvent ("on"  + type ,func);;
}  else if (true !== false) {
 return window.alert ("Error, You'll be seeing a lot of these.  Generally means I don't support your browsers");;
}  else { return false; }}();
};
;
WebthitethJs.stopProp = function () {
var e = arguments[0];
var preventDefault = false;
if (arguments[1] !== undefined)
{preventDefault = arguments[1];
} else {
preventDefault = true;
}

if (WebthitethJs.definedP (e.stopPropagation) !== false) {
e.stopPropagation ();
if (preventDefault !== false) {
e.preventDefault ();
;
} ;
;
} ;

 return function() {if ((WebthitethJs.definedP (window.event) !== false && WebthitethJs.definedP (window.event.cancelBubble) !== false) !== false) {
 return window.event.cancelBubble = true;;
}  else { return false; }}();
};
;
WebthitethJs.removeEvent = function (elem,type,func) {
 return function() {if ((WebthitethJs.definedP (func) !== false && func !== false) !== false) {
 return function() {if (WebthitethJs.definedP (elem.removeEventListener) !== false) {
 return elem.removeEventListener (type,func,false);;
}  else if (WebthitethJs.definedP (elem.detachEvent) !== false) {
 return elem.detachEvent ("on"  + type ,func);;
}  else if (true !== false) {
 return window.alert ("Error, You'll be seeing a lot of these.  Generally means I don't support your browsers");;
}  else { return false; }}();;
}  else { return false; }}();
};
;
WebthitethJs.convertToPx = function (px) {
 return function() {if ((px === 0) !== false) {
 return "0px";;
}  else if (true !== false) {
 return (px || "")  + ("px" || "") ;;
}  else { return false; }}();
};
;
WebthitethJs.show = function (e) {
 return e.style.display = "";
};
;
WebthitethJs.hide = function (e) {
 return e.style.display = "none";
};
;
WebthitethJs.getWindowWidth = function () {
 return function() {if ((! ((WebthitethJs.undefined === WebthitethJs.getWindow ().innerWidth) !== false)) !== false) {
 return WebthitethJs.getWindow ().innerWidth;;
}  else if ((WebthitethJs.__document__.documentElement !== false && WebthitethJs.__document__.documentElement.clientWidth !== false) !== false) {
 return WebthitethJs.__document__.documentElement.clientWidth;;
}  else if (true !== false) {
 return window.alert ("Your browser is not supported :(");;
}  else { return false; }}();
};
;
WebthitethJs.getWindowHeight = function () {
 return function() {if ((! ((WebthitethJs.undefined === WebthitethJs.getWindow ().innerHeight) !== false)) !== false) {
 return WebthitethJs.getWindow ().innerHeight;;
}  else if ((WebthitethJs.__document__.documentElement !== false && WebthitethJs.__document__.documentElement.clientHeight !== false) !== false) {
 return WebthitethJs.__document__.documentElement.clientHeight;;
}  else if (true !== false) {
 return window.alert ("Your browser is not supported :(");;
}  else { return false; }}();
};
;
WebthitethJs.currentlySelectedOption = function (select) {
 return function(lst, n){return lst && lst.length > n && lst[n];}(select.options, select.selectedIndex);
};
;
WebthitethJs.__rootDir__ = "";;
;
WebthitethJs.handleString = function() {var str = arguments[0];;
 
str = str.replace(/%/g, '%25');
   str = str.replace(/\$/g, '%24');
   str = str.replace(/&/g, '%26');
   str = str.replace(/\+/g, '%2B');
   str = str.replace(/,/g, '%2C');
   str = str.replace(/:/g, '%3A');
   str = str.replace(/;/g, '%3B');
   str = str.replace(/\?/g, '%3F');
   str = str.replace(/@/g, '%40');
   str = str.replace(/=/g, '%3D');
  return str;}
;
WebthitethJs.breakListDown = function() {var lst = arguments[0];;
 
var accum = "";
   for (var i = 0 ; i < lst.length ; i++) {
     accum = accum + WebthitethJs.handleString(WebthitethJs.handleArg(lst[i]));
     if(i != lst.length - 1) {
       accum = accum + ",";
     }
   }
   return accum;}
;
WebthitethJs.handleArg = function() {var arg = arguments[0];;
 
if (arg === true) {
     return "t";
   } else if (arg === false) {
     return "NIL";
   } else if (typeof(arg) == "string") {
     return WebthitethJs.handleString(arg);
   } else if (typeof(arg) == "object" && arg.length !== undefined && arg.length == 0) {
     return "NIL";
   } else if (typeof(arg) == "object" && arg.length) {
     return WebthitethJs.breakListDown (arg);
   } else {
     return "" + arg;
   }}
;
;
WebthitethJs.buildAjaxRequest = function() { 

   try { return new XMLHttpRequest(); } catch (e) {
     try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
       try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {
         alert("Your browser does not support AJAX!");
         return false;
       }
     }
   }
   }
;
WebthitethJs.makeStreamingServerCallInner = function() {var func = arguments[0];;
var callback = arguments[1];;
var key = arguments[2];;
 

   var xmlHttp = WebthitethJs.buildAjaxRequest();
   if (!xmlHttp) { return false; }
   var acceptsMultipart = (xmlHttp.multipart != undefined);
   var lastMsgTime = new Date();
   var connectionError = false;
   xmlHttp.onreadystatechange = function() {
     if(xmlHttp.readyState == 4 && callback) {
       if(xmlHttp.status != 200) {
         WebthitethLoggingJs.logError("This call failed " + xmlHttp.status);
         WebthitethLoggingJs.logError("I wonder if this will work: " + this.responseText);
         connectionError = true;
       } else {
         arglist = eval(this.responseText);
         if("heartbeat" == arglist) {
           lastMsgTime = new Date();
         } else {
           for(var i = 0 ; i < arglist.length ; i++) {
             callback.apply(window, arglist[i]);
           }
         }
         if(!acceptsMultipart) {
           WebthitethJs.makeStreamingServerCallInner(func, callback, key);
         }
       }
     }
   }
   var serverget = WebthitethJs.__rootDir__ + "/streamingservercall?";
   var params = "func=" + func + "&key=" + key + "&multipart=" + (acceptsMultipart ? "t" : "nil");
   xmlHttp.multipart = true;
   xmlHttp.open("POST",serverget,true);
   xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   xmlHttp.setRequestHeader("Content-length", params.length);
   xmlHttp.setRequestHeader("Connection", "close");
   xmlHttp.send(params);

   if(acceptsMultipart) {
     var checkHeartbeat = function() {
       if(!connectionError) {
         if(new Date().getTime() - lastMsgTime.getTime() > 60000) {
           WebthitethLoggingJs.logDebug('We\'ve lost the heartbeat, rebooting the stream');
           WebthitethJs.makeStreamingServerCallInner(func, callback, key);
         } else {
           window.setTimeout(checkHeartbeat, 5000);
         }
       }
     }
     window.setTimeout(checkHeartbeat, 5000);
   }
   }
;
;
WebthitethJs.makeServerCall = function() {var callback = arguments[0];;
var errorCallback = arguments[1];;
var attachments = arguments[2];;
var serverFunc = arguments[3];;
var serverArgs = arguments[4];;
 

   WebthitethLoggingJs.logDebug("into sever call " + new Date().getTime());
   var xmlHttp;
   try { xmlHttp=new XMLHttpRequest(); } catch (e) {
     try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
       try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {
         alert("Your browser does not support AJAX!");
         return false;
       }
     }
   }
   xmlHttp.onreadystatechange = function() {
     if(xmlHttp.readyState == 4 && (callback || errorCallback)) {
       if(xmlHttp.status != 200) {
         if(errorCallback) {
           errorCallback(xmlHttp.responseText);
         } else {
           WebthitethLoggingJs.logError("This call failed: " + xmlHttp.status);
         }
      } else if(callback) {
         WebthitethLoggingJs.logDebug("got server respose " + new Date().getTime());
         WebthitethLoggingJs.logDebug("got server respose " + xmlHttp.responseText);
         var arglist = eval(xmlHttp.responseText);
         WebthitethLoggingJs.logDebug("decomposed server response " + new Date().getTime());
         callback.apply(window, arglist);
       }
     }
   }
   var serverget = WebthitethJs.__rootDir__ + "/servercall?";
   ;xmlHttp.open("POST",serverget,true);

   var params = false;

   if(attachments) {
     params = new FormData();

     params.append("func", serverFunc)
     ; for ( var i = 0 ; i < serverArgs.length ; i++ ) {
       serverArg = WebthitethJs.handleArg(serverArgs[i]);

       params.append("arg", serverArg)
     }

     for ( var attachmentIdx = 0 ; attachmentIdx < attachments.length ; attachmentIdx++) {
       params.append(attachments[attachmentIdx].name, attachments[attachmentIdx]);
     }

   } else {
     params = "func=" + serverFunc;
     ; for ( var i = 0 ; i < serverArgs.length ; i++ ) {
       serverArg = WebthitethJs.handleArg(serverArgs[i]);
       params = params +  "&" + "arg" + "=" + serverArg;
     }

     ;xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     ;xmlHttp.setRequestHeader("Content-length", params.length);
   }
 
   ;WebthitethLoggingJs.logDebug("making server call " + new Date().getTime());
   xmlHttp.send(params);}
;
