var ValidarFormFE = function(pForm)
{
	this.inheritFrom = Validator;
	this.inheritFrom();
	this.oForm=pForm;
	this.validate=function()
	{
		
		this.addRule({fnc:existSelected,obj:$("cboHotel"),id:"cboHotel",msg:" - Hotel"});
		this.addRule({fnc:checkDates,obj:$(""),id:"",msg:" - Fechas"});
		this.addRule({fnc:existSelected,obj:$("cboOcupacion"),id:"cboOcupacion",msg:" - Habitacion"});
		this.addRule({fnc:existSelected,obj:$("cboTipoHabitacion"),id:"cboTipoHabitacion",msg:" - Tipo Habitacion"});
		this.addRule({fnc:existSelected,obj:$("cboMotivo"),id:"cboMotivo",msg:" - Motivo"});


		
		this.addRule({fnc:existMax45,obj:$("txtNombre"),id:"txtNombre",msg:" - Nombre Completo"});
		this.addRule({fnc:existMail,obj:Array($("txtEmail"),$("txtEmail2")),id:"txtEmail",msg:" - Email"});
		
		
		//this.addRule({fnc:existFNValida,obj:$("txtFechaNacimiento"),id:"txtFechaNacimiento",msg:" - Fecha Nacimiento"});
		this.addRule({fnc:existSelected,obj:$("cboPais"),id:"cboPais",msg:" - Pais Residencia"});

		var lIsValid=this.applyRules();
		return lIsValid;
	}

	checkDates=function(pObj)
	{
		var da = new Date();

		var di = MM_findObj("cboDiaIn");
		var mi = MM_findObj("cboMesIn");
		var yi = MM_findObj("cboAnoIn");

		var de = MM_findObj("cboDiaOut");
		var me = MM_findObj("cboMesOut");
		var ye = MM_findObj("cboAnoOut");

		var fecha_i = yi.options[yi.selectedIndex].value + "-" + getMonthID(mi.selectedIndex) + "-"+ di.options[di.selectedIndex].value;
		var fecha_e = ye.options[ye.selectedIndex].value + "-" + getMonthID(me.selectedIndex) + "-"+ de.options[de.selectedIndex].value;

		
		var dt_i = new Date();
		var dt_e = new Date();
		
		//alert(fecha_i + " | " + fecha_e);
		//alert(dt_i.setToDate);
		dt_i.setToDate(fecha_i);
		dt_e.setToDate(fecha_e);
		
		//init date is less than actual date
		if(dt_i.DaysDiff(da)<0){

			alert("La fecha de llegada debe ser mayor a la fecha actual");
			return false;
		}

		//end date is less than actual date
		if(dt_e.DaysDiff(da)<0){
				
			alert("La fecha de salida debe ser mayor a la fecha actual");
			return false;
		}

		
		//end date is less than begin date
		if(dt_e.DaysDiff(dt_i)<0){
			
			alert("La fecha de salida debe ser mayor a la fecha de llegada")
			return false;

		}


		if(dt_e.DaysDiff(dt_i)>365){ //la fecha de reservas no pueden ser mayores a 365 dias (1 aņo)
				
			alert("La fecha de reservas no pueden ser mayores a 365 dias");
			return false;
		}

		
		return true

	}

	getMonthID = function(n){
		var m = n+1;
		if(m<10){
			return "0"+m;
		}
		return m;
	}

	
	
	checkUser=function(pObj)
	{
		if((trim(pObj.value)=="")) return true;

		if ((pObj.value.length>=6))
			return true

		return false;
	}

	existFNValida=function(pObj)
	{
		if (trim(pObj.value).length==10)
			return true

		return false;
	}
	

	existSelected=function(pObj)
	{
		if (pObj.selectedIndex>0){
			if( (pObj.options[pObj.selectedIndex].text).indexOf("---")==-1)
				return true
		}

		return false;
	}

	exist=function(pObj)
	{
		if ((trim(pObj.value)!=""))
			return true
		return false;
	}

	existMax45=function(pObj)
	{
		if ((trim(pObj.value)!="")&& (pObj.value.length<=45))
			return true
		return false;
	}

	existMax100=function(pObj)
	{
		if ((trim(pObj.value)!="")&& (pObj.value.length<=100))
			return true
		return false;
	}

	existMax200=function(pObj)
	{
		if ((trim(pObj.value)!="")&& (pObj.value.length<=200))
			return true
		return false;
	}

	existMail=function(pObj)
	{
		var m1 = pObj[0];
		var m2 = pObj[1];

		if (trim(m1.value)!=""){
			return true;
		}else if(m2.value!=""){
			return true;
		}
		return false;
	}


	//chequeo simple de mail
	function isMail(pObj){
	var s1;
	var s2;
	var chars_ok=true;
	var letra="";
	var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";

		for (var i=0; i < pObj.value.length; i++) {
			letra = pObj.value.charAt(i).toLowerCase();
			if (validchars.indexOf(letra) != -1)
			  continue;
			chars_ok = false;
			break;
		}

		if(chars_ok){
			if (pObj.value.indexOf("@") < 1) {
				return false;
			} else if (pObj.value.lastIndexOf(".") <= pObj.value.indexOf("@")) {
				return false;
			} else if (pObj.value.indexOf("@") == pObj.value.length) {
				return false;
			} else if (pObj.value.indexOf("..") >=0) {
				return false;
			} else if (pObj.value.indexOf(".") == pObj.value.length) {
				return false;
			}
			else
				return true;
		}
		return false;
	}
}


/*****************************************************/
function validarAlta()
{
	oForm = $("frmDisponibilidad");
	var validator=new ValidarFormFE(oForm);
	aux="";
	if (!validator.validate())
	{
		var lNoValidRules=validator.getNoValidRules();
		for (var i=0;i<lNoValidRules.length;i++)
		{
			aux+=lNoValidRules[i].msg+"\n";
		}
		alert("Debe completar los siguientes campos:\n"+aux);
	}
	else
	{
		oForm.submit();
	}
}


/*****************************************************/
