/*******************
Carousel Navigation
Author: Scott Culler
Email: bsculler@gmail.com
*******************/

var carouselCurIndex = 1;
var carouselMinIndex = 1;
var carouselMaxIndex = 0;
var carouselIndex = null;
var elem1 = null; //Handle to list elements
var elem2 = null;
var nav1 = null; //Handle to navagation button elements
var nav2 = null;
var carouselTimer = null;//Timer Handle
var xfadeTimer = null;//Second Timer to slowly cross fade list items

//Handles the carousels movment when user has not clicked next, prev, or selected a number
function runCarousel () {
  elem1 = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  nav1 = document.getElementById("feat_nav" + carouselIndex[carouselCurIndex-1]);
  if (carouselCurIndex >= carouselMaxIndex) {
    carouselCurIndex = carouselMinIndex;
  } else {
    carouselCurIndex++;
  }
  elem2 = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  nav2 = document.getElementById("feat_nav" + carouselIndex[carouselCurIndex-1]);
  elem1.style.opacity = 1;
  elem1.style.display = "inline";
  nav1.style.background = "none";
  elem2.style.opacity = 0;
  elem2.style.display = "none";
  nav2.style.backgroundColor = "#C8C985";
  xfade();
};

//Pauses carousel for 30sec
function pauseCarousel () {
  cancelTimers();
  carouselTimer = setTimeout("runCarousel()", 30000);
};

//Cross fades between two elements
function xfade () {
  cOpacity = elem1.style.opacity;
  nOpacity = elem2.style.opacity;
  
  cOpacity -= .05;
  nOpacity = (+nOpacity) + .05;// + symbol to force var to be num type
  
  elem2.style.display = "inline";
  elem1.style.opacity = cOpacity;
  elem2.style.opacity = nOpacity;
  
  setOpacity(elem1); 
  setOpacity(elem2);
  if(cOpacity<=0) {
    elem1.style.display = "none";
    clearTimeout(xfadeTimer);
    carouselTimer = setTimeout("runCarousel()", 10000);
  } else {
    xfadeTimer = setTimeout("xfade()" ,60);
  }
  
};

//Sets opacity for all browsers
function setOpacity(obj) {
  if(obj.style.opacity>1.0) {
    obj.style.opacity = 1.0;
    return;
  }
  obj.style.MozOpacity = obj.style.opacity;
  obj.style.filter = "alpha(opacity=" + (obj.style.opacity*100) + ")";
};

//Cancel all timers and make sure current item is showing
function cancelTimers () {
  var elem = null;
  var nav = null;
  clearTimeout(xfadeTimer);
  clearTimeout(carouselTimer);
  for (i=0; i<=carouselMaxIndex-1; i++) {
    elem = document.getElementById("feat_item" + carouselIndex[i]);
    nav = document.getElementById("feat_nav" + carouselIndex[i]);
    elem.style.opacity = 0;
    setOpacity(elem); //Set opacity for all browsers
    elem.style.display = "none";
    nav.style.background = "none";
  }
  elem = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  nav = document.getElementById("feat_nav" + carouselIndex[carouselCurIndex-1]);
  elem.style.opacity = 1;
  setOpacity(elem); //Set opacity for all browsers
  elem.style.display = "inline";
  nav.style.backgroundColor = "#C8C985";
  
};

//Move to next item
function carouselNext (isClick) {
  elem1 = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  if (carouselCurIndex >= carouselMaxIndex) {
    carouselCurIndex = carouselMinIndex;
  } else {
    carouselCurIndex++;
  }
  elem2 = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  //this is for IE
  elem1.style.display = "none";
  elem2.style.display = "inline";
  //==============
  pauseCarousel();
};

//Move to previous item
function carouselPrev (isClick) {
  elem1 = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  if (carouselCurIndex <= carouselMinIndex) {
    carouselCurIndex = carouselMaxIndex;
  } else {
    carouselCurIndex--;
  }
  elem2 = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  //this is for IE
  elem1.style.display = "none";
  elem2.style.display = "inline";
  //==============
  pauseCarousel();
};

//Move to specifec item
function carouselSelect (index) {
  elem1 = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  
  //document.getElementById('debug').innerHTML += "<br/> " + index + ": ";
  
  for (i=0; i<=carouselMaxIndex-1; i++) {
    //document.getElementById('debug').innerHTML += carouselIndex[i] + " ";
    if (carouselIndex[i] == index) {
      carouselCurIndex = i+1;
    }
  }
  //document.getElementById('debug').innerHTML += "Cur Index: " + carouselCurIndex + "<br/> ";
  
  elem2 = document.getElementById("feat_item" + carouselIndex[carouselCurIndex-1]);
  //this is for IE
  elem1.style.display = "none";
  elem2.style.display = "inline";
  //==============
  pauseCarousel();
};
