/// <reference path="jquery-1.2.6.min.js" />

// Constants and variables
var obj = null;
var step = null;
var mycat = null;
var depth = null;
var nameLevel0 = "step1";
var depthMax = 4;
var currentStep = 1;
var currentLinkSelected = null;
var currentLinkSelectedLevel0 = null;
var currentSelectedClassOff;
var SUFFIX_SELECTED_CLASS = "Selected";
var disableOnMouseOut = true;


jQuery(document).ready(function() {
    

    
    // Sorti du menu
    jQuery(".menu-gauche").hover(
        function() {
            disableOnMouseOut = true;
        },
        function() {
            disableOnMouseOut = false;
            setTimeout(function() {
                if (!disableOnMouseOut) {
                    for (i = 2; i <= depthMax; i++) {
                       // jQuery(".step" + i).fadeOut(100);
                    }
                }
            }, 500);
        }
    );
    // Over sur les liens du niveau 0
    //    jQuery(".menu-gauche .step1 a").hover(
    //        function() {
    //            if (jQuery(this).attr("class").contains("Selected")) {
    ////                for (i = 2; i <= depthMax; i++) {
    //                    jQuery(".step2").fadeIn(100);
    //                //}
    //            }
    //        },
    //        function() { }
    //    );
    jQuery('li.nextStep').livequery('click', function(e) {
        step = jQuery(e.target).parent().parent().parent().attr("class");
        if (step == nameLevel0) {
            // Ajout d'une classe "selected" pour le premier niveau
            if (currentLinkSelectedLevel0 != null) {
                if (jQuery(this).attr("id") != currentLinkSelectedLevel0.parent().attr("id")) {
                    // On récupère le lien sélectionné
                    currentLink = jQuery(this).find("a");
                    // On récupère sa classe par défaut
                    currentClassOff = currentLink.attr("class");
                    // On ajoute la classe "selected"
                    currentLink.addClass(currentClassOff + SUFFIX_SELECTED_CLASS);
                    // Si il ya un lien déjà sélectionné on lui enlève la classe "selected"
                    currentLinkSelectedLevel0.removeClass(currentSelectedClassOff + SUFFIX_SELECTED_CLASS);
                    // On met à jour la référence du lien sélectionné
                    currentLinkSelectedLevel0 = currentLink;
                    currentSelectedClassOff = currentClassOff;
                }
            }
            else {
                currentLinkSelectedLevel0 = jQuery(this).find("a");
                currentSelectedClassOff = currentLinkSelectedLevel0.attr("class");
                currentLinkSelectedLevel0.addClass(currentSelectedClassOff + SUFFIX_SELECTED_CLASS);
            }
        }
        // Autres niveaux
        else {
            currentLinkSelected = jQuery("." + step).find("li > a.selected");
            if (currentLinkSelected != null) {
                currentLinkSelected.removeClass(SUFFIX_SELECTED_CLASS.toLowerCase());
            }
            jQuery(this).find("a").addClass(SUFFIX_SELECTED_CLASS.toLowerCase());
        }
        // On récupère la profondeur actuel
        depth = parseInt(step.substr(4, 1));
        id = jQuery(this).attr("id");
        // Chargement des enfants
        LoadChildrens(id);
        return false;
    });
    jQuery('li.noStep').livequery('click', function(e) {
        return true;
    });
});

// Charge les enfants d'une catégorie
function LoadChildrens(id) {
    // Affichage de la liste des enfants et chargement
    currentStep = parseInt(step.substr(4, 1));
    if (currentStep < depthMax) {
        var nextStep = currentStep + 1;
        var stepClass = 'step' + nextStep;
        for (i = nextStep; i <= depthMax; i++) {
            jQuery(".step" + i).isExisting();
            jQuery(".step" + i).isExisting();
        }
        jQuery(".step1").append('<div class="' + stepClass + '"></div>');
        jQuery("." + stepClass).isLoading();
        // Récupération des données depuis le Handler
        jQuery.getJSON("/Handlers/Categories.ashx?urlKey=" + id, function(data) {
            if (data.length > 0) {
                var html = "";
                html = html + '<ul class="Nav">';
                for (var i = 0; i < data.length; i++) {
                    liClass = data[i].HasChildrens ? "nextStep" : "noStep";
                    html = html + '<li class="' + liClass + '" id="' + data[i].Id + '"><a href="' + data[i].Url + '" onfocus="this.blur();"><img src="/images/menu/next-links.gif" alt=">" /> ' + data[i].Name + '</a></li>';
                }
                html = html + '</ul>';
                jQuery("." + stepClass).isLoaded(html);
            }
        });
    }
}

// Apparition animée
function delayAppear(object) {
    jQuery(object).css("display", "block").animate({ width: "210px" }, 300);
    jQuery(object).append('<div class="loader"></div>');
}

// Méthodes d'extension
jQuery.fn.extend({
    isLoading: function() { // 
        objectTarget = this;
        //setTimeout("delayAppear(objectTarget)", 300);
        jQuery(this).css("display", "block").animate({ width: "210px" }, 300);
        jQuery(this).append('<div class="loader"></div>');
    },
    isLoaded: function(html) {
        jQuery(this).find(".loader").fadeOut(100, function() {
            jQuery(this).parent().html(html);
            //jQuery('.heyBonhomme').jScrollPane({showArrows:true, scrollbarWidth:10});
        });
    },
    isExisting: function() {
        if (jQuery(this)) {
            jQuery(this).fadeOut(250, function() {
                jQuery(this).remove();
            });
        }
    }
});


//jQuery(document).ready(function() 
//{    
//    jQuery(".test").selectbox();
//});

