Array.prototype.inArray=function(val){for(var i=0;i<this.length;i++){if(this[i]==val)return i;}
return false;}
Array.prototype.simpleXmlify=null;Error.prototype.simpleXmlify=null;var util=new Object;util.resourceManager={cache:new Array,index:new Array,get:function(url){var ptr=util.resourceManager.index.inArray(url);if(ptr===false){ptr=util.resourceManager.index.length;util.resourceManager.index[ptr]=url;util.resourceManager.cache[ptr]=new Image;util.resourceManager.cache[ptr].src=url;}
return util.resourceManager.cache[ptr].src;}};function funcname(f){var matches=f.toString().match(/function (\w*)/);if((matches==null)||(matches.length==0))return"anonymous";if(matches.length==2)return matches[1];else return matches.join(',');}
function stacktrace(){var s="";for(var a=arguments.caller;a!=null;a=a.caller){s+=funcname(a.callee)+"\n";if(a.caller==a)break;}
return s;}
util.MessageQueue=function(type){this.queued=new Array;this.containerId='message';this.type=type||util.MessageQueue.types.ALL;this.queueId=util.MessageQueue.queues.length;this.waitingForResponse=false;util.MessageQueue.queues[this.queueId]=this;return this;};util.MessageQueue.settings={timer:null,interval:5,immediate:true};util.MessageQueue.types={NONE:0,ERROR:1,DEBUG:2,USER:4,ALL:7};util.MessageQueue.queues=[];util.MessageQueue.attach=function(queue){if(!util.MessageQueue.queues.inArray(queue)){util.MessageQueue.queues.push(queue);}
return true;};util.MessageQueue.detach=function(queue){var retain=[];var found=false;while(util.MessageQueue.queues.length){var queuePop=util.MessageQueue.queues.pop();if(queue!==queuePop)retain.push(queuePop);else found=queuePop;}
util.MessageQueue.queues=retain;return found;};util.MessageQueue.prototype.add=function(obj,test){test=test===false?false:true;test=true;if((test&&this.isMessage(obj))||!test){this.queued.push(obj);}
if(util.MessageQueue.settings.immediate)this.renderNext();};util.MessageQueue.prototype.isMessage=function(obj){return obj.implementsProp('title')&&obj.implementsProp('content')&&obj.implementsProp('type');};util.MessageQueue.prototype.render=function(type){if(this.queued.length>0){var body=document.getElementsByTagName('body')[0];if(body){var types=util.MessageQueue.types;type=type<=types.ALL?type:types.ALL;var messages=new Array;if(type==types.ALL){messages=this.queued;this.queued=new Array;}else{var retain=new Array;for(var i=0;i<this.queued.length;i++){var msg=this.queued[i];if(msg.type==type){messages.push(msg);}else{retain.push(msg);}}
this.queued=retain;}
if(!this.container){this.container=document.createElement('div');this.container.className='messageContainer';body.appendChild(this.container);}
for(var i=0;i<messages.length;i++){var mesg=messages[i];mesg.displayHandler();}}}};util.MessageQueue.prototype.renderNext=function(force){force=force||false;if(force){this.waitingForResponse=false;clearInterval(this.renderNextTimeout);this.renderNextTimeout=null;}
if(this.queued.length>0){if(!this.waitingForResponse){var body=document.getElementsByTagName('body')[0];if(!body)throw new Error('Unable to find body element');var message=null;var queueHead=new Array;do{message=this.queued.shift();if(message.type!=this.type&&this.type!=util.MessageQueue.types.ALL){queueHead.push(message);message=null;}}while(!message&&this.queued.length>0);while(queueHead.length>0){this.queued.unshift(queueHead.shift());}
if(message){this.waitingForResponse=true;message.displayHandler();}}else if(!this.renderNextTimer){this.renderNextTimer=setInterval('util.MessageQueue.queues['+this.queueId+'].renderNext()',1000);}}};window.messageQueue=new util.MessageQueue(util.MessageQueue.types.ALL);util.createCookie=function createCookie(name,value){var argv=arguments;var argc=arguments.length;var ttl=(argc>2)?argv[2]*1000:null;var path=(argc>3)?argv[3]:null;var domain=(argc>4)?argv[4]:null;var secure=(argc>5)?argv[5]:false;if(ttl){var expires=new Date();expires.setTime(expires.getTime()+ttl);}
document.cookie=name+"="+encodeURIComponent(value)+
((expires==null)?"":("; expires="+expires.toGMTString()))+
((path==null)?"":("; path="+path))+
((domain==null)?"":("; domain="+domain))+
((secure==true)?"; secure":"");};util.readCookie=function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return decodeURIComponent(c.substring(nameEQ.length,c.length));}
return null;};util.eraseCookie=function eraseCookie(name){util.createCookie(name,"",-1);};

