jQuery(document).ready(function() {
    var $ = jQuery;
    
    $("#megafilter_button").click(function() { 
        $("#login_register_panel").hide();
        $("#tags_panel").slideToggle().find(".applied_filters_bar").css({display: "block"});
    });
    
    var megafilter = '';
    $(".tag_box").click(function() {
        $(this).toggleClass("selected");
        var selected = $(this).hasClass("selected");
        
        setTags();
    });
    
    var setTags = function() {
        megafilter = '';
        megafilter_ids = '';

        megafilter = $('.tag_box.selected').map(function() {
          return $.trim($(this).text());
        }).get().join(',');
        megafilter_ids = $('.tag_box.selected').map(function() {
          return $.trim($(this).attr('data-id'));
        }).get().join(',');
        
        $("#megafilter_data").val(megafilter);
        $("#megafilter_ids").val(megafilter_ids);
    }
    setTags();
    
    var clearTags = function() {
        $(".tag_box.selected").removeClass('selected');
    }
    
    $(".apply_button").click(function() {
        $("#filter_form").submit();
    });
    
    $(window).scroll(function() { 
        var position = $(window).scrollTop();
        
        if(position > 52) {
            //$("#tags_panel").css({display: "block", top: "-999px"});
            $(".applied_filters_bar").css({position: "fixed", top: "0"});
        } else {
            //$("#tags_panel").css({display: "none", top: "auto"});
            $(".applied_filters_bar").css({position: "static", top: ""});
        }
    });
    
    $("#login_button").click(function() {
        $("#tags_panel").hide();
        $("#login_register_panel").slideToggle();
        
        return false;
    });
    
    /* Login, Register & Remind form validation */
    $("#user_login_form").submit(function() {
        var username = $(this).find('input[name="username"]').val();
        var password = $(this).find('input[name="password"]').val();
        
        if(username == '' || password == '') {
            alert('Please fill in all fields to login.');
            (username == '')? $(this).find('input[name="username"]').css('border', '2px solid #C00'): '';
            (password == '')? $(this).find('input[name="password"]').css('border', '2px solid #C00'): '';
            return false;
        }
        
        return true;
    });
    
    $("#user_remind_form").submit(function() {
        var email = $(this).find('input[name="email"]').val();
        
        if(email == '') {
            (email == '')? $(this).find('input[name="email"]').css('border', '2px solid #C00'): '';
            return false;
        }
        
        return true;
    });
    
    /* Login tooltips */
    $("input[title]").tooltip({ position: "center right", opacity: 0.85 });
    $('.userProfile').tooltip({ position: "bottom center", opacity: 0.85, offset: [0,50] });
    $('#view_saved_filters').tooltip({ position: "center right", opacity: 0.85 });
    $('#subscribe_newsletter_label').tooltip({ position: "center right", opacity: 0.85 });
    
    /* Login, Register & Remind form validation */
    $("#user_register_form").submit(function() {
        var firstname = $(this).find('input[name="firstname"]').val();
        var username = $(this).find('input[name="username"]').val();
        var email = $(this).find('input[name="email"]').val();
        var email2 = $(this).find('input[name="email2"]').val();
        var password = $(this).find('input[name="password"]').val();
        var password2 = $(this).find('input[name="password2"]').val();
        
        var error = '';
        
        if(firstname == '') {
            error += 'Please enter valid first name.\n';
            $(this).find('input[name="firstname"]').css('border', '2px solid #C00');
        }
        if(username == '') {
            error += 'Please enter valid username.\n';
            $(this).find('input[name="username"]').css('border', '2px solid #C00');
        }
        if(email == '' || email != email2) {
            error += 'Email and confirmation email don\'t match.\n';
            $(this).find('input[name="email"]').css('border', '2px solid #C00');
        }
        if(password == '' || password != password2) {
            error += 'Password and confirmation password don\'t match.\n';
            $(this).find('input[name="password"]').css('border', '2px solid #C00');
        }
        
        if(error != '') {
            alert(error);
            return false;
        }
        
        return true;
    });
    
    $('.close_panel_tags').click(function() {
        $("#tags_panel").slideToggle();
        return false;
    });
    
    $('.close_panel_login').click(function() {
        $("#login_register_panel").slideToggle();
        return false;
    });

    /* Search validation and message */
    $('.searchForm').submit(function() { 
        var search = $.trim($('.searchField').val());
        if(search == 'Search' || search == '') {
            $('.searchField').attr('title', 'Please enter a search term!');
            $('.searchField').tooltip({ position: "bottom center", opacity: 0.85 });
            $('.searchField').focus();
            return false;
        } 
    });
    
    $('.searchField').focus(function() {
        var search = $(this).val().trim();
        if(search != '' || search != 'Search') {
            $('.searchField').attr('title', '');
        }
    });
    
    /* Personal preferences panel */
    $('#view_saved_filters').click(function() {
        var saved_tags = $('#saved_tags').val();
        saved_tags = saved_tags.split(',');
        
        clearTags();
        for(var id in saved_tags) {
            $('#tag_id_'+saved_tags[id]).addClass('selected');
        }
        setTags();
        return false;
    });
    
    /* Save daily email alerts preferences */ 
    $('.user_preferences input#subscribe_newsletter').change(function() {
        var val = $(this).is(':checked')? 1: 0;
        $.ajax({
            type: "POST",
            url: BASE_URL+"?option=com_ippr&task=saveDailyEmailSubscription",
            data: {subscription: val},
            success: function() {
                $('.user_preferences #subscribe_newsletter_label').after("<h5 id='message'></h5>");
                $('#message').html("Subscription submitted!")
                .hide()
                .fadeIn(1500, function() {
                    $('#message').fadeOut(3500);
                });
            }
        });
    });

});

