var xBrowser={isIE:(navigator.appName.toLowerCase().indexOf('explorer')!=-1),isSafari:(navigator.userAgent.indexOf(' Safari/')>-1),event:function(e){if(e&&e._isxBrowserEvent){return e;}e=e||window.event;var newE={};var prop;newE.preventDefault=function(){if(xBrowser.isIE){window.event.returnValue=false;}else{if(e.preventDefault){e.preventDefault();}}};newE.stopPropagation=function(){if(xBrowser.isIE){window.event.cancelBubble=true;}else{e.stopPropagation();}};newE.button=(e.button==0)?1:e.button;newE.clientX=e.clientX;newE.clientY=e.clientY;newE.x=e.x;newE.y=e.y;newE.type=e.type;newE.keyCode=e.keyCode;if(xBrowser.isIE){newE.target=e.srcElement;newE.offsetX=e.offsetX;newE.offsetY=e.offsetY;newE.screenX=e.screenX;newE.screenY=e.screenY;if(e.type=="mouseout"){newE.relatedTarget=e.toElement;}else if(e.type=="mouseover"){newE.relatedTarget=e.fromElement;}}else{newE.target=e.target;var offsets=xBrowser._mozOffsets(e);newE.offsetX=offsets.offsetX;newE.offsetY=offsets.offsetY;newE.relatedTarget=e.relatedTarget;}if(newE.target.nodeType==3)newE.target=e.target.parentNode;newE._isxBrowserEvent=true;return newE;},_mozOffsets:function(e){var target=e.target;while(target&&target.nodeType!=Node.ELEMENT_NODE){target=target.parentNode;}if(!target){return{offsetX:0,offsetY:0};}var pageCoordsTarget=xBrowser.elPageCoords(target);var pageCoordsMouse={x:window.pageXOffset+e.clientX,y:window.pageYOffset+e.clientY};var offsets={offsetX:pageCoordsMouse.x-pageCoordsTarget.x,offsetY:pageCoordsMouse.y-pageCoordsTarget.y};return offsets;},addEventListener:function(el,eventName,func,isCapture){if(xBrowser.isIE){el.attachEvent("on"+eventName,func);}else{el.addEventListener(eventName,func,isCapture);list=xBrowser.getExpando(el,"_eventListenerList");if(!list){list={};xBrowser.setExpando(el,"_eventListenerList",list);}list[eventName]=list[eventName]||[];var evlist=list[eventName];for(var i=0;i<evlist.length;i++){if(evlist[i]==func)return;}evlist.push(func);}},removeEventListener:function(el,eventName,func,isCapture){if(xBrowser.isIE){el.detachEvent("on"+eventName,func);}else{el.removeEventListener(eventName,func,isCapture);el=xBrowser._getExpandoEl(el);try{var evs=el.getAttribute("_eventListenerList");var evlist=evs[eventName];}catch(e){return;}for(var i=0;i<evlist.length;i++){if(evlist[i]==func){evs[eventName]=evlist.splice(i,1);return;}}}},getEventListeners:function(el){},_expandos:{},getExpando:function(el,key){if(xBrowser.isIE){return el[key];}else{el=xBrowser._getExpandoEl(el);var expandos=xBrowser._expandos[xBrowser._getExpandoID(el)];if(expandos)return expandos[key];return null;}},setExpando:function(el,key,value){if(xBrowser.isIE){el[key]=value;}else{el=xBrowser._getExpandoEl(el);var id=xBrowser._getExpandoID(el);var expandos=xBrowser._expandos[id];if(!expandos){expandos={};xBrowser._expandos[id]=expandos;}expandos[key]=value;}},_getExpandoEl:function(el){if(el==document||el==window)return document.body;return el;},_getExpandoID:function(el){if(el==document.body)return"_body";if(!el.id)throw new Error("Element must have an ID to use generic expandos.");return el.id;},setCapture:function(el){if(xBrowser.isIE){el.setCapture();}else{xBrowser._setCaptureEvent(el,"mousemove");xBrowser._setCaptureEvent(el,"mouseup");xBrowser._setCaptureEvent(el,"mousedown");xBrowser._setCaptureEvent(el,"mouseover");xBrowser._setCaptureEvent(el,"mouseout");xBrowser._setCaptureEvent(el,"click");xBrowser._setCaptureEvent(el,"dblclick");}},_setCaptureEvent:function(el,eventName){var evs=xBrowser.getExpando(el,"_eventListenerList");if(!evs)return;var evlist=evs[eventName];if(!evlist)return;for(var i=0;i<evlist.length;i++){xBrowser.addEventListener(document,eventName,evlist[i],true);}},releaseCapture:function(el){if(xBrowser.isIE){el.releaseCapture();}else{xBrowser._releaseCaptureEvent(el,"mousemove");xBrowser._releaseCaptureEvent(el,"mouseup");xBrowser._releaseCaptureEvent(el,"mousedown");xBrowser._releaseCaptureEvent(el,"mouseover");xBrowser._releaseCaptureEvent(el,"mouseout");xBrowser._releaseCaptureEvent(el,"click");xBrowser._releaseCaptureEvent(el,"dblclick");}},_releaseCaptureEvent:function(el,eventName){var evs=xBrowser.getExpando(el,"_eventListenerList");if(!evs)return;var evlist=evs[eventName];if(!evlist)return;for(var i=0;i<evlist.length;i++){xBrowser.removeEventListener(document,eventName,evlist[i],true);}},contains:function(parent,child){if(xBrowser.isIE){return parent.contains(child);}else{var obj=child.parentNode;while(obj){if(obj==parent)return true;obj=obj.parentNode;}return false;}},outerHTML:function(node){if(xBrowser.isIE)return node.outerHTML;var emptyElements={HR:true,BR:true,IMG:true,INPUT:true};var specialElements={TEXTAREA:true};var html='';switch(node.nodeType){case Node.ELEMENT_NODE:html+='<';html+=node.nodeName;if(!specialElements[node.nodeName]){for(var a=0;a<node.attributes.length;a++)html+=' '+node.attributes[a].nodeName.toUpperCase()+'="'+node.attributes[a].nodeValue+'"';html+='>';if(!emptyElements[node.nodeName]){html+=node.innerHTML;html+='<\/'+node.nodeName+'>';}}else switch(node.nodeName){case'TEXTAREA':for(var a=0;a<node.attributes.length;a++)if(node.attributes[a].nodeName.toLowerCase()!='value')html+=' '+node.attributes[a].nodeName.toUpperCase()+'="'+node.attributes[a].nodeValue+'"';else var content=node.attributes[a].nodeValue;html+='>';html+=content;html+='<\/'+node.nodeName+'>';break;}break;case Node.TEXT_NODE:html+=node.nodeValue;break;case Node.COMMENT_NODE:html+='<!'+'--'+node.nodeValue+'--'+'>';break;}return html;},currentStyle:function(node,style,type){var raw;if(xBrowser.isIE){raw=node.currentStyle[xBrowser._cssToProp(style)];}else{raw=document.defaultView.getComputedStyle(node,null).getPropertyValue(style);}if(type=="int"){var num=parseInt(raw);if(isNaN(num))return 0;return num;}},_cssToProp:function(str){var a=str.split('-');str=a[0];for(var i=1;i<a.length;i++){c=a[i].charAt(0);str+=a[i].replace(c,c.toUpperCase());}return str;},standardBoxModel:function(){return(!xBrowser.isIE||document.compatMode!="BackCompat");},width:function(node,withBorder){if(!withBorder){return node.offsetWidth-(xBrowser.currentStyle(node,"padding-left","int")+xBrowser.currentStyle(node,"padding-right","int")+xBrowser.currentStyle(node,"border-left-width","int")+xBrowser.currentStyle(node,"border-right-width","int"));}return node.offsetWidth;},height:function(node,withBorder){if(!withBorder){return node.offsetHeight-(xBrowser.currentStyle(node,"padding-top","int")+xBrowser.currentStyle(node,"padding-bottom","int")+xBrowser.currentStyle(node,"border-top-width","int")+xBrowser.currentStyle(node,"border-bottom-width","int"));}return node.offsetHeight;},setWidth:function(node,width){if(xBrowser.standardBoxModel()){width-=xBrowser.currentStyle(node,"padding-left","int")+xBrowser.currentStyle(node,"padding-right","int")+xBrowser.currentStyle(node,"border-left-width","int")+xBrowser.currentStyle(node,"border-right-width","int");width=Math.max(0,width);}node.style.width=width+"px";},setHeight:function(node,height){if(xBrowser.standardBoxModel()){height-=xBrowser.currentStyle(node,"padding-top","int")+xBrowser.currentStyle(node,"padding-bottom","int")+xBrowser.currentStyle(node,"border-top-width","int")+xBrowser.currentStyle(node,"border-bottom-width","int");height=Math.max(0,height);}node.style.height=height+"px";},children:function(node,siblingNum){if(xBrowser.isIE){if(typeof(siblingNum)=="undefined"){return node.children;}return node.children[siblingNum];}else{var childNodes=node.childNodes;var len=childNodes.length;if(typeof(siblingNum)=="undefined"){var children=[];for(var i=0;i<len;i++){var childNode=childNodes[i];if(childNode.nodeType==Node.ELEMENT_NODE){children.push(childNode);}}return children;}else{var j=0;for(var i=0;i<len;i++){var childNode=childNodes[i];if(childNode.nodeType==Node.ELEMENT_NODE){j++;}if(j==siblingNum+1){return childNode;}}return null;}}},removeNode:function(node){if(xBrowser.isIE){node.removeNode(true);}else{node.parentNode.removeChild(node);}},elWindowCoords:function(el){if(xBrowser.isIE){var bounds=el.getBoundingClientRect();return{x:bounds.left,y:bounds.top,width:bounds.right-bounds.left,height:bounds.bottom-bounds.top};}else{var bounds=el.ownerDocument.getBoxObjectFor(el);return{x:bounds.x-window.pageXOffset,y:bounds.y-window.pageYOffset,width:bounds.width,height:bounds.height};}},elPageCoords:function(el){if(xBrowser.isIE){var coords=xBrowser.elWindowCoords(el);return xBrowser.windowToPageCoords(coords.x,coords.y);}else if(xBrowser.isSafari){var coords={x:0,y:0};do{coords.y+=el.offsetTop||0;coords.x+=el.offsetLeft||0;if(el.offsetParent==document.body)if(xBrowser.currentStyle(el,"position")=="absolute")break;el=el.offsetParent;}while(el);return coords;}else{return el.ownerDocument.getBoxObjectFor(el);}},windowToPageCoords:function(x,y){var coords={x:x,y:y};if(xBrowser.isIE){if(document.compatMode=="BackCompat"){coords.x+=document.body.scrollLeft;coords.y+=document.body.scrollTop;}else{coords.x+=document.documentElement.scrollLeft;coords.y+=document.documentElement.scrollTop;}}else{coords.x+=window.pageXOffset;coords.y+=window.pageYOffset;}return coords;},elementFromPoint:function(x,y,from,checkFirst){if(xBrowser.isIE||xBrowser.isSafari){return document.elementFromPoint(x,y);}else{if(checkFirst){if(xBrowser._pointInRect(xBrowser.elWindowCoords(checkFirst),x,y)){return xBrowser.elementFromPoint(x,y,[checkFirst]);}}from=from||[document.body];for(var j=0;j<from.length;j++){for(var i=0;i<from[j].childNodes.length;i++){var child=from[j].childNodes[i];if(child.nodeType==Node.ELEMENT_NODE&&child.style.display!="none"&&xBrowser._pointInRect(xBrowser.elWindowCoords(child),x,y)){return xBrowser.elementFromPoint(x,y,[child]);}}}return from[0];}},_pointInRect:function(rect,x,y){return(rect.x<=x&&x<=rect.x+rect.width)&&(rect.y<=y&&y<=rect.y+rect.height);},cookie:{get:function(key,subkey,str){if(str){var rstr="&"+str;var start=rstr.indexOf("&"+subkey+"=")+1;if(start==-1)return null;var end=rstr.indexOf("&",start);}else{var rstr=" "+document.cookie;var start=rstr.indexOf(" "+key+"=");if(start==-1)return null;var end=rstr.indexOf(";",start);}if(end==-1)end=rstr.length;var cookie=rstr.substr(start,end-start);cookie=cookie.substr(cookie.indexOf("=")+1,cookie.length-cookie.indexOf("=")+1);if(subkey!=null&&!str){return xBrowser.cookie.get(key,subkey,cookie);}return cookie;},set:function(key,value,expires){var tmp=key+"="+value;if(expires){tmp+="; expires="+expires.toGMTString();}tmp+="; path=/";document.cookie=tmp;return value;},remove:function(key){var tmp=new Date(1900,0,1);document.cookie=key+"= ; path=/ expires="+tmp.toGMTString();}},showCallbackError:function(arg,context){alert(arg+":"+context);},insertAdjacentHTML:function(node,where,html){if(xBrowser.isIE){node.insertAdjacentHTML(where,html);}else{var r=node.ownerDocument.createRange();r.setStartBefore(node);var frag=r.createContextualFragment(html);xBrowser.insertAdjacentElement(node,where,frag);}},insertAdjacentElement:function(relNode,where,node){if(xBrowser.isIE){relNode.insertAdjacentElement(where,node);}else{switch(where){case"beforeBegin":relNode.parentNode.insertBefore(parsedNode,relNode);break;case"afterBegin":relNode.insertBefore(node,relNode.firstChild);break;case"beforeEnd":relNode.appendChild(node);break;case"afterEnd":if(relNode.nextSibling){relNode.parentNode.insertBefore(node,relNode.nextSibling);}else{relNode.parentNode.appendChild(node);}break;}}}};function UClass(){};UClass.prototype.x=xBrowser;UClass.prototype.constructorUClass=function(type,id){this.type=type;this.id=id;this.debugMode=false;this.x=UClass.prototype.x;};UClass.prototype.idStr=function(str){if(!str){return this.id;}else if(this.x.isIE){return str;}else{return this.id+"_"+str;}};UClass.prototype.refStr=function(){return this.type+'s[\''+this.id+'\']';};UClass.prototype.html=function(id){var idStr=this.idStr(id);if(this.x.isIE){if(id){return this.html().all[idStr];}else{return document.all[idStr];}}else{return document.getElementById(idStr);}};UClass.prototype.encaseMethod=function(func,hardArgs){var obj=this;hardArgs=hardArgs||[];return function(){return func.apply(obj,obj.arrayConcat(hardArgs,arguments));}};UClass.prototype.callback=function(data,callBackMethod,id){id=id||this.id;var encasedMethod=callBackMethod?this.encaseMethod(callBackMethod):null;WebForm_DoCallback(id,data,encasedMethod,null,this.debugMode?this.x.showCallbackError:null,encasedMethod!=null);};UClass.prototype.arrayConcat=function(array1,array2){var array=array1.slice(0);for(var i=0;i<array2.length;i++){array.push(array2[i]);}return array;};xBrowser.UClass=UClass;