var oMap;
var oMarkerManager;
var bounds;
var center;
var mapType;
var idMap;
var GMenableControls;
var tipIconoBase;
var sgElementMap;
var iconoHotel;

function initVariablesMapa() {

    if (bounds == undefined) {

        bounds = new GLatLngBounds;

	    
}

	if(center==undefined){
		center = new GLatLng(0, 0);
}

	if(mapType==undefined){
		mapType = G_NORMAL_MAP;
	}
	if(idMap==undefined){
		idMap='';
	}
	if(GMenableControls==undefined){
		GMenableControls=true;
}
	if(iconoHotel==undefined){
		iconoHotel=new GIcon(G_DEFAULT_ICON);
	}
	if(iconoBase==undefined && tipIconoBase!=undefined){
		iconoBase = eval(tipIconoBase);
	}
}

function initMapaTrackeado(elementMap, idioma, key, callback, pagina) {
    try {
        pageTracker._trackPageview(pagina);
    } catch (err) {
		//alert("falla");
    }
    initMapaAsync(elementMap, idioma, key, callback);
}

function initMapaAsync(elementMap, idioma, key, callback) {

	sgElementMap = elementMap;
	if(callback=="undefined"){
		callback = "initMapa";
}
	$.getScript("http://maps.google.com/maps?file=api&v=2&key=" + key + "&hl=" + idioma + "&async=2&callback=" + callback);
	//$.getScript("http://maps.google.com/maps/api/js?sensor=false&language=" + idioma + "&async=2&callback=" + callback);
}

function loadMarkerManager() {
    var urlMkMng = dominioCDN + "/comun/include/markermanager_packed.js";
	//var urlMkMng = "http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js";
    $.getScript(urlMkMng, function() {
        initMapa();
    });
}

//inicializa el mapa
function initMapaZoom(elementMap, zoom) {
 
	if(elementMap==undefined){
		elementMap = sgElementMap;
	}
	
	initVariablesMapa();
	
	idMap = elementMap;
	if (GBrowserIsCompatible() && document.getElementById(elementMap) != undefined) {

		ponerEspera(idMap);
		
		oMap = new GMap2(document.getElementById(elementMap));
		if (GMenableControls) {
			/*oMap.addControl(new GLargeMapControl());
			oMap.addControl(new GMapTypeControl());*/
			var customUI = oMap.getDefaultUI();
			// Remove MapType.G_HYBRID_MAP
			customUI.maptypes.hybrid = false;
			oMap.setUI(customUI);        }

        oMap.setMapType(mapType);
        oMap.setCenter(center, zoom);
       
		oMarkerManager = new MarkerManager(oMap);
		loadMarkers();
		
    }
}

//zoom default
function initMapa(elementMap) {

    initMapaZoom(elementMap, 2);
    
}

//inicializa los iconos base
function iconoSombrilla() {

	var iconoHotel = new GIcon(G_DEFAULT_ICON);
	iconoHotel.image = 'http://www.logitravel.com/logitravel/images/iconosMaps/icoSombrilla.png';
	iconoHotel.shadow = 'http://www.logitravel.com/logitravel/images/iconosMaps/icoSombrilla_sombra.png';
	iconoHotel.iconSize = new GSize(29, 33);
	iconoHotel.shadowSize  = new GSize(41, 33);
	return iconoHotel;
}

function iconoBalneario() {

    var iconoBalneario = new GIcon(G_DEFAULT_ICON);
    iconoBalneario.image = 'http://logitravel.toolfactory.net/logitravel/images/iconosMaps/icoBalneario.png';
    iconoBalneario.shadow = 'http://logitravel.toolfactory.net/logitravel/images/iconosMaps/icoBalneario_sombra.png';
    iconoBalneario.iconSize = new GSize(29, 33);
    iconoBalneario.shadowSize = new GSize(41, 33);
    iconoBalneario.iconAnchor = new GPoint(6, 20);
    iconoBalneario.infoWindowAnchor = new GPoint(5, 1);
    return iconoBalneario;
}

//inicializa los iconos base
function iconoHotel()
{
	var iconoHotel = new GIcon(G_DEFAULT_ICON);
	iconoHotel.image = 'http://www.logitravel.com/logitravel/images/iconosMaps/icoHotel.png';
	iconoHotel.shadow = 'http://www.logitravel.com/logitravel/images/iconosMaps/icoHotel_sombra.png';
	iconoHotel.iconSize = new GSize(18, 21);
	iconoHotel.shadowSize  = new GSize(21, 27);
	return iconoHotel;
}

function iconoHotelDestacado()
{
	var iconoHotelDestacado = new GIcon(G_DEFAULT_ICON);
	iconoHotelDestacado.image = 'http://www.logitravel.com/logitravel/images/iconosMaps/icoHotel_oferta.png';
	iconoHotelDestacado.shadow = 'http://www.logitravel.com/logitravel/images/iconosMaps/icoHotel_sombra.png';
	iconoHotelDestacado.iconSize = new GSize(22, 27);
	iconoHotelDestacado.shadowSize  = new GSize(38, 27);
	return iconoHotelDestacado;
}

var exml,iconoBase,windowWith,sKmlMarkers;
windowWith = 400;
function loadMarkers()
{	
	//Ponemos la espera en el div adecuado
	ponerEspera(idMap);
		
	oMarkerManager.clearMarkers();
	aMarkers = [];
	var urlMk = (urlXmlMarkers==null)?(null):(urlXmlMarkers + parsPetMapa);
	exml = new EGeoXml("exml", oMap, urlMk, {iwwidth:windowWith,addmarker:addMarker,baseicon:iconoBase});
	
	GEvent.addListener(exml, "parsed", function() {
		//Eliminamos la espera
		quitarEspera(idMap);

		oMarkerManager.addMarkers(aMarkers, 0, 17);
		oMarkerManager.refresh();
	});
	
	if(urlMk!=null)
		exml.parse();
	else
		exml.parseString(sKmlMarkers);
}

var aMarkers = [];
var aIndicesMarkers = [];
var esHotel = false;
var esPaquete=false; 
var esPersonalizado=false;
var funcPerso="";
function addMarker(objMarker, title, description, iconImage, number)
{
	aMarkers.push(objMarker);
	if(esHotel){
		aIndicesMarkers[title] = number;
		GEvent.addListener(objMarker, "click", function(){
			abrirVentanaInfoHotel(objMarker, title);
		});
	}
	else if(esPersonalizado){
		aIndicesMarkers[title] = number;
		GEvent.addListener(objMarker, "click", function(){
		    eval(funcPerso +"(objMarker,title)"); 
		});
	}
}

function addListenerHotel(oMarker, codigo)
{
	GEvent.addListener(oMarker, "click", function(){
		abrirVentanaInfo(oMarker, codigo);
	});
}

function autoResize()
{
	oMap.setCenter(bounds.getCenter());
	oMap.setZoom(oMap.getBoundsZoomLevel(bounds));
}

var idTout,markerT,codT;
function initVentanaInfo(marker, cod, esOferta, myParsOferta)
{
	abrirVentanaInfoHotel(marker, cod);
}

var idToutC;
function clearVentanaInfo()
{
	if(idTout!=undefined)
		window.clearTimeout(idTout);
	idToutC = window.setTimeout("oMap.closeInfoWindow()", 5000);
	oferta = false;
}

var parsHot='';
var esPaquete = 0; 

function abrirVentanaInfoHotel(marker, cod)
{ 
	var tabs = new Array();
	var tabFicha, tabFotos, tabOpiniones;
	$.ajax({
	   type: "POST",
	   url: "/navegacion/agregadorSH/getInfoWindowHotel.aspx",
	   data: "hotel=" + cod + "&" + parsHot +"&esPaq="+ esPaquete,
	   beforeSend: function(XMLHttpRequest){
			abrirVentanaMarker(marker, "<div class=\"fichaHotelBasico\" style=\"text-align:center\"><img src=\"/logitravel/images/ico_espera.gif\" /></div>");
	   }, 
	   error: function(XMLHttpRequest, textStatus, errorThrown){
			oMap.closeInfoWindow();
	   },
	   success: function(msg){
		 tabFicha = new GInfoWindowTab("Ficha", msg.split("|")[0]);
		 tabFotos = new GInfoWindowTab("Fotos", msg.split("|")[1]);
		 tabOpiniones = new GInfoWindowTab("Opiniones", msg.split("2")[0]);
		 tabs[0] = tabFicha;
		 tabs[1] = tabFotos;
		 tabs[2] = tabOpiniones;
		 var obj = document.createElement('div');
		  obj.id = "inMarker_" + cod;
		  obj.style.display = "none";
		  obj.innerHTML = msg.split("|")[0];
		  document.body.appendChild(obj);
		 abrirVentanaMarker(marker, msg.split("|")[0]);
		}
	 });
}

function abrirVentanaMarker(marker, msg)
{
	oMap.closeInfoWindow();
	if(marker==undefined)
		oMap.openInfoWindowHtml(oMap.getCenter(),  msg);
	 else
		marker.openInfoWindowHtml(msg);
}

function getMarker(cod)
{
	return aMarkers[aIndicesMarkers[cod]];
}

function cl(ix)
{
	GEvent.trigger(aMarkers[ix], "click");
}

function clo()
{
	GEvent.trigger(oMap, "click");
}

function ponerEspera(el)
{
	//definir en cada contexto
}

function quitarEspera(el)
{
	//definir en cada contexto
}
