var $nl_map, $mark_map, $select_map, $hovermap;
var current_bbox;
var marked = {};
var $dot;

function marker(x,y,n){
	var m = $("#mapdiv").append('<div class="marker" style="left:' + (x - 5) + 'px;top:' + (y - 32) + 'px;">' + n + '<img src="/images/downarrow.gif" alt="" /></div>');
}

function imagemap(data) {
	$("#imgmap").empty();
	$(data.gebieden).each(function(i){
		var gebiedscode = this.gebiedscode;
		var gebiedsnaam = this.gebiedsnaam;
		$(this.polys).each(function(j){
			var area = document.createElement("AREA");
			area.shape = "POLY";
			area.coords = this;
			area.title = gebiedsnaam;
			area.setAttribute("gebiedscode", gebiedscode);
			area.href = "javascript:void(0);";
			$("#imgmap").append(area);
		});
	});
}

function mark_map(){
	var g = [];
	for (var gc in marked) { g.push(gc); }
	if (g.length>0) {
		var gebieden = g.join(',');
		$mark_map.attr("src", "/simplemap.mpl?kaart=Cebuco&all=1&fillcolor=d01f26&bordercolor=ffffff&gebieden=" + encodeURIComponent(gebieden)).show();
	} else {
		$mark_map.hide();
	}
}

function update_numbers(aclass) {
	$("#num_1").html(' (' + $("#landelijk li.paper" + (aclass?"."+aclass:"")).size() + '/' + $("#landelijk li.paper").size() + ')');
	$("#num_2").html(' (' + $("#regionaal li.paper" + (aclass?"."+aclass:"")).size() + '/' + $("#regionaal li.paper").size() + ')');
	$("#num_3").html(' (' + $("#combinatie li.paper" + (aclass?"."+aclass:"")).size() + '/' + $("#combinatie li.paper").size() + ')');
	$("#selectmarked").toggle($("#titeldiv li.paper.marked").size()>0);
}

function mark_titles(on){
	var areas_marked = 0;
	var g = [];
	$("#titeldiv li.paper").removeClass("marked").addClass("unmarked");
	if (on) {
		$.each(marked, function(i, a){ g.push(i); });
		if (g.length>0) {
			$.getJSON("/titles.mpl", {kaart:"Cebuco", gebieden:g.join(","), random:Math.random()}, function(rslt) {
				$.each(rslt.titles, function(i, n){
					areas_marked++;
					var div = $('#titeldiv li[titlecode="' + n + '"]').removeClass("unmarked").addClass("marked").closest("div");
					if (div.hasClass("collapsed")) div.removeClass("collapsed").addClass("expanded");
					if (div.attr("id") == "combinatie") {
						div.find("li.collapsed").removeClass("collapsed").addClass("expanded").find("ul.editions").show();
					}
				});
				update_numbers("marked");
				$("#clearmarked").toggle((areas_marked>0));
			});
		}
	}
	if (!(on && g.length)) {
		$("#titeldiv li.paper").removeClass("marked").removeClass("unmarked");
		update_numbers();
		$("#clearmarked").toggle((areas_marked>0));
	}
}

function getdata(params){
	$.getJSON("/simpledata.mpl", params, function(data){
		if (data.bbox) current_bbox = data.bbox.join(",");
		if (data.gebieden) imagemap(data);
	});
}

function select_title_areas(){
	var g = [];
	var all = false;
	$("#titeldiv li.paper input:checked").each(function(i){
		var $li = $(this).closest("li");
		var code = $li.attr("titlecode");
		if ($li.hasClass("landelijk")) {
			all = true;
		} else {
			g.push(code);
		}
	});
	if (all) {
		$nlmap.attr("src", "/simplemap.mpl?kaart=Cebuco&all=1&fillcolor=11547966&bordercolor=ffffff");
	} else {
		$nlmap.attr("src", "/simplemap.mpl?kaart=Cebuco&all=1&fillcolor=cccccc&bordercolor=ffffff");
	}
	if (g.length>0) {
		$select_map.attr("src", "/simplemap.mpl?kaart=distribution&all=1&fillcolor=006699&bordercolor=006699&gebieden=" + encodeURIComponent(g.join(','))).show();
	} else {
		$select_map.hide();
	}
	$("#clearselected").toggle($("#titeldiv li.paper input:checked").size()>0);
}

$(function(){
	$("area").live("click", function(){
		var gc = $(this).attr("gebiedscode");
		if (marked[gc]) { delete(marked[gc]); } else { marked[gc] = 1; }
		mark_titles(1);
		mark_map();
		$("#titellistheader").addClass("no_bereik");
		$("#titeldiv").addClass("no_bereik");
		return false;
	});
	$("area").live("mouseover", function(){
		var gc = $(this).attr("gebiedscode");
		$hovermap.attr("src", "/simplemap.mpl?kaart=Cebuco&all=1&fillcolor=d01f26&bordercolor=ffffff&gebieden=" + encodeURIComponent(gc));
	});
	$("area").live("mouseout", function(){
		$hovermap.attr("src", "/images/empty.gif");
	});
	$("#titeldiv li.paper").live("mouseover", function(e){
		var $li = $(this);
		var code = $li.attr("titlecode");
		if ($li.hasClass("landelijk")) {
			$hovermap.attr("src", "/simplemap.mpl?kaart=Cebuco&all=1&fillcolor=df282399&bordercolor=ffffff");
		} else {
			if (code) $hovermap.attr("src", "/simplemap.mpl?kaart=distribution&fillcolor=df2823cc&all=1&bordercolor=ffffff&gebieden=" + encodeURIComponent(code));
		}
	});
	$("#titeldiv li.paper").live("mouseout", function(){
		$hovermap.attr("src", "/images/empty.gif");
	});
	$("#titeldiv li.paper input:checkbox").live("click", function(){
		var $this = $(this);
		var $li = $this.closest("li");
		var code = $li.attr("titlecode");
		var checked = $this.is(":checked");
		if ($li.hasClass("edition")) {
			var $top = $li.closest("li.haseditions");
			$top.find("span.input input:checkbox:first").attr("checked", 0);
		} else {
			$li.find("li.edition input:checkbox").attr("checked", 0);
		}
		select_title_areas();
	});
	$("#titeldiv div.collapsed span.kop").live("click", function(){
		var $this = $(this).closest("div");
		$this.removeClass("collapsed").addClass("expanded");
	});
	$("#titeldiv div.expanded span.kop").live("click", function(){
		var $this = $(this).closest("div");
		$this.removeClass("expanded").addClass("collapsed");
	});
	$("#titeldiv li.haseditions").live("click", function(e){
		if (e.target.tagName == "LI") {
			var $this = $(this);
			if ($this.hasClass("collapsed")) {
				$this.removeClass("collapsed").addClass("expanded").find("ul").show();
			} else {
				$this.removeClass("expanded").addClass("collapsed").find("ul").hide();
			}
		}
	});
	$("#selectmarked").live("click", function(){
		$("#titeldiv li.paper.marked").each(function(i,n){
			var $this = $(this);
			if (!$this.hasClass("combination")) {
				$this.find("input:checkbox").attr("checked", "checked");
			}
		});
		select_title_areas();
		return false;
	});
	$("#clearmarked").live("click", function(){
		marked = {};
		mark_titles(0);
		mark_map();
		$(".no_bereik").removeClass("no_bereik");
		return false;
	});
	$("#clearselected").live("click", function(){
		$("#titeldiv li.paper input:checked").attr("checked", 0);
		select_title_areas();
		return false;
	});
	$("#lookupbtn").live("click", function(){
		$("#mapdiv .marker").remove();
		var keyword = $("#lookup").val();
		if (keyword) {
			$.getJSON("/locate.mpl", {keyword:keyword,random:Math.random()}, function(rslt){
				$.each(rslt.gemeenten, function(i, g){
					marker(g.x, g.y, g.naam);
				});
			});
		}
		return false;
	});
});

