


$.currentSlide = 0;

var zIndex = -1;
var animationSpeed = 1000;
var loaderClass= 'loader';
var slideInterval;
var numSlides;
var slideDelay = 8;
var slideDelayFirst = 0.1;
var slideType = 'fade'; //fade or slide
var direction = 'forward'; //forward/back 
var lastSlide;
var slideBeforeLast;
var slideshowStarted = false;

(function($) {
// This plugin creates a slideshow
jQuery.fn.slideshow = function(options) {
   
  // Cache jQuery object
  var jQueryMatchedObj = this;
  
  function _initialize() {
    numSlides = jQueryMatchedObj.length;
    if (slideType == 'slide')
    {
      _configure_css();
    }
    start_timer();
    return false;
  }
  
  
 
  
  function _configure_css(jQueryMatchedObj){
    
    for(i=0;i<numSlides;i++){
     
      //AF April 2011 Added to create animated slide from  right  set up start position on the right
				
          var startposition = $(window).width();
          $('.slideholder-'+i).css({'margin-left': startposition});
	
    }
  }
  
 
 
  
  // private function for debugging
  function debug($obj) {
    if (window.console && window.console.log) {
      window.console.log($obj);
    }
  }
  
  return this.each(_initialize);
};


})(jQuery);


//These functions are external so that we can call them from anywhere


function slide_next() {
      lastSlide = $.currentSlide
      
      if($.currentSlide < numSlides-1){
        $.currentSlide++;
      } else {
        $.currentSlide=0;
      }
     
      if (lastSlide == 0)
      {
        slidebeforeLast = numSlides-1
      }
      else
      {
        slidebeforeLast = lastSlide - 1;
      } 
      
      
      
    //AF Added to animate sliding show
			var startposition =$(window).width();
			
        //Hide the slide before last
        $('.slideholder-'+slidebeforeLast).css({'visibility':'hidden'});
        
         //Move new slide to starting position
        $('.slideholder-'+$.currentSlide).css({'margin-left': startposition});
       
       //Make new slide visible
        $('.slideholder-'+$.currentSlide).css({'visibility':'visible'});
        
        //Start moving out old slide
        $('.slideholder-'+lastSlide).css({'z-index':zIndex-1}).animate({'margin-left' : -startposition }, animationSpeed);
        
        //Move in new slide
        $('.slideholder-'+$.currentSlide).css({'z-index':zIndex}).animate({'margin-left' : 0 }, animationSpeed);
        
        //Now let's clear the timer and restart it
        clearInterval(slideInterval);
        slideInterval = setInterval(function(){
          slide_next($.currentSlide, numSlides);
      
    }, (slideDelay*1000));
          
  }
  
  
  function slide_prev() {
  
     lastSlide = $.currentSlide
  
     if($.currentSlide > 0){
        $.currentSlide--;
      } else {
        $.currentSlide=numSlides-1;
      }
    
      if (lastSlide == numSlides-1)
      {
        slidebeforeLast = 0
      }
      else
      {
        slidebeforeLast = lastSlide + 1;
      }   
     

    //AF Added to animate sliding show
			var startposition =$(window).width();
			
       //Move new slide to starting position
        $('.slideholder-'+$.currentSlide).css({'margin-left': -startposition});
        
       //Make new slide visible
        $('.slideholder-'+$.currentSlide).css({'visibility':'visible'});
       
        //Move in new slide
        $('.slideholder-'+$.currentSlide).css({'z-index':zIndex}).animate({'margin-left' : 0 }, animationSpeed);
        
        //Start moving out old slide
        $('.slideholder-'+lastSlide).css({'z-index':zIndex-1}).animate({'margin-left' : startposition }, animationSpeed); 
        
        
        
        //Now let's clear the timer and restart it
        clearInterval(slideInterval);
        slideInterval = setInterval(function(){
          slide_prev($.currentSlide, numSlides);
      
    }, (slideDelay*1000));
          
  }
  
  function fade_next() {
        
      //Work out new and old slide  
      lastSlide = $.currentSlide
      
      if($.currentSlide < numSlides-1){
        $.currentSlide++;
      } else {
        $.currentSlide=0;
      }
     
			//Resize new slide so that it fills the window size
      resize_image(); 
      
      //Fade out old text and image
      $('.slideText'+lastSlide).fadeOut(1000);
      $('#bgmaximage'+lastSlide).css({'z-index':zIndex-1}).fadeOut(1000);
      
      //Fade in new image and text
      $('#bgmaximage'+$.currentSlide).css({'z-index':zIndex}).fadeIn(1000);
      $('.slideText'+$.currentSlide).css({'visibility': 'visible'});
      $('.slideText'+$.currentSlide).fadeIn(1000);
      
      //Update the slide indicator dots
      $('.dot'+lastSlide).css({'background-image':"url('images/HP_Dot.png')"});
      $('.dot'+$.currentSlide).css({'background-image':"url('images/HP_DotHighlight.png')"});
       
      //Now let's clear the timer and restart it
      clearInterval(slideInterval);
      slideInterval = setInterval(function(){
      fade_next($.currentSlide, numSlides);
      
    }, (slideDelay*1000));
  }
  
  function fade_prev() {
      //work out new and old slide number
      lastSlide = $.currentSlide
  
     if($.currentSlide > 0){
        $.currentSlide--;
      } else {
        $.currentSlide=numSlides-1;
      }
     
      //Resize new image so that it fits the window
			resize_image(); 
			
			//Fade out old text and image
			$('.slideText'+lastSlide).fadeOut(1000);
      $('#bgmaximage'+lastSlide).css({'z-index':zIndex-1}).fadeOut(600);
      
      
      //Fade in new image and text
      $('#bgmaximage'+$.currentSlide).css({'z-index':zIndex}).fadeIn(600);
      $('.slideText'+$.currentSlide).css({'visibility': 'visible'});
      $('.slideText'+$.currentSlide).fadeIn(1000);
     
      //Update slide indicator dots
      $('.dot'+lastSlide).css({'background-image':"url('images/HP_Dot.png')"});
      $('.dot'+$.currentSlide).css({'background-image':"url('images/HP_DotHighlight.png')"});
          
      //Now let's clear the timer and restart it
      clearInterval(slideInterval);
      slideInterval = setInterval(function(){
      fade_prev($.currentSlide, numSlides);
      
    }, (slideDelay*1000));
  }
  
  
  
  function resize_image() {
    get_orig_data($('#bgmaximage'+$.currentSlide));
    size_image($('#bgmaximage'+$.currentSlide));
    center_image($('#bgmaximage'+$.currentSlide));  
      
    //Set the window resize function so that the iamge will resze with the window  
    $(window).resize(function(){
      size_image($this);
      center_image($this)
    });
  }
 

 function start_timer() {
    // Hide the loading graphic if there is one
    $('.'+loaderClass).hide();
    
    if (slideType == 'slide')
    {
      $('.slideholder-'+$.currentSlide).css({'visibility': 'visible'});
      $('.slideholder-'+$.currentSlide).css({'margin-left': 0});
      $('.slideholder-'+$.currentSlide).css({'z-index':zIndex}).fadeIn();
    
    }
    else
    {
      //Resize first image and make bring it to the front
      resize_image();
      
      $('#bgmaximage'+$.currentSlide).css({'z-index':zIndex})
      
      //Now make all images visible but don't display
      for (var i=0; i<numSlides; i++)
      {
        $('#bgmaximage'+i).css({'visibility': 'visible'});
        if (i > 0)
        {
          $('#bgmaximage'+i).css({'display':'none'});
        }
      }
      
      //Make the first set of text visible
      $('.slideText'+$.currentSlide).css({'visibility': 'visible'});
      
    }
     
     
    // Start timer for slideshow
    slideInterval = setInterval(function(){
      if (slideType == 'slide')
      {
        if (direction == 'forward')
          slide_next();
        else
          slide_prev();
      }
      else
      {
        
        if(direction == 'forward')
         
          fade_next();
        else
          fade_prev();
      }
      
    }, (slideDelay*1000));
    
  }
  

