/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
$(document).ready(function(){
    $(".pn_section_closer").bind("click",function(){
        pnCloseSection($(this).parent().attr("id"));
    });
    $(".pn_section_opener").bind("click",function(){
        pnOpenSection($(this).parent().attr("id"));
    });
    $(".pn_level_closer").bind("click",function(){
        pnCloseLevel($(this).parent().attr("id"));
    });
    $(".pn_level_opener").bind("click",function(){
        pnOpenLevel($(this).parent().attr("id"));
    });
    pnSetHoverStates();
    
});

function pnCloseSection(id){
    // Close section
    $("#"+id+" div").unbind();
    $("#"+id+" div").removeClass("pn_section_closer");
    $("#"+id+" div").addClass("pn_section_opener");
    $("#"+id+"_content li").each(function(){
       pnCloseLevel($(this).attr("id"));
    });
    $("#"+id+"_content").slideUp();
    
    $("#"+id+" div.pn_section_opener").bind("click",function(){
        pnOpenSection($(this).parent().attr("id"));
    });
}

function pnOpenSection(id){
    $("#"+id+" div").unbind();
    // Close All
    $(".pn_section_closer").each(function(){
        pnCloseSection($(this).parent().attr("id"));
    });
    $("#"+id+" div").removeClass("pn_section_opener");
    $("#"+id+" div").addClass("pn_section_closer");
    $("#"+id+"_content").slideDown();
    $("#"+id+" div.pn_section_closer").bind("click",function(){
        pnCloseSection($(this).parent().attr("id"));
    });
}

function pnCloseLevel(id){
    // Close section
    $("#"+id+" li").each(function(){
        if($(this).attr("id") != id){
            pnCloseLevel($(this).attr("id"));
        }
    });
    $("#"+id+" div:first").unbind();
    $("#"+id+" div:first").removeClass("pn_level_closer");
    $("#"+id+" div:first").addClass("pn_level_opener");
    $("#"+id+"_content").slideUp();

    $("#"+id+" div:first.pn_level_opener").bind("click",function(){
        pnOpenLevel($(this).parent().attr("id"));
    });
    $("#"+id).removeClass("selected");
}

function pnOpenLevel(id){
    $("#"+id+" div").unbind();
    if($("#"+id+"_content").length > 0){
        // Close All
        pnAnimateOpenLevel(id);
    } else {
        $.post("/public/menu/ajax/level/", { id: id },
            function(data){
               $("#"+id).append(data);
               pnAnimateOpenLevel(id);
            }
         );
    }
}

function pnAnimateOpenLevel(id){
    // Close All On Same Level
    var target = $("#"+id+":parent").parent().attr("id");
    $("#"+target+" li").each(function(){
        if($(this).attr("id") != id){
            pnCloseLevel($(this).attr("id"));
        }
    });
    $("#"+id+" div:first").removeClass("pn_level_opener");
    $("#"+id+" div:first").addClass("pn_level_closer");
    $("#"+id+"_content").slideDown();
    $("#"+id+" div:first.pn_level_closer").bind("click",function(){
        pnCloseLevel($(this).parent().attr("id"));
    });
    $("#"+id).addClass("selected");
    $("#"+id+" .pn_level_2 li").bind("mouseover",function(){
        $(this).addClass("level2_hover");
    });
    $("#"+id+" .pn_level_2 li").bind("mouseout",function(){
        $(this).removeClass("level2_hover");
    });
    $("#"+id+" .pn_level_3 li").bind("mouseover",function(){
        $(this).addClass("level3_hover");
    });
    $("#"+id+" .pn_level_3 li").bind("mouseout",function(){
        $(this).removeClass("level3_hover");
    });
}

function pnSetHoverStates(){
    // Hover states
    $(".pn_level_1 li").bind("mouseover",function(){
        $(this).addClass("level1_hover");
    });
    $(".pn_level_1 li").bind("mouseout",function(){
        $(this).removeClass("level1_hover");
    });
    $(".pn_level_2 li").bind("mouseover",function(){
        $(this).addClass("level2_hover");
    });
    $(".pn_level_2 li").bind("mouseout",function(){
        $(this).removeClass("level2_hover");
    });
    $(".pn_level_3 li").bind("mouseover",function(){
        $(this).addClass("level3_hover");
    });
    $(".pn_level_3 li").bind("mouseout",function(){
        $(this).removeClass("level3_hover");
    });
}