
function DoLater(obj,func,time)
{var args=Array.prototype.splice.call(arguments,3,arguments.length);var tID=setTimeout(function()
{func.apply(obj,args);},time,func);return tID;}
function NMEval(jstext)
{var ret;if(isFF)
{ret=window.eval(jstext);}else
if(isIE)
{ret=window.execScript(jstext,"javascript");}
return ret;}
function InArray(arr,value)
{var i;for(i=0;i<arr.length;i++)
{if(arr[i]===value)
{return true;}}
return false;};function ArrayRemoveIndex(arr,i)
{var arr1=arr.splice(0,i);var arr2=arr.splice(i+1,arr.length);return arr1.concat(arr1,arr2);}
function ArrayRemove(arr,value)
{var i;for(i=0;i<arr.length;i++)
{if(arr[i]===value)
{var arr1=arr.splice(0,i);var arr2=arr.splice(i+1,arr.length);return arr1.concat(arr1,arr2);}}
return arr;}
var old_function_prototype_toString=Function.prototype.toString;Function.prototype.toString=function()
{var fullstring=old_function_prototype_toString.apply(this);return fullstring.substring(0,80);}
Function.prototype.bind=function(thisObj)
{if(typeof(this)!="function")
{throw new Error("Bind must be called as a method of a function object.");}
var self=this;var staticArgs=Array.prototype.splice.call(arguments,1,arguments.length);return function()
{var args=staticArgs.concat();for(var i=0;i<arguments.length;i++)
{args.push(arguments[i]);}
return self.apply(thisObj,args);};}
Function.prototype.attach=function(obj)
{var __method=this;var staticArgs=Array.prototype.splice.call(arguments,0,arguments.length);return function()
{var args=staticArgs;for(var i=0;i<arguments.length;i++)
{args.push(arguments[i]);}
return __method.apply(obj,args);}}
debug("lang.js 2319");debug("document.location.href="+document.location.href);
