Tmobile.util.CustomEvent=function(b,a){this.type=b;this.scope=a||window;this.subscribers=[];if(Tmobile.util.Event){Tmobile.util.Event.regCE(this)}};Tmobile.util.CustomEvent.prototype={subscribe:function(c,b,a){this.subscribers.push(new Tmobile.util.Subscriber(c,b,a))},unsubscribe:function(e,b){var a=false;for(var c=0;c<this.subscribers.length;++c){var d=this.subscribers[c];if(d&&d.contains(e,b)){this._delete(c);a=true}}return a},fire:function(){for(var a=0;a<this.subscribers.length;++a){var b=this.subscribers[a];if(b){var c=(b.override)?b.obj:this.scope;b.fn.call(c,this.type,arguments,b.obj)}}},unsubscribeAll:function(){for(var a=0;a<this.subscribers.length;++a){this._delete(a)}},_delete:function(b){var a=this.subscribers[b];if(a){delete a.fn;delete a.obj}delete this.subscribers[b]}};Tmobile.util.Subscriber=function(a,c,b){this.fn=a;this.obj=c||null;this.override=(b)};Tmobile.util.Subscriber.prototype.contains=function(a,b){return(this.fn==a&&this.obj==b)};if(!Tmobile.util.Event){Tmobile.util.Event=function(){var j=false;var h=[];var g=[];var f=[];var d=[];var b=[];var e=[];var c=0;var a=[];return{POLL_RETRYS:200,POLL_INTERVAL:50,EL:0,TYPE:1,FN:2,WFN:3,SCOPE:3,ADJ_SCOPE:4,isSafari:(/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),isIE:(!this.isSafari&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),addDelayedListener:function(l,o,k,n,m){g[g.length]=[l,o,k,n,m];if(j){c=this.POLL_RETRYS;this.startTimeout(0)}},startTimeout:function(l){var k=(l||l===0)?l:this.POLL_INTERVAL;this.timeout=setTimeout("Tmobile.util.Event._tryPreloadAttach()",k)},onAvailable:function(n,m,l,k){a.push({id:n,fn:m,obj:l,override:k});c=this.POLL_RETRYS;this.startTimeout(0)},addListener:function(k,v,t,s,r){if(this._isValidCollection(k)){var u=true;for(var n=0;n<k.length;++n){u=(this.on(k[n],v,t,s,r)&&u)}return u}else{if(typeof k=="string"){var o=this.getEl(k);if(j&&o){k=o}else{this.addDelayedListener(k,v,t,s,r);return true}}}if(!k){return false}if("unload"==v&&s!==this){f[f.length]=[k,v,t,s,r];return true}var q=(r)?s:k;var p=function(x){return t.call(q,Tmobile.util.Event.getEvent(x),s)};var w=[k,v,t,p,q];var m=h.length;h[m]=w;if(this.useLegacyEvent(k,v)){var l=this.getLegacyIndex(k,v);if(l==-1){l=b.length;b[l]=[k,v,k["on"+v]];e[l]=[];k["on"+v]=function(x){Tmobile.util.Event.fireLegacyEvent(Tmobile.util.Event.getEvent(x),l)}}e[l].push(m)}else{if(k.addEventListener){k.addEventListener(v,p,false)}else{if(k.attachEvent){k.attachEvent("on"+v,p)}}}return true},fireLegacyEvent:function(q,m){var p=true;var o=e[m];for(i=0;i<o.length;++i){var l=o[i];if(l){var k=h[l];if(k&&k[this.WFN]){var r=k[this.ADJ_SCOPE];var n=k[this.WFN].call(r,q);p=(p&&n)}else{delete o[i]}}}return p},getLegacyIndex:function(m,n){for(var l=0;l<b.length;++l){var k=b[l];if(k&&k[0]==m&&k[1]==n){return l}}return -1},useLegacyEvent:function(k,l){return((!k.addEventListener&&!k.attachEvent)||(l=="click"&&this.isSafari))},removeListener:function(o,q,n){if(typeof o=="string"){o=this.getEl(o)}else{if(this._isValidCollection(o)){var l=true;for(var k=0;k<o.length;++k){l=(this.removeListener(o[k],q,n)&&l)}return l}}var p=null;var m=this._getCacheIndex(o,q,n);if(m>=0){p=h[m]}if(!o||!p){return false}if(o.removeEventListener){o.removeEventListener(q,p[this.WFN],false)}else{if(o.detachEvent){o.detachEvent("on"+q,p[this.WFN])}}delete h[m][this.WFN];delete h[m][this.FN];delete h[m];return true},getTarget:function(m,k){var l=m.target||m.srcElement;if(k&&l&&"#text"==l.nodeName){return l.parentNode}else{return l}},getPageX:function(l){var k=l.pageX;if(!k&&0!==k){k=l.clientX||0;if(this.isIE){k+=this._getScrollLeft()}}return k},getPageY:function(k){var l=k.pageY;if(!l&&0!==l){l=k.clientY||0;if(this.isIE){l+=this._getScrollTop()}}return l},getXY:function(k){return[this.getPageX(k),this.getPageY(k)]},getRelatedTarget:function(l){var k=l.relatedTarget;if(!k){if(l.type=="mouseout"){k=l.toElement}else{if(l.type=="mouseover"){k=l.fromElement}}}return k},getTime:function(l){if(!l.time){var k=new Date().getTime();try{l.time=k}catch(m){return k}}return l.time},stopEvent:function(k){this.stopPropagation(k);this.preventDefault(k)},stopPropagation:function(k){if(k.stopPropagation){k.stopPropagation()}else{k.cancelBubble=true}},preventDefault:function(k){if(k.preventDefault){k.preventDefault()}else{k.returnValue=false}},getEvent:function(l){var k=l||window.event;if(!k){var m=this.getEvent.caller;while(m){k=m.arguments[0];if(k&&Event==k.constructor){break}m=m.caller}}return k},getCharCode:function(k){return k.charCode||(k.type=="keypress")?k.keyCode:0},_getCacheIndex:function(n,o,m){for(var l=0;l<h.length;++l){var k=h[l];if(k&&k[this.FN]==m&&k[this.EL]==n&&k[this.TYPE]==o){return l}}return -1},_isValidCollection:function(k){return(k&&k.length&&typeof k!="string"&&!k.tagName&&!k.alert&&typeof k[0]!="undefined")},elCache:{},getEl:function(k){return document.getElementById(k)},clearCache:function(){for(i in this.elCache){delete this.elCache[i]}},regCE:function(k){d.push(k)},_load:function(k){j=true},_tryPreloadAttach:function(){if(this.locked){return false}this.locked=true;var p=!j;if(!p){p=(c>0)}var o=[];for(var m=0;m<g.length;++m){var q=g[m];if(q){var n=this.getEl(q[this.EL]);if(n){this.on(n,q[this.TYPE],q[this.FN],q[this.SCOPE],q[this.ADJ_SCOPE]);delete g[m]}else{o.push(q)}}}g=o;notAvail=[];for(m=0;m<a.length;++m){var l=a[m];if(l){n=this.getEl(l.id);if(n){var k=(l.override)?l.obj:n;l.fn.call(k,l.obj);delete a[m]}else{notAvail.push(l)}}}c=(o.length===0&&notAvail.length===0)?0:c-1;if(p){this.startTimeout()}this.locked=false},_unload:function(p,o){for(var n=0;n<f.length;++n){var m=f[n];if(m){var k=(m[this.ADJ_SCOPE])?m[this.SCOPE]:window;m[this.FN].call(k,this.getEvent(p),m[this.SCOPE])}}if(h&&h.length>0){for(n=0;n<h.length;++n){m=h[n];if(m){this.removeListener(m[this.EL],m[this.TYPE],m[this.FN])}}this.clearCache()}for(n=0;n<d.length;++n){d[n].unsubscribeAll();delete d[n]}for(n=0;n<b.length;++n){delete b[n][0];delete b[n]}},_getScrollLeft:function(){return this._getScroll()[1]},_getScrollTop:function(){return this._getScroll()[0]},_getScroll:function(){var k=document.documentElement;db=document.body;if(k&&k.scrollTop){return[k.scrollTop,k.scrollLeft]}else{if(db){return[db.scrollTop,db.scrollLeft]}else{return[0,0]}}}}}();Tmobile.util.Event.on=Tmobile.util.Event.addListener;if(document&&document.body){Tmobile.util.Event._load()}else{Tmobile.util.Event.on(window,"load",Tmobile.util.Event._load,Tmobile.util.Event,true)}Tmobile.util.Event.on(window,"unload",Tmobile.util.Event._unload,Tmobile.util.Event,true);Tmobile.util.Event._tryPreloadAttach()};