$(function(){
	//Se define el tipo de busqueda por default
	setProductsOffered();
	$.get(cf.cpUrl + cf.defaultProduct + '.html', function(data) {
		$('#form_container').hide().html(data).fadeIn(1000);
		inicializar();
	});
		
	//Se programa el click para las opciones de viaje
	$(".select_product input").bind("click",function(){
		$.get(cf.cpUrl + this.value + '.html', function(data) {
			$('#form_container').hide().html(data).fadeIn(1000);
			$("#messageFieldMissing").remove();
			inicializar();
		});
	});
	
	//Se programa el click para el boton buscar
	$("#searchbutton").bind("click", function(){
	 	if (formValid()){
			replaceEspecialChars();
			$('body').append(aux.spinner);
			$("#motor").submit();
		}
	});
});

function setProductsOffered(){
	if (cf.productsOffered.indexOf("|H|")  >= 0) $(".select_product").append(aux.h);
	if (cf.productsOffered.indexOf("|F|")  >= 0) $(".select_product").append(aux.f);
	if (cf.productsOffered.indexOf("|E|")  >= 0) $(".select_product").append(aux.e);
	if (cf.productsOffered.indexOf("|HF|")  >= 0) $(".select_product").append(aux.hf);
	if (cf.productsOffered.indexOf("|V|")  >= 0) $(".select_product").append(aux.v);
	if (cf.productsOffered.indexOf("|HV|")  >= 0) $(".select_product").append(aux.hv);
	if (cf.productsOffered.indexOf("|HFV|")  >= 0) $(".select_product").append(aux.hfv);
	$(":radio[value="+ cf.defaultProduct +"]").attr("checked", "checked");
	$(".select_product").hide().fadeIn(1000);
	$(".searchbox_white_bckg").append(aux.avisos);
}
function inicializar(){
	if ($("#viaje").val() == 'F'){
		$('#fechaInicio').datePicker({clickInput:true,createButton:false});
		$('#fechaFin').datePicker({clickInput:true,createButton:false});
		$('.date-pick').datePickerMultiMonth({numMonths: 2});
		$('.date-pick').dpSetOffset(0, 115);
		$('.date-pick').dpSetPosition($.dpConst.POS_AUTO, $.dpConst.POS_AUTO);
		$("#noChildren_0").bind("change", function(){
			this.value == 0?$("#text_especific_edad").html(''):$("#text_especific_edad").html(cf.espec_edad);
			$("#child_age").children().remove();
			for (i=1; i <= this.value; i++)
				$("#child_age").append("<div class='edad_menores'>" + i + "<select name='childAge_0_" + i + "' id='childAge_0_" + i + "'>" + aux.edades + "</select></div>");
		});
		$("#sencillo").bind("click", function(){
			$("#fechaFin").parent().replaceWith(aux.fregresoHidden);
			$("#fechaFin").val($("#fechaInicio").val());
		});
		$("#redondo").bind("click", function(){
			$("#fechaFin").parent().replaceWith(aux.fregreso);
			$('#fechaFin').datePicker({clickInput:true,createButton:false});
			$('#fechaFin').datePickerMultiMonth({numMonths: 2});
			$('#fechaFin').dpSetOffset(0, 115);
			$('#fechaFin').dpSetPosition($.dpConst.POS_AUTO, $.dpConst.POS_AUTO);
		});
		$('input#origen').jSuggest({url:cf.ajaxURL + "?locationType=airport&searchableOnly=false",type:"POST",data:"ajaxSearch", autoChange:false,id:"origen"});
		$('input#destino').jSuggest({url:cf.ajaxURL + "?locationType=airport&searchableOnly=false",type:"POST",data:"ajaxSearch",autoChange:false,id:"destino"});
	}else if($("#viaje").val() == 'H'){
		$("#habitaciones").bind("change", function(){
			while($("#ocupacion tr").size() > 2){
				$("#ocupacion tr:last").remove();
			}			
			for (var i = 2; i <= this.value; i++){
				$("#ocupacion").append("<tr><td></td><td><div align='left' class='habitaciones_text'>Hab. " + i + "</div></td><td><div align='center'><select id='noAdultos_"+(i-1)+"' class='adultos' name='noAdultos_"+(i-1)+"'>"+ aux.noAdt +"</select></div></td><td><div align='center'><select id='noChildren_"+(i-1)+"' class='adultos' name='noChildren_"+(i-1)+"'>"+ aux.noChd +"</select></div></td><td id='td_ageChd_"+ i +"'></td></tr>");
				$("#noChildren_"+(i-1)).bind("change", function(){
					updateChildren((parseInt(this.id.substring(this.id.indexOf('_')+1)) + 1),this.value);
				});
			}
		});
		$("#noChildren_0").bind("change",function(){
			updateChildren((parseInt(this.id.substring(this.id.indexOf('_')+1)) + 1),this.value);
		});
		$('#fechaInicio').datePicker({clickInput:true,createButton:false});
		$('#fechaFin').datePicker({clickInput:true,createButton:false});
		$('.date-pick').datePickerMultiMonth({numMonths: 2});
		$('.date-pick').dpSetOffset(0, 115);
		$('.date-pick').dpSetPosition($.dpConst.POS_AUTO, $.dpConst.POS_AUTO);
		$('input#destino').jSuggest({url:cf.ajaxURL + "?locationType=city&searchableOnly=false",type:"POST",data:"ajaxSearch",autoChange:false,id:"destino"});
	}else if($("#viaje").val() == 'E'){
		$('#fechaInicio').datePicker({clickInput:true,createButton:false});
		$('#fechaFin').datePicker({clickInput:true,createButton:false});
		$('.date-pick').datePickerMultiMonth({numMonths: 2});
		$('.date-pick').dpSetOffset(0, 115);
		$('.date-pick').dpSetPosition($.dpConst.POS_AUTO, $.dpConst.POS_AUTO);
		$('input#destino').jSuggest({url:cf.ajaxURL + "?locationType=city&searchableOnly=false",type:"POST",data:"ajaxSearch",autoChange:false,id:"destino"});
	}else if($("#viaje").val() == 'V'){
		$('#fechaInicio').datePicker({clickInput:true,createButton:false});
		$('#fechaFin').datePicker({clickInput:true,createButton:false});
		$('.date-pick').datePickerMultiMonth({numMonths: 2});
		$('.date-pick').dpSetOffset(0, 115);
		$('.date-pick').dpSetPosition($.dpConst.POS_AUTO, $.dpConst.POS_AUTO);
		$('input#destino').jSuggest({url:cf.ajaxURL + "?locationType=city&searchableOnly=false",type:"POST",data:"ajaxSearch",autoChange:false,id:"destino"});
	}else if($("#viaje").val() == 'HF'){
		$("#habitaciones").bind("change", function(){
			while($("#ocupacion tr").size() > 2){
				$("#ocupacion tr:last").remove();
			}			
			for (var i = 2; i <= this.value; i++){
				$("#ocupacion").append("<tr><td></td><td><div align='left' class='habitaciones_text'>Hab. " + i + "</div></td><td><div align='center'><select id='noAdultos_"+(i-1)+"' class='adultos' name='noAdultos_"+(i-1)+"'>"+ aux.noAdt +"</select></div></td><td><div align='center'><select id='noChildren_"+(i-1)+"' class='adultos' name='noChildren_"+(i-1)+"'>"+ aux.noChd +"</select></div></td><td id='td_ageChd_"+ i +"'></td></tr>");
				$("#noChildren_"+(i-1)).bind("change", function(){
					updateChildren((parseInt(this.id.substring(this.id.indexOf('_')+1)) + 1),this.value);
				});
			}
		});
		$("#noChildren_0").bind("change",function(){
			updateChildren((parseInt(this.id.substring(this.id.indexOf('_')+1)) + 1),this.value);
		});
		$('#fechaInicio').datePicker({clickInput:true,createButton:false});
		$('#fechaFin').datePicker({clickInput:true,createButton:false});
		$('.date-pick').datePickerMultiMonth({numMonths: 2});
		$('.date-pick').dpSetOffset(0, 115);
		$('.date-pick').dpSetPosition($.dpConst.POS_AUTO, $.dpConst.POS_AUTO);
		$('input#origen').jSuggest({url:cf.ajaxURL + "?locationType=airport&searchableOnly=false",type:"POST",data:"ajaxSearch", autoChange:false,id:"origen"});
		$('input#destino').jSuggest({url:cf.ajaxURL + "?locationType=city&searchableOnly=false",type:"POST",data:"ajaxSearch",autoChange:false,id:"destino"});
	}else if($("#viaje").val() == 'HV'){
		$("#habitaciones").bind("change", function(){
			while($("#ocupacion tr").size() > 2){
				$("#ocupacion tr:last").remove();
			}			
			for (var i = 2; i <= this.value; i++){
				$("#ocupacion").append("<tr><td></td><td><div align='left' class='habitaciones_text'>Hab. " + i + "</div></td><td><div align='center'><select id='noAdultos_"+(i-1)+"' class='adultos' name='noAdultos_"+(i-1)+"'>"+ aux.noAdt +"</select></div></td><td><div align='center'><select id='noChildren_"+(i-1)+"' class='adultos' name='noChildren_"+(i-1)+"'>"+ aux.noChd +"</select></div></td><td id='td_ageChd_"+ i +"'></td></tr>");
				$("#noChildren_"+(i-1)).bind("change", function(){
					updateChildren((parseInt(this.id.substring(this.id.indexOf('_')+1)) + 1),this.value);
				});
			}
		});
		$("#noChildren_0").bind("change",function(){
			updateChildren((parseInt(this.id.substring(this.id.indexOf('_')+1)) + 1),this.value);
		});
		$('#fechaInicio').datePicker({clickInput:true,createButton:false});
		$('#fechaFin').datePicker({clickInput:true,createButton:false});
		$('.date-pick').datePickerMultiMonth({numMonths: 2});
		$('.date-pick').dpSetOffset(0, 115);
		$('.date-pick').dpSetPosition($.dpConst.POS_AUTO, $.dpConst.POS_AUTO);
		$('input#destino').jSuggest({url:cf.ajaxURL + "?locationType=city&searchableOnly=false",type:"POST",data:"ajaxSearch",autoChange:false,id:"destino"});
	}else if($("#viaje").val() == 'HFV'){
		$("#habitaciones").bind("change", function(){
			while($("#ocupacion tr").size() > 2){
				$("#ocupacion tr:last").remove();
			}			
			for (var i = 2; i <= this.value; i++){
				$("#ocupacion").append("<tr><td></td><td><div align='left' class='habitaciones_text'>Hab. " + i + "</div></td><td><div align='center'><select id='noAdultos_"+(i-1)+"' class='adultos' name='noAdultos_"+(i-1)+"'>"+ aux.noAdt +"</select></div></td><td><div align='center'><select id='noChildren_"+(i-1)+"' class='adultos' name='noChildren_"+(i-1)+"'>"+ aux.noChd +"</select></div></td><td id='td_ageChd_"+ i +"'></td></tr>");
				$("#noChildren_"+(i-1)).bind("change", function(){
					updateChildren((parseInt(this.id.substring(this.id.indexOf('_')+1)) + 1),this.value);
				});
			}
		});
		$("#noChildren_0").bind("change",function(){
			updateChildren((parseInt(this.id.substring(this.id.indexOf('_')+1)) + 1),this.value);
		});
		$('#fechaInicio').datePicker({clickInput:true,createButton:false});
		$('#fechaFin').datePicker({clickInput:true,createButton:false});
		$('.date-pick').datePickerMultiMonth({numMonths: 2});
		$('.date-pick').dpSetOffset(0, 115);
		$('.date-pick').dpSetPosition($.dpConst.POS_AUTO, $.dpConst.POS_AUTO);
		$('input#origen').jSuggest({url:cf.ajaxURL + "?locationType=airport&searchableOnly=false",type:"POST",data:"ajaxSearch", autoChange:false,id:"origen"});
		$('input#destino').jSuggest({url:cf.ajaxURL + "?locationType=city&searchableOnly=false",type:"POST",data:"ajaxSearch",autoChange:false,id:"destino"});
	}
}

function updateChildren(index, num){
	var id = "td_ageChd_"+ index;
	$("#"+id).children().remove();
	num == '0'?$("#text_especific_edad").html(''):$("#text_especific_edad").html(cf.espec_edad);
	for (var i = 1; i <= num; i++){
		$("#"+id).append("<div class='edad_menores'>" + i + "<select id='childAge_"+ (index-1) +"_"+ i +"' name='childAge_"+ (index-1) +"_"+ i +"'>"+ aux.edades +"</select></div>");
	}
	$("#infantsNote").remove();
	if (num > 0)
		$("#avisos").append(aux.infantsNote);
}

function formValid(){
	valid = false;
	switch ($("#viaje").val()){
		case 'F': valid = validaHF();break;
		case 'H': valid = validaH();break;
		case 'HF': valid = validaHF();break;
		case 'E': valid = validaH();break;
		case 'V': valid = validaH();break;
		case 'HV': valid = validaH();break;
		case 'HFV': valid = validaHF();break;
	}
	$("#messageFieldMissing").remove();
	if (!valid){
		$("#avisos").append(aux.missingFields);
		$("#messageFieldMissing").hide().fadeIn(1000);
	}
	return valid;
}

function validaH(){
	var b = true;
	if ($("#destinoHidden").val().length < 3 ){
		b=false;
		$("#destino").addClass("required");
	}else{
		$("#destino").removeClass("required");
	}
	if ($("#fechaInicio").val().length != 10){
		b=false;
		$("#fechaInicio").addClass("required");
	}else{
		$("#fechaInicio").removeClass("required");
	}
	if ($("#fechaFin").val().length != 10){
		b=false;
		$("#fechaFin").addClass("required");
	}else{
		$("#fechaFin").removeClass("required");
	}
	return b;
}

function validaHF(){
	var b = true;
	if ($("#origenHidden").val().length < 3 ){
		b=false;
		$("#origen").addClass("required");
	}else{
		$("#origen").removeClass("required");
	}
	if ($("#destinoHidden").val().length < 3 ){
		b=false;
		$("#destino").addClass("required");
	}else{
		$("#destino").removeClass("required");
	}
	if ($("#fechaInicio").val().length != 10){
		b=false;
		$("#fechaInicio").addClass("required");
	}else{
		$("#fechaInicio").removeClass("required");
	}
	
	if ($("#fechaFin").val().length != 10){
		b=false;
		$("#fechaFin").addClass("required");
	}else{
		$("#fechaFin").removeClass("required");
	}
	return b;
}

//Config Form
cf = {
	defaultProduct:		'paquete',
	productsOffered:	'|H|HF|F|E|V|HV|',
	espec_edad:			'Especificar la edad de los menores',
	ajaxURL:			location.href.split("/")[0]+"//"+location.href.split("/")[2] + '/globogo/hierarchylocationsearch.do',
	cpUrl:				location.href.split("/")[0]+"//"+location.href.split("/")[2] + '/theme/html/site/home/',
	spinnerURL:			location.href.split("/")[0]+"//"+location.href.split("/")[2] + '/theme/images/common/spinner/loader.swf',
	serverURL:			location.href.split("/")[0]+"//"+location.href.split("/")[2]
};

aux={
	edades:"<option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='11'>11</option>",
	noAdt:"<option value='1'>1</option><option value='2'>2</option><option value='3'>3</option>",
	noChd:"<option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option>",
	fregresoHidden: "<td width='106'><input type='hidden' name='fechaFin' id='fechaFin'></td>",
	fregreso: "<td width='106'> Regreso<br><input type='text' class='date-pick dp-applied' name='fechaFin' id='fechaFin'></td>",
	missingFields:"<div id='messageFieldMissing'>-  Los campos marcados con * son requeridos</div>",
	infantsNote:"<div id='infantsNote'>-  Las tarifas aplicables a ni&ntilde;os menores a dos a&ntilde;os deber&aacute;n ser pagados en el aeropuerto de origen.</div>",
	h:"<div><span><input type='radio' name='viaje' value='hotel' id='hotel' /><label>Hotel</label></span></div>",
	f:"<div><span><input type='radio' name='viaje' value='vuelo'  id='vuelo'/><label>Avi&oacute;n</label></span></div>",
	e:"<div><span><input type='radio' name='viaje' value='actividad' id='actividad'/><label>Tours y Traslados</label></span></div>",
	v:"<div><span><input type='radio' name='viaje' value='vehiculo' id='vehiculo'/><label>Renta de auto</label></span></div>",
	hv:"<div><span><input type='radio' name='viaje' value='paqueteHV' id='paqueteHV'/><label>Hotel + Auto</label></span></div>",
	hfv:"<div><span><input type='radio' name='viaje' value='paqueteHFV' id='paqueteHFV'/><label>Hotel + Avion + Auto</label></span></div>",
	hf:"<div><span><input type='radio' name='viaje' value='paquete' id='paquete'/><label>Hotel + Avi&oacute;n</label></span></div>",
	avisos:"<div id='avisos'></div>",
	spinner:"<div style='background-color: #000000;height: 100%;opacity: 0.5;filter:alpha(opacity=60);position: fixed;top: 0;width: 100%;z-index: 399;'></div><div style='background-color: transparent;height: 100%;position: fixed;text-align: center;top: 0;width: 100%; z-index: 400;'><table width='100%' height='100%' ><tr><td align='center'><div class='container'><p><img style='margin-left: 50px;' src='"+ cf.serverURL +"/theme/html/site/home/images/logo_head_gg.png' alt='globoGO.com' width='194'/></p><p> <br /><object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0' width='140' height='10'><param name='movie' value='/theme/html/site/home/swf/loader.swf' /><param name='quality' value='high' /><embed src='/theme/html/site/home/swf/loader.swf' quality='high' pluginspage='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width='140' height='10'></embed></object><br /><br /></p><p><span id='inner_text'>Por favor espera un momento,<br /><strong>estamos buscando las mejores opciones para tu viaje</strong></span><strong>.</strong></p><p><span id='telefono'>Atenci&#243;n telef&#243;nica: 01 800 0456 26 46</span></p></div></td></tr></table></div>"
};

$.fn.jSuggest.defaults = {
	minchar: 3,
	opacity: 1.0,
	zindex: 20000,
	delay: 0,
	loadingImg: '/theme/html/site/ctp/images/ajax-loader.gif',
	loadingText: 'Cargando...',
	autoChange: true,
	url: "",
	type: "GET",
	data: ""
};

 function replaceEspecialChars(){
	$("#promoCode").each(function(){
		var txt = new Array();
		txt = this.value.split("");
		for (var i = 0; i < txt.length; i++){
			switch(txt[i].charCodeAt(0)){
				case 225: txt[i] = 'a';break;
				case 233: txt[i] = 'e';break;
				case 237: txt[i] = 'i';break;
				case 243: txt[i] = 'o';break;
				case 250: txt[i] = 'u';break;
				case 193: txt[i] = 'A';break;
				case 201: txt[i] = 'E';break;
				case 205: txt[i] = 'I';break;
				case 211: txt[i] = 'O';break;
				case 218: txt[i] = 'U';break;
				case 241: txt[i] = 'n';break;
				case 209: txt[i] = 'N';break;
			}
		}
		this.value = txt.join('');
	});
 }
