/*
 * jQuery UI Accordion 1.6
 *
 * Copyright (c) 2007 JÃ¶rn Zaefferer
 *
 * http://docs.jquery.com/UI/Accordion
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.accordion.js 4876 2008-03-08 11:49:04Z joern.zaefferer $
 *
 */
(function($){
    $.ui=$.ui||{};

    $.fn.extend({
        accordion:function(options,data){
            var args=Array.prototype.slice.call(arguments,1);
            return this.each(function(){
                if(typeof options=="string"){
                    var accordion=$.data(this,"ui-accordion");
                    accordion[options].apply(accordion,args)
                    }else{
                    if(!$(this).is(".ui-accordion")){
                        $.data(this,"ui-accordion",new $.ui.accordion(this,options))
                        }
                    }
            })
    },
    activate:function(index){
        return this.accordion("activate",index)
        }
    });
$.ui.accordion=function(container,options){
    this.options=options=$.extend({},$.ui.accordion.defaults,options);
    this.element=container;
    $(container).addClass("ui-accordion");
    if(options.navigation){
        var current=$(container).find("a").filter(options.navigationFilter);
        if(current.length){
            if(current.filter(options.header).length){
                options.active=current
                }else{
                options.active=current.parent().parent().prev();
                current.addClass("current")
                }
            }
    }
options.headers=$(container).find(options.header);
options.active=findActive(options.headers,options.active);
if(options.fillSpace){
    var maxHeight=$(container).parent().height();
    maxHeight=0;
    options.headers.each(function(){
        maxHeight-=$(this).outerHeight()
        });
    var maxPadding=0;
    options.headers.next().each(function(){
        maxPadding=Math.max(maxPadding,$(this).innerHeight()-$(this).height())
        }).height(maxHeight-maxPadding)
    }else{
    if(options.autoheight){
        var maxHeight=0;
        options.headers.next().each(function(){
            maxHeight=Math.max(maxHeight,$(this).outerHeight())
            }).height(maxHeight)
        }
    }
options.headers.not(options.active||"").next().hide();
options.active.parent().andSelf().addClass(options.selectedClass);
if(options.event){
    $(container).bind((options.event)+".ui-accordion",clickHandler)
    }
};

function scopeCallback(callback,scope){
    return function(){
        return callback.apply(scope,arguments)
        }
    }
function completed(cancel){
    if(!$.data(this,"ui-accordion")){
        return
    }
    var instance=$.data(this,"ui-accordion");
    var options=instance.options;
    options.running=cancel?0:--options.running;
    if(options.running){
        return
    }
    if(options.clearStyle){
        options.toShow.add(options.toHide).css({
            height:"",
            overflow:""
        })
        }
        $(this).triggerHandler("change.ui-accordion",[options.data],options.change)
    }
    function toggle(toShow,toHide,data,clickedActive,down){
    var options=$.data(this,"ui-accordion").options;
    options.toShow=toShow;
    options.toHide=toHide;
    options.data=data;
    var complete=scopeCallback(completed,this);
    options.running=toHide.size()==0?toShow.size():toHide.size();
    if(options.animated){
        if(!options.alwaysOpen&&clickedActive){
            $.ui.accordion.animations[options.animated]({
                toShow:jQuery([]),
                toHide:toHide,
                complete:complete,
                down:down,
                autoheight:options.autoheight
                })
            }else{
            $.ui.accordion.animations[options.animated]({
                toShow:toShow,
                toHide:toHide,
                complete:complete,
                down:down,
                autoheight:options.autoheight
                })
            }
        }else{
    if(!options.alwaysOpen&&clickedActive){
        toShow.toggle()
        }else{
        toHide.hide();
        toShow.show()
        }
        complete(true)
    }
}
function clickHandler(event){
    var options=$.data(this,"ui-accordion").options;
    if(options.disabled){
        return false
        }
        if(!event.target&&!options.alwaysOpen){
        options.active.parent().andSelf().toggleClass(options.selectedClass);
        var toHide=options.active.next(),data={
            instance:this,
            options:options,
            newHeader:jQuery([]),
            oldHeader:options.active,
            newContent:jQuery([]),
            oldContent:toHide
        },toShow=options.active=$([]);
        toggle.call(this,toShow,toHide,data);
        return false
        }
        var clicked=$(event.target);
    if(clicked.parents(options.header).length){
        while(!clicked.is(options.header)){
            clicked=clicked.parent()
            }
        }
    var clickedActive=clicked[0]==options.active[0];
if(options.running||(options.alwaysOpen&&clickedActive)){
    return false
    }
    if(!clicked.is(options.header)){
    return
}
options.active.parent().andSelf().toggleClass(options.selectedClass);
if(!clickedActive){
    clicked.parent().andSelf().addClass(options.selectedClass)
    }
    var toShow=clicked.next(),toHide=options.active.next(),data={
    instance:this,
    options:options,
    newHeader:clicked,
    oldHeader:options.active,
    newContent:toShow,
    oldContent:toHide
},down=options.headers.index(options.active[0])>options.headers.index(clicked[0]);
options.active=clickedActive?$([]):clicked;
toggle.call(this,toShow,toHide,data,clickedActive,down);
return false
}
function findActive(headers,selector){
    return selector!=undefined?typeof selector=="number"?headers.filter(":eq("+selector+")"):headers.not(headers.not(selector)):selector===false?$([]):headers.filter(":eq(0)")
    }
    $.extend($.ui.accordion,{
    defaults:{
        selectedClass:"selected",
        alwaysOpen:false,
        animated:"slide",
        event:"click",
        header:"a",
        autoheight:false,
        running:0,
        navigationFilter:function(){
            return this.href.toLowerCase()==location.href.toLowerCase()
            }
        },
animations:{
    slide:function(options,additions){
        options=$.extend({
            easing:"swing",
            duration:300
        },options,additions);
        if(!options.toHide.size()){
            options.toShow.animate({
                height:"show"
            },options);
            return
        }
        var hideHeight=options.toHide.height(),showHeight=options.toShow.height(),difference=showHeight/hideHeight;
        options.toShow.css({
            height:0,
            overflow:"hidden"
        }).show();
        options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate({
            height:"hide"
        },{
            step:function(now){
                var current=(hideHeight-now)*difference;
                if($.browser.msie||$.browser.opera){
                    current=Math.ceil(current)
                    }
                    options.toShow.height(current)
                },
            duration:options.duration,
            easing:options.easing,
            complete:function(){
                if(!options.autoheight){
                    options.toShow.css("height","auto")
                    }
                    options.complete()
                }
            })
    },
bounceslide:function(options){
    this.slide(options,{
        easing:options.down?"bounceout":"swing",
        duration:options.down?1000:200
        })
    },
easeslide:function(options){
    this.slide(options,{
        easing:"easeinout",
        duration:100
    })
    }
}
})
})(jQuery);
jQuery().ready(function(){
    jQuery("#list1a").accordion();
    jQuery("#list1b").accordion({
        autoheight:false
    });
    jQuery("#navigation").accordion({
        active:false,
        header:".head",
        navigation:true,
        event:"mouseover",
        fillSpace:true,
        animated:"easeslide"
    });
    jQuery("#list2").accordion({
        event:"mouseover",
        active:".selected",
        selectedClass:"active",
        animated:"bounceslide",
        header:"dt"
    }).bind("change.ui-accordion",function(event,ui){
        jQuery("<div>"+ui.oldHeader.text()+" hidden, "+ui.newHeader.text()+" shown</div>").appendTo("#log")
        });
    jQuery("#list3").accordion({
        header:"div.title",
        active:false,
        alwaysOpen:false,
        animated:false,
        autoheight:false
    });
    var wizard=$("#wizard").accordion({
        header:".title",
        event:false
    });
    var wizardButtons=$([]);
    $("div.title",wizard).each(function(index){
        wizardButtons=wizardButtons.add($(this).next().children(":button").filter(".next, .previous").click(function(){
            wizard.accordion("activate",index+($(this).is(".next")?1:-1))
            }))
        });
    var accordions=jQuery("#list1a, #list1b, #list2, #list3, #navigation, #wizard");
    jQuery("#switch select").change(function(){
        accordions.accordion("activate",this.selectedIndex-1)
        });
    jQuery("#close").click(function(){
        accordions.accordion("activate",-1)
        });
    jQuery("#switch2").change(function(){
        accordions.accordion("activate",this.value)
        });
    jQuery("#enable").click(function(){
        accordions.accordion("enable")
        });
    jQuery("#disable").click(function(){
        accordions.accordion("disable")
        });
    jQuery("#remove").click(function(){
        accordions.accordion("destroy");
        wizardButtons.unbind("click")
        })
    });

