views:

26

answers:

0

Im using this horizontal accordion. (script pasted at the end.) Im initializing like this. $(".Accordion").hrzAccordion({eventTrigger:"mouseover",openOnLoad:"1",cycle: true,handlePositionArray: "left,left,left",easing: "swing"});

What i need to do is set cycle: false on click of a div. How do i do it???

(function($) { $.hrzAccordion = {

   setOnEvent: function(i, container, finalWidth, settings){
        $("#"+container+"Handle"+i).bind(settings.eventTrigger,function() {          

                    var status = $('[rel='+container+'ContainerSelected]').data('status');

                    if(status ==1 && settings.eventWaitForAnim === true){
                     return false;  
                    }

                    if( $("#"+container+"Handle"+i).attr("rel") != container+"HandleSelected"){

                      settings.eventAction;

                        $('[id*='+container+'Handle]').attr("rel","");                          

                        $('[id*='+container+'Handle]').attr("class",settings.handleClass);

                        $("#"+container+"Handle"+i).addClass(settings.handleClassSelected);


                        $("."+settings.contentWrapper).css({width: finalWidth+"px" });

                        switch(settings.closeOpenAnimation)
                        {
                        case 1:


                    if($('[rel='+container+'ContainerSelected]').get(0)  ){
                    $('[rel='+container+'ContainerSelected]').data('status',1);

                        //current_width = $('[rel='+container+'ContainerSelected]').width();

                        $('[rel='+container+'ContainerSelected]').animate({width: "0px",opacity:"0"}, { queue:true, duration:settings.closeSpeed ,easing:settings.closeEaseAction,complete: function(){ 

                        $('[rel='+container+'ContainerSelected]').data('status',0);                                                                                                                                                                         } ,step: function(now){
                                                                                                                                                                                                                                width = $(this).width();

                        //new_width = finalWidth- (finalWidth  * (width/current_width));
                        new_width = finalWidth - width;
                        $('#'+container+'Content'+i).width(Math.ceil(new_width)).css("opacity","1");

                        }});

                    }else{
                        $('[rel='+container+'ContainerSelected]').data('status',1);

                        $('#'+container+'Content'+i).animate({width: finalWidth,opacity:"1"}, { queue:false, duration:settings.closeSpeed ,easing:settings.closeEaseAction,complete: function(){
                                                                                                                                                                                                  $('[rel='+container+'ContainerSelected]').data('status',0);   
                                                                                                                                                                                                  }});


                        }

                        break;
                        case 2:
                            $('[id*='+container+'Content]').css({width: "0px"});
                            $('#'+container+'Content'+i).animate({width: finalWidth+"px",opacity:"1"}, { queue:false, duration:settings.openSpeed ,easing:settings.openEaseAction, complete: 

settings.completeAction });

                        break;
                        }

                        $('[id*='+container+'Content]').attr("rel","");         
                        $("#"+container+"Handle"+i).attr("rel",container+"HandleSelected");
                        $("#"+container+"Content"+i).attr("rel",container+"ContainerSelected");                 


                    }

                }); 

} };

$.fn.extend({

    hrzAccordionLoop: function(options) {
        return this.each(function(a){  

            var container = $(this).attr("id") || $(this).attr("class");
            var elementCount = $('#'+container+' > li, .'+container+' > li').size();
            var settings = $(this).data('settings');

            variable_holder="interval"+container ;
            var i =0;
            var loopStatus  = "start";

            variable_holder = window.setInterval(function(){                            

            $("#"+container+"Handle"+i).trigger(settings.eventTrigger);

            if(loopStatus =="start"){
                    i = i + 1;
                }else{
                    i = i-1;    
                }

                if(i==elementCount && loopStatus  == "start"){
                    loopStatus  = "end";
                    i=elementCount-1;

                }

                if(i==0 && loopStatus  == "end"){
                    loopStatus  = "start";
                    i=0;

                }
                                            },settings.cycleInterval);


            });
        },
    hrzAccordion: function(options) {
        this.settings = {
        eventTrigger            : "click",
        containerClass          : "container",
        listItemClass           : "listItem",                   
        contentContainerClass   : "contentContainer",
        contentWrapper          : "contentWrapper",
        contentInnerWrapper     : "contentInnerWrapper",
        handleClass             : "handle",
        handleClassOver         : "handleOver",
        handleClassSelected     : "handleSelected",
        handlePosition          : "right",
        handlePositionArray     : "", // left,left,right,right,right
        closeEaseAction         : "swing",
        closeSpeed              : 500,
        openEaseAction          : "swing",
        openSpeed               : 500,
        openOnLoad              : 2,
        hashPrefix              : "tab",
        eventAction             : function(){
                                //add your own extra clickAction function here
                                },
        completeAction          : function(){
                                //add your own onComplete function here
                                },
        closeOpenAnimation      : 1,// 1 - open and close at the same time / 2- close all and than open next
        cycle                   : false, // not integrated yet, will allow to cycle through tabs by interval
        cycleInterval           : 5000,
        fixedWidth              : "",
        eventWaitForAnim        : true

    };

    if(options){
        $.extend(this.settings, options);
    }
        var settings = this.settings;



        return this.each(function(a){           

            var container = $(this).attr("id") || $(this).attr("class");            

            $(this).data('settings', settings);

            $(this).wrap("<div class='"+settings.containerClass+"'></div>");

            var elementCount = $('#'+container+' > li, .'+container+' > li').size();

            var containerWidth =  $("."+settings.containerClass).width();

            var handleWidth = $("."+settings.handleClass).css("width");

            handleWidth =  handleWidth.replace(/px/,"");
            var finalWidth;
            var handle;

            if(settings.fixedWidth){
                finalWidth = settings.fixedWidth;
            }else{
                finalWidth = containerWidth-(elementCount*handleWidth)-handleWidth;
            }

            $('#'+container+' > li, .'+container+' > li').each(function(i) {

                $(this).attr('id', container+"ListItem"+i);
                $(this).attr('class',settings.listItemClass);
                $(this).html("<div class='"+settings.contentContainerClass+"' id='"+container+"Content"+i+"'>"
                             +"<div class=\""+settings.contentWrapper+"\">"
                             +"<div class=\""+settings.contentInnerWrapper+"\">"
                             +$(this).html()
                             +"</div></div></div>");

                if($("div",this).hasClass(settings.handleClass)){

                var html = $("div."+settings.handleClass,this).attr("id",""+container+"Handle"+i+"").html();
                $("div."+settings.handleClass,this).remove();

                 handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>";
                }else{
                 handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'></div>";
                }



                if(settings.handlePositionArray){
                    splitthis               = settings.handlePositionArray.split(",");
                    settings.handlePosition = splitthis[i];
                }

                switch(settings.handlePosition ){
                    case "left":
                    $(this).prepend( handle );
                    break;
                    case "right":   
                    $(this).append( handle );   
                    break;
                    case "top": 
                    $("."+container+"Top").append( handle );    
                    break;
                    case "bottom":  
                    $("."+container+"Bottom").append( handle ); 
                    break;
                }                   

                $("#"+container+"Handle"+i).bind("mouseover", function(){
                    $("#"+container+"Handle"+i).addClass(settings.handleClassOver);
                });

                $("#"+container+"Handle"+i).bind("mouseout", function(){
                    if( $("#"+container+"Handle"+i).attr("rel") != "selected"){
                        $("#"+container+"Handle"+i).removeClass(settings.handleClassOver);
                    }
                });


                $.hrzAccordion.setOnEvent(i, container, finalWidth, settings);              

                if(i == elementCount-1){
                    $('#'+container+",."+container).show();                 
                }



                if(settings.openOnLoad !== false && i == elementCount-1){
                        var location_hash = location.hash;
                        location_hash  = location_hash.replace("#", "");    
                        if(location_hash.search(settings.hashPrefix) != '-1' ){
                        var tab = 1;
                        location_hash  = location_hash.replace(settings.hashPrefix, "");
                        }

                        if(location_hash && tab ==1){
                            $("#"+container+"Handle"+(location_hash)).attr("rel",container+"HandleSelected");
                            $("#"+container+"Content"+(location_hash)).attr("rel",container+"ContainerSelected");       
                            $("#"+container+"Handle"+(location_hash-1)).trigger(settings.eventTrigger);

                        }else{
                            $("#"+container+"Handle"+(settings.openOnLoad)).attr("rel",container+"HandleSelected");
                            $("#"+container+"Content"+(settings.openOnLoad)).attr("rel",container+"ContainerSelected"); 
                            $("#"+container+"Handle"+(settings.openOnLoad-1)).trigger(settings.eventTrigger);
                        }                   
                }   
            }); 

            if(settings.cycle === true){
                $(this).hrzAccordionLoop();
            }
        });             
    }       
});

})(jQuery);