/**
 * Fili Wiese, ONI
 * http://oni.nl
 */

$(document).ready(function()
{	
	
	/**
     * Initialisatie van de tabs
     */
	initTabs = function(){
		var foldInitialMargin = parseInt($("#foldOutContent").css('marginTop'));
		
		openTab = function(tabId, tabSpeed) {
			var foldCurrentMargin = parseInt($("#foldOutContent").css('marginTop'));
			var foldNewMargin = (foldCurrentMargin == foldInitialMargin ? 0 : foldCurrentMargin);
			
			$("#foldOutContent > div").hide();
			$("#foldOutContent #" + tabId).show();
			
			$('html,body').animate({scrollTop: 0});
			$("#foldOutContent").animate({
				marginTop: foldNewMargin + 'px'
			}, tabSpeed);
			
			// Geef tab selected state
			$("#foldOutTabs li").removeClass('selected');
			$("#foldOutTabs a[href=#"+tabId+"]").parent().addClass('selected');
			
			// Tab sluiten bij <ESC>
			$(document).keydown(function(e){
				if (e.keyCode == 27) closeTab();
			});
		}
		
		closeTab = function(tabSpeed) {
			$("#foldOutContent").animate({
				marginTop: foldInitialMargin + 'px'
			}, tabSpeed);
			$("#foldOutTabs li").removeClass('selected');
		}
		
		$("#foldOutTabs a").click(function(){
			var showElementId = this.href.split("#")[1];
			if (!showElementId) return true;
			openTab(showElementId, 'fast');
			return false;
		});
		
		// Sluiten knop
		$("#foldOutContent a.close").click(function(){
			closeTab('fast');
			return false;
		});
		
		// Tab ophouden bij formulier meldingen
		if ($("#contact.keepTabOpen").length > 0) {
			openTab('contact', 0);
		} else if ($("#order.keepTabOpen").length > 0) {
			openTab('order', 0);
		}
	}
	
	/**
	 * Initialisatie van het zoekveld
	 */
	initSearch = function(){
		// Zoekveld vullen bij blur, legen bij focus
		initialValue = 'enter keyword(s) to search the database';
		if ($("form#frm-search #keywords").val() == '') {
			$("form#frm-search #keywords").val(initialValue).css('color', '#d7d7d7');
		}
		$("form#frm-search #keywords").focus(function(){
			if ($(this).val() == initialValue) {
				$(this).val('').css('color', '#000');
			}
		}).blur(function(){
			if ($(this).val() == '') {
				$(this).val(initialValue).css('color', '#d7d7d7');
			} 
		});
		
		// jQuery plugin: Autocomplete
		// http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
		$("#keywords").autocomplete("/ajax/autosuggest/", {
			width: $("form#frm-search #keywords").width()+13,
			minChars: 3,
			//max: 15,
			multiple: true,
			multipleSeparator: " ",
			scroll: true,
			scrollHeight: 300,
			selectFirst: false,
			formatItem: function(data, i, n, value) {
				return '<div class="thumb"><img src="' +  data[1] + '"/></div><div class="keyword">' + data[0] + '</div><div class="clear"></div>';
			}
		});
		
		// Formsubmit voorkomen als er geen waarde is ingevuld
		$('form#frm-search').bind('submit', function(event){
			if ($("form#frm-search #keywords").val() != initialValue) {
				this.submit();
			}
			return false;
        });
	}
	
	/**
	 * Initialisatie van de resultaten thumbnails
	 */
	initResults = function(){
		// thumbnails:hover
		$("#results li").hover(
			function () {
				$(this).toggleClass('hover');
				photoId = $(this).find("a").attr('id').substr(1);
				$(this).append('<span>click to enlarge</span><a href="javascript:orderPhoto(\''+photoId+'\')" class="order"></a>');
			}, 
			function () {
				$(this).toggleClass('hover');
				$(this).find("span,a.order").remove();
			}
	    );
		
		// jQuery plugin: prettyPhoto
		// http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/
		$("a[rel^='prettyPhoto']").prettyPhoto({
			theme: 'fredh',
			padding: 70,
			animationSpeed: 'fast'
		});
	}
	
	/**
	 * Initialisatie van de besteltab
	 */
	initOrder = function() {
		var COOKIE_NAME = '__order';
		var orderCookie = $.cookie(COOKIE_NAME);
		
		orderPhoto = function(photoId){
			// photoId opslaan in cookie
			$.cookie(COOKIE_NAME, 'photoId-'+photoId, { path: '/', expires: 10 });
			$.prettyPhoto.close();
			loadPhoto(photoId);
			openTab('order', 'fast');
		}
		
		loadPhoto = function(photoId) {
			$("#order .noPhotoSelected").hide();
			
			// Thumbnail ophalen
			$.get("/ajax/thumbnail/", { photoid: photoId }, function (data) {
				var photoSrc = data;
				$("#order .photoSelected").show();
				$("#orderPhotoId").val(photoId);
				$("#order .column2").html('<p>Photo #'+photoId+'</p><img src="'+photoSrc+'" />');
			});
		}
		
		// Cookie?
		if (orderCookie) {
			var photoIdArray = orderCookie.split('-');
			loadPhoto(photoIdArray[1]);
		}
	}
	
    /**
     * IE6 uitzonderingen
     */
	initIE6Exceptions = function(){
		// Unobtrusive JavaScript: Remove Unwanted Link Border Outlines
		// @ http://perishablepress.com/press/2008/12/16/unobtrusive-javascript-remove-link-focus-dotted-border-outlines/
		for (var i in document.links) {
			document.links[i].onfocus = document.links[i].blur;
		}
		
		// hover tabs
		$("#foldOutTabs li").hover(function(){
			$(this).addClass('tabHover');
		}, function(){
			$(this).removeClass('tabHover');
		});
	}
	
    /**
     * Main functie
     */
	initMain = function(){
		// Toon order/home button op photo pagina's 
		$("#photo a.buttonOrder, #photo a.buttonHome").show();
		
		// Zet rel="external" om in target="_blank"
		$('a[rel=external], a[href^=http]').addClass('external').attr('target', '_blank');
		
		// Initieer diverse onderdelen
		initTabs();
		initOrder();
		initSearch();
		initResults();
		if (document.all) initIE6Exceptions();
	}
	initMain();
	
});
