/**
 * Create by: Tommy of Destino as
 * Date: 11/8/11
 * Time: 11:13 AM
 */
(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);

var searchFields = {};
var filterSplitReg = /([^=]+)([=<>])(.+)/;
var inputFieldStandard = {};

var initInited;
if(initInited != true){
initInited = true;
$(document).ready(function(){
    //forms
    $(".filterSelector").easySelectBox();

    $(".filterSelector").change(function(event){
        var ref = event.target.options[event.target.selectedIndex].value;
        updateCachedSearch(ref, event.target.getAttribute("id"));
    });
    $(".easy-select-box-disp").click(function(){
        $("a[rel=*]", $(this).parent()).html("Alle");
    });
    $(".easy-select-box li a").click(function(){

        var rel = $(this).attr("rel");
        var selectbox = $(this).parent().parent().parent().prev();

        updateCachedSearch(rel, selectbox.attr("id"));
        
        if(rel == "*"){
            $(this).html($(selectbox).attr("data-first"));
        };
    });

    $(".filterInput").each(function(index, element){
        var id = $(element).attr("id");
        if(inputFieldStandard[id] === undefined){
            inputFieldStandard[id] = $(element).attr("value");
        }
    });

    var onlynumbReg = /[^\d]+/g;

    var aprovedKeycodes = (function(arr){
        var rtn = {};

        for(var i = 0; i < arr.length; i++){
            rtn[arr[i]] = true;
        }
        return rtn;
    }([8,9,35,36,37,39,46,49,50,51,52,53,54,55,56,57,48,96,97,98,99,100,101,102,103,104,105,110,188,190]));

    $(".numberonly").keydown(function(event){
        if(aprovedKeycodes[event.keyCode] === undefined){
            event.stopImmediatePropagation();
            event.stopPropagation();
            event.preventDefault();
        }
    });

    $(".numberonly").keyup(function(event){

        if(event.keyCode == 37 || event.keyCode == 39){
            return;
        }

        var onlyNumb = this.value.replace(onlynumbReg, "");
        var opt = "";

        var mod = (onlyNumb.length)%3||3;

        opt = onlyNumb.substr(0, mod);
        for(var i = mod; i < onlyNumb.length; i+=3){
            opt += "." + onlyNumb.substr(i, 3);
        }

        this.value = opt;
    })

    $(".filterInput").focus(function(){
        var id = $(this).attr("id");
        if(inputFieldStandard[id] === undefined){
            inputFieldStandard[id] = $(this).attr("value");
        }

        if(inputFieldStandard[id] === $(this).attr("value")){
            $(this).attr("value", "");
        }
    });

    $(".filterInput").blur(function(){
        var id = $(this).attr("id");

        if($(this).attr("value") === ""){
            $(this).attr("value", inputFieldStandard[id]);
            updateCachedSearch("*", id);
            return;
        }

        var fieldValue = this.value.replace(onlynumbReg, "") || "*";
        var val = $(this).attr("rel").replace("value", fieldValue);
        var id = $(this).attr("id");

        updateCachedSearch(fieldValue === "*" ? "*" : val, id);
    });

    $(".search").click(function(event){
        $(this).attr("href", $(this).attr("href")+renderHash(searchFields));
    });
});
}
function updateCachedSearch(value, targetId){
    if(value === "*"){
        delete searchFields[targetId];
    }else{
        if(!searchFields[targetId] || searchFields[targetId].id !== value){
            var keywordObj = {id: value};
            var sp = filterSplitReg.exec(value);

            keywordObj.type = sp[1];
            keywordObj.method = sp[2];
            keywordObj.value = sp[3];

            searchFields[targetId] = keywordObj;
        }
    }
}

function renderHash(filteredKeywords){
    var curretnHash = "#/";
    for(var key in filteredKeywords){
        curretnHash += key+":"+filteredKeywords[key].type+filteredKeywords[key].method+filteredKeywords[key].value+"/";
    }

    return curretnHash;
}

if (typeof console != 'object') {
    var console = {log:function(){}};
}
