var SC = {

	init: function(){
		this.sendForm = true;
		this.dom = {suscr:{},overlay:$('detalle')};

		//suscr DOM
		this.dom.suscr = {form:$('suscrForm'),inputs:{}};
		this.dom.suscr.form.getElements('input,select').each(function(el){
			if(el.getTag()=='select' || ['text','password','submit'].contains(el.type)){
				this.dom.suscr.inputs[el.name] = el;
			}else{
				if(!this.dom.suscr.inputs[el.name]){
					this.dom.suscr.inputs[el.name] = [];
				}
				this.dom.suscr.inputs[el.name].push(el);
			}
		},this);
		this.dom.suscr.inputs.email.addEvent('blur',this.checkMail.bind(this));
		this.dom.suscr.inputs.dni.addEvent('blur',this.checkDni.bind(this));
		this.dom.suscr.form.addEvent('submit',function(e){
			var ev = new Event(e); 
			ev.stop();
			if(ev.code == '13' || ev.key=='enter'){
		    	ev.code = null;
				return false;
			}else{
				if(this.sendForm){
					this.send();
				}
				this.sendForm = true;	
			}
			
			
		}.bind(this));
		
		
		
		
		$("email").addEvent('keyup', function(event) {  
			this.sendForm = false;
			var ev = new Event(event); 
		    if(ev.code == '13'){
		    	event.target.highlight('#eaea16');
				this.checkMail();
				
				
			}
			ev.stop();
		}.bind(this)
		); 

		//$each(this.dom.suscr.form.getElements('input,select'),function(el){el.addEvent('keypress',function(e){var ev=new Event(e);if(ev.key =='enter'){alert(e.name);}}.bind(this))},this);

		//slides
		var slides = this.dom.overlay.getElements('.slides');
		this.slides = {
			novedades: new Fx.Slide(slides[0].removeClass('hidden')).hide(),
			factura:  new Fx.Slide(slides[1].removeClass('hidden')).hide()
		};
		['novedades','factura'].each(function(group){
			this.dom.suscr.inputs[group][0].addEvent('click',this.slide.bind(this,[group,false]));
			this.dom.suscr.inputs[group][1].addEvent('click',this.slide.bind(this,[group,true]));
		},this);

		$('b_enviar').addEvent('click',this.Login.bind(this));

		
		//validation
		this.validator = new iValidator(this.dom.suscr.form.getElements('input[class],select'));

		//request
		this.request = new Request({url:base+'usuario.ajax', onFailure:onError, onSuccess:this.onRequest.bind(this)});

		//login data
		this.loginData = {email:'',clave:''};

		this.logged = false;
		this.last_email = '';

		if(boletin){
			this.dom.suscr.inputs.curso.addClass('norequired');
		}
		if(loginData){
			this.onLogin(loginData);
		}
		$('div_olvido_contra').addEvent('click',this.SendPassword.bind(this));
	},
	
	Login: function(){
		if(this.checkData()){
			loading.show(this.dom.overlay);
			this.request.action ='Login';
			this.request.send({data:'action='+this.request.action+'&email='+this.dom.suscr.inputs.email.value+'&clave='+this.dom.suscr.inputs.clave.value});
			this.sendForm = false;
		}
		
	},
	
	checkData: function(){
		
		var email = this.dom.suscr.inputs.email.value = this.dom.suscr.inputs.email.value.trim();

		if(!email.isMail() || !this.dom.suscr.inputs.clave.value.isPassword()){
			alert('Debe de ingresar un mail valido y la contraseña');
			loading.remove();
			return false;
		}
		return true;
	},
	
	
	SendPassword: function(){
		var email = this.dom.suscr.inputs.email.value = this.dom.suscr.inputs.email.value.trim();
		
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)){
			loading.show(this.dom.overlay);
			this.request.action ='Restore';
			this.request.send({data:'action='+this.request.action+'&email='+this.dom.suscr.inputs.email.value});
		}else{
			alert("Debe de ingresar un mail correcto");
		}
		
	},
	
	onRestore: function(response){
		var email = this.dom.suscr.inputs.email.value;
		if(['true','false'].contains(response)){
			if(response=='true'){
				alert('Se envio el mail al correo '+email);
				this.dom.suscr.inputs.clave.set('value','').focus();
			}else{
				alert('No se envio el mail al correo '+email);
				this.dom.suscr.inputs.clave.set('value','');
			}
			loading.remove();
		}else{
			alert(response);
		}
	},

	slide: function(group,open){
		if(open){
			this.slides[group].slideOut();
		}else{
			this.slides[group].slideIn();
		}
		//
		if(group=='factura'){
			['razonsocial','ruc','direccionruc','distrito'].each(function(el){
				if(open){
					this.dom.suscr.inputs[el].addClass('norequired');
				}else{
					this.dom.suscr.inputs[el].removeClass('norequired');
				}
			},this);
			if(open){
				['razonsocial','ruc','direccionruc','distrito','contacto'].each(function(el){
					this.dom.suscr.inputs[el].value = '';
				},this);
			}
		}
	},

	onRequest: function(){
		alertInfo();
		if(this.request.action=='SUSCRIBE'){
			this.onComplete(this.request.response.text);
		}else if(this.request.action=='CheckMail'){
			this.onCheckMail(this.request.response.text);
		}else if(this.request.action=='CheckDni'){
			this.onCheckDni(this.request.response.text);
		}else if(this.request.action=='Restore'){
			this.onRestore(this.request.response.text);
		}else if(this.request.action=='Login'){
			var info = JSON.decode(this.request.response.text);
			this.onLogin(info.data,info.status);
		}else{
			alert(this.request.response.text);
		}
	},

	onLogin: function(response,status){
		alertInfo();
		var data = false;
		if(response=='false'){
			alertInfo('Identificación incorrecta.','error');
		}else if($type(response)=='object'){
			data = response;
		}else{
			try{
				data = JSON.decode(response);
			}catch(e){
				alert('Ha surgido un error:');
				alert(response);
			}
		}
		
		if(status == "ERROR"){ 
			alert('ingrese el usuario y la contraseña correctamente.');
			loading.remove();
			return false;
		}
		
		if(status == "ERROR_CLAVE"){ 
			alert('ingrese el usuario y la contraseña correctamente.');
			loading.remove();
			return false;
		}
		
		if(data){
			
			if(data.status && data.status=='BOLETIN'){
				//window.location.reload(false);
			}
			
			
			
			
			$('div_contrasena').removeClass('hidden');
			$('div_nombre').removeClass('hidden');
			$('div_apellidop').removeClass('hidden');
			$('div_apellidom').removeClass('hidden');
			$('div_dni').removeClass('hidden');
			$('div_telefono').removeClass('hidden');
			$('div_direccion').removeClass('hidden');
			$('div_departamento').removeClass('hidden');
			$('div_elearning').removeClass('hidden');
			$('div_novedades').removeClass('hidden');
			$('div_programas').removeClass('hidden');
			$('h3_pago').removeClass('hidden');
			$('div_pago').removeClass('hidden');
			$('div_enviar').removeClass('hidden');

			$('div_enviar_olvido').addClass('hidden');
			
			this.logged = true;

			//login data
			this.loginData = {email:data.email,clave:data.clave};

			this.forceLogin(false);

			//fill suscr inputs
			['email','nombre','apellidop','apellidom','clave','dni','telefono','direccion','departamento'].each(function(el){
				this.dom.suscr.inputs[el].value = data[el];
			},this);

			['elearning','novedades',(boletin?false:'factura')].each(function(l){
				if(l){
					this.dom.suscr.inputs[l][0].checked = data[l];
					this.dom.suscr.inputs[l][1].checked = !data[l];
				}
			},this);

			if(data.novedades){
				this.dom.suscr.inputs.programas.each(function(el){
					el.checked = data.programas.contains(el.value);
				});
			}
			if(boletin || data.novedades){
				this.slide('novedades',false);
			}else{
				this.slide('novedades',true);
			}

			if(!boletin){
				if(data.factura){
					['razonsocial','ruc','direccionruc','distrito','contacto'].each(function(el){
						this.dom.suscr.inputs[el].value = data[el];
					},this);
					this.slide('factura',false);
				}else{
					this.slide('factura',true);
				}
			}

			//clave no required
			this.dom.suscr.inputs.clave.addClass('norequired').getParent().getPrevious().set('html','Contraseña');

			if(boletin){
				this.dom.suscr.inputs.novedades[1].checked = false;
				this.dom.suscr.inputs.novedades[1].disabled = true;
				this.dom.suscr.inputs.novedades[0].checked = true;
				this.dom.suscr.inputs.enviar.focus();
			}else{
				this.dom.suscr.inputs.curso.focus();
			}

			this.validator.test();

			$('textsearch').set('value',data.email).readOnly = true;

			loading.remove();
			
			
		}
	},

	send: function(){
		alertInfo();
		var checkForm = this.validator.test();
		if(!checkForm){
			this.validator.showInvalid(true,{x:-270,y:-24},true);
		}else{
			var programas = 1;
			if(this.dom.suscr.inputs.novedades[0].checked){
				programas = 0;
				this.dom.suscr.inputs.programas.each(function(el){
					if(el.checked){
						programas++;
					}
				},this);
			}
			if(programas==0){
				alertInfo('Debe seleccionar uno o más programas de interés.','error');
			}else{
				loading.show(this.dom.overlay);
				this.request.action = 'SUSCRIBE';
				this.request.send({data:'action='+this.request.action+this.getPostData()});
			}
		}
	},

	onComplete: function(response){
		if(response=='false'){
			alert('ERROR!\nNo se pudo procesar la información.\nPor favor, contacte con el administrador.');
		}else if(response=='true'){
			if(boletin){
				alertInfo('Actualizado correctamente.','success');
				this.loginData = {email:this.dom.suscr.inputs.email.value,clave:this.dom.suscr.inputs.clave.value};
				loading.remove();
			}else{
				this.dom.suscr.form.disabled = true;
				$each(this.dom.suscr.inputs,function(el){
					if($type(el)=='array'){
						el.each(function(it){
							it.disabled=true;
						});
					}else{
						el.disabled=true;
					}
				});
				window.location.href = base+gracias;
			}
			return;
		}else{
			alert('Ha surgido un error:');
			alert(response);
		}
	},

	getPostData: function(){
		var data = '';

		if(this.logged && this.dom.suscr.inputs.clave.value.trim()==''){
			this.dom.suscr.inputs.clave.value = this.loginData.clave;
		}

		['curso','email','clave','nombre','apellidop','apellidom','dni','telefono','direccion','departamento','razonsocial','ruc','direccionruc','distrito','contacto'].each(function(el){
			data += '&'+el+'='+encodeURIComponent(this.dom.suscr.inputs[el].value.trim());
		},this);

		['elearning','novedades','factura'].each(function(el){
			data += '&'+el+'='+(this.dom.suscr.inputs[el][0].checked?'S':'N');
		},this);

		if(this.dom.suscr.inputs.novedades[0].checked){
			this.dom.suscr.inputs.programas.each(function(el){
				if(el.checked){
					data += '&programas[]='+el.value;
				}
			},this);
		}

		if(this.logged){
			data += '&login_email='+this.loginData.email+'&login_clave='+this.loginData.clave;
		}else{
			data += '&login_email='+this.dom.suscr.inputs.email.value+'&login_clave='+this.dom.suscr.inputs.clave.value;
		}

		return data;
	},
	
	checkDni: function(e){
		
				
		var dni = this.dom.suscr.inputs.dni.value = this.dom.suscr.inputs.dni.value.trim();
		if(dni.length == 8){
			this.last_dni = dni;
			loading.show(this.dom.overlay);
			this.request.action = 'CheckDni';
			this.request.send({data:'action='+this.request.action+'&dni='+dni});
		}
		
	},

	onCheckDni: function(response){
		if(this.logged){
			if(response=='true'){
				
			}else{
				alertInfo('Su DNI ya se encuentra registrado en nuestra base de datos, por favor contactese al tel&eacute;fono 619-3333 o al mail bursen@bvl.com.pe.','error');
				this.dom.suscr.inputs.dni.set('value','').focus();
			}
		}else{
			if(response=='true'){
				//alertInfo('Al parecer usted ya se encuentra registrado. Si es un usuario antiguo probablemente no tiene contraseña, para generar una favor use el link Â¿Olvido su contraseña?. En caso sea un usuario nuevo y no la recuerde use ese mismo link.','error');
				//alertInfo('Ud. ya se encuentra registrado, necesita autentificarse en el formulario superior para poder continuar, si ha olvidado su contraseña use el link "Ã‚Â¿Olvidó su contraseña?".','error');
				//this.forceLogin(true);
				$('div_contrasena').removeClass('hidden');
				this.dom.suscr.inputs.telefono.set('value','').focus();
				$('div_enviar_olvido').addClass('hidden');
				
				
			}else{
				
				alertInfo('Su DNI ya se encuentra registrado en nuestra base de datos, por favor contactese al tel&eacute;fono 619-3333 o al mail bursen@bvl.com.pe.','error');
				this.dom.suscr.inputs.dni.set('value','').focus();
				
				//$('dni').value='';
				
			}
		}
		loading.remove();
	},

	checkMail: function(e){
		
				
		var email = this.dom.suscr.inputs.email.value = this.dom.suscr.inputs.email.value.trim();
		if(email!=this.last_email && email.test(iRules.mail.regex) && (!this.logged || email!=this.loginData.email)){
			
			this.last_email = email;
			loading.show(this.dom.overlay);
			this.request.action = 'CheckMail';
			this.request.send({data:'action='+this.request.action+'&email='+email});
		}
		if(email==this.loginData.email){
			this.last_email = '';
			alertInfo();
		}
		
	},

	onCheckMail: function(response){
		if(this.logged){
			if(response=='true'){
				alertInfo('No puede usar el email: '+this.dom.suscr.inputs.email.value,'error');
				this.dom.suscr.inputs.email.set('value','').focus();
				this.last_email = '';
			}
		}else{
			if(response=='true'){
				alertInfo('Al parecer usted ya se encuentra registrado. Si es un usuario antiguo probablemente no tiene contraseña, para generar una favor use el link ¿Olvidó su contraseña?. En caso sea un usuario nuevo y no la recuerde use ese mismo link.','error');
				//alertInfo('Ud. ya se encuentra registrado, necesita autentificarse en el formulario superior para poder continuar, si ha olvidado su contraseña use el link "Ã‚Â¿Olvidó su contraseña?".','error');
				//this.forceLogin(true);
				$('div_contrasena').removeClass('hidden');
				$('clave').removeClass('password');
				$('clave').addClass('password_ya_reg');
				
				this.dom.suscr.inputs.clave.set('value','').focus();
				$('div_enviar_olvido').removeClass('hidden');
				
				
			}else{
				alertInfo('Es un nuevo usuario registre sus datos y recuerde su contraseña.','error');
				//Usuario nuevo no existe
				$('clave').addClass('password');
				$('clave').removeClass('password_ya_reg');
				
				$('div_contrasena').removeClass('hidden');
				$('div_nombre').removeClass('hidden');
				$('div_apellidop').removeClass('hidden');
				$('div_apellidom').removeClass('hidden');
				$('div_dni').removeClass('hidden');
				$('div_telefono').removeClass('hidden');
				$('div_direccion').removeClass('hidden');
				$('div_departamento').removeClass('hidden');
				$('div_elearning').removeClass('hidden');
				$('div_novedades').removeClass('hidden');
				$('div_programas').removeClass('hidden');
				$('div_pago').removeClass('hidden');
				$('div_enviar').removeClass('hidden');
				//this.dom.suscr.form.disabled = false;
				//this.dom.suscr.inputs.clave.focus();
				this.forceLogin(false);
			}
		}
		loading.remove();
	},

	forceLogin: function(mode){
		if(mode){
			Login.inputs.email.value = this.dom.suscr.inputs.email.value;
			Login.inputs.clave.value = '';
			this.dom.suscr.form.disabled = true;
			$each(this.dom.suscr.inputs,function(el,i){
				if($type(el)=='array'){
					el.each(function(it){
						it.disabled=true;
					});
				}else if(i!='email'){
					el.disabled=true;
				}
			});
			Login.inputs.clave.focus();
			window.scroll(0,124);
		}else{
			this.dom.suscr.form.disabled = false;
			$each(this.dom.suscr.inputs,function(el,i){
				if($type(el)=='array'){
					el.each(function(it){
						it.disabled=false;
					});
				}else{
					el.disabled=false;
				}
			});
			this.dom.suscr.inputs.clave.focus();
		}
	}
};



Login.onComplete = SC.onLogin.bind(SC);

window.addEvent('domready',SC.init.bind(SC));


