var infobox;
var boxoptions;
var marker;
var map;
var overlay;
var ancho_mapa;
var alto_mapa;
var posicion_final_x_infobox=-5;
var posicion_final_y_infobox=-5;
var id_casa_mapa;
var url_mapas;
var styles;
function declara_img_grupos(url_){
 styles = [[{
    url: url_+'images/grupo_3.png',
    height: 36,
    width: 36,
    opt_anchor: [16, 100],
    opt_textColor: '#000',
    opt_textSize: 10
  }, {
    url: url_+'images/grupo_2.png',
    height: 36,
    width: 36,
    opt_anchor: [24, 100],
    opt_textColor: '#000',
    opt_textSize: 11
  }, {
    url: url_+'images/grupo_1.png',
    height: 36,
    width: 36,
    opt_anchor: [32, 100],
    opt_textSize: 12
  }], ];
}

var lista_marcas = [];
var markerClusterer = null;

function crear_ojeto_dialog(nombre){
	$('body').append('<div id="'+nombre+'" style="display:none;"></div>');
}

function vtn_situacion(tipo)
{
	
	url_mapas='./';
	declara_img_grupos(url_mapas);
	formu='datos_map';
    parametros=$('#'+formu).formSerialize();
    parametros='accion=2&'+parametros;
	
	URL_=url_mapas+'lib/accion_mapas.php';
	$.post(URL_,parametros,function(data_posiciones,Status)
	{
		data_posiciones=eval(data_posiciones);
		inicia_mapa(data_posiciones,tipo);
		
	});
}

function vtn_situacion_portal(tipo)
{
	url_mapas='./modulos/mapas_2/';
	declara_img_grupos(url_mapas);

	formu='datos_map';
    parametros=$('#'+formu).formSerialize();
    parametros='accion=2&'+parametros;
	
	URL_=url_mapas+'lib/accion_mapas.php';
	$.post(URL_,parametros,function(data_posiciones,Status)
	{
		
		data_posiciones=eval(data_posiciones);
		inicia_mapa(data_posiciones,tipo);
		
	});
}



function inicia_mapa(data_posiciones,tipo) {
	var centro = new google.maps.LatLng(data_posiciones[0][0],data_posiciones[0][1]);
    var posicion_casa = new google.maps.LatLng(data_posiciones[0][0],data_posiciones[0][1]);
    var tipo_alojamiento=data_posiciones[0][2];
    var resto_casas=data_posiciones[1];
   
    asignamos_zoom=12;
    if (zoom_definido>0)
    	asignamos_zoom=zoom_definido;
    
    var myOptions = {
      zoom: asignamos_zoom,
      center: centro,
      navigationControl: true,
      navigationControlOptions: {style: google.maps.NavigationControlStyle.ZOOM_PAN },
      mapTypeControl: true,
      scrollwheel:false,
      mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
      mapTypeId: google.maps.MapTypeId.ROADMAP
    
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    
    google.maps.event.addListener(map, 'click', function() {
        	infobox.close(); 
    });
    
    google.maps.event.addListener(map, 'idle', function() {
    	infobox.close(); 
    	carga_casas_alrededor();
    	
     });

   

  //creamos el overlay para que nos de las posicones de las marcas en posiciones x y
    overlay = new google.maps.OverlayView();
    overlay.draw = function() {
    	if (!this.ready) {
    		        this.ready = true;
    		        google.maps.event.trigger(this, 'ready');
    		      }
    };
    overlay = new ProjectionHelperOverlay(map);
    /*******/

    marca_seleccionada(posicion_casa,map,tipo,tipo_alojamiento);
    
  }


function refreshMap() {
    if (markerClusterer != null) {
      markerClusterer.clearMarkers();
    }
    var zoom = 11;
    var size = 30;
    var style = 0;
    zoom = zoom == -1 ? null : zoom;
    size = size == -1 ? null : size;
    style = style == "-1" ? null: parseInt(style, 10);
    cuanto= lista_marcas.length;
    markerClusterer = new MarkerClusterer(map, lista_marcas, {maxZoom: zoom, gridSize: size, styles: styles[style]});
  }


function marca_seleccionada(posicion_casa,map,tipo,tipo_alojamiento){
	crear_infobox();

	tipo_icono=dame_icono_seleccionado(tipo_alojamiento);
	//
    if (zoom_definido==0){
    marker = new google.maps.Marker({
       position: posicion_casa, 
       map: map,
       //title:id_casa_mapa+'-',
       icon:tipo_icono[0],
       shadow:tipo_icono[1],
       zIndex:50000
    });
     
    if(tipo!=1){
	    google.maps.event.addListener(marker, 'click', function(event) {
	    	 posicion_info=calcula_posicion_infobox(map,this);
	    	 load_content(this,map);
	    	 boxoptions_reposicion = {
	    			 pixelOffset: new google.maps.Size(posicion_final_x_infobox,posicion_final_y_infobox),
	    			 pixelOffset: new google.maps.Size(posicion_final_x_infobox,posicion_final_y_infobox),
	    			 content:"<div>Cargando...<img src='../../images/loading_1.gif' /></div>"
			 
	    	 };
	    	 
	    	 infobox.setPosition(this.getPosition());

	    	 infobox.setOptions(boxoptions_reposicion );
	    	 infobox.open(map, this);
	   	});
    }
    }
    
}


/****controlamos la creacion del overlay con respecto al mapa******/
	function ProjectionHelperOverlay(map) {
		      this.setMap(map);
		    }
	
	ProjectionHelperOverlay.prototype = new google.maps.OverlayView();
	  ProjectionHelperOverlay.prototype.draw = function () {
	   if (!this.ready) {
	     this.ready = true;
	     google.maps.event.trigger(this, 'ready');
	    }
	  }
/*****************************************************************/  
  function crear_infobox(){
	    //declaramos las opciones de la ventana
	    boxoptions = {
				 content: null,
				 zIndex: 999,
				 disableAutoPan: true,
	             pixelOffset: new google.maps.Size(posicion_final_x_infobox,posicion_final_y_infobox),                      
	             MaxWidth :0,
	             content:"<div>Cargando...<img src='../../images/loading_1.gif' /></div>",
	             boxStyle: { 
	    			height: "160px",
	    			width: "371px",
	    			background:"#fff",
	    			border:"#797878 solid 1px"
				}

		}; 
	    infobox = new InfoBox(boxoptions);
	}
  
  
function load_content(marker,map){
	$nombre_id=marker.getTitle();
	$nombre_id=$nombre_id.split('|');
	
	if ($('#desde_ficha').val()!=1)
		parametros='accion=1&id_casa='+$nombre_id[1]+'&id='+$('#id').val()+'&id_of='+$('#id_of').val()+'&idioma='+$('#idioma').val()+'&desde_ficha'+'&desde_ficha='+$('#desde_ficha').val();
	else
		parametros='accion=4&id_casa='+$nombre_id[1]+'&id='+$('#id').val()+'&id_of='+$('#id_of').val()+'&idioma='+$('#idioma').val()+'&desde_ficha'+'&desde_ficha='+$('#desde_ficha').val();		
		
	  URL_=url_mapas+'lib/accion_mapas.php';
	  $.post(URL_,parametros,function(data,Status)
	  {
		  infobox.setContent(data);
		  asigna_calendarios_mapa_ficha($nombre_id[1]);
	  });
	}



function calcula_posicion_infobox(map,marker){
	var p = overlay.getProjection().fromLatLngToDivPixel(marker.getPosition());
    // mapa de google relatvo al contenedor
    var container = overlay.getPanes().mapPane.parentNode;
    var x = p.x + parseInt(container.style.left);
    var y = p.y + parseInt(container.style.top);

    posicion_final_y_infobox=-5;
	posicion_final_x_infobox=-5;

    cuadro_inferior=y+160;
	cuadro_derecha=x+370;
   
	if (cuadro_inferior>alto_mapa){
		 posicion_final_y_infobox=posicion_final_y_infobox-160;
	}

	if (cuadro_derecha>ancho_mapa){
		 posicion_final_x_infobox=posicion_final_x_infobox-371;
	}
}


function asigna_calendarios_mapa(id_casa){

	$('.select_calendario_mapa').datepicker({
			minDate: new Date(),
			dateFormat:'dd/mm/yy',
			firstDay:1,
			beforeShow: function() {
				$('#ui-datepicker-div').maxZIndex(); 
				}
		});
	
}


function asigna_calendarios_mapa_ficha(id_casa){

	$('#fecha_modulo_base_mapa_'+id_casa).datepicker({
			minDate: new Date(),
			dateFormat:'dd/mm/yy',
			firstDay:1,
			beforeShow: function() {
				$('#ui-datepicker-div').maxZIndex(); 
				}
		});
	
}


function dame_icono_seleccionado(tipo_alojamiento){
	tipo_icono_temp= new Array(2) ;
	
	tipo_icono_temp[0]=url_mapas+'images/casa_estandar_select.png';
	tipo_icono_temp[1]=url_mapas+'images/casa_estandar_sombra.png';
	
	switch(tipo_alojamiento)
	{
	    case 11:
	    case 13:
	    case 27:
	    case 28:
	    case 29:
	    case 30:
	    case 31:
	    case 33:
	    case 34:
	    case 35:
	    case 36:
			tipo_icono_temp[0]=url_mapas+'images/hotel_estandar_select.png';
			tipo_icono_temp[1]=url_mapas+'images/hotel_estandar_sombra.png';
			break;
	}
	
	return tipo_icono_temp;
}


function dame_icono(tipo_alojamiento){
	tipo_icono_temp= new Array(2) ;
	
	tipo_icono_temp[0]=url_mapas+'images/casa_estandar.png';
	tipo_icono_temp[1]=url_mapas+'images/casa_estandar_sombra.png';
	
	switch(tipo_alojamiento)
	{
	    case 11:
	    case 13:
	    case 27:
	    case 28:
	    case 29:
	    case 30:
	    case 31:
	    case 33:
	    case 34:
	    case 35:
	    case 36:
			tipo_icono_temp[0]=url_mapas+'images/hotel_estandar.png';
			tipo_icono_temp[1]=url_mapas+'images/hotel_estandar_sombra.png';
			break;
	}
	
	return tipo_icono_temp;
}


/*******cargamos casas alrededor*********/
function carga_casas_alrededor(){
	
	if($('#id').val()>0){
	limites=map.getBounds();
	lista_marcas_temp=[];

	
	//parametros='accion=3&limites='+limites+'&id_casa_sel='+id_casa_mapa;
	parametros='accion=3&limites='+limites+'&id_casa='+id_casa_mapa+'&id='+$('#id').val()+'&id_of='+$('#id_of').val()+'&idioma='+$('#idioma').val()+'&desde_ficha='+$('#desde_ficha').val();
//alert(parametros);
//casa accion=3&limites=((40.125859761585225, -5.983722180175787), (40.150138069756316, -5.908877819824225))&id_casa=26&id=75&id_of=&idioma=0&desde_ficha=1
//caba accion=3&limites=((40.125759743720906, -5.983722180175787), (40.15003808762191, -5.908877819824225))&id_casa=4595&id=75&id_of=&idioma=0&desde_ficha=1
	URL_=url_mapas+'lib/accion_mapas.php';
	$.post(URL_,parametros,function(data,Status)
	{
		var xml = data;
		
		var markers = xml.documentElement.getElementsByTagName("casa");
		  for (var i = 0; i < markers.length; i++) {
			  
		     id_casa = markers[i].getAttribute("id_casa");
		     nombre_casa = markers[i].getAttribute("nombre");
		    
		    if (id_casa_mapa!=id_casa){
			    var type = markers[i].getAttribute("tipo_alojamiento");
			    
			    var point = new google.maps.LatLng(
			        parseFloat(markers[i].getAttribute("lat")),
			        parseFloat(markers[i].getAttribute("lng")));
			    //var html = "<b>" + name + "</b> <br/>" + address;
			    var tipo_icono = dame_icono(type);
			    var marker_act = new google.maps.Marker({
			     title:nombre_casa+'|'+id_casa,
			     position: point,
			     icon: tipo_icono[0],
			     shadow: tipo_icono[1]
			    });
			    
			    google.maps.event.addListener(marker_act, 'click', function(event) {
			    	 posicion_info=calcula_posicion_infobox(map,this);
			    	 
			    	 
			    	 load_content(this,map);
			    	 boxoptions_reposicion = {
			    			 pixelOffset: new google.maps.Size(posicion_final_x_infobox,posicion_final_y_infobox),
			    			 content:"<div>Cargando...<img src='../../images/loading_1.gif' /></div>"
			    			 
			    	 };
			    	 infobox.setPosition(this.getPosition());
			    	 infobox.setOptions(boxoptions_reposicion );
			    	 infobox.open(map, this);
			   	});
				   lista_marcas_temp.push(marker_act);
		  }
		    
		  }
		  lista_marcas=lista_marcas_temp;
		  refreshMap();
	});
	}
}




function downloadUrl(url,callback) {
	 var request = window.ActiveXObject ?
	     new ActiveXObject('Microsoft.XMLHTTP') :
	     new XMLHttpRequest;

	 request.onreadystatechange = function() {
	   if (request.readyState == 4) {
	     request.onreadystatechange = doNothing;
	     callback(request.responseText, request.status);
	   }
	 };

	 request.open('GET', url, true);
	 request.send(null);
	}

function parseXml(str) {
    if (window.ActiveXObject) {
      var doc = new ActiveXObject('Microsoft.XMLDOM');
      doc.loadXML(str);
      return doc;
    } else if (window.DOMParser) {
      return (new DOMParser).parseFromString(str, 'text/xml');
    }
  }


  function doNothing() {}

/*************/

//**function para calcualar el zindex de el datepicker ***//

$.maxZIndex = $.fn.maxZIndex = function(opt) {
	/// <summary>
    /// Returns the max zOrder in the document (no parameter)
    /// Sets max zOrder by passing a non-zero number
    /// which gets added to the highest zOrder.
    /// </summary>    
    /// <param name="opt" type="object">
    /// inc: increment value, 
    /// group: selector for zIndex elements to find max for
    /// </param>
    /// <returns type="jQuery" />
	
    var def = { inc: 10, group: "*" };
    $.extend(def, opt);
    var zmax = 0;
    $(def.group).each(function() {
        var cur = parseInt($(this).css('z-index'));
        zmax = cur > zmax ? cur : zmax;
    });
    if (!this.jquery)
        return zmax;

    return this.each(function() {
        zmax += def.inc;
        $(this).css("z-index", zmax);
    });
}

/*****************funciones duplicadas del funciones buscador*********************/

function fb_IncluirLibreria(ruta_fichero)
{
	var se1 = document.createElement('script');
	se1.src = ruta_fichero;
	var head = document.getElementsByTagName('head')[0];
	head.appendChild(se1);
}

// ---- Incluye libreria del CoreSearch para funcionalidad expecial
fb_IncluirLibreria('../../../scr/lib/u_globales.js');
fb_IncluirLibreria('../../../scr/modulos/core_search/lib/ext.CoreSearch.js');

/**
* Abre un dialog con IFrame cargado el nuevo motor CoreSearch
* ajustando el alto del Dialog a la ventana
*
* @param string formulario => nombre del formulario de donde coje las variables, control especial si viene desde buscador por provincias
* @param int casa_pasada => id_casa
* @param string destino => A q fichero del CoreSearch tiene que ir, presupuesto, confirmacion, edicion etc..
*/

function envia_modulo_base_mapa(formulario,casa_pasada,destino)
{
	ruta_raiz='../scr/';
	// ---- Control si no viene relleno
	if(destino=='')
		destino='externo.php';
	else
		destino=(typeof destino == 'undefined') ? 'externo.php' : destino;

	aux_id_casa=casa_pasada;
	nombre_aloja='';
	viene_desde_provincia=(formulario=='form_modulo_base_mapa_'+casa_pasada);
	
	// ---- Solo si se llama desde el buscador de provincia
	if(viene_desde_provincia)
	{
		nombre_aloja=$('#nombre_aloja_'+casa_pasada).val();
		if (($('#form_modulo_base_mapa_'+aux_id_casa).val()=='')||($('#form_modulo_base_mapa_'+aux_id_casa).val()=='dd/mm/aaaa')){
			alert('Debe seleccionar una fecha de entrada');
			return false;
		}
		if ($('#noches_modulo_base_mapa_'+aux_id_casa).val()==''){
			alert('Debe seleccionar un número noches');
			return false;
		}
		parametros='id_casa='+casa_pasada;
		parametros+='&id_operador='+$('#modulo_mapa_id_operador_'+aux_id_casa).val();
		parametros+='&id_idioma='+$('#modulo_mapa_idioma_'+aux_id_casa).val();
	
		parametros+='&fecha_entrada='+$('#fecha_modulo_base_mapa_'+aux_id_casa).val();
		parametros+='&n_noches='+$('#noches_modulo_base_mapa_'+aux_id_casa).val();
	} else
	// ----- Para abrir modulo base desde cualquier otro buscador
	{
		nombre_aloja=$('#'+formulario+' .class_favor_nombre').val();
		//alert(nombre_aloja);
		parametros=$('#'+formulario).formSerialize();
		
		// ---- Si es externo.php quitamos la variable de precarga para q no se vaya a confirmacion
		if(destino=='externo.php')
			parametros=parametros.replace('elementosseleccionadospresupuesto_','no_elementosseleccionadospresupuesto_');
	}

	//alert(parametros);

	 nombre='capa_modulo_base_mapa'+aux_id_casa;
	 if ($('#' + nombre).length == 0) {
			crear_ojeto_dialog(nombre);
		}
	 $('#'+nombre).html(glb_getHTMLCargando_CS(ruta_raiz,aux_id_casa));
	 //alto_=$(window).height()-30;
	 alto_=200;
	 ancho_=920;
	 $('#'+nombre).dialog({
			bgiframe:true,
			minWidth:ancho_, 
			minHeight:alto_ ,
			title:'Disponibilidad de '+$('#nombre_mapa_aloja_'+aux_id_casa).val(),
			width:ancho_ ,
			height:alto_,
			modal:true,
			bgiframe:true,
			overlay:{opacity:1,background:"black"},
			resizable:false,
			close: function(ev, ui) { 
			
			//$(this).remove(); 
			 $('#'+nombre).dialog('destroy');
			
			}
		});
		
	$('.ui-dialog-content').css('padding','5px 0px');
	// alert(parametros);
	// ----- IMPORTANTISIMO SINO SALE ESCROLL
    $('#'+nombre).css('width','920px');

	// ---- Carga del IFrame
	
	alto_iframe=20;
	//alto_iframe=alto_-50;
	html_carga='';
	html_carga+=glb_getHTMLCargando_CS(ruta_raiz,aux_id_casa);
	html_carga+='<iframe id="if_modulo_base_'+aux_id_casa+'" name="if_modulo_base_'+aux_id_casa+'" width="920" height="'+alto_iframe+'" src="'+ruta_raiz+'modulos/core_search/'+destino+'?'+parametros+'" frameborder="0" class="autoHeight" scrolling="auto" style="background:transparent;" onLoad="cs_ReescalarAltosVentanaCoreSearch('+aux_id_casa+',\''+nombre+'\',\'if_modulo_base_'+aux_id_casa+'\');"></iframe>';
	$('#'+nombre).html(html_carga);	
	
	if(viene_desde_provincia)
	{
		 $('.fecha_comun').val($('#fecha_modulo_base_mapa_'+aux_id_casa).val());
		 $('.noches_comun').val($('#noches_modulo_base_mapa_'+aux_id_casa).val());
	
		 trans_fecha=$('#fecha_modulo_base_mapa_'+aux_id_casa).val().replace("/", "-");
		 trans_fecha=trans_fecha.replace("/", "-");
		 
		 asigna_fecha_buscador(trans_fecha,$('#noches_modulo_base_mapa_'+aux_id_casa).val());
		 $('#auto_n_noches').val($('#noches_modulo_base_mapa_'+aux_id_casa).val());
	}
}


function ver_cal_mapa(id_casa)
{
	nombre_aloja=$('#nombre_aloja_'+id_casa).val();
	
		
	// ---- Control de parámetros
	parametros=getParametros();
	
	parametros+='&id_casa='+id_casa;

	if(parametros=='')
		return false;
	parametros='opcion=1&quitar_cabecera=-1'+parametros;

	
	// ---- Creación de la capa si no existe
	cal_nombre_capa='capa_calendario_V9_'+id_casa;
	existe_capa_V9=true;
	if ($('#'+cal_nombre_capa).length == 0) 
	{
		//alert('No');
		//crear_ojeto_dialog(cal_nombre_capa);
		glb_CrearCapa(cal_nombre_capa);
		existe_capa_V9=false;
	}
	$('#'+cal_nombre_capa).html(getHTMLCargando());
	
	// ----- Configuración del Dialog
	if(true)
	{
		/*
		_alto=750;
		_ancho=850;
		*/
		_alto=$(window).height()-30;
		_ancho=950;
		$('#'+cal_nombre_capa).dialog(
		{
			modal: true,
			bgiframe:true,
			autoOpen:true,
			stack:true,
			closeOnEscape: true,
			title:'Disponibilidad de '+$('#nombre_mapa_aloja_'+id_casa).val(),
			width:_ancho,
			height:_alto,
			minWidth:_ancho,
			minHeight:_alto,
			close: function(ev, ui) 
			{
			// $(this).remove(); 
			$('#'+cal_nombre_capa).dialog('destroy');
			}
		});
	} else
	{
		// ---- Cargamos y abrimos si hace falta
		$('#'+cal_nombre_capa).html(getHTMLCargando());
		//$('#'+cal_nombre_capa).show('fast');
		$('#'+cal_nombre_capa).dialog("open");
		
	}
	
	// ---- Control del alto del IFrame del calendario
	alto_iframe=_alto-50;
	$('#'+cal_nombre_capa).html('<iframe id="if_calendario_V9" width="920" height="'+alto_iframe+'" name="if_calendario_V9" src="../scr/index_reserva.php?'+parametros+'" frameborder="0" class="autoHeight" scrolling="auto">Cargando....</iframe>');
}
/*************************************/



