/* USTAWiENiA */
if (window.ActiveXObject) window.ie = window[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true;
else if (document.childNodes && !document.all && !navigator.taintEnabled) window.khtml = true;
else if (document.getBoxObjectFor != null) window.gecko = true;

function pageWidth()
{
    if (window.khtml) return window.innerWidth;
    if (window.opera) return document.body.clientWidth;
    return document.documentElement.clientWidth;
}

function pageHeight()
{
    if (window.khtml) return window.innerHeight;
    if (window.opera) return document.body.clientHeight;
    return document.documentElement.clientHeight;
}

/* MAPA */
var zoom_x = new Array();
var zoom_y = new Array();
zoom_x[0] = 1753;	zoom_y[0] = 1615;
zoom_x[1] = 877;	zoom_y[1] = 808;
zoom_x[2] = 439;   	zoom_y[2] = 406;
zoom_x[3] = 220;   	zoom_y[3] = 205;
zoom_x[4] = 112;   	zoom_y[4] = 103;
zoom_x[5] = 58;   	zoom_y[5] = 53;
zoom_x[6] = 32;   	zoom_y[6] = 28;
zoom_x[7] = 16;   	zoom_y[7] = 16;
zoom_x[8] = 10;   	zoom_y[8] = 10;
zoom_x[9] = 0;   	zoom_y[9] = 0;

var zoom = 8;

var img_size = 200;
var map_width = zoom_x[zoom] * img_size;
var map_height = zoom_y[zoom] * img_size;
var x_cord = 0;
var y_cord = 0;
var i,j,page_width,page_height,half_width,half_height;
var map_move = false;
var map_move_sx,map_move_sy;

function map_refresh()
{
	var map_parts = '';
	var x_part_number = Math.floor(Math.abs((x_cord/img_size)));
	var y_part_number = Math.floor(Math.abs((y_cord/img_size)));
	var tmp_y = y_part_number;
	var part_left = x_part_number * img_size;
	var part_top = y_part_number * img_size;

	var how_many_parts_show_x = Math.ceil(((page_width - (x_cord%img_size))/img_size));
	var how_many_parts_show_y = Math.ceil(((page_height - (y_cord%img_size))/img_size));

	for(i = 1; i <= how_many_parts_show_x; i++) {
		for(j = 1; j <= how_many_parts_show_y; j++) {
			map_parts += '<div class="mappart" style="left:'+(part_left + img_size * (i-1))+'px;top:'+(part_top + img_size * (j-1))+'px"><img src="http://mapa.szukacz.pl/t?p='+zoom;
			map_parts += (x_part_number<10 ? '000' : (x_part_number<100 ? '00' : (x_part_number<1000 ? '0' : ''))) + x_part_number;
			map_parts += (y_part_number<10 ? '000' : (y_part_number<100 ? '00' : (y_part_number<1000 ? '0' : ''))) + y_part_number;
			map_parts += '" /></div>';
			y_part_number++;
		}
		y_part_number = tmp_y;
		x_part_number++;
	}
	
	document.getElementById('map').innerHTML = map_parts;
}

function zoommap(how)
{
	mapa = document.getElementById('map');
	if (how == 'in') {
		if (zoom > 0) {
			zoom--;
			x_cord = (x_cord < -half_width  ? (x_cord - half_width) * 2 + half_width : x_cord * 2);
			y_cord = (y_cord < -half_height ? (y_cord - half_height) * 2 + half_height : y_cord * 2);
			mapa.style.left = x_cord+'px';
			mapa.style.top = y_cord+'px';
			map_width = zoom_x[zoom] * img_size;
			map_height = zoom_y[zoom] * img_size;
			map_refresh();
		} else {
			alert('Nie można bardziej przybliżyć');
		}
	}
	if (how == 'out') {
		if (zoom < 8) {
			zoom++;
			x_cord = (x_cord < -half_width  ? Math.ceil(((x_cord - half_width) / 2 + half_width)) : Math.ceil((x_cord/2)));
			y_cord = (y_cord < -half_height ? Math.ceil(((y_cord - half_height) / 2 + half_height)) : Math.ceil((y_cord/2)));
			mapa.style.left = x_cord+'px';
			mapa.style.top = y_cord+'px';
			map_width = zoom_x[zoom] * img_size;
			map_height = zoom_y[zoom] * img_size;
			map_refresh();
		} else {
			alert('Nie można bardziej oddalić');
		}
	}
	document.getElementById('zoomhandle').innerHTML = '<b>zoom x'+(9-zoom)+'</b>';
}

window.onresize = function() {
	page_width = pageWidth();
	page_height = pageHeight();
	half_width = Math.floor((page_width/2));
	half_height = Math.floor((page_height/2));

    document.getElementById('mapview').style.width = page_width+'px';
    document.getElementById('mapview').style.height = page_height+'px';

	map_refresh();
};

window.onload = function() {
	page_width = pageWidth();
	page_height = pageHeight();
	half_width = Math.floor(page_width/2);
	half_height = Math.floor(page_height/2);

    document.body.innerHTML = '<div id="mapview"><div id="map"></div></div><div id="zoompan"><div id="zoomhandle"><b>zoom x'+(9-zoom)+'</b></div><input type="button" onclick="zoommap(\'in\')" value="+" /><br /><input type="button" onclick="zoommap(\'out\')" value="-" /></div>';
    var mapview = document.getElementById('mapview');
    var zoompan = document.getElementById('zoompan');
    var mapa = document.getElementById('map');
    mapview.style.width = page_width+'px';
    mapview.style.height = page_height+'px';
    mapa.style.width = map_width+'px';
    mapa.style.height = map_height+'px';
    
    mapa.onmousedown = function(event) {
        var event = window.event ? window.event : event;
        
        map_move = true;
        map_move_sx = event.screenX;
        map_move_sy = event.screenY;
        event.preventDefault();
    }
    
    mapa.onmousemove = function(event) {
        if (map_move) {
            var event = window.event ? window.event : event;
            
            mapa.style.left = x_cord + (event.screenX - map_move_sx)+'px';
            mapa.style.top = y_cord + (event.screenY - map_move_sy)+'px';
            
            var left = parseInt(mapa.style.left);
            var top = parseInt(mapa.style.top);
            if (left > 0) mapa.style.left = '0px';
            if (left < -(map_width - page_width)) mapa.style.left = (-(map_width - page_width))+'px';
            if (top > 0) mapa.style.top = '0px';
            if (top < -(map_height - page_height)) mapa.style.top = (-(map_height - page_height))+'px';
        }
    }
    
    mapa.onmouseup = function() {
        map_move = false;
        x_cord = parseInt(mapa.style.left);
        y_cord = parseInt(mapa.style.top);
        map_refresh();
    }
	
	map_refresh();
};

