var department = "" ;
var querystr = "" ;
var type = "" ;
var speed = "normal" ;
var resultsVisible = "false" ;
var minchars = 2 ;
var inputDelay = 600 ; //delay for reading input field text
var timeout = null ;
var prev = "" ;

$().ready(function() {
	$("#sbm").remove(); //remove submit button, leave for non-js clients
	$("#query").submit(function(){return false;}); //don't submit with enter
	
	$("#searchWord").keyup(function(e) {
		if (timeout) clearTimeout(timeout);
		timeout = setTimeout(function(){onChange();}, inputDelay);
		return false ;
	});
	
	function onChange() {
		var v = $("#searchWord").val();
		if (v == prev) return;
		prev = v;
		
		if($("#departments").attr("class") != "hidden") hideDepartments(); //if departments visible, hide
		
		var longInfoVisible = $(".hCard").children().is(".longInfo") ; //if the extended info is visible, hide it and re-expand results
		if(longInfoVisible && v.length > minchars) {
				$(".longInfo").slideUp(speed,function() {
					do_query($("#searchWord").val());
				});
			} else if (v.length >= minchars) {
				do_query($("#searchWord").val());
			} else {
				hideResults();
		}
	}


	$("#departmentButton").click(function() {
		if($("#departments").attr("class") == "hidden") { //if departments not visible, show
			//hideResults();
			if(timeout) clearTimeout(timeout);
			prev = "" ;
			
			showDepartments();
			$(this).addClass("act");
			return false;
		} else { //else, hide 'em
			hideDepartments();
			$(this).removeClass("act");
			return false;
		}
	});
	
	$("#departments a").click(function() {
		$("#departments a").removeClass("underline");
		do_query_department($(this).attr("id").substr(1));
		$(this).addClass("underline");
		return false;
	});
	
});

function do_query(querystr) {
	$("#results").slideUp(speed,function() {
		$.get("/puhelinluettelo/query.php", {pbq: querystr},function(results){
				$("#results").html(results) ;																															
				$("a.extend").click(function() { // bind load extra info to hcard links
					var hcardId = $(this).parents(".hCard").attr("id") ;
					if(!document.getElementById(hcardId+"_long")) {
						do_query_extrainfo(hcardId,querystr);
					}
					return false;
				});
		});
	});
	$("#results").slideDown(speed);
	return false ;
}

function do_query_extrainfo(hcardId,querystr,deptId) {
			
	$("#"+hcardId+" .shortInfo").slideUp(speed); //hide short info
	$("#"+hcardId+" .shortInfo").addClass("hidden");
	var extraInfo = $.ajax({ //load long info
		type: "GET",
		data: "id=" + hcardId.substr(1) + "&pbq=" + querystr + "&area=" + deptId,
		url:"/puhelinluettelo/persondetails.php",
		async: false
	}).responseText ;
	
	$("#"+hcardId).append(extraInfo); 
	$("#"+hcardId + " .closeButton").removeClass("hidden"); // fix for absolute positioning?
	
	$("a.closeButton").click(function() { 
		hcardId = $(this).parents(".hCard").attr("id");
		$("#"+hcardId+" .longInfo").slideUp(speed, function() {
			$("#"+hcardId+" .longInfo").remove(); 
			$("#"+hcardId+" .shortInfo").removeClass("hidden");
			return false ;
		});
		$("#"+hcardId+" .shortInfo").slideDown(speed);
		return false ;
	});

	return false ;
}

function do_query_department(deptId) {
	$("#results").slideUp(speed,function() {
		setTimeout(function() {
		$.get("/puhelinluettelo/query_area.php", {area: deptId},function(results){
				$("#results").html(results) ;
				$("a.extend").click(function() { // bind load extra info to hcard links
					var hcardId = $(this).parents(".hCard").attr("id") ;
					if(!document.getElementById(hcardId+"_long")) {
						do_query_extrainfo(hcardId,querystr,deptId);
					}
					return false;
				});
				$("#results").slideDown(speed);
		});
		},300);
	});
	return false ;
}

function showDepartments() {
	$("#departments").slideDown(speed);
	$("#departments").removeClass("hidden");
	$("#searchWord").val("");
	$("#results").slideUp(speed);
}

function hideDepartments() {
	if($("#departments").attr("class") != "hidden") {
		$("#departments").slideUp(speed);
		$("#departments").addClass("hidden");
	}
	$("#results").slideUp(speed);
}

function showResults(result) {
		if(resultsVisible == "false") {
			$("#results").slideDown(speed);
			resultsVisible = "true" ;
		}
		$("#results").html(result);
}

function hideResults() {
	$("#results").slideUp(speed);
	resultsVisible = "false" ;
}



