﻿/*
* Utilities for EnergyMap's maps
*/

/*
* forfrontpage: set to true when we are using a small and a large icon on top of each other. 
*/

function addmarker(lat, lng, text, big, tekarea, show, url, mode, forfrontpage) {
	var latlng = new GLatLng(lat, lng);
	var marker = {};
	if (big) {
		if(mode)
			marker = new GxMarker(latlng, eval('icon_' + tekarea), text, '');
		else
			marker = new GxMarker(latlng, bigtechareaicons[tekarea], text, '');
	}
	else {
		if(mode)
			marker = new GxMarker(latlng, eval('icon_' + tekarea + '_s'), text, '');
		else
			marker = new GxMarker(latlng, smalltechareaicons[tekarea], text, '');
	}

	if (forfrontpage) {
		if (big) {
			GEvent.addListener(marker, "mouseout", function() { mouseout(marker) });
			GEvent.addListener(marker, "mouseover", function() { mouseover(marker); });
		}
		else {
			GEvent.addListener(marker, "mouseover", function() { mouseover(marker); });
		}
	}
	else {
		GEvent.addListener(marker, "mouseout", function() { mouseout(marker) });
		GEvent.addListener(marker, "mouseover", function() { mouseover(marker); });
	}
	
	GEvent.addListener(marker, "click", function() { document.location = url });
	map.addOverlay(marker);
	if (!show) { marker.hide(); }
	return marker;
}

function mouseout(marker) {
	marker.onMouseOut();
//	currentmarker = null;
}

function makeWrappersSmall(wrappers) {
	if (wrappers) {
		$.each(wrappers,
				function(i, val) {
					val.small.show();
					val.big.hide();
				}
		);
	}
}

function mouseover(marker) {
	if (typeof(currentmarker) != 'undefined' && currentmarker && marker != currentmarker.wrapper.big) {
		currentmarker.onMouseOut();
	}
	
	if (typeof(timer) != "undefined" && timer) {
		clearTimeout(timer);
		timer = setTimeout('showRandomBox()', timeout);
	}
	marker.onMouseOver();
}

function formatPopup(text, picurl) {
    var popupstring = '<div class="gmappopup">';

    popupstring += '<div class="popuptext"><b>';
    popupstring += text;
    popupstring += '</b></div>';

    popupstring += '<div>';
    popupstring += '<img height="70" width="238" src="' + picurl + '"/>';
    popupstring += '</div>';

    popupstring += '</div>';
    return popupstring;
}

function formatPopupCase(caseTitle, caseOwner, picurl) {
    var popupstring = '<div class="gmappopup">';

    popupstring += '<div class="popuptexttitle"><b>';
    popupstring += caseTitle;
    popupstring += '</b></div>';

    popupstring += '<div class="popuptextowner">';
    popupstring += caseOwner;
    popupstring += '</div>';

    popupstring += '<div>';
    popupstring += '<img height="70" width="238" src="' + picurl + '"/>';
    popupstring += '</div>';

    popupstring += '</div>';
    return popupstring;
   }

function contains(array, val) {
  for (var i = 0; i < array.length; i++) {
    if (array[i] == val)
   	  return true;
  }
  return false;
}

function getMarkersinView(marray, map) {
  var currentmarkersinview = [];
  if (typeof (marray) != "undefined" && marray) {
    var bounds = map.getBounds();
	// filter out markers not currently on map
    $.each(marray, function(i, val) {
    	if (bounds.containsLatLng(val.small.getLatLng())) {
    		currentmarkersinview.push(val);
    	}
    });
  }
  return currentmarkersinview;
 }

 function markerWrapperIsInView(markerWrapper, bounds) {
 	if (typeof (marker) != 'undefined' && marker) {
 		return bounds.containsLatLng(markerWrapper.getLatLng());
 	}
 	return false;
 }
