var names = [];
var docIds = [];
var markers = [];
var imgURL = "http://www.google.com/mapfiles/marker";
var map;
var removeMarkers = true;  
var mapLoaded = false; 

function setStyle(ele, style, value) {
    document.getElementById(ele).style[style] = value;
}

function changeDimension(addToWidth, addToHeight, whichDiv){
    var newWidth = parseInt(addToWidth);
    setStyle(whichDiv, "width", newWidth + "px");
    var newHeight = parseInt(addToHeight);
    setStyle(whichDiv, "height", newHeight + "px");
}

function getLoaded(){
	return loaded;
}

function show(id, zoom){
	var el = document.getElementById(id);
	var state = readCookie('showMap');
	if(state == null || state == 'true'){
		changeDimension(270, 250, id);
		createCookie('showMap','true');
		setStyle(id, 'visibility', 'visible');
		el.style.display = 'block';
		if (zoom == -1) {
		    	loadMap();
	    }else{
			loadMap(zoom);
		}
		mapLoaded = true;
		setVisibilityRefMap('visible');  
	}
	else{
		changeDimension(0, 0, id);
		el.style.visibility = 'hidden';
		el.style.display = 'none';	
		setVisibilityRefMap('hidden'); 	
	}
}

function show_hide(id, zoom){
	var el = document.getElementById(id);
	var state = readCookie('showMap');
	var width = document.getElementById(id).style['width'];
	if(width == '0px'){
		changeDimension(270, 250, id);
		createCookie('showMap', 'true');
		el.style.visibility = 'visible' ;
		el.style.display = 'block';
		if(mapLoaded == false){
			if (zoom == -1) {
			    	loadMap();
		    }else{
				loadMap(zoom);
			}
			mapLoaded = true;
		}
		setVisibilityRefMap('visible'); 
	}
	else{
		changeDimension(0, 0, id);
		createCookie('showMap', 'false');
		el.style.visibility = 'hidden';
		el.style.display = 'none';
		setVisibilityRefMap('hidden'); 
	}
}

function setVisibilityRefMap(value){
	var as = document.getElementById('mainContainer').getElementsByTagName('a');
	for (var i = 0; i < as.length; i++) {
		if (as[i].id == 'refMap'){
			as[i].style['visibility'] = value;
      	}
	}	
} 
 	
function loadMap(zoom) {
	var latlng = new GLatLng(18.383557490539573, -66.5739013671875);
    if (!zoom) {
    	zoom = 8;
    }	else if (markers.length > 0) {
    	latlng = markers[0].getPoint();
    }
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
	 
	    map.setCenter(latlng, zoom); 

	    //map.setCenter(markers[0].getPoint(), zoom);
	        
	    map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());

       	map.enableScrollWheelZoom();

		GEvent.addListener(map, "zoomend", function(overlay, latlng) {
			if (removeMarkers) {
				clearAllMarkers();
	        	//Get center and make new query distance search
    	    	distanceSearch( map.getCenter().lat() + "," + 
        						 map.getCenter().lng() );
			}
        });
        GEvent.addListener(map, "dragend", function(overlay, latlng) {
			clearAllMarkers();
        	//Get center and make new query distance search
        	distanceSearch( map.getCenter().lat() + "," + 
        						 map.getCenter().lng() );
        });
        showAllMarkers();
	}
}

function loadMapProfile(zoom, merkerMessage) {
	var latlng = new GLatLng(18.383557490539573, -66.5739013671875);
    if (!zoom) {
    	zoom = 8;
    }	else if (markers.length > 0) {
    	latlng = markers[0].getPoint();
    }
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("mapProfile"));
	 
	    map.setCenter(latlng, zoom); 
        map.openInfoWindow(map.getCenter(),
                merkerMessage);

	    //map.setCenter(markers[0].getPoint(), zoom);
	        
	    map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());

		map.enableScrollWheelZoom();
       	map.disableDoubleClickZoom();


        GEvent.addListener(map, "dblclick", function(overlay, latlng) {
			getDirections(latlng.lat() + ', ' + latlng.lng());
			getAddress(latlng);
       });

        showAllMarkers();
	}
}

function getAddress(latlng) {  
	if (latlng != null) {    
		var geocoder = new GClientGeocoder();
		geocoder.getLocations(latlng, showAddress);  
	}
}

function showAddress(response) {  
	if (!response || response.Status.code != 200) {    
		alert("Status Code:" + response.Status.code);  
	} else {    
		var place = response.Placemark[0];    
		
		document.getElementById("fromAddress").value = place.address;  
	}
}


function clearAllMarkers(){
	names.length = 0;
	docIds.length = 0;
	markers.length = 0;
	map.clearOverlays();
}


function showAllMarkers(){
    for (var i = 0; i < markers.length; i++) {
    	map.addOverlay(markers[i]);
	}
	setVisibilityRefMap('visible'); 
}


// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
var baseIcon = new GIcon();
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

function addMarker(docId, name, lat, long) {

	var index = markers.length;
	
	var letter = String.fromCharCode("A".charCodeAt(0) + index);
	
	var latlong = new GLatLng(lat, long);
	
	docIds[index] = docId;
  	names[index] = name;

	// Create a lettered icon for this point using our icon class
	var letteredIcon = new GIcon(baseIcon);
	//letteredIcon.image = imgURL + letter + ".png";
	letteredIcon.image = imgURL + ".png";
	
	// Set up our GMarkerOptions object
	var markerOptions = { icon:letteredIcon };

	markers[index] = new GMarker(latlong, markerOptions);
	
	GEvent.addListener(
		markers[index], "click", function()	{
				map.setCenter(markers[index].getPoint(), map.getZoom());
				markers[index].openInfoWindowHtml(
						names[index] +
						'<br/><a href="javascript:viewProfile(\'detalle\',\'' + 
						docIds[index] + '\',\'MAP_INFO_CLICK\');">Informacion Adicional</a>');
			}
		);
}

function addMarkerProfile(lat, long) {

	var index = markers.length;

	var latlong = new GLatLng(lat, long);
	
  	names[index] = name;

	// Create a lettered icon for this point using our icon class
	var letteredIcon = new GIcon(baseIcon);
	//letteredIcon.image = imgURL + letter + ".png";
	letteredIcon.image = imgURL + ".png";
	
	// Set up our GMarkerOptions object
	var markerOptions = { icon:letteredIcon };

	markers[index] = new GMarker(latlong, markerOptions);
}

function setMapCenter(index){
	removeMarkers = false;
	map.setCenter(markers[index].getPoint(), map.getZoom());
	
}

function setCenter(index){
	removeMarkers = false;
	map.setCenter(markers[index].getPoint(), 16);
	markers[index].openInfoWindowHtml(
			names[index] +
			'<br/><a href="javascript:viewProfile(\'detalle\',\'' + 
			docIds[index] + '\',\'MAP_INFO_CLICK\');">Informacion Adicional</a>');
	removeMarkers = true;
}

function setCenterDetails(index, information){
	removeMarkers = false;
	map.setCenter(markers[index].getPoint(), 16);
	markers[index].openInfoWindowHtml(
			information);
	removeMarkers = true;
}

function showBox(idH, idS) {
	document.getElementById(idS).style.display = 'block';
	document.getElementById(idH).style.display = 'none';
//	if (box.style.display == 'none') {
//		box.style.display = 'inline';
//	} else {
//		box.style.display = 'none';
//	}
}

function showMapResult(id){
	var latlng = new GLatLng(18.383557490539573, -66.5739013671875);
    zoom = 9;
    if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
	 
	    map.setCenter(latlng, zoom); 
        map.openInfoWindow(map.getCenter(),
                merkerMessage);

	    map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());

		map.enableScrollWheelZoom();
       	map.disableDoubleClickZoom();


        GEvent.addListener(map, "dblclick", function(overlay, latlng) {
			getDirections(latlng.lat() + ', ' + latlng.lng());
			getAddress(latlng);
       });

        showAllMarkers();
	}
	
}