var bizk_map = new bizk_map();

function gebi(element_id){
	return document.getElementById(element_id);
}

function bizk_map(){
	var c_lat = 43.30; // Latitud del centro del mapa
	var c_lng = -2.93; // Longitud del centro del mapa
	var zoom_level = 10; // Nivel de zoom del centro
	var total_promociones = 0; // Total promociones
	this.base='http://www.bizkaieder.com';
	this.selected_listing_id=null; // Promoción seleccionada
	this.is_map_ready=null; // Variable que indica si el mapa está listo
	this.listings={}; // Lista que engloba todas las promociones
	this.markers={};
	
	
	// Función de Inicialización
	this.init=function(){
		//this.tooltip=gebi('main_map_tooltip');
		this.assign_icons_to_markers();
		this.create_map();
		this.centre_map_on_listings();
		//this.map.savePosition();
		//this.initial_map_type_name=this.map.getCurrentMapType().getName();
		this.draw_markers();
		//this.draw_clusters();
		//this.add_all_map_types();
		//this.switch_to_map_type('london_tube');
		//this.selected_map_type=lmap.map.getCurrentMapType().getName();
		this.add_map_controls();
		this.is_map_ready=1;
		//document.forms.search.elements.q.focus();
	};
	
	// Crear el Mapa
	this.create_map=function(){
		var map=new GMap2(gebi("map")); //mapa en tag "map"
		this.map=map;
	};
	
	// Añadir los controles al Mapa
	this.add_map_controls=function(){
		this.map.addControl(new GLargeMapControl()); //Tenia puesto Small en vez de Large
		this.map.addControl(new GMapTypeControl());
	};
	
	// Centrar el Mapa
	this.centre_map_on_listings=function(){
		var c_lat = this.c_lat;
		var c_lng = this.c_lng;
		var zoom_level = this.zoom_level;
		this.map.setCenter(new GLatLng(c_lat,c_lng),zoom_level);
	};
	
	// Seleccionar una Promoción
	this.select_listing=function(id){
		if(!this.is_map_ready){
			return;
		}
		
		if(this.selected_listing_id){
			this.deselect_listing();
		}
		/*MM_swapImage('logo_img', '', this.listings[id].logo, 1);
		escribeEnTag('indicaciones', '<p class="negrita">'+this.listings[id].name+'</p><p class="texto">'+this.listings[id].localizacion+'</p>');*/
		hideDiv('seleccione_promocion');
		showDiv('promocion_'+id);
		this.selected_listing_id=id;
	};

	// Deseleccionar una Promoción
	this.deselect_listing=function(){
		var id=this.selected_listing_id;
		this.selected_listing_id=null;
		if(id){
			/*
			MM_swapImgRestore();
			escribeEnTag('indicaciones', '<p class="negrita">Seleccione una promoci&oacute;n</p><p class="texto">Arrastre el mapa para moverse por &eacute;l o utilice las flechas del mapa. Haga click en [+] para acercarlo o en [-] para alejarlo.</p>');*/
			hideDiv('promocion_'+id);
		}
	};
	
	// Ir a la Promoción
	this.go_to_promo=function(id){
		window.location.href = "/es/promociones/ver-promocion/index.php?id="+id+"&criterio=ALL";	
	};
	
	// Crear un Marker
	this.create_marker=function(item){
		var marker=new GMarker(new GLatLng(item.lat,item.lng),item.icon);
		//marker.tooltip=item.tooltip;
		marker.id=item.id;
		var me=this;
		GEvent.addListener(marker,"mouseover",function(){
			me.select_listing(item.id);
		});
		
		GEvent.addListener(marker,"click",function(){
			me.go_to_promo(item.group_id);
		});
		
		this.markers[item.id]=marker;
		this.map.addOverlay(marker);
	};
	
	// Dibujar todos los Markers definidos
	this.draw_markers=function(){
		for(id in this.listings){
			bizk_map.create_marker(this.listings[id]);
		}
	};

	// Añadir un elemento a la lista
	this.add_listing=function(item){
		this.listings[item.id]=item;
	};


	// Asignar iconos a los Markers
	this.assign_icons_to_markers=function(){
		for(id in this.listings){
			l=this.listings[id];
			var icon=this.get_icon(l.promotora+'_pin');
			l.icon=icon;
		}
	};
	
	// Listado de Iconos Bizkaieder
	this.icons_data={
		"default_pin":{
			image:'',
			select:'',
			transparent:'',
			imageMap:[],
			shadow:'',
			iconSize:new GSize(100,100),
			shadowSize:new GSize(100,100),
			iconAnchor:new GPoint(50,50),
			infoWindowAnchor:new GPoint(50,30)
		},
		"bizkaieder_pin":{
			image:this.base+'/imgs/marker_biz.png',
			shadow:this.base+'/imgs/pixel.gif',
			iconSize:new GSize(25, 39),
			shadowSize:new GSize(1, 1),
			iconAnchor:new GPoint(6, 20),
			infoWindowAnchor:new GPoint(5, 1)
		},
		"bizkaieder_venta_pin":{
			image:this.base+'/imgs/marker_biz_venta.png',
			shadow:this.base+'/imgs/pixel.gif',
			iconSize:new GSize(25, 39),
			shadowSize:new GSize(1, 1),
			iconAnchor:new GPoint(6, 20),
			infoWindowAnchor:new GPoint(5, 1)
		},
		"bizkaieder_proximas_pin":{
			image:this.base+'/imgs/marker_biz_proximas.png',
			shadow:this.base+'/imgs/pixel.gif',
			iconSize:new GSize(25, 39),
			shadowSize:new GSize(1, 1),
			iconAnchor:new GPoint(6, 20),
			infoWindowAnchor:new GPoint(5, 1)
		},
		"normal_pin":{
			based_on:"default_pin"
		}
	};
	
	// Crear el icono
	this.get_icon=function(icon_name){
		var icon_data=this.icons_data[icon_name];
		var default_data=this.icons_data[icon_data.based_on]||icon_data;
		var icon=new GIcon();
		for(var field in default_data){
			icon[field]=icon_data[field]||default_data[field];
		}
		return icon;
	};
}