/* Sistema de Pestanyas */
be_tdb_tiendascercanas__gb_map = false;

function be_tdb_tiendascercanas__views() {
	be_tdb_tiendascercanas__gu_list = document.getElementById("results-mode-list");
	be_tdb_tiendascercanas__gu_map  = document.getElementById("results-mode-map");
	be_tdb_tiendascercanas__gu_list_link = document.getElementById("link-list");
	be_tdb_tiendascercanas__gu_list_map  = document.getElementById("link-map");
}

function be_tdb_tiendascercanas__toogle(be_tdb_tiendascercanas__vb_map) {
	if (be_tdb_tiendascercanas__vb_map) {
		if (!be_tdb_tiendascercanas__gb_map) {
			be_tdb_tiendascercanas__gu_list.style.display = "none";
			be_tdb_tiendascercanas__gu_map.style.display = "block";
			if ( !tiendas_cercanas_map ) tiendas_cercanas_initialize();
			be_tdb_tiendascercanas__gb_map = true;
			be_tdb_tiendascercanas__gu_list_link.className = "view-mode-link";
			be_tdb_tiendascercanas__gu_list_map.className = "view-mode-unlink";
		}
	} else if (be_tdb_tiendascercanas__gb_map) {
		be_tdb_tiendascercanas__gu_map.style.display = "none";
		be_tdb_tiendascercanas__gu_list.style.display = "block";
		be_tdb_tiendascercanas__gb_map = false;
		be_tdb_tiendascercanas__gu_list_link.className = "view-mode-unlink";
		be_tdb_tiendascercanas__gu_list_map.className = "view-mode-link";
	}
}


be_tdb_puntos_venta__gb_map = false;

function be_tdb_pventa__views() {
	be_tdb_puntos_venta__gu_list = document.getElementById("results-mode-list");
	be_tdb_puntos_venta__gu_map  = document.getElementById("results-mode-map");
	be_tdb_puntos_venta__gu_list_link = document.getElementById("link-list");
	be_tdb_puntos_venta__gu_list_map  = document.getElementById("link-map");
}

function be_tdb_pventa__toogle(be_tdb_puntos_venta__vb_map) {
	if (be_tdb_puntos_venta__vb_map) {
		if (!be_tdb_puntos_venta__gb_map) {
			be_tdb_puntos_venta__gu_list.style.display = "none";
			be_tdb_puntos_venta__gu_map.style.display = "block";
			if ( !puntos_venta_map ) puntos_venta_initialize();
			be_tdb_puntos_venta__gb_map = true;
			be_tdb_puntos_venta__gu_list_link.className = "view-mode-link";
			be_tdb_puntos_venta__gu_list_map.className = "view-mode-unlink";
		}
	} else if (be_tdb_puntos_venta__gb_map) {
		be_tdb_puntos_venta__gu_map.style.display = "none";
		be_tdb_puntos_venta__gu_list.style.display = "block";
		be_tdb_puntos_venta__gb_map = false;
		be_tdb_puntos_venta__gu_list_link.className = "view-mode-unlink";
		be_tdb_puntos_venta__gu_list_map.className = "view-mode-link";
	}
}



/* Inicializamos el MAPA */
var tiendas_cercanas_map = false;
var tiendas_cercanas_map_loaded = false;

function tiendas_cercanas_initialize() {
	if ( tiendas_cercanas__load ) {
		if ( GBrowserIsCompatible() && !tiendas_cercanas_map_loaded ) {
			// Cargamos el Mapa
			tiendas_cercanas_map = new GMap2(document.getElementById("tiendas_cercanas_map_id"));
			tiendas_cercanas_map.setCenter(new GLatLng(tiendas_cercanas__latitude,tiendas_cercanas__longitude), 5);
			tiendas_cercanas_map.addControl(new GSmallMapControl());
			tiendas_cercanas_map.addControl(new GMapTypeControl());
			
			tiendas_cercanas_map.enableScrollWheelZoom();
			
			GDownloadUrl(tiendas_cercanas__feed, tiendas_cercanas_downloadxml);
			
			tiendas_cercanas_map_loaded = true;
		}
	}
}

function tiendas_cercanas_downloadxml(data, responseCode) {
	
	if ( responseCode == 200 ) {
		
		var tiendas_cercanas_icon = new GIcon();
		tiendas_cercanas_icon.image = tiendas_cercanas__pluginurl + "images/small-marker.png";
		tiendas_cercanas_icon.iconSize = new GSize(10, 17);
		tiendas_cercanas_icon.iconAnchor = new GPoint(5, 17);
		tiendas_cercanas_icon.shadow = tiendas_cercanas__pluginurl + "images/small-marker-shadow.png";
		
		var tiendas_cercanas_bounds = new GLatLngBounds();
		
		data = data.replace(/geo:lat/gi, 'begeolat');
		data = data.replace(/geo:long/gi, 'begeolong');
		data = data.replace(/georss:point/gi, 'begeorsspoint');
		
		var tiendas_cercanas_counter = 0;
		
		var xml = GXml.parse(data);
		var items = xml.documentElement.getElementsByTagName("item");
		for (var i = 0; i < items.length; i++) {
			var title = items[i].getElementsByTagName("title")[0].firstChild.nodeValue;
			var link = items[i].getElementsByTagName("link")[0].firstChild.nodeValue;
			
			var begeorsspoint = items[i].getElementsByTagName("begeorsspoint")[0];
			var begeolat = items[i].getElementsByTagName("begeolat")[0];
			var begeolong = items[i].getElementsByTagName("begeolong")[0];
			
			if ( typeof(begeorsspoint) != 'undefined' ) {
				var points = begeorsspoint.firstChild.nodeValue;
				points = points.split(" ");
				
				var lat = parseFloat(points[0]);
				var long = parseFloat(points[1]);
			}else if ( typeof(begeolat) != 'undefined' && typeof(begeolong) != 'undefined'  ) {
				var lat = begeolat.firstChild.nodeValue;
				var long = begeolong.firstChild.nodeValue;
			}else{
				var lat = long = false;
			}
			
			if ( lat != false && long != false ) {
				var tooltip;
				var marker = new GMarker(new GLatLng(lat, long), tiendas_cercanas_icon);
				
				if ( title ) {
					marker.title = title;
					tooltip = new tooltipTDB(marker, title);
				}
				
				if (link) {
					marker.link = link;
					GEvent.addListener(marker, "click", function() {
						window.location.href = this.link;
					});
				}
				
				if ( tooltip ) {
					marker.tooltip = tooltip;
					GEvent.addListener(marker, "mouseover", function() {
						if ( !(this.isInfoWindowOpen) && !(this.isHidden()) )
							this.tooltip.show();
					});
					GEvent.addListener(marker, "mouseout", function() {
						this.tooltip.hide();
					});
				}
				
				tiendas_cercanas_map.addOverlay(marker);
				tiendas_cercanas_bounds.extend(new GLatLng(lat, long));
				
				tiendas_cercanas_counter++;
			}
		}
		
		if ( tiendas_cercanas_counter > 0 ) {
			tiendas_cercanas_map.setCenter(tiendas_cercanas_bounds.getCenter());
			tiendas_cercanas_map.setZoom(tiendas_cercanas_map.getBoundsZoomLevel(tiendas_cercanas_bounds));
		}
	}
	
}


/* Inicializamos el MAPA */
var puntos_venta_map = false;
var puntos_venta_map_loaded = false;

function puntos_venta_initialize() {
	if ( puntos_venta__load ) {
		if ( GBrowserIsCompatible() && !puntos_venta_map_loaded ) {
			// Cargamos el Mapa
			puntos_venta_map = new GMap2(document.getElementById("puntos_venta_map_id"));
			puntos_venta_map.setCenter(new GLatLng(40.497092,-3.779297), 5);
			puntos_venta_map.addControl(new GSmallMapControl());
			puntos_venta_map.addControl(new GMapTypeControl());
			
			puntos_venta_map.enableScrollWheelZoom();
			
			show_loading_marker(puntos_venta_map, '40.497092', '-3.779297', puntos_venta__pluginurl);
			
			GDownloadUrl(puntos_venta__feed, puntos_venta_downloadxml);
			
			puntos_venta_map_loaded = true;
		}
	}
}			

function puntos_venta_downloadxml(data, responseCode) {
	
	if ( responseCode == 200 ) {
		
		var puntos_venta_icon = new GIcon();
		puntos_venta_icon.image = puntos_venta__pluginurl + "images/small-marker.png";
		puntos_venta_icon.iconSize = new GSize(10, 17);
		puntos_venta_icon.iconAnchor = new GPoint(5, 17);
		puntos_venta_icon.shadow = puntos_venta__pluginurl + "images/small-marker-shadow.png";
		
		var puntos_venta_bounds = new GLatLngBounds();
		
		data = data.replace(/geo:lat/gi, 'begeolat');
		data = data.replace(/geo:long/gi, 'begeolong');
		data = data.replace(/georss:point/gi, 'begeorsspoint');
		
		var puntos_venta_counter = 0;
		
		var xml = GXml.parse(data);
		var items = xml.documentElement.getElementsByTagName("item");
		for (var i = 0; i < items.length; i++) {
			var title = items[i].getElementsByTagName("title")[0].firstChild.nodeValue;
			var link = items[i].getElementsByTagName("link")[0].firstChild.nodeValue;
			
			var begeorsspoint = items[i].getElementsByTagName("begeorsspoint")[0];
			var begeolat = items[i].getElementsByTagName("begeolat")[0];
			var begeolong = items[i].getElementsByTagName("begeolong")[0];
			
			if ( typeof(begeorsspoint) != 'undefined' ) {
				var points = begeorsspoint.firstChild.nodeValue;
				points = points.split(" ");
				
				var lat = parseFloat(points[0]);
				var long = parseFloat(points[1]);
			}else if ( typeof(begeolat) != 'undefined' && typeof(begeolong) != 'undefined'  ) {
				var lat = begeolat.firstChild.nodeValue;
				var long = begeolong.firstChild.nodeValue;
			}else{
				var lat = long = false;
			}
			
			if ( lat != false && long != false ) {
				var tooltip;
				var marker = new GMarker(new GLatLng(lat, long), puntos_venta_icon);
				
				if ( title ) {
					marker.title = title;
					tooltip = new tooltipTDB(marker, title);
				}
				
				if (link) {
					marker.link = link;
					GEvent.addListener(marker, "click", function() {
						window.location.href = this.link;
					});
				}
				
				if ( tooltip ) {
					marker.tooltip = tooltip;
					GEvent.addListener(marker, "mouseover", function() {
						if ( !(this.isInfoWindowOpen) && !(this.isHidden()) )
							this.tooltip.show();
					});
					GEvent.addListener(marker, "mouseout", function() {
						this.tooltip.hide();
					});
				}
				
				puntos_venta_map.addOverlay(marker);
				puntos_venta_bounds.extend(new GLatLng(lat, long));
				
				puntos_venta_counter++;
			}
		}
		
		hide_loading_marker(puntos_venta_map);
		
		if ( puntos_venta_counter > 0 ) {
			puntos_venta_map.setCenter(puntos_venta_bounds.getCenter());
			puntos_venta_map.setZoom(puntos_venta_map.getBoundsZoomLevel(puntos_venta_bounds));
		}
	}
	
}

var loading_marker = false;
var loading_polygon = false;
function show_loading_marker(tdb_tmp_map, tdb_tmp_latitude, tdb_tmp_longitude, tdb_tmp_plugin_url) {
	
	var bounds = tdb_tmp_map.getBounds();
	var northEast = bounds.getNorthEast();
	var southWest = bounds.getSouthWest();
	
	loading_polygon = new GPolygon([
		new GLatLng(northEast.lat(), northEast.lng()),
		new GLatLng(southWest.lat(), northEast.lng()),
		new GLatLng(southWest.lat(), southWest.lng()),
		new GLatLng(northEast.lat(), southWest.lng()),	
		new GLatLng(northEast.lat(), northEast.lng())
	], "#000000", 0, 0.5, "#000000", 0.2);
	tdb_tmp_map.addOverlay(loading_polygon);
	
	
	var loading_marker_icon = new GIcon();
	loading_marker_icon.image = tdb_tmp_plugin_url + "images/ajax-loader.gif";
	loading_marker_icon.iconSize = new GSize(220, 19);
	loading_marker_icon.iconAnchor = new GPoint(110, 9);
	loading_marker_icon.shadow = false;
	
	loading_marker = new GMarker(new GLatLng(tdb_tmp_latitude, tdb_tmp_longitude), loading_marker_icon);
	
	tdb_tmp_map.addOverlay(loading_marker);
}

function hide_loading_marker(tdb_tmp_map) {
	if ( loading_marker != false ) {
		tdb_tmp_map.removeOverlay(loading_marker);
		tdb_tmp_map.removeOverlay(loading_polygon);
	}
}



/* Sistema de Tooltip */

var tdb_tooltip_mouse_x = 0;
var tdb_tooltip_mouse_y = 0;

/*
* tooltipTDB Constructor
* @param {GMarker} marker
* @param {String} text
*/
function tooltipTDB(marker, text) {
	this.marker_ = marker;
	this.text_ = text;
}

/* tooltipTDB: Show Method */	
tooltipTDB.prototype.show = function() {
	jQuery('#tdb_tooltip').text(this.text_);
	jQuery('#tdb_tooltip').show();
		
	var left = tdb_tooltip_mouse_x - (jQuery('#tdb_tooltip').width() / 3);
	var top = tdb_tooltip_mouse_y - 25 - jQuery('#tdb_tooltip').height();
	
	if (left < 5) left = 5;
	if (top < 5) top = 5;
	
	jQuery('#tdb_tooltip').css('left', left);
	jQuery('#tdb_tooltip').css('top', top);
}

/* tooltipTDB: Hide Method */
tooltipTDB.prototype.hide = function() {
	jQuery('#tdb_tooltip').text("");
	jQuery('#tdb_tooltip').hide();
}

/* jQuery tooltipTDB Init. */
jQuery(document).ready(function() {
	
	t = "";
	jQuery("body").append('<p id="tdb_tooltip">' + t + '</p>');
	jQuery('#tdb_tooltip').hide();
	
	jQuery('#tdb_tooltip').css('z-index', '1000');
	jQuery('#tdb_tooltip').css('position', 'absolute');
	jQuery('#tdb_tooltip').css('border', '1px solid #ccc');
	jQuery('#tdb_tooltip').css('padding', '3px 5px');
	jQuery('#tdb_tooltip').css('background-color', '#fff');
	jQuery('#tdb_tooltip').css('display', 'none');
	jQuery('#tdb_tooltip').css('font-family', 'Arial, sans-serif');
	jQuery('#tdb_tooltip').css('font-size', '11px');
	
	jQuery().mousemove(function(e) {
		tdb_tooltip_mouse_x = e.pageX;
		tdb_tooltip_mouse_y = e.pageY;
		
		var left = 5;
		var top = 5;
		
		if (jQuery('#tdb_tooltip').css('display') != 'none') {
			var left = e.pageX - (jQuery('#tdb_tooltip').width() / 3);
			var top = e.pageY - 25 - jQuery('#tdb_tooltip').height();
			
			if (left < 5) left = 5;
			if (top < 5) top = 5;
		}
		jQuery('#tdb_tooltip').css('left', left);
		jQuery('#tdb_tooltip').css('top', top);
	});
});