// JavaScript Document
var data = new Array();
var dataB = new Array();
var errorList = "No Errors";
var error = false;
var validForm = true;
var erroStyle = "#FF0000 1px solid";
var okStyle = "#999 1px solid";


function doReservationValidations(){				
	configValidator('#FF0000 1px solid','#999 1px solid');
	clearValidations();
	addValidField('_name','texto','Name',3,30);
	addValidField('_surname','texto','Surname',3,30);
	addValidField('_mail','mail','E-Mail');
	return validate();
}


function configValidator(val_erroStyle,val_okStyle){
	erroStyle = val_erroStyle;
	okStyle   = val_okStyle;
}

function clearValidations(){
	data 		= new Array();
	dataB 		= new Array();
	errorList 	= "";
	validForm 	= true;
}

function addValidField(val_nombre,val_tipo,val_error,val_minLength,val_maxLength){	
	info = new Object()
	info.nombre 	= val_nombre;
	info.tipo 		= val_tipo;
	info.error 		= val_error;
	info.maxLength 	= val_maxLength;
	info.minLength 	= val_minLength;
	data.push(info);	
}

function addCompareField(val_nombr_a,val_nombre_b,val_equal,val_error){	
	info = new Object()
	info.nombre 	= val_nombr_a;
	info.nombre_b 	= val_nombre_b;
	info.tipo 		= "comparar";
	info.equal 		= val_equal;
	info.error 		= val_error;	
	dataB.push(info);	
}


function validate(){
					
	var error = false;	
	
	for(var n=0;n<data.length;n++){	
		var validItem = document.getElementById(data[n].nombre); 
		if(validItem.value==""){					
			validItem.style.border = erroStyle;
			error = true;
			validForm = false;
			errorList = errorList+data[n].error+"\n";
		}else{
			validItem.style.border = okStyle;
			switch(data[n].tipo){
				case "combo":
					if(validItem.selectedIndex!=0){
						validItem.style.border = okStyle;
					}else{
						error = true;
						validForm = false;
						errorList = errorList+"Falta seleccionar: "+data[n].error+"\n";
						validItem.style.border = erroStyle;
					}
					break;
				case "mail":
					if(validateMail(validItem.value)){
						validItem.style.border = okStyle;
					}else{
						error = true;
						validForm = false;
						errorList = errorList+"Invalid e-mail"+"\n";
						validItem.style.border = erroStyle;
					}
					break;
				case "texto":
					if(data[n].minLength||data[n].maxLength){
						if(validateLength(validItem.value,data[n].minLength,data[n].maxLength)){
							validItem.style.border = okStyle;
						}else{
							error = true;
							validForm = false;
							errorList = errorList+"La longitud del campo '"+data[n].error+"' es incorrecta\n";
							validItem.style.border = erroStyle;
						}
					}
					break;				
			}
			
			
		}
	}
	
	if(!error){		
		validOthers();		
	}
	
	if(!validForm){
		alert(errorList);
	}
	
	return validForm;
}

function validOthers(){
	for(var n=0;n<dataB.length;n++){
		
		var item_a = document.getElementById(dataB[n].nombre);
		var item_b = document.getElementById(dataB[n].nombre_b);				
		if(validateEquals(item_a.value,item_b.value,dataB[n].equal)){
			item_a.style.border = okStyle;
			item_b.style.border = okStyle;
		}else{
			error 		= true;
			validForm 	= false;							
			item_a.style.border = erroStyle;
			item_b.style.border = erroStyle;
			errorList = errorList+"Los campos '"+dataB[n].error+"' no coinciden\n";
		}
		
	}
}


function validateEquals(item_a,item_b,equals){	
	if(equals){
		return (item_a==item_b)
	}else{
		return (item_a!=item_b)
	}
	
}

function validateMail(mailValue){
	 var mail = mailValue;
	 var atpos=mail.indexOf("@");
	 var dotpos=mail.lastIndexOf(".");
	 if (atpos<1 || dotpos<atpos+2 || dotpos+2>=mail.length){   
	   return false;
	 }else{
	   return true;
	 }
}

function validateLength(itemValue,minLength,maxLength){
	 var  str = itemValue;		
	 if (str.length<minLength || str.length>maxLength){   
	   return false;
	 }else{
	   return true;
	 }
}





