
/*
 * Update functions
 */

updateSearchResults = function(){
	$("#searchresults ul").empty()
	
	addLoader("#searchresults ul")
	getArticlesByQuery()
}

updateFreeArticles = function(){
	addLoader("#giveaway ul")
	getFreeArticles()
}

updateLatestArticles = function() {
	addLoader("#latest ul")
	getLatestArticles()
}

/*
 * render functions
 */

renderSearchData = function(data) {
	renderResults(data)
	renderPager(data)
}


// set subject checkboxes
setSearchSubjects = function(module) {
	var container = $(".checkboxes")
	
	// clean out mess
	container.empty()

	// add header and toggle
	var firstContainer = $(container[0])
	//firstContainer.append($("<h2/>").html("Filter op thema"))
	
	firstContainer.append($("<input type=\"checkbox\"/>").attr("value","Alle thema's").attr("id","toggle").attr("checked","checked"))
	firstContainer.append($("<label/>").attr("for","toggle").attr("title","Selecteer alle thema's").html("<strong>... Selecteer alle thema's</strong>"))
	firstContainer.append($("<br/>"))
		
	$.each(searchSubjects[module], function(i,item){ 
		
		// make sure item is short enough.., add title tag for full item description
		var itemShort = item
		if (item.length > 35) itemShort = item.substr(0,32) + "..."
		
		var currentContainer = $(container[(i+1)%3])
		                             
		currentContainer.append($("<input type=\"checkbox\"/>").attr("value",item).attr("name","Subject").attr("id","cb_"+i).attr("checked","checked"))
		currentContainer.append($("<label/>").attr("for","cb_"+i).attr("title",item).text(itemShort))
		currentContainer.append($("<br/>"))
	})
	
	// add handler
	$(".checkboxes input").click (function(){
		
		// check if all themes is pressed..
		if ($(this).attr("id") == "toggle") {
			var status = $(this).attr("checked")
			handleToggleSubjects(status)
		} else {
			// if any other item checked, uncheck toggle
			$("#toggle").attr("checked", false)
		}	
		
		// get searchresults
		getArticlesByQuery()
	})

}

//set author pulldown
setSearchAuthors = function(data) {
	var container = $("#author")
	
	// sort fields
	data.sort()
	
	$.each(data, function(i,item){ 
		
		container.append($("<option/>").val(item).text(item))

	})
}


// render searchresults
renderResults = function(data) {
	
	// always reset page with new request
	setPage(1)	
	
	if (data.Status == 1) {
		// Status no error

		if (data.Articles.length == 0) {
			// show no result
			renderSearchNoResults()
		} else {
			// show results
			var container = $("#searchresults ul")
			
			// clean out mess
			container.empty()
			
			$.each(data.Articles, function(i,item){ 
			
				var src = item.Metadata.ImageURI	
				var h3 = item.Metadata.Title
				var p = item.Metadata.Summary
				
				var IndicationWorkMaterial = item.Metadata.IndicationWorkMaterial
				var IndicationMedia = item.Metadata.IndicationMedia
				var DocumentURI = item.DocumentID	
			
				var firstDiv = $("<div/>")
				if (src != "") firstDiv.append($("<img/>").attr("class","preview").attr("src",src))
				firstDiv.append($("<h3/>").html(h3))
				firstDiv.append($("<p/>").html(p.substr(0,200) + " ..."))
				
				var secondDiv = $("<div/>").attr("class", "moreinfo clear")
				if (IndicationWorkMaterial) secondDiv.append($("<img/>").attr("class","icon").attr("title","dit artikel bevat werkmateriaal").attr("src","../css/images/icons/icon_attachment.gif"))
				if (IndicationMedia) secondDiv.append($("<img/>").attr("class","icon").attr("title","dit artikel bevat media bestanden").attr("src","../css/images/icons/icon_media.gif"))
				secondDiv.append($("<a/>").attr("class","small left negative").attr("href",DocumentURI).html("LEES MEER"))
				
				var li = $("<li/>")
				li.append(firstDiv)
				li.append(secondDiv)
									
				container.append(li)
			})
		
			container.append($("<div/>").attr("class", "clear"))
			
			// handle popup, beware.. after each.. register only one handler!
			$("#searchresults a").click(function() {
				retrieveArticle($(this).attr("href"))
				return false
			})
		}	

	} else {
		// Status error
		renderSearchArticlesError()
	}	
}

// render freearticles
renderFreeArticles = function(data) {
	
	if (data.Status == 1) {
		// Status no error
	
		var container = $("#giveaway ul")
		
		// clean out mess
		container.empty()
		
		$.each(data.Articles, function(i,item){ 
		
			var src = item.Metadata.ImageURI	
			var h3 = item.Metadata.Title
			var p = item.Metadata.Summary
			
			var DocumentURI = item.DocumentID	
		
			var firstDiv = $("<div/>")
			if (src != "") firstDiv.append($("<img/>").attr("class","preview").attr("src",src))
			firstDiv.append($("<h3/>").html(h3))
			firstDiv.append($("<p/>").html(p.substr(0,200) + " ..."))
			firstDiv.append($("<br/>").attr("class", "clear"))
			
			var li = $("<li/>")
			li.append(firstDiv)
								
			li.append($("<a/>").attr("class","left small negative").attr("href",DocumentURI).html("LEES MEER"))
			li.append($("<div/>").attr("class", "clear"))
			
			container.append(li)
		})
		
		// handle popup, beware.. after each.. register only one handler!
		$("#giveaway a").click(function() {
			retrieveArticle($(this).attr("href"))
			return false
		})
		
		
	} else {
		// Status error
		renderFreeArticlesError()
	}	

}

// render latestarticles
renderLatestArticles = function(data) {
	
	if (data.Status == 1) {
		// Status no error
		var container = $("#latest ul")
		
		// clean out mess
		container.empty()
		
		$.each(data.Articles, function(i,item){ 
		
			var src = item.Metadata.ImageURI	
			var h3 = item.Metadata.Title
			var p = item.Metadata.Summary
			
			var DocumentURI = item.DocumentID	
		
			var firstDiv = $("<div/>")
			if (src != "") firstDiv.append($("<img/>").attr("class","preview").attr("src",src))
			firstDiv.append($("<h3/>").html(h3))
			firstDiv.append($("<p/>").html(p.substr(0,200) + " ..."))
			firstDiv.append($("<br/>").attr("class", "clear"))
			
			var li = $("<li/>")
			li.append(firstDiv)
								
			li.append($("<a/>").attr("class","left small").attr("href",DocumentURI).html("LEES MEER"))
			li.append($("<div/>").attr("class", "clear"))
			
			container.append(li)
	
		})
		
		// handle popup, beware.. after each.. register only one handler!
		$("#latest a").click(function() {
			retrieveArticle($(this).attr("href"))
			return false
		})
		
	} else {
		// Status error
		renderLatestArticlesError()
	}
}

/*
 * render no results
 */

renderSearchNoResults = function() {
	var container = $("#searchresults ul")
	
	// first, clean out the mess..
	container.empty()
	
	var message = $("<h2/>").html("Er zijn geen resultaten gevonden.")
	message.append($("<p/>").html(
		"Suggesties:<br/>" +
		"* Vink meerdere onderwerpen aan.<br/>" +
		"* Probeer andere zoektermen.<br/>" +
		"* Zorg ervoor dat alle woorden goed gespeld zijn.<br/>" + 
		"* Maak de zoektermen algemener.<br/>" +
		"* Gebruik minder zoekwoorden.<br/>"
	))
	container.append(message)
}

/*
 * render errors
 */

renderFreeArticlesError = function() {
	var container = $("#giveaway ul")
	
	// first, clean out the mess..
	container.empty()
	
	// add message
	var message = $("<h2/>").html("Er is een communicatiefout opgetreden.")
	container.append(message)
}

renderLatestArticlesError = function() {
	var container = $("#latest ul")
	
	// first, clean out the mess..
	container.empty()
	
	var message = $("<h2/>").html("Er is een communicatiefout opgetreden.")
	container.append(message)
}

renderSearchArticlesError = function() {
	var container = $("#searchresults ul")
	
	// first, clean out the mess..
	container.empty()
	
	var message = $("<h2/>").html("Er is een communicatiefout opgetreden.")
	container.append(message)
}


/* 
 * pager function
 */

//render pager
renderPager = function(data) {
	
	var container = $("#pagebrowser .container")
	
	if (data.NumberOfPages <=1) {
		// no pager if only one page
		container.empty()
	} else {
		// render pager for more than 1 page
		container.pager({ 
			pagenumber: data.CurrentPage, 
			pagecount: data.NumberOfPages, 
			buttonClickCallback: handlePager 
		});
	}
	
	// center list of pages
	positionPager()
}

// handle pager
handlePager = function(pageclickednumber) {
	// update page field for submitting of query
	setPage(pageclickednumber)
	
	// fire query
	getArticlesByQuery()
}

// set clicked pagenumber in hidden datafield
setPage = function(pageclickednumber) {
	$("input#page").val(pageclickednumber)
}


getBODropdownValue = function () {
	return jQuery.url.param("BOlist")
}

// function called *after* searchsubjects available
setBODropdownValue = function() {
	// set forms by homepage
	var BODropdownValue = getBODropdownValue()
	
	if (BODropdownValue != "") {
		// a specific module is choosen from the homepage
		// set dropdown
		$("#BOlist").val(BODropdownValue)
		handleBOlistChanged()
	}
}

handleBOlistChanged = function() {
	// clean out mess
	var container = $(".checkboxes")
	container.empty()
	
	// module has changed
	if ($("#BOlist").val() != $("#SOlist").val()) {
		setSearchSubjects($("#BOlist").val().toLowerCase())	
	}
	//reset the other form
	$("#SOlist").val(0)
	
	//set market & module
	if ($("#BOlist").val() == "=") {
		// reset market & module
		$("input[name='Market']").val("")
		$("input[name='Module']").val("")
	} else {	
		$("input[name='Market']").val("Basisonderwijs")
		$("input[name='Module']").val($("#BOlist").val())
	}
	
	// invoke query
	updateSearchResults()
}

handleSOlistChanged = function() {
	// clean out mess
	var container = $(".checkboxes")
	container.empty()
	
	// module has changed
	if ($("#SOlist").val() != $("#BOlist").val()) {
		setSearchSubjects($("#SOlist").val().toLowerCase())	
	}
	// reset the other form
	$("#BOlist").val(0)
	
	//set market & module
	if ($("#SOlist").val() == "-") {
		// reset market & module
		$("input[name='Market']").val("")
		$("input[name='Module']").val("")
	} else {	
		$("input[name='Market']").val("Secundair onderwijs")
		$("input[name='Module']").val($("#SOlist").val())
	}	
	
	// invoke query
	updateSearchResults()
}

openSearchPage = function(){
	var urlSearch = "Artikels/"
	
	// get/set value
	var argument = $("#BOlist_home").val()
	if (argument != "-") {
		argument = "?BOlist=" + argument
	} else {
		argument = ""
	}		
	// open window
	window.open(urlSearch + argument, "_self")
}

handleToggleSubjects = function (newStatus){
	
	$("input[name=Subject]").each(function() {
	    $(this).attr("checked",newStatus)
	})
}

/* 
 * form handlers
 */

$(document).ready(function(){
	
	// formhandler for enter key
	$("#keyword").keypress(function (e) {  
		if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {  
			getArticlesByQuery();
			return false;  
		} else {  
			return true;  
		}
	})
	
	// init forms
	$("#BOlist").val("-")
	$("#SOlist").val("-")
	$("#author").val("-")
	$("#level").val("-")
	
	// make sure only one market is choosen
	$("#BOlist").change(function () {
		handleBOlistChanged()
	})
	
	$("#SOlist").change(function () {
		handleSOlistChanged()
	})
	
	// handle size for authors pulldown
	$("#author").focus(function() {
	   $(this).attr("size",6)
	});

	$("#author").blur(function() {
	   $(this).attr("size",1)
	});
	
	// handle popup, beware.. after each.. register only one handler!
	$("#citaatbox a").click(function() {
		retrieveArticle($(this).attr("href"))
		return false
	})

})	
