MooTools.More={version:"1.2.4.4",build:"6f6057dc645fdb7547689183b2311063bd653ddf"};var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Object.type,element:$defined});
this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=$type(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;
this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.Engine.trident)?"selectstart":"mousedown";this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};
this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);
return this;},start:function(c){if(c.rightClick){return;}if(this.options.preventDefault){c.preventDefault();}if(this.options.stopPropagation){c.stopPropagation();
}this.mouse.start=c.page;this.fireEvent("beforeStart",this.element);var a=this.options.limit;this.limit={x:[],y:[]};for(var d in this.options.modifiers){if(!this.options.modifiers[d]){continue;
}if(this.options.style){this.value.now[d]=this.element.getStyle(this.options.modifiers[d]).toInt();}else{this.value.now[d]=this.element[this.options.modifiers[d]];
}if(this.options.invert){this.value.now[d]*=-1;}this.mouse.pos[d]=c.page[d]-this.value.now[d];if(a&&a[d]){for(var b=2;b--;b){if($chk(a[d][b])){this.limit[d][b]=$lambda(a[d][b])();
}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});
this.document.addEvent(this.selection,this.bound.eventStop);},check:function(a){if(this.options.preventDefault){a.preventDefault();}var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));
if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);
}},drag:function(a){if(this.options.preventDefault){a.preventDefault();}this.mouse.now=a.page;for(var b in this.options.modifiers){if(!this.options.modifiers[b]){continue;
}this.value.now[b]=this.mouse.now[b]-this.mouse.pos[b];if(this.options.invert){this.value.now[b]*=-1;}if(this.options.limit&&this.limit[b]){if($chk(this.limit[b][1])&&(this.value.now[b]>this.limit[b][1])){this.value.now[b]=this.limit[b][1];
}else{if($chk(this.limit[b][0])&&(this.value.now[b]<this.limit[b][0])){this.value.now[b]=this.limit[b][0];}}}if(this.options.grid[b]){this.value.now[b]-=((this.value.now[b]-(this.limit[b][0]||0))%this.options.grid[b]);
}if(this.options.style){this.element.setStyle(this.options.modifiers[b],this.value.now[b]+this.options.unit);}else{this.element[this.options.modifiers[b]]=this.value.now[b];
}}this.fireEvent("drag",[this.element,a]);},cancel:function(a){this.document.removeEvent("mousemove",this.bound.check);this.document.removeEvent("mouseup",this.bound.cancel);
if(a){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element);}},stop:function(a){this.document.removeEvent(this.selection,this.bound.eventStop);
this.document.removeEvent("mousemove",this.bound.drag);this.document.removeEvent("mouseup",this.bound.stop);if(a){this.fireEvent("complete",[this.element,a]);
}}});Element.implement({makeResizable:function(a){var b=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},a));this.store("resizer",b);return b.addEvent("drag",function(){this.fireEvent("resize",b);
}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(b,a){this.parent(b,a);
b=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&$type(this.container)!="element"){this.container=document.id(this.container.getDocument().body);
}var c=b.getStyles("left","top","position");if(c.left=="auto"||c.top=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()));}if(c.position=="static"){b.setStyle("position","absolute");
}this.addEvent("start",this.checkDroppables,true);this.overed=null;},start:function(a){if(this.container){this.options.limit=this.calculateLimit();}if(this.options.precalculate){this.positions=this.droppables.map(function(b){return b.getCoordinates();
});}this.parent(a);},calculateLimit:function(){var d=this.element.getOffsetParent(),g=this.container.getCoordinates(d),f={},c={},b={},i={},k={};["top","right","bottom","left"].each(function(o){f[o]=this.container.getStyle("border-"+o).toInt();
b[o]=this.element.getStyle("border-"+o).toInt();c[o]=this.element.getStyle("margin-"+o).toInt();i[o]=this.container.getStyle("margin-"+o).toInt();k[o]=d.getStyle("padding-"+o).toInt();
},this);var e=this.element.offsetWidth+c.left+c.right,n=this.element.offsetHeight+c.top+c.bottom,h=0,j=0,m=g.right-f.right-e,a=g.bottom-f.bottom-n;if(this.options.includeMargins){h+=c.left;
j+=c.top;}else{m+=c.right;a+=c.bottom;}if(this.element.getStyle("position")=="relative"){var l=this.element.getCoordinates(d);l.left-=this.element.getStyle("left").toInt();
l.top-=this.element.getStyle("top").toInt();h+=f.left-l.left;j+=f.top-l.top;m+=c.left-l.left;a+=c.top-l.top;if(this.container!=d){h+=i.left+k.left;j+=(Browser.Engine.trident4?0:i.top)+k.top;
}}else{h-=c.left;j-=c.top;if(this.container==d){m-=f.left;a-=f.top;}else{h+=g.left+f.left;j+=g.top+f.top;}}return{x:[h,m],y:[j,a]};},checkAgainst:function(c,b){c=(this.positions)?this.positions[b]:c.getCoordinates();
var a=this.mouse.now;return(a.x>c.left&&a.x<c.right&&a.y<c.bottom&&a.y>c.top);},checkDroppables:function(){var a=this.droppables.filter(this.checkAgainst,this).getLast();
if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);}if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);
if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables();}},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);
this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a);this.store("dragger",b);return b;}});
var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false},initialize:function(a,b){this.setOptions(b);
this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(a)||a));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,$merge({duration:250,link:"cancel"},this.options.revert));
}},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(a){this.elements.push(a);
var b=a.retrieve("sortables:start",this.start.bindWithEvent(this,a));(this.options.handle?a.getElement(this.options.handle)||a:a).addEvent("mousedown",b);
},this);return this;},addLists:function(){Array.flatten(arguments).each(function(a){this.lists.push(a);this.addItems(a.getChildren());},this);return this;
},removeItems:function(){return $$(Array.flatten(arguments).map(function(a){this.elements.erase(a);var b=a.retrieve("sortables:start");(this.options.handle?a.getElement(this.options.handle)||a:a).removeEvent("mousedown",b);
return a;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(a){this.lists.erase(a);this.removeItems(a.getChildren());return a;
},this));},getClone:function(b,a){if(!this.options.clone){return new Element("div").inject(document.body);}if($type(this.options.clone)=="function"){return this.options.clone.call(this,b,a,this.list);
}var c=a.clone(true).setStyles({margin:"0px",position:"absolute",visibility:"hidden",width:a.getStyle("width")});if(c.get("html").test("radio")){c.getElements("input[type=radio]").each(function(d,e){d.set("name","clone_"+e);
});}return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent()));},getDroppables:function(){var a=this.list.getChildren();if(!this.options.constrain){a=this.lists.concat(a).erase(this.list);
}return a.erase(this.clone).erase(this.element);},insert:function(c,b){var a="inside";if(this.lists.contains(b)){this.list=b;this.drag.droppables=this.getDroppables();
}else{a=this.element.getAllPrevious().contains(b)?"before":"after";}this.element.inject(b,a);this.fireEvent("sort",[this.element,this.clone]);},start:function(b,a){if(!this.idle){return;
}this.idle=false;this.element=a;this.opacity=a.get("opacity");this.list=a.getParent();this.clone=this.getClone(b,a);this.drag=new Drag.Move(this.clone,{snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){b.stop();
this.clone.setStyle("visibility","visible");this.element.set("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)});
this.clone.inject(this.element,"before");this.drag.start(b);},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var a=this.element.getStyles("width","height");
var b=this.clone.computePosition(this.element.getPosition(this.clone.offsetParent));this.effect.element=this.clone;this.effect.start({top:b.top,left:b.left,width:a.width,height:a.height,opacity:0.25}).chain(this.reset.bind(this));
}else{this.reset();}},reset:function(){this.idle=true;this.clone.destroy();this.fireEvent("complete",this.element);},serialize:function(){var c=Array.link(arguments,{modifier:Function.type,index:$defined});
var b=this.lists.map(function(d){return d.getChildren().map(c.modifier||function(e){return e.get("id");},this);},this);var a=c.index;if(this.lists.length==1){a=0;
}return $chk(a)&&a>=0&&a<this.lists.length?b[a]:b;}});(function(){var a=function(c,b){return(c)?($type(c)=="function"?c(b):b.get(c)):"";};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block");
},onHide:function(){this.tip.setStyle("display","none");},title:"title",text:function(b){return b.get("rel")||b.get("href");},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false},initialize:function(){var b=Array.link(arguments,{options:Object.type,elements:$defined});
this.setOptions(b.options);if(b.elements){this.attach(b.elements);}this.container=new Element("div",{"class":"tip"});},toElement:function(){if(this.tip){return this.tip;
}return this.tip=new Element("div",{"class":this.options.className,styles:{position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"})).inject(document.body);
},attach:function(b){$$(b).each(function(d){var f=a(this.options.title,d),e=a(this.options.text,d);d.erase("title").store("tip:native",f).retrieve("tip:title",f);
d.retrieve("tip:text",e);this.fireEvent("attach",[d]);var c=["enter","leave"];if(!this.options.fixed){c.push("move");}c.each(function(h){var g=d.retrieve("tip:"+h);
if(!g){g=this["element"+h.capitalize()].bindWithEvent(this,d);}d.store("tip:"+h,g).addEvent("mouse"+h,g);},this);},this);return this;},detach:function(b){$$(b).each(function(d){["enter","leave","move"].each(function(e){d.removeEvent("mouse"+e,d.retrieve("tip:"+e)).eliminate("tip:"+e);
});this.fireEvent("detach",[d]);if(this.options.title=="title"){var c=d.retrieve("tip:native");if(c){d.set("title",c);}}},this);return this;},elementEnter:function(c,b){this.container.empty();
["title","text"].each(function(e){var d=b.retrieve("tip:"+e);if(d){this.fill(new Element("div",{"class":"tip-"+e}).inject(this.container),d);}},this);$clear(this.timer);
this.timer=(function(){this.show(this,b);this.position((this.options.fixed)?{page:b.getPosition()}:c);}).delay(this.options.showDelay,this);},elementLeave:function(c,b){$clear(this.timer);
this.timer=this.hide.delay(this.options.hideDelay,this,b);this.fireForParent(c,b);},fireForParent:function(c,b){b=b.getParent();if(!b||b==document.body){return;
}if(b.retrieve("tip:enter")){b.fireEvent("mouseenter",c);}else{this.fireForParent(c,b);}},elementMove:function(c,b){this.position(c);},position:function(e){if(!this.tip){document.id(this);
}var c=window.getSize(),b=window.getScroll(),f={x:this.tip.offsetWidth,y:this.tip.offsetHeight},d={x:"left",y:"top"},g={};for(var h in d){g[d[h]]=e.page[h]+this.options.offset[h];
if((g[d[h]]+f[h]-b[h])>c[h]-this.options.windowPadding[h]){g[d[h]]=e.page[h]-this.options.offset[h]-f[h];}}this.tip.setStyles(g);},fill:function(b,c){if(typeof c=="string"){b.set("html",c);
}else{b.adopt(c);}},show:function(b){if(!this.tip){document.id(this);}this.fireEvent("show",[this.tip,b]);},hide:function(b){if(!this.tip){document.id(this);
}this.fireEvent("hide",[this.tip,b]);}});})();


	/*
		Function: placeholder
		Desc: aplica regla para efecto placeholder para un campo input.
	*/
	function placeHolder(objId, style_off)
	{
		var obj = $(objId);
		var txt = obj.get('placeholder');

		if(txt)
		{
			obj

			.set('value', txt)

			.addClass(style_off)

			.addEvent('focus', function(){
				if(txt == obj.value)
				{
					obj
						.set('value','')
						.removeClass(style_off)
				}
			})

			.addEvent('blur', function(){
				if(obj.value == '' || obj.value == txt)
				{
					obj
						.set('value',txt)
						.addClass(style_off)
				}
			})
		}
	}

	/*
		Function: autosearch
		Desc: aplica regla para efecto placeholder para un campo input.
	*/
	var autoSearch = new Class({

	    Implements: [Options, Events],

		options: {
			objContainer:			false,
			objTrigger:				false,
			objLoader:				false,
			urlSearch:				false,
			urlFinal:				false,

			styleLoader:			'loader_B'
		},

	   	Obj: {
	   		ajax: 					false,
	   		fx:						false
	   	},

	    UI: {
	    	objLayer:				false,
	    	objContainer:			false,
	    	objTrigger:				false,
	    	objLoader:				false
	    },

	    data: {
	    	size:					700
	    },

		initialize: function(options){

			/* Procesar nuevas ocpiones */
	        this.setOptions(options);

	        /* Asignar elementos */
	        this.UI.objLayer 		= $(this.options.objLayer);
	        this.UI.objContainer 	= $(this.options.objContainer);
	        this.UI.objTrigger		= $(this.options.objTrigger);
	        this.UI.objLoader 		= $(this.options.objLoader);

			/* Crear FX.toogle */
			this.Obj.fx = new Fx.Tween(this.options.objLayer,{
				duration: 700,
				transition: Fx.Transitions.Quart.easeOut
			});

			/* Crear Objet Ajax */
			this.Obj.ajax 	= new Request.HTML({
				evalScripts: false,
				link: 'cancel',
				onRequest: function()
				{
					this.UI.objLoader.addClass(this.options.styleLoader);
				}.bind(this),
	    		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
					this.UI.objContainer.set('html',responseHTML);
					this.UI.objLoader.removeClass(this.options.styleLoader);
					this.show();
	    		}.bind(this)
			})

			/* Display Blokc */
			this.UI.objLayer.setStyle('height', 0);
			this.UI.objLayer.setStyle('display','block');


			/* Add KeyEvent */
			this.UI.objTrigger.addEvent('keydown', function(event){

			 	Event.Keys.enter = 13;

			 	if(this.UI.objTrigger.value && event.key == "enter")
			 	{
			 		window.location.href = this.options.urlFinal + "?enviar=1&b=" + this.UI.objTrigger.value;
			 	}

			 	if(this.UI.objTrigger.value.length > 2 && event.key.length == 1)
			 	{
			 		this.search(this.UI.objTrigger.value + event.key);
			 	}
			}.bind(this))

			/* Add MouseLeave
			this.UI.objContainer.addEvent('mouseleave', function(){
			    this.hide();
			}.bind(this))
			*/

			/* On Blur */

			this.UI.objTrigger.addEvent('blur', function(){
			    this.hide();
			}.bind(this))

		},

		search: function(s){
			var req = new Request.HTML({
				url: '/autosearch.php',
				method: 'get',
				data: { enviar: '1', b: s },
				evalScripts: false,
				link: 'cancel',
				onRequest: function()
				{
					this.UI.objLoader.addClass(this.options.styleLoader);
				}.bind(this),
	    		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
					this.UI.objContainer.set('html',responseHTML);
					this.UI.objLoader.removeClass(this.options.styleLoader);
					this.show();
	    		}.bind(this)
			}).send();
		},

		show: function(){
			this.Obj.fx.start('height', 0, this.data.size);
		},

		hide: function(){
			this.Obj.fx.start('height', this.data.size, 0);
		}

	});


	/*
		Function: changeView
		Desc: aplica regla para efecto placeholder para un campo input.
	*/
	var toggleView = new Class({

	    Implements: [Options, Events],

		options: {
			objTrigger:			false,
			obj_A:				false,
			obj_B:				false
		},


	   	Obj: {
	   		fx_A:				false,
	   		fx_B:				false
	   	},

	    UI: {
	    	objTrigger:			false,
			obj_A:				false,
			obj_B:				false
	    },

		data: {
			actual_show:		0,
			obj_A_size:			0,
			obj_B_size:			0
		},

		initialize: function(options){

	        this.setOptions(options);


	        this.UI.objTrigger 		= $(this.options.objTrigger);
	        this.UI.obj_A 			= $(this.options.obj_A);
	        this.UI.obj_B 			= $(this.options.obj_B);



			this.Obj.fx_A = new Fx.Tween(this.UI.obj_A,{
				duration: 700,
				link: 'cancel',
				transition: Fx.Transitions.Quart.easeOut
			});

			this.Obj.fx_B = new Fx.Tween(this.UI.obj_B,{
				duration: 700,
				link: 'cancel',
				transition: Fx.Transitions.Quart.easeOut
			});

			this.UI.objTrigger.removeClass(this.options.styleAlt);


			//this.UI.obj_A.setStyle('overflow','hidden');
			//this.UI.obj_B.setStyle('overflow','hidden');

			this.UI.obj_B.setStyle('height', 0);
			this.UI.obj_B.setStyle('display','block');

			this.data.obj_A_size = this.UI.obj_A.getScrollSize().y;
			this.data.obj_B_size = this.UI.obj_B.getScrollSize().y;

			this.UI.objTrigger.addEvent('click', function(){
				this.change();
			}.bind(this))
		},

		change: function(){

			if(this.data.actual_show)
			{
				this.UI.objTrigger.removeClass(this.options.styleAlt);
				this.data.actual_show = 0;
				this.Obj.fx_B.start('height', 0);
				this.Obj.fx_A.start('height', this.data.obj_A_size);
			}
			else
			{
				this.UI.objTrigger.addClass(this.options.styleAlt);
				this.data.actual_show = 1;
				this.Obj.fx_A.start('height', 0);
				this.Obj.fx_B.start('height', this.data.obj_B_size);
			}
		}
	});



	/*
		Class: Tabs
	*/
	var tabs = new Class({

		Implements: [Options, Events],

	    options: {
			objTabs: 			false,
			objBind:			false,
			urlAjx: 			false,

			modeType: 			'ajax', // dom / ajax
			modeKeep: 			'keep', // keep / destroy

			styleLoader:		'loader_C',
			styleCurrent:		'current',

			startLoad:			false,

			onTabClick:  		$empty,
			onTabOver:  		$empty,
			onTabLoad:  		$empty,
			onTabError:  		$empty,
			onTabChange:  		$empty,
			onStartTab:  		$empty,


			onTabShowLast:  	$empty,
			onTabShowFirst:  	$empty
	    },

	   	Obj: {
	   		ajax: false
	   	},

	    UI: {
	    	objTabs:	false,
	    	objBind:	false
	    },

	    data: {
	    	tabShowed: 0,
	    	tabClicked: 0,
	    	lastData: false
	    },

	    initialize: function(options){

	       	this.setOptions(options);

	    	this.UI.objTabs = $(options.objTabs);
	    	this.UI.objTabs = this.UI.objTabs.getChildren();
	    	this.UI.objBind = $(options.objBind);

			this.processTabs();

				this.Obj.ajax = new Request.HTML({
					evalScripts: false,
					onRequest: function(){
						this.UI.objBind.set('html','');
						this.UI.objBind.addClass(this.options.styleLoader);
					}.bind(this),
		    		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
						this.UI.objBind.removeClass(this.options.styleLoader);

						this.data.lastData = responseHTML;

						this.UI.objBind.innerHTML = this.data.lastData;
						this.UI.objBind.set('html',this.data.lastData);


						(function(){
							this.UI.objBind.set('html',this.data.lastData); // for redner IE bugÃ¢â‚¬Â¦
							this.fireEvent("onTabChange");
						}.bind(this)).delay(200);


						this.UI.objTabs[this.data.tabClicked].store('tab_content', responseHTML);

						this.setTab();
						this.fireEvent("onTabLoad");

		    		}.bind(this)
				})

			if(this.options.startLoad)
			{
				this.load(this.options.startLoad);
			}

			this.fireEvent("onStartTab");
	    },

	    processTabs: function()
	    {
			this.UI.objTabs.getChildren().each(function(item, key){

				if(this.options.modeKeep == 'keep' && this.options.urlAjx[key].status == 'loaded')
				{
					this.data.tabShowd = key;
					this.UI.objTabs[key].store('tab_content', this.UI.objBind.get('html'));;
				}

			   	item.addEvent('click', function(event){
				   		this.load(key);
				}.bind(this));
			}.bind(this))
	    },

	    setTab: function()
	    {

	    	this.UI.objTabs[this.data.tabShowed].removeClass('current');
	    	this.data.tabShowed = this.data.tabClicked;
	    	this.UI.objTabs[this.data.tabClicked].addClass('current');


	    },

	    load: function(k){

	    	// Comprobar si tab tiene Datos en Store si no Cargar con AJAX
    		this.data.tabClicked = k;
			var tab_content = this.UI.objTabs[k].retrieve('tab_content');
	    	if(tab_content)
	    	{
	    		this.UI.objBind.set('html',tab_content)
	    		this.setTab();
	    		this.fireEvent("onTabChange");
	    	}
	    	else
	    	{
				var url_destino = this.options.urlAjx[k].url;

				new Request.HTML({
					url: url_destino,
					evalScripts: false,
					onRequest: function(){
						this.UI.objBind.set('html','');
						this.UI.objBind.addClass(this.options.styleLoader);
					}.bind(this),
		    		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
						this.UI.objBind.removeClass(this.options.styleLoader);

						this.data.lastData = responseHTML;

						this.UI.objBind.innerHTML = this.data.lastData;
						this.UI.objBind.set('html',this.data.lastData);


						(function(){
							this.UI.objBind.set('html',this.data.lastData); // for redner IE b
							this.fireEvent("onTabChange");
						}.bind(this)).delay(200);

						this.UI.objTabs[this.data.tabClicked].store('tab_content', responseHTML);

						this.setTab();
						this.fireEvent("onTabLoad");

		    		}.bind(this)
				}).send();
	    	}
	    },

	    next: function(){
	    	this.load(this.data.tabShowed++)
	    },

	    prev: function(){
	    	this.load(this.data.tabShowed--)
	    }
	});










	/*
		Function: gameExtend
		Desc: aplica regla para efecto placeholder para un campo input.
	*/
	var gameExtend = new Class({

	    Implements: [Options, Events],

		options: {
				objTrigger:				false,
				objBox:					false,
				objSwf:					false,
				styleMaxW:				914,
				stylePadW:				62,
				stylePadH:				12,
				styleTrigger:			false,

				startHeight:			0,
				startWidth:				0
		},

	    UI: {
	    	objTrigger:					false,
	    	objBox:						false,
	    	objSwf:						false
	    },

	    data: {
	    	actualExtend:				false,
	    	startWidth:					0,
	    	startHeight:				0
	    },

		initialize: function(options){


			/* Procesar nuevas ocpiones */
	        this.setOptions(options);

	        /* Asignar elementos */
	        this.UI.objTrigger		= $(this.options.objTrigger);
	        this.UI.objBox 			= $(this.options.objBox);
	        this.UI.objSwf 			= $(this.options.objSwf);

			this.data.startWidth	= this.options.startWidth;
			this.data.startHeight	= this.options.startHeight;

			/* Add KeyEvent */
			this.UI.objTrigger.addEvent('click', function(event){
			 	this.changeSize();
			}.bind(this))
		},

		changeSize: function(){
			if(!this.data.actualExtend){

				var ext_h = (this.options.styleMaxW * this.data.startHeight / this.data.startWidth).round();

				if(ext_h > document.getSize().y)
				{
					ext_w = (document.getSize().y * this.data.startWidth / this.data.startHeight).round();
					ext_h = document.getSize().y - 20;
				}
				else
				{
					ext_w = (this.options.styleMaxW - 0)
					ext_h = ext_h;
				}


				this.UI.objBox.setStyles({
				    width: ext_w + this.options.stylePadW,
				    height: ext_h + this.options.stylePadH
				});



				this.UI.objSwf.setStyles({
				    width: ext_w + 'px',
				    height: ext_h + 'px'
				});


				this.UI.objTrigger.addClass(this.options.styleTrigger);
				this.data.actualExtend = true;
			}
			else
			{
				this.UI.objSwf.setStyles({
				    width: this.data.startWidth,
				    height: this.data.startHeight
				});

				this.UI.objBox.setStyles({
				    width: this.data.startWidth + this.options.stylePadW - 0,
				    height: this.data.startHeight + this.options.stylePadH - 0
				});

				this.UI.objTrigger.removeClass(this.options.styleTrigger);
				this.data.actualExtend = false;
			}
		}

	});


	/*
		Function: gameLight
		Desc: aplica regla para efecto placeholder para un campo input.
	*/
	var gameLight = new Class({

	    Implements: [Options, Events],

		options: {
				objTrigger:				false,
				objResalt:				false,
				styleZIndex:			'10000',
				styleTrigger:			false
		},

	    UI: {
	    	objTrigger:					false,
	    	objResalt:					false,
	    	objOverlay:					new Element('div', {'class': 'overlay','styles': {
	    		'height': '100%',
	    		'position': 'absolute',
	    		'top': 0,
	    		'left': 0,
	    		'width': '100%',
	    		'z-index': 4000,
	    		'background':'#000', 'opacity': '0.8','display': 'none'}})
	    },

	    data: {
	    	actualStatus:				false,
	    	actualZindex:				false
	    },

		initialize: function(options){


			/* Procesar nuevas ocpiones */
	        this.setOptions(options);

	        /* Asignar elementos */
	        this.UI.objTrigger		= $(this.options.objTrigger);
	        this.UI.objResalt 		= $(this.options.objResalt);

			this.UI.objOverlay.setStyle('opacity', 0);
			this.toggleLight();
			this.toggleLight();
			this.UI.objOverlay.setStyle('opacity', 0.8);

			/* AÃƒÂ±adir overlay */
			this.UI.objOverlay.inject(document.body, 'top');

			/* Add KeyEvent */
			this.UI.objTrigger.addEvent('click', function(event){
			 	this.toggleLight();
			}.bind(this))

			this.UI.objOverlay.addEvent('click', function(event){
			 	this.toggleLight();
			}.bind(this))
		},

		toggleLight: function(){

			if(!this.data.actualStatus)
			{
				this.data.actualStatus = true;
				this.overlayOn();
			}
			else
			{
				this.data.actualStatus = false;
				this.overlayOff();
			}
		},

		overlayOn: function(){
			this.UI.objTrigger.addClass(this.options.styleTrigger);
			this.UI.objOverlay.setStyle('height',document.getScrollSize().y);
			this.UI.objOverlay.setStyle('display', 'block');

			this.UI.objResalt.setStyle('position', 'relative');
			this.UI.objResalt.setStyle('z-index', 5000);
		},

		overlayOff: function(){
			this.UI.objTrigger.removeClass(this.options.styleTrigger);
			this.UI.objOverlay.setStyle('display', 'none');
			this.UI.objResalt.setStyle('position', 'relative');

		}
	});



  /*
        Function: growl
        Desc: Muestra un mensaje en pantalla tipo Growl.
    */
    var agrowl = new Class({

        Implements: [Options, Events],

        options: {
                container:				false,
                messageStyle:           'growl_smoke',
                messageAlpha:           '0.9',
                messagePosition:        'br',
                messageTitle:           '',
                messageText:            '',
                messageIcon:            '',
                messageTimeShow:        2,
                messageFxTransition:    ''

        },

        UI: {
            box: new Element('div', {'styles': {
                'opacity': 0
                }}),

            title: new Element('h3'),
            icon: new Element('img'),
            text: new Element('p')
        },

        data: {
            actualHeight:               false,
            actualWidth:                false
        },

        obj: {
            fx: false
        },

        initialize: function(options){

            /* Procesar nuevas ocpiones */
            this.setOptions(options);

           	if(this.options.container)
           	{
           		this.UI.box.inject($(this.options.container), 'top');
           	}
           	else
           	{
            	this.UI.box.inject(document.body, 'top');
            }

            this.UI.box.addClass(this.options.messageStyle);

            /* Create Tween */
            this.obj.fx = new Fx.Tween(this.UI.box);

            /* Get height */
            this.data.actualHeight = parseInt(this.UI.box.getStyle('height'));
            this.data.actualWidth = parseInt(this.UI.box.getStyle('width'));

            /* Set position */
            if(this.options.messagePosition == 'br') this.UI.box.setStyles({'bottom':10,'right':10});
            if(this.options.messagePosition == 'bl') this.UI.box.setStyles({'bottom':10,'left':10});
            if(this.options.messagePosition == 'tr') this.UI.box.setStyles({'top':5,'right':10});
            if(this.options.messagePosition == 'tl') this.UI.box.setStyles({'top':10,'left':10});
            if(this.options.messagePosition == 'cc')
            {
                this.UI.box.setStyles({'top': '50%','left':'50%',
                    'margin-top': -(this.data.actualHeight / 2).round(),
                    'margin-left': -(this.data.actualWidth / 2).round()
                });
            }


            /* inject Box */
            this.UI.box.adopt(this.UI.icon, this.UI.title,  this.UI.text);

        },

        messageNew: function(options){
            this.UI.title.set('html', options.messageTitle);
            this.UI.text.set('text', options.messageText);
            this.UI.icon.set('src', options.messageIcon);
            this.messageShow();
        },

        messageShow: function(){

            this.obj.fx.start('opacity', 0, this.options.messageAlpha).chain(function(){
                (function(){this.obj.fx.start('opacity', this.options.messageAlpha, 0);}.bind(this)).delay(2000);
            }.bind(this));
        }
    });



	var modal = new Class({

	    Implements: [Options, Events],

	    options: {
			/*
				Objecto contenedor si no se define serÃƒÂ¡ body
			*/
			objContainer:		false,

			/*
				ParÃƒÂ¡metros de estilos
			*/
			styleModal:			'dark',
			styleOverlay:		'modal_overlay',
			styleFixed:          false,

			/*
				Define Valores de configuraciÃƒÂ³n
			*/
			confOverlay:		true,
			confOverlayClick:	false,
			confPatron:			'<div class="modalwTop"><div class="CX">&nbsp;</div><div class="L">&nbsp;</div><div class="C"><img src="../ico/modal_02.png"/></div><div class="R">&nbsp;</div></div><div rel="content" class="modalwContent"><div class="modalwContentSet"></div></div><div class="modalwBottom"><div class="L">&nbsp;</div><div class="C"><img src="../ico/modal_08.png"/></div><div class="R">&nbsp;</div></div>',

			/*
				Listado de eventos disponibles
			*/
			onReady:	 		false,
			onLoadOk:	 		false,
			onLoadError: 		false,
			onShow:		 		false,
			onHide:		 		false
	    },

	   	Obj: {
	   		ajax: 				false,
	   		fx:					false
	   	},

	    UI: {
	    	objOverlay:			new Element('div', {'styles': {'opacity': '0.3','display': 'none'}}),
	    	objBase:			new Element('div', {'class': 'modal_base', 'styles': {'display': 'none'}}),
	    	objModal:			new Element('div', {'class': 'modalw'}),
	    	objContent:			false,
	    	objCloser:			false,
	    	objTable:			false
	    },

	    data: {
	 		show: 				'none',
		   	colsShowed: 		0
	    },

		initialize: function(options){
			/* Process options */
	        this.setOptions(options);

	        if(this.options.styleFixed){
               this.UI.objBase.setStyle('position','fixed');
           }

	        /* Construct modal */
			this.UI.objModal.addClass(this.options.styleModal);
	        this.UI.objModal.set('html',this.options.confPatron);
	        this.UI.objModal.inject(this.UI.objBase);
	        this.UI.objContent = this.UI.objModal.getElement('.modalwContentSet');
	        this.UI.objTabe = this.UI.objModal.getElement('.modalwContent');
	        this.UI.objCloser = this.UI.objModal.getElement('.CX');

	        this.UI.objBase.inject(document.body, 'top');

			/* Construct Overlay */
			this.UI.objOverlay.addClass(this.options.styleOverlay);
	        this.UI.objOverlay.inject(document.body, 'top');


	        /* Modal Obj */
   	        this.Obj.Fxx 	= new Fx.Morph(this.UI.objModal, {duration: 500, transition: Fx.Transitions.Sine.easeOut});
   	        this.Obj.Fxy 	= new Fx.Morph(this.UI.objTabe, {duration: 500, transition: Fx.Transitions.Sine.easeOut});
			this.Obj.ajax 	= new Request.HTML({
				evalScripts: false,
				onRequest: function()
				{
					this.UI.objTabe.addClass('loader_C');
				}.bind(this),
	    		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
	    			this.UI.objTabe.removeClass('loader_C');
					this.UI.objContent.set('html',responseHTML);
					this.adjust();
					eval(responseJavaScript);
					 this.fireEvent('onLoadOk');
	    		}.bind(this)
			})

	        this.UI.objCloser.addEvent('click', function(){this.hide();}.bind(this));

	        /* Ready FireEvnet */
	        this.fireEvent('onReady');
		},

		adjust: function(){

			this.UI.objContent.setStyles({
				'position': 		'absolute',
				'top': 				-5000,
				'display': 			'block'
			});

			var size = this.UI.objContent.getSize();

			this.Obj.Fxx.start({'width': size.x + 0});
			this.Obj.Fxy.start({'height': size.y + 0}).chain(function(){

				this.UI.objContent.setStyles({
					'position': 		'static',
					'top': 				0,
					'opacity':			0,
					'display': 			'block'
				});

				this.UI.objContent.fade('in');

			}.bind(this));
		},

		show: function(){
			this.UI.objBase.setStyle('display', 'block');
			this.UI.objOverlay.setStyle('height',document.getScrollSize().y);
			//this.UI.objBase.setStyle('width',document.getScrollSize().x);
			this.UI.objOverlay.setStyle('display', 'block');
		},

		hide: function(){
			this.UI.objBase.setStyle('display', 'none');
			this.UI.objOverlay.setStyle('display', 'none');
		},

		loadAjax: function(url_destino){
			this.UI.objContent.setStyle('display', 'none');
			new Request.HTML({
				url: url_destino,
				evalScripts: false,
				onRequest: function()
				{
					this.UI.objTabe.addClass('loader_C');
				}.bind(this),
	    		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
	    			this.UI.objTabe.removeClass('loader_C');
					this.UI.objContent.set('html',responseHTML);
					this.adjust();
					eval(responseJavaScript);
					this.fireEvent('onLoadOk');
	    		}.bind(this)
			}).send();
		},

		loadHTML: function(html){
			this.UI.objContent.set('html',html);
		}
	});



	/*
		Function: carusel
		Desc: Muestra un mensaje en pantalla tipo Growl.
	*/
	var carousel = new Class({

	    Implements: [Options, Events],

		options: {
				styleModifier:			'left',
				styleDistance:			'136',
				timeSeconds:			10,
				timeSteps:				4,
				objCarousel:			'Mtop_carousel',
				objTitle:				'Mtop_title',
				objNext:				'Mtop_next',
				objPrev:				'Mtop_prev',
				objCup:					'Mtop_cup'
		},

	    UI: {
	    	carousel: false,
	    	title: false,
	    	steps: false,
	    	cup: false,
	    	next: false,
	    	prev: false
	    },

	    data: {
	    	actualPosition:	0,
	    	prevPosition: 0
	    },

	    obj: {
	    	fx: false
	    },

		initialize: function(options){

	        this.setOptions(options);

			this.UI.carousel = $(this.options.objCarousel);
			this.UI.title = $(this.options.objTitle);
			this.UI.steps = this.UI.carousel.getChildren();

			this.UI.next = $(this.options.objNext);
			this.UI.prev = $(this.options.objPrev);
			this.UI.cup = $(this.options.objCup);


			this.UI.next.addEvent('click',function(){this.next();}.bind(this));
			this.UI.prev.addEvent('click',function(){this.prev();}.bind(this));

			var title = this.UI.steps[0].get('title');
			if(title.length > 27)
			{
				title = title.substring(0, 27);
				title = title + '...';
			}
			this.UI.title.set('text', title);

			var href = this.UI.steps[0].get('href');
			this.UI.title.set('href', href);

			this.obj.fx = new Fx.Tween(this.UI.carousel, {link: 'chain', duration: 300, transition: Fx.Transitions.Quad.easeInOut});

			var interval = function(){this.next();}.bind(this);
			interval.periodical(this.options.timeSeconds * 1000);
		},

		prev: function(){
			this.data.actualPosition --;
			if(this.data.actualPosition < 0)
			{var to = this.options.timeSteps} else {var to = this.data.actualPosition;}
			this.goto(to);
		},

		next: function(){
			this.data.actualPosition ++;
			if(this.data.actualPosition > this.options.timeSteps)
			{var to = 0} else {var to = this.data.actualPosition;}
			this.goto(to);
		},

		goto: function(pos){

			var title = this.UI.steps[pos].get('title');
			var href = this.UI.steps[pos].get('href');

			if(title.length > 27)
			{
				title = title.substring(0, 27);
				title = title + '...';
			}
			this.UI.title.set('text', title);
			this.UI.title.set('href', href);
			this.UI.cup.removeClass('topc' + this.data.prevPosition);
			this.data.actualPosition = pos;
			this.data.prevPosition = pos;
			this.UI.cup.addClass('topc' + pos);
			this.obj.fx.start('left', - this.data.actualPosition * this.options.styleDistance);
		}
	});



var proggress_bar = new Class({

	Implements: [Options, Events],

	options: {

		selObjBar: 			'proggress_bar',
		selObjDisplay:		'',

		startValue: 		false,
		startMove: 			false,

		optTotalTime:		15000,
		optRangeStart: 		0,
		optRangeEnd: 		100,
		optRangeSteps: 		1,
		optTimeRefresh: 	300,
		optDisplayText: 	false,

		onStart: 			$empty,
		onComplete: 		$empty,
		onChange: 			$empty

	},

	data: {
		actualValue:		0
	},

	UI: {
		objBar: false,
		objBarIn: false,
		objDisplay: false
	},

	initialize: function(options) {

		this.setOptions(options);

		this.UI.objBar = $(this.options.selObjBar);
		this.UI.objDisplay = $(this.options.selObjDisplay);
		this.UI.objBarIn = this.UI.objBar.getElement('div');

		this.UI.objBarIn.set('tween', {
			duration: this.options.optTotalTime,
			link:'cancel',
			unit: '%'
		});

		if(this.options.startMove)
		{
			this.move(this.options.startMove);
		}

	},

	move: function(to) {

		this.UI.objBarIn.tween('width', to.toInt());

		if(this.options.optDisplayText) {
			this.UI.objDisplay.set('text', to.toInt());
		}

		this.data.actualValue = to;
	}

});

