// adding this bit to integrate eLabels into paradigm
//    
// These common configuration values are shared across all maps. Reset values in company specific maps if required.
	// reset on a pre project bases in the xxx.js file
var mapHorizontal = 900;
var mapInitialZoom = 12;
var mapVertical = 700;
var _pad = '&nbsp;&nbsp;';
var map;
var id;
var mapCenterLat = 0;
var mapCenterLng = 0;


var mIdx = 0;  // arrays latitude, longitude, descrptionProject, symbol and company are indexed by mIdx
var projectCenter ;
var latitude = new Array();
var longitude = new Array();
var descriptionProject = new Array();
var companyName = new Array();
var companySymbol = new Array();
var mapLabel = new Array();  // upper case, no exchange extension
var companyProductionStatus = new Array(); // set to * if company has current metal production
var projectName = new Array();
var projectLabel = new Array(); // the label for this project on maps
var goldMORE = new Array();
var silverMORE = new Array();
var production = new Array();
var companyRL = new Array();
var prjNm = new Array();
var zoomMap = new Array(); // the project level map
var zoomOutMap = new Array();  // typically the country level map
var projectMap = new Array();  // a link to the project map 
var projectDetails = new Array();  // a link to the company details page
var projectMarkers = new Array();
var descriptionProjectCountryLevel = new Array();  // Store a complete info window for project at the country or company level map
var descriptionProjectProjectLevel = new Array();  // Store a complete info window for project in a map zoomed to the project level
var markers;

// country specific maps -- note the format for country level map a tags

var argentinaMap = 
'<a href="http://www.goldminerpulse.com/maps/argentinaMap.php"><em> Zoom Out </em></a></span>';

var australiaMap = 
'<a href="http://www.goldminerpulse.com/maps/australiaMap.php"><em> Zoom Out </em></a></span>';

var boliviaMap = 
'<a href="http://www.goldminerpulse.com/maps/boliviaMap.php"><em> Zoom Out </em></a></span>';


var canadaMap = 
'<a href="http://www.goldminerpulse.com/maps/canadaMap.php"><em> Zoom Out </em></a></span>';


var chileMap = 
'<a href="http://www.goldminerpulse.com/maps/chileMap.php"><em> Zoom Out </em></a></span>';

var chinaMap = 
'<a href="http://www.goldminerpulse.com/maps/chinaMap.php"><em> Zoom Out </em></a></span>';

var congoMap = 
'<a href="http://www.goldminerpulse.com/maps/congoMap.php"><em> Zoom Out </em></a></span>';

var dominicanRepublicMap = 
'<a href="http://www.goldminerpulse.com/maps/dominicanRepublicMap.php"><em> Zoom Out </em></a></span>';

var elSalvadorMap = 
'<a href="http://www.goldminerpulse.com/maps/elSalvadorMap.php"><em> Zoom Out </em></a></span>';


var finlandMap = 
'<a href="http://www.goldminerpulse.com/maps/finlandMap.php"><em> Zoom Out </em></a></span>';

var greeceMap = 
'<a href="http://www.goldminerpulse.com/maps/greeceMap.php"><em> Zoom Out </em></a></span>';

var guatemalaMap = 
'<a href="http://www.goldminerpulse.com/maps/guatemalaMap.php"><em> Zoom Out </em></a></span>';

var hondurasMap = 
'<a href="http://www.goldminerpulse.com/maps/hondurasMap.php"><em> Zoom Out </em></a></span>';

var mexicoMap = 
'<a href="http://www.goldminerpulse.com/maps/mexicoMap.php"><em> Zoom Out </em></a></span>';

var naMap = 
'<a href="http://www.goldminerpulse.com/maps/naMap.php"><em> Zoom Out </em></a></span>';

var namibiaMap = 
'<a href="http://www.goldminerpulse.com/maps/namibiaMap.php"><em> Zoom Out </em></a></span>';

var nicaraguaMap = 
'<a href="http://www.goldminerpulse.com/maps/nicaraguaMap.php"><em> Zoom Out </em></a></span>';

var peruMap = 
'<a href="http://www.goldminerpulse.com/maps/peruMap.php"><em> Zoom Out </em></a></span>';

var philippinesMap = 
'<a href="http://www.goldminerpulse.com/maps/philippinesMap.php"><em> Zoom Out </em></a></span>';

var portugalMap = 
'<a href="http://www.goldminerpulse.com/maps/portugalMap.php"><em> Zoom Out </em></a></span>';

var russiaMap = 
'<a href="http://www.goldminerpulse.com/maps/russiaMap.php"><em> Zoom Out </em></a></span>';

var turkeyMap = 
'<a href="http://www.goldminerpulse.com/maps/turkeyMap.php"><em> Zoom Out </em></a></span>';


var usaMap = 
'<a href="http://www.goldminerpulse.com/maps/unitedStatesMap.php"><em> Zoom Out </em></a></span>';


var helpMap = 
'<a href="http://www.goldminerpulse.com/faq.php#mapDialog"><em> faq </em></a>';

	
function addMarker( latitude, longitude, description, mapLabel ) {
	var aProjectMarker = new GMarker( new GLatLng(latitude, longitude) );
	var aProjectCenter = new GLatLng(latitude, longitude);
	var aProjectLabel = new ELabel(aProjectCenter, mapLabel, "eL1");
	GEvent.addListener(aProjectMarker, 'click',
				function() {
				aProjectMarker.openInfoWindowHtml(description);
				}
		);
	map.addOverlay(aProjectMarker);
	map.addOverlay(aProjectLabel);
}

function readXMLCenter( ) {
	var id = 0;
	if( markers[id].getAttribute("zoom") ) {
		mapInitialZoom = markers[id].getAttribute("zoom");
			// lat and lng are always present
		mapCenterLat = markers[id].getAttribute("lat");
		mapCenterLng = markers[id].getAttribute("lng");
		if( markers[id].getAttribute("vert") ) {
			mapVertical = markers[id].getAttribute("vert");
		}
		if( markers[id].getAttribute("hor") ) {
			mapHorizontal = markers[id].getAttribute("hor");
		}
	}

}


	// try read each xml element and store if value exists
function readXML( id ) {
	longitude[id] = markers[id].getAttribute("lng");
	latitude[id] = markers[id].getAttribute("lat");
	 
	//if( markers[id].getAttribute("zoMap") ) {
	//	zoomOutMap[id] = markers[id].getAttribute("zoMap");
	//}
	
	if( markers[id].getAttribute("company") ) {
		 companyName[id] = markers[id].getAttribute("company");
	}

 	if( markers[id].getAttribute("sym") ) {
		 companySymbol[id] = markers[id].getAttribute("sym");
	}
	if( markers[id].getAttribute("mLbl") ) {
		 mapLabel[id] = markers[id].getAttribute("mLbl");
	}
	if( markers[id].getAttribute("prjct") ) {
		 projectName[id] = markers[id].getAttribute("prjct");
	}
	if( markers[id].getAttribute("auM") ) {
		 goldMORE[id] = markers[id].getAttribute("auM");
	}
	if( markers[id].getAttribute("agM") ) {
		 silverMORE[id] = markers[id].getAttribute("agM");
	}
	if( markers[id].getAttribute("rLvrg") ) {
		 companyRL[id] = markers[id].getAttribute("rLvrg");
	}
	if( markers[id].getAttribute("pStat") ) {
			mapLabel[id] = mapLabel[id] + '*';
	}
	if( markers[id].getAttribute("pStrg") ) {
			production[id] = markers[id].getAttribute("pStrg");
	}
	if( markers[id].getAttribute("prjNm") ) {
		 prjNm[id] = markers[id].getAttribute("prjNm");
	}
	else{ prjNm[id] = '';}
	

}


function buildDescription( mIdx, mTarget ) {
				// mTarget == map name  (target zoom out map as stored in ./maps without extension
				// mTarget == integer (zoom in to project specific map)
	var x = companySymbol[mIdx];
	var coSymLC = x.toLowerCase();
	
	descriptionProject[mIdx] =  // this definition is assembled from data above.
         '<table><tr><td bgcolor="#FFDF00" class="cellBold">' +
        companyName[ mIdx ] + '<br />' +  ' - ' +
         projectName[ mIdx ] + _pad +
         ' NI 43-101:</td></tr><tr><td class="text">';
	if( goldMORE[mIdx] ) {
   		descriptionProject[mIdx] += _pad + 'MORE gold ' + goldMORE[mIdx] +  '<br />';
	}
	if( silverMORE[mIdx] ) {
   		descriptionProject[mIdx] += _pad + 'MORE silver ' + silverMORE[mIdx] + '<br />';
	}
	if( ! goldMORE[mIdx] && ! silverMORE[mIdx] ) {
   		descriptionProject[mIdx] += '<br />';
	}
	descriptionProject[mIdx] +=  '</td></tr>';

   		// Summary level mixed in
	descriptionProject[mIdx] +=  
   		'<tr><td bgcolor="#FFDF00" class="cellBold">' +
         companySymbol[mIdx] +  _pad +
         ' Summary:</td></tr><tr><td class="text">';
   		//mix in the Resource Leverage
	if( companyRL[mIdx] ) {
   		descriptionProject[mIdx] += _pad + 'Resource Leverage ' + companyRL[mIdx] + '<br />';
	}
   		//mix in the Production
   	
	if( production[mIdx] ) {
   		descriptionProject[mIdx] += _pad +  production[mIdx];
	}

	descriptionProject[mIdx] +=  '</td></tr>';
  		 //build a descriptionProjectCountryLevel version
	descriptionProject[mIdx] = descriptionProject[mIdx] +
         '<tr><td bgcolor="#FFFFAA" class="cellBold">' +
         '<a href="http://www.goldminerpulse.com/c/' + coSymLC + '.php"><em>Metal Valuation Report </em></a>'  ;
   
    
 
}

function LabeledMarker(latlng, options){
    this.latlng = latlng;
    this.labelText = options.labelText || "";
    this.labelClass = options.labelClass || "markerLabel";
    this.labelOffset = options.labelOffset || new GSize(0, 0);
    
    this.clickable = options.clickable || true;
    
    if (options.draggable) {
    	// This version of LabeledMarker doesn't support dragging.
    	options.draggable = false;
    }
    
    GMarker.apply(this, arguments);
}


/* It's a limitation of JavaScript inheritance that we can't conveniently
   extend GMarker without having to run its constructor. In order for the
   constructor to run, it requires some dummy GLatLng. */
LabeledMarker.prototype = new GMarker(new GLatLng(0, 0));


// Creates the text div that goes over the marker.
LabeledMarker.prototype.initialize = function(map) {
	// Do the GMarker constructor first.
	GMarker.prototype.initialize.apply(this, arguments);
	
	var div = document.createElement("div");
	div.className = this.labelClass;
	div.innerHTML = this.labelText;
	div.style.position = "absolute";
	map.getPane(G_MAP_MARKER_PANE).appendChild(div);

	if (this.clickable) {
		// Pass through events fired on the text div to the marker.
		var eventPassthrus = ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout'];
		for(var i = 0; i < eventPassthrus.length; i++) {
			var name = eventPassthrus[i];
			GEvent.addDomListener(div, name, newEventPassthru(this, name));
		}

		// Mouseover behaviour for the cursor.
		div.style.cursor = "pointer";
	}
	
	this.map = map;
	this.div = div;
}

function newEventPassthru(obj, event) {
	return function() { 
		GEvent.trigger(obj, event);
	};
}

// Redraw the rectangle based on the current projection and zoom level
LabeledMarker.prototype.redraw = function(force) {
	GMarker.prototype.redraw.apply(this, arguments);
	
	// We only need to do anything if the coordinate system has changed
	if (!force) return;
	
	// Calculate the DIV coordinates of two opposite corners of our bounds to
	// get the size and position of our rectangle
	var p = this.map.fromLatLngToDivPixel(this.latlng);
	var z = GOverlay.getZIndex(this.latlng.lat());
	
	// Now position our DIV based on the DIV coordinates of our bounds
	this.div.style.left = (p.x + this.labelOffset.width) + "px";
	this.div.style.top = (p.y + this.labelOffset.height) + "px";
	this.div.style.zIndex = z + 1; // in front of the marker
}

// Remove the main DIV from the map pane, destroy event handlers
LabeledMarker.prototype.remove = function() {
	GEvent.clearInstanceListeners(this.div);
	this.div.parentNode.removeChild(this.div);
	this.div = null;
	GMarker.prototype.remove.apply(this, arguments);
}





// historical

      function ELabel(point, html, classname, pixelOffset, percentOpacity, overlap) {
        // Mandatory parameters
        this.point = point;
        this.html = html;
        
        // Optional parameters
        this.classname = classname||"";
        this.pixelOffset = pixelOffset||new GSize(0,0);
        if (percentOpacity) {
          if(percentOpacity<0){percentOpacity=0;}
          if(percentOpacity>100){percentOpacity=100;}
        }        
        this.percentOpacity = percentOpacity;
        this.overlap=overlap||false;
        this.hidden = false;
      } 
      
      ELabel.prototype = new GOverlay();

      ELabel.prototype.initialize = function(map) {
        var div = document.createElement("div");
        div.style.position = "absolute";
        div.innerHTML = '<div class="' + this.classname + '">' + this.html + '</div>' ;
        map.getPane(G_MAP_FLOAT_SHADOW_PANE).appendChild(div);
        this.map_ = map;
        this.div_ = div;
        if (this.percentOpacity) {        
          if(typeof(div.style.filter)=='string'){div.style.filter='alpha(opacity:'+this.percentOpacity+')';}
          if(typeof(div.style.KHTMLOpacity)=='string'){div.style.KHTMLOpacity=this.percentOpacity/100;}
          if(typeof(div.style.MozOpacity)=='string'){div.style.MozOpacity=this.percentOpacity/100;}
          if(typeof(div.style.opacity)=='string'){div.style.opacity=this.percentOpacity/100;}
        }
        if (this.overlap) {
          var z = GOverlay.getZIndex(this.point.lat());
          this.div_.style.zIndex = z;
        }
        if (this.hidden) {
          this.hide();
        }
      }

      ELabel.prototype.remove = function() {
        this.div_.parentNode.removeChild(this.div_);
      }

      ELabel.prototype.copy = function() {
        return new ELabel(this.point, this.html, this.classname, this.pixelOffset, this.percentOpacity, this.overlap);
      }

      ELabel.prototype.redraw = function(force) {
        var p = this.map_.fromLatLngToDivPixel(this.point);
        var h = parseInt(this.div_.clientHeight);
        this.div_.style.left = (p.x + this.pixelOffset.width) + "px";
        this.div_.style.top = (p.y +this.pixelOffset.height - h) + "px";
      }

      ELabel.prototype.show = function() {
        if (this.div_) {
          this.div_.style.display="";
          this.redraw();
        }
        this.hidden = false;
      }
      
      ELabel.prototype.hide = function() {
        if (this.div_) {
          this.div_.style.display="none";
        }
        this.hidden = true;
      }
      
      ELabel.prototype.isHidden = function() {
        return this.hidden;
      }
      
      ELabel.prototype.supportsHide = function() {
        return true;
      }

      ELabel.prototype.setContents = function(html) {
        this.html = html;
        this.div_.innerHTML = '<div class="' + this.classname + '">' + this.html + '</div>' ;
        this.redraw(true);
      }
      
      ELabel.prototype.setPoint = function(point) {
        this.point = point;
        if (this.overlap) {
          var z = GOverlay.getZIndex(this.point.lat());
          this.div_.style.zIndex = z;
        }
        this.redraw(true);
      }
      
      ELabel.prototype.setOpacity = function(percentOpacity) {
        if (percentOpacity) {
          if(percentOpacity<0){percentOpacity=0;}
          if(percentOpacity>100){percentOpacity=100;}
        }        
        this.percentOpacity = percentOpacity;
        if (this.percentOpacity) {        
          if(typeof(this.div_.style.filter)=='string'){this.div_.style.filter='alpha(opacity:'+this.percentOpacity+')';}
          if(typeof(this.div_.style.KHTMLOpacity)=='string'){this.div_.style.KHTMLOpacity=this.percentOpacity/100;}
          if(typeof(this.div_.style.MozOpacity)=='string'){this.div_.style.MozOpacity=this.percentOpacity/100;}
          if(typeof(this.div_.style.opacity)=='string'){this.div_.style.opacity=this.percentOpacity/100;}
        }
      }

      ELabel.prototype.getPoint = function() {
        return this.point;
      }
      ELabel.prototype.U = function() {
        return this.point;
      }
      ELabel.prototype.V = function() {
        return this.point;
      }
      ELabel.prototype.W = function() {
        return this.point;
      }
      ELabel.prototype.X = function() {
        return this.point;
      }
      ELabel.prototype.Y = function() {
        return this.point;
      }
      ELabel.prototype.Z = function() {
        return this.point;
      }


