

/* Legend related function */
var layersName = new Array();
function addLayer(name) {
    for(i=0;i<layersName.length;i++)
     if (layersName[i]==name) 
		return;
    layersName[layersName.length]=name;
}

function expandLayer(name) {
   var group_img = document.getElementById('img_'+name);
   var layer_div = document.getElementById('group_class_'+name);
   layer_div.style.display='block';
   group_img.src="/globus/images/collapse.png";
}

function collapseLayer(name) {
   var group_img = document.getElementById('img_'+name);
   var layer_div = document.getElementById('group_class_'+name);
   layer_div.style.display='none';
   group_img.src="/globus/images/expand.png";
}


function toggleLayer(name) {
   var layer_div = document.getElementById('group_class_'+name);
   if (layer_div.style.display =='none' )  expandLayer(name);
   else collapseLayer(name);
}

function expandAllLegend() {
  for(var i=0;i<layersName.length;i++) 
     expandLayer(layersName[i]);

}

function collapseAllLegend() {
  for(var i=0;i<layersName.length;i++) 
     collapseLayer(layersName[i]);

}

function prepareURL() {
   var str = "";	
   for(i=0;i<layersName.length;i++) {
		layer_cb = document.getElementById('checkbox_'+layersName[i]);
		str += "&group_"+layersName[i]+"="+(layer_cb.checked?"on":"off");
   }

   return "map="+mapname+"&minx="+minx+"&miny="+miny+"&maxx="+maxx+"&maxy="+maxy+str;
}

function updateMap() {
   var map_img = document.getElementById('map_img');
   var map_bl = document.getElementById('map_bl');
   var refmap_img = document.getElementById('refmap_img');
   map_img.src = "/scripts/spinner.gif";
   map_bl.src = rendername+"?"+prepareURL();
   refmap_img.src = refmapname+"?map="+mapname+"&minx="+minx+"&miny="+miny+"&maxx="+maxx+"&maxy="+maxy;
}
function updateScalebars() {
	var miscalebar = document.getElementById("img_miscalebar");
	var kmscalebar = document.getElementById("img_kmscalebar");
	
   	kmscalebar.src = scalename+"?map="+mapname+"&units=kilometers&minx="+minx+"&miny="+miny+"&maxx="+maxx+"&maxy="+maxy;
   	miscalebar.src = scalename+"?map="+mapname+"&units=miles&minx="+minx+"&miny="+miny+"&maxx="+maxx+"&maxy="+maxy;
}

/* zoomin/zoomout functions*/
function zoomin() {
  var width = maxx-minx;	
  var height = maxy-miny;
  minx += width/4;
  maxx -= width/4;
  miny += height/4;
  maxy -= height/4;
  updateMap();
  updateScalebars();
}

function zoomout() {
  var width = maxx-minx;
  var height = maxy-miny;
  minx -= width/2;
  maxx += width/2;
  miny -= height/2;
  maxy += height/2;
  updateMap(); 
  updateScalebars();
}


var pansize = 0.40;



function pan(direction) {
    var x, y;
    var width=maxx-minx;
    var height=maxy-miny;
    x=0;y=0;
    if(direction == 'n' || direction == 'nw' || direction == 'ne') 
      y = height*pansize;
    if (direction == 's' || direction == 'sw' || direction == 'se') 
	y = -height*pansize;
    if (direction == 'w' || direction == 'sw' || direction == 'nw')
	x = -width*pansize;
    if (direction == 'e' || direction == 'se' || direction == 'ne')
	x = width*pansize;
    minx += x; miny += y; maxx += x; maxy += y;
    updateMap();
  }

function onMapClick(event) {
	if ( !event) event = window.event;

   	var map_img = document.getElementById('map_img');
	var x = event.offsetX !=undefined?event.offsetX:(event.clientX-map_img.x);
	var y = event.offsetY != undefined?event.offsetY:(event.clientY-map_img.y);
	var width=maxx-minx;
	var height=maxy-miny;

	if (mapmode=="query") {
		window.open("query.php?"+prepareURL()+"&x="+x+"&y="+y);
		return;
	}
	x -= map_img.width/2;
	y -= map_img.height/2;
	minx += x*width/map_img.width;
	miny -= y*height/map_img.height;
	maxx = minx + width;
	maxy = miny + height;

	updateMap();
}

function onRefmapClick(event) {
	if ( !event) event = window.event;

   	var refmap_img = document.getElementById('refmap_img');
	var x = event.offsetX != undefined?event.offsetX:(event.clientX-refmap_img.x);
	var y = event.offsetY != undefined?event.offsetY:(event.clientY-refmap_img.y);
	var refwidth=refmaxx-refminx;
	var refheight=refminy-refmaxy;
	var width=maxx-minx;
	var height=maxy-miny;
	
	minx = refminx+x*refwidth/refmap_img.width-width/2;
	maxy = refmaxy+y*refheight/refmap_img.height+height/2;
	maxx = minx + width;
	miny = maxy - height;
	//alert ( "onRefmapClick: x="+x+" y="+y+" minx="+minx+" miny="+miny);
	updateMap();
}

function doSwapImg() {
	var map_img = document.getElementById("map_img");
	var map_bl = document.getElementById("map_bl");
	map_img.src=map_bl.src;
}

function toggleQuery() {
	mapmode="query";
	document.getElementById("query_btn").src="/scripts/button_query_1.png";
	document.getElementById("recenter_btn").src="/scripts/button_recenter_2.png";
}
function toggleBrowse() {
	mapmode="browse";
	document.getElementById("query_btn").src="/scripts/button_query_2.png";
	document.getElementById("recenter_btn").src="/scripts/button_recenter_1.png";

}

