
//Functions to control the customized V3 looking dashboard.
//
// All rights are reserved. Reproduction or transmission in whole or in part, in 
// any form or by any means, electronic, mechanical or otherwise, is prohibited 
// without the prior written consent of the copyright owner.
// 
// Filename: custom_dashboard.js
//


/* map view state */
var road_selected = true;
var aerial_selected = false;
var hybrid_selected = false;

/* true when mouse button held down */
var compass_click = false;

/* cursor position relative to compass */
var compass_x = 0;
var compass_y = 0;

/* slider length in pixels */
var zoom_slider_length = 54;

/* list of increments for zoom slider */
var zoom_increments = new Array (3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19);
var zoom_lower = zoom_increments[0];
var zoom_upper = zoom_increments[zoom_increments.length-1];


/* correct slider position on zoom */
function onEndZoom(event){
	correctSlider(event.zoomLevel);
}

/* zoom bar click event */
function zoomBarClick(event){
	var offset = event.x - 7;
	if (navigator.appVersion.indexOf("MSIE")!=-1){
		offset = event.x - 22;
	}
	//document.getElementById("zoom_slider").style.marginLeft = offset + "px";
	map.SetZoomLevel(zoom_increments[Math.round((offset / zoom_slider_length) * (zoom_increments.length - 2))]);
}

/* switch map to road view */
function viewRoadStyle(){
	if (!road_selected){
		road_selected = true;
		aerial_selected = false;
		hybrid_selected = false;
		map.SetMapStyle("r");	
		document.getElementById("road_view").className = "Dashboard_tab Dashboard_selected";
		document.getElementById("aerial_view").className = "Dashboard_tab Dashboard_unselected";
		document.getElementById("hybrid_view").className = "Dashboard_tab Dashboard_unselected";		
	}
}

/* switch map to aerial view */
function viewAerialStyle(){
	if (!aerial_selected){
	    aerial_selected = true;
		road_selected = false;
		hybrid_selected = false;		
		map.SetMapStyle("a");	
	
		document.getElementById("road_view").className = "Dashboard_tab Dashboard_unselected";
		document.getElementById("aerial_view").className = "Dashboard_tab Dashboard_selected";	
		document.getElementById("hybrid_view").className = "Dashboard_tab Dashboard_unselected";		
	}
}

/* toggle hybrid view */
function hybridToggle(){
    if (!hybrid_selected){
        aerial_selected = false;
	    hybrid_selected = true;
	    road_selected = false;
	    map.SetMapStyle("h");
    	
	    document.getElementById("road_view").className = "Dashboard_tab Dashboard_unselected";
	    document.getElementById("aerial_view").className = "Dashboard_tab Dashboard_unselected";
	    document.getElementById("hybrid_view").className = "Dashboard_tab Dashboard_selected";
	}
}

/* update cursor position relative to compass */
function onCompassMouseMove(event){
	obj = document.getElementById("compass");
	compass_x = (event.x - 32) * 4; 
	compass_y = (event.y - 32) * 4;
}

/* start pan */
function onCompassClick(){
	compass_click = true;
	doPan();
}

/* continue pan */
function doPan(){
	if (compass_click){
		map.Pan(compass_x,compass_y);
		setTimeout("doPan()",100);
	}
}

/* cancel pan */
function cancelCompassClick(){
	compass_click = false;
}

/* zoom in one level */
function zoomInClick(){
	if (map.GetZoomLevel() < zoom_upper){
		var new_zoom_level = map.GetZoomLevel() + 1;
		map.SetCenterAndZoom(map.GetCenter(),new_zoom_level);		
	}
}

/* zoom out one level */
function zoomOutClick(){
	if (map.GetZoomLevel() > zoom_lower){
		var new_zoom_level = map.GetZoomLevel() - 1;
		map.SetCenterAndZoom(map.GetCenter(),map.GetZoomLevel() - 1);		
	}
}

/* correct slider position relative to current zoom level */
function correctSlider(zoom_level){
	for (var i = 0; i < zoom_increments.length; i++){
		if (zoom_increments[i] == zoom_level){
			document.getElementById("zoom_slider").style.marginLeft = i * (zoom_slider_length / zoom_increments.length) + "px";
			break;	
		}
	}
}

