
var BASE="http://www.regalosperu.com.pe/"; // maldito explorer
var $ventana = "";
var tipAgregado;
var TolSuscrito;
var ventanaSugerencias="";
var ventanaVistaprevia="";
var vEdita="";
var CargandoAjax= new Element('div',{
		id:'AjaxCargando',
		styles:{
			backgroundColor:'white',
			width:'130px',
			height:'42px',
			position:'relative',
			zIndex:900,
			display:'none',
			padding:'5px',
			border:'1px solid #FFDBA9'
		},
		'class':'tproducto',
		html:'<img style="padding-right:5px" src="images/cargar_ajax.gif" align="absmiddle"/>Cargando...'
		
	});

Selectors.Pseudo.selected = function(){ 
   return (this.selected && 'option' == this.get('tag')); 
};
	
Element.implement({ 
	val:function(){
		return this.get("value");
	},
    show: function() { 
      this.setStyle('display',''); 
	  this.setStyle('visibility','visible'); 
    }, 
    hide: function() { 
      this.setStyle('display','none'); 
	  this.setStyle('visibility','hidden'); 
    },
	html:function(htm){
		this.set("html",htm);
	},
	Imprimir: function() {
		var strName = 'printer-' + (new Date()).getTime(),
		styles = $$('link[type=text/css]').clone(),
		title = document.title,
		that = this,
		iframe = new IFrame({
			name: strName,
			styles: {
				width: 1,
				height: 1,
				position: 'absolute',
				left: -9999
			},
			events: {
				load: function() {
					var doc = this.contentDocument || window.frames[strName].document;
					doc.title = title;
					$(doc.body).adopt(styles, that.clone());
					this.contentWindow.focus(); // IE necesita obtener el foco sino imprime el frame padre.
					this.contentWindow.print();
				}
			}
		}).inject($(document.body));
		iframe.dispose.delay(15000); // Destruimos el iframe luego de 15 segundos.
	},
	reflect: function(options) {
		var img = this;
		if (img.get("tag") == "img") {
			options = $extend({
				height: 0.33,
				opacity: 0.5
			}, options);

			img.unreflect();

			function doReflect() {
				var reflection, reflectionHeight = Math.floor(img.height * options.height), wrapper, context, gradient;

				if (Browser.Engine.trident) {
					reflection = new Element("img", {src: img.src, styles: {
						width: img.width,
						height: img.height,
						marginBottom: -img.height + reflectionHeight,
						filter: "flipv progid:DXImageTransform.Microsoft.Alpha(opacity=" + (options.opacity * 100) + ", style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy=" + (options.height * 100) + ")"
					}});
				} else {
					reflection = new Element("canvas");
					if (!reflection.getContext) return;
					try {
						context = reflection.setProperties({width: img.width, height: reflectionHeight}).getContext("2d");
						context.save();
						context.translate(0, img.height-1);
						context.scale(1, -1);
						context.drawImage(img, 0, 0, img.width, img.height);
						context.restore();
						context.globalCompositeOperation = "destination-out";

						gradient = context.createLinearGradient(0, 0, 0, reflectionHeight);
						gradient.addColorStop(0, "rgba(255, 255, 255, " + (1 - options.opacity) + ")");
						gradient.addColorStop(1, "rgba(255, 255, 255, 1.0)");
						context.fillStyle = gradient;
						context.rect(0, 0, img.width, reflectionHeight);
						context.fill();
					} catch (e) {
						return;
					}
				}
				reflection.setStyles({display: "block", border: 0});

				wrapper = new Element(($(img.parentNode).get("tag") == "a") ? "span" : "div").injectAfter(img).adopt(img, reflection);
				wrapper.className = img.className;
				img.store("reflected", wrapper.style.cssText = img.style.cssText);
				wrapper.setStyles({width: img.width, height: img.height + reflectionHeight, overflow: "hidden"});
				img.style.cssText = "display: block; border: 0px";
				img.className = "reflected";
			}

			if (img.complete) doReflect();
			else img.onload = doReflect;
		}

		return img;
	},
	unreflect: function() {
		var img = this, reflected = this.retrieve("reflected"), wrapper;
		img.onload = $empty;

		if (reflected !== null) {
			wrapper = img.parentNode;
			img.className = wrapper.className;
			img.style.cssText = reflected;
			img.store("reflected", null);
			wrapper.parentNode.replaceChild(img, wrapper);
		}

		return img;
	},
	enVivo: function(event, selector, fn){
		this.addEvent(event, function(e){
			var t = $(e.target);
			if (!t.match(selector)) return false;
			fn.apply(t, [e]);
		}.bindWithEvent(this, selector, fn));
	},
	fadeTo: function(value,duration){
		(duration=="")? speed=500 : speed=duration;
		var elt = this; 
		 elt = new Fx.Tween(elt, {
			 duration : speed,
			 //transition : Fx.Transitions.Quad.easeIn,
			 wait:true
		 }); 
		elt.start('opacity', value);
	}

}); 



/****/

var Regalos= new Class({
	tipOlvido:"",
	initialize:function(page){
		this.pagina=page;
		this.iniciar();
	},
	calendarioEnvio:function(){
		if($('tabla_opciones_regalo')){
			$('fecha_entrega').DatePicker();
			new MavSelectBox('hora_entrega');
			new MavSelectBox({
				elem: $ ('cbo_comprobante'),
				onSelect: function(elem) {
					regalos.datosFacturtacion();
				}
			});
			
			
		}
	},
	verDistritos:function(){
		
	},
	cambiaSelectOcasion:function(){
		if($('ocasionBusqueda')){
			var my_select = new MavSelectBox({
				elem: $ ('ocasionBusqueda'),
				onSelect: function(elem) {
					$id=$('ocasionBusqueda').val();
						if($id==""){	
							Alertas("<b>Debe elegir un ocasi&oacute;n v&aacute;lida</b>");
						}else{
							$name=elem.getElement("span").get("text");
							window.location.href=BASE+"ocasiones/resultados/"+$id+".html";
							return false;		
						}
				}
			});
			var my_select2 = new MavSelectBox({
				elem: $ ('precioBusqueda'),
				onSelect: function(elem) {
					$id=$('precioBusqueda').val();
					if($id==""){	
							Alertas("<b>Debe elegir un rango de precios v&aacute;lido</b>");
					}else{
						window.location.href=BASE+"precios/resultados/"+$id.toLowerCase()+".html";
						return false;
					}
				}
			});
		}
		
	},
	activaBanners:function(){
		if($('cabecera')){
			$each($$('#cabecera img'),function(e){
					new Asset.image(e.get("src"));
			});
			var slideshow = new ASlide('cabecera','#cabecera img.banners'); 
			slideshow.start();  
		}
	},
	activaContacto:function(){
		//alert("asas");
		if($('cont_form')){
			alert("asas");
			new FormCheck('formContacto',{
					submitByAjax:true,
					display : {
						scrollToFirst:false
					},
					onAjaxRequest:function(){
					
					},
					onAjaxSuccess:function(e){
					}
			});
		}
	},
	iniciar:function(){
	},
	linkBolsita:function(){
		if($('bolsita_img')){
			$('bolsita_img')
			.addEvent("click",function(){
				window.location.href=BASE+'carrito.php';
				return false;
			}).setStyle("cursor","pointer").set("title","ver Carrito");;
		}
	},
	animaProductos:function(){
		var speed=300;
		if($$('div .verDetalle')){
			$$('div .verDetalle')
			.addEvents({
				"mouseenter":function(e){
					e.stop();
					this.fadeTo(1,300);
				},
				"mouseleave":function(e){
					this.fadeTo(0.5,300);
				},
				"click":function(){
					window.location.href=BASE+this.get("role");
				}
			}).setOpacity(0.5)	
			.html("Ver Detalle");
			$$('div .itemLista')
			.addEvents({
				"mouseenter":function(){
					this.getElement("div").show();
				},
				"mouseleave":function(){
					this.getElement("div").hide();
				},
				"click":function(){
					window.location.href=BASE+this.get("role");
				}
			});
			
		}
		
	},
	menuLogin:function(){
		if($('iniciar_secion')){
			var	mlogin=new MenuLogin({
				principal:"iniciar_secion",
				evento:"click",
				imagenFondo:"images/caja_inciarsession.png",
				ancho:260,
				alto:160,
				//imagenFondo:"images/fondo_iniciar.jpg",
				transicion:"back:out",
				duracion:1,
				html:'<div><center><img src="images/flech.jpg" width="16" height="10" alt="Iniciar sesión" /></center></div>'+
					 '<div style="background-image:url(images/fondo_iniciar_final.jpg);background-repeat:no-repeat;height:180px">'
					 +'<form autocomplete="off" name="form_login" id="form_login" action="dregalos.php?controlador=sesion&accion=iniciaSesion" method="post" >'+
					 '<table align="center" width="100%" border="0" cellpadding="0" cellspacing="6">'+
					 '<tr>'+
						'<td  align="center" style="height:5px"><label>&nbsp;</label></td>'+
					'</tr>'+
					 '<tr>'+
						'<td  align="center"><label>'+
						'<input type="text" style="width:80%" name="txtusuario" value="Email:" id="em_menu" class="validate[\'required\',\'email\'] inputEmail" />'+
					  '</label></td>'+
					'</tr>'+
					'<tr>'+
					  '<td align="center"><label>'+
						'<input style="width:80%" class="validate[\'required\'] inputPass" type="password" value="Contrasena" name="txtpass" id="contreasena" />'+
					  '</label></td>'+
					'</tr>'+
					'<tr>'+
					  '<td align="center"><a id="rePassForm" href="javascript:;"  class="leestaremos_link" >&#191Olvidaste tu contrase&ntilde;a?</a></td>'+
					'</tr>'+
					'<tr>'+
					  '<td align="center"><input type="image" src="images/entrar.jpg" width="82" height="32" /></td>'+
					'</tr>'+
					'<tr>'+
						'<td colspan="2" class="prefrecuentxts_2" align="center"><span id="respuestaLogin"></span></td>'+
					'</tr>'+
				  '</table></form></div>'
			});
			new Hints({campo: "em_menu",texto:"Email:"});
			new Hints({campo: "contreasena",texto:"Contrasena"});
				new FormCheck('form_login',{
					display : {
						errorsLocation : 0,	indicateErrors : 2,	showErrors : 1,	addClassErrorToField : 1,scrollToFirst:false
					},
					submitByAjax:true,
					onAjaxSuccess:function(e){
						this.respuestaLogin(e,"respuestaLogin");
					}.bind(this)
				});
			$('rePassForm')
			.addEvent("click",function(){
				new Ventana({
					modal:true,
					fondo:"",
					alto:190,
					ancho:465,
					borde:0,
					separacion:0,
					btnCerrar:"xxx_contrasena",
					url:'recordar_contrasena.php'
				}).render();
			}.bind(this));
		}
	},
	respuestaLogin:function(e,d){
		if(e=="ok"){
			if(carrito.cantidad==0){
				window.location.href=BASE+"cuenta.php";
				return false;
			}else{
				window.location.href=BASE+"carrito.php";
				return false;
			}
		}else{
			$(d)
			.set("html",'<span class="prefrecuentxts_2" style="font-family:verdana,arial;color:red;text-align:left;font-size:10px">Usuario y/o Contrase&ntilde;a inv&aacute;lidos </span>')
			.fade("in");
		}
	},
	menuSuperior:function(){
		$$('#menu div')
		.addEvents({
			"mouseenter":function(e){
				img=this.getElement("img");
				img.set("src",img.get("rel")+"_hover.jpg");
			},
			"mouseleave":function(){
				img=this.getElement("img");
				img.set("src",img.get("rel")+".jpg");
			}
		}).setStyle("cursor","pointer");
		var Menu= new RegalosMenu("menu",{});
	},
	PNG:function(){
		if(Browser.Engine.trident4){
		 for(var i=0; i<document.images.length; i++)
			   {
				  var img = document.images[i];
				  var imgName = img.src.toUpperCase();
				  if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
				  {
					 var imgID = (img.id) ? "id='" + img.id + "' " : "";
					 var imgClass = (img.className) ? "class='" + img.className + "' " : "";
					 var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
					 var imgStyle = "display:inline-block;" + img.style.cssText ;
					 if (img.align == "left") imgStyle = "float:left;" + imgStyle;
					 if (img.align == "right") imgStyle = "float:right;" + imgStyle;
					 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
					 var strNewHTML = "<span " + imgID + imgClass + imgTitle;
					 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
					 + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
					 + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" ;
					 img.outerHTML = strNewHTML;
					 i = i-1;
				  }
			   }
		}	
	},
	muestraAjax:function(capa){
		div=$(capa);
		contenedor=div.getParent();
		coord=contenedor.getCoordinates();
		CargandoAjax.setStyles({
			"top":(coord.height/2) - 60,
			"left":(coord.width/2)- 65
		});
		contenedor.grab(CargandoAjax);
		CargandoAjax.show();

	},
	escondeAjax:function(capa){
		div=$(capa);
		CargandoAjax.hide();
	},
	verProductos:function(i){
		if($('productos_categorias')){
			this.muestraAjax('productos_categorias');
			$('productos_categorias').tween("opacity",[1,0]);
			new Request.HTML({
				url: "sistema/aplicacion/vistas/productos/listas_productos.php?c="+i,
				update: 'productos_categorias',
				onComplete: function() {
					$('productos_categorias').tween("opacity",[0,1]);
					this.escondeAjax('productos_categorias');
				}.bind(this)
			}).send();
	
		}
	},
	pagProductos:function(url){
		if($('productos_categorias')){
			this.muestraAjax('productos_categorias');
			$('productos_categorias').tween("opacity",[1,0]);
			new Request.HTML({
				url: url,
				update: 'productos_categorias',
				onComplete: function() {
					$('productos_categorias').tween("opacity",[0,1]);
					this.escondeAjax('productos_categorias');
				}.bind(this)
			}).send();
	
		}
	},
	verOcasion:function(i){
		if($('productos_categorias')){
			this.muestraAjax('productos_categorias');
			$('productos_categorias').tween("opacity",[1,0]);
			new Request.HTML({
				url: "sistema/aplicacion/vistas/productos/listas_ocasiones.php?o="+i,
				update: 'productos_categorias',
				onComplete: function() {
					$('productos_categorias').tween("opacity",[0,1]);
					this.escondeAjax('productos_categorias');
				}.bind(this)
			}).send();
	
		}
	},
	pagOcasion:function(url){
		if($('productos_categorias')){
			this.muestraAjax('productos_categorias');
			$('productos_categorias').tween("opacity",[1,0]);
			new Request.HTML({
				url: url,
				update: 'productos_categorias',
				onComplete: function() {
					$('productos_categorias').tween("opacity",[0,1]);
					this.escondeAjax('productos_categorias');
				}.bind(this)
			}).send();
	
		}
	},	
	verCategoria:function(i){
		if($('productos_categorias')){
			this.muestraAjax('productos_categorias');
			$('productos_categorias').tween("opacity",[1,0]);
			new Request.HTML({
				url: "sistema/aplicacion/vistas/productos/lista_categorias.php?c="+i,
				update: 'productos_categorias',
				onComplete: function() {
					$('productos_categorias').tween("opacity",[0,1]);
					this.escondeAjax('productos_categorias');
				}.bind(this)
			}).send();
	
		}
	},
	pagCategoria:function(url){
		if($('productos_categorias')){
			this.muestraAjax('productos_categorias');
			$('productos_categorias').tween("opacity",[1,0]);
			new Request.HTML({
				url: url,
				update: 'productos_categorias',
				onComplete: function() {
					$('productos_categorias').tween("opacity",[0,1]);
					this.escondeAjax('productos_categorias');
				}.bind(this)
			}).send();
	
		}
	},
	verPrecio:function(i){
		if($('productos_categorias')){
			this.muestraAjax('productos_categorias');
			$('productos_categorias').tween("opacity",[1,0]);
			new Request.HTML({
				url: "sistema/aplicacion/vistas/productos/listas_precios.php?ip="+i,
				update: 'productos_categorias',
				onComplete: function() {
					$('productos_categorias').tween("opacity",[0,1]);
					this.escondeAjax('productos_categorias');
				}.bind(this)
			}).send();
	
		}
	},
	pagPrecio:function(url){
		if($('productos_categorias')){
			this.muestraAjax('productos_categorias');
			$('productos_categorias').tween("opacity",[1,0]);
			new Request.HTML({
				url: url,
				update: 'productos_categorias',
				onComplete: function() {
					$('productos_categorias').tween("opacity",[0,1]);
					this.escondeAjax('productos_categorias');
				}.bind(this)
			}).send();
	
		}
	},	
	carruselComplementos:function(){
		if($('carruselComplementos')){
			new ACarrusel("carruselComplementos",{
				avanze:2,
				ver:5,
				anchoItem:185,
				altoItem:300,
				siguiente:'siguiente',
				anterior:'anterior',
				duracion:0.8,
				transicion:'quad:out'
			});
		}
	},
	verCantidadRosas:function(id){
		new Ventana({
				titulo:"",
				url: "cantidades.php?id="+id,
				modal:true,
				fondo:"",
				alto:270,
				ancho:460,
				borde:0,
				separacion:0,
				btnCerrar:"xxxxxxx"
			}).render();
	},
	dejaComentario:function(){
		new Ventana({
				titulo:"",
				url: "addcomentario.php",
				modal:true,
				fondo:"",
				alto:270,
				ancho:480,
				borde:0,
				separacion:0,
				btnCerrar:"apDiv1"
			}).render();
	},
	listaComentarios:function(){
		this.muestraAjax('mis_comentarios');
			$('mis_comentarios').tween("opacity",[1,0]);
			new Request.HTML({
				url: "listaComentarios.php",
				update: 'mis_comentarios',
				onComplete: function() {
					$('mis_comentarios').tween("opacity",[0,1]);
					this.escondeAjax('mis_comentarios');
				}.bind(this)
			}).send();
	},
	pagComentarios:function(url){
		this.muestraAjax('mis_comentarios');
			$('mis_comentarios').tween("opacity",[1,0]);
			new Request.HTML({
				url: url,
				update: 'mis_comentarios',
				onComplete: function() {
					$('mis_comentarios').tween("opacity",[0,1]);
					this.escondeAjax('mis_comentarios');
				}.bind(this)
			}).send();
	},
	activaForEnvio:function(){
		if($('eliges_datos_envio')){
			new FormCheck('formEnvio',{
				submitByAjax:true,
				onAjaxSuccess:function(e){
					window.location.href=BASE+'finalizar.php';
					return false;
				}.bind(this)
			});
		}
	},
	datosFacturtacion:function(){
		($("cbo_comprobante").get("value")=="Factura") ? $("fmr_factura").show() : $("fmr_factura").hide();
	},
	activaRegistroCliente:function(){
		if($('for_regis')){
			/**activamos el formualrio a validar**/
				new FormCheck('formRegistro',{
					submitByAjax:true,
					display : {
						scrollToFirst:false
					},
					onAjaxRequest:function(){
						$('msgErrorAjax').hide();
						$('msgErrorAjax').set("html","Registrando...")
						.show();
					},
					onAjaxSuccess:function(e){
						if(e=="ok"){
//								$('msgErrorAjax').set("html","");
										if($('tipo').get("value")=="nuevo"){
											setTimeout(function(){
												regalos.login($('email').get("value"),$('confirmacion').get("value"));
											}.bind(this),4000);
										}else{
											$('msgErrorAjax').fade("in");
											setTimeout(function(){
												window.location.href=BASE+'cuenta.php';
												return false;
											}.bind(this),2000);
										}
									
						}else if(e==""){
								$('msgErrorAjax').set("html","")
								.show();
						}else if(e=="already"){
								$('msgErrorAjax').set("html","Correo ya existente")
								.show();
						}
						
					}
				});
			
		}
		
	},
	activaContacto:function(){
		if($('form_contacto')){
			new FormCheck('contactForm',{
					submitByAjax:true,
					display : {
						scrollToFirst:false
					},
					onAjaxSuccess:function(e){
						$('form_contacto').set("html","<center><br><br><br><br><br><br><br><br><br><br>&#33Gracias por contactarte con nosotros!<br>Una representante estar&aacute; respondiendo tu solicitud lo m&aacute;s pronto posible.</center>");
						setTimeout(function(){
							//window.location.href='index.php';
							return false;
						},3000);
					}
				});
		}
	},
	login:function($user,$pass){  /**private**/
		new Request({
			url:"dregalos.php?controlador=sesion&accion=iniciaSesion",
			onSuccess:function(){
				if(carrito.cantidad==0){
					window.location.href=BASE+"home.php";
				}else{
					window.location.href=BASE+"carrito.php";
					return false;
				}
				
				
			}
		}).send("sesionnueva=si&txtusuario="+$user+"&txtpass="+$pass);
	},
	scrollDelivery:function(){
		if($('txt_delivery')){
			//var scrollBox1 = new MooScroll({selector:'#txtDelivery'});
		}
	},
	SaludaCliente:function(){
		if(Cookie.read("us")){
			new Request.JSON({
				url:"dregalos.php?controlador=sesion&accion=iC",
				onSuccess:function(e){
					if(e.estado=="log"){
						this.BCliente();
					}else{
						//window.location.href=window.location;
						this.BCliente();
						return false;
					}		
				}.bind(this)
			});//.send("un="+Cookie.read("us")+"&d="+Cookie.read("m_rand"));
		}else{
			if($('saludo')){
				this.BCliente();
			}
		}
	},
	BCliente:function(){
		new Request.JSON({
				url:"dregalos.php?controlador=sesion&accion=saludaCliente",
				onSuccess:function(e){
					//if(e.indexOf("carrito")!=-1){
						$('saludo').set("html",e.welcome);
						$('btnderegistro').set("html",e.reg);
						$('fecha').set("html",e.fecha);
						$('msgCuenta').set("html",e.sesion);
						
						if(e.login=="si"){
							this.menuLogin();
						}
						
					//}else{
						//e.eval();
					//}
				}.bind(this)
			}).send();
	},
	recordarPass:function(){
		if($('recuerda')){
			new FormCheck('form_recuerda',{
				display : {
					errorsLocation : 0,
					indicateErrors : 2,
					showErrors : 1,
					addClassErrorToField : 1,
					scrollToFirst:false
				},
				submitByAjax:true,
				onAjaxRequest:function(){
					$('carga_recordar').fade("in");
					$('msg_recordar').set("html","");
				},
				onAjaxSuccess:function(e){
					$('carga_recordar').fade("out");
					if(e=="god"){
						$('msg_recordar')
						.set("html","<b><span style='color:red'>Gracias a su mensaje ha sido enviado con &eacute;xito</span></b>");
						$('form_recuerda').reset();
						setTimeout(function(){
							$('moo_tip__recuerda').fade("out");
							$('msg_recordar').set("html","");
						},2000);
					}else{
						$('msg_recordar').setStyles({"position":"relative","top":"-15px"})
						.set("html","<b><span style='color:red'>Este email no esta registrado en nuestra web.</span></b>");
					}
					
				},
				 onAjaxFailure:function(){
				  alert("errorr");
				}
			});
		}
	},
	listaProductos:function(c){
		if($('contenido_productos')){
			//$('contenido_productos').grab(CargandoAjax);
			$('contenido_productos').load("sistema/aplicacion/vistas/productos/listas_productos.php?c="+c);
		}
	},
	Enviamail:function(i){
		$('msgrecordar').removeClass("estado_ok");
		$('msgrecordar').removeClass("estado_mal");
		$('msgrecordar').removeClass("estado_cargando");
		$('msgrecordar').addClass("estado_cargando").set("html","Enviando y comprobando...").show();
		var rcAjax= new Request({
			url:"dregalos.php?controlador=sesion&accion=validarEmail",
			data:{email_recordar:i},
			onSuccess:function(e){
				if(e=="ok"){
					$('msgrecordar').removeClass("estado_cargando");
					$('msgrecordar').addClass("estado_ok").set("html","Se acaba de enviar tu contrase&ntilde;a a el email indicado").show();
				}else{
					$('msgrecordar').removeClass("estado_cargando");
					$('msgrecordar').addClass("estado_mal").set("html","Error al parecer tu email no se encuentra registrado").show();
				}
			}.bind(this)
		});
		rcAjax.send();
	},
	verDistritos:function(){
		new Ventana({
			titulo:"",
			url:"popup_costos.html",
			modal:true,
			fondo:"",
			alto:590,
			ancho:560,
			borde:0,
			separacion:0,
			btnCerrar:"xxx2"
		}).render();
	},
	ventanaRecordarPass:function(){
			new Ventana({
					modal:true,
					fondo:"",
					alto:190,
					ancho:465,
					borde:0,
					separacion:0,
					btnCerrar:"xxx_contrasena",
					url:'recordar_contrasena.php',
					onCerrar:function(){
						$('VentanaMooModal').destroy();
						$('VentanaMoo').destroy();
					}
			})
			.render();
	}
});

var Carrito= new Class({
	cantidad:0,
	initialize:function(page){
		this.seccion=page;
	},
	minimo:function(i,j){
		if($('lugar_destino').get("value")==0){
			Alertas("<b>Por favor eliga un destino de entrega.</b>");
			return false;
		}else{
			Alertas("Para poder realizar esta compra debes tener un monto m&iacute;nimo de compra de US $"+j+" &oacute; S/. "+i+" ",450);
		}
		
	},
	Pagar:function(t){	
		new Request({
			url:"dregalos.php?controlador=carrito&accion=pagarCarrito&tp="+t,
			onSuccess:function(){
				if(t=="2co"){
					Alertas("<b>Gracias por comprar en regalosperu.com.pe te estamos redirigiendo a la web de 2co para hacer efectivo tu pago.</b>",450);
				}else{
					$('finalizando_compra').load(t+".html");
				}
				setTimeout(function(){
					window.location.href=BASE+"home.php";
					return false;
				},5000);
			}.bind(this)
		}).send();
	},
	total:function(){
		if($('contador')){
			var agregaAjax = new Request.JSON({
						url:"dregalos.php?controlador=carrito&accion=totalItems",
						onComplete:function(e){
							$('contador').set("text","(" +e.cantidad + ")");
							//$('precio_total_carrito').set("text",e.total_carrito);							
							this.cantidad=e.cantidad;
						}.bind(this)
			}).get();

		}
	},
	setColor:function(color){
		$('colores_rosas').set("value",color);		
	},
	setCantidad:function(cantidad,iditem){
		if(cantidad!=""){
			new Request.JSON({
				url:"agregacantidades.php?tipo=cantidad",
				data:{
					idproducto:iditem,
					icantidad:cantidad
				},
				onSuccess:function(e){
					//$('cantidad_rosas').set("value",e.cantidad); //ya no hace nah
					//$('precio_'+iditem).set('text',e.preciodolares);
					//$('precio_soles').set("text",e.preciosoles)
				}
			}).send();
		}
		
	},
	agregar:function(iditem,tipo){
		if(tipo == "relacionado"){
			var nombre=$('nombre_relacionado_'+iditem).get('text').trim();
			var precio=$('precio_relacionado_'+iditem).get('text').trim();
			var imagen=$('imagen_relacionada_'+iditem).get('value');
			var cantidad=$('cantidad_relacionada_'+iditem).get('value');	
			var color="";
			var cantidades="";
			
		}else{
			var nombre=$('nombre_'+iditem).get('text').trim();
			var precio=$('precio_'+iditem).get('text').trim();
			var imagen=$('imagen_'+iditem).get('value');
			var cantidad=$('cantidad_'+iditem).get('value');
			var color=$('colores_rosas').get("value");
			var cantidades=$('cantidad_rosas').get("value");
		}
		
		var elRelacionado=$('bolsita');
		
		
		/*var capa_carrito = new Element('div',{
			id:'div__carrito',
			styles:{
				height:'210px',
				width:'261px',
				position:'relative',
				zIndex:500,
				left:'0px',
				top:'30px',
				border : '0px solid #F18AB2'
			},
			html:'<div>'+
				'<div id="proagreg">'+
				    '<div id="chek">'+
						'<div class="blancocheck" id="texto_mostrarrr">Producto agregado</div>'+
							'<img src="en/images/check.png" width="243" height="27" />'+
					'</div>'+
					'<div class="plomo_check" id="textocheck"><span id="nombre_carrito">'+nombre+'</span></div>'+
					'<div id="images_check"><img id="img_carrito" src="'+imagen+'" width="78" height="86" /></div>'+
					'<div class="plomo_check_abajo" id="precheck">Precio:<br />Cant:</div>'+
					'<div class="plomo_check_fux" id="fuxiackeck">$ <span id="precio_carrito">'+precio+'</span><br />'+
					'<span id="cantidad_carrito">'+cantidad+'</span></div>'+
				 '</div>'+
				 '</div>'
		});
		
		*/
		new Request.JSON({
					url:"dregalos.php?controlador=carrito&accion=agregar",
					data :{
						id_producto:iditem,
						cantidad:cantidad,
						nombre_producto:nombre,
						precio:precio,
						tipo_producto:tipo,
						color:color,
						cantidades:cantidades
					},
					onComplete:function(e){
						$('contador').set("text","("+e.cantidad+")");
						window.location.href=BASE+'carrito.php';
						return false;
					}
			}).send();
	
		/*
		if(!$('div__carrito')){
			elRelacionado.setStyles({"zIndex":500});
			capa_carrito.setStyle("left",50);
			elRelacionado.grab(capa_carrito);
		}else{
			$('img_carrito').set("src",imagen);
			$('precio_carrito').set("html","$"+precio);
			$('nombre_carrito').set("html",nombre);	
			$('cantidad_carrito').set("html",cantidad);	
			$('cantidad_carrito').set("html",cantidad);	
		}
			var scrollcarrito = new Fx.Scroll(window, {
				wait: false,
				duration: 1200,
				offset: {'x': -200, 'y': -50},
				transition:  Fx.Transitions.Sine.easeInOut
			});
			
			scrollcarrito.toElement(elRelacionado);
			var capa_desliza = new Fx.Slide('div__carrito',{wait:false,duration:1000}).hide();
				capa_desliza.slideIn();
			var capa_oculta	= new Fx.Slide('div__carrito',{wait:false,duration:1000});
			setTimeout(function(){
				capa_oculta.slideOut();
			},3000);
		*/

	},
	ver:function(){
		if($('ta_elige')){
			$('ta_elige').set('load', {evalScripts: true,	evalResponse:true});
			$('ta_elige').load("dregalos.php?controlador=carrito&accion=ver");
		}
	},
	actualiza:function(iditem){
		var actualizaAjax= new Request({
			url:"dregalos.php?controlador=carrito&accion=actualizarItem&i="+iditem+"&c="+$('cantidad_'+iditem).get("value"),
			onSuccess:function(e){
				this.ver();
				this.total();
			}.bind(this)
		});
		actualizaAjax.send();
	},
	setDestino:function(idestino){
		$('msgDisdtrito').set("html","Calculando...");
		var destinoAjax= new Request({
			url:"dregalos.php?controlador=carrito&accion=registraDestino&d="+idestino,
			onSuccess:function(){
				this.ver();
			}.bind(this)
		});
		destinoAjax.send();
	},
	eliminar:function(iditem){
		var eliminaAjax= new Request({
			url:"dregalos.php?controlador=carrito&accion=eliminarItem&i="+iditem,
			onSuccess:function(e){
				$('fila_'+iditem).destroy();
				this.ver();
				this.total();
			}.bind(this)
		});
		eliminaAjax.send();
	},
	Logearse:function(){
		if($('lugar_destino').get("value")==0){
			Alertas("<b>Por favor eliga un destino de entrega.</b>");
		}else{
			new Ventana({
				titulo:"",
				url: "iniciesesion_registrese.php",
				modal:true,
				fondo:"",
				alto:270,
				ancho:460,
				borde:0,
				separacion:0,
				btnCerrar:"xxx"
			}).render();
		}
	},
	errorSesion:function(){
		var $verror = new Ventana({
			id:"ventana_error__",
			titulo:'Inicio de sesi&oacute;n - Error de datos',
			modal:true,
			alto:250,
			html:"<img src='images/hk.gif'/><br>Datos incorrectos usuario y/o contrase&ntilde;a"
		});
			$verror.render();
	},
	grabarCompra:function(){
		var formAjax= new Request({
				url:"dregalos.php?controlador=carrito&accion=grabarCarrito",
				evalScripts :true,
				evalResponse :true,
				onSuccess:function(e){
					//window.location.href='shoppingcar_3.php';
					return false;
					//this.cerrar();
					//this.agradecer();
				}.bind(this),
				data : $('form_evio_datos').toQueryString()
			});
			formAjax.send();
	},
	verFactura:function(){
		if($('finalizando_compra')){
			$('finalizando_compra').load("dregalos.php?controlador=carrito&accion=verFactura");
		}
	},
	cerrar:function(){
		var cierraAjax= new Request({
			url:"dregalos.php?controlador=carrito&accion=cerrarCarrito",
			data : {ema:$('imprimir_compra').get("html")},
			onSuccess:function(e){
				this.total();
			}.bind(this)
		});	
		cierraAjax.send();
	},
	cerrarSesion:function(){
		var csesion= new Request({
			url:"dregalos.php?controlador=sesion&accion=cerrar",
			evalScripts:true,
			onSuccess:function(e){
				window.location.href=BASE+"home.php";
			}
		});
		csesion.send();

	},
	Historial:function(){
		if($('ta_elige_micarrito')){
			$('ta_elige_micarrito').load("gridCompras.php");
		}
	},
	pagHistorial:function(u){
		$('ta_elige_micarrito')
		.set({
			"morph":{
				onComplete:function(){
					this.load(u);
				}.bind($('ta_elige_micarrito'))
			},
			"load":{
				onSuccess:function(){
					this.tween("opacity",[0.5,1]);
				}.bind($('ta_elige_micarrito'))
			}
		})
		.morph({
			"background-color" : "#FFF",
			"opacity" :	[1,0.5]
		})
	},
	detalleBoleta:function(i){
		ventanaSugerencias= new Ventana({
			titulo:"",
			url: "boleta.php?cb="+i,
			opacidad:0.6,
			modal:true,
			fondo:"",
			alto:800,
			ancho:800,
			borde:0,
			separacion:0,
			btnCerrar:"cierraBoleta"	
		}).render()
	}
});


var Ventana= new Class({
	Implements: [Options,Events],
	options :{
		modal:false,
		ancho:350,
		titulo:'',
		alto: 350,
		id : "VentanaMoo",
		fondo : "white",
		fondoModal:"#FEF4F8",
		opacidad:0.6,
		html:"",
		url:"",
		arrastra:false,
		juntoA:"",
		separacion:10,
		borde:1,
		btnCerrar:"",
		imagenFondo:"",
		colorfondoCabecera:"",
		colorBorde:"",
		textoCerrar:"",
		anchoPrivado:35,
		htmlCerrar:"",
		estiloCabecera:"",
		
		onCerrar:$empty()
	},
	initialize:function(options){
		this.setOptions(options);
		av=window.getWidth()/2;
		alv=window.getHeight()/2;
		ad=this.options.ancho/2;
		ald=this.options.alto/2;
		ventana=new Element("div",{
				id:this.options.id,
					styles:{
						backgroundColor : this.options.fondo,
						padding:this.options.separacion + 'px',
						height:this.options.alto + 'px',
						width:this.options.ancho + 'px',
						position:'absolute',
						border:this.options.borde+'px solid #CCC',
						left:parseInt(av)-parseInt(ad),
						top:parseInt(alv)-parseInt(ald),
						zIndex:1200,
						display:'none'
					}
					
		});
		
		if(!$(this.options.juntoA)){
			ventana.set('html','<div id="header__moo" class="cabecera__moo" style="padding:10px;height:15px" >'+
								 '<div style="width:85%;float:left;">'+this.options.titulo+'</div>'+
								 '<div align="right" id="cierra_v_moo" style="float:left;width:15%;cursor:pointer;" title=""></div>'+
								 '</div>'+
								 '<div style="border-top:0px solid #CCC;padding:35px;height:'+parseInt(this.options.alto-25)+
								 'px;overflow:auto;vertical-align:middle" align="center" id="conte__moo" class="cuerpo__moo">'+
								 '</div>');
			
		}else{
			ventana.set('html','<div style="border-top:0px solid #CCC;height:'+parseInt(this.options.alto)+
								'px;overflow:auto;vertical-align:middle" align="center" id="conte__moo" class="cuerpo__moo">'+
								'</div>');
		}
	
	},
	render:function(){		
		if(!this.options.modal){
				$$('select').setStyle("visibility","hidden");
				$$('body').grab(ventana);
				
			if(!$(this.options.juntoA)){	
				$('cierra_v_moo').addEvent('click',this.cerrar.bind(this));
			}

				if(this.options.url==""){
					$('conte__moo').set('html',this.options.html);	
				}else{
					$('conte__moo').load(this.options.url);	
				}
				
		}else{
			var modal= new Element('div',{
				id:"VentanaMooModal",
				styles:{
					backgroundColor : this.options.fondoModal,
					opacity:this.options.opacidad,
					height:window.getScrollHeight(),
					width:window.getScrollWidth(),
					zIndex:1009,
					position:'absolute',
					top:'0px',
					left:'0px',
					visibility:'hidden'
				}
			});
			$$('select').setStyle("visibility","hidden");
			$$('body').grab(modal);
			modal.tween("opacity",[0,this.options.opacidad]);
			//modal.fadeTo(this.options.opacidad);
			$$('body').grab(ventana);
			
			if(this.options.separacion==0){
				$('conte__moo').setStyle("padding","0px");
			}
			
			if(this.options.htmlCerrar!=""){
				$('cierra_v_moo').set("html",this.options.htmlCerrar);
			}
			if(this.options.colorBorde!=""){
				ventana.setStyles({"border-color":this.options.colorBorde});
			}
			if(this.options.estiloCabecera!=""){
				$('header__moo').addClass(this.options.estiloCabecera);
			}
			if(this.options.imagenFondo!=""){
					$('conte__moo').setStyle("background-image","url("+this.options.imagenFondo+")");
					$('conte__moo').setStyle("background-repeat","repeat-x");
			}
			
			this.posicionar();
			if(this.options.url==""){
				$('conte__moo').set('html',this.options.html);	
			}else{
					try{
						$('conte__moo').set('load',{
							'evalResponse':true,
							'onSuccess':function(){
								if($(this.options.btnCerrar) && this.options.url){
									$(this.options.btnCerrar).addEvent('click',this.cerrar.bind(this)).setStyle("cursor","pointer").set("title","");
								}else{
									$('cierra_v_moo').addEvent('click',this.cerrar.bind(this));
								}
							}.bind(this)
						});
					
					}catch(err){
							txt="There was an error on this page.\n\n";
							txt+="Error description: " + err.description + "\n\n";
							txt+="Click OK to continue.\n\n";
							alert(txt);
					}
						
				$('conte__moo').load(this.options.url);	
			}
		}
		
		if(this.options.arrastra=="si"){
			if($('header__moo')){
				$('header__moo').setStyle("cursor","move");
				$(ventana).makeDraggable({handle :'header__moo'/*,container:document.body*/});
			}
			
		}
		
		document.addEvents({
			'keypress':function(e){
				if(e.key == 'esc' ){
					if($('conte__moo')){
						this.cerrar();
					}
				}
			}.bind(this)
		});
		window.addEvents({
			'resize':function(){
				if($('conte__moo')){
				//	$('VentanaMooModal').morph({"width":window.getScrollWidth(),"height":window.getScrollHeight()});
					this.posicionar();
				}
				
			}.bind(this),
			"scroll":function(){
				if($('conte__moo')){
					//$('VentanaMooModal').morph({"width":window.getScrollWidth(),"height":window.getScrollHeight()});
					this.posicionar();
				}
			}.bind(this)
		});
	
		$('VentanaMooModal').addEvent("click",function(){
			if($('conte__moo')){
				this.cerrar();
			}
		}.bind(this));
		
		
		var pos=window.getHeight();
				var posAncho=window.getWidth();
				sizes = window.getSize();
				scrollito = window.getScroll();
				
				
				ventana.setStyles({
					//top:0 + defaz.toInt()  
					'top': (scrollito.y + (sizes.y - this.options.alto) / 2).toInt()
				});
		
		
	},
	cerrar:function(){
			//window.removeEvent('keypress',function(e){});
			$$('select').setStyle("visibility","visible");
			$('VentanaMooModal')
			.set("tween",{
				duration:500,
				onComplete:function(){
						$('VentanaMooModal').destroy();
				}
			});
			if($(this.options.id)){
				$(this.options.id).destroy();
			}
			$('VentanaMooModal').tween("opacity",[this.options.opacidad,0])
			
			$$('select').setStyle("visibility","visible");
			this.fireEvent('cerrar');
	},
	posicionar:function(){
		var scrollventana = new Fx.Scroll(window, {
				wait: false,
				duration: 800,
				transition:  Fx.Transitions.Sine.easeInOut
		});
		if($(this.options.juntoA!="")){
				var pos=$(this.options.juntoA).getCoordinates();
				scrollventana.toElement($(this.options.juntoA).getParent());
				try{
					ventana.set('morph', {
									duration: 800, 
									transition: 'quad:out',
									onComplete:function(){
										//$('VentanaMooModal').setStyles({"width","100","height":"100"})
									}
								})
								
							.setStyle("left",pos.left - (this.options.ancho / 2).toInt());
							ventana.morph({
								opacity : [0.5,1],
								top: pos.top -  (this.options.alto).toInt() - 30
							});
				}catch(err){
					  txt="There was an error on this page.\n\n";
					  txt+="Error description: " + err.description + "\n\n";
					  txt+="Click OK to continue.\n\n";
					  alert(txt);
				}	
				
							
		}else{
				var pos=window.getHeight();
				var posAncho=window.getWidth();
				sizes = window.getSize();
				scrollito = window.getScroll();
				//ventana.setStyles({"top":0,"display":"none"});
				/*
				ventana.setStyles({
					//top:0 + defaz.toInt()  
					'top': (scrollito.y + (sizes.y - this.options.alto) / 2).toInt()
				});
				*/
				
				try{
					//$('VentanaMooModal').morph({"width":window.getScrollWidth(),"height":window.getScrollHeight()});
					//ventana.setStyles({'top': (scrollito.y + (sizes.y - this.options.alto) / 2).toInt()});
					ventana.set('morph', {
									duration: 500, 
									transition: 'sine:in:out',
									onComplete:function(){
										//scrollventana.toElement($('conte__moo'));
										ventana.setStyles({"display":"block"});
									}
								})								
							.morph({
								'top': (scrollito.y + (sizes.y - this.options.alto) / 2).toInt(),
								"left":posAncho / 2 - (this.options.ancho / 2).toInt()
							});
					$('cierra_v_moo').addEvent('click',this.cerrar.bind(this));
					
							
				}catch(err){
					  txt="There was an error on this page.\n\n";
					  txt+="Error description: " + err.description + "\n\n";
					  txt+="Click OK to continue.\n\n";
					  alert(txt);
				}	
				
		}
	}
});

function Alertas(msg,w){
	if(!w){
		$ancho=300;
	}else{
		$ancho=w;	
	}
		
	
	new Ventana({
		id:"ventana_1_registroooo",
		titulo:'Regalosperu.com.pe',
		modal:true,
		html:"<div class='contenidoVentana'><img src='images/alert.png' align='absmiddle'/>"+msg+"</div>",
		ancho:$ancho,
		alto:120,
		arrastra:"si",
		fondo:"#FFF",
		estiloCabecera:"fondocabecera",
		separacion:0,
		colorBorde:"#FFB652",
		htmlCerrar: "X",
		borde:3
	}).render();
}



var Tooltips=new Class({
	Implements: Options,				   
	options:{
		objeto:"moo__tip",
		clase:"mootips",
		ancho: 250,
		alto: 150,
		fondo:"",
		html:"",
		div:"moo",
		posicion:"arriba",
		estiloInterior:"",
		evento:"over",
		bntCerrar:"",
		colorFondo:"",
		borde:"",
		forzarCierre:true,
		aliner:"",
		opacidad:1
	},
	initialize:function(options){
		this.setOptions(options);
		if(this.options.evento=="over"){
			this.bntCerrar="";
		}
		 moo___tip = new Element("div",{
			id:'moo_tip__'+this.options.div,
			styles:{
				backgroundImage : 'url('+this.options.fondo+')',
				backgroundRepeat: 'no-repeat',
				border : '0px solid blue',
				width : this.options.ancho+'px',
				height :this.options.alto+'px',
				position:'absolute',
				visibility:'hidden',
				padding:'0px',
				zIndex:1500
			},
			html:'<div align="right" style="padding-right:10px;margin-top:2px;float:right"  id="cierraTip__'+this.options.div+'">'+this.options.bntCerrar+'</div><div style="padding:10px">'+
						'<div class="'+this.options.estiloInterior+'">'+this.options.html+'</div></div>'
		});
		 if(this.options.fondo!=""){
		//	 $('moo_tip__').setStyle("border","0");
		 }
		 
		 if(this.options.colorFondo!=""){
			moo___tip.setStyle("background-color",this.options.colorFondo);
		 }
		 
		 if(this.options.borde!=""){
			moo___tip.setStyle("border",this.options.borde);
		 }
		 moo___tip.setStyle("top","0px");
		 
		 moo___tip.setOpacity(this.options.opacidad);
		 
		 $$('body').grab(moo___tip);
		 moo___tip.PNG();
		$(this.options.div)
			.addEvents({
				"mouseenter":function(e){
					e.stop();
					if(this.options.evento=="over"){
						this.mostrar();
					}
					
					
				}.bind(this),
				"mouseleave":function(){
					if(this.options.evento=="over" || this.options.forzarCierre==false ){
						this.cerrar();
					}
				}.bind(this),
				"click":function(e){
					e.stop();
					if(this.options.evento=="click"){
						this.mostrar();
					}
				}.bind(this)
			}).setStyle('cursor','pointer');

		$('cierraTip__'+this.options.div)
		.addEvent("click",function(){
				this.cerrar();
		}.bind(this)).setStyle("cursor","pointer");
		 
		 //this.iniciar();
		
		document.addEvent("click",function(){
			if(moo___tip){
				//this.cerrar();
			}
		}.bind(this));
		
		
	},
	iniciar:function(){
		
		
	},
	mostrar:function(){
		pos=$(this.options.div).getCoordinates();
		if(this.options.alinear!=""){
			switch(this.options.alinear){
				case "izquierda":
					miizquierdaarriba=(pos.left).toInt();
					miizquierdaabajo=(pos.left).toInt();
				break;
				default: 
					miizquierdaarriba=(pos.left).toInt()-(this.options.ancho/2);
					miizquierdaabajo=(pos.left).toInt() - ((this.options.ancho - pos.width) / 2).toInt();
			}

		}
		switch(this.options.posicion){
			case "arriba":
				$('moo_tip__'+this.options.div)
				.setStyles({'left':miizquierdaarriba,'top':(pos.top)-this.options.alto - 10 })
				.morph({
					'top' :[$('moo_tip__'+this.options.div).getStyle("top") ,(pos.top).toInt() - this.options.alto ]
				});	
			break;
			
			case "abajo":
				$('moo_tip__'+this.options.div)
				.setStyle('left',miizquierdaabajo).morph({
					'top' :[(pos.top).toInt() + pos.height + 10,(pos.top).toInt() + pos.height]
				});	
		}
		$('moo_tip__'+this.options.div).fade("in");
		$('moo_tip__'+this.options.div).fadeTo(this.options.opacidad);
	},
	cerrar:function(){
		if($('moo_tip__'+this.options.div)){
			$('moo_tip__'+this.options.div).fade("out");
			//$('moo_tip__'+this.options.div).destroy();
		}
	}
});

var Contador= new Class({
	Implements : Options,
	options:{
		a:"",
		maximo :400,
		mensaje:"",
		estiloMensaje:"",
		mensajeEn:"",
		colorEfecto1:"#7D4D25",
		colorEfecto2:"#FFFFFF"
		
	},
	initialize:function(options){		
		this.setOptions(options);
		this.options.mensaje="Contador de caracteres (m&aacute;ximo "+ this.options.maximo +")";
		var el=this.options.a;
		msg= new Element("span",{
			id:'___moo___conta__'+this.options.a,
			html:this.options.mensaje,
			'class':this.options.estiloMensaje
		});
		if(this.options.mensajeEn){
			$(this.options.mensajeEn).set("html",this.options.mensaje);
		}else{
			$(msg).injectAfter(this.options.a);
		}
		
		if($(this.options.a)){
			$(this.options.a)
			.addEvent("keyup",function(){
					var actual=this.options.maximo - ($(this.options.a).value.length).toInt();
				if(actual>=0){
					this.options.mensaje="Contador de caracteres (m&aacute;ximo "+actual+")";
					if(this.options.mensajeEn!=""){
						$(this.options.mensajeEn).set("html",this.options.mensaje);
					}else{
						$('___moo___conta__'+this.options.a).set("html",this.options.mensaje);
					}
				}else{
					$(this.options.a).highlight(this.options.colorEfecto1,this.options.colorEfecto2);
					value=$(this.options.a).get("value");
					if(value.length > this.options.maximo){
							value =  value.substring(0, this.options.maximo);
						$(this.options.a).set('value',value);
					}
					return false;
				}
			}.bind(this));
		}
	}
});

var Hints= new Class({
	Implements :  Options,
	options:{
		campo:"",
		texto:""
	},
	initialize:function(options){
		this.setOptions(options);
		$(this.options.campo).set("value",this.options.texto);
		$(this.options.campo).set("autocomplete","off")
		.addEvents({
			"focus":function(){
				atext=$(this.options.campo).get("value");
				if(atext==this.options.texto || atext==""){
					$(this.options.campo).set("value","");
				}
			}.bind(this),
			"blur":function(){
				atext=$(this.options.campo).get("value");
				if(atext==this.options.texto || atext==""){
					$(this.options.campo).set("value",this.options.texto);
				}
			}.bind(this)
		});
	}
});

var ACarrusel= new Class({
	Implements : Options,
	contenedor:"",
	options:{
		anchoItem:"",
		altoItem:"",
		ver:2,
		avanze:2,
		anterior:"",
		siguiente:"",
		duracion:0.5,
		auto:"",
		anchoTotal:"",
		transicion:"linear",
		ruedita:"",
		controles:"si"
	},
	anchoTotal:"",
	timer:"",
	hijos:"",
	
	initialize:function (contenedor,options){
		this.setOptions(options);
		this.contenedor=$(contenedor);
		padre=this.contenedor.getParent().getStyle("width");
		var warp= new Element("div",{
			styles:{
				"overflow":"hidden",
				"position":"relative",
				"width":padre
			}
		});
		
		
		if(this.options.ruedita!=""){
			this.contenedor.addEvents({
				"mousewheel":function(e){
					var e = new Event(e).stop();
					if ( e.wheel > 0  ) {
						this.mover("adelante");
					}else{
						this.mover("atras");
					}
				
				}.bind(this)
			});
		}
		this.contenedor.getParent().grab(warp);
		warp.adopt(this.contenedor);
		var ancho=this.contenedor.getParent().getCoordinates();
		if(this.options.anchoItem=="" && this.options.altoItem==""){
			this.options.anchoItem= (ancho.width.toInt()/this.options.ver);
			this.options.altoItem= (ancho.height.toInt()/this.options.ver);
		}
		var nodos=this.contenedor.getChildren();
		this.hijos=nodos;
		this.anchoTotal=this.options.anchoItem * nodos.length;
		this.contenedor.setStyles({"overflow":"hidden","position":"relative","list-style":"none","margin":0,"padding":0,"width":this.anchoTotal });
		this.contenedor.getChildren()
		.setStyles({"float":"left","height":this.options.altoItem,"width":this.options.anchoItem})
		.each(function(e,k){
			//e.set("id","_item_"+(k+1).toInt());
			e.addEvents({
				"mouseenter":function(){
					if(this.options.auto!=""){
						this.detenerAutomovible();
					}
					//e.setStyle("cursor","pointer");
				}.bind(this),
				"mouseleave":function(){
					if(this.options.auto!=""){
						this.automovible();
					}
				}.bind(this)
			});
		}.bind(this));
		
		
		if(this.options.controles=="si"){
			$(this.options.anterior)
			.setStyle("cursor","pointer");
			$(this.options.siguiente)
			.setStyle("cursor","pointer");
			$(this.options.siguiente).
					addEvent("click",function(){
						this.mover("adelante");
				}.bind(this));
				
				$(this.options.anterior).
					addEvent("click",function(){
						this.mover("atras");
				}.bind(this));
		}
		
		if(this.options.auto!=""){
				this.automovible();
		}
	},
	automovible:function(){
		this.timer=this.mover.periodical(this.options.auto * 1000,this,["adelante"]);
	},
	detenerAutomovible:function(){
		$clear(this.timer);
	},
	mover:function(direccion){	
			
			if(direccion=="adelante"){
				actual=this.contenedor.getStyle("margin-left").toInt();
				this.contenedor.set("morph",{
					duration:this.options.duracion * 1000,wait:true,transition:this.options.transicion,
					onStart:function(){
						itemactual= - (this.contenedor.getStyle("margin-left").toInt());//this.anchoTotal
						aver=(itemactual/this.options.anchoItem)+1;
						if(aver>(this.hijos.length-this.options.avanze)){
							this.contenedor.get("morph").cancel();
							this.moverAlPrimero();
							return false;
						}
					}.bind(this)
				});
				this.contenedor.morph({
					"margin-left":  (actual - this.options.anchoItem * this.options.avanze)
					//"opacity" : [0.5,1]
				});
				
			}else if (direccion="atras"){
				actual=this.contenedor.getStyle("margin-left").toInt();
				this.contenedor.set("morph",{duration:this.options.duracion * 1000,wait:true,transition:this.options.transicion,
					onStart:function(){
						itemactual=(this.contenedor.getStyle("margin-left").toInt());//this.anchoTotal
						if(itemactual==0){
							this.contenedor.get("morph").cancel();
							return false;
						}
					}.bind(this)
				});
				this.contenedor.morph({
					"margin-left":  (actual + this.options.anchoItem * this.options.avanze)
					//"opacity" : [0.5,1]
				});
			}
	},
	moverAlPrimero:function(index){
		this.contenedor.set("morph",{duration:this.options.duracion * 1000,wait:true,transition:this.options.transicion});
		this.contenedor.morph({
			"margin-left":  0
			//"opacity" : [0.5,1]
		})
	}
});


var ASlide = new Class({
	options: {
		showControls: false,
		showDuration: 5000,
		showTOC: false,
		tocWidth: 20,
		tocClass: 'toc',
		tocActiveClass: 'toc-active',
		durationEfect:1000
	},
	Implements: [Options,Events],
	initialize: function(container,elements,options) {
		//settings
		this.container = $(container);
		this.elements = $$(elements);
		this.currentIndex = 0;
		this.interval = '';
		if(this.options.showTOC) this.toc = [];
		
		//assign
		this.elements.each(function(el,i){
			var capa= new Element('div',{
			});
			capa.inject(this.container);
			if(this.options.showTOC) {
				this.toc.push(new Element('a',{
					text: i+1,
					href: '#',
					'class': this.options.tocClass + '' + (i == 0 ? ' ' + this.options.tocActiveClass : ''), //modificado para dulce
					//'class': 'toc'+(i+1)+' ' + (i == 0 ? ' ' + 'toc'+(i+1)+'-active' : ''),
					events: {
						click: function(e) {
							if(e) e.stop();
							this.stop();
							this.show(i);
						}.bind(this)
					},
					styles: {
						left: 280+ ((i + 1) * (this.options.tocWidth + 80)) //mpodificado parsa dulce  < ((i + 1) * (this.options.tocWidth + 10)) >
					}
				}).inject(this.container));
				//.inject(capa))
			}
			
			if(i > 0) el.set('opacity',0);
		},this);
		
		//next,previous links
		if(this.options.showControls) {
			this.createControls();
			
		}
		//events
		this.container.addEvents({
			mouseenter: function() { this.stop(); }.bind(this),
			mouseleave: function() { this.start(); }.bind(this)
		});

	},
	show: function(to) {
		//alert(this.currentIndex+1);
		this.elements[this.currentIndex].set("tween",{duration:this.options.durationEfect});
		this.elements[this.currentIndex].tween('opacity',0);
		if(this.options.showTOC) this.toc[this.currentIndex].removeClass(this.options.tocActiveClass);
		this.elements[this.currentIndex = ($defined(to) ? to : (this.currentIndex < this.elements.length - 1 ? this.currentIndex+1 : 0))].tween("opacity",1);
		if(this.options.showTOC) this.toc[this.currentIndex].addClass(this.options.tocActiveClass);
	},
	start: function() {
		this.interval = this.show.bind(this).periodical(this.options.showDuration);
	},
	stop: function() {
		$clear(this.interval);
	},
	//"private"
	createControls: function() {
		var next = new Element('a',{
			href: '#',
			id: 'next',
			text: '>>',
			events: {
				click: function(e) {
					if(e) e.stop();
					this.stop(); 
					this.show();
				}.bind(this)
			}
		}).inject(this.container); 
		var previous = new Element('a',{
			href: '#',
			id: 'previous',
			text: '<<',
			events: {
				click: function(e) {
					if(e) e.stop();
					this.stop(); 
					this.show(this.currentIndex != 0 ? this.currentIndex -1 : this.elements.length-1);
				}.bind(this)
			}
		}).inject(this.container); 
	}
});



var FormCheck = new Class({
	
	Implements: [Options, Events],

	options : {
		
		tipsClass : 'fc-tbx',				//tips error class
		errorClass : 'fc-error',			//div error class
		fieldErrorClass : 'fc-field-error',	//error class for elements
		
		submit : true,						//false : just validate the form and do nothing else. Use onValidateSuccess event to execute some code
		
		trimValue : false,					//trim (remove whitespaces before and after) the value
		validateDisabled : false,			//skip validation on disabled input if set to false.
		
		submitByAjax : false,				//false : standard submit way, true : submit by ajax
		ajaxResponseDiv : false,			//element to inject ajax response into (can also use onAjaxSuccess) [cronix] 
		ajaxEvalScripts : false,			//use evalScripts in the Request response [cronix] 
		onAjaxRequest : $empty,				//Function to fire when the Request event starts 
		onAjaxSuccess : $empty,				//Function to fire when the Request receives .  Args: response [the request response] - see Mootools docs for Request.onSuccess 
		onAjaxFailure : $empty,				//Function to fire if the Request fails
		
		onSubmit		  : $empty,			//Function to fire when user submit the form
		onValidateSuccess : $empty,			//Function to fire when validation pass
		onValidateFailure : $empty,			//Function to fire when validation fails

		display : {
			showErrors : 0,
			titlesInsteadNames : 0,
			errorsLocation : 1,
			indicateErrors : 1,
			indicateErrorsInit : 0,
			keepFocusOnError : 0,
			checkValueIfEmpty : 1,
			addClassErrorToField : 0,
			removeClassErrorOnTipClosure : 0,
			fixPngForIe : 1,
			replaceTipsEffect : 1,
			flashTips : 0,
			closeTipsButton : 1,
			tipsPosition : "right",
			tipsOffsetX : -45,
			tipsOffsetY : 0,
			listErrorsAtTop : false,
			scrollToFirst : true,
			fadeDuration : 0
		},
		
		alerts : {
			required : "Este campo es obligatorio.",
			alpha : "Este campo solo acepta letras.",
			alphanum : "Este campo s&oacute;lo acepta letras y n&uacute;meros.",
			nodigit : "No se aceptan d&iacute;gitos.",
			digit : "Por favor solo ingrese numero enteros.",
			digitltd : "Este valor debe estar entre %0 y %1",
			number : "Por favor ingrese un n&uacute;mero v&aacute;lido.",
			email : "Por favor ingrese un email v&aacute;lido.",
			image : 'Este campo s&olo acepta im&aacute;genes', 
			phone : "Por favor ingrese un numero de tel&eacute;fono v&acute;lido.",
			phone_inter : "Por favor ingrese un numero internacional de tel&eacute;fono v&acute;lido.",
			url : "Por favor ingrese una correcta URL.",
			
			confirm : "Este campo es diferente de  %0",
			differs : "Este campo debe ser diferente de  %0",
			length_str : "El tama&ntilde;o es incorrecto, debe ser contener entre %0 y %1",
			length_fix : "El tama&ntilde;o es incorrecto, debe contener exactamente %0 caracteres",
			lengthmax : "El tama&ntilde;o es incorrecto, debe ser como m&aacute;ximo %0",
			lengthmin : "El tama&ntilde;o es incorrecto, debe ser mayor a %0",
			words_min : "Este campo debe estar entre %0 palabras, actualmente: %1 palabras",
			words_range : "Eset campo debe contener %0-%1 palabras, actualmente: %2 palabras",
			words_max : "Este campo debe contener como m&aacute;ximo %0 palabras, actualmente: %1 palabras",
			checkbox : "Por favor revise el check",
			radios : "Por favor seleccione una opci&oacute;n",
			select : "Por favor seleccione un valor"
		},
		
		regexp : {
			required : /[^.*]/,
			alpha : /^[a-z ._-]+$/i,
			alphanum : /^[a-z0-9 ._-]+$/i,
			digit : /^[-+]?[0-9]+$/,
			nodigit : /^[^0-9]+$/,
			number : /^[-+]?\d*\.?\d+$/,
			email : /^([a-zA-Z0-9_\.\-\+%])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
			image : /.(jpg|jpeg|png|gif|bmp)$/i,
			phone : /^[\d\s ().-]+$/, // alternate regex : /^[\d\s ().-]+$/,/^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/
			phone_inter : /^\+{0,1}[0-9 \(\)\.\-]+$/,
			url : /^(http|https|ftp)\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(:[a-z0-9]*)?\/?([a-z0-9\-\._\?\,\'\/\\\+&amp;%\$#\=~])*$/i
		}
	},
	
	/*
	Constructor: initialize
		Constructor
	
		Add event on formular and perform some stuff, you now, like settings, ...
	*/
	initialize : function(form, options) {
		if (this.form = $(form)) {
			this.form.isValid = true;
			this.regex = ['length'];
			this.setOptions(options);
			
			//internalization
			if (typeof(formcheckLanguage) != 'undefined') this.options.alerts = $merge(this.options.alerts, formcheckLanguage);
			
			this.validations = [];
			this.alreadyIndicated = false;
			this.firstError = false;
			
			var regex = new Hash(this.options.regexp);
			regex.each(function(el, key) {
				this.regex.push(key);
			}, this);

			this.form.getElements("*[class*=validate]").each(function(el) {
				if (el.get('tag') == 'select' || el.get('tag') == 'input' || el.get('tag') == 'textarea') this.register(el);
			}, this);
			
			this.form.addEvents({
				"submit": this.onSubmit.bind(this)
			});
			
			if(this.options.display.fixPngForIe) this.fixIeStuffs();
			document.addEvent('mousewheel', function(){
				this.isScrolling = false;
			}.bind(this));
		}
	},
	register : function(el, position) {
		el.validation = [];
		el.getProperty("class").split(' ').each(function(classX) {
			if(classX.match(/^validate(\[.+\])$/)) {
				var valid = true;
				//we check if group is already registered
				if (el.type == "radio") {
					this.validations.each(function(valider){
						if (valider.name == el.name) valid = false;
					}, this)
				}
				var validators = eval(classX.match(/^validate(\[.+\])$/)[1]);
				for(var i = 0; i < validators.length; i++) {
					el.validation.push(validators[i]);
					if (validators[i].match(/^confirm\[/)) {
						var field = eval(validators[i].match(/^.+(\[.+\])$/)[1].replace(/([A-Z0-9\._-]+)/i, "'$1'"));
						if (this.form[field].validation.contains('required')){
							el.validation.push('required');
						}							
					}
					if(validators[i].match(/^target:.+/)) {
						el.target = validators[i].match(/^target:(.+)/)[1];
					}
				}
				//new push way
				if (position && position <= this.validations.length) {
					var newValidations = [];
					this.validations.each(function(valider, i){
						if (position == i+1 && valid) {
							newValidations.push(el);
							this.addListener(el);
						}
						newValidations.push(valider);
					}, this);
					this.validations = newValidations;
				} else {
					if (valid) {
						this.validations.push(el);
						this.addListener(el);
					}
				}
			}
		}, this);
	},
	dispose : function(element) {
		this.validations.erase(element);
	},
	addListener : function(el) {
		el.errors = [];
		
		if (this.options.display.indicateErrorsInit) {
			this.validations.each(function(el) {
				if(!this.manageError(el,'submit')) this.form.isValid = false;
			}, this);
			return true;
		} 
	
		if (el.validation[0] == 'submit') {
			el.addEvent('click', function(e){
				if (this.onSubmit(e)) this.form.submit();
			}.bind(this));
			return true;
		}

		if (this.isChildType(el) == false) el.addEvent('blur', function() {
			(function(){
				if(!this.fxRunning && (el.element || this.options.display.showErrors == 1) && (this.options.display.checkValueIfEmpty || el.value))
				this.manageError(el, 'blur')
			}.bind(this)).delay(100);
		}.bind(this))
		//We manage errors on radio
		else if (this.isChildType(el) == true) {
			//We get all radio from the same group and add a blur option
			var nlButtonGroup = this.form.getElements('input[name="'+ el.getProperty("name") +'"]');
			nlButtonGroup.each(function(radio){
				radio.addEvent('blur', function(){
					(function(){
						if((el.element || this.options.display.showErrors == 1) && (this.options.display.checkValueIfEmpty || el.value)) this.manageError(el, 'click');
					}.bind(this)).delay(100);
				}.bind(this))
			},this);
		}
	},
	validate : function(el) {
		el.errors = [];
		el.isOk = true;
		
		//skip validation and trim if specified
		if (!this.options.validateDisabled && el.get('disabled')) return true;
		if (this.options.trimValue && el.value) el.value = el.value.trim();
		
		el.validation.each(function(rule) {
			if(this.isChildType(el)) {
				if (this.validateGroup(el) == false) {
					el.isOk = false;
				}
			} else {
				var ruleArgs = [];
				
				if(rule.match(/target:.+/)) return;
				
				if(rule.match(/^.+\[/)) {
					var ruleMethod = rule.split('[')[0];
					ruleArgs = eval(rule.match(/^.+(\[.+\])$/)[1].replace(/([A-Z0-9\._-]+)/i, "'$1'"));
				} else var ruleMethod = rule;
				
				if (this.regex.contains(ruleMethod) && el.get('tag') != "select") {
					if (this.validateRegex(el, ruleMethod, ruleArgs) == false) {
						el.isOk = false;
					}
				}
				if (ruleMethod == 'confirm') {
					if (this.validateConfirm(el, ruleArgs) == false) {
						el.isOk = false;
					}
				}
				if (ruleMethod == 'differs') {
					if (this.validateDiffers(el, ruleArgs) == false) {
						el.isOk = false;
					}
				}
				if (ruleMethod == 'words') {
					if (this.validateWords(el, ruleArgs) == false) {
						el.isOk = false;
					}
				}
				if (el.get('tag') == "select" || (el.type == "checkbox" && ruleMethod == 'required')) {
					if (this.simpleValidate(el) == false) {
						el.isOk = false;
					}
				}
				if(rule.match(/%[A-Z0-9\._-]+$/i) || (el.isOk && rule.match(/~[A-Z0-9\._-]+$/i))) {
					if(eval(rule.slice(1)+'(el)') == false) {
						el.isOk = false;
					}
				}
			}
		}, this);
		
		if (el.isOk) return true;
		else return false;
	},
	simpleValidate : function(el) {
		if (el.get('tag') == 'select' && el.selectedIndex <= 0) {
			el.errors.push(this.options.alerts.select);
			return false;
		} else if (el.type == "checkbox" && el.checked == false) {
			el.errors.push(this.options.alerts.checkbox);
			return false;
		}
		return true;
	},
	validateRegex : function(el, ruleMethod, ruleArgs) {
		var msg = "";
		if (ruleArgs[1] && ruleMethod == 'length') {
			if (ruleArgs[1] == -1) {
				this.options.regexp.length = new RegExp("^[\\s\\S]{"+ ruleArgs[0] +",}$");
				msg = this.options.alerts.lengthmin.replace("%0",ruleArgs[0]);
			} else if(ruleArgs[0] == ruleArgs[1]) {
				this.options.regexp.length = new RegExp("^[\\s\\S]{"+ ruleArgs[0] +"}$");
				msg = this.options.alerts.length_fix.replace("%0",ruleArgs[0]);
			} else {
				this.options.regexp.length = new RegExp("^[\\s\\S]{"+ ruleArgs[0] +","+ ruleArgs[1] +"}$");
				msg = this.options.alerts.length_str.replace("%0",ruleArgs[0]).replace("%1",ruleArgs[1]);
			}
		} else if (ruleArgs[0] && ruleMethod == 'length') {
			this.options.regexp.length = new RegExp("^.{0,"+ ruleArgs[0] +"}$");
			msg = this.options.alerts.lengthmax.replace("%0",ruleArgs[0]);
		} else {
			msg = this.options.alerts[ruleMethod];
		}
		if (ruleArgs[1] && ruleMethod == 'digit') {
			var regres = true;
			if (!this.options.regexp.digit.test(el.value)) {
				el.errors.push(this.options.alerts[ruleMethod]);
				regres = false;
			}
			if (ruleArgs[1] == -1) {
				var valueres = ( el.value.toInt() >= ruleArgs[0].toInt() ); 
				msg = this.options.alerts.digitmin.replace("%0",ruleArgs[0]);
			} else {
				var valueres = ( el.value.toInt() >= ruleArgs[0].toInt() && el.value.toInt() <= ruleArgs[1].toInt() );
				msg = this.options.alerts.digitltd.replace("%0",ruleArgs[0]).replace("%1",ruleArgs[1]);
			}
			if (regres == false || valueres == false) {
				el.errors.push(msg);
				return false;
			}
		} else if (this.options.regexp[ruleMethod].test(el.value) == false)  {
			el.errors.push(msg);
			return false;
		}
		return true;
	},

	/*
	Function: validateConfirm
		Private method
		
		Perform confirm validations
	*/
	validateConfirm: function(el,ruleArgs) {
		
		var confirm = ruleArgs[0];
		if(el.value != this.form[confirm].value){
			if (this.options.display.titlesInsteadNames)
				var msg = this.options.alerts.confirm.replace("%0",this.form[confirm].getProperty('title'));
			else
				var msg = this.options.alerts.confirm.replace("%0",confirm);
			el.errors.push(msg);
			return false;
		}
		return true;
	},
	
	/*
	Function: validateDiffers
		Private method
		
		Perform differs validations
	*/
	validateDiffers: function(el,ruleArgs) {
		var differs = ruleArgs[0];
		if(el.value == this.form[differs].value){
			if (this.options.display.titlesInsteadNames)
				var msg = this.options.alerts.differs.replace("%0",this.form[differs].getProperty('title'));
			else
				var msg = this.options.alerts.differs.replace("%0",differs);
			el.errors.push(msg);
			return false;
		}
		return true;
	},
	
	/*
	Function: validateWords
		Private method
		
		Perform word count validation
	*/
	validateWords: function(el,ruleArgs) {
		var min = ruleArgs[0];
		var max = ruleArgs[1];
		
		var words = el.value.replace(/[ \t\v\n\r\f\p]/m, ' ').replace(/[,.;:]/g, ' ').clean().split(' ');
		
		if(max == -1) {
			if(words.length < min) {
				el.errors.push(this.options.alerts.words_min.replace("%0", min).replace("%1", words.length));
				return false;
			}
		} else {
			if(min > 0)	{
				if(words.length < min || words.length > max) {
					el.errors.push(this.options.alerts.words_range.replace("%0", min).replace("%1", max).replace("%2", words.length));
					return false;
				}
			} else {
				if(words.length > max) {
					el.errors.push(this.options.alerts.words_max.replace("%0", max).replace("%1", words.length));
					return false;
				}
			}
		}
		return true;
	},


	/*
	Function: isFormValid
		public method
		
		Determine if the form is valid
		
		Return true or false
	*/
    isFormValid: function() {
		this.form.isValid = true;
		this.validations.each(function(el) {
			var validation = this.manageError(el,'testonly');
			if(!validation) this.form.isValid = false;
		}, this);
		return this.form.isValid;
	},
	
	/*
	Function: isChildType
		Private method
		
		Determine if the field is a group of radio or not.
	*/
	isChildType: function(el) {
		return ($defined(el.type) && el.type == 'radio') ? true : false;
	},
	
	/*
	Function: validateGroup
		Private method
		
		Perform radios validations
	*/
	validateGroup : function(el) {
		el.errors = [];
		var nlButtonGroup = this.form[el.getProperty("name")];
		el.group = nlButtonGroup;
		var cbCheckeds = false;
		
		for(var i = 0; i < nlButtonGroup.length; i++) {
			if(nlButtonGroup[i].checked) {
				cbCheckeds = true;
			}
		}
		if(cbCheckeds == false) {
			el.errors.push(this.options.alerts.radios);
			return false;
		} else {
			return true;	
		}
	},
	
	/*
	Function: listErrorsAtTop
		Private method
		
		Display errors
	*/
	listErrorsAtTop : function(obj) {
		if(!this.form.element) {
			 this.form.element = new Element('div', {'id' : 'errorlist', 'class' : this.options.errorClass}).injectTop(this.form);
		}
		if ($type(obj) == 'collection') {
			new Element('p').set('html',"<span>" + obj[0].name + " : </span>" + obj[0].errors[0]).injectInside(this.form.element);
		} else {
			if ((obj.validation.contains('required') && obj.errors.length > 0) || (obj.errors.length > 0 && obj.value && obj.validation.contains('required') == false)) {
				obj.errors.each(function(error) {
					new Element('p').set('html',"<span>" + obj.name + " : </span>" + error).injectInside(this.form.element);
				}, this);
			}
		}
		window.fireEvent('resize');
	},
	
	/*
	Function: manageError
		Private method
		
		Manage display of errors boxes
	*/
	manageError : function(el, method) {
		var isValid = this.validate(el);
		if (method == 'testonly') return isValid;
		if ((!isValid && el.validation.flatten()[0].contains('confirm[')) || (!isValid && el.validation.contains('required')) || (!el.validation.contains('required') && el.value && !isValid)) {
			if(this.options.display.listErrorsAtTop == true && method == 'submit')
				this.listErrorsAtTop(el);
			if (this.options.display.indicateErrors == 2 ||this.alreadyIndicated == false || el.name == this.alreadyIndicated.name)
			{
				if(!this.firstError) this.firstError = el;
				
				this.alreadyIndicated = el;
				
				if (this.options.display.keepFocusOnError && el.name == this.firstError.name) (function(){el.focus()}).delay(20);
				this.addError(el);
				return false;
			}
		} else if ((isValid || (!el.validation.contains('required') && !el.value))) {
			this.removeError(el);
			return true;
		}
		return true;
	},
	
	/*
	Function: addError
		Private method
		
		Add error message
	*/
	addError : function(obj) {
		//determine position
		var coord = obj.target ? $(obj.target).getCoordinates() : obj.getCoordinates();
		
		if(!obj.element && this.options.display.indicateErrors != 0) {
			if (this.options.display.errorsLocation == 1) {
				var pos = (this.options.display.tipsPosition == 'left') ? coord.left : coord.right;
				var options = {
					'opacity' : 0,
					'position' : 'absolute',
					'float' : 'left',
					'left' : pos + this.options.display.tipsOffsetX,
					'z-Index' : 900
				}
				obj.element = new Element('div', {'class' : this.options.tipsClass, 'styles' : options}).injectInside(document.body);
				this.addPositionEvent(obj);
			} else if (this.options.display.errorsLocation == 2){
				obj.element = new Element('div', {'class' : this.options.errorClass, 'styles' : {'opacity' : 0}}).injectBefore(obj);
			} else if (this.options.display.errorsLocation == 3){
				obj.element = new Element('div', {'class' : this.options.errorClass, 'styles' : {'opacity' : 0}});
				if ($type(obj.group) == 'object' || $type(obj.group) == 'collection')
					obj.element.injectAfter(obj.group[obj.group.length-1]);
				else
					obj.element.injectAfter(obj);
			}
		}					
		if (obj.element && obj.element != true) {
			obj.element.empty();
			if (this.options.display.errorsLocation == 1) {
				var errors = [];
				obj.errors.each(function(error) {
					errors.push(new Element('p').set('html', error));
				});
				var tips = this.makeTips(errors).injectInside(obj.element);
				if(this.options.display.closeTipsButton) {
					tips.getElements('a.close').addEvent('mouseup', function(){
						this.removeError(obj, 'tip');
					}.bind(this));
				}
				obj.element.setStyle('top', coord.top - tips.getCoordinates().height + this.options.display.tipsOffsetY);
			} else {
				obj.errors.each(function(error) {
					new Element('p').set('html',error).injectInside(obj.element);
				});
			}
			
			if (!this.options.display.fadeDuration || Browser.Engine.trident && Browser.Engine.version == 5 && this.options.display.errorsLocation < 2) {
				obj.element.setStyle('opacity', 1);
			} else {
				obj.fx = new Fx.Tween(obj.element, {
					'duration' : this.options.display.fadeDuration,
					'ignore' : true,
					'onStart' : function(){
						this.fxRunning = true;
					}.bind(this),
					'onComplete' : function() {
						this.fxRunning = false;
						if (obj.element && obj.element.getStyle('opacity').toInt() == 0) {
							obj.element.destroy();
							obj.element = false;
						}
					}.bind(this)
				})
				if(obj.element.getStyle('opacity').toInt() != 1) obj.fx.start('opacity', 1);
			}
		}
		if (this.options.display.addClassErrorToField && this.isChildType(obj) == false){
			obj.addClass(this.options.fieldErrorClass);
			obj.element = obj.element || true;
		}
			
	},
	
	/*
	Function: addPositionEvent
		
		Update tips position after a browser resize
	*/
	addPositionEvent : function(obj) {
		if(this.options.display.replaceTipsEffect) {
			obj.event = function(){
				var coord = obj.target ? $(obj.target).getCoordinates() : obj.getCoordinates();
				new Fx.Morph(obj.element, {
					'duration' : this.options.display.fadeDuration
				}).start({ 
					'left':[obj.element.getStyle('left'), coord.right + this.options.display.tipsOffsetX],
					'top':[obj.element.getStyle('top'), coord.top - obj.element.getCoordinates().height + this.options.display.tipsOffsetY]
				});
			}.bind(this);
			
		} else {
			obj.event = function(){
				var coord = obj.target ? $(obj.target).getCoordinates() : obj.getCoordinates();
				obj.element.setStyles({ 
					'left':coord.right + this.options.display.tipsOffsetX,
					'top':coord.top - obj.element.getCoordinates().height + this.options.display.tipsOffsetY
				});
			}.bind(this)
		}
		window.addEvent('resize', obj.event);
	},
	
	/*
	Function: removeError
		Private method
		
		Remove the error display
	*/
	removeError : function(obj, method) {
		if ((this.options.display.addClassErrorToField && !this.isChildType(obj) && this.options.display.removeClassErrorOnTipClosure) || (this.options.display.addClassErrorToField && !this.isChildType(obj) && !this.options.display.removeClassErrorOnTipClosure && method != 'tip'))
			obj.removeClass(this.options.fieldErrorClass);

		if (!obj.element) return;
		this.alreadyIndicated = false;
		obj.errors = [];
		obj.isOK = true;
		window.removeEvent('resize', obj.event);
		if (this.options.display.errorsLocation >= 2 && obj.element) {
			new Fx.Tween(obj.element, {
				'duration': this.options.display.fadeDuration
			}).start('height', 0);
		}
		if (!this.options.display.fadeDuration || Browser.Engine.trident && Browser.Engine.version == 5 && this.options.display.errorsLocation == 1 && obj.element) {
			this.fxRunning = true;
			obj.element.destroy();
			obj.element = false;
			(function(){this.fxRunning = false}.bind(this)).delay(200);
		} else if (obj.element && obj.element != true) {
			obj.fx.start('opacity', 0);
		}
	},
	
	/*
	Function: focusOnError
		Private method
		
		Create set the focus to the first field with an error if needed
	*/
	focusOnError : function (obj) {
		if (this.options.display.scrollToFirst && !this.alreadyFocused && !this.isScrolling) {
			if (!this.options.display.indicateErrors || !this.options.display.errorsLocation) {
				var dest = obj.getCoordinates().top-30;
			} else if (this.alreadyIndicated.element) {
				switch (this.options.display.errorsLocation){
					case 1 : 
						var dest = obj.element.getCoordinates().top;
						break;
					case 2 :
						var dest = obj.element.getCoordinates().top-30;
						break;
					case 3 :
						var dest = obj.getCoordinates().top-30;
						break;
				}
				this.isScrolling = true;
			}
			if (window.getScroll.y != dest) {
				new Fx.Scroll(window, { duration:"long",
					onComplete : function() {
						this.isScrolling = false;
						if (obj.getProperty('type') != 'hidden') obj.focus();
					}.bind(this)
				}).start(0,dest);
			} else {
				this.isScrolling = false;
				obj.focus();
			}
			this.alreadyFocused = true;
		}
	},
	
	/*
	Function: fixIeStuffs
		Private method
		
		Fix png for IE6
	*/
	fixIeStuffs : function () {
		if (Browser.Engine.trident4) {
			//We fix png stuffs
			var rpng = new RegExp('url\\(([\.a-zA-Z0-9_/:-]+\.png)\\)');
			var search = new RegExp('(.+)formcheck\.css');
			for (var i = 0; i < document.styleSheets.length; i++){
				if (document.styleSheets[i].href.match(/formcheck\.css$/)) {
					var root = document.styleSheets[i].href.replace(search, '$1');
					var count = document.styleSheets[i].rules.length;
					for (var j = 0; j < count; j++){
						var cssstyle = document.styleSheets[i].rules[j].style;
						var bgimage = root + cssstyle.backgroundImage.replace(rpng, '$1');
						if (bgimage && bgimage.match(/\.png/i)){
							var scale = (cssstyle.backgroundRepeat == 'no-repeat') ? 'crop' : 'scale';
							cssstyle.filter =  'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, src=\'' + bgimage + '\', sizingMethod=\''+ scale +'\')';
							cssstyle.backgroundImage = "none";
						}
					}
				}
			}
		}
	},
	
	/*
	Function: makeTips
		Private method
		
		Create tips boxes
	*/
	makeTips : function(txt) {
		var table = new Element('table');
			table.cellPadding ='0';
			table.cellSpacing ='0';
			table.border ='0';
			
			var tbody = new Element('tbody').injectInside(table);
				var tr1 = new Element('tr').injectInside(tbody);
					new Element('td', {'class' : 'tl'}).injectInside(tr1);
					new Element('td', {'class' : 't'}).injectInside(tr1);
					new Element('td', {'class' : 'tr'}).injectInside(tr1);
				var tr2 = new Element('tr').injectInside(tbody);
					new Element('td', {'class' : 'l'}).injectInside(tr2);
					var cont = new Element('td', {'class' : 'c'}).injectInside(tr2);
						var errors = new Element('div', {'class' : 'err'}).injectInside(cont);
						txt.each(function(error) {
							error.injectInside(errors);
						});
						if (this.options.display.closeTipsButton) new Element('a',{'class' : 'close'}).injectInside(cont);
					new Element('td', {'class' : 'r'}).injectInside(tr2);
				var tr3 = new Element('tr').injectInside(tbody);
					new Element('td', {'class' : 'bl'}).injectInside(tr3);
					new Element('td', {'class' : 'b'}).injectInside(tr3);
					new Element('td', {'class' : 'br'}).injectInside(tr3);			
		return table;
	},
	
	/*
	Function: reinitialize
		Reinitialize form before submit check. You can use this also to remove all tips from a form, passing the argument "forced" ( formcheck.reinitialize('forced'); )
	*/
	reinitialize: function(forced) {
		this.validations.each(function(el) {
			if (el.element) {
				el.errors = [];
				el.isOK = true;
				if(this.options.display.flashTips == 1 || forced == 'forced') {
					el.element.destroy();
					el.element = false;
				}
			}
		}, this);
		if (this.form.element) this.form.element.empty();
		this.alreadyFocused = false;
		this.firstError = false;
		this.elementToRemove = this.alreadyIndicated;
		this.alreadyIndicated = false;
		this.form.isValid = true;
	},	
	submitByAjax: function() {
		var url = this.form.getProperty('action');
		this.fireEvent('ajaxRequest');
		new Request({
			url: url,
			method: this.form.getProperty('method'),
			data : this.form.toQueryString(),
			evalScripts: this.options.ajaxEvalScripts,
			onFailure: function(instance){
				this.fireEvent('ajaxFailure', instance);
			}.bind(this),
			onSuccess: function(result){
				this.fireEvent('ajaxSuccess', result);
				if(this.options.ajaxResponseDiv) $(this.options.ajaxResponseDiv).set('html',result);
			}.bind(this)
		}).send();
	},
	onSubmit: function(event) {
		this.reinitialize();
		this.fireEvent('onSubmit');
		
		this.validations.each(function(el) {
			var validation = this.manageError(el,'submit');
			if(!validation) this.form.isValid = false;
		}, this);
	    
		if (this.form.isValid) {
			if (this.options.submitByAjax) {
				new Event(event).stop();
				this.submitByAjax();
			} else if(!this.options.submit) {
				new Event(event).stop();
			}
			this.fireEvent('validateSuccess');
			return true;
		} else {
			new Event(event).stop();
			if (this.elementToRemove && this.elementToRemove != this.firstError && this.options.display.indicateErrors == 1) {
				this.removeError(this.elementToRemove);
			}
			this.focusOnError(this.firstError);
			this.fireEvent('validateFailure');
			return false;
		}
	}
});



var MooScroll=new Class({Implements:Options,options:{selector:".scroll",increment:30,upBtnClass:"upBtn",downBtnClass:"downBtn",scrollBarClass:"scrollBar",scrollHandleClass:"scrollHandle",scrollHandleBGClass:"scrollHandleBG",scrollHandleTopClass:"scrollHandleTop",scrollHandleMiddleClass:"scrollHandleMiddle",scrollHandleBottomClass:"scrollHandleBottom",scrollControlsYClass:"scrollControlsY",handleOpacity:1,handleActiveOpacity:0.85,disabledOpacity:0.5,fullWindowMode:false,smoothMooScroll:{toAnchor:true,toMooScrollArea:true},restrictedBrowsers:[Browser.Engine.presto925,Browser.Platform.ipod,Browser.Engine.webkit419]},initialize:function(a){if(this.options.restrictedBrowsers.contains(true)){return}this.setOptions(a);this.mooScrollAreas=[];this.windowFxScroll=new Fx.Scroll(document.window,{wait:false});$(document.body).getElements(this.options.selector).each(function(c,b){var d=new MooScrollArea(this.options,c,this.windowFxScroll);this.mooScrollAreas.include(d);if(this.options.smoothMooScroll.toAnchor||this.options.smoothMooScroll.toMooScrollArea){this.smoothMooScroll=new SmoothMooScroll({toAnchor:this.options.smoothMooScroll.toAnchor,toMooScrollArea:this.options.smoothMooScroll.toMooScrollArea},d.contentEl,this.windowFxScroll)}}.bind(this))},loadContent:function(a){this.mooScrollAreas.each(function(c,b){c.loadContent(a)})},refresh:function(){this.mooScrollAreas.each(function(b,a){b.refresh()})},setSlider:function(a){this.mooScrollAreas.each(function(c,b){c.setSlider(a)})}});var MooScrollArea=new Class({Implements:Options,initialize:function(a,b,c){this.windowFxScroll=c;this.setOptions(a);this.parentEl=b.setProperty("rel","MooScrollArea");this.viewPort={x:$(window).getSize().x,y:$(window).getSize().y};this.parentElPadding=this.parentEl.getStyles("padding-top","padding-right","padding-bottom","padding-left");this.paddingHeight=parseFloat(this.parentEl.getStyle("padding-top"))+parseFloat(this.parentEl.getStyle("padding-bottom"));this.paddingWidth=parseFloat(this.parentEl.getStyle("padding-left"))+parseFloat(this.parentEl.getStyle("padding-right"));this.contentEl=new Element("div",{"class":"contentEl"}).adopt(this.parentEl.getChildren()).inject(this.parentEl,"top");this.parentEl.setStyle("overflow","hidden").setStyles({padding:0,width:parseFloat(this.parentEl.getStyle("width"))+this.paddingWidth,height:parseFloat(this.parentEl.getStyle("height"))+this.paddingHeight});this.borderHeight=parseFloat(this.parentEl.getStyle("border-top-width"))+parseFloat(this.parentEl.getStyle("border-bottom-width"));this.contentEl.setStyles({height:this.parentEl.getSize().y-this.borderHeight,overflow:"hidden",padding:0});this.paddingEl=new Element("div",{"class":"paddingEl"}).adopt(this.contentEl.getChildren()).inject(this.contentEl,"top").setStyles(this.parentElPadding);if(this.options.fullWindowMode){$(document).getElement("html").setStyle("overflow","hidden");this.parentEl.setStyles({height:"100%",width:"100%",position:"absolute"});this.contentEl.setStyles({height:"100%",width:"100%",position:"absolute"})}this.scrollControlsYWrapper=new Element("div",{"class":this.options.scrollControlsYClass}).inject(this.parentEl,"bottom");this.upBtn=new Element("div",{"class":this.options.upBtnClass}).inject(this.scrollControlsYWrapper,"bottom");this.downBtn=new Element("div",{"class":this.options.downBtnClass}).inject(this.scrollControlsYWrapper,"bottom");this.scrollBar=new Element("div",{"class":this.options.scrollBarClass}).inject(this.scrollControlsYWrapper,"bottom");this.scrollHandle=new Element("div",{"class":this.options.scrollHandleClass}).inject(this.scrollBar,"inside");this.scrollHandleTop=new Element("div",{"class":this.options.scrollHandleTopClass}).inject(this.scrollHandle,"inside");this.scrollHandleBG=new Element("div",{"class":this.options.scrollHandleBGClass}).inject(this.scrollHandle,"inside");this.scrollHandleMiddle=new Element("div",{"class":this.options.scrollHandleMiddleClass}).inject(this.scrollHandle,"inside");this.scrollHandleBottom=new Element("div",{"class":this.options.scrollHandleBottomClass}).inject(this.scrollHandle,"inside");this.coverUp=new Element("div").inject(this.scrollControlsYWrapper,"bottom");this.fixIE6CSSbugs();this.overHang=this.paddingEl.getSize().y-this.parentEl.getSize().y;this.setHandleHeight();if(this.overHang<=0){this.greyOut();return}this.initSlider();this.parentEl.addEvents({mousewheel:function(d){d=new Event(d).stop();if(d.wheel>0){this.scrollUp(true)}else{if(d.wheel<0){this.scrollDown(true)}}}.bind(this),keydown:function(d){if(d.key==="up"){d=new Event(d).stop();this.scrollUp(true)}else{if(d.key==="down"||d.key==="space"){d=new Event(d).stop();this.scrollDown(true)}}}.bind(this),click:function(d){this.hasFocus=true;this.hasFocusTimeout=(function(){$clear(this.hasFocusTimeout);this.hasFocus=true}.bind(this)).delay(50)}.bind(this)});this.contentEl.addEvents({scroll:function(d){this.slider.set(this.contentEl.getScroll().y)}.bind(this)});this.scrollHandle.addEvents({mousedown:function(d){this.scrollHandle.addClass(this.options.scrollHandleClass+"-Active").setStyle("opacity",this.options.handleActiveOpacity)}.bind(this)});document.addEvents({mouseup:function(d){this.scrollHandle.removeClass(this.options.scrollHandleClass+"-Active").setStyle("opacity",this.options.handleOpacity);this.upBtn.removeClass(this.options.upBtnClass+"-Active");this.downBtn.removeClass(this.options.downBtnClass+"-Active")}.bind(this),keydown:function(d){if((this.hasFocus||this.options.fullWindowMode)&&(d.key==="down"||d.key==="space"||d.key==="up")){this.parentEl.fireEvent("keydown",d)}}.bind(this),click:function(d){this.hasFocus=false}.bind(this)});window.addEvent("resize",function(){$clear(this.refreshTimeout);if(this.options.fullWindowMode){this.refreshTimeout=(function(){$clear(this.refreshTimeout);if(this.viewPort.x!=$(window).getSize().x||this.viewPort.y!=$(window).getSize().y){this.refresh();this.viewPort.x=$(window).getSize().x;this.viewPort.y=$(window).getSize().y}}.bind(this)).delay(250)}}.bind(this));this.upBtn.addEvents({mousedown:function(d){$clear(this.upInterval);$clear(this.downInterval);this.upInterval=this.scrollUp.periodical(10,this);this.upBtn.addClass(this.options.upBtnClass+"-Active")}.bind(this),mouseup:function(d){$clear(this.upInterval);$clear(this.downInterval)}.bind(this),mouseout:function(d){$clear(this.upInterval);$clear(this.downInterval)}.bind(this)});this.downBtn.addEvents({mousedown:function(d){$clear(this.upInterval);$clear(this.downInterval);this.downInterval=this.scrollDown.periodical(10,this);this.downBtn.addClass(this.options.downBtnClass+"-Active")}.bind(this),mouseup:function(d){$clear(this.upInterval);$clear(this.downInterval)}.bind(this),mouseout:function(d){$clear(this.upInterval);$clear(this.downInterval)}.bind(this)})},initSlider:function(){this.slider=new Slider(this.scrollBar,this.scrollHandle,{range:[0,Math.round(this.overHang)],mode:"vertical",onChange:function(a,b){this.contentEl.scrollTo(0,a);this.webKitKludge(a)}.bind(this)}).set(0)},webKitKludge:function(a){if(!Browser.Engine.webkit){return}if(this.step>a){this.step=a;return}$clear(this.sliderTimeout);this.sliderTimeout=(function(){$clear(this.sliderTimeout);var b=(1*this.paddingEl.getSize().y)/100;if((b+a)>=this.overHang){if(this.paddingElTopMargin==null){this.paddingElTopMargin=parseFloat(this.paddingEl.getStyle("margin-top"))}this.paddingEl.setStyle("margin-top",this.paddingElTopMargin-b);if(!this.scrollHandleTopMargin){this.scrollHandleTopMargin=parseFloat(this.scrollHandle.getStyle("margin-top"))}this.scrollHandle.setStyle("margin-top",this.scrollHandleTopMargin+2);this.contentEl.scrollTo(0,this.overHang);this.step=this.overHang}else{this.paddingEl.setStyle("margin-top",this.paddingElTopMargin);this.scrollHandle.setStyle("margin-top",this.scrollHandleTopMargin);this.contentEl.scrollTo(0,a);this.step=a}}.bind(this)).delay(10)},scrollUp:function(a){var b=this.contentEl.getScroll().y-30;this.slider.set(b);if(this.contentEl.getScroll().y<=0&&a){document.window.scrollTo(0,document.window.getScroll().y-this.options.increment)}},scrollDown:function(c){var d=this.contentEl.getScroll().y+this.options.increment;this.slider.set(d);var a=(1*this.paddingEl.getSize().y)/100;var b=(this.paddingEl.getSize().y-this.parentEl.getSize().y)<=(this.contentEl.getScroll().y+a);if(b&&c){document.window.scrollTo(0,document.window.getScroll().y+this.options.increment)}},fixIE6CSSbugs:function(){if(Browser.Engine.trident4){this.parentEl.setStyle("height",this.parentEl.getStyle("height"));this.contentEl.setStyle("height",this.parentEl.getStyle("height"));var c=this.scrollBar.getStyle("top").toInt();var a=this.scrollBar.getStyle("bottom").toInt();var b=this.parentEl.getSize().y-this.borderHeight;this.scrollControlsYWrapper.setStyles({height:b});this.scrollBar.setStyles({height:b-c-a})}},setHandleHeight:function(){var a=(100-((this.overHang*100)/this.paddingEl.getSize().y));this.handleHeight=((a*this.parentEl.getSize().y)/100)-(this.scrollHandleTop.getSize().y+this.scrollHandleBottom.getSize().y);if((this.handleHeight+this.scrollHandleTop.getSize().y+this.scrollHandleBottom.getSize().y)>=this.scrollBar.getSize().y){this.handleHeight-=(this.scrollHandleTop.getSize().y+this.scrollHandleBottom.getSize().y)*2}if(this.scrollHandle.getStyle("min-height")&&this.handleHeight<parseFloat(this.scrollHandle.getStyle("min-height"))){this.handleHeight=parseFloat(this.scrollHandle.getStyle("min-height"))+this.scrollHandleBottom.getSize().y+this.scrollHandleTop.getSize().y}this.scrollHandle.setStyles({height:this.handleHeight})},greyOut:function(){this.scrollHandle.setStyles({display:"none"});this.upBtn.setStyles({opacity:this.options.disabledOpacity});this.scrollControlsYWrapper.setStyles({opacity:this.options.disabledOpacity});this.downBtn.setStyles({opacity:this.options.disabledOpacity});this.scrollBar.setStyles({opacity:this.options.disabledOpacity});this.coverUp.setStyles({display:"block",position:"absolute",background:"white",opacity:0.01,right:"0",top:"0",width:"100%",height:this.scrollControlsYWrapper.getSize().y})},unGrey:function(){this.scrollHandle.setStyles({display:"block",height:"auto"});this.scrollControlsYWrapper.setStyles({opacity:1});this.upBtn.setStyles({opacity:1});this.downBtn.setStyles({opacity:1});this.scrollBar.setStyles({opacity:1});this.coverUp.setStyles({display:"none",width:0,height:0});this.setHandleHeight()},loadContent:function(a){this.slider.set(0);this.paddingEl.empty().set("html",a);this.refresh()},refresh:function(){var a=Math.round(((100*this.step)/this.overHang));if(this.options.fullWindowMode){var b=$(window).getSize();this.parentEl.setStyles({width:"100%",height:"100%"})}this.fixIE6CSSbugs();this.overHang=this.paddingEl.getSize().y-this.parentEl.getSize().y;this.setHandleHeight();if(this.overHang<=0){this.greyOut();return}else{this.unGrey()}this.scrollHandle.removeEvents();var c=Math.round((a*this.overHang)/100);this.initSlider();this.slider.set(c);if(Browser.Engine.trident4){this.scrollHandleBG.setStyle("height","0").setStyle("height","100%")}if(this.options.smoothMooScroll.toAnchor||this.options.smoothMooScroll.toMooScrollArea){this.smoothMooScroll=new SmoothMooScroll({toAnchor:this.options.smoothMooScroll.toAnchor,toMooScrollArea:this.options.smoothMooScroll.toMooScrollArea},this.contentEl,this.windowFxScroll)}},setSlider:function(a){if(a=="top"){this.slider.set(0)}else{if(a=="bottom"){this.slider.set("100%")}else{this.slider.set(a)}}}});var SmoothMooScroll=new Class({Extends:Fx.Scroll,initialize:function(b,c,d){this.setOptions(b);this.windowFxScroll=d;this.context=c;c=c||document;this.context=c;var f=c.getDocument(),e=c.getWindow();this.parent(c,b);this.links=(this.options.links)?$$(this.options.links):$$(f.links);var a=e.location.href.match(/^[^#]*/)[0]+"#";this.links.each(function(h){if(h.href.indexOf(a)!=0){return}var g=h.href.substr(a.length);if(g&&$(g)&&$(g).getParents().contains($(this.context))){this.useLink(h,g,true)}else{if(g&&$(g)&&!this.inMooScrollArea($(g))){this.useLink(h,g,false)}}},this);if(!Browser.Engine.webkit419){this.addEvent("complete",function(){e.location.hash=this.anchor},true)}},inMooScrollArea:function(a){return a.getParents().filter(function(c,b){return c.match("[rel=MooScrollArea]")}).length>0},putAnchorInAddressBar:function(a){window.location.href="#"+a},useLink:function(b,a,c){b.removeEvents("click");b.addEvent("click",function(d){if(!a||!$(a)){return}this.anchor=a;if(c){if(this.options.toMooScrollArea&&this.options.toAnchor){this.windowFxScroll.toElement(this.context.getParent()).chain(function(f,e){this.toElement(a).chain(function(){this.putAnchorInAddressBar(a)}.bind(this))}.bind(this))}else{if(this.options.toMooScrollArea){this.windowFxScroll.toElement(this.context.getParent()).chain(function(){this.putAnchorInAddressBar(a)}.bind(this))}else{if(this.options.toAnchor){this.toElement(a).chain(function(){this.putAnchorInAddressBar(a)}.bind(this))}}}}else{this.windowFxScroll.toElement(a).chain(function(){this.putAnchorInAddressBar(a)}.bind(this))}d.stop()}.bind(this))}});

/**select*/
var RegalosMenu= new Class({
	Implements:Options,
	contenedor:"",
	menus:"",
	cabeceras:"",
	options:{	
		efecto:"fade",
		ancho:180,
		alto:0,
		borde:"1px solid black ",
		classNormal:"",
		classHover:"",
		contenedor:"",
		duracion:500
	},
	initialize:function(contenedor,options){
		this.setOptions(options);
		this.contenedor=$(contenedor);
		this.cabeceras=this.contenedor.getElements('div');
		var Principal=this.cabeceras.getParent();
		this.cabeceras
		.each(function(e,k){
			var pos=e.getCoordinates();
			
			this.menus=e.getElements('ul');
			
			this.menus.each(function(el,index){
					var mPrincipal=new Element("div",{
						styles:{
							position :"relative",
							width:this.options.ancho,
							left:4,
							//top:pos.height,
							top:0,
							zIndex:500
						}
					});
					if(Browser.Engine.version==5 || Browser.Engine.version==4){ //maldito explorer
						mPrincipal.setStyle("top","-4px");
					}
				mPrincipal.wraps(el);
				e.grab(mPrincipal);
				mPrincipal.set("tween",{duration:this.options.duracion})
				e.addEvents({
					"mouseenter":function(e){
						e.preventDefault();
						Principal.setStyle("z-Index",50);
						mPrincipal.getElement('ul').setStyle("visibility","visible");
						//mPrincipal.tween("top",[-mPrincipal.getElement('ul').getStyle("height").toInt()],0);
						mPrincipal.show();
						//alert(mPrincipal.getElement('ul').getStyle("height"));
					},
					"mouseleave":function(){
						mPrincipal.hide();
						//mPrincipal.tween("top",[mPrincipal.getElement('ul').getStyle("height").toInt(),0]);
						Principal.setStyle("z-Index",500);
					}
				});
				
				
			}.bind(this));
			
			
			
		}.bind(this));
		
		
	}

});


var MenuEtnico= new Class({
	Implements: Options,				   
	options:{
		principal:"",
		ancho:300,
		alto:250,
		links:{},
		estiloMenu:"",
		//fondo:"#7c4d25",
		fondo:"",
		evento:"over",
		imagenFondo:"",
		transicion:"linear",
		duracion:500,
		html:"",
		separacion:5
	},
	Menu:"",
	initialize:function(options){
		this.setOptions(options);
		var mimenu= new Element('div',{
			id:'mi___menuu____'+this.options.principal,
			styles:{
				backgroundColor:this.options.fondo,
				border:'0px solid black',
				padding:this.options.separacion,
				position:'absolute',
				zIndex:900,
				height:0,
				width:0,
				display:'none',
				top:0,
				left:0		
			}
		});
		
		//$(this.options.principal).setStyles({"cursor":"pointer","top":"5px","left":"-200px","position":"absolute"}); //para dulce
		//$(this.options.principal).setStyles({"cursor":"pointer","width":"70%","text-align":"center"}); //para dulce
		//$(this.options.principal).setStyle("overflow","hidden");
		$(this.options.principal).setStyles({"cursor":"pointer"});
		alto_item=((this.options.alto-10).toInt()/this.options.links.length).toInt();
		var coor=$(this.options.principal).getCoordinates();
		mimenu.setStyles({
			//'top':'0px', //solo para etnico
			'top':75,
			//'left':-(this.options.ancho - $(this.options.principal).getStyle("width").toInt()), //para dulce
			'left':720,
			'height': this.options.alto +'px', 
			'width': (this.options.ancho-6)+'px'
		});
		$(this.options.principal).getParent().setStyle("zIndex",1000);
		//$(this.options.principal).grab(mimenu)
		$$('body').grab(mimenu);
		this.Menu=mimenu;
	
		if(this.options.imagenFondo!=""){
			this.Menu.setStyles({
				backgroundColor:"",
				backgroundImage : 'url('+this.options.imagenFondo+')',
				backgroundRepeat:"no-repeat"
			});
		}
		if(this.options.evento=="over"){
			$(this.options.principal).addEvents({
				"mouseenter":function(){
					this.mostrar();
					
				}.bind(this),
				"mouseleave":function(){
					this.ocultar()
				}.bind(this)
					
			});
			}else if (this.options.evento=="click"){
				$(this.options.principal).addEvents({
						"click":function(e){
							this.mostrar();	
							e.stopPropagation();
						}.bind(this)
				});
				$$(document.body)
					.addEvent("click",function(){
						this.ocultar();
					}.bind(this));
			}
		
	},
	mostrar:function(){
		if(this.options.html==""){
			var mlinks=this.options.links;
							for(var men in mlinks){
								var sp= new Element("a",{
									'class' : this.options.estiloMenu,
									html:men +"<br>",
									href:mlinks[men],
									styles:{
										display:"block"
									}
								});
								
								this.Menu.grab(sp);
							}
		}else{
			this.Menu.set("html",this.options.html);
		}
		tam=$(this.options.principal).getStyle("width");
		$(this.options.principal).setStyles({"overflow":"visible","width":tam});
		this.Menu.tween("opacity",[0,1]);
	},
	ocultar:function(){
		if(this.Menu.isVisible()){
			this.Menu.hide();
			this.Menu.fade("in");
			this.Menu.fade("out");
			this.Menu.set("html","");
		}
	}
});



var MenuLogin = new Class({
	Extends: MenuEtnico,
	initialize:function(options){
		this.parent(options);
		this.Menu.setStyles({
			"width":this.options.ancho,
			"height":this.options.alto,
			"zIndex":"5000",
			"cursor":"default"
		});
		this.Menu.getParent().setStyle("zIndex",1000);
		this.Menu.set("html",this.options.html);
	},
	mostrar:function(){
		forms=this.Menu.getElements("form");
		forms.each(function(e){ e.reset();});
		$$('.errorLogin').set("html","");
		if($(this.options.principal).hasClass("seleccionado")){
			$(this.options.principal).removeClass("seleccionado");
			this.ocultar();
			return false;
		}else{
			$(this.options.principal).addClass("seleccionado")
			this.Menu.setStyles({"zIndex":1000})
			.set("morph",{
				transition:this.options.transicion,
				duration:this.options.duracion * 1000,
				onComplete:function(){
					
				}.bind(this)
			})	
			.morph({
					//"display":"block"
					//height: [0,this.options.alto]				
			}).show();
			
			this.Menu.addEvent("click",function(e){ e.stopPropagation();} );
			return false;
		}
	},
	ocultar:function(){
		if(this.Menu.getStyle("display")=="block"){
			$(this.options.principal).removeClass("seleccionado");
				this.Menu
				.set("morph",{
					onComplete:function(){
						
					}.bind(this)
				})
				.morph({
					//height: [this.options.alto,0] ,
					//opacity:0
					//"display":"none"
				}).hide();
			//this.Menu.set("html","");
		
		}	
		
		
	}
});



/****/		
new Asset.css('css/formcheck.css');
new Asset.css("css/mooScroll.css");
var carrito_estilos= new Asset.css('css/estilos_carrito.css');
var ventanas_= new Asset.css('css/mooventana.css');
var regalos = new Regalos();
var carrito= new Carrito();





