Element.extend({getDimensions:function(options){options=$merge({computeSize:false},options);var dim={};function getSize(el,options){if(options.computeSize)dim=el.getComputedSize(options);else{dim.width=el.getSize().size.x;dim.height=el.getSize().size.y}return dim}try{dim=getSize(this,options)}catch(e){}if((dim.x==0||$type(dim.x)!='number')||(dim.y==0||$type(dim.y)!='number')){var holder=new Element('div').setStyles({'position':'absolute','top':'-1000px','left':'-1000px','display':'block'}).injectAfter(this);var clone=this.clone().injectInside(holder).show();dim=getSize(clone,options);holder.remove()}return $merge(dim,{x:dim.width,y:dim.height})},getComputedSize:function(options){options=$merge({styles:['padding','border'],plains:{height:['top','bottom'],width:['left','right']},mode:'both'},options);var size={width:0,height:0};switch(options.mode){case'vertical':delete size.width;delete options.plains.width;break;case'horizontal':delete size.height;delete options.plains.height;break}var getStyles=[];$each(options.plains,function(plain,key){plain.each(function(edge){options.styles.each(function(style){getStyles.push((style=="border")?style+'-'+edge+'-'+'width':style+'-'+edge)})})});var styles=this.getStyles.apply(this,getStyles);var subtracted=[];$each(options.plains,function(plain,key){size['total'+key.capitalize()]=0;size['computed'+key.capitalize()]=0;plain.each(function(edge){size['computed'+edge.capitalize()]=0;getStyles.each(function(style,i){if(style.test(edge)){styles[style]=styles[style].toInt();if(isNaN(styles[style]))styles[style]=0;size['total'+key.capitalize()]=size['total'+key.capitalize()]+styles[style];size['computed'+edge.capitalize()]=size['computed'+edge.capitalize()]+styles[style]}if(style.test(edge)&&key!=style&&(style.test('border')||style.test('padding'))&&!subtracted.test(style)){subtracted.push(style);size['computed'+key.capitalize()]=size['computed'+key.capitalize()]-styles[style]}})})});if($chk(size.width)){size.width=size.width+this.offsetWidth+size.computedWidth;size.totalWidth=size.width+size.totalWidth;delete size.computedWidth}if($chk(size.height)){size.height=size.height+this.offsetHeight+size.computedHeight;size.totalHeight=size.height+size.totalHeight;delete size.computedHeight}return $merge(styles,size)},setPosition:function(options){options=$merge({relativeTo:document.body,position:'center',edge:false,offset:{x:0,y:0},smoothMove:false,effectOptions:{},returnPos:false},options);this.setStyle('position','absolute');var rel=$(options.relativeTo)||document.body;var top=(rel==document.body)?window.getScrollTop():rel.getTop();if(top<0)top=0;var left=(rel==document.body)?window.getScrollLeft():rel.getLeft();if(left<0)left=0;var dim=this.getDimensions({computeSize:true});var pos;var prefY=options.offset.y.toInt();var prefX=options.offset.x.toInt();switch(options.position){case'upperLeft':pos={x:(left+prefX),y:(top+prefY)};break;case'upperRight':pos={x:(left+prefX+rel.offsetWidth),y:(top+prefY)};break;case'bottomLeft':pos={x:(left+prefX),y:(top+prefY+rel.offsetHeight)};break;case'bottomRight':pos={y:(left+prefX+rel.offsetWidth),x:(top+prefY+rel.offsetHeight)};break;default:pos={x:left+(((rel==document.body)?window.getWidth():rel.offsetWidth)/2)+prefX,y:top+(((rel==document.body)?window.getHeight():rel.offsetHeight)/2)+prefY};options.edge="center";break}if(options.edge){var edgeOffset;switch(options.edge){case'upperLeft':edgeOffset={x:0,y:0};break;case'upperRight':edgeOffset={x:-dim.x-dim.computedRight-dim.computedLeft,y:0};break;case'bottomLeft':edgeOffset={x:0,y:-dim.y-dim.computedTop-dim.computedBottom};break;case'bottomRight':edgeOffset={x:-dim.x-dim.computedRight-dim.computedLeft,y:-dim.y-dim.computedTop-dim.computedBottom};break;default:edgeOffset={x:-(dim.x/2),y:-(dim.y/2)};break}pos.x=pos.x+edgeOffset.x;pos.y=pos.y+edgeOffset.y}pos={left:((pos.x>=0)?pos.x:0).toInt()+'px',top:((pos.y>=0)?pos.y:0).toInt()+'px'};if(options.returnPos)return pos;if(options.smoothMove&&this.effects)this.effects(options.effectOptions).start(pos);else this.setStyles(pos);return this},visible:function(){return this.getStyle('display')!='none'},toggle:function(){return this[this.visible()?'hide':'show']()},hide:function(){this.originalDisplay=this.getStyle('display');this.setStyle('display','none');return this},smoothHide:function(options){options=$merge({styles:['padding','border','margin'],mode:'vertical'},options);if(this.getStyle('display')!='none'){var startStyles=this.getComputedSize({styles:options.styles,mode:options.mode});if(this.fxOpacityOk())startStyles.opacity=1;var zero={};$each(startStyles,function(style,name){zero[name]=(name.test('width')||name.test('height'))?'0px':0;startStyles[name]=(name.test('width')||name.test('height'))?style+'px':style});this.effects(options).start(zero).chain(function(){this.setStyles(startStyles).setStyle('display','none')}.bind(this))}return this},smoothShow:function(options){if(arguments[1])options.heightOverride=arguments[1];options=$merge({styles:['padding','border','margin'],mode:'vertical'},options);if(this.getStyle('display')=="none"||this.getStyle('visiblity')=="hidden"||this.getStyle('opacity')==0){this.setStyle('display','block');if(this.fxOpacityOk())this.setStyle('opacity',0);var startStyles=this.getComputedSize({styles:options.styles,mode:options.mode});if(this.fxOpacityOk())startStyles.opacity=1;var zero={height:'0px'};$each(startStyles,function(style,name){zero[name]=(name.test('width')||name.test('height'))?'0px':0});this.setStyles(zero).effects(options).start(startStyles)}return this},show:function(display){this.originalDisplay=(this.originalDisplay=="none")?'block':this.originalDisplay;this.setStyle('display',(display||this.originalDisplay||'block'));return this},cleanWhitespace:function(){$A(this.childNodes).each(function(node){if(node.nodeType==3&&!/\S/.test(node.nodeValue))node.parentNode.removeChild(node)});return this},find:function(what){var element=this[what];while(element.nodeType!=1)element=element[what];return element},replace:function(html,evalScripts){if(this.outerHTML){this.outerHTML=html.stripScripts()}else{var range=this.ownerDocument.createRange();range.selectNodeContents(this);this.parentNode.replaceChild(range.createContextualFragment(html.stripScripts()),this)}if($pick(evalScripts,true))html.evalScripts.delay(10,html)},isEmpty:function(){return!!this.innerHTML.match(/^\s*$/)},getOffsetHeight:function(){return this.offsetWidth},getOffsetWidth:function(){return this.offsetWidth},tidy:function(){try{if(this.getValue().tidy())this.value=this.getValue().tidy()}catch(e){dbug.log('element.tidy error: %o',e)}},fxOpacityOk:function(){if(!window.ie6)return true;var isColor=false;try{if(new Color(this.getStyle('backgroundColor')))isColor=true}catch(e){}return isColor},isEmpty:function(){return this.childNodes.length==0}});if(typeof Mootools=="undefined"||!(Mootools&&Mootools.version&&Mootools.version.toFloat()>1)){Element.extend({empty:function(){return this.setHTML('')}})}var $S=$$;
