/*
* Ext JS Library 3.0 Pre-alpha
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
(function(){var doc=document,isCSS1=doc.compatMode=="CSS1Compat",MAX=Math.max,PARSEINT=parseInt;Ext.lib.Dom={isAncestor:function(p,c){var ret=false;p=Ext.getDom(p);c=Ext.getDom(c);if(p&&c){if(p.contains){return p.contains(c);}else if(p.compareDocumentPosition){return!!(p.compareDocumentPosition(c)&16);}else{while(c=c.parentNode){ret=c==p||ret;}}} return ret;},getViewWidth:function(full){return full?this.getDocumentWidth():this.getViewportWidth();},getViewHeight:function(full){return full?this.getDocumentHeight():this.getViewportHeight();},getDocumentHeight:function(){return MAX(!isCSS1?doc.body.scrollHeight:doc.documentElement.scrollHeight,this.getViewportHeight());},getDocumentWidth:function(){return MAX(!isCSS1?doc.body.scrollWidth:doc.documentElement.scrollWidth,this.getViewportWidth());},getViewportHeight:function(){return Ext.isIE?(Ext.isStrict?doc.documentElement.clientHeight:doc.body.clientHeight):self.innerHeight;},getViewportWidth:function(){return!Ext.isStrict&&!Ext.isOpera?doc.body.clientWidth:Ext.isIE?doc.documentElement.clientWidth:self.innerWidth;},getY:function(el){return this.getXY(el)[1];},getX:function(el){return this.getXY(el)[0];},getXY:function(el){var p,pe,b,bt,bl,dbd,x=0,y=0,scroll,hasAbsolute,bd=(doc.body||doc.documentElement),ret=[0,0];el=Ext.getDom(el);if(el!=bd){if(el.getBoundingClientRect){b=el.getBoundingClientRect();scroll=fly(document).getScroll();ret=[b.left+scroll.left,b.top+scroll.top];}else{p=el;hasAbsolute=fly(el).isStyle("position","absolute");while(p){pe=fly(p);x+=p.offsetLeft;y+=p.offsetTop;hasAbsolute=hasAbsolute||pe.isStyle("position","absolute");if(Ext.isGecko){y+=bt=PARSEINT(pe.getStyle("borderTopWidth"),10)||0;x+=bl=PARSEINT(pe.getStyle("borderLeftWidth"),10)||0;if(p!=el&&!pe.isStyle('overflow','visible')){x+=bl;y+=bt;}} p=p.offsetParent;} if(Ext.isSafari&&hasAbsolute){x-=bd.offsetLeft;y-=bd.offsetTop;} if(Ext.isGecko&&!hasAbsolute){dbd=fly(bd);x+=PARSEINT(dbd.getStyle("borderLeftWidth"),10)||0;y+=PARSEINT(dbd.getStyle("borderTopWidth"),10)||0;} p=el.parentNode;while(p&&p!=bd){if(!Ext.isOpera||(p.tagName!='TR'&&!fly(p).isStyle("display","inline"))){x-=p.scrollLeft;y-=p.scrollTop;} p=p.parentNode;} ret=[x,y];}} return ret},setXY:function(el,xy){(el=Ext.fly(el,'_setXY')).position();var pts=el.translatePoints(xy),style=el.dom.style,pos;for(pos in pts){if(!isNaN(pts[pos]))style[pos]=pts[pos]+"px"}},setX:function(el,x){this.setXY(el,[x,false]);},setY:function(el,y){this.setXY(el,[false,y]);}};})();