var zoomLevel=0;
var zoomLevelStart = zoomLevel;
var razdelek_height=Math.floor(size_y/razdelki_y);
var razdelek_width=Math.floor(size_x/razdelki_x);
var zoomStack=new Array();
var x=1;
var y=1;
function zoomIn() {
	whereToZoom = zoomStack[zoomLevel];
	whereToZoom = whereToZoom + Math.floor(razdelki_x / 2);
	whereToZoom = whereToZoom + Math.floor(razdelki_y / 2)*Math.pow(razdelki_x, zoomLevel);

	cur_line = Math.ceil(zoomStack[zoomLevel] / Math.pow(razdelki_x, zoomLevel));
	cur_pos = zoomStack[zoomLevel] - (cur_line-1)*Math.pow(razdelki_x, zoomLevel);
	x1 = size_x / 2;
	x1 += (cur_pos-1)*razdelek_width;

	y1 = size_y / 2;
	y1 += (cur_line-1)*razdelek_height;

	zoomTo(whereToZoom, x1, y1);
}
function zoomTo(razdelek, x1, y1) {
	if (zoomLevel<maxGlobina) {

	zoomLevel++;
	contents = "";

	if (zoomLevel==1) {
		new_start_index = 1;
		new_line = 1;
		new_pos = 1;
	}
	else {

	if (!x1) { x1 = x; }
	if (!y1) { y1 = y; }

	new_x = Math.ceil(x1/(size_x/Math.pow(razdelki_x, 2)));
	new_y = Math.ceil(y1/(size_y/(razdelki_x*razdelki_y)));

	old_line = Math.ceil(razdelek/Math.pow(razdelki_x, zoomLevel-1));
	old_pos = razdelek-(old_line-1)*Math.pow(razdelki_x, zoomLevel-1);

	new_x -= (old_pos-1)*razdelki_x;
	new_y -= (old_line-1)*razdelki_y;

	new_line = (old_line-1)*razdelki_y+1;
	new_line += (new_y-1);
	new_line -= Math.floor(razdelki_y/2);
	new_pos = (old_pos-1)*razdelki_x+1;
	new_pos += (new_x-1);
	new_pos -= Math.floor(razdelki_x/2);

	if ((new_pos-1)<1) new_pos=1;
	if ((new_line-1)<1) new_line=1;
	if ((new_pos+razdelki_x-1)>Math.pow(razdelki_x, zoomLevel)) {
		odstopanje = (new_pos+razdelki_x-1)-Math.pow(razdelki_x, zoomLevel);
		new_pos -= odstopanje;
	}
	if ((new_line+razdelki_y-1)>Math.pow(razdelki_x, zoomLevel-1)*razdelki_y) {
		odstopanje = (new_line+razdelki_y-1)-Math.pow(razdelki_x, zoomLevel-1)*razdelki_y;
		new_line -= odstopanje;
	}

	new_start_index = (new_line-1)*Math.pow(razdelki_x, zoomLevel) + new_pos;

	}

	zoomStack[zoomLevel] = new_start_index;
	contents = contents + "<table id='zemljevid' onmousemove='showCoords();' border=0 cellspacing=0 cellpadding=0 UNSELECTABLE='on' oncontextmenu='return false'>";
	for (i=new_line;i<(new_line+razdelki_y);i++) {
		start_index = (i - 1)*Math.pow(razdelki_x, zoomLevel) + new_pos;
		indeks = "<tr>";
		for (i2=start_index;i2<(start_index+razdelki_x);i2++) {
			indeks=indeks + "<td height=" + razdelek_height + " width=" + razdelek_width + "><a href='javascript:zoomTo(" + i2 + ")'><img height=" + razdelek_height + " width=" + razdelek_width + " src='slikce/slikca" + zoomLevel + "_" + i2 + ".gif' border=0></a></td>";
		}
		indeks = indeks + "</tr>";
		contents = contents + indeks;
	}
	contents = contents + "</table>";
	document.getElementById("map").innerHTML = contents;
	
	}
}
function zoomOut() {

	if (zoomLevel>1) {

	zoomLevel--;

	contents = "";

	old_index = zoomStack[zoomLevel+1];
	old_index += Math.floor(razdelki_x/2) + Math.floor(razdelki_x/2)*Math.pow(razdelki_x, zoomLevel+1);
	old_line = Math.ceil(old_index / Math.pow(razdelki_x, zoomLevel+1));
	old_pos = old_index - (old_line-1)*Math.pow(razdelki_x, zoomLevel+1);
	new_line = Math.ceil(old_line / (razdelki_y * razdelki_x));
	new_line = (new_line-1)*razdelki_y+1;
	new_pos = Math.ceil(old_pos / Math.pow(razdelki_x, 2));
	new_pos = (new_pos-1)*razdelki_x+1;
	new_index = new_pos + (new_line-1)*Math.pow(razdelki_x, zoomLevel);

	zoomStack[zoomLevel] = new_index;

	contents = contents + "<table id='zemljevid' onmousemove='showCoords();' border=0 cellspacing=0 cellpadding=0 UNSELECTABLE='on' oncontextmenu='return false'>";
	for (i=new_line;i<(new_line+razdelki_y);i++) {
		start_index = (i - 1)*Math.pow(razdelki_x, zoomLevel) + new_pos;
		indeks = "<tr>";
		for (i2=start_index;i2<(start_index+razdelki_x);i2++) {
			indeks=indeks + "<td height=" + razdelek_height + " width=" + razdelek_width + "><a href='javascript:zoomTo(" + i2 + ")'><img height=" + razdelek_height + " width=" + razdelek_width + " src='slikce/slikca" + zoomLevel + "_" + i2 + ".gif' border=0></a></td>";
		}
		indeks = indeks + "</tr>";
		contents = contents + indeks;
	}
	contents = contents + "</table>";

	document.getElementById("map").innerHTML = contents;

	}
}
function zoomAll() {
	zoomLevel=zoomLevelStart;
	zoomTo(1);
}
function zoomMove (whereTo) {
	OK = 0;
	contents = "";
	if (whereTo == 'topLeft') {
		pos = zoomStack[zoomLevel] - Math.floor(zoomStack[zoomLevel]/Math.pow(razdelki_x, zoomLevel))*Math.pow(razdelki_x, zoomLevel);
		if ((pos - 1) > 0 && (zoomStack[zoomLevel] - Math.pow(razdelki_x, zoomLevel)) > 0) {
			start_index = zoomStack[zoomLevel] - 1;
			start_index = start_index - Math.pow(razdelki_x, zoomLevel);
			OK = 1;
		}
	}
	else if (whereTo == 'topCenter') {
		if ((zoomStack[zoomLevel] - Math.pow(razdelki_x, zoomLevel)) > 0) {
			start_index = zoomStack[zoomLevel] - Math.pow(razdelki_x, zoomLevel);
			OK = 1;
		}
	}
	if (whereTo == 'topRight') {
		pos = zoomStack[zoomLevel] - Math.floor(zoomStack[zoomLevel]/Math.pow(razdelki_x, zoomLevel))*Math.pow(razdelki_x, zoomLevel);
		if ((pos + razdelki_x) <= Math.pow(razdelki_x, zoomLevel) && (zoomStack[zoomLevel] - Math.pow(razdelki_x, zoomLevel)) > 0) {
			start_index = zoomStack[zoomLevel] + 1;
			start_index = start_index - Math.pow(razdelki_x, zoomLevel);
			OK = 1;
		}
	}
	else if (whereTo == 'middleLeft') {
		pos = zoomStack[zoomLevel] - Math.floor(zoomStack[zoomLevel]/Math.pow(razdelki_x, zoomLevel))*Math.pow(razdelki_x, zoomLevel);
		if ((pos - 1) > 0) {
			start_index = zoomStack[zoomLevel] - 1;
			OK = 1;
		}
	}
	else if (whereTo == 'middleRight') {
		pos = zoomStack[zoomLevel] - Math.floor(zoomStack[zoomLevel]/Math.pow(razdelki_x, zoomLevel))*Math.pow(razdelki_x, zoomLevel);
		if ((pos + razdelki_x) <= Math.pow(razdelki_x, zoomLevel)) {
			start_index = zoomStack[zoomLevel] + 1;
			OK = 1;
		}
	}
	else if (whereTo == 'bottomLeft') {
		pos = zoomStack[zoomLevel] - Math.floor(zoomStack[zoomLevel]/Math.pow(razdelki_x, zoomLevel))*Math.pow(razdelki_x, zoomLevel);
		if ((pos - 1) > 0 && (zoomStack[zoomLevel] + razdelki_y*Math.pow(razdelki_x, zoomLevel)) <= Math.pow(razdelki_x*razdelki_x, zoomLevel-1)*razdelki_x*razdelki_y) {
			start_index = zoomStack[zoomLevel] - 1;
			start_index = start_index + Math.pow(razdelki_x, zoomLevel);
			OK = 1;
		}
	}
	else if (whereTo == 'bottomCenter') {
		if ((zoomStack[zoomLevel] + razdelki_y*Math.pow(razdelki_x, zoomLevel)) <= Math.pow(razdelki_x*razdelki_x, zoomLevel-1)*razdelki_x*razdelki_y) {
			start_index = zoomStack[zoomLevel] + Math.pow(razdelki_x, zoomLevel);
			OK = 1;
		}
	}
	if (whereTo == 'bottomRight') {
		pos = zoomStack[zoomLevel] - Math.floor(zoomStack[zoomLevel]/Math.pow(razdelki_x, zoomLevel))*Math.pow(razdelki_x, zoomLevel);
		if ((pos + razdelki_x) <= Math.pow(razdelki_x, zoomLevel) && (zoomStack[zoomLevel] + razdelki_y*Math.pow(razdelki_x, zoomLevel)) <= Math.pow(razdelki_x*razdelki_x, zoomLevel-1)*razdelki_x*razdelki_y) {
			start_index = zoomStack[zoomLevel] + 1;
			start_index = start_index + Math.pow(razdelki_x, zoomLevel);
			OK = 1;
		}
	}
	if (OK == 1) {
		zoomStack[zoomLevel] = start_index;
		temp = Math.ceil(start_index/Math.pow(razdelki_x, zoomLevel));
		temp1 = start_index - Math.floor(start_index/Math.pow(razdelki_x, zoomLevel))*Math.pow(razdelki_x, zoomLevel);
		contents = contents + "<table id='zemljevid' onmousemove='showCoords();' border=0 cellspacing=0 cellpadding=0 UNSELECTABLE='on' oncontextmenu='return false'>";
		for (i=temp;i<(temp+razdelki_y);i++) {
			start_index = (i - 1)*Math.pow(razdelki_x, zoomLevel) + temp1;
			indeks = "<tr>";
			for (i2=start_index;i2<(start_index+razdelki_x);i2++) {
				indeks=indeks + "<td height=" + razdelek_height + " width=" + razdelek_width + "><a href='javascript:zoomTo(" + i2 + ")'><img height=" + razdelek_height + " width=" + razdelek_width + " src='slikce/slikca" + zoomLevel + "_" + i2 + ".gif' border=0></a></td>";
			}
			indeks = indeks + "</tr>";
			contents = contents + indeks;
		}
		contents = contents + "</table>";
		document.getElementById("map").innerHTML = contents;
	}
}
function findPosX(obj,e)
{
	
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) {
		curleft += obj.x;
	}
	
	cur_line = Math.ceil(zoomStack[zoomLevel] / Math.pow(razdelki_x, zoomLevel));
	cur_pos = zoomStack[zoomLevel] - (cur_line-1)*Math.pow(razdelki_x, zoomLevel);
	return ((e.clientX+document.body.scrollLeft) - curleft - 1) + (cur_pos-1)*razdelek_width;
}

function findPosY(obj,e)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) {
		curtop += obj.y;
	}

	cur_line = Math.ceil(zoomStack[zoomLevel] / Math.pow(razdelki_x, zoomLevel));
	return ((e.clientY+document.body.scrollTop) - curtop - 1) + (cur_line-1)*razdelek_height;
}
function showCoords() {
	var cur_line;
	var cur_pos;
	var x1;
	var y1;
	x1 = Math.round(((x / Math.pow(razdelki_x, zoomLevel-1) * coordChangeX)+startCoordinateX) * 1)/1;
	y1 = Math.round(((y / Math.pow(razdelki_y, zoomLevel-1) * coordChangeY)+startCoordinateY) * 1)/1;
	document.getElementById("coords").innerText = x1 + ", " + y1;
	window.status=" ";
}
function getCoords(event) {

	var e = (window.event) ? window.event : event;
	
	x = findPosX(document.getElementById("zemljevid"),e);
	y = findPosY(document.getElementById("zemljevid"),e);
}
function Start() {
	zoomTo(1);
}
