;(function($) {
    var kategorien, gesten;
    var gestenIndex = [];

    $(document).ready(function() {
	if (window.location.href.match(/\/geste\//) && window.location.hash != "") {
	    window.location.href = window.location.hash.substr(1);
	    return;
	}

	kategorien = $("#browse_kategorien");
	gesten     = $("#browse_gesten");

	/*
	 * 1. Setup
	 */
	$('<div id="filter"><p>Suchen</p><input type="text" size="15" value="" class="form-text" /></div>')
	    .insertBefore($("#block-views-gebaerden-block_3 .content"));

	$.each(gesten.children(), function(i, geste) {
	    gestenIndex.push($(geste).text());
	    $(geste).hide();
	});

        kategorien.prepend('<li id="kategorie_0"><a href="#">Gebärdenübersicht</a></li>');


	/*
	 * 2. Interaction
	 */

	kategorien.find('a').click(function(e) {
	    var tid = toId($(this).parent().attr("id"));
	    selectKategorie(tid);
	    filterGesten(tid);
	    return false;
	});

	gesten.find('a').click(function(e) {
	    if ($(".linkespalte .node").length == 1) {
		loadNode($(this));
		return false;
	    }
	});

	$("#filter").keyup(function(e) {
	    // Enter
	    if (e.keyCode == 13) {
		var first = gesten.children(":visible:first");
		if (first.length > 0) loadNode(first.find('a'));
	    } else {
		searchGesten($(this).find("input").val());
	    }
	});

	refreshContentBindings();
    });

    function refreshContentBindings() {
        //$('.video .clear-block a').media( { width: 384, height: 306 } );
		$('.video .clear-block a, .video2 .clear-block a').media( { width: 384, height: 306 } ); 

		$(".videolink a, .bildlink a").click(function() {
			loadNode($(this));
			return false;
		});

		$('.filefield-item a, .filefield-file a').media({
			width:  384,
			height: 306
		});
    }


    function selectKategorie(tid) {
	kategorien.find('a').removeClass("active");
	kategorien.find('#kategorie_'+tid+' a').addClass("active");
    }

    function filterGesten(tid) {
	gesten.children().hide();
        if (tid == 0) tid = ""; // show all
	gesten.children('li[rel*=kategorie_'+tid+']').show();
    }

    function searchGesten(query) {
	var matches = [];
	gesten.children().hide();
	if (query != "" && query.length > 0) {
	    var regexp = new RegExp("^"+query,"i");
	    for (i=0, l=gestenIndex.length; i<l; i++) {
		if (regexp.test(gestenIndex[i])) {
		    matches.push(i);
		}
	    }
	    $.each(matches, function(k,v) {
		$(gesten.children()[v]).show();
	    });
	}
    }

    function loadNode(link) {
	$(".linkespalte .node .content").replaceWith('<img src="http://www.tanne.ch/sites/all/themes/tanne/img/ajax-loader.gif" class="loader" alt="Lade Inhalt" /> Lade Inhalt');

	gesten.find("a.active").removeClass("active");
	$(link).addClass("active");

	var url = $(link).attr("href");
	window.location.hash = url;
	var sep  = (url.indexOf("?") >= 0) ? "&" : "?";
	$.get(url + sep + "inline=1", function(data) {
	    $(".linkespalte .node").replaceWith(data);
	    refreshContentBindings();
	});
    }

    function toId(str) {
	var m = str.match(/_(\d*)/);
	return (m.length == 2) ? m[1] : str;
    }
}(jQuery));
