function getBaseUrl(){
	var url = location.href;
	var baseURL = url.substring(0, url.indexOf('/', 14));
	if (baseURL.indexOf('http://localhost') != -1) {
        // Base Url for localhost
        var url = location.href;  // window.location.href;
        var pathname = location.pathname;  // window.location.pathname;
        var index1 = url.indexOf(pathname);
        var index2 = url.indexOf("/", index1 + 1);
        var baseLocalUrl = url.substr(0, index2);

        return baseLocalUrl + "/";
    }
    else {
        // Root Url for domain name
        return baseURL + "/";
    }
}


$(document).ready(function(){
	var flags  = new Array();
	flags["firstname"] = flags["lastname"] = flags["city"] = flags["email"]= flags["phone"] = flags["zipcode"] = flags["password"] = flags["lfusr"] = flags["lfpwd"] = flags["day"]= flags["month"]= flags["year"]= flags["hours"] ="0";
	
	var baseUrl = getBaseUrl();
	var errorImg = new Image();
	errorImg.src = baseUrl+"images/es/error_form.gif";
	var okImg = new Image();
	okImg.src = baseUrl+"images/es/ok_form.gif";
	
	var f = new Date();
	year  = f.getFullYear();
	month = f.getMonth();
	hours = f.getHours();
	date = f.getDate();
	msecsInADay = 86400000;
	var f = new Date(year, month, date, 16, 0, 0);
	if(hours >= 16){//sorteo will be tomorrow at 16:00
		f = new Date(f.getTime() + msecsInADay);
	}

	
	$('#timeCountdown #hours').countdown(
			{
		until: f, 
		layout:'{hnn}',
		    }
	);

	$('#timeCountdown #minutes').countdown(
			{
		until: f, 
		layout:'{mnn}',
		    }
	);
	$('#timeCountdown #seconds').countdown(
			{
		until: f, 
		layout:'{snn}',
		    }
	);
	
	function updateField(id, value, status){
		var source = (status == "error") ? errorImg.src : okImg.src;
		$("#"+id).parent().next().children("img").attr("src", source).removeClass("hidden");
		
		str = id.toLowerCase().replace(/\b[a-z]/g, function(letter) {
		    return letter.toUpperCase();
		});
		if(id == "zipcode") str = "ZipCode";
		if(status == "error")
			{
				$("#aviso_errores").show(); //show
				if(id == "password"){
					if(value.length <6){
						$("#aviso_errores").children("span#err"+str+"6").removeClass("hidden").addClass("block");
					}else{
						$("#aviso_errores").children("span#err"+str+"6").removeClass("block").addClass("hidden");
					}
					if( !regAZ.test(value) || !reg19.test(value) ){
						$("#aviso_errores").children("span#err"+str+"A1").removeClass("hidden").addClass("block");
					}else if( !regAZ.test(value) && !reg19.test(value) ){
						$("#aviso_errores").children("span#err"+str+"A1").removeClass("block").addClass("hidden");
					}
				}

				$("#aviso_errores").children("span#err"+str).removeClass("hidden").addClass("block");
			}
		else if (status == "ok") {
			if(id == "password"){
				$("#aviso_errores").children("span#err"+str+"6").removeClass("block").addClass("hidden");
				$("#aviso_errores").children("span#err"+str+"A1").removeClass("block").addClass("hidden");
			}
			$("#aviso_errores").children("span#err"+str).removeClass("block").addClass("hidden");
		}
	}
	
	
	function checkAvisoErrores(){
		var count = $("#aviso_errores").children("span:regex(class, .*hidden)").size();//TODO change this line to count the span without the "hidden" class, if count > 0 there are errors, if not hide the aviso_errores div
		if(count == 20 ){ $("#aviso_errores").hide(); }
	}
	
	$("#children").live("change", function(){
		var value = $(this).val();
		if(value == "1"){
			$("#nbchildren").removeAttr("disabled");
		}else if (value == "0"){
			$("#nbchildren").val("0");
			$("#nbchildren").attr("disabled", "true");
		}
	});
	
	
	$("#adult:checkbox").click(function(){
		if( $(this).is(":checked") ){
			$("#aviso_errores").children("span#errAdult").removeClass("block").addClass("hidden");
		}else{
			$(".error_fecha").children("img").attr("src", "").addClass("hidden");
			$("#fecha_form #day, #fecha_form #month,#fecha_form  #year").val("");
			flags["day"] = flags["month"] = flags["year"] = "0";
		}
		
		if ($("#adult:checked").val()) $("#dob").show('slow');
		else $("#dob").hide('slow');
		checkAvisoErrores();
	});
		
	$("#terms").click(function(){
		if( $(this).is(":checked") ){
			$("#aviso_errores").children("span#errTerms").removeClass("block").addClass("hidden");
		}
		checkAvisoErrores();
	});
			
	$("input[name='frm_gender']").click(function(){
		if( $(this).is(":checked") ){
			$("#aviso_errores").children("span#errGender").removeClass("block").addClass("hidden");
		}
		checkAvisoErrores();
	});
		
	$("#nationality").live("change", function(){
		if( $(this).val() != "")
			$("#aviso_errores").children("span#errNationality").removeClass("block").addClass("hidden");
		checkAvisoErrores();
	});
	

	$("input[name='frm_gender']").click(function(){
		$("#aviso_errores").children("span#errGender").addClass("hidden");
		checkAvisoErrores();
	});
	
	
	jQuery.expr[':'].regex = function(elem, index, match) {
		var matchParams = match[3].split(','),
		validLabels = /^(data|css):/,
		attr = {
		method: matchParams[0].match(validLabels) ?
		matchParams[0].split(':')[0] : 'attr',
		property: matchParams.shift().replace(validLabels,'')
		},
		regexFlags = 'ig',
		regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
		return regex.test(jQuery(elem)[attr.method](attr.property));
		}
	
	
	$("#nationality, #day, #month, #year, #country_residence").live("change", function(){
		var baseUrl = getBaseUrl();
		var value = $(this).val();
		var id = $(this).attr("id");
		switch(id){
			case "country_residence":
				var regPhone = /^\d{9}?$/;
				var regNum = /^(\d)*?$/;
				var zipcode = /^\d{5}?$/;
				status = (value == "") ? "error" : "ok";
				$(this).parent().next().children("img").attr("src", baseUrl+"images/es/"+status+"_form.gif").removeClass("hidden");
				str = "Country";
				phone = $("#phone").val();
				phonestatus = ( ( !regPhone.test(phone) && ( $("#country_residence").val() == "ES") ) || ( phone == "" || !regNum.test(phone)) ) ? "error" : "ok";
				code = $("#zipcode").val();
				zipcodestatus = ( (!zipcode.test(code) && ( $("#country_residence").val() == "ES") ) || ( code == "") ) ? "error" : "ok";
				updateField("phone", phone, phonestatus);
				updateField("zipcode", code, zipcodestatus);
				break;
			case "nationality":
				status = (value == "") ? "error" : "ok";
				$(this).parent().next().children("img").attr("src", baseUrl+"images/es/"+status+"_form.gif").removeClass("hidden");
				str = id.toLowerCase().replace(/\b[a-z]/g, function(letter) {
				    return letter.toUpperCase();
				});
				break;
			case "day": case "month": case "year":
				var day = $("#day").val();
				var month = $("#month").val();
				var year = $("#year").val();
				str = "Birthday";
				
				if( id == "year" && flags["year"] == "0" ){
					flags["day"] = flags["month"] = flags["year"] = "1";
				}
				else if( ( id =="day" && flags["day"] == "0")  || ( id == "month" && flags["month"] == "0" ) ){
					break;
				}
				status = ( day == "" || month == "" || year == "" ) ? "error" : "ok";
				
				flags[id] = "1";
				//$(".error_fecha").children("img").attr("src", baseUrl+"images/es/"+status+"_form.gif").removeClass("hidden");
				var source = (status == "error") ? errorImg.src : okImg.src;
				$(".error_fecha").children("img").attr("src", source).removeClass("hidden");
				break;
		}
		
		if(status == "error")
			{
				$("#aviso_errores").show();
				$("#aviso_errores").children("span#err"+str).removeClass("hidden");
			}
		else {
			$("#aviso_errores").children("span#err"+str).addClass("hidden");
		}
		checkAvisoErrores();
	});
	
$("input:regex(name, frm_.*)").live("blur", function(){
		var baseUrl = getBaseUrl();
		var regAZ = /[a-z]/i;
		var regAlpha = /^([a-zA-Z_ÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöüçÇßØøÅåÆæÞþÐð ])*$/;
		var regPhone = /^\d{9}?$/;
		var reg19 = /\d/;
		var regNum = /^(\d)*?$/;
		var zipcode = /^\d{5}?$/;
		var status = "";
		var value = $(this).val();
		var id = $(this).attr("id");
		switch(id){
			case "firstname": case "lastname"	:case "city"		:
				status = ( !regAlpha.test(value)  || ( flags[id]== "1" &&  value == "") ) ? "error" : "ok"; 
				break;
			case "phone"	:
				status = ( ( !regPhone.test(value) && ( $("#country_residence").val() == "ES") ) || ( flags[id]== "1" &&  value == "" || !regNum.test(value)) ) ? "error" : "ok";
				break;
			case "zipcode"	:
				status = ( ( !zipcode.test(value) && ( $("#country_residence").val() == "ES" ) ) || ( flags[id]== "1" &&  value == "") ) ? "error" : "ok";
				break;
			case "email":
				status = (!emailReg.test(value) || ( flags[id]== "1" &&  value == "") ) ? "error" : "ok";
				break;
			case "password":
				status = ( ( flags[id]== "1" &&  value == "") || (value.length <6) || !regAZ.test(value) || !reg19.test(value) ) ? "error" : "ok";
				break;
		}
		if( (flags[id] == "0")  && (value == "") ) status= "null_img";
		if(value != ""){ flags[id] = "1";}
		if(status == "null_img"){
			;
		}
		else{
			//$(this).parent().next().children("img").attr("src", baseUrl+"images/es/"+status+"_form.gif").removeClass("hidden");
			var source = (status == "error") ? errorImg.src : okImg.src;
			$(this).parent().next().children("img").attr("src", source).removeClass("hidden");
		}
		str = id.toLowerCase().replace(/\b[a-z]/g, function(letter) {
		    return letter.toUpperCase();
		});
		if(id == "zipcode") str = "ZipCode";
		if(status == "error")
			{
				$("#aviso_errores").show(); //show
				if(id == "password"){
					if(value.length <6){
						$("#aviso_errores").children("span#err"+str+"6").removeClass("hidden").addClass("block");
					}else{
						$("#aviso_errores").children("span#err"+str+"6").removeClass("block").addClass("hidden");
					}
					if( !regAZ.test(value) || !reg19.test(value) ){
						$("#aviso_errores").children("span#err"+str+"A1").removeClass("hidden").addClass("block");
					}else if( !regAZ.test(value) && !reg19.test(value) ){
						$("#aviso_errores").children("span#err"+str+"A1").removeClass("block").addClass("hidden");
					}
				}

				$("#aviso_errores").children("span#err"+str).removeClass("hidden").addClass("block");
			}
		else if (status == "ok") {
			if(id == "password"){
				$("#aviso_errores").children("span#err"+str+"6").removeClass("block").addClass("hidden");
				$("#aviso_errores").children("span#err"+str+"A1").removeClass("block").addClass("hidden");
			}
			$("#aviso_errores").children("span#err"+str).removeClass("block").addClass("hidden");
		}
		checkAvisoErrores();
	});
	
	/*$("#street_type").change(function(){
		var value = $(this).val();
		str = "StreetType";
		if(value != "")
			$("#aviso_errores").children("#err"+str).removeClass("block").addClass("hidden");
		else
			$("#aviso_errores").children("#err"+str).removeClass("hidden").addClass("block");
		var count = $("#aviso_errores").children("div:regex(class, .*hidden)").size();//TODO change this line to count the span without the "hidden" class, if count > 0 there are errors, if not hide the aviso_errores div
		if(count == 4 ){ 
			$("#aviso_errores").hide();
		}else{
			$("#aviso_errores").show();
		}
	});*/

	/*$("#street, #street_number").blur( function(){
		var reg19 = /^(\d)*?$/;
		var value = $(this).val();
		var id = $(this).attr("id");
		if(id == "street") str = "Street"; else if(id == "street_number") str = "StreetNumber";
		switch(id){
			case "street":
				status = ( value == "") ? "error" : "ok";
				break;
			case "street_number":
				status =  (value == "" || (!reg19.test(value)) ) ? "error" : "ok";
				break;
		}
		if(status == "ok")
			$("#aviso_errores").children("#err"+str).removeClass("block").addClass("hidden");
		else
			$("#aviso_errores").children("#err"+str).removeClass("hidden").addClass("block");
		var count = $("#aviso_errores").children("div:regex(class, .*hidden)").size();//TODO change this line to count the span without the "hidden" class, if count > 0 there are errors, if not hide the aviso_errores div
		if(count == 4 ){ 
			$("#aviso_errores").hide();
		}else{
			$("#aviso_errores").show();
		}
	});*/
	
	
	

	function checkRegisterFormErrores(){
		var hasError = "false";
		var baseUrl = getBaseUrl();
		var regAZ = /[a-z]/i;
		var regAlpha = /^([a-zA-Z_ÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöüçÇßØøÅåÆæÞþÐð ])*$/;
		var regPhone = /^\d{9}?$/;
		var reg19 = /\d/;
		var zipcode = /^\d{5}?$/;
		var regNum = /^(\d)*?$/;
		var status = "";
		var str = "";
		
		$("input:regex(name, frm_.*), select:regex(name, frm_.*)").each(function(){
			value = $(this).val();
			id = $(this).attr("id");
			switch(id){
				case "firstname": case "lastname"	:case "city"		:
					status = ( !regAlpha.test(value)  || ( value == "") ) ? "error" : "ok"; 
					break;
				case "phone"	:
					status = ( ( !regPhone.test(value) && ( $("#country_residence").val() == "ES") ) || ( value == "" || !regNum.test(value	) ) ) ? "error" : "ok";
					break;
				case "zipcode"	:
					str= "ZipCode";
					status = ( (!zipcode.test(value) && ( $("#country_residence").val() == "ES" ) ) || ( value == "") ) ? "error" : "ok";
					break;
				case "email":
					status = (!emailReg.test(value) || ( value == "") ) ? "error" : "ok";
					break;
				case "password":
					status = ( ( flags[id]== "1" &&  value == "") || (value.length <6) || !regAZ.test(value) || !reg19.test(value) ) ? "error" : "ok";
					break;
				/*case "street": case "street_type": 
					status = ( value == "") ? "error" : "ok";
					break;
				case "street_number":
					status =  (value == "" || (!reg19.test(value)) ) ? "error" : "ok";
					break;
					*/
				case "country_residence":
					str = "Country";
					status =  (value == "") ? "error" : "ok";
					phone = $("#phone").val();
					phonestatus = ( ( !regPhone.test(phone) && ( $("#country_residence").val() == "ES") ) || ( phone == "" || !regNum.test(phone)) ) ? "error" : "ok";
					code = $("#zipcode").val();
					zipcodestatus = ( (!zipcode.test(code) && ( $("#country_residence").val() == "ES") ) || ( code == "") ) ? "error" : "ok";
					updateField("phone", phone, phonestatus);
					updateField("zipcode", code, zipcodestatus);
					break;
				case "nationality":
					status = (value == "") ? "error" : "ok";
					break;
				case "day": case "month": case "year":
					if($("#adult").is(':checked')){
						var day = $("#day").val();
						var month = $("#month").val();
						var year = $("#year").val();
						str = "Birthday";
						status = (day != "" && month != "" && year != "") ? "ok" : "error";
					}
					break;
				case "adult":
					status = ($("#adult").is(':checked')) ? "ok" : "error";
					break;
				case "female": case "male":
					str = "Gender";
					status = ($("input[name='frm_gender']").is(':checked')) ? "ok" : "error";
					break;
				case "privacy": case "telemarketing":
					status = (value == "") ? "error" : "ok";
					break;
				case "terms":
					status = ($("#terms").is(':checked')) ? "ok" : "error";
					break;
				
			}
			if(str == ""){
				str = id.toLowerCase().replace(/\b[a-z]/g, function(letter) {
					    return letter.toUpperCase();
				});
			}
		//	$(this).parent().next().children("img").attr("src", baseUrl+"images/es/"+status+"_form.gif").removeClass("hidden");
			var source = (status == "error") ? errorImg.src : okImg.src;
			$(this).parent().next().children("img").attr("src", source).removeClass("hidden");
			if(status == "ok"){
				if(id == "password"){
					$("#aviso_errores").children("span#err"+str+"6").removeClass("block").addClass("hidden");
					$("#aviso_errores").children("span#err"+str+"A1").removeClass("block").addClass("hidden");
				}
				$("#aviso_errores").children("#err"+str).removeClass("block").addClass("hidden");
			}
			else{
				if(id == "password"){
					if(value.length <6){
						$("#aviso_errores").children("span#err"+str+"6").removeClass("hidden").addClass("block");
					}
					if( !regAZ.test(value) || !reg19.test(value) ){
						$("#aviso_errores").children("span#err"+str+"A1").removeClass("hidden").addClass("block");
					}else if (!regAZ.test(value) && !reg19.test(value) ){
						$("#aviso_errores").children("span#err"+str+"A1").removeClass("block").addClass("hidden");
					}
				}
				$("#aviso_errores").children("#err"+str).removeClass("hidden").addClass("block");
				hasError = "true";
			}
			str = "";
			
		});
		if(hasError == "true"){
			$("#aviso_errores").show();
		}else if(hasError == "false"){
			$("#aviso_errores").hide();
			$("#contacto").submit();
		}
	}
	
	function checkExtraFormErrores(){
		var baseUrl = getBaseUrl();
		var hasError = "false";
		$("input:regex(name, frm_.*), select:regex(name, frm_.*)").each(function(){
			c
			value = $(this).val();
			id = $(this).attr("id");
			switch(id){
				case "street_type":
					status = ( value == "" ) ? "error" : "ok";
					str = "StreetType";
					break;
				case "street":
					status = ( value == "") ? "error" : "ok";
					str = "Street";
					break;
				case "street_number":
					status = ( (value == "") || (!reg19.test(value)) ) ? "error" : "ok";
					str = "StreetNumber";
					break;
			}
			//$(this).parent().next().children("img").attr("src", baseUrl+"images/es/"+status+"_form.gif").removeClass("hidden");
			var source = (status == "error") ? errorImg.src : okImg.src;
			$(this).parent().next().children("img").attr("src", source).removeClass("hidden");
			if(status == "ok" ){
				$("#aviso_errores").children("#err"+str).removeClass("block").addClass("hidden");
			}else if (status == "error" ){
				$("#aviso_errores").children("#err"+str).removeClass("hidden").addClass("block");
				hasError = "true";
			}
		});
		
		if(hasError == "true"){
			$("#aviso_errores").show();
		}else if(hasError == "false"){
			$("#aviso_errores").hide();
			$("#regform2").submit();
		}
	}
	
	$("#btnReg").click(function(){
		checkRegisterFormErrores();
	});
	
	$("#btnReg2").click(function(){
		$("#regform2").submit();
		//checkExtraFormErrores();
	});
});


