/* Control del combo de la home v2 */

/* Parámetros globales */
	var bloques= ["Rep\u00fablica Dominicana", "Jamaica", "M\u00e9xico", "Espa\u00f1a"];	//Bloques
	if(navigator.appName == "Microsoft Internet Explorer"){				
		bloques = ["República Dominicana", "Jamaica", "México", "España"];
	}		
	//var coordenadas = [[18.9, -69.5], [18.448, -77.297], [20.95, -87.39], [34.33,-7.20]]	//Coordenadas	
	//var coordenadasResorts = new Array();
	//var nivelZoom = [7,7,5,4];	//Nivel de zoom de los mapas
	//var mapLoaded = [false,false,false,false];	
	var resortsDocName = new Array();  //Guardará los dDoc de los resorts que hay en el bloque activo.
	var resortsCode = new Array(); //Guardará lox xresort codes de los resorts que hay en el bloque activo.
	var resortActive = 0;		//Guardará el resort activo en el bloque. 	
	var blockActive = 0;		//Guardará el bloque activo		
	var control = ""; 			//Control de Ajax

/* Función que carga un resort en el marco de la visualización */
function loadResort(resortDocName){	
	$(".numbloque"+blockActive).html('<img src="/idc/recursos_web/images/content/loading.gif">');
	control="resorts";	
	$(".combo_ofertas_list > div").remove();		
	var url=servername+"idcplg?IdcService=WCM_PLACEHOLDER&dataFileDocName="+resortDocName+"&placeholderDefinitionDocName=PD_PREVIEWHOTELV2&IsJson=1";		
	//console.log("Cargando resort "+resortDocName+" con la url "+url);
	$.getJSON(url,function(data){					
		$(".numbloque"+blockActive).html(data.LocalData.placeholderContent).fadeIn(100);
		getOferta("home", "combo", resortsCode[resortActive]);
	});			
		
}

/* Función que carga en el Array resorts los docFiles de los resorts disponibles para el bloque activo  */	
function loadInfo(){		
	control="init";
	resortsDocName = [""];
	resortsCode = [""];
	resortActive = 0;
	var query = "dDocType <matches> `BP_Data_Resort` <AND> xpais <matches> `"+ bloques[blockActive] +"` <AND> xidioma <matches> `" + idioma + "`";
	var url= servername+"idcplg?IdcService=GET_SEARCH_RESULTS&QueryText="+query+"&IsJson=1";										
	//console.log(url);
	$.getJSON(url,function(data){
		var ixDocId = getIndexCampo( data, "dDocName" );
		var ixDocTitle = getIndexCampo( data, "dDocTitle" );
		if( data.ResultSets.SearchResults.rows.length > 0 )
		{
			$.each(data.ResultSets.SearchResults.rows, function(key, val){																
				resortsDocName[key]=val[ixDocId];
				resortsCode[key]=val[ixDocTitle];						
				//coordenadasResorts[key]=val[88];				
				/*if(key==0){														
					loadResort(resortsDocName[resortActive]);
					getOferta("home", "combo", resortsCode[resortActive]);
				}*/
			});
			cargaHotelCorrespondiente(bloques[blockActive], resortsDocName, resortsCode);
			/*if(!mapLoaded[blockActive]){						
				try{
					initialize("null",coordenadas[blockActive][0],coordenadas[blockActive][1],"resortsCode[resortActive]",nivelZoom[blockActive],"map_canvas"+blockActive);
				}catch(err){}
				mapLoaded[blockActive]=true;
			}*/
		}
		else
		{
			query = "dDocType <matches> `BP_Data_Resort` <AND> xpais <matches> `"+ utf8Enc( bloques[blockActive] ) +"` <AND> xidioma <matches> `" + idioma + "`";
			url= servername+"idcplg?IdcService=GET_SEARCH_RESULTS&QueryText="+query+"&IsJson=1";
			$.getJSON(url,function(data2){
				var ixDocId = getIndexCampo( data2, "dDocName" );
				var ixDocTitle = getIndexCampo( data2, "dDocTitle" );
				$.each(data2.ResultSets.SearchResults.rows, function(key, val){																
					resortsDocName[key]=val[ixDocId];
					resortsCode[key]=val[ixDocTitle];
				});					
				cargaHotelCorrespondiente(bloques[blockActive], resortsDocName, resortsCode);
			});
		}	
	});	
}

function getIndex(resortDocName){
	var c=0;
	for(i in resortsDocName){
		//console.log(i);
		//console.log(resortsDocName[i]);
		if(resortDocName == resortsDocName[i]){
			//console.log("Retornamos "+i);
			return i;
		}
	}
}	

function cargaHotelCorrespondiente( paisActivo, listaHoteles, listaCodigosHotel )
{
	//alert("paisActivo: " + paisActivo + "\nlistaHoteles:\n" + JSON.stringify(listaHoteles) + "\nlistaCodigosHotel:\n" + JSON.stringify(listaCodigosHotel) );
	var defaultHotel = "";
	
	if( paisActivo.indexOf( "xico" ) != -1 )
	{
		defaultHotel = "Coba";
	}
	if( paisActivo.indexOf( "Dominicana" ) != -1 )
	{
		defaultHotel = "Bavaro";
	}
	if( paisActivo.indexOf( "Espa" ) != -1 )
	{
		defaultHotel = "Tenerife";
	}
	if( paisActivo.indexOf( "Jamaica" ) != -1 )
	{
		defaultHotel = "Jamaica";
	}

	for( var i = 0; i < listaCodigosHotel.length; i++ )
	{
		if( listaCodigosHotel[i] == defaultHotel )
		{
			resortActive = i;
			loadResort( listaHoteles[i] );
			//alert("listaCodigosHotel[" + i + "]: " + listaCodigosHotel[i] + ", defaultHotel: " + defaultHotel + ", listaHoteles[" + i + "]: " + listaHoteles[i] );
		}
	}
}

function utf8Enc(string)
{
	string = string.replace(/\r\n/g,"\n");
	var utftext = "";
	for (var n = 0; n < string.length; n++)
	{
		var c = string.charCodeAt(n);
		if (c < 128)
		{
			utftext += String.fromCharCode(c);
		}
		else if((c > 127) && (c < 2048))
		{
			utftext += String.fromCharCode((c >> 6) | 192);
			utftext += String.fromCharCode((c & 63) | 128);
		}
		else
		{
			utftext += String.fromCharCode((c >> 12) | 224);
			utftext += String.fromCharCode(((c >> 6) & 63) | 128);
			utftext += String.fromCharCode((c & 63) | 128);
		}
	}
	return utftext;
}

$(document).ready(function(){	
	/* Movimiento de cambio de resort a izquierda o derecha */
	$(".combo_control").click(function(){				
		if (this.id.indexOf("left") != -1 ){			
			resortActive--;
			if(resortActive<0){resortActive = resortsDocName.length-1;}
		}
		if (this.id.indexOf("right") != -1 ){			
			resortActive = (resortActive+1) % resortsDocName.length;			
		}				
		loadResort(resortsDocName[resortActive]);	
	});
	
	/* Clicks en ls pestañas provocan la carga de los hoteles de ese bloque en el array resorts */
	$("#tabsglobal > li ").click(function(){		
		blockActive=$("#tabsglobal > li ").index(this);
		loadInfo();		
	});
	
	/* Clicks en los li provocan la carga */
	$(".resortsList > li.res ").click(function(){						
		resortActive = getIndex( $(this).attr("data") );
		loadResort(resortsDocName[resortActive]); 
	});
	
		
	/* En función del mercado, activamos la pestaña que corresponda  */
	/* Rep.Dominicana: 1, Jamaica: 2, Mexico: 3, España: 4*/
	switch(mercado){
		case "WBP_ES":
			$("#tabsglobal > li:nth-child(4)").click();					
			break;
		case "USA":
			$("#tabsglobal > li:nth-child(1)").click();
			break;
		case "CA":
			$("#tabsglobal > li:nth-child(1)").click();
			break;
		case "MX":
			$("#tabsglobal > li:nth-child(3)").click();
			break;
		case "PT":
			$("#tabsglobal > li:nth-child(1)").click();
			break;
		case "UK":
			$("#tabsglobal > li:nth-child(4)").click();
			break;
		case "EU":
			if( idioma == 7 )//"FR"
			{
				$("#tabsglobal > li:nth-child(1)").click();
			}
			else if( idioma == 6 )//"IT"
			{
				$("#tabsglobal > li:nth-child(3)").click();
			}
			else if( idioma == 5 )//"DE"
			{
				$("#tabsglobal > li:nth-child(1)").click();
			}
			else
			{
				$("#tabsglobal > li:nth-child(1)").click();
			}
			break;
		case "AR":
			$("#tabsglobal > li:nth-child(1)").click();
			break;
		case "CO":
			$("#tabsglobal > li:nth-child(1)").click();
			break;
		case "CL":
			$("#tabsglobal > li:nth-child(1)").click();
			break;
		case "DO":
			$("#tabsglobal > li:nth-child(1)").click();
			break;
		case "OTHERS":
			$("#tabsglobal > li:nth-child(1)").click();
			break;
		default: 
			$("#tabsglobal > li:first").click();	
	}
	getOferta("home", "mejores_ofertas", "");
});	

function getIndexCampo( data, nombreCampo )
{
	for( var i = 0; i < data.ResultSets.SearchResults.fields.length; ++i )
	{
		if( nombreCampo == data.ResultSets.SearchResults.fields[i].name )
		{
			return i;
		}
	}
	return -1;
}
