var Signin = Class.create ({

	initialize: function() {
		this.suggetedUsername = false;
		this.imageLoading = "/images/loadingSmall.gif";
		this.imageWarning = "/images/alerta.png";
		this.imageOk = "/images/ok.png";
		this.imageError = "/images/error.png";

		this.previousEmail = "";
		this.previousUsername = "";
		this.previousCaptcha = "";
		this.previousDni = "";
		this.emailOk = false;
		this.remailOk = false;
		this.usernameOk = false;
		this.passwordOk = false;
		this.sexOk = false;
		this.dateOk = false;
		this.captchaOk = false;
		this.dniOk = false;
		this.paisOk = false;
		
		this.firstLoad = true;	
		
		this.invalidateValidation = false;
 
		this.urlValidateCaptcha = "/ajax/suscriber/ajaxValidateCaptcha";
		this.urlValidateEmail = "/ajax/suscriber/ajaxValidateEmail";
		this.urlValidateUsername = "/ajax/suscriber/ajaxValidateUsername";
		this.urlValidateDni = "/ajax/suscriber/ajaxValidateDni";
	},
	
	invalidate: function(){
		this.invalidateValidation = true;		
	},
	
	revalidate: function(){
		this.invalidateValidation = false;
	},
		
	sign: function() {
		Modalbox.hide({
			afterHide: function() {
				var email = $('email');
				if (email) {
					email.focus();
				}
			}
		});
	},
	
	validateEdit: function(){
		var msgContrasena = document.getElementById('msgContrasena');
		
		this.validateUsername();
		if (!this.usernameOk) {
			msgContrasena.innerHTML = __("El nombre de usuario (apodo) no es válido o ya esta siendo utilizado");
			return false;
		}

		this.validateDate();
		if (!this.dateOk){
			msgContrasena.innerHTML = __("La fecha de nacimiento no es válida, rellena todos los campos");
			return false;
		}

		this.validateSex();
		if (!this.sexOk){
			msgContrasena.innerHTML = __("El sexo no es válido");
			return false;
		}		

		if ($('msgPais')){
			this.validatePais();
			if (!this.paisOk){
				msgContrasena.innerHTML = __("Por favor, elije un país.");
				return false;			
			}
		}

		this.validateDni();
		if(!this.dniOk){
			msgContrasena.innerHTML = __("Este Documento de indentificación ya pertenece a otro usuario");
			return false;
		}

		if(this.dniOk){

			document.forms['form_suscriber'].submit();	
			return true;
		}
		else{
			return false;
		}
	},
		
	validateSignIn: function(validaEmail) {
		var msgContrasena = document.getElementById('msgContrasena');		
	
		if (validaEmail){			
			
			this.validateEmail();
			if (!this.emailOk) {			
				msgContrasena.innerHTML = __("El correo electrónico no es válido o ya ha sido registrado");
				return false;
			}
			
			this.validateRemail();
			if (!this.remailOk){
				msgContrasena.innerHTML = __("Los correos electrónicos no coinciden.");
				return false;
			}
					
			this.validateSex();
			if (!this.sexOk){
				msgContrasena.innerHTML = __("El sexo no es válido");
				return false;
			}
			
			this.validateDate();
			if (!this.dateOk){
				msgContrasena.innerHTML = __("La fecha de nacimiento no es válida, rellena todos los campos");
				return false;
			}
			
			this.validateCaptcha();
			if(!this.captchaOk){
				msgContrasena.innerHTML = __("El código captcha no es válido");
				return false;
			}
		}
		
		this.validateUsername();
		if (!this.usernameOk) {
			msgContrasena.innerHTML = __("El nombre de usuario (apodo) no es válido o ya esta siendo utilizado");
			return false;
		}
		
				
		if (!this.passwordOk){
			msgContrasena.innerHTML = __("La contraseña debe tener por lo menos de 8 caracteres y no debe contener") + "-.^*{}!\"·$%&/()=";
			return false;			
		}
		
		if ($('msgPais')){
			this.validatePais();
			if (!this.paisOk){
				msgContrasena.innerHTML = __("Por favor, elije un país.");
				return false;			
			}
		}
		
		if(!$('suscriber_conditions').checked){
			msgContrasena.innerHTML = __("Debes leer y aceptar las condiciones para el registro.");
			return false;
		}
		
		if($('suscriber_dni')){
			if($('suscriber_dni').value.length == 0){
				msgContrasena.innerHTML = __("El campo Documento de Identificaci&oacute;n es obligatorio.");
				return false;
			}
			
			this.validateDni();
			if(!this.dniOk){
				msgContrasena.innerHTML = __("Este Documento de indentificación ya pertenece a otro usuario");
				return false;
			}			
		}
		
			
		
		var validation = new Validation('form_register', {stopOnFirst:true, onSubmit: false, useTitles: true});
		
		var result = validation.validate();
		if (!result) {	
			return false;
		} else {
			document.forms['form_register'].submit();			
			return true;
		}
	},	

	validateRemail: function(){
		if(!this.invalidateValidation){
			var email = $('suscriber_mail');
			var msgRemail = document.getElementById('msgRemail');
			var msgContrasena = document.getElementById('msgContrasena');
			msgContrasena.innerHTML = "";
			
			if (this.emailOk){
				var statusRemail = $('img_statusRemail');
				$('validationRemail').style.visibility = 'visible';
				
				var remail = $('remail');
				if (remail.value.blank() && !email.value.blank()){
					msgRemail.innerHTML = __("Debe repetir el correo electrónico.");
					statusRemail.src = this.imageError;
					return;
				}
				else{
					msgRemail.innerHTML = "";
					if(remail.value.toLowerCase() != email.value.toLowerCase()){
						msgRemail.innerHTML = __("Los correos electrónicos no coinciden.");
						statusRemail.src = this.imageError;	
						return;
					}
					else{
						statusRemail.src = this.imageOk;
						this.remailOk = true;
					}
				}
			}
		}
	},
		
	validateEmail: function() {
		if (!this.invalidateValidation){
			var msgEmail = document.getElementById('msgEmail');
			var msgContrasena = document.getElementById('msgContrasena');
			msgContrasena.innerHTML = "";
	
			var email = $('suscriber_mail');
			if (email.value.blank()){
				msgEmail.innerHTML = __("Debe introducir un correo electrónico.");
				return;
			}
			
			//validation because IE dont fire onchange the first time		
			if (email.value == this.previousEmail) return;
			this.emailOk = false;
			this.previousEmail = email.value; 
	
			//set image visible
			$('validationEmail').style.visibility = 'visible'; 
			
			var statusEmail = $('img_statusEmail');
			
			var validEmail = Validation.get('validate-email').test(email.value);
			if (!validEmail) {
				statusEmail.src = this.imageWarning;
				msgEmail.innerHTML = __("Email inválido.");
				return;
			}
	
			statusEmail.src = this.imageLoading;
			
			var current = this;
			var url = this.urlValidateEmail + "/mail/" + email.value;
			var ajax = new Ajax.Request(url, {
				asynchronous: false,
				method: 'get',
			  	onSuccess: function(transport) {
					var emails = transport.responseXML.getElementsByTagName('email');
					var numEmails =emails.length;
					
					if(numEmails == 0){
						current.emailOk = true;
						statusEmail.src = current.imageOk;
						msgEmail.innerHTML = "";
						
						//suggest username
						/*if (current.suggetedUsername) return; 
						var username = $('suscriber_codigo');
						if (username.value.blank()) {
							username.value = email.value.substring(0, email.value.indexOf("@"));
							this.suggetedUsername = true;
							this.validateUsername();
						}*/
					}
					else{
						msgEmail.innerHTML = __("Este correo electrónico ya ha sido registrado, elije otro.");					
						statusEmail.src = current.imageWarning;	
					}
				}		  	
			});
		}
	},
	
	validateDni: function() {
		if (!this.invalidateValidation){
			var msgDni = document.getElementById('msgDni');
			var msgContrasena = document.getElementById('msgContrasena');
			msgContrasena.innerHTML = "";	
			var dni = $('suscriber_dni');		
			//set image visible
			$('validationDni').style.visibility = 'visible'; 			
			var statusDni = $('img_statusDni');	
			statusDni.src = this.imageLoading;
			
			var current = this;			
			var lastDni = $('lastDni'); 
			
			if ( $('lastDni') ){
				var lastDni = $('lastDni');
			}else{
				var lastDni = "";
			}
			
			if(dni != null) {
				if (lastDni.value.toLowerCase() == dni.value.toLowerCase()){
					this.dniOk = true;
					statusDni.src = this.imageOk;
					msgDni.innerHTML = __("Este era el Documento que estaba guardado.");
					msgDni.style.color = '#2e6788';
				}
				else{			
					if (dni.value.length == 0){
						var url = this.urlValidateDni + "/dni/emptystring";
					}
					else{
						var url = this.urlValidateDni + "/dni/" + dni.value.toLowerCase();
					}
					var isValid="";
					
					var ajax = new Ajax.Request(url, {
						asynchronous: false,
						method: 'get',
					  	onSuccess: function(transport) {
							var text = transport.responseText;
					  		var temp = transport.responseXML;
					  		isValid = temp.getElementsByTagName('valid')[0].firstChild.nodeValue;
				  			
							if(isValid == 1){
								current.dniOk = true;
								statusDni.src = current.imageOk;
								msgDni.innerHTML = "";
								msgDni.style.color = '#FF0000';
							}
							else{
								current.dniOk = false;
								msgDni.innerHTML = __("Este Documento de Indentificación ya pertenece a otro usuario, revisalo.");
								msgDni.style.color = '#FF0000';
								statusDni.src = current.imageWarning;	
							}
						}		  	
					});
				}
			} else {
				this.dniOk = true;
			}
		}
	},
	
	validateClau: function() {
		if(!this.invalidateValidation){
			var msgClau = document.getElementById('msgClau');
			var msgContrasena = document.getElementById('msgContrasena');
			msgContrasena.innerHTML = "";
			
			var password = $('suscriber_clau');
			
			if (password.value.blank()){
				msgClau.innerHTML = __("Debe introducir la contraseña.");
				return;
			}
			
			// set image visible
			$('validationPassword').style.visibility = 'visible';
			var statusPassword = $('img_statusPassword');
	
			var validPassword = Validation.get('validate-alphanum').test(password.value);
			if (!validPassword) {
				msgClau.innerHTML = __("La contraseña no permite caracteres:") + "!?_\"#·$%&/()=¿¡!.";
				statusPassword.src = this.imageWarning;
				return;
			}		
					
			statusPassword.src = this.imageLoading;
			
			if (password.value.length > 7){
				this.passwordOk = true;
				statusPassword.src = this.imageOk;
				msgClau.innerHTML = "";
			}
			else{
				msgClau.innerHTML = __("La contraseña debe tener al menos 8 caracteres.");
				statusPassword.src = this.imageWarning;
				this.passwordOk = false;
				return;			
			}
		}
		
	},
	
	validatePais: function(){
		var msgPais = document.getElementById('msgPais');
		var msgContrasena = document.getElementById('msgContrasena');
		msgContrasena.innerHTML = "";
		
		var pais = $('suscriber_pais_id');
		
		if (pais.value.blank()){
			this.paisOk = false;
			msgPais.innerHTML = __("Por favor, elije el país donde resides.");
		}
		else{
			this.paisOk = true;
			msgPais.innerHTML = "";
		}		
	},
	
	validateSex: function(){
		var msgSex = document.getElementById('msgSex');
		var msgContrasena = document.getElementById('msgContrasena');
		msgContrasena.innerHTML = "";
		
		var sex = $('suscriber_sexo');
		
		if (sex.value == "H" || sex.value == "M"){			
			this.sexOk = true;
			msgSex.innerHTML = "";
		}
		else{			
			this.sexOk = false;
			msgSex.innerHTML = __("Por favor, elije tu sexo.");
		}
	},
	
	validateDate: function(){
		var msgDate = document.getElementById('msgDate');
		var msgContrasena = document.getElementById('msgContrasena');
		msgContrasena.innerHTML = "";
		
		var day = $('suscriber_data_nacimiento_day');
		var month = $('suscriber_data_nacimiento_month');
		var year = $('suscriber_data_nacimiento_year');
		
		if (day.value.blank() || month.value.blank() || year.value.blank()){
			this.dateOk = false;
			msgDate.innerHTML = __("Por favor, elije la fecha completa.");
		}
		else{
			this.dateOk = true;
			msgDate.innerHTML = "";
		}		
	},
	
	validatePassword: function() {
		var msgContrasena = document.getElementById('msgContrasena');
		msgContrasena.innerHTML = "";
		
		var statusPassword = $('statusPassword');
		var password = $('password');
		var password2 = $('password2'); 

		$('validationPassword').style.visibility = 'visible';
		
		if (password.value.blank() || password2.value.blank()) {
			msgContrasena.innerHTML = __("Debe introducir la contraseña y la confirmación de la contraseña");
			statusPassword.src = this.imageWarning;
			return;
		}

		if(password.value != password2.value) {
			msgContrasena.innerHTML = __("La contraseña no coincide");
			statusPassword.src = this.imageWarning;
		} else {
			statusPassword.src = this.imageOk;
		}
	},
	
	validateUsername: function() {
		if(!this.invalidateValidation){
			
			var msgUsername = document.getElementById('msgUsername');
			var msgContrasena = document.getElementById('msgContrasena');
			msgContrasena.innerHTML = "";
			
			var username = $('suscriber_codigo');
			if (username.value.blank()){
				msgUsername.innerHTML = __("Debe introducir un nombre de usuario.");
				return;
			}
			
			$('validationUsername').style.visibility = 'visible';
			var statusUsername = $('img_statusUsername');
		
			var validUsername = Validation.get('validate-alphanum').test(username.value);
			if (!validUsername) {
				msgUsername.innerHTML = __("El username no permite caracteres:") + "!?_\"#·$%&/()=¿¡!.";				
				statusUsername.src = this.imageWarning;
				this.usernameOk = false;
				return;
			}
	
			if ( $('lastUsername') ){
				var lastUsername = $('lastUsername');
			}else{
				var lastUsername = "";
			}
			
			if (lastUsername.value == username.value){
				this.usernameOk = true;
				statusUsername.src = this.imageOk;
				msgUsername.innerHTML = __("Este es el apodo que ya tenias guardado.");
				msgUsername.style.color = '#2e6788';
			}
			else{
				//validation because IE dont fire onchange the first time		
				if (username.value == this.previousUsername) return;
				this.usernameOk = false;
				this.previousUsername = username.value; 
	
				statusUsername.src = this.imageLoading;
				var current = this;				
				var url = this.urlValidateUsername + "/username/" + username.value;
				var ajax = new Ajax.Request(url, {
					asynchronous: false,
					method: 'get',
				  	onSuccess: function(transport) {
				  		var usernames = transport.responseXML.getElementsByTagName('username');
				  		var numUsernames = usernames.length;
						if (numUsernames == 0) {
							current.usernameOk = true;
							statusUsername.src = current.imageOk;
							msgUsername.innerHTML = "";
						} 
						else {					
							statusUsername.src = current.imageWarning;
							msgUsername.innerHTML = __("Ya existe un usuario con ese nombre, por favor elija otro.");
							msgUsername.style.color = '#FF0000';
						}
				  	}
				});
			}
		}
	},
	
	validateCaptcha: function() {
					
		var msgCaptcha = document.getElementById('msgCaptcha');
		var msgContrasena = document.getElementById('msgContrasena');
		
		if (msgContrasena!= null)
			msgContrasena.innerHTML = "";
		
		var captcha = $('captcha');
		if (captcha.value.blank()){
			if (!this.firstLoad)
				msgCaptcha.innerHTML = __("Debe ingresar el código que se ve en la imagen (captcha).");
			this.captchaOk = false;
			this.firstLoad = false;
			return;
		}
		

		//validation because IE dont fire onchange the first time		
		//if (captcha.value == this.previousCaptcha) { captcha.value = this.previousCaptcha;/*alert("caso raro"); return; */}
		this.captchaOk = false;
		this.previousCaptcha = captcha.value;

		$('validationCaptcha').style.visibility = 'visible';
		var statusCaptcha = $('img_statusCaptcha');		
		statusCaptcha.src = this.imageLoading;
		var current = this;		
		var captchaImgValue = "";
		
		var captchaValid = "";
		
//		var url = "/ajax/suscriber/ajaxValidateCaptcha/captcha/" + hex_md5(captcha.value);		
		var url = this.urlValidateCaptcha + '/captcha/' + hex_md5(captcha.value);
		var ajax = new Ajax.Request(url, {
			asynchronous: false,
			method: 'get',
		  	onSuccess: function(transport) {
			    var text = transport.responseText;
		  		var temp = transport.responseXML;
		  		captchaValid = temp.getElementsByTagName('valid')[0].firstChild.nodeValue;		  		

		  		if (captchaValid == 1) {					
					current.captchaOk = true;					
					statusCaptcha.src = current.imageOk;
					msgCaptcha.innerHTML = "";
				}
				else{
					statusCaptcha.src = current.imageWarning;
					msgCaptcha.innerHTML = __("Código incorrecto.");
				}
		  	}
		});
		
		this.firstLoad = false;
	}
	
	
}); //END SIGNIN

var AbuseReport = Class.create ({
	
	validate: function() {
		var motivo = $('motivo');
		var descripcion = $('descripcion');
		
		
			
		if (motivo.value.blank()) {
			$("msgContrasena").innerHTML = __("El campo %1 no puede ser vacío", [__("motivo")]);
			return;
		}
		
		if (descripcion.value.blank()) {
			$("msgContrasena").innerHTML = __("El campo %1 no puede ser vacío", [__("descripción")]);
			return;
		}
		
		Modalbox.show('/set/abuseReport/?v=true',__('Informar de abuso'),document.forms['datosinscripcion'].elements);
		return true;

	}	
});