// JavaScript Document
var elementoserroneos = '';
var validaciones = '';
function validarformulario(form, lang){
	if($('mierror') != null){
		$('mierror').style.display = 'none';
	}
	if($('er') != null){
		$('er').style.display = 'none';
	}
	this.lang = lang;
	this.form = form;
	var error = true;
	var elementos = Array();
	for(var i = 0; i < form.length; ++i){
    	var elemento = form.elements[i];
		if(elemento.getAttribute('required') == 1){
			//alert(elemento.getAttribute('validar'));
			/*if(!validarelemento(elemento)){
				//alert(alemento.id);
				$(elemento.id).className = 'error';	
				return false;
			}else{
				$(elemento.id).className = '';
				return false;
			}*/
			var retorno = validarelemento(elemento);
			
			//if(elementoserroneos != ''){
				if(mensajeerror(lang) != ''){
					if($('error')){
						$('error').style.display = 'block';
						$('error').innerHTML = '';
						$('error').innerHTML = mensajeerror(lang);
					}
				}
			/*}else{
				$('error').style.display = 'none';	
			}*/
			if(retorno == false && error == true){
				//$('error').innerHTML = mensajeerror(lang);
				error = false;	
			}
		}
	}
	this.elementoserroneos = '';
	return error;	 
}

function validarelemento(elemento){
	var tipo = elemento.type;	
	var valor = elemento.value;
//	alert("-"+valor+"-");
	//var validaciones = elemento.getAttribute('validar').split(" ");
	//alert(validaciones.length);
	
	/*for(var i = 0; i < validaciones.length; ++i){
		//alert(validaciones[i]);
		cambiarclase(elemento, false);
	}
	return false;*/
	switch (tipo){
      	case "text":
		case "textarea":
		case "password":
		case "hidden":
			if(elemento.getAttribute('validar') == 'codigopostal' && (valor == '' || valor == 'Zip code...')){
				//alert('aca');
				return cambiarclase(elemento,true);
			}
			if(valor != ''){
				if(elemento.getAttribute('validar') == 'texto'){
					bandera = ((/\w+/).test(valor));
					return cambiarclase(elemento,bandera);		
				}
				
				if(elemento.getAttribute('validar') == 'letras'){
					return cambiarclase(elemento,((/^[a-zA-Z ]+$/).test(valor)));	
				}
				
				if(elemento.getAttribute('validar') == 'numeros'){
					var bandera = ((/^[0-9]+$/).test(valor));
					return cambiarclase(elemento,bandera);
				}
				
				if(elemento.getAttribute('validar') == 'anio'){
					if(valor.length != 4){
						return cambiarclase(elemento,false);	
					}else{
						var numeros = ((/^[0-9]+$/).test(valor));
						if(numeros == true){
							if(parseInt(valor) < 1900){
								return cambiarclase(elemento,false);
							}else{
								return cambiarclase(elemento,true);	
							}
						}else{
							return cambiarclase(elemento,false);	
						}
					}	
				}
				if(elemento.getAttribute('validar') == 'mail'){
					var bandera = ((/[a-zA-Z0-9._]+([-+.][a-zA-Z0-9._]+)*@[a-zA-Z0-9._]+([-.][a-zA-Z._]+)*\.[a-zA-Z._]{2,4}/).test(valor));	
					return cambiarclase(elemento,bandera);
				}
				/*if(elemento.getAttribute('validar') == 'telefono'){
					var bandera =  ((/^1?[\- ]?\(?\d{3}\)?[\- ]?\d{3}[\- ]?\d{4}$/).test(valor));
					return cambiarclase(elemento,bandera);
				}*/
				if(elemento.getAttribute('validar') == 'codigopostal'){
					/*if(valor.length == 6 || valor.length == 7)
						var bandera = ((/^[a-zA-Z]\d[a-zA-Z] ?\d[a-zA-Z]\d$/).test(valor));
					if(valor.length == 5 || valor.length == 10)
						var bandera = ((/^\d{5}(\-\d{4})?$/).test(valor));
						
					var bandera = ((/^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$/).test(valor));
					return cambiarclase(elemento,bandera);	*/
					
					/*new Ajax.Request('../inc/ajax/verificarcodigopostal.php?cp='+valor,{
					 	onSuccess: function(transport){
							if(transport.responseText == 1){
								var bandera = true;
							}else{
								var bandera = false	
							}
							return cambiarclase(elemento,bandera);
							/*alert(transport.responseText);
							if(transport.responseText == 1){
								var bandera = true;
							}else{
								var bandera = false;
							}
							return cambiarclase(elemento, tansport);*/
						/*}
					});*/
					//alert('aca');
					return true;
				}
				if(elemento.getAttribute('validar') == 'contrasenia'){
					var charmin = elemento.getAttribute('charminimo');
					if(valor.length >= charmin){
						var contrasenia = String($(elemento.getAttribute('campo')).value);
						var validacion = elemento.value;
						if(contrasenia == validacion && (contrasenia != '' && validacion  != '')){
							return cambiarclase(elemento,true);	
						}else{
							return cambiarclase(elemento,false);	
						}
					}else{
						return cambiarclase(elemento, false);
					}
				}
				if(elemento.getAttribute('validar') == 'hora'){
					var bandera = ((/^(0\d|1\d|2[0-3]):([0-5]\d)$/).test(valor));
					return cambiarclase(elemento, bandera);
				}
				//alert(elemento.getAttribute('largo'));
				/*if(elemento.getAttribute('largo') != 0){
					if(valor.length >= elemento.getAttribute('largo')){
						return cambiarclase(elemento, false);	
					}else{
						return cambiarclase(elemento, true);	
					}
				}*/
			}else{
				return cambiarclase(elemento, false);	
			}
	  	break;
		case "select-one":
			if(elemento.getAttribute('validar') == 'fecha'){
				var mes = $('mes').value;
				var anio = $('anio').value;
				if(valor == -1 && mes == -1 && anio == -1){
					var aux = true;
				}else{
					if(valor == -1 || mes == -1 || anio == -1){
						var aux = false;	
					}else{
						if(valor == 31){
							if(mes != 1 && mes != 3 && mes != 5 && mes != 7 && mes != 8 && mes != 10 && mes != 12){
								var aux = false;
							}else{
								var aux = true;
							}	
						}else if(valor == 30){
							if(mes != 4 && mes != 6 && mes != 9 && mes != 11){
								var aux = false;
							}else{
								var aux = true;
							}	
						}else if(valor == 29){
							if(mes == 2){
								if ((anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0))){
									var aux = true;									  
								}else{
									var aux = false;	
								}
							}else{
								var aux = true;	
							}	
						}else if(valor <=28){
							var aux = true;	
						}
					}
				}
				if(aux == true){
					$('mes').className = '';
					$('anio').className = '';
					return cambiarclase(elemento, true);
				}else if(aux == false){
					$('mes').className = 'errorr';
					$('anio').className = 'errorr';
					return cambiarclase(elemento, false);
				}
			}else{
				if(valor == elemento.getAttribute('exclusion')){
					return cambiarclase(elemento, false);	
				}else{
					return cambiarclase(elemento, true);	
				}
			}
		break;
		case "radio":
		case "checkbox":
			var aux = false;
			elementos = document.getElementsByName(elemento.name);
			for(var i = 0; i < elementos.length; ++i){
				if(elementos[i].checked == true){
					aux = true;
				}	
			}
			if(aux == true){
				$('error'+elemento.name).className = '';
			}else{
				$('error'+elemento.name).className = 'error';
				this.elementoserroneos += elemento.name+' ';
			}
			return aux;
		break;
	}
};

function cambiarclase(elemento, bandera){
	if(bandera == false){	
		$(elemento.id).className = 'errorr';	
		
		if(elemento.getAttribute('realname') != null){
			var nombre = elemento.getAttribute('realname');
		}else{
			var nombre = elemento.name;
		}
		
		if(elemento.getAttribute('mensaje') != null){
			var elem = $('error'+elemento.name);
			elem.innerHTML = elemento.getAttribute('mensaje');
			if(elem.style.display == 'none'){
				elem.style.display = 'block';		
			}
			
			/*var aux = $('error'+elemento.name);
			//alert(aux);
			aux.style.display == 'block';
			/*if(aux.style.display == 'none'){
				//new Effect.Appear(aux);
				aux.style.display == 'block';
			}*/
		}
		this.elementoserroneos += nombre+' ';
		return false;
	}else{
		if(elemento.getAttribute('mensaje') != null){
			var elem = $('error'+elemento.name);
			elem.style.display = 'none';
		}
		$(elemento.id).className = '';	
		return true;
	}
};

function mensajeerror(lang){
	var aux;
	var mensaje;
	if(elementoserroneos == ''){
		return '';
	}else{
		if(lang == ''){
			lang = 'en';
		}
		if(lang == 'es'){
			return mensaje = '<p>Por favor ingrese/seleccione valores para los siguientes campos: <strong>'+elementoserroneos+'</strong></p>';	
		}else if(lang == 'en'){
			return mensaje = '<p>Please insert/select values for the following fields: <strong>'+elementoserroneos+'</strong></p>';		
		}
	}
}