var arrSlides = new Array();	// array of slide ID's
arrSlides[0] = 'slide0';
arrSlides[1] = 'slide1';
arrSlides[2] = 'slide2';
arrSlides[3] = 'slide3';

var parentDiv = '#heroArea';
var sliderHolderDiv = '#slideHolder';
var sliderDivClass = '.slider';
var sliderJumpBtnClass = '.sliderJumpButton';
var sliderJumpBtnIDPrefix = 'sliderJumpBtn';

var autoSlideFlag = true;
var autoSlidePause = 8000;
var slideDuration = 1000;
var slideWidth = 962;
var slideHeight = 263;
var slidePadding = 0;
var totalSlideWidth = slideWidth + 2 * slidePadding;
var initialPosition = 0;

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 heroSlider = (function() {
    function constructor() { }
    
    constructor.init = function() {
        $(parentDiv).removeClass('noJS');
        $(parentDiv).attr('class', arrSlides[defaultSlide]);
        
        $('#' + arrSlides[defaultSlide]).show();
                
        $('a' + sliderJumpBtnClass).each( function(index) {			
            $(this).bind (
                "click",
                function(event){
                    var thisID = $(this).attr('id');
                    var thisNum = thisID.substring(sliderJumpBtnIDPrefix.length).toLowerCase();                    
                    //alert(thisNum);					
                    heroSlider.showThisSlide(thisNum);
                    event.preventDefault();
                    clearInterval(autoSlide);
                    autoSlideFlag = false;
                }
            );
        });
        
        $('#visibleArea').hover( function() {
            $('a.sliderScrollButton').css('display','block');
            clearInterval(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) {	
            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;				
                                        
                    $(sliderHolderDiv + ' ' + sliderDivClass).not('.cloned').remove();
                    $(sliderHolderDiv).css('width', shWidth + 'px');
                    $(sliderHolderDiv + ' ' + sliderDivClass).removeClass('cloned');
                    heroSlider.setSlideControlClass(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;			
                                        	
                    $(sliderHolderDiv).css('width', shWidth + 'px');
                    $(sliderHolderDiv).css('left', '0px');
                    $(sliderHolderDiv + ' ' + sliderDivClass).not('.cloned').remove();
                    $(sliderHolderDiv + ' ' + sliderDivClass).removeClass('cloned');
                    heroSlider.setSlideControlClass(newSlide);
                });
            } else {
                var newSlide = (slideDirection == 'right') ? curSlide - 1 : curSlide + 1;                
            
                $(sliderHolderDiv).animate({
                    left: [incString+slideDist, animType]
                }, slideDuration, function() {
                    animRunning = false;
                                        
                    heroSlider.setSlideControlClass(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;
                                
                heroSlider.setSlideControlClass(newSlide);
            });

        }
    }

    constructor.setSlideControlClass = function(newSlide) {
        curSlide = newSlide;
        $(parentDiv).attr('class','slide' + curSlide);
    }
    
    return constructor;
    
})();

function heroInit() {
    heroSlider.init();
}
$(document).ready(heroInit);

