//sakotneji ielade kartes attelu
$(document).ready(function(){ 
	if ($("#mapholder")[0])
		$("#mapholder").load("mapimage", {}, function(){ 
													if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
														fixmapimage();
														} 
												});
});

// uzstada kartes navigacijas darbibas
$(document).ready(function(){
	$("#buttons > a").bind("click", function(){
				if (this.id == "fullext")
				{
					zoomToFullExtent();
				}
				else if (this.id == "topo")
				{
					if ($('a#topo.disabled')[0])
						return false;
						
					$('a#topo').toggleClass('selected');
					var params;
					params = "10/" + (($('a#topo.selected')[0]) ? "1" : "0");
					doWork(params);
				}
				else if (this.id == "orto")
				{
					if ($('a#orto.disabled')[0])
						return false;
						
					$('a#orto').toggleClass('selected');
					var params;
					params = "13/" + (($('a#orto.selected')[0]) ? "1" : "0");
					doWork(params);
				}
				else
				{
					$(this).parent().children("a.selected").removeClass("selected");
					$(this).addClass("selected");
				}
				return false;
			});
})

//globalie mainigie Zoom funkcijam

var mouseDown = false;
var old_mouse_x;
var old_mouse_y;
var X_cur;
var Y_cur;
var allow_zoom = false;
var allow_move = false;
var downXOffset;
var downYOffset;

var zoomToDiv;
var imgDiv;
var js_glob_min_zoombox_dimensions = 15;


$(document).ready(function(){
	zoomToDiv = new GetSetStyle($('#zoomToDiv').get(0), 0, 0, 0, 0);
	imgDiv = new GetSetStyle($('#mapholder').get(0), 0, 0, 0, 0);
	
	initMapEvents();
})

function initMapEvents()
{
	// image mouse Down
	$("#mapholder").bind("mousedown", function(e){MouseDown(e);});
	$("#zoomToDiv").bind("mousedown", function(e){MouseDown(e);});
	
	//mouse up
	$("#mapholder").bind("mouseup", function(){MouseUp();});
	$("#zoomToDiv").bind("mouseup", function(){MouseUp();});
	
	//mouse move
	$("#mapholder").bind("mousemove", function(e){MouseMove(e);});
	$("#zoomToDiv").bind("mousemove", function(e){MouseMove(e);});
	$("#mapin").bind("mousemove", function(e){MouseMove(e);});
}



function resetZoomDiv()
{
	imgDiv.SetLeft(0);
	imgDiv.SetTop(0);
}


function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}
//cross browser functions for mouse coords
function pointerX(e){
	if (window.event)
		return (window.event.clientX+document.body.scrollLeft+document.documentElement.scrollLeft);
	else
		return((e.pageX>0)?e.pageX:0);
}
function pointerY(e){
	if (window.event)
		return (window.event.clientY+document.body.scrollTop+document.documentElement.scrollTop)+20;
	else
		return((e.pageY>0)?e.pageY:0);
}
function findPosX(obj){
	var curleft = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	if ($.browser.msie)
		curleft += 3;
	return curleft;
}
function findPosY(obj){
	var curtop = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	if ($.browser.msie)
		curtop += 23;
	return curtop;
}


function MouseMove(e)
{
	tmp_x = pointerX(e);
	tmp_y = pointerY(e);

	newX = tmp_x - findPosX($("#mapholder").get(0));
	newY = tmp_y - findPosY($("#mapholder").get(0));
	
	if (allow_move == true)
	{
		// parvieto aktivo kartes slani
		
		/*
		imgDiv.SetLeft(imgDiv.GetLeft() + (tmp_x - old_mouse_x));
		imgDiv.SetTop (imgDiv.GetTop() + (tmp_y - old_mouse_y));
		*/
		var left = imgDiv.GetLeft() + (tmp_x - old_mouse_x);
		var top = imgDiv.GetTop() + (tmp_y - old_mouse_y);
		
		imgDiv.SetLeft(left);
		imgDiv.SetTop(top);
		
		$("#mapholder").get(0).style.left = left + "px";
		$("#mapholder").get(0).style.top = top + "px";
		
		old_mouse_x = tmp_x;
		old_mouse_y = tmp_y;
	}
	else if (allow_zoom == true)
	{
		zoomToDiv.Show();
		
		//hor_plat = E('map_img').style.width - 2;
		//ver_augst = E('map_img').style.height - 2;
		
		hor_plat = mapWidth-2; 
		ver_augst = mapHeight-2;
		
		//IE gadijuma vajag -2 vieta but -0
		hor_min = 0;
		ver_min = 0;

		if (newX > hor_min+hor_plat) newX = hor_min+hor_plat;
		if (newY > ver_min+ver_augst) newY = ver_min+ver_augst;
		if (newX < hor_min) newX = hor_min;
		if (newY < ver_min) newY = ver_min;
		
		zoomToDiv.SetLeft ((newX-X_cur < 0) ? newX : X_cur);
		zoomToDiv.SetTop ((newY-Y_cur < 0) ? newY : Y_cur);
		zoomToDiv.SetWidth ((newX-X_cur < 0) ? X_cur-newX : newX-X_cur);
		zoomToDiv.SetHeight ((newY-Y_cur < 0) ? Y_cur-newY : newY-Y_cur);
		
		if (zoomToDiv.GetHeight() <= js_glob_min_zoombox_dimensions
		|| zoomToDiv.GetWidth() <= js_glob_min_zoombox_dimensions)
		{
			zoomToDiv.GetObject().style.borderColor = "#FF8A84";
			$('#zoomToDivBackground').get(0).style.backgroundColor = "#FF8A84";
		}
		else
		{
			zoomToDiv.GetObject().style.borderColor = "#A09D83";
			$('#zoomToDivBackground').get(0).style.backgroundColor = "#E0D9B8";
		}
		old_mouse_x = tmp_x;
		old_mouse_y = tmp_y;	
	}
	return false;
}	

function MouseDown(e)
{
	if ($.browser.msie)
		$("#mapImg").get(0).setCapture();
	else
		e.preventDefault();
	
	if (mouseDown == true)
	{
		mouseDown = false;
		return false;
	}
	
	mouseDown = true;
	
	old_mouse_x = pointerX(e);
	old_mouse_y = pointerY(e);
	
	downXOffset = old_mouse_x - findPosX($("#mapholder").get(0));
	downYOffset = old_mouse_y - findPosY($("#mapholder").get(0));
	
	if ($("#pan.selected").get(0))	// moving
		allow_move = true;		
	else if ($("#zoomin.selected").get(0))	//zooming
	{
		zoomToDiv.SetLeft(downXOffset)
		zoomToDiv.SetTop(downYOffset);
		zoomToDiv.SetWidth(0);
		zoomToDiv.SetHeight(0);

		zoomToDiv.Hide();

		allow_zoom = true;
		
		//piefikse sakotnejas koordinatas
		X_cur = pointerX(e) - findPosX($("#mapholder").get(0));
		Y_cur = pointerY(e) - findPosY($("#mapholder").get(0));
	}
	return false;
}
	
function MouseUp()
{
	mouseDown = false;

	if (allow_zoom == true)
	{
		//beidzam zoomosanos
		allow_zoom = false;
		zoomToDiv.Hide();
		doAction();
	}
	else
		doAction();	
		
	allow_move = false;
	return false;
}


function doAction()
{
	if ($("#pan.selected").get(0))
	{
		var map_point_x = (mapWidth/2) - imgDiv.GetLeft();
		var map_point_y = (mapHeight/2) - imgDiv.GetTop();

		var params;
		params = "0/" + map_point_x + "/" + map_point_y;
		doWork(params);
	}
	else if ($("#zoomin.selected").get(0))
	{
			rect_min_x = zoomToDiv.GetLeft();
			rect_max_y = zoomToDiv.GetTop();
			rect_max_x = zoomToDiv.GetLeft()+zoomToDiv.GetWidth();
			rect_min_y = zoomToDiv.GetTop()+zoomToDiv.GetHeight();
			
			if (rect_max_x-rect_min_x < js_glob_min_zoombox_dimensions ||
				rect_min_y-rect_max_y < js_glob_min_zoombox_dimensions)
			{
				var params;
				params = "1/" + rect_min_x + "/" + rect_min_y;
				doWork(params);
			}
			else
			{
				var params;
				params = "1/" + rect_min_x + "/" + rect_min_y + "/" + rect_max_x + "/" + rect_max_y;
				doWork(params);
			}
	}
	else if ($("#zoomout.selected").get(0))
	{
		var params;
		//params = "action=2&mappx=" + downXOffset + "&mappy=" + downYOffset;
		params = "2/" + downXOffset + "/" + downYOffset;
		doWork(params);
	}
	else if ($("#info.selected").get(0))
	{
		var params;
		params = "5/" + downXOffset + "/" + downYOffset;
		gpsInfo(params);
	}
	else if ($("#insert.selected").get(0))
	{
		var params;
		params = "11/" + downXOffset + "/" + downYOffset;
		doWork(params);
	}
	else if ($("#error.selected").get(0))
	{
		var params;
		params = "12/" + downXOffset + "/" + downYOffset;
		doWork(params);
	}
	else if ($('div#zonevalues a#show.selected').get(0))
	{
		$.post("mapajax/zone/5", { X: downXOffset, Y: downYOffset},
					function(data){
						zoneShow(data);
				});
	}
	return false;
}

function zoomToFullExtent()	// parseto karti uz full extent
{
	var params;
	//params = "action=3";
	params = "3";
	doWork(params);
}
