/*
* Script: map.js
* Author: UMG
* Requires: browser.js, crect.js, czoom.js
* Descrpition: Map script.
*/

// global variables
var gMapExtent    = new CRect();
var gMapLeft      = 0, gMapTop = 0, gMapWidth = 0, gMapHeight = 0;
var gMapIsAnwhere = true;
var gMapIsUsa     = false;
var gMapOk        = false;
var gMapTagImage  = "map";
var gMapText      = "";
var gMapTool      = "zoomin";

// local variables
var pMapMouseX = 0, pMapMouseY = 0, pMapZoom;

// initialize
function mapInitDoc(bCanCapture) {
  if (pMapZoom!=null) {
    pMapZoom.extent.putRect(gMapExtent);
    if (bCanCapture) {
      document.onmousemove = mapMouseMove;
      document.onmousedown = mapMouseDown;
      document.onmouseup   = mapMouseUp;
    }
  }
}

// helper function to temporarily turn off onmouse events on map 
function canHandleMapMouseEvents(bCanCapture) {
    if (bCanCapture) {
      document.onmousemove = mapMouseMove;
      document.onmousedown = mapMouseDown;
      document.onmouseup   = mapMouseUp;
    } else {
      document.onmousemove = null;
      document.onmousedown = null;
      document.onmouseup   = null;
    }	
}

// initialize
function mapInitElements(sTran) {
  pMapZoom = new CZoom();
  pMapZoom.initElements(gMapTagImage,sTran,gMapLeft,gMapTop,gMapWidth,gMapHeight);
}

// determine if the mouse is in the map
function mapIsMouseIn(e) {
	mapSetMouseXY(e);
	return ((pMapMouseX>0)&&(pMapMouseX<gMapWidth)&&(pMapMouseY>0)&&(pMapMouseY<gMapHeight));
}

// handle mouse down
function mapMouseDown(e) {
  var b = true, s;
  if (browserIsLeftButton(e)) {
    if (mapIsMouseIn(e) ) {
      b = false; s = gMapTool;
      if ((s == "zoomin") || (s == "zoomout") || (s == "pan")) {
        pMapZoom.feedbackStart(s,pMapMouseX,pMapMouseY);
		//alert('mousedown: '+pMapMouseX+'/'+pMapMouseY);
	  }
    }
  }
  return b;
}

// handle mouse move
function mapMouseMove(e) {

  var b = true;
  if (pMapZoom.isActive) {
    b = false;
     if(gBrowserIsNS) {
    	if (mapIsMouseIn(e) &&  e.target.id == "searchimg" ) {pMapZoom.feedbackMove(pMapMouseX,pMapMouseY);}
     }else{
      if (mapIsMouseIn(e)) {pMapZoom.feedbackMove(pMapMouseX,pMapMouseY);}
     }
  }
  return b;
}

// handle mouse up
function mapMouseUp(e) {

  var b = true, s;

  if (pMapZoom.isActive) {
    b = false;
    pMapZoom.feedbackStop(pMapMouseX,pMapMouseY);
    gMapExtent.putRect(pMapZoom.extent);
   	 if(gBrowserIsNS) {
            if (zoomMap && e.target.id == "tzt" || e.target.id == "searchimg") zoomMap(false,false);
   	 } else {
            if (zoomMap) zoomMap(false,false);
   	 }
    }
  return b;
}

// set map xy coords
function mapSetMouseXY(e) {
	browserSetMouseXY(e);
	//alert("gMap: "+ gMapLeft + " - " + gMapTop);
	pMapMouseX = gBrowserMouseX - gMapLeft;
	pMapMouseY = gBrowserMouseY - gMapTop;
	//alert("mapSetMouseXY: "+ pMapMouseX + " - " + pMapMouseY);
}


// set map tool
function mapSetTool(sTool) {
  var sCursor = "crosshair";
  if (sTool == null) gMapTool = "zoomin";
  else if (sTool == "zoomout")  gMapTool = "zoomout";
  else if (sTool == "pan") {gMapTool = "pan"; sCursor = "move";}
  else gMapTool = "zoomin";
  browserSetCursor(browserFindElement(gMapTagImage),sCursor);
}



