/**
 * @author Joz
 */

var selected;
var clickOffset = 10; // offset added in CSS to allow for easier clicking
var timer;
var overInfo = false; // flag to see if user is over #markerinfo window
var overMarker = false; // flag to see if user is over #marker
var hideDelay = 500; // delay before info window closes after mouseout

$(document).ready(function(){
		
	$('#gemeente').autofill({
		value: 'Postcode of gemeente',
		defaultTextColor: '#999',
		activeTextColor: '#000'
	});
	
	// listen to this form events
	$("#postcodeform").ajaxForm({
		success:  handleResponse,
		beforeSubmit: hide_info,
		dataType:  'json'
	});
	
	init_offices();
		
});

function hide_all_markers() {
	$("a.marker").hide();
}

function handleResponse(response) {
	if (response.office) {
		// hide_all_markers();
		var markerObj = $("a.marker#"+response.office.office_id);
		show_info(markerObj);
	} else {
		alert("Deze gemeente werd niet gevonden in Vlaanderen.\nControleer op typfouten of typ de postcode van uw gemeente.");
	}

}

function init_offices() {
	var total_offices = offices.length;
	var html = "";
	for (var i=0; i<total_offices; i++) {
		html += '<a href="'+offices[i].url+'" id="'+offices[i].id+'" class="marker" style="left:'+(offices[i].xpos-clickOffset)+'px;top:'+(offices[i].ypos-clickOffset)+'px;" target="_blank"></a>';
	}
	$("#result").append(html);
	
	$("#markerinfo").hover(
      function () {
        overInfo = true;
      }, 
      function () {
	  	overInfo = false;
		timer = setTimeout("hide_info()", hideDelay);         
      }
    );

	$("a.marker").bind("mouseenter",function(){
		overMarker = true;
		show_info($(this));		
	});
	
	$("a.marker").bind("mouseover",function(){
		overMarker = true;
		if (timer) clearTimeout(timer);
	});
	
	$("a.marker").bind("mouseout",function(){
		overMarker = false;
		timer = setTimeout("hide_info()", hideDelay);   	
	});
	
	/*	
	$("a.marker").hover(
      function () {
        show_info($(this));
      }, 
      function () {
	  	timer = setTimeout("hide_info()", hideDelay);        
      }
    );
    */
	
}

function show_info(markerObj) {
	
	if (timer) clearTimeout(timer);
	
	$("a.marker.active").removeClass("active");
	markerObj.addClass("active");
	markerObj.show();
	
	var id = parseInt(markerObj.attr("id"));
	selected = id;
	var markerinfo = $("#markerinfo");
	var height = parseInt(markerinfo.css("height"));
	var width = parseInt(markerinfo.css("width"));
	var left = parseInt(markerObj.css("left"))-width+clickOffset;
	var top = parseInt(markerObj.css("top"))-(height-34-clickOffset)/2;
	markerinfo.css("left",left+"px");
	markerinfo.css("top",top+"px");
	
	var html = '<p>'+offices[id-1].name+'</p>';
	markerinfo.attr("href",offices[id-1].url);
	markerinfo.html(html);
	markerinfo.show();
	
	// verander provincie
	$("#provincie").attr("src","/img/provincies/regio"+id+".gif");
}

function hide_info() {
	if (!overInfo && !overMarker) {
		$("a.marker.active").removeClass("active");
		$("#markerinfo").hide();
		$("#provincie").attr("src", "/img/provincies/empty.gif");
	}
}
