/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.2.1
*/
(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf("opera")>-1),isSafari=(ua.indexOf("safari")>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf("gecko")>-1),isIE=(!isOpera&&ua.indexOf("msie")>-1);var patterns={HYPHEN:/(-[a-z])/i,ROOT_TAG:/body|html/i};var toCamel=function(property){if(!patterns.HYPHEN.test(property)){return property}if(propertyCache[property]){return propertyCache[property]}var converted=property;while(patterns.HYPHEN.exec(converted)){converted=converted.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase())}propertyCache[property]=converted;return converted};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,property){var value=null;if(property=="float"){property="cssFloat"}var computed=document.defaultView.getComputedStyle(el,"");if(computed){value=computed[toCamel(property)]}return el.style[property]||value}}else{if(document.documentElement.currentStyle&&isIE){getStyle=function(el,property){switch(toCamel(property)){case"opacity":var val=100;try{val=el.filters["DXImageTransform.Microsoft.Alpha"].opacity}catch(e){try{val=el.filters("alpha").opacity}catch(e){}}return val/100;break;case"float":property="styleFloat";default:var value=el.currentStyle?el.currentStyle[property]:null;return(el.style[property]||value)}}}else{getStyle=function(el,property){return el.style[property]}}}if(isIE){setStyle=function(el,property,val){switch(property){case"opacity":if(YAHOO.lang.isString(el.style.filter)){el.style.filter="alpha(opacity="+val*100+")";if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1}}break;case"float":property="styleFloat";default:el.style[property]=val}}}else{setStyle=function(el,property,val){if(property=="float"){property="cssFloat"}el.style[property]=val}}YAHOO.util.Dom={get:function(el){if(YAHOO.lang.isString(el)){return document.getElementById(el)}if(YAHOO.lang.isArray(el)){var c=[];for(var i=0,len=el.length;i<len;++i){c[c.length]=Y.Dom.get(el[i])}return c}if(el){return el}return null},getStyle:function(el,property){property=toCamel(property);var f=function(element){return getStyle(element,property)};return Y.Dom.batch(el,f,Y.Dom,true)},setStyle:function(el,property,val){property=toCamel(property);var f=function(element){setStyle(element,property,val)};Y.Dom.batch(el,f,Y.Dom,true)},getXY:function(el){var f=function(el){if((el.parentNode===null||el.offsetParent===null||this.getStyle(el,"display")=="none")&&el!=document.body){return false}var parentNode=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false}}var scrollTop=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var scrollLeft=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return[box.left+scrollLeft,box.top+scrollTop]}else{pos=[el.offsetLeft,el.offsetTop];parentNode=el.offsetParent;var hasAbs=this.getStyle(el,"position")=="absolute";if(parentNode!=el){while(parentNode){pos[0]+=parentNode.offsetLeft;pos[1]+=parentNode.offsetTop;if(isSafari&&!hasAbs&&this.getStyle(parentNode,"position")=="absolute"){hasAbs=true}parentNode=parentNode.offsetParent}}if(isSafari&&hasAbs){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop}}parentNode=el.parentNode;while(parentNode.tagName&&!patterns.ROOT_TAG.test(parentNode.tagName)){if(isOpera&&Y.Dom.getStyle(parentNode,"display")!="inline"){pos[0]-=parentNode.scrollLeft;pos[1]-=parentNode.scrollTop}parentNode=parentNode.parentNode}return pos};return Y.Dom.batch(el,f,Y.Dom,true)},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0]};return Y.Dom.batch(el,f,Y.Dom,true)},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1]};return Y.Dom.batch(el,f,Y.Dom,true)},setXY:function(el,pos,noRetry){var f=function(el){var style_pos=this.getStyle(el,"position");if(style_pos=="static"){this.setStyle(el,"position","relative");style_pos="relative"}var pageXY=this.getXY(el);if(pageXY===false){return false}var delta=[parseInt(this.getStyle(el,"left"),10),parseInt(this.getStyle(el,"top"),10)];if(isNaN(delta[0])){delta[0]=(style_pos=="relative")?0:el.offsetLeft}if(isNaN(delta[1])){delta[1]=(style_pos=="relative")?0:el.offsetTop}if(pos[0]!==null){el.style.left=pos[0]-pageXY[0]+delta[0]+"px"}if(pos[1]!==null){el.style.top=pos[1]-pageXY[1]+delta[1]+"px"}if(!noRetry){var newXY=this.getXY(el);if((pos[0]!==null&&newXY[0]!=pos[0])||(pos[1]!==null&&newXY[1]!=pos[1])){this.setXY(el,pos,true)}}};Y.Dom.batch(el,f,Y.Dom,true)},setX:function(el,x){Y.Dom.setXY(el,[x,null])},setY:function(el,y){Y.Dom.setXY(el,[null,y])},getRegion:function(el){var f=function(el){var region=new Y.Region.getRegion(el);return region};return Y.Dom.batch(el,f,Y.Dom,true)},getClientWidth:function(){return Y.Dom.getViewportWidth()},getClientHeight:function(){return Y.Dom.getViewportHeight()},getElementsByClassName:function(className,tag,root){var method=function(el){return Y.Dom.hasClass(el,className)};return Y.Dom.getElementsBy(method,tag,root)},hasClass:function(el,className){var re=new RegExp("(?:^|\\s+)"+className+"(?:\\s+|$)");var f=function(el){return re.test(el.className)};return Y.Dom.batch(el,f,Y.Dom,true)},addClass:function(el,className){var f=function(el){if(this.hasClass(el,className)){return}el.className=[el.className,className].join(" ")};Y.Dom.batch(el,f,Y.Dom,true)},removeClass:function(el,className){var re=new RegExp("(?:^|\\s+)"+className+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,className)){return}var c=el.className;el.className=c.replace(re," ");if(this.hasClass(el,className)){this.removeClass(el,className)}};Y.Dom.batch(el,f,Y.Dom,true)},replaceClass:function(el,oldClassName,newClassName){if(oldClassName===newClassName){return false}var re=new RegExp("(?:^|\\s+)"+oldClassName+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,newClassName);return}el.className=el.className.replace(re," "+newClassName+" ");if(this.hasClass(el,oldClassName)){this.replaceClass(el,oldClassName,newClassName)}};Y.Dom.batch(el,f,Y.Dom,true)},generateId:function(el,prefix){prefix=prefix||"yui-gen";el=el||{};var f=function(el){if(el){el=Y.Dom.get(el)}else{el={}}if(!el.id){el.id=prefix+id_counter++}return el.id};return Y.Dom.batch(el,f,Y.Dom,true)},isAncestor:function(haystack,needle){haystack=Y.Dom.get(haystack);if(!haystack||!needle){return false}var f=function(needle){if(haystack.contains&&!isSafari){return haystack.contains(needle)}else{if(haystack.compareDocumentPosition){return !!(haystack.compareDocumentPosition(needle)&16)}else{var parent=needle.parentNode;while(parent){if(parent==haystack){return true}else{if(!parent.tagName||parent.tagName.toUpperCase()=="HTML"){return false}}parent=parent.parentNode}return false}}};return Y.Dom.batch(needle,f,Y.Dom,true)},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el)};return Y.Dom.batch(el,f,Y.Dom,true)},getElementsBy:function(method,tag,root){tag=tag||"*";var nodes=[];if(root){root=Y.Dom.get(root);if(!root){return nodes}}else{root=document}var elements=root.getElementsByTagName(tag);if(!elements.length&&(tag=="*"&&root.all)){elements=root.all}for(var i=0,len=elements.length;i<len;++i){if(method(elements[i])){nodes[nodes.length]=elements[i]}}return nodes},batch:function(el,method,o,override){var id=el;el=Y.Dom.get(el);var scope=(override)?o:window;if(!el||el.tagName||!el.length){if(!el){return false}return method.call(scope,el,o)}var collection=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i]}collection[collection.length]=method.call(scope,el[i],o)}return collection},getDocumentHeight:function(){var scrollHeight=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(scrollHeight,Y.Dom.getViewportHeight());return h},getDocumentWidth:function(){var scrollWidth=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(scrollWidth,Y.Dom.getViewportWidth());return w},getViewportHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||isIE)&&!isOpera){height=(mode=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight}return height},getViewportWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||isIE){width=(mode=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth}return width}}})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&&region.right<=this.right&&region.top>=this.top&&region.bottom<=this.bottom)};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left))};YAHOO.util.Region.prototype.intersect=function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l)}else{return null}};YAHOO.util.Region.prototype.union=function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new YAHOO.util.Region(t,r,b,l)};YAHOO.util.Region.prototype.toString=function(){return("Region {top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}")};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l)};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0]}this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.2.1",build:"193"});