function initialize() {
  	$("#showhide").toggle(
		function() {
			$('#showhide').animate({
				'right':'0%',
			},"slow");
			$('#showhide').animate({
				backgroundPosition:"(20 0)"
			},1);
			$("#sidebar").animate({width: "0%"},"slow");
			$("#map").animate({width: "100%"},"slow");
		},
		function() {
			$("#sidebar").animate({width: "20%"},"slow");
        	$("#map").animate({width: "80%"},"slow");
			$('#showhide').animate({
				'right':'20%'
			},"slow");
			$('#showhide').animate({
				backgroundPosition:"(0 0)"
			},1);
	});
    document.getElementById('map').style.backgroundColor = "#324a54";
    $("#categories dt:first").find("img").attr("src", "images/p_o.png");
    $("#categories dd:first").slideDown("slow");
    $("#categories dt").click(function () {
        if ($(this).next().css("display") == "none") {
            $("#categories dd:visible").parent().find("img").attr("src", "images/p_c.png");
            $("#categories dd:visible").parent().find("img").css("right", "6px");
            $("#categories dd:visible").slideUp("slow");
            $(this).next().slideDown("slow");
            $(this).find("img").attr("src", "images/p_o.png");
            $(this).find("img").css("right", "5px")
        }
        return false
    });
    $("#keywords").focus(function () {
        $(this).val("")
    });
    $("#keywords").blur(function () {
        if (!$(this).val()) $(this).val("Szukaj..")
    });
    $("#keywords").keypress(function () {})
};
var map = new GMap2(document.getElementById("map"));
map.enableScrollWheelZoom();
/*
var request = GXmlHttp.create();
request.open("GET", "areas.xml", true);
request.onreadystatechange = alert(request.readyState);

request.onreadystatechange = function() {

	if (request.readyState == 4) {
		var xmlDoc = GXml.parse(request.responseText);
		var states = xmlDoc.documentElement.getElementsByTagName("state");

		for (var a = 0; a < states.length; a++) {
			var label  = states[a].getAttribute("name");
			var colour = states[a].getAttribute("colour");
			var points = states[a].getElementsByTagName("point");
			var pts = [];
			for (var i = 0; i < points.length; i++) {
				pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")),parseFloat(points[i].getAttribute("lng")));
			}
			var poly = new GPolygon(pts,"#000000",1,1,"#ff0000",0.5);
			polys.push(poly);
			labels.push(label);
			map.addOverlay(poly);
		}
	}
}
request.send(null);
*/
function GLatLngFix(x, y) {
    return new GLatLng(x * -0.00013944710659832798872, y * 0.0000008877409696666)
};
function fixCords(x,y) {
    return new GLatLng(x -0.02197, y -0.04394)
}
CustomGetTileUrl = function (a, b) {
    if (b == 14 && a.x >= 8190 && a.x <= 8192 && a.y >= 8190 && a.y <= 8192) {
        return "tiles/" + b + "_" + a.x + "_" + a.y + ".jpg"
    } else if (b == 15 && a.x >= 16380 && a.x <= 16385 && a.y >= 16380 && a.y <= 16385) {
        return "tiles/" + b + "_" + a.x + "_" + a.y + ".jpg"
    } else if (b == 16 && a.x >= 32760 && a.x <= 32771 && a.y >= 32760 && a.y <= 32771) {
        return "tiles/" + b + "_" + a.x + "_" + a.y + ".jpg"
    } else if (b == 17 && a.x >= 65520 && a.x <= 65543 && a.y >= 65520 && a.y <= 65543) {
        return "tiles/" + b + "_" + a.x + "_" + a.y + ".jpg"
    } else {
        return "tiles/water.jpg"
    }
};
var gicons = [];
var gmarkers = [];
var gcategories = [];
for (var i = 1; i <= 66; i++) {
    gicons[i] = new GIcon();
    gicons[i].image = 'icon/' + i + '.png';
    gicons[i].iconSize = new GSize(16, 16);
    gicons[i].shadow = null;
    gicons[i].iconAnchor = new GPoint(8, 8);
    gicons[i].infoWindowAnchor = new GPoint(8, 8)
}

function createMarker(point, name, html, icon, category, id) {
    var marker = new GMarker(point, {
        icon: gicons[icon]
    });
    marker.category = category;
    marker.myname = name;
    marker.mid = id;
    GEvent.addListener(marker, "click", function () {
        marker.openInfoWindowHtml(html)
    });
    gmarkers.push(marker);
    return marker
};

function goToMarker(id) {
    for (var i = 0; i < gmarkers.length; i++) {
        if (gmarkers[i].mid == id) {
            GEvent.trigger(gmarkers[i], "click")
        }
    }
};

function show(category) {
    for (var i = 0; i < gmarkers.length; i++) {
        if (gmarkers[i].category == category) {
            gmarkers[i].show()
        }
    }
};

function hide(category) {
    for (var i = 0; i < gmarkers.length; i++) {
        if (gmarkers[i].category == category) {
            gmarkers[i].hide()
        }
    }
    map.closeInfoWindow()
};
var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90, -90), new GLatLng(90, 90)), 14, "LS-RP.net");
var copyrightCollection = new GCopyrightCollection('');
copyrightCollection.addCopyright(copyright);
var tilelayers = [new GTileLayer(copyrightCollection, 14, 17)];
tilelayers[0].getTileUrl = CustomGetTileUrl;
tilelayers[0].getCopyright = function (a, b) {
    var c = copyrightCollection.getCopyrightNotice(a, b);
    if (!c) {
        c = G_NORMAL_MAP.getTileLayers()[0].getCopyright(a, b)
    }
    return c
};
var custommap = new GMapType(tilelayers, G_SATELLITE_MAP.getProjection(), "Custom map");
map.addMapType(custommap);
map.setCenter(new GLatLng(0.011, -0.01), 14, custommap);
var customUI = map.getDefaultUI();
customUI.maptypes.maptypecontrol = false;
customUI.controls.scalecontrol = false;
customUI.maptypes.normal = false;
customUI.maptypes.satellite = false;
customUI.maptypes.hybrid = false;
customUI.maptypes.physical = false;
map.setUI(customUI);
var ovcontrol = new GOverviewMapControl(new GSize(150, 150));
map.addControl(ovcontrol);
GEvent.addListener(map, "move", function () {
    checkBounds()
});
var allowedBounds = new GLatLngBounds(new GLatLng(-0.02, -0.045), new GLatLng(0.045, 0.02));

function checkBounds() {
    if (allowedBounds.contains(map.getCenter())) {
        return
    }
    var C = map.getCenter();
    var X = C.lng();
    var Y = C.lat();
    var AmaxX = allowedBounds.getNorthEast().lng();
    var AmaxY = allowedBounds.getNorthEast().lat();
    var AminX = allowedBounds.getSouthWest().lng();
    var AminY = allowedBounds.getSouthWest().lat();
    if (X < AminX) {
        X = AminX
    }
    if (X > AmaxX) {
        X = AmaxX
    }
    if (Y < AminY) {
        Y = AminY
    }
    if (Y > AmaxY) {
        Y = AmaxY
    }
    map.setCenter(new GLatLng(Y, X))
};
var request = GXmlHttp.create();
request.open("GET", "markers.xml", true);
request.onreadystatechange = function () {
    if (request.readyState == 4) {
        var xmlDoc = GXml.parse(request.responseText);
        var categories = xmlDoc.documentElement.getElementsByTagName("category");
        for (var i = 0; i < categories.length; i++) {
            var category = {};
            category.id = categories[i].getAttribute("id");
            category.name = categories[i].getAttribute("name");
            gcategories.push(category);
            $("#categories").append('<dt id="c_' + category.id + '">' + category.name + '<img src="images/p_c.png" style="position: absolute; right: 5px; top: 11px;" /></dt><dd><ul id="l_' + category.id + '"></ul></dd>')
        }
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        var iid = 0;
        for (var i = 0; i < markers.length; i++) {
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = fixCords(lat, lng);
            var name = markers[i].getAttribute("name");
            var html = '<div class="title"><b>' + name + '</b></div>' + markers[i].getAttribute("html");
			if(markers[i].getAttribute("image")) {
				var html = html + '<div class="image"><img src="'+markers[i].getAttribute("image")+'"/></div>';
			}
            var icon = markers[i].getAttribute("icon");
            var category = markers[i].getAttribute("category");
            var marker = createMarker(point, name, html, icon, category, iid);
            map.addOverlay(marker);
            $("#l_" + category).append('<li id="m_' + iid + '" onclick="goToMarker(' + iid + ')">' + name + '</li>');
            iid++
        }
    }
};
request.send(null);
var polys = [];
var labels = [];
GEvent.addListener(map, "click", function (overlay, point) {
    if (!overlay) {
        for (var i = 0; i < polys.length; i++) {
            if (polys[i].Bound.contains(point)) {
                if (polys[i].Contains(point)) {
                    map.openInfoWindowHtml(point, "Teren <b>" + labels[i] + "</b>");
                    i = Infinity
                }
            }
        }
    }
});

var request2 = GXmlHttp.create();
request2.open("GET", "areas.xml", true);
request2.onreadystatechange = function () {
    if (request2.readyState == 4) {
        var xmlDoc = GXml.parse(request2.responseText);
        var states = xmlDoc.documentElement.getElementsByTagName("state");
        for (var a = 0; a < states.length; a++) {
            var label = states[a].getAttribute("name");
            var colour = states[a].getAttribute("colour");
            var colour2 = states[a].getAttribute("colour2");
            var points = states[a].getElementsByTagName("point");
            var pts = [];
            var bound = new GLatLngBounds();
            for (var i = 0; i < points.length; i++) {
                //pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")), parseFloat(points[i].getAttribute("lng")));
				pts[i] = fixCords(parseFloat(points[i].getAttribute("lat")), parseFloat(points[i].getAttribute("lng")));
                bound.extend(pts[i])
            }
            var poly = new GPolygon(pts, colour2, 1, 0.6, colour, 0.3, {
                clickable: false
            });
            //polys.push(poly);
            //labels.push(label);
            //poly.Bound = bound
			map.addOverlay(poly);
        }
        for (var i = 0; i < polys.length; i++) {
            polys[i].hide()
        }
    }
};

request2.send(null);
GEvent.addListener(map, "zoomend", function (oldLevel, newLevel) {
    if ((oldLevel == 14 || oldLevel == 15) && newLevel > 15) {
        for (var i = 0; i < polys.length; i++) {
            polys[i].show()
        }
    } else if ((newLevel == 14 || newLevel == 15) && oldLevel > 13) {
        for (var i = 0; i < polys.length; i++) {
            polys[i].hide()
        }
    }
});
