var arrSlides = new Array();	// array of slide ID's
arrSlides[0] = 'slide0';
arrSlides[1] = 'slide1';
arrSlides[2] = 'slide2';
arrSlides[3] = 'slide3';
arrSlides[4] = 'slide4';

var parentDiv = '#visibleArea';
var sliderHolderDiv = '#slideHolder';
var sliderDivClass = '.slider';
var sliderScrollBtnClass = '.sliderScrollButton';
var sliderScrollBtnIDPrefix = 'sliderScrollBtn';
var sliderJumpBtnClass = '.sliderJumpButton';
var sliderJumpBtnIDPrefix = 'sliderJumpBtn';

var autoSlideFlag = true;
var autoSlidePause = 8500;
var slideDuration = 1000;
var slideWidth = 950;
var slideHeight = 376;
var slidePadding = 0;
var totalSlideWidth = slideWidth + 2 * slidePadding;
//var initialPosition = 100;
var initialPosition = 0;
var initialFadeDuration = 2500;

var defaultSlide = 0;

var animType = 'easeInOutCubic';

/*** Do not edit anything below ***/    

var curSlide = defaultSlide;
var animRunning = false;
var numSlides = arrSlides.length;
var lastSlide = numSlides - 1;
var autoSlide;
    
var bannerSlider = (function() {
    function constructor() { }
    
    constructor.init = function() {
        $(parentDiv).removeClass('noJS');
        $(parentDiv).attr('class', arrSlides[defaultSlide]);
        
        //$(sliderHolderDiv).css('left', -(totalSlideWidth * defaultSlide) + 'px');
/*
        $(sliderHolderDiv).css('left', -(totalSlideWidth * defaultSlide) + initialPosition + 'px');        
        $(sliderHolderDiv).animate({
            left: [0, animType]
        }, slideDuration, function() {
            bannerSlider.fadeInBubbles(defaultSlide);
        });
*/
        $('#' + arrSlides[defaultSlide]).hide();
        $(sliderHolderDiv).fadeIn(initialFadeDuration, function() {
            bannerSlider.fadeInBubbles(defaultSlide);
        });

        $('#' + arrSlides[defaultSlide]).fadeIn();
                
        $('a.' + sliderJumpBtnClass).each( function(index) {			
            $(this).bind (
                "click",
                function(event){
                    var thisID = $(this).attr('id');
                    var thisNum = thisID.substring(sliderJumpBtnIDPrefix.length).toLowerCase();                    
                    //alert(thisNum);					
                    bannerSlider.showThisSlide(thisNum);
                    event.preventDefault();
                    clearInterval(autoSlide);
                    autoSlideFlag = false;
                }
            );
        });
        
        $('a.' + sliderScrollBtnClass).each( function(index) {	
            $(this).bind (
                "click",
                function(event) {
                    var thisID = $(this).attr('id');
                    var thisDir = thisID.substring(sliderScrollBtnIDPrefix.length).toLowerCase();                    
                    //alert(thisDir);					
                    bannerSlider.showNextSlide(thisDir);
                    event.preventDefault();
                    clearInterval(autoSlide);
                    autoSlideFlag = false;
                }
            );
        });	
        
        $('#visibleArea').hover( function() {
            $('a.sliderScrollButton').css('display','block');
            clearTimeout(autoSlide);
        }, function() {
            $('a.sliderScrollButton').css('display','none');
            constructor.setAnimationInterval();
        });

        constructor.setAnimationInterval();
    }
            
    constructor.setAnimationInterval = function() {
        if (autoSlideFlag) {
          autoSlide = setInterval(function() {
            constructor.showNextSlide('left');
          }, autoSlidePause);      
        }
    }
            
    constructor.showNextSlide = function(slideDirection) {
        if (!animRunning) {	
            //bannerSlider.animateSlide(totalSlideWidth, slideDirection);
            var incString = (slideDirection == 'left') ? '-=' : '+=';
            var shWidth = $(sliderHolderDiv).outerWidth();
            var slideDist = totalSlideWidth;
            
            animRunning = true;

            if (curSlide == 0 && slideDirection == 'right') {	
                $(sliderHolderDiv).css('width', shWidth*2 + 'px');
                $(sliderHolderDiv + ' ' + sliderDivClass)
                    .clone()
                    .prependTo(sliderHolderDiv)
                    .addClass('cloned');

                $(sliderHolderDiv).css('left', -totalSlideWidth * (numSlides) + 'px');
                
                newSlide = numSlides - 1;
                
                $(sliderHolderDiv).animate({
                    left: [incString+slideDist, animType]
                }, slideDuration, function() {
                    animRunning = false;				
                    
                    $('div.slide' + curSlide + ' div.bubble').hide();
                    
                    $(sliderHolderDiv + ' ' + sliderDivClass).not('.cloned').remove();
                    $(sliderHolderDiv).css('width', shWidth + 'px');
                    $(sliderHolderDiv + ' ' + sliderDivClass).removeClass('cloned');
                    bannerSlider.setSlideControlClass(newSlide);
                    bannerSlider.fadeInBubbles(newSlide);
                });
            } else if (curSlide == numSlides - 1 && slideDirection == 'left') {
                $(sliderHolderDiv).css('width', shWidth*2 + 'px');
                $(sliderHolderDiv + ' ' + sliderDivClass)
                    .clone()
                    .appendTo(sliderHolderDiv)
                    .addClass('cloned');
        
                newSlide = 0;
        
                $(sliderHolderDiv).animate({
                    left: [incString+slideDist, animType]
                }, slideDuration, function() {
                    animRunning = false;			
                    
                    $('div.slide' + curSlide + ' div.bubble').hide();
                    	
                    $(sliderHolderDiv).css('width', shWidth + 'px');
                    $(sliderHolderDiv).css('left', '0px');
                    $(sliderHolderDiv + ' ' + sliderDivClass).not('.cloned').remove();
                    $(sliderHolderDiv + ' ' + sliderDivClass).removeClass('cloned');
                    bannerSlider.setSlideControlClass(newSlide);
                    bannerSlider.fadeInBubbles(newSlide);
                });
            } else {
                var newSlide = (slideDirection == 'right') ? curSlide - 1 : curSlide + 1;                
            
                $(sliderHolderDiv).animate({
                    left: [incString+slideDist, animType]
                }, slideDuration, function() {
                    animRunning = false;
                    
                    $('div.slide' + curSlide + ' div.bubble').hide();
                    
                    bannerSlider.setSlideControlClass(newSlide);                    
                    bannerSlider.fadeInBubbles(newSlide);
                });
            }
        }
    }
    
    constructor.showThisSlide = function(strNewSlide) {
        var newSlide = parseInt(strNewSlide);
        if (!animRunning && curSlide != newSlide) {			
                
            slideDirection = (newSlide > curSlide) ? 'left' : 'right';
            
            var incString = (slideDirection == 'left') ? '-=' : '+=';
            var shWidth = $(sliderHolderDiv).outerWidth();
            var slideDist = Math.abs((newSlide - curSlide) * totalSlideWidth);

            animRunning = true;

            $(sliderHolderDiv).animate({
                left: [incString+slideDist, animType]
            }, slideDuration, function() {
                animRunning = false;
                
                $('div.slide' + curSlide + ' div.bubble').hide();
                
                bannerSlider.setSlideControlClass(newSlide);
                bannerSlider.fadeInBubbles(newSlide);
            });

        }
    }

    constructor.setSlideControlClass = function(newSlide) {
        curSlide = newSlide;
        $(parentDiv).attr('class','slide' + curSlide);
    }
    
    constructor.animateSlide = function(slideDist, slideDirection) {			
    }
    
    constructor.fadeInBubbles = function(slideID) {
      var delay = 500;
      var dur = 500;
      var pause = 2500;
      var t1=setTimeout(function() {
        $('#slide' + slideID + ' .bubble1').fadeIn(dur);
      }, delay);
      var t2=setTimeout(function() {
        $('#slide' + slideID + ' .bubble2').fadeIn(dur);
      }, dur + delay + pause);
      var t3=setTimeout(function() {
        $('#slide' + slideID + ' .bubble3').fadeIn(dur);
      }, 2 * (dur + delay + pause));
      
    }
	
    return constructor;
    
})();
