/* ################################################## */
/*  jquery.jb.js - JavaScript specifiek voor JB       */
/*  Frontend development: Kevin Levie / www.levity.nl */
/* ################################################## */

$(function() {

	// AJAX-FUNCTIONALITEIT
	// --------------------------------------------------------------------------
	
	(function(window,undefined){
		var History = window.History;
		
		// onload: als er een state-hash bestaat (in link van buiten), herladen we de pagina
		if(location.hash != "") {
			location.href = location.hash.replace("#","");
		}
		
		// functie om nieuwe tab in te laden (artiestenpagina's)
		function loadArtiestTab(url, title) {
			if(url.charAt(url.length-1)!="/") url += "/";
			$.get ( url + "ajaxtab/", function(data) {
				$("#tabcontent").html(data);
				$("a.ajax").removeClass("activeLink");
				$("a[title='"+title.toLowerCase()+"']").addClass("activeLink");
				$("#lastcrumb").html("<a href='"+url+"'>"+title.ucfirst()+"</a>");
			});			
		}
		
		// functie om nieuwe inhoud in ajaxcontainer te laden (zoeken/paginering)
		function loadAjaxContent(url, title) {
			$.get ( url + "/ajax/", function(data) {
				$("#ajaxcontainer").html(data);
			});
		}
		
		// algemene functie voor (html4/5) state-verandering
		History.Adapter.bind(window, 'statechange', function(){
			var state = History.getState();
			var soort = state.url.split("/").slice(3,4).toString();
			if(soort == "artiest") {
				var title = state.url.split("/").slice(6,7).toString().replace("/","").replace(",","");
				if(title.length > 16 || title.length == 0) title="informatie";
				loadArtiestTab(state.url, title);
			} else {
				var title = state.url.split("/").slice(4,5).toString();
				loadAjaxContent(state.url, title);
			}
		});

		// ajax-binder: iedere link met <a class="ajax"> wordt als ajax geladen. vanwege
		// Ajax-binnen-Ajax wordt op sommige plekken ook noauto.pagination.js geladen.
		$(".ajax").each(function() {
			$(this).click(function() {
				History.pushState(null, null, $(this).attr("href"));
				return false;
			});
		});
		
	})(window);	
	
	
	// LIVE-SEARCH NAAR ARTIESTEN - gebruikt Jquery-UI Autocomplete Widget
	// --------------------------------------------------------------------------
	
	$("input#searchString").autocomplete({
		source: function(request, response) {
			var options = [request.term, $("select.#searchField").val()]; 
			$.getJSON("/json/Zoeken::liveSearch/"+options.join("/"), 
				function(resp) {
					if(resp['status']['code']=="200") {
						response(resp["data"]);
					} else {
						response([{"url":"","titel":"<em>Geen resultaten.</em>"}]);
					}
				});
		},
		minLength: 3,
		delay: 500,
		select: function(event, ui) { 
			location.href = ui.item.url;
		}
	})
	.data( "autocomplete" )._renderItem = function( ul, item ) {
		return $( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( "<a href='" + item.url + "'>" + item.titel + "</a>" )
			.appendTo( ul );
	};
	// bij druk op zoekknop en als enter (keycode 13) wordt gedrukt naar zoekpagina
	$("input#searchString").keyup(function(event) {
		if (event.keyCode == 13)
			location.href = "/zoeken/cat/" + $("select.#searchField").val() + "/tekst/" + $("input#searchString").val();
	});
	$("input#searchButton").click(function() {
		location.href = "/zoeken/cat/" + $("select.#searchField").val() + "/tekst/" + $("input#searchString").val();
	});
	
	
	// ALGEMENE INTERFACE-FUNCTIONALITEIT
	// --------------------------------------------------------------------------
		
	// Colorbox voor youtube-links op de voorpagina (en elders...)
	$(".youtube").colorbox({iframe:true, innerWidth:560, innerHeight:315});
	
	// Colorbox voor wieiswie- en andere algemene foto's, zonder en met groep
	$(".fotolink").colorbox({transition:'fade'});
	$(".fotogroep").colorbox({transition:'fade', rel:'fotogroep'});
	
	// Colorbox voor stel een vraag / stuur per mail, wordt ajax-box ipv tabblad 
	$(".ajax-box").colorbox();

	// Alle rel='external' links worden target=_blank (html strict)
	$("a[rel=external]").each(function(){
		  this.target = "_blank";
	});
	
	// Velden die leeg moeten worden onfocus
	$(".clearonfocus").focus(function(){
		 if($(this).val() == $(this).attr("title"))
			 $(this).val("");
	})
	$(".clearonfocus").blur(function() {
		 if($(this).val() == "")
			 $(this).val($(this).attr("title"));
	});

	// uit basing: slider voorpagina
	if($(".sliderBox #slider").length) {
		$(".sliderBox #slider").easySlider({
			auto: true, 
			continuous: true,
			speed: 3000
		});
	};

	// slider referenties onderaan voorpagina
	if($(".clientBox #slider").length) {
		var refSlider = $(".clientBox #slider").sudoSlider({
			continuous: true,
			controlsShow: false
		});
		$(".clientBox .prev").click(function() { refSlider.goToSlide('prev'); });
		$(".clientBox .next").click(function() { refSlider.goToSlide('next'); });
		$(".clientBox .prev, .clientBox .next").hover(
				function() { $(this).css('cursor','pointer'); }, 
				function() { $(this).css('cursor','auto'); } 
		);
	};
	
	// Prijslijstpagina: hoofdcat-checkboxes vinken subcats aan
	$(".check h3 :checkbox").click(function() {
		var catid = $(this).attr("id").replace("cat-", "");
		$('#subcat-'+catid+' :checkbox').trigger("click");
	});
	
	// ucfirst-functie, om eerste letter van een string een hoofdletter te maken
	String.prototype.ucfirst = function() {
	    return this.charAt(0).toUpperCase() + this.slice(1);
	};
	
});
