/**
 * Sexy Forms - for mootools 1.2.3
 * @name      sexyforms.v1.3.mootools.js
 * @author    Eduardo D. Sada - http://www.coders.me/web-html-js-css/javascript/sexy-forms
 * @version   1.3.1
 * @date      30-Oct-2009
 * @license   MIT - http://es.wikipedia.org/wiki/Licencia_MIT
 * @example   http://www.coders.me/ejemplos/sexy-forms/
 * @copyright (c) 2009 Eduardo D. Sada (www.coders.me)
*/

Element.implement(
				  {css:function(a){
					  if($type(a)=="string"){return this.getStyle(a)}else{return this.setStyles(a)}
					  },
					  exact:function(a){if(a=='width'){return this.getComputedStyle('width').toInt()||this.getSize().x}else if(a=='height'){return this.getComputedStyle('height').toInt()||this.getSize().y}else{return this.getComputedStyle(a)}}});SexyElement=new Class({initialize:function(a){this.element=a},addevents:function(){this.element.addEvents({'focus':function(){this.padre.addClass("sexy-"+this.Type+"-focus")}.bind(this),'blur':function(){this.padre.removeClass("sexy-"+this.Type+"-focus")}.bind(this)})},addhover:function(){this.element.addEvents({'mouseenter':function(){this.padre.addClass("sexy-"+this.Type+"-focus")}.bind(this),'mouseleave':function(a){this.padre.removeClass("sexy-"+this.Type+"-focus")}.bind(this),'mousedown':function(){this.padre.addClass("sexy-"+this.Type+"-press")}.bind(this),'mouseup':function(a){this.padre.removeClass("sexy-"+this.Type+"-press")}.bind(this)})},resetStyle:function(a){a.css({'margin':0,'padding':0,'float':'none','border':'0','font-family':'inherit','background':'none'})},reset:function(){if(this.padre){this.element.inject(this.padre,'before');this.padre.dispose();this.element.erase('style');this.element.removeClass('ocultarlodelmostro');this.element.removeClass('sexy-button-input');this.element.removeEvents();this.element.SexyElement=false}},isVisible:function(a){return(!this.padre&&a.css('display')!='none'&&a.css('visibility')!='hidden')},addIcon:function(a){a=a||this.element;if(a.get('icon')){this.hasIcon=true;this.icon.css({'background':'url('+a.get('icon')+') no-repeat left center','width':'1%','padding-left':18})}},create:function(){this.padre=new Element("div",{'class':'sexy-'+this.Type});this.hijoL=new Element("div",{'class':'sexy-'+this.Type+'-left'});this.hijoC=new Element("div",{'class':'sexy-'+this.Type+'-center'});this.hijoR=new Element("div",{'class':'sexy-'+this.Type+'-right'});this.icon=new Element("div")},checkdisabled:function(a){if(a.get('disabled')){this.padre.addClass('sexy-'+this.Type+'-disabled')}}});

SexyElementText=new Class({
						  Extends:SexyElement,
						  initialize:function(a){
							  this.parent(a);
							  this.Type='input';
							  this.beautifier();
							  },create:function(){this.parent();this.padre.adopt(this.hijoL,this.hijoC,this.hijoR);this.padre.inject(this.element,'before');this.hijoC.adopt(this.icon.grab(this.element));this.addIcon()},

beautifier:function(){
	if(!this.isVisible(this.element))return;
	this.create();
	var a=this.element.exact('float');
	var b=this.hijoL.exact('width')*2;
	var c=this.element.exact('width')+b;
	if(c>330){c=330;};
	this.resetStyle(this.element);if(this.hasIcon){c=c+18}this.padre.css({'width':c-8,'float':a});this.element.css({'width':c-8-b-(this.hasIcon?18:0)});this.checkdisabled(this.element);this.addevents();if(Browser.Engine.trident){this.element.css({"font-family":this.element.css("font-family")})}}});SexyElementFile=new Class({Extends:SexyElement,initialize:function(a){this.textito=new Element("input",{'type':'text'}).inject(a,'before');this.parent(this.textito);this.Type='input';this.file=a;this.beautifier()},create:function(){var a=(navigator.language||navigator.systemLanguage||navigator.userLanguage||'en').substr(0,2).toLowerCase()=='es'?'Examinar...':'Browse...';this.parent();this.padre.adopt(this.hijoL,this.hijoC,this.hijoR);this.padre.inject(this.element,'before');this.hijoC.adopt(this.icon.grab(this.element));this.botonsito=new Element("input",{'type':'button','value':a}).inject(this.textito,'after');this.botonsito.SexyElement=new SexyElementButton(this.botonsito);this.file.inject(this.textito,'before');this.addIcon(this.file)},beautifier:function(){if(!this.isVisible(this.file))return;this.create();var a=this.file.exact('float');var b=this.file.exact('width');var c=this.hijoL.exact('width')*2;var b=b+c;this.resetStyle(this.element);this.resetStyle(this.file);if(this.hasIcon){b=b+18}this.padre.css({'width':b-8,'float':a,'position':'relative','overflow':'hidden'});this.element.css({'width':b-8-c-(this.hasIcon?18:0)});this.file.css({'position':'absolute','cursor':'pointer','width':'100%','height':'100%','top':0,'left':0,'z-index':3,'opacity':0,'visibility':'visible'});this.botonsito.SexyElement.padre.css({'float':'none','position':'absolute','top':0,'right':0});this.checkdisabled(this.file);this.element.set('value',this.file.get('value'));this.element.set('readonly','readonly');this.addevents()},addevents:function(){this.parent();this.file.addEvents({'change':function(a){this.element.set('value',this.file.get('value'))}.bind(this),'mouseenter':function(){this.element.fireEvent('mouseenter');this.botonsito.fireEvent('mouseenter')}.bind(this),'mouseleave':function(){this.element.fireEvent('mouseleave');this.botonsito.fireEvent('mouseleave')}.bind(this),'mousedown':function(){this.botonsito.fireEvent('focus')}.bind(this),'mouseup':function(){this.botonsito.fireEvent('blur')}.bind(this)})}});SexyElementTextarea=new Class({Extends:SexyElement,initialize:function(a){this.parent(a);this.Type='area';this.beautifier()},create:function(){this.padre=new Element("div",{'class':'sexy-input'});this.hijoT=new Element("div",{'class':'sexy-area-top'}).grab(new Element("div",{'class':'sexy-area-top2'}));this.hijoC=new Element("div",{'class':'sexy-area-center'});this.hijoC2=new Element("div",{'class':'sexy-area-center2'});this.hijoB=new Element("div",{'class':'sexy-area-bottom'}).grab(new Element("div",{'class':'sexy-area-bottom2'}));this.padre.adopt(this.hijoT.adopt(this.hijoC.adopt(this.hijoB),this.hijoC2));this.padre.inject(this.element,'before');this.hijoC.grab(this.element,'top')},beautifier:function(){if(!this.isVisible(this.element))return;var a=Browser.Engine.trident?(Browser.Engine.trident4?13:11):10;var b=this.element.exact('float');var c=this.element.exact("font-family");var d=this.element.exact("font-weight");var e=this.element.exact("font-size");var f=this.element.exact('width');var g=this.element.exact('height');f=f+(Browser.Engine.trident4?-16:(Browser.Engine.presto?-2:(Browser.Engine.webkit?2:0)));g=g+(Browser.Engine.gecko?-17:(Browser.Engine.trident?-2:(Browser.Engine.trident4?-2:(Browser.Engine.presto?-4:0))));this.create();if(f>478){f=478}this.resetStyle(this.element);this.element.css({'width':f-15,'height':g,'font-family':c,'font-weight':d,'font-size':e,'overflow':'hidden','overflow-x':'hidden','overflow-y':'auto','outline':'none'});this.hijoT.css({'width':f+(Browser.Engine.trident4?15:0)});this.hijoC2.css({'height':g+a});this.checkdisabled(this.element);this.addevents()}});SexyElementButton=new Class({Extends:SexyElement,initialize:function(a){this.parent(a);this.Type='button';this.beautifier()},create:function(){this.parent();this.padre.adopt(this.hijoL.grab(this.hijoR));this.padre.inject(this.element,'before');this.hijoR.grab(this.icon.grab(this.element));this.addIcon()},beautifier:function(){if(!this.isVisible(this.element))return;var a=this.element.exact('float');this.resetStyle(this.element);this.create();this.padre.css({'float':a});this.checkdisabled(this.element);this.addevents();this.addhover();this.element.addClass('sexy-button-input')}});SexyElementRadio=new Class({Extends:SexyElement,initialize:function(a){this.parent(a);this.Type='input';this.beautifier()},create:function(){aClass=this.element.get("type")=="radio"?'sexy-input-radio':'sexy-input-check';this.padre=new Element("div",{'class':'sexy-input'});this.aRadio=new Element('div',{'class':aClass});this.padre.adopt(this.aRadio);this.padre.inject(this.element,'before');this.aRadio.adopt(this.element)},beautifier:function(){if(!this.isVisible(this.element))return;var a=this.element.exact('float');this.resetStyle(this.element);this.create();this.padre.css({'float':a});if(this.element.checked){this.aRadio.addClass("sexy-"+this.element.get("type")+"-checked")}this.checkdisabled(this.element);this.addevents();this.element.addClass('ocultarlodelmostro')},blurall:function(){$$("input[type=radio][name="+this.element.get("name")+"]").each(function(a){if(this.element!==document.id(a)&&a.SexyElement){if(a.SexyElement.padre){a.checked=false;a.SexyElement.aRadio.removeClass("sexy-radio-checked");a.SexyElement.aRadio.removeClass("sexy-checkbox-checked");a.SexyElement.padre.removeClass("sexy-input-focus")}}}.bind(this))},addevents:function(){this.parent();this.aRadio.addEvent('click',function(a){if(!this.element.get('disabled')){this.element.checked=this.element.checked?false:true;if(this.element.get("type")=="radio"){this.blurall();this.element.checked=true;this.aRadio.addClass("sexy-radio-checked")}else{if(this.element.checked){this.aRadio.addClass("sexy-checkbox-checked")}else{this.aRadio.removeClass("sexy-checkbox-checked")}}}}.bind(this));this.element.addEvent('click',function(a){this.aRadio.fireEvent('click',a)}.bind(this))}});SexyElementSelect=new Class({Extends:SexyElement,initialize:function(a){this.parent(a);this.Type='select';this.beautifier()},create:function(){this.parent();this.hijoR=new Element("a",{'class':'sexy-select-right','href':'#'});this.selected=new Element("span");if(this.element.options.length>0){this.selected.set('text',this.element.options[this.element.options.selectedIndex].text)}this.hijoC.grab(this.icon.grab(this.selected));this.lista=new Element("div",{'class':'sexy-select-list'});this.listaUL=new Element("ul");this.footer=new Element("div",{'class':'sexy-select-last-r'}).grab(new Element("div",{'class':'sexy-select-last-l'}).grab(new Element("div",{'class':'sexy-select-last-c'})));this.iewrapper=new Element('div',{'styles':{'position':'relative'}}).adopt(this.listaUL);this.lista.adopt(this.iewrapper,this.footer);this.padre.inject(this.element,'before');this.padre.adopt(this.hijoL,this.hijoC,this.hijoR);this.lista.inject(this.element,'before')},beautifier:function(){if(!this.isVisible(this.element))return;var a=this.element.exact('float');var b=this.element.exact('width').toInt()+18;this.resetStyle(this.element);this.create();this.padre.css({'float':a});this.addIcon();this.hijoC.css({'width':b});this.hijoR.css({'margin':0,'padding':0,'outline':0});this.iewrapper.css({'overflow-x':'hidden','overflow-y':'auto'});this.lista.css({'top':this.padre.offsetTop.toInt()+this.padre.getSize().y,'left':this.padre.offsetLeft.toInt()+1,'width':this.padre.exact('width')-6,'height':'auto','padding':0,'display':'none'});this.listaUL.css({'overflow':'visible','padding':0});this.footer.css({'width':this.padre.exact('width')});this.createlist();this.estado=0;this.checkdisabled(this.element);this.addevents();this.element.css({'display':'none'})},hover:function(a){if(this.hoverElement){this.hoverElement.removeClass('hover')}if(a){this.hoverElement=a.addClass('hover')}},createlist:function(){for(iiC=0;iiC<this.element.options.length;iiC++){var c=document.id(this.element.options[iiC]);elemTO=new Element("a",{'href':'#','rel':iiC,'tabindex':999}).set('text',c.text);elemTO.addEvents({'click':function(a,b){this.selected.set('text',a.get('text'));this.element.options.selectedIndex=b;this.hover(a);this.hijoR.focus();this.ocultar();this.element.fireEvent('change');return false}.bind(this,[elemTO,iiC]),'mouseenter':function(a){this.hover(a)}.bind(this,[elemTO])});this.listaUL.grab(new Element("li").grab(elemTO));if(c.get('icon')){var d=new Element("img",{'src':c.get('icon'),'align':'top'});d.css({'padding-right':2});d.inject(elemTO,'top')}}this.lista.altomaximo=Math.min((this.element.options.length.toInt()+1)*20,160)},ocultar:function(){this.estado=0;this.iewrapper.morph({'height':[this.lista.altomaximo,0]});(function(){var a=this.get('onchange');if($type(a)=='function'){a=a.toString().replace('function anonymous()','').replace('function onchange()','')}eval(a)}.bind(this.element))();this.element.fireEvent('change')},mostrar:function(){this.listaUL.empty();this.createlist();this.estado=1;this.iewrapper.morph({'height':[0,this.lista.altomaximo]})},addevents:function(){this.iewrapper.set('morph',{duration:300,transition:Fx.Transitions.Quint.easeOut,onStart:function(){if(this.estado&&!Browser.Engine.trident4){this.lista.css({'display':'block'})}}.bind(this),onComplete:function(){this.lista.css({'display':this.estado?'block':'none'})}.bind(this)});this.hijoC.addEvent('click',function(a){this.hijoR.fireEvent('click',a);this.hijoR.focus();return false}.bind(this));this.hijoR.addEvent('click',function(){if(!this.element.get('disabled')){if(this.estado){this.ocultar()}else{this.mostrar()}}return false}.bind(this));this.hijoR.addEvent('focus',function(){this.addClass("sexy-select-focus")});this.hijoR.addEvent('focus',function(){this.padre.addClass("sexy-select-focus")}.bind(this));this.hijoR.addEvent('blur',function(){this.padre.removeClass("sexy-select-focus")}.bind(this));this.padre.addEvents({'blur':function(){this.ocultar()}.bind(this),'mouseenter':function(){this.addClass("sexy-select-focus")},'mouseleave':function(){this.removeClass("sexy-select-focus")}});this.hijoR.addEvent('keydown',function(a){if(!this.element.get('disabled')){if(a.alt&&a.key=="down"){if(!this.estado){this.mostrar()}return false}else if(a.alt&&a.key=="up"){this.ocultar();return false}else if(a.key=="down"){if(this.element.options.selectedIndex!=this.element.length-1){this.element.options.selectedIndex+=1;this.refresh()}return false}else if(a.key=="up"){if(this.element.options.selectedIndex!=0){this.element.options.selectedIndex-=1;this.refresh()}return false}else if(a.key=="\""){if(this.element.options.selectedIndex+6<this.element.length-1){this.element.options.selectedIndex+=6}else{this.element.options.selectedIndex=this.element.length-1}this.refresh();return false}else if(a.key=="!"){if(this.element.options.selectedIndex-6>0){this.element.options.selectedIndex-=6}else{this.element.options.selectedIndex=0}this.refresh();return false}return true}}.bind(this));document.addEvents({'mousedown':function(a){if(this.estado&&!this.lista.hasChild(a.target)&&!this.padre.hasChild(a.target)){this.ocultar()}}.bind(this),'keyup':function(a){if(this.estado&&!this.lista.hasChild(a.target)&&!this.padre.hasChild(a.target)){this.ocultar()}}.bind(this)})},refresh:function(){if(this.element.options.length>0){this.selected.set('text',this.element.options[this.element.options.selectedIndex].text)}else{this.selected.set('text','')}fila_li=this.lista.getElement('a[rel='+this.element.options.selectedIndex+']');if(fila_li){this.hover(fila_li);fila_li.focus()}this.hijoR.focus()}});

Element.implement({DoSexy:function(a){
								   a=$extend({'noconflict':false},a||{});
								   if(!this.SexyElement){
									   var b=this.get("type");
									   var c=this.get("tag");
									   if(c=='input'){
										   if(b=="text"||b=="password"||b==null){
											   this.SexyElement=new SexyElementText(this)
										   }else if(b=="submit"||b=="reset"||b=="button"){
											   this.SexyElement=new SexyElementButton(this)
										   }else if(b=="file"){
											   this.SexyElement=new SexyElementFile(this)
										   }else if(b=="radio"||b=="checkbox"){
											   this.SexyElement=new SexyElementRadio(this)
										   }
										   
									   }else if(c=='select'){
										   if(this.get('multiple')){
											   this.SexyElement=new SexyElementTextarea(this)
										   }else if(a['noconflict']){
											   this.SexyElement=new SexyElementText(this)
										   }else{
											   this.SexyElement=new SexyElementSelect(this)
										   }
									   }else if(c=='textarea'){
										   this.SexyElement=new SexyElementTextarea(this)
									   }
									   
								   }
				  },
				  reset:function(){
					  if(this.SexyElement){this.SexyElement.reset()}},refresh:function(){if(this.get('tag')=='select'&&this.SexyElement){this.SexyElement.refresh()}}});function beautify_each_form(){$$("input","select","textarea").each(function(a){a.DoSexy()})};function reset_each_form(){$$("input","select","textarea").each(function(a){a.reset()})};
