function testEmail(src) {
  var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  return regex.test(src);
}

function valida_fecha(campo) {
    var RegExPattern = /^(((0[1-9]|[12][0-9]|3[01])([/])(0[13578]|10|12)([/])(\d{4}))|(([0][1-9]|[12][0-9]|30)([/])(0[469]|11)([/])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([/])(02)([/])(\d{4}))|((29)(\.|-|\/)(02)([/])([02468][048]00))|((29)([/])(02)([/])([13579][26]00))|((29)([/])(02)([/])([0-9][0-9][0][48]))|((29)([/])(02)([/])([0-9][0-9][2468][048]))|((29)([/])(02)([/])([0-9][0-9][13579][26])))$/;
    if ((campo.value.match(RegExPattern)) && (campo.value!='')) return true;
    else return false;    
}

function validaSelectRoom(){
	var mensaje = '';		
	var room = "";
	$$('#resultAvailability .requerido input.select').each(function(el){		
		if(room!=el.name){
			var valid=0;
			$$('#resultAvailability .requerido input.'+el.name).each(function(campo){
				if(campo.checked==true) valid=1;
			});
			if(valid==0) mensaje += '\n- You must select a ' + el.alt + ' Room';		
		}
		room=el.name;
	});	
	if(mensaje!=''){
		alert('Please, correct the following errors:' + mensaje);
		return false;
	}
	else
		return true; 		
}


function validaForm(){
	var mensaje = '';
	var room=0;
	var rooms=0;
	$$('.consultas .requerido input, .consultas .requerido textarea').each(function(campo) {
		if ((campo.name.contains('email'))&&(!testEmail(campo.value.clean())))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('nombre'))&&((campo.value.clean()).length <= 2))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('apellido'))&&((campo.value.clean()).length <= 2))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('terminos_y_condiciones'))&&campo.checked == false)
			mensaje += '\n- You must accept the Terms and Conditions of Sale';
		if ((campo.name.contains('check'))&&((campo.value.clean()).length < 3))
			mensaje += '\n- You must pick a ' + campo.title;
		if ((campo.name.contains('pais'))&&((campo.selectedIndex == 0)))
			mensaje += '\n- You must select a ' + campo.title;
	});
	
	$$('.reservas .requerido select.country, .reservas .requerido select.city, .reservas .requerido input, .reservas .requerido textarea').each(function(campo) {
		if ((campo.name.contains('email'))&&(!testEmail(campo.value.clean())))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if (campo.name.contains('re_email')&&(testEmail(campo.value.clean()))){
			var idEmail = campo.name.substring(3);
			if($(idEmail).value!=campo.value)
				mensaje += '\n- ' + campo.alt + ' is not mismatch';
		}
		if ((campo.name.contains('nombre'))&&((campo.value.clean()).length <= 2))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('apellido'))&&((campo.value.clean()).length <= 2))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('fono'))&&((campo.value.clean()).length <= 2))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('edad'))&&(((Number(campo.value)<18)||(Number(campo.value)>100))||((campo.value.clean()).length<=0)))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('direccion'))&&((campo.value.clean()).length <= 2))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('ciudad'))&&((campo.value.clean()).length <= 2)){
			if(campo.get('tag')=='select' && campo.selectedIndex == 0) mensaje += '\n- ' + campo.title + ' is not valid';
			if(campo.get('tag')=='input' && (campo.value.clean()).length <= 2) mensaje += '\n- ' + campo.alt + ' is not valid';
		}
		if ((campo.name.contains('terminos_y_condiciones'))&&campo.checked == false)
			mensaje += '\n- You must accept the Terms and Conditions of Sale';		
		if ((campo.name.contains('city'))&&((campo.value.clean()).length <= 2))
			mensaje += '\n- ' + campo.alt + ' is not valid';
		if ((campo.name.contains('pais'))&&((campo.selectedIndex == 0)))
			mensaje += '\n- ' + campo.title + ' is not valid';
		if ((campo.name.contains('nacionalidad'))&&((campo.selectedIndex == 0)))
			mensaje += '\n- ' + campo.title + ' is not valid';
	});	
	$$('.formSearch select.country, .formMinSearch select.country').each(function(campo) {
		if (campo.selectedIndex == 0)
			mensaje += '\n- You must select a country';						 
	});	
	$$('.formSearch select.city, .formMinSearch select.city').each(function(campo) {
		if (campo.selectedIndex == 0)
			mensaje += '\n- You must select a city';						 
	});	
	$$('.formSearch input.fecha, .formMinSearch input.fecha').each(function(campo) {
		if (!valida_fecha(campo))
			mensaje += '\n- ' + campo.alt + ' is not valid';						 
	});	
	$$('.formSearch select.room, .formMinSearch select.room').each(function(campo) {
		rooms=1;
		if (campo.value!=0)
			room++;						 
	});	
	if(room==0 && rooms==1) mensaje += '\n- You must select a room';	
	if(mensaje!=''){
		alert('Please, correct the following errors:' + mensaje);
		return false;
	}
	else
		return true; 		
}

function validarFormulario(idForm) {
	if(validaForm()){
		$(idForm).submit();
	}else return 2==1;

}
window.addEvent('domready', function(){
	//var myTips = new Tips($$('.helpTT img'), {maxTitleChars:35});
	$$('.helpTT img').each(function(el){
		var string = el.getProperty("title").split(' :: ');
		var title = string[0];
		var text = string[1];
		el.removeProperty("title");
		el.store('tip:title', title); 
		el.store('tip:text', text);
	});
	new Tips('.helpTT img', {
		showDelay: 500,    //default is 100
		hideDelay: 100,   //default is 100
		offsets: {
			'x': 16,       //default is 16
			'y': 16        //default is 16
		},			
		fixed: false,      //default is false
		onShow: function(tip){
			tip.fade('in');
		},
		onHide: function(tip){
			tip.fade('out');
		}
	});
	$$('#nombre, #apellido').each(function(campo) {campo.addEvent('blur', function(el){campo.value = campo.value.capitalize().clean().trim();});});
	$$('#email').each(function(campo) {campo.addEvent('blur', function(el){campo.value = campo.value.trim().clean();});});
});