if (GBrowserIsCompatible()) {

// Grab XSL File
logging__ = false;
xsltdebug = false;
xpathdebug = false;
var xmlHttp = GXmlHttp.create();
//xmlHttp.open("GET", "http://www.biodieselspain.com/minipage.xsl", false);
//xmlHttp.send(null);

// Defining Global Variables
//Map Globals
var map;
var overviewShow = 1;
var infoWindows = [];
var xmlCats = [];
var infoWindowsHtml = [];
var markers = [];
var infos = [];
var i = 0;
var centerId;
var centerLat = 40.416747;
var centerLng = -3.703594;
var catDisplay = [];
catDisplay[0] = 99;
catDisplay[1] = 100;
catDisplay[2] = 110;
catDisplay[3] = 119;
catDisplay[4] = 115;
// Sidebar Globals
var sidebar_htmls = [];
var current_sidebar;
var sidebar_place = 0;
var sidebar_num = 6;
var sidebar_exists = 0;
var prevplace;
var nextplace;
var category = [];
var prevcat;
var safariCompat = 0;
// Tooltip Globals
var tooltipShow = 1;
var tooltip;


 function initTooltip() {
    tooltip = document.createElement("div");
	map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
    tooltip.style.visibility="hidden";
 }
 function tooltipMouseover(i) {
  if(tooltipShow != 0 ) showTooltip(markers[i])
 }
 function tooltipMouseout() {
  if(tooltipShow != 0 ) tooltip.style.visibility="hidden";
 }
 
 function infoHtml(info) {
    var name = GXml.value(info.getElementsByTagName("name")[0]);
    var address = GXml.value(info.getElementsByTagName("address")[0]);
    var city = GXml.value(info.getElementsByTagName("city")[0]);
    var state = GXml.value(info.getElementsByTagName("state")[0]);
    var zipcode = GXml.value(info.getElementsByTagName("zipcode")[0]);
	var detalles = GXml.value(info.getElementsByTagName("misc")[0]);	
	var html = '<div class="infoWindow"><b>' + name + '</b><br />' + address + '<br />' + city + ', ' + state + ' ' + zipcode + '<br /><br /><a href=plantas_detalle.php?id=' + detalles + '>Ver detalles</a></div>';
    return html;
 }


 function createMarker(info, i) {
    var localName = GXml.value(info.getElementsByTagName("name")[0]);
    var localId = info.getAttribute("id");
    var localCatid = info.getAttribute("category");
    var localLat = GXml.value(info.getElementsByTagName("lat")[0]);
    var localLng = GXml.value(info.getElementsByTagName("lng")[0]);
    sidebar_htmls.push('<li class="sidebar_marker"><a href="javascript:myclick('+i+',' + localLng + ',' + localLat +')" onmouseover="tooltipMouseover('+i+')" onmouseout="tooltipMouseout()">'+ localName + '</a></li>');	
    var point = new GLatLng(parseFloat(localLat),parseFloat(localLng));
	var catIcon = parseInt(getCatIcon(localCatid));
	baseIcon[11] = new GIcon(smallIcon);
	/*chapuza por el tema de los iconos, ya lo mirarmos mas despacio*/
	if (catIcon==3){		
		baseIcon[11].image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
		var marker = new GMarker(point, baseIcon[11]);
	}else{
		baseIcon[11].image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		var marker = new GMarker(point, baseIcon[11]);
	}

    //var marker = new GMarker(point, baseIcon[catIcon]);
	/*
			  var icon = new GIcon(baseIcon);
			  //icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";			  
			  if (tipos[index]=="Biodiesel"){
			  	icon.image = "http://www.biodieselspain.com/pics/biodiesel.png";	
			  }else{
			  	icon.image = "http://www.biodieselspain.com/pics/etanol.png";
			  }			  	
			  		  
			  var marker = new GMarker(point, icon);*/
    
    if(tooltipShow != 0 ) {
        marker.tooltip = '<div class="tooltip">'+localName+'</div>';
        GEvent.addListener(marker,"mouseover", function() {
            showTooltip(markers[i] );
        });        
        GEvent.addListener(marker,"mouseout", function() {
            tooltip.style.visibility="hidden"
        });
    }
    GEvent.addListener(marker, "click", function() {
       //if(safariCompat == 1) {
            infoWindowsHtml[i] = infoHtml(info);
       /*} else {
            infoWindowsHtml[i] = xsltProcess(info, xmlHttp.responseXML);
       }*/
	   //alert(infoWindowsHtml[i]); 
	   //window.location='http://www.google.com';
       marker.openInfoWindowHtml(infoWindowsHtml[i]);	   
    });
    map.addOverlay(marker);
    return marker;
 }

 function showTooltip(marker) {
   	tooltip.innerHTML = marker.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	var height=tooltip.clientHeight;
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + (1.2*width), offset.y - point.y -anchor.y)); 
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
    // Code From PdMarkers www.pixeldevelopment.com/pdmarker.asp
    var b = 75;
	var c = b / 100;
	if (tooltip)
	{
		if(typeof(tooltip.style.filter)=='string'){tooltip.style.filter='alpha(opacity:'+b+')';}
		if(typeof(tooltip.style.KHTMLOpacity)=='string'){tooltip.style.KHTMLOpacity=c;}
		if(typeof(tooltip.style.MozOpacity)=='string'){tooltip.style.MozOpacity=c;}
		if(typeof(tooltip.style.opacity)=='string'){tooltip.style.opacity=c;}
	}
	// end of PdMarkers code 
 }
 
 function checkCat(catLookup,carray) {
    for (i=0;i < carray.length;i++) {
        if(carray[i] == catLookup) {
            return true;
            break;
        }
    }
    return false;
 }
 
 function getCatIcon(singleCat) {
    for(var i=0; i < xmlCats.length; i++) {
        var catId = xmlCats[i].getAttribute("id");
        if(catId == singleCat) {
            if(xmlCats[i].getAttribute("gicon")) {
                var gicon = xmlCats[i].getAttribute("gicon");
                return gicon;
                break;
            }
        }
    }
    return 0;
 }
 //  ======== A function to adjust the positioning of the overview ========
 function positionOverview(x,y) {
     var omap=document.getElementById("map_overview");
     var place=document.getElementById("overview_map_holder");
     omap.style.position = "relative";
     omap.style.left = "0px";
     omap.style.top = "0px";	 
     place.appendChild(omap);        
        
     // == restyling ==
     omap.firstChild.style.border = "1px solid gray";

     omap.firstChild.firstChild.style.left="4px";
     omap.firstChild.firstChild.style.top="4px";
     omap.firstChild.firstChild.style.width="190px";
     omap.firstChild.firstChild.style.height="114px";
 }
      
 function initMap() {

	i = 0;
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GMapTypeControl()); 
    map.addControl(new GLargeMapControl()); 
	 
	map.setCenter(new GLatLng(centerLat,centerLng),6,G_NORMAL_MAP);

	//category[0] = 'Sitios de Interés'; 
	centerId = 6;
	category[100] = 'BioDiesel'; 
	category[110] = 'BioEtanol'; 
	//category[42] = 'BioDiesel/BioEtanol'; 
	//category[51] = 'Centros de Estudio'; 
    // Read the data from google_maps.xml
    // A PHP File sets the correct MIME Type
    // and updates the file periodically
      var request = GXmlHttp.create();
      request.open("GET", "http://www.biodieselspain.com/plantas.xml", true);
      request.onreadystatechange = function() {
      if (request.readyState == 4) {
          var xmlDoc = request.responseXML;
          // obtain the array of markers and loop through it
          infoWindows = xmlDoc.documentElement.getElementsByTagName("info");
          xmlCats = xmlDoc.documentElement.getElementsByTagName("category");
            for (var j = 0; j < infoWindows.length; j++) {
             // Grab variables about the type of marker.
             var pid = infoWindows[j].getAttribute("id");
             var ptype = infoWindows[j].getAttribute("type");
             var pcat = infoWindows[j].getAttribute("category");
             if(checkCat(pcat,catDisplay)) {
              // Checking to see if the info is for a polyline or a marker
              if( ptype == 2 ) {
                // Code for a polyline
                // get any line attributes
                var misc = infoWindows[j].getElementsByTagName("misc");
                var color = misc[0].getAttribute("polycolor");
                var width  = parseFloat(misc[0].getAttribute("polywidth"));
                // read each point on that line
                var points = infoWindows[j].getElementsByTagName("point");
                var pts = [];
                for (var i = 0; i < points.length; i++) {
                    pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")),
                                         parseFloat(points[i].getAttribute("lng")));
                }
                map.addOverlay(new GPolyline(pts,color,width));
              } else {
                // Code for a marker
                markers[j] = createMarker(infoWindows[j],j);
                // This opens the info window if automatic open is set on.
               /* if(centerId == pid) {

                   // if(safariCompat == 1) {
                        var html = infoHtml(infoWindows[j]);
                    //} else {
                        //var html = xsltProcess(infoWindows[j], xmlHttp.responseXML);
						//var html = infoHtml(infoWindows[j]);						
                   // }
                    markers[j].openInfoWindowHtml(html);
                }*/
				
              }
             }
            }
        if(sidebar_exists == 1) {
            showItems(sidebar_num,sidebar_place);
        }
      }
    }
    request.send(null);
    if(tooltipShow != 0 ) initTooltip();
    if(overviewShow == 1) {
        //  ======== Add a map overview ==========
        map.addControl(new GOverviewMapControl(new GSize(160,114)));
        //setTimeout("positionOverview(520,580)",1);
    }
} 
} else {
      alert("Sorry, your browser is not compatible with Google Maps.");
}