var empty_result = false;

$(function()
{
    $.easing.elasout = function(x, t, b, c, d) {
        if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
        return c/2*((t-=2)*t*t*t*t + 2) + b;
    };

    $('.gm_do_refresh').click(function(){
        init_gm();
        return false;
    });

    $("#gm_origin_plz").keyup(function(event){
        if (event.keyCode == 13){
        init_gm();
      }
    });

    $("div[id^=gm_filter] select").keyup(function(event){
        if (event.keyCode == 13){
        init_gm();
      }
    });
    $("div[id^=gm_filter] input").keyup(function(event){
        if (event.keyCode == 13){
        init_gm();
      }
    });

    $('.bayernkarteMap').click(function(){
        //$(this).trigger('click');
        //call_ReloadPixelImages();
    });

    $('#wio ul.wio').find('a').click(function() {
        var flap_id = $(this).attr('href');
        $(flap_id+" :radio[id^='gm_curr_filter_']").attr("checked","checked");
        show_curr_flap();
        call_ReloadPixelImages();
        return false;
    });

    $('.gm_change_origin').mouseup(function(){
        $('.wBoxTop span.origin1').toggle();
        $('.wBoxTop span.origin2').toggle();
        return false;
    });

    $('input[id^=gm_events_event][id$=_date]').datepicker({
            beforeShow: custom_range,
            showOn: 'focus',
            defaultDate: +7,
            firstDay: 1,
            changeFirstDay: false,
            changeMonth: false,
            changeYear: false
            });

    $('#gm_filter-meldungen input[id^=gm_meldungen_]').bind('click', function(){
        init_gm();
    });

    // Customize two date pickers to work as a date range
    function custom_range(input) {
        return {
            minDate: (input.id == 'gm_events_event_end_date' ? $.datepicker.getDateFor('#gm_events_event_start_date') : null),
            maxDate: (input.id == 'gm_events_event_start_date' ? $.datepicker.getDateFor('#gm_events_event_end_date') : null)};
    }

    show_curr_flap();
    init_gm();
});

function show_curr_flap()
{
    var curr_flap = get_curr_flap()

    $('div[id^=gm_filter]').hide();
    $('div[id^=gm_icons]').hide();
    $('#gm_filter-'+curr_flap).show();
    $('#gm_icons-'+curr_flap).show();

    $(":radio[id^='gm_curr_filter_']").each(function (i) {

        if($(this).attr('checked')){
            $('#wio ul.wio li:eq('+i+')').addClass('selected');
            var title = $('#wio ul.wio li:eq('+i+')').text();
            $('#gm_refresh_title').text(title+' anzeigen');
        }
        else {
            $('#wio ul.wio li:eq('+i+')').removeClass('selected');
        }
    });
    if(empty_result) remove_error_message(true);
}

function init_gm()
{
    var values = {};
    var curr_flap = get_curr_flap()

    $('.wBoxTop #gm_origin_plz').each(function(){
        $('#gm_origin_value').text($(this).val());
        values[$(this).attr('name')] = $(this).val();
    });

    $('#gm_filter-'+curr_flap+' input').each(function(){
        var type = $(this).attr('type');
        if((type != 'radio' && type != 'checkbox') || $(this).attr('checked') == true){
            values[$(this).attr('name')] = $(this).val();
        }
    });

    $('#gm_filter-'+curr_flap+' option:selected').each(function(){
        values[$(this).parent().attr('name')] = $(this).val();
    });

    get_results(values);

   call_ReloadPixelImages();
}

function get_results(values)
{
    $.get("app/templates/results.php", values, function(d){
        //alert(d)
        empty_result = false;

        if(d.substr(0,5) ==  'error'){
            var e_txt;
            switch(d){
                case 'error_empty_results':
                    e_txt = 'Bitte Filterkriterien ändern!<br/>Keine passenden Daten gefunden.';
                    empty_result = true; break;
                case 'error_no_valide_length':
                    e_txt = 'Die PLZ muß aus 5 Zahlen bestehen!'; break;
                case 'error_no_number':
                    e_txt = 'Ihre PLZ enthält unerlaubte Zeichen!'; break;
                default:
                    e_txt = 'Ihre PLZ existiert nicht!';
            };
            show_error_message(e_txt);
        }
        else {

            update_popup_link(values);

            $('#wioContent span.gm_error').slideUp('slow', function(){
                $(this).remove();
            });

            $('.wBoxTop span.origin').show();
            $('.wBoxTop span.origin').eq(2).hide();

            $('.bayernkarteMap').empty();
            $('#bayernkarteList').empty().append(d);

            $('ul.gm_bubbleflap_menu li a').mouseover(function(i) {

                $(this).parent().parent().siblings().hide();
                return false;
    });

            $(".bayernkarteList").filter(function() {

                if($(this).attr('id') == undefined) return false;
                var i = $(this).attr('id').replace(/bayernkarteListItem/, '');


                var marker = $.jmap.gmarkers[i];
                var image = marker.getIcon().image;
                var active = marker.getIcon().active;

                $(this).bind("click", function(){
                    $(this).removeClass("bayernkarteListHover");
                    $(this).addClass("bayernkarteListSelected");
                    $(this).siblings(".bayernkarteListSelected").removeClass("bayernkarteListSelected");
                    marker.openInfoWindowHtml($.jmap.ghtml[i]);
                });
                $(this).bind("mouseover", function(){
                    if(!marker.selected){
                        $(this).addClass("bayernkarteListHover");
                        marker.setImage(active);
                    }
                });
                $(this).bind("mouseout", function(){
                    if(!marker.selected){
                        $(this).removeClass("bayernkarteListHover");
                        marker.setImage(image);
                    }
                });
            });
        }
    });
}

function show_error_message(e_txt)
{
    $('#gm_refresh').before('<span class="gm_error"></span>');

    remove_error_message();

    $('#wioContent span.gm_error:last')
        .html(e_txt)
        .slideDown('slow');
}

function remove_error_message(last)
{
    var selector = (last == true) ? '' : ':not(:last)';

    $('#wioContent span.gm_error'+selector)
        .slideDown('slow', function(){
            $(this).remove();
        });
}

function get_curr_flap(){
    return $(':radio[id^=gm_curr_filter]:checked').val();
}

function update_popup_link(values)
{
    var gm_popup_query = ''

    if($('.bayernkarteTitle .popup a').attr('href') == undefined) return false;

    jQuery.each(values, function(key, val) {
        if(val!=''){
            gm_popup_query += (gm_popup_query == '') ? '?' : '&';
            gm_popup_query += key.replace(new RegExp("_"+get_curr_flap() ,""),'')+'='+val;
        }
    });

    var gm_popup_url = $('.bayernkarteTitle .popup a')
                            .attr('href')
                            .replace(/(\?.*)/,'');
    gm_popup_url += gm_popup_query;

    $('.bayernkarteTitle .popup a').attr('href', '#');

    $('.bayernkarteTitle .popup a').click(function(){
        var link = './bayernkarte_popup.php'+gm_popup_query;
        window.open(link,'gmap_big','toolbar=no,width=830,height=670,resizable=no,scrollbars=auto');
        return false;
    });
}

function gm_change_bubbleflap(obj, num)
{
    num -= 1;
    $(obj).parent().parent().siblings('.gm_bubbleflap:not(:eq('+num+'))').hide('fast', function(){
        $(obj).parent().parent().siblings('.gm_bubbleflap:eq('+num+')').show('fast');
    });

    $(obj).parent().siblings('.gm_bubbleflap .selected)').removeClass('selected');
    $(obj).parent().addClass('selected');
}

function call_ReloadPixelImages(){
    if(typeof ReloadPixelImages == 'function') {
        ReloadPixelImages(1353, '');
    }
}



