var app;
if (!app) {
    app = {};
}
$.extend(app, {

    ajax_update_selectbox_path: '',
    max_rp_checkboxes: 0,
    updateButtonTimeout: new Array(),
    updateButtonTimeoutCount: new Array(),
    buttonUpdate: new Array(),
    vorschauUpdate: null,
    /* called onload */
    init: function() {
        app.init_gallery();
        app.init_module();
        app.changeImg();
        app.callSlider();
        app.tabset();
        //app.checkbox();

        if(!($.browser.msie && $.browser.version == '7.0')) {
            $('select').wrap('<div class="wrapdiv"></div>');
        }

        if($('.wrapdiv .sort').html()!==''){
            $('.wrapdiv .sort').parents('.wrapdiv').addClass('right');
        }

        $('ul.zoom a.zoom, ul.target a.zoom').prepend('<span class="lupe"><image src="/static/img/lupe.png" alt="Zoom"/></span>');

    },

    /* gallery */
    init_gallery: function() {
        if ($('.galery').length > 0) {
            $back  = $('<a href="#" class="back">&laquo;</a>');
            $next  = $('<a href="#" class="next">&raquo;</a>');

            $iGaleryPage = 0;
            $iGaleryPageOffset = 9;
            $iGaleryPageTotal = parseInt($('.galery li').length/$iGaleryPageOffset, 10);
            $('.galery li:gt('+($iGaleryPageOffset-1)+')').hide();
            app.generate_gallery_pager();

            
        }
    },
    init_kontakt_modul: function(path){
        
        $('form#qF_Kontakt').submit(function(){
           
            $.ajax({
                url:path,
                data: $('form#qF_Kontakt').serialize(),
                type:'POST',
                success: function(msg){            
                    $('.module-kontakt .inner-kontakt').html(msg);
                }
            });
            return false;
        
        });

        
        
    },
    tabset:function(){

        $('dl dd').addClass('inactive');
        $('dl dt').eq(0).addClass('active').removeClass('inactive');
        $('dl dd').eq(0).addClass('active').removeClass('inactive');
        $('dl dt.active a').addClass('inactive-link');
        $('dl dt.inactive a').removeClass('inactive-link');
        $('dl dt').click(function(){
            if (!$(this).hasClass('disabled')) {
                $('dl dt, dl dd').removeClass('active').addClass('inactive');
                $('dl dt').eq($('dl dt').index(this)).addClass('active').removeClass('inactive');
                $('dl dd').eq($('dl dt').index(this)).addClass('active').removeClass('inactive');
                $('dl dt.inactive a').removeClass('inactive-link');
            }
            return false;
        });

      

        $('a.open-tab').click(function(){
            $('#tabs').tabs('select',$(this).attr('href'));
            return false;
        });

    },
    init_module: function(){
        // Wenn Module existieren
        if ( $('.module').length > 0) {

            $('.module-open > div').show();

            $('.module-open  a.is_max').show();
            $('.module-open  a.is_min').hide();

            $('.module-close > div').hide();

            $('.module-close  a.is_min').show();
            $('.module-close  a.is_max').hide();
          
            $('.module > h3 a').click(function (){
         
                $Modul = $(this).parents('div.module');
            
                if ($Modul.hasClass('module-open')) {
                    $Modul.removeClass('module-open').addClass('module-close');
                
                    $.ajax({
                        url:location.href+'?type=module&open=false&name='+$Modul.children('input.module-name').val()+'&session='+$Modul.children('input.module-session').val()
                    });
                } else {
                    $.ajax({
                        url:location.href+'?type=module&open=true&name='+$Modul.children('input.module-name').val()+'&session='+$Modul.children('input.module-session').val()
                    });

                    $Modul.removeClass('module-close').addClass('module-open');
                }
                app.refresh_module_state();
                
            });
           
        }
        
    },
    refresh_module_state: function(){
        // öffne alle alle Offenen Module
        $('.module-open > div').slideDown(200);

        $('.module-open  a.is_max').show();
        $('.module-open  a.is_min').hide();

        $('.module-close > div').slideUp(200);

        $('.module-close  a.is_min').show();
        $('.module-close  a.is_max').hide();

    },
    /* selectbox branch + district */
    init_selectbox_ajax: function(path) {
        app.ajax_update_selectbox_path = path;
        app.init_branch_select();
        app.init_district_select();
    },

    init_branch_select: function () {
        if ($('#sektor').length > 0) {
            $('#sektor').change(function(e){
                $('#rubrik').val(0);
                app.update_selectbox('#rubrik','rubrik='+$(this).val());
                if ($('#einzel option').length > 1) {
                    $('#einzel').val(0);
                    app.update_selectbox('#einzel','einzel='+0);
                }
            });
        }
        if ($('#rubrik').length > 0) {
            $('#rubrik').change(function(e){
                $('#einzel').val(0);
                app.update_selectbox('#einzel','einzel='+$(this).val());
            });
        }
    },

    init_district_select: function () {

        if ($('#land').length > 0) {
            $('#land').change(function(e){
                app.update_selectbox('#region','region='+$(this).val());
                if ($('#kreis option').length > 1) {
                    app.update_selectbox('#kreis','kreis='+0);
                }

            });
        }
        if ($('#region').length > 0) {
            $('#region').change(function(e){
                app.update_selectbox('#kreis','kreis='+$(this).val());
            });
        }
    },

    /**
     * Erstellt den Pager
     */
    generate_gallery_pager: function() {
        $('.imgpagin ').children().remove();
        $('.imgpagin ').text('');
        $('.imgpagin').append($back);
        $('.imgpagin').append(' '+($iGaleryPage+1)+' / '+($iGaleryPageTotal+1)+' ');
        $('.imgpagin').append($next);

        if ($iGaleryPage > 0){
            $back.show();
        } else {
            $back.hide();
        }

        if ($iGaleryPage < $iGaleryPageTotal) {
            $next.show();
        } else {
            $next.hide();
        }


        $('.imgpagin .back').click(function(){

            app.show_gallery_offset($iGaleryPageOffset,$iGaleryPage-1);
            return false;
        });
        $('.imgpagin .next').click(function(){

            app.show_gallery_offset($iGaleryPageOffset,$iGaleryPage+1);
            return false;
        });

    },

    /**
     * Erstellt die Gallery, immer 9 Bilder in 3 Spalten
     */
    show_gallery_offset: function (iOffset,iPage) {


        if (iPage >= 0 && iPage <= ($iGaleryPageTotal)) {




            $('.galery li').hide();
            var liGt = ((iOffset*iPage)-1);
            var liGtSelector = ':gt('+liGt+')';
            if (liGt== -1) {
                liGtSelector = '';
            }
            var liLt = ((iOffset*(iPage+1)));
            var liLTSelector = ':lt('+liLt+')';
            if (liLt > $('.galery li').length) {
                liLTSelector = '';
                liGt+1;
            }

            $('.galery li'+liLTSelector+liGtSelector).show();
            $iGaleryPage = iPage;
            app.generate_gallery_pager();

        }
    },

    update_selectbox: function (element,ajaxParam){
        $.ajax({
            type:'GET',
            url: app.ajax_update_selectbox_path+'?'+ajaxParam,
            success:function(msg) {
                $(element).html('');
                $(element).append(msg);
                if ($(element).children('option').length > 1) {
                    $(element).attr('disabled','');
                } else {
                    $(element).attr('disabled','disabled');
                }
            }
        });
        
    },

    merkliste_hinzufuegen: function (id, url, item){
        $.ajax({
            type: "POST",
            url: url + 'ajax/merkliste/hinzufuegen/' + id,
            success: function(msg){
                if (Number(msg)) {
                    $('a#merkliste_anzeigen').removeClass('disabled');
                    //$('.submit[name='+element+']').val(parseInt(msg)+' Treffer anzeigen');
                    $('.merken_'+id).before('<a href="javascript:void(0);" onclick="app.merkliste_entfernen('+id+', \''+url+'\', \''+item+'\', 1);" id="entfernen_'+id+'"><img align="absmiddle" alt="gemerkt" src="/static/img/ok.gif"/> gemerkt</a>');
                    $('.merken_'+id).remove();
                    $('.merken_icon').hide();
                    $('.count_merkliste').html(msg);

                    if (msg == 1 && $('.module-merkliste').hasClass('module-close')){
                        $('.module-merkliste a.is_min').click();
                    }

                    $('.module-merkliste #merkliste_anzeigen').attr('onclick', 'return '+msg+';');

                } else {
                    $('div.form').after('<p class="red">Fehler beim Hinzufügen zur Merkliste</p>');
                }
            }
        });
    },

    merkliste_entfernen: function (id, url, item, bTrefferliste){
        $('#msg').remove();
        $.ajax({
            type: "POST",
            url: url + 'ajax/merkliste/entfernen/' + id,
            success: function(msg){
                if(bTrefferliste != 1) {
                    if (msg == 0){
                        $('div.form').before('<p class="empty-filler">Sie haben 0 ' + item + ' vorgemerkt</p>');
                        $('#.app-left.clearfix').addClass('empty');
                        $('div.form').remove();
                        $('span#count').html(msg);
                        $('p#newsletter').before('<p class="msg">' + item + ' wurde erfolgreich aus der Merkliste entfernt</p>');
                        $('.module-merkliste a.is_max').click();
                        $('a#merkliste_anzeigen').addClass('disabled');
                    } else if (Number(msg)) {
                        if (item == 'Regionalpartner'){
                            $('#rp_'+id).remove();
                        } else {
                            $('#ad_'+id).remove();
                        }
                        $('span#count').html(msg);
                        $('.count_merkliste').html(msg);
                        $('p#newsletter').before('<p class="msg" id="msg">' + item + ' wurde erfolgreich aus der Merkliste entfernt</p>');
                    } else  {
                        $('p#newsletter').before('<p class="red">Fehler beim Entfernen des Eintrags aus der Merkliste entfernt</p>');
                    }
                } else {
                    $('#entfernen_'+id).before('<a href="javascript:void(0);" onclick="app.merkliste_hinzufuegen('+id+', \''+url+'\', \''+item+'\');" class="merken_'+id+'">&raquo; merken</a>');
                    $('#entfernen_'+id).remove();
                    $('.merken_icon').show();
                    $('.count_merkliste').html(msg);

                    if (msg == 1 && $('.module-merkliste').hasClass('module-close')){
                        $('.module-merkliste a.is_min').click();
                    }
                    if (msg > 0){
                        $('.module-merkliste #merkliste_anzeigen').attr('onclick', 'return '+msg+';');
                    } else {
                        $('.module-merkliste #merkliste_anzeigen').attr('onclick', 'return false;');
                    }
                }
            }
        });
    },
    checkbox: function(max){

        if (max) {
            app.max_rp_checkboxes = max;
        }
               
        var clicked = $('.tablesorter :checked').not('.checkbox-is-diabled').length;
        
        if(clicked >= app.max_rp_checkboxes) {
            $('.tablesorter input:checkbox').not(':checked').attr({
                disabled:true
            });
        } else {
            $('.tablesorter :checkbox').attr({
                disabled:false
            });
        }
        $('input.checkbox-is-diabled').attr('disabled','diabeled');

    },
    changeImg: function(){
        $('ul.galery li').each(function(){
            $('ul.target').append('<li><span class="title">'+$(this).find('img').attr('title')+'</span>'+$(this).html().replace('thumbs','jpg')+'</li>');
        });
        $('ul.target li a').addClass('zoom').attr({
            rel:'galery'
        });

         $('ul.target li a > img').attr({
             height:'185',
             width:'328'
         });
        /*
         * height:185px;
    width:328px;
         **/
        $('ul.target li').not(':eq(0)').hide();

        $('ul.target li:eq(0) a').fancybox({
            titlePosition:'inside'
        });
        $('.galery a').click(function(){
            if (!$.browser.msie){
                app.resizeGalleryImage($('ul.target li').eq($('ul.galery li a').index(this)).find(' a > img'));
            }
            
            $('ul.target li:visible').hide();
            $('ul.target li').eq($('ul.galery li a').index(this)).show();
            $('a.zoom').fancybox({
                titlePosition:'inside'
            });
            return false;
        });
           
    },
    resizeGalleryImage:function(img) {
        var org_h = 185;
        var org_w = 326;
        var sf_h = img[0].naturalHeight / org_h;
        var sf_w = img[0].naturalWidth / org_w;
        var sf = 1;

        if (sf_w >= sf_h) {
            sf = sf_w;
        } else {
            sf = sf_h;
        }

        var vor_w = (img[0].naturalWidth/ sf) - 2;
        $(img).attr('height',(img[0].naturalHeight/ sf) - 2 );
        $(img).attr('width',vor_w);
        // $(this).parents('li').css('position','relative');
        $(img).parents('li').css('left', (((org_w-vor_w)/2)+12)+'px');

    },

updateCountSubmitButton: function(path,element,suchtype) {

    if (app.buttonUpdate[element]) {
        app.buttonUpdate[element].abort();
        window.clearInterval( app.updateButtonTimeout[element]);
        $('input[name='+element+']').val(' Treffer anzeigen');
    }

    app.updateButtonTimeout[element] = window.setInterval('app.updateCountSubmitButtonLoading("'+element+'")',1000);
    app.updateButtonTimeoutCount[element] = 0;
      
    app.buttonUpdate[element] = $.ajax({
        type: "POST",
        global: false,
        url: path+"ajax/anzahl/?type="+suchtype,
        data: $('input[name='+element+']').parents('form').serialize(),
        success: function(msg){
                
            window.clearInterval( app.updateButtonTimeout[element]);

            // Wenn ein Ergebniss kommt > 0
            if (Number(msg)) {
                $('input[name='+element+']').val(parseInt(msg, 10)+' Treffer anzeigen');
                $('input[name='+element+']').removeAttr('disabled');

                // Wenn eine 0 kommt, nicht gefunden
            } else if (msg == 0) {
                $('input[name='+element+']').val('Keine Treffer');
                $('input[name='+element+']').attr('disabled', 'disabled');

                // Bei Fehlerfall
            } else {
                $('input[name='+element+']').val('Treffer anzeigen');
            }
        }
    });
        

},
updateVorschauModul: function (path, suchtype) {
    if (app.vorschauUpdate){
        app.vorschauUpdate.abort();
    }

    if ($('.module-vorschau').hasClass('module-open')) {
        app.vorschauUpdate = $.ajax({
            type: "POST",
            url: path+"ajax/vorschau/?type="+suchtype,
            data: $('#qF').serialize(),
            success: function(msg){
                $('.inner-vorschau').html(msg);
            }
        });
    }
},
updateCountSubmitButtonLoading: function(element) {

    var points = '.';
    var append = '';
    for (var i = 0; i < 3 ; i++) {
        if (i < app.updateButtonTimeoutCount[element]) {
            append = append+points;
        } else {
            append = append+' ';
        }
    }
    $('input[name='+element+']').val('Lade Treffer'+append);

    if ( app.updateButtonTimeoutCount[element] >= 3 ) {
        app.updateButtonTimeoutCount[element] = 0;
    } else {
        app.updateButtonTimeoutCount[element]++;
    }

},


callSlider: function() {

    var umkreis = 15;
    if ($('#umkreis_val').length > 0)
    {
        umkreis = $('#umkreis_val').val() != '' ? $('#umkreis_val').val() : 15;
        if ($('#umkreis_val').val() == '') {
            $('#umkreis_val').val(umkreis);
        }
    }
    
    $('#umkreis').parents('p').append('<div class="sliderblock clearfix"><span>'+umkreis+' km</span><div id="slider"></div></div>');
    $('#umkreis').remove();

    $("#slider").slider({
        disabled: true
    });
    $("#slider").slider({
        value:umkreis
    });
    $('#plz').keyup(function(e){
        if($('#plz').val().length == 5 && Number($('#plz').val())) {
            $("#slider").slider({disabled: false});
            $(".sliderblock").css('background-color', '#FFFFFF');
            $(".sliderblock").css('color', '#000000');
        } else {
            $("#slider").slider({disabled: true});
            $(".sliderblock").css('background-color', '#F0F0F0');
            $(".sliderblock").css('color', '#D7B8AC');
        }
    });
    // Slider Event - Beim ändern des Sliders
    $("#slider").slider({
        slide: function(event, ui) {
            // Übergebenes ui.value ausgeben
            $('.sliderblock span').html(ui.value+' km');

            // in input speichern
            $('#umkreis_val').attr({
                value: ui.value
            });
        }
    });
},
contentOnReady:function(){
    $('.content').hide();
    $(document).ready(function()
    {
        $('.content').show();
            
    });
},
submitOnEnter:function(btnName,pfad){
        
    if (pfad) {
        pfad.bind('keypress',{btn:btnName},app.submitOnEnterEventHandler);
    } else {
        $('input[type=text]').bind('keypress',{btn:btnName},app.submitOnEnterEventHandler);
    }
},

submitOnEnterEventHandler: function(event){
    if(event.which==13) {
        if ($(this).parents('form').find('input[name="'+event.data.btn+'"]').attr('disabled')) {
            $(this).parents('form').find('input[name="'+event.data.btn+'"]').attr('disabled','');
            $(this).parents('form').find('input[name="'+event.data.btn+'"]').click();
        }
        $(this).parents('form').find('input[name="'+event.data.btn+'"]').click();
    }
}

});
$(app.init);
/*
* Änderungen an der default.js
* Folgende Funktionen wurden in die app.js übertragen
*
* - checkbox()
* - changeImg()
* - appToggle()  (jetzt init_module)
* - callSlider()
* - tabset()
* - die Zeile:  $('ul.zoom a.zoom, ul.target a.zoom').prepend('<span class="lupe"><image src="/static/img/lupe.png" alt="Zoom"/></span>')
*
* entfernt:
*
* 		$('select').wrap('<div class="wrapdiv"></div>')
		if($('.wrapdiv .sort').html()!='') $('.wrapdiv .sort').parents('.wrapdiv').addClass('right')


    $('#letter p.error, #letter p.msg').hide()
            $('input#newsletter').removeClass('error')
            $('#letter .submit').toggle(function(){
                $('#letter p.error, #letter p.msg').show()
                $('input#newsletter').addClass('error')
                return false
            },function(){
                $('#letter p.error, #letter p.msg').hide()
                $('input#newsletter').removeClass('error')
                return false
            })

**/


