/*----------------------------------------------------------------------*\
| EasySliders by Michael Hamilton: Requires Mootools 1.2                 |
\------------------------------------------------------------------------/
EXAMPLE:
    <div>
        <a id = 'show1' class = 'ShowButton' HideOnToggle = '1'>Show</a>
        <a id = 'hide1' class = 'HideButton'>Hide</a>
        <div id = "SliderNumber1" class = "Slider" StartHidden = '1' SlideDuration = '1000'>
            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed 
            do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
            Ut enim ad minim veniam, quis nostrud exercitation ullamco 
            laboris nisi ut aliquip ex ea commodo consequat.
        </div>
    </div>
/*----------------------------------------------------------------------*\
| If HideOnToggle is true, the togglers need unique Ids (if not, you do  |
| not need ids on the togglers.)  But the sliders always need to have a  |
| valid Id set.                                                          |
| SlideDuration is a millisecond value and is optionally supplied.       |
| StartHidden indicates we want to hide the block immediately, or we can |
| style it with display:none; and on the first slide it will work.       |
|                                                                        |
| Each slider's parent element can only hold one slider/button combo.    |
\*----------------------------------------------------------------------*/

window.addEvent('domready', function() {
    var verticalSliders = new Array();
    var slideDurations = new Array();
    var slideStatus = new Array(); 
    var currentVertical = 0;
    var sliderId = 0;
    var ShowButton;
    var HideButton;
    var TmpFunction;
    var Toggle;
    function IsTrue(value){
        return (value == 1 || value == '1' || value == true || value == 'true' || value == 'yes');
    }
    
    function setSlideStatusTrue(SlideIndex){
        slideStatus[SlideIndex] = true;
    }
    
    $$('.Slider').each(function(slideElement){
        sliderId = slideElement.getProperty('Id');
        ShowButton = slideElement.getParent().getElement('.ShowButton');
        HideButton = slideElement.getParent().getElement('.HideButton');
        slideDurations[currentVertical] = 700;
        if($defined(slideElement.getProperty('SlideDuration'))){
            slideDurations[currentVertical] = slideElement.getProperty('SlideDuration');
        }
        slideStatus[currentVertical] = true;
        verticalSliders[currentVertical] = new Fx.Slide(sliderId);
        
        Toggle = false;
        if($defined(ShowButton) && $defined(HideButton)){
            Toggle = IsTrue(ShowButton.getProperty('HideOnToggle')) || IsTrue(HideButton.getProperty('HideOnToggle'));
        }
        
        if(IsTrue(slideElement.getProperty('StartHidden'))){
            verticalSliders[currentVertical].hide();
            if(Toggle){HideButton.setStyle('display', 'none');}
        }else{
            if(Toggle){ShowButton.setStyle('display', 'none');}
        }
        
        if($defined(ShowButton)){
            ShowButton.setProperty('SliderNumber', currentVertical);
            ShowButton.setProperty('SliderId', sliderId);
            TmpFunction = function(){
                var SlideIndex = this.getProperty('SliderNumber');
                if(slideStatus[SlideIndex]){
                    $(this.getProperty('SliderId')).setStyle('display', 'block').setStyle('visibility', 'visible');
                    slideStatus[SlideIndex] = false;
                    setSlideStatusTrue.delay(slideDurations[SlideIndex], this, [SlideIndex]);
                    verticalSliders[SlideIndex].slideIn();
                }
            };
            if(Toggle){
                ShowButton.setProperty('ToggleId', HideButton.getProperty('Id'));
                TmpFunction = function(){
                    var SlideIndex = this.getProperty('SliderNumber');
                    if(slideStatus[SlideIndex]){
                        $(this.getProperty('SliderId')).setStyle('display', 'block').setStyle('visibility', 'visible');
                        slideStatus[SlideIndex] = false;
                        setSlideStatusTrue.delay(slideDurations[SlideIndex], this, [SlideIndex]);
                        verticalSliders[this.getProperty('SliderNumber')].slideIn();
                        this.setStyle('display', 'none');
                        $(this.getProperty('ToggleId')).setStyle('display', 'block');
                    }
                };
            }
            ShowButton.addEvent('click', TmpFunction);
        }
        if($defined(ShowButton)){
            HideButton.setProperty('SliderNumber', currentVertical);
            HideButton.setProperty('SliderId', sliderId);
            TmpFunction = function(){
                var SlideIndex = this.getProperty('SliderNumber');
                if(slideStatus[SlideIndex]){
                    slideStatus[SlideIndex] = false;
                    setSlideStatusTrue.delay(slideDurations[SlideIndex], this, [SlideIndex]);
                    verticalSliders[this.getProperty('SliderNumber')].slideOut();
                }
            };
            if(Toggle){
                HideButton.setProperty('ToggleId', ShowButton.getProperty('Id'));
                TmpFunction = function(){
                    var SlideIndex = this.getProperty('SliderNumber');
                    if(slideStatus[SlideIndex]){
                        slideStatus[SlideIndex] = false;
                        setSlideStatusTrue.delay(slideDurations[SlideIndex], this, [SlideIndex]);
                        verticalSliders[this.getProperty('SliderNumber')].slideOut();
                        this.setStyle('display', 'none');
                        $(this.getProperty('ToggleId')).setStyle('display', 'block');
                    }
                };
            }
            HideButton.addEvent('click', TmpFunction);
        }
        currentVertical++;
    });
});