dojo.require("dijit.dijit");
dojo.require("dijit.form.Slider");

var iconPath = "{$URLROOT}/filestore";

dojo.declare("Navigator", null, {
	
	constructor: function(map){
		this.map = map;
		this.mapDiv  = document.getElementById(map.id);
		this.navDiv = document.createElement("div");
		this.mapDiv.appendChild(this.navDiv);
		
		var self = this;
		var tableElem = document.createElement("table");
		tableElem.className = "navigationTool";
		var tbodyElem = document.createElement("tbody");
		this.navDiv.appendChild(tableElem);
			
		var trElem = document.createElement("tr");
		var tdElem = document.createElement("td");
		var nwImg = document.createElement("img");
		nwImg.setAttribute("src",iconPath+"/nav_nw.png");
		nwImg.setAttribute("width","18");
		nwImg.setAttribute("height","18");
		nwImg.style.cursor = "pointer";
		tdElem.appendChild(nwImg);
		trElem.appendChild(tdElem);
		dojo.connect(nwImg, "onclick", function(evt) {
			self.map.panUpperLeft();
		});
		
		tdElem = document.createElement("td");
		var nImg = document.createElement("img");
		nImg.setAttribute("src",iconPath+"/nav_n.png");
		nImg.setAttribute("width","11");
		nImg.setAttribute("height","18");
		nImg.style.cursor = "pointer";
		tdElem.appendChild(nImg);
		trElem.appendChild(tdElem);
		dojo.connect(nImg, "onclick", function(evt) {
			self.map.panUp();
		});
		
		tdElem = document.createElement("td");
		var neImg = document.createElement("img");
		neImg.setAttribute("src",iconPath+"/nav_ne.png");
		neImg.setAttribute("width","18");
		neImg.setAttribute("height","18");
		neImg.style.cursor = "pointer";
		tdElem.appendChild(neImg);
		trElem.appendChild(tdElem);
		tbodyElem.appendChild(trElem);
		dojo.connect(neImg, "onclick", function(evt) {
			self.map.panUpperRight();
		});
		
		trElem = document.createElement("tr");
		tdElem = document.createElement("td");
		var wImg = document.createElement("img");
		wImg.setAttribute("src",iconPath+"/nav_w.png");
		wImg.setAttribute("width","18");
		wImg.setAttribute("height","11");
		wImg.style.cursor = "pointer";
		tdElem.appendChild(wImg);
		trElem.appendChild(tdElem);
		dojo.connect(wImg, "onclick", function(evt) {
			self.map.panLeft();
		});
		
		tdElem = document.createElement("td");
		trElem.appendChild(tdElem);
		
		tdElem = document.createElement("td");
		var eImg = document.createElement("img");
		eImg.setAttribute("src",iconPath+"/nav_e.png");
		eImg.setAttribute("width","18");
		eImg.setAttribute("height","11");
		eImg.style.cursor = "pointer";
		tdElem.appendChild(eImg);
		trElem.appendChild(tdElem);
		tbodyElem.appendChild(trElem);
		dojo.connect(eImg, "onclick", function(evt) {
			self.map.panRight();
		});
		
		trElem = document.createElement("tr");
		tdElem = document.createElement("td");
		var swImg = document.createElement("img");
		swImg.setAttribute("src",iconPath+"/nav_sw.png");
		swImg.setAttribute("width","18");
		swImg.setAttribute("height","18");
		swImg.style.cursor = "pointer";
		tdElem.appendChild(swImg);
		trElem.appendChild(tdElem);
		dojo.connect(swImg, "onclick", function(evt) {
			self.map.panLowerLeft();
		});
		
		tdElem = document.createElement("td");
		var sImg = document.createElement("img");
		sImg.setAttribute("src",iconPath+"/nav_s.png");
		sImg.setAttribute("width","11");
		sImg.setAttribute("height","18");
		sImg.style.cursor = "pointer";
		tdElem.appendChild(sImg);
		trElem.appendChild(tdElem);
		dojo.connect(sImg, "onclick", function(evt) {
			self.map.panDown();
		});
		
		tdElem = document.createElement("td");
		var seImg = document.createElement("img");
		seImg.setAttribute("src",iconPath+"/nav_se.png");
		seImg.setAttribute("width","18");
		seImg.setAttribute("height","18");
		seImg.style.cursor = "pointer";
		tdElem.appendChild(seImg);
		trElem.appendChild(tdElem);
		tbodyElem.appendChild(trElem);
		dojo.connect(seImg, "onclick", function(evt) {
			self.map.panLowerRight();
		});
		
		// zoom slider
		trElem = document.createElement("tr");
		tdElem = document.createElement("td");
		tdElem.setAttribute("colSpan","3");
		tdElem.setAttribute("align","center");
		var sliderNode = document.createElement("div");
		tdElem.appendChild(sliderNode);
		trElem.appendChild(tdElem);
		tbodyElem.appendChild(trElem);
		tableElem.appendChild(tbodyElem);
		
		// the labels are to be children of the slider
		var rulesNodeLabels = document.createElement("div");
		sliderNode.appendChild(rulesNodeLabels);
		
		// our rules are to be children of the slider
		var rulesNode = document.createElement("div");
		sliderNode.appendChild(rulesNode);
		
		// and setup the slider
		var style = dojo.isIE ? "height:75px" : "height:150px";
		var theSlider = new dijit.form.VerticalSlider({ 
			name:"programaticSlider",
			slideDuration:0,
			style:style,
			minimum:0,
			maximum:16,
			discreteValues:17,
			intermediateChanges:"true",
			showButtons:"true"
		},sliderNode);
		
		dojo.connect(map, "onLoad", function(map) {
			theSlider.setValue(map.getLevel());
		});
		dojo.connect(map, "onExtentChange", function(extent, delta, levelChange, lod) {
			theSlider.setValue(lod.level);
		});
		dojo.connect(theSlider, "onChange", function(value) {
			map.setLevel(value);
		});
		theSlider.startup();
    }
});

function findPosX(obj) {
	var curleft = 0;
    if(obj.offsetParent)
        while(1) {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent) break;
          obj = obj.offsetParent;
    }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
 }

 function findPosY(obj) {
    var curtop = 0;
    if(obj.offsetParent)
        while(1) {
          curtop += obj.offsetTop;
          if(!obj.offsetParent) break;
          obj = obj.offsetParent;
    }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}
