// variables
var sort = "";
var lastquery = 0;
var lastquerystr = "";

// prepare site when document finished loading
$(document).ready(function(){
	$("#searchinputfield").bind("click focus change keyup",function() {
		if ($("#searchinputfield").attr("value")=="Suchkriterien z.B. Analyst") {
			$("#searchinputfield").attr("value","");
		}
		doQuery(false);
	});
	
	$("#abomailinput").bind("click focus",function() {
		if ($("#abomailinput").attr("value")=="Deine E-Mail") {
			$("#abomailinput").attr("value","");
		}
	});
	
	$('#abosenden').bind("click",function() {
		$.getJSON("ajaxsaveabo.php",getDataForQuery()+"&email="+encodeURIComponent($("#abomailinput")[0].value),
	        function(data){
	        	if (!data.ok) {
					$("#dialog").text("Ihr Email-Abo konnte nicht gespeichert werden. Evlt. haben Sie eine ungültige Email-Adresse angegeben.");
				}
				else {
					$("#dialog").text("Ihr Email-Abo wurde erfolgreich gespeichert.");
				}
				$("#dialog").dialog({ 
		    		modal: true,
					height: 120,
					width: 300,
					draggable:false,
					resizable:false,
		    		overlay: {opacity: 0.5, background: "black" },
					buttons: {"schliessen": function() { $(this).dialog("close"); } } 
				});
			});
		showMailAbo();
	});
	
	$(".filterinakt,.filterakt").bind("click", function () {
		$(this).children('img').attr('style','');
		if ($(this).attr('class')=="filterakt") {
			$(this).attr('class','filterinakt');
			$(this).children('img').css('display','none');
		}
		else {
			$(this).attr('class','filterakt');
			$(this).children('img').css('display','inline');
		}
		doQuery(false);
	});
	
	$(".sort,.notsort").bind("click", function() {
		$(".sort").attr("class","notsort");
		$(this).attr("class","sort");
		doQuery(false);
	});
	
	$("#abo").bind("click", showMailAbo);
	$("#abomailinput").bind("click", function() {return false});
	$("#abosenden").bind("click", function() {return false});
	sort = $('.sort').text();
	loadJobs(true);
});


function doQuery(fromtimeout) {
	now = new Date().valueOf();
	if ((now-lastquery)>500) {
		if (sort == $('.sort').text()) loadJobs(false);
		else loadJobs(true);
		lastquery = now;
	}
	else if (!fromtimeout) {
		setTimeout("doQuery(true)",510);
	}
}

function getDataForQuery() {
	q = "";
	if ($("#searchinputfield")[0].value!="Suchkriterien z.B. Analyst" && $("#searchinputfield")[0].value!="") q += "q="+encodeURIComponent($("#searchinputfield")[0].value)+"&";
	q += "tv="+getValueOfFilter($('#tv'))+"&";
	q += "tt="+getValueOfFilter($('#tt'))+"&";
	q += "ti="+getValueOfFilter($('#ti'))+"&";
	q += "tp="+getValueOfFilter($('#tp'))+"&";
	q += "sf="+getValueOfFilter($('#sf'))+"&";
	q += "sb="+getValueOfFilter($('#sb'))+"&";
	q += "sw="+getValueOfFilter($('#sw'))+"&";
	q += "sa="+getValueOfFilter($('#sa'))+"&";
	q += "aa="+getValueOfFilter($('#aa'))+"&";
	q += "ab="+getValueOfFilter($('#ab'))+"&";
	q += "am="+getValueOfFilter($('#am'))+"&";
	q += "ap="+getValueOfFilter($('#ap'))+"&";
	q += "sort="+$('.sort').text();
	return q;
}

function getValueOfFilter(elem) {
	if (elem.attr("class")=="filterakt") return 1;
	else return 0;
}

function loadJobs(loadcontent) {
	qs = getDataForQuery();
	if (lastquerystr==qs) return;
	else lastquerystr=qs;
	loading(true);
	if (loadcontent) {
		sta = "t";
		sort = $('.sort').text();
	}
	else sta = "";
	$.getJSON("ajaxsearch.php?lc="+sta,qs,
        function(data){
        	showJobs(data,loadcontent);
	});
}

function showJobs(jobs,loadcontent) {
	if (loadcontent) {
		$('#jobs').html("");
		for (i = 0; i<jobs.length; i++) {
			pdf = "";
			if (jobs[i].disp==1) disp = '';
			else disp = ' nodisp';
			if (jobs[i].pdf!="") pdf = ' <a class="pd" target="_blank" href="/pdfs/'+jobs[i].pdf+'"><img src=\"/img/pdficon.gif\" class=\"pdf\" /></a>';
			$('#jobs').append('<div class="job'+disp+'" id="'+jobs[i].AdID+'"><a class="jt" href="showentry.php?id='+jobs[i].AdID+'">'+jobs[i].position+pdf+'</a><br>Inseriert am '+jobs[i].day+'.'+jobs[i].month+'.'+jobs[i].year+' von <a class="h">'+jobs[i].firmenname+'</a> in <a class="h">'+jobs[i].arbeitsort+'</a> tätig im Bereich <a class="h">'+jobs[i].branche+'</a></div>');
		}
		
		showJobsAtStart($('.job'),0);
	}
	else {
		jobsOnPage = $('.job');
		for (i = 0; i<jobsOnPage.length; i++) {
			found = false;
			for (j = 0; j<jobs.length; j++) {
				if (jobs[j].AdID==jobsOnPage[i].id) {
					found=true;
					$('#nojobs').hide();
					$(jobsOnPage[i]).fadeIn("def",function() {rePaint();});
				}
			}
			if (!found) {
				$(jobsOnPage[i]).fadeOut("def",function() {rePaint();});
			}
		}
		loading(false);
	}
}

function rePaint() {
	$('.job').css('border-bottom','1px solid #dee1e6');
	$($('.job:visible')[$('.job:visible').length-2]).css('border-bottom','1px solid white');
	$($('.job:visible')[$('.job:visible').length-1]).css('border-bottom','1px solid white');
	if ($(".job:visible").length==0) $('#nojobs').show();
	else $('#nojobs').hide();
}

function showJobsAtStart(jobs, i) {
	if (i>=jobs.length) {
        rePaint();
		loading(false);
		return;
	}
	var time = Math.max(100,300-(i*50));
	if ($(jobs[i]).hasClass("nodisp")) showJobsAtStart(jobs,i+1);
	else {
		$('#nojobs').hide();
		$(jobs[i]).fadeIn(time,function() {showJobsAtStart(jobs,i+1) });
	}
}

function loading(on) {
	if (on) $("body").css("background","url('/img/loading.gif') no-repeat");
	else $("body").css("background","");
}

var aboHasBeenShown = false;
function showMailAbo() {
	if ($('#abodiv').is(':visible')) {
		$('#abodiv').fadeOut();
	}
	else {
		$('#aboklick').css("left","34px");
		if (!aboHasBeenShown) $('#abo').absolutize();
		if (!aboHasBeenShown) $('#abo').css('left',$('#abo').css('left').substring(0,$('#abo').css('left').length-2)-34);
		$('#abodiv').fadeIn();
		aboHasBeenShown = true;
	}
}

function hideMailAbo() {
	$('#abodiv').fadeOut();
	$('#aboklick').css("left","0px");
}
