$(document).ready(function() {
    /*** Replace class email to a mailto link ***/
    $('.email').mailto();
    /*** signin zone hide and show ***/
    $('#signin_zone').hide();
    $('#signin').click(function() {
        $('#signin_zone').slideToggle();
    });
    /*** kewix forms help ***/
    $('form .forms-help span').hide();
    $('form input').focus(function() {
        $('form .forms-help span').hide();
        $(this).closest('.forms-help').find('span').show();
    });
    $('form input').click(function() {
        $('form .forms-help span').hide();
        $(this).next('.forms-help').find('span').show();
    });
    $('form input').blur(function() {
        $('form .forms-help span').hide();
    });
    $('form .forms-help').mouseover(function() {
        $('form .forms-help span').hide();
        $(this).find('span').show();
    });
    $('form .forms-help').mouseout(function() {
        $('form .forms-help span').hide();
    });

    // AJAX Callback
    function ajaxCheckedCategoriesCallback(data, textStatus) {
        if (textStatus == "success" && data['parent'] != "" && data['content'] != "") {
            var oldElement = $('#' + data['id']);

            if (oldElement) {
                oldElement.remove();
            }

            var pToAdd = $("label[for='" + data['rootlabel'] + "']").parent();
            pToAdd.append(data['content']);

            var newElement = $('#' + data['id']);
            newElement.find('select').multiSelect(multiselectOptions, sendCheckedCategories);

            recCallback(data['id']);
        }
    }

    function ajaxCheckedCategories(categories) {
        for (var categorie in categories) {
            var obj = new Object;

            obj.name = categories[categorie].name;
            obj.value = categories[categorie].value;
            obj.checked = categories[categorie].checked;
            obj.label = categories[categorie].label;
            obj.id_challenge = $("#jforms_metier_challenge_id_challenge").val();

            if (obj.checked) {
                $.post(
                    "/ajax/membre/ajax_checked_categories/",
                    obj,
                    ajaxCheckedCategoriesCallback,
                    "json"
                );
            } else {
                var pToDel = $('#' + obj.name + '_' + obj.value);

                if (pToDel) {
                    pToDel.remove();
                }
            }
        }
    }

    function sendCheckedCategories(elt) {
        var categos = new Array();
        var name = elt.attr('name').substr(0, (elt.attr('name').length - 2));
        var label = elt.parents().eq(2).children("label").attr('for');

        if (name != '' && elt.val() != '') {
            // chexkbox one by one
            var obj = new Object;

            obj.name = name;
            obj.value = elt.val();
            obj.checked = elt.is(':checked');
            obj.label = label;
            obj.id_challenge = $("#jforms_metier_challenge_id_challenge").val();

            categos.push(obj);
        } else {
            // multiselect checkbox
            var div = elt.parent().parent();
            div.children().each(function() {
                var inp = $(this).children("input:checkbox");
                if (inp.attr("class") != "selectAll") {
                    var inpTmpName = inp.attr('name');
                    var name = inpTmpName.substr(0, (inpTmpName.length - 2));
                    var obj = new Object;
                    obj.name = name;
                    obj.value = inp.val();
                    obj.checked = inp.is(':checked');
                    obj.label = label;
                    obj.id_challenge = $("#jforms_metier_challenge_id_challenge").val();
                    categos.push(obj);
                }
            });
        }
        ajaxCheckedCategories(categos);
    }

    function recCallback(multiselectRoot) {
        $("label[for='" + multiselectRoot + "']")
        .parent()
        .find("div[class='multiSelectOptions']")
        .children()
        .each(function() {
            var inputbox = $(this).children(":input");

            if (true == inputbox.is(":checked")) {
                sendCheckedCategories(inputbox);
            }
        });
    }

    // END AJAX Callback
    // MEMBRE INTEREST
    $('#jforms_metier_interets_competences').multiSelect(multiselectOptions);
    $('#jforms_metier_interets_fonctions').multiSelect(multiselectOptions);
    $('#jforms_metier_interets_secteurs').multiSelect(multiselectOptions);
    $('#jforms_metier_interets_marches').multiSelect(multiselectOptions);
    // CHALLENGE EDIT
    $('#jforms_metier_challenge_competences').multiSelect(multiselectOptions, sendCheckedCategories);
    $('#jforms_metier_challenge_fonctions').multiSelect(multiselectOptions, sendCheckedCategories);
    $('#jforms_metier_challenge_secteurs').multiSelect(multiselectOptions, sendCheckedCategories);
    recCallback('jforms_metier_challenge_competences');
    recCallback('jforms_metier_challenge_fonctions');
    recCallback('jforms_metier_challenge_secteurs');
    // CHALLENGE CREATE
    $('#jforms_metier_challenge_create_competences').multiSelect(multiselectOptions, sendCheckedCategories);
    $('#jforms_metier_challenge_create_fonctions').multiSelect(multiselectOptions, sendCheckedCategories);
    $('#jforms_metier_challenge_create_secteurs').multiSelect(multiselectOptions, sendCheckedCategories);
    recCallback('jforms_metier_challenge_create_competences');
    recCallback('jforms_metier_challenge_create_fonctions');
    recCallback('jforms_metier_challenge_create_secteurs');

    //Communautés
    $('.close').click(function(){
        $('.lightbox_container').hide();
        /*$('#filter').hide();*/
    });

    //Affichage des conditions particulières
    $('.show').click(function(){
        id = $(this).attr('id');
        idvalue = id.split('_',2);
        $('#conditions_'+idvalue[1]).show();
        /*$('#filter').show();*/
    });

    //Affichage d'un message de confirmation 
    $('.confirm').click(function(){
        id = $(this).attr('id');
        idvalue = id.split('_',2);
        $('#confirmation_'+idvalue[1]).show();
        /*$('#filter').show();*/
    });

    $('.join').click(function(){
        id = $(this).attr('id');
        idvalue = id.split('_',2);

        //S'il y a des conditions particulières on vérifie
        if ($('#check_'+idvalue[1]) && $('#check_'+idvalue[1]).attr('checked')==false) {
            $(this).siblings('.hidden').show();
            return false;
        }
        $('#'+id).empty().html('<img src="/icones/throbber.gif" alt="loading" />');
        $.ajax({
            type: 'GET',
            url: '/ajax/membre/communautes/join/'+id+'/',
            success: function(data){
                $('#'+id).text(data);
                $('#'+id).fadeIn('slow');
                $('#'+id).unbind('click');
                $('#'+id).removeClass();
                $('#'+id).addClass('fright');
                $('#conditions_'+idvalue[1]).hide();
                $('#confirmation_'+idvalue[1]).hide();
                $('#'+id).siblings('.hidden').hide();
                $('#filter').hide();
            }
        });
    });

    $('.leave').click(function(){
        id = $(this).attr('id');
        $('#'+id).empty().html('<img src="/icones/throbber.gif" alt="loading" />');
        $.ajax({
            type: 'GET',
            url: '/ajax/membre/communautes/leave/'+id+'/',
            success: function(data){
                $('#'+id).text(data);
                $('#'+id).fadeIn('slow');
                $('#'+id).unbind('click');
                $('#'+id).removeClass();
                $('#'+id).addClass('fright');
            }
        });
    });


    // Attribution de points
    $(".points_membre").keyup(function(){
        updatePointsRestants();
    });


    // Attribution de points
    $("#points_split").click(function(){
        var dispo = parseInt($("#points_total").text());
        var nb_membres = parseInt($("#nb_membres").attr('value'));
        var point = parseInt(dispo / nb_membres);

        $(".points_membre").each(function(){
            $(this).val(point);
        });

        updatePointsRestants();
    });

    $(".points_settotal").click(function(){
        var dispo = parseInt($("#points_total").text());

        $(".points_membre").each(function(){
            $(this).val(0);
        });

        $(this).prev('input').val(dispo);

        updatePointsRestants();
    });

    $("#recompenses_membres").submit(function() {
        var dispo = parseInt($("#points_total").text());
        $(".points_membre").each(function(){
            if (!isNaN(parseInt($(this).val()))) dispo -= parseInt($(this).val());
        });
        if (dispo != 0) {
            alert('Les points ne sont pas correctement attribués.');
            return false;
        }
        return true;
    });

    function updatePointsRestants() {
        var dispo = parseInt($("#points_total").text());
        var restant = parseInt($("#points_restants").text());

        $(".points_membre").each(function(){
            if (!isNaN(parseInt($(this).val()))) dispo -= parseInt($(this).val());
        });
        $("#points_restants").text(parseInt(dispo));
        if (dispo < 0)
            $("#points_restants").addClass('error').removeClass('ok');
        else if (dispo == 0)
            $("#points_restants").addClass('ok').removeClass('error');
        else
            $("#points_restants").removeClass('error').removeClass('ok');
    }
});
