
function set_to_open(element) {
    element.addClass('open');
    element.removeClass('closed');
    }

function set_to_closed(element) {
    element.removeClass('open');
    element.addClass('closed');
    }
    
function sniff_for_partialclass(element, partialclass) {
        var fullclasslist = element.getProperty('class');
        var classarray = fullclasslist.split(" ");
        var returnedclass = "nomatch";
        classarray.each(function(myclass) {
            if (myclass.contains(partialclass)) {
                returnedclass = myclass; /* we're only returning one match! */
                }    
        });
        return returnedclass;
        
        
}

function get_last_tab (element) {
    tab = element.getLast();
    if (tab && tab.hasClass('tab')) 
        return tab;
    else
        return null;
}


    
window.addEvent('load', function() {
        
//OPACITY:
        var haveopacityclasses = $ES('.setOpacity');
        haveopacityclasses.each(function(hasopacityclass) {
                var classmatch = sniff_for_partialclass(hasopacityclass, 'js_op');
                if (classmatch!=="nomatch") {
                    var myopacity = classmatch.split("-");
                    if (myopacity.length == 2) {
                        hasopacityclass.setOpacity(parseInt(myopacity[1])/100);
                    }
                }
            
            });
        
        
        
//WIDGETS:
        var widgets = $ES('.wps_widget');
        
        
//accordions
        var accordions = $ES('.accordion', widgets);
        
        accordions.each(function(accordion) {
            
            
            // two types of toggle style switching:
            // sniffer looks for the background image and switches it
            // or "css" applies open / closed classes to toggler & images set in CSS
            
            if (accordion.hasClass('switchCSS')) 
                {var BGswitch_type = "css"}
            else{var BGswitch_type = "sniffer"};
            
            
            // are the stretchers to be a fixed height? sniff for a class "js_fh"
            // and get the value after the hyphen in the class:
            var classmatch = sniff_for_partialclass(accordion, 'js_fh');
            if (classmatch!=="nomatch") {var myfixedheight = classmatch.split("-")[1];}
            else {var myfixedheight = 0};
            
            var alwayshide = false;
            if (accordion.hasClass('alwayshide')) alwayshide = true;
                        
            
            togglers = $ES('.toggler', accordion);
            stretchers = $ES('.stretcher', accordion);
            if (togglers.length == stretchers.length) {
                        var display_option = 0;
                         if (accordion.hasClass('random')) {
                            display_option = $random(0,togglers.length-1);
                            }
                        var togglercounter = 0;
                        togglers.each(function(toggler) {
                             if (toggler.hasClass('mefirst')) {
                                display_option = togglercounter;
                                }
                                togglercounter++;
                            });
                            
                        
                    
                        myAccordion = new Fx.Accordion(togglers, stretchers, {
                        fixedHeight: myfixedheight,
                        display: display_option,
                        alwaysHide: alwayshide,
                        onActive: function(toggler, element){
                                                    
                                set_to_open(toggler);
                                
                        },
                        
                         onBackground: function(toggler, element){
                        
                            set_to_closed(toggler);
                        }                    
                        
                        });
            };
        });
    
    
//sliders
    

        var sliders = $ES('.slider', widgets);
        
        sliders.each(function(slider) {

            var toggler = $E('.toggler', slider);
            var stretcher = $E('.stretcher', slider);
            var tab = get_last_tab(slider);
            
            var mySlider = new Fx.Slide(stretcher, {duration: 200});
                
                if (slider.hasClass('closed') == true) {
                    mySlider.hide();
                };
                
                    
                if (toggler) {
                    toggler.addEvent('click', function() {
                        if (mySlider.open) {
                            mySlider.slideOut();
                            set_to_closed(slider);
                        }
                        else {
                            mySlider.slideIn();
                            set_to_open(slider);                    
                        }
                    
                    }); 
                }
                
                if (tab) {
                    tab.addEvent('click', function() {
                    if (mySlider.open) {
                        mySlider.slideOut();
                        set_to_closed(slider);
                        }
                    else {
                        mySlider.slideIn();
                        set_to_open(slider);                    
                    };
                    
                    }); 
                }                    
                    
        });
    
    
// pops
    

        var pops = $ES('.pop', widgets);
        
        pops.each(function(pop) {

            var toggler = $E('.toggler', pop);
            var stretcher = $E('.stretcher', pop);
            var tab = get_last_tab(pop);
            
                
                if (toggler) {
                    toggler.addEvent('click', function() {
                        if (!pop.hasClass('closed')) {
                            set_to_closed(pop);
                            }
                        else {
                            set_to_open(pop);                    
                        };
                        
                    }); 
                }
                
                if (tab) {tab.addEvent('click', function() {
                    if (!pop.hasClass('closed')) {
                        set_to_closed(pop);
                        }
                    else {
                        set_to_open(pop);                    
                    };
                    
                    }); 
                }    
                    
                    
        });
        
        
    
// faq
    
        var faqs = $ES('.faq', widgets);
                
        faqs.each(function(faq){
        
            var questions = $ES('.question', faq);
            
            
            questions.each(function(question) {
                
                var toggler = $E('.toggler', question);
                var answer = $E('.answer', question);
                var tab = $E('.tab', question);
                var mySlider = new Fx.Slide(answer, {duration: 100});
        
                if (question.hasClass('closed')) {
                    mySlider.hide();
                };
                    
                tab.addEvent('click', function() {
                        if (mySlider.open) {
                        mySlider.slideOut();
                        set_to_closed(question);
                        }
                        else {
                        mySlider.slideIn();
                        set_to_open(question);
                        }
                        
                });
        
                    
                toggler.addEvent('click', function() {
                        if (mySlider.open) {
                        mySlider.slideOut();
                        set_to_closed(question);
                        }
                        else {
                        mySlider.slideIn();
                        set_to_open(question);
                        }
                });
    
            });
                
                
            var categories = $ES('.category', faq);
            var cattoshow = categories[$random(0,categories.length-1)];
            
            
            
            
            categories.each(function(category) {
                set_to_closed(category);
                if (category.hasClass('mefirst')) {cattoshow = category};
                
                toggler = $E('.toggler', category);
                    
                toggler.addEvent('click', function() {
                    $ES('.category', faq).each(function(cat){
                        if (cat == category) {
                            if (cat.hasClass('open')) {
                                set_to_closed(cat);
                                }
                            else {
                                set_to_open(cat);
                                }
                        }
                        else {
                                set_to_closed(cat);
                        }
                    });
                });
        
            
            
            });
        
            
            if(cattoshow) set_to_open(cattoshow);
        
        
        });

// toggler
        if ($('sh_toggler')) {
            $('sh_toggler').addEvent('click', function (e) {
                $('sh_toggler_container').toggleClass('show');
                e = new Event(e);
                e.preventDefault();
            });
        }
        
        
            
});
            
    

