/**
  * Javascript Rotating Divs
  *
  * Rotates display of divs contained within a parent div.
  * To adjust the time between div display, use
  * jsRotatingDivs.timeout = new_timeout; //Number of milliseconds (default is 5000 = 5 seconds)
  * To add a div (which MUST contain other divs), use
  * jsRotatingDivs.divs.push('div_id');
  * To change the display function used to toggle div visibility (to add transitions, for example), use
  * jsRotatingDivs.display_toggle_function = 'new_function_name';
  * HTML header MUST include this javascript file.  Use <script language="javascript" src="js_rotating_divs.js"></script>
  * On body load, jsRotatingDivsOnLoad() must be called to start the script.
  *
  * @author Jeremy Miller
  * @copyright 2008 TeraTask Technologies, LLC
*/

function jsRotatingDivsOnLoad() {
  if (jsRotatingDivs.divs.length > 0) {
    for (i=0;i<jsRotatingDivs.divs.length;i++) {
      jsRotatingDivsShowNextDiv(jsRotatingDivs.divs[i]);
      //Add navigation      
      document.getElementById(jsRotatingDivs.divs[i]).appendChild(window[jsRotatingDivs.navigation_function](jsRotatingDivs.divs[i]));
    }
  }  
}

function jsRotatingDivsShowNextDiv(target, increment_flag) {
  div_children = document.getElementById(target).getElementsByTagName('DIV');
  if (div_children.length > 0) {
    if (increment_flag) {
      jsRotatingDivsIncrementIndex(target);
    }
    for(j=0;j<div_children.length;j++) {      
      if (jsRotatingDivs.active_index[target] == null) jsRotatingDivs.active_index[target] = 0;
      if (j == jsRotatingDivs.active_index[target]) {
        window[jsRotatingDivs.display_toggle_function](div_children[j], true);
      } else {
        window[jsRotatingDivs.display_toggle_function](div_children[j], false);
      }
    }    
  }
  
  if (jsRotatingDivs.is_playing[target] == null) jsRotatingDivs.is_playing[target] = true;
  
  if (jsRotatingDivs.is_playing[target]) {
    jsRotatingDivs.timeouts[target] = setTimeout('jsRotatingDivsShowNextDiv("'+target+'",true);',jsRotatingDivs.timeout);
  }
}

function jsRotatingDivsDisplayToggle(target_object, is_visible) {
  if (is_visible) {    
    target_object.style.display = 'block';
  } else {
    target_object.style.display = 'none';
  }
}

function jsRotatingDivsDecrementIndex(target_parent_div) {
  jsRotatingDivs.active_index[target_parent_div]--;    
  jsRotatingDivs.active_index[target_parent_div] = (jsRotatingDivs.active_index[target_parent_div]+div_children.length)%div_children.length;
}

function jsRotatingDivsIncrementIndex(target_parent_div) {  
  jsRotatingDivs.active_index[target_parent_div]++;
  jsRotatingDivs.active_index[target_parent_div] = jsRotatingDivs.active_index[target_parent_div]%div_children.length;
}
function jsRotatingDivsAttachEvent(object, event) {
  if (object.attachEvent) {
    object.attachEvent('onclick',event);
  } else if (object.addEventListener) {
    object.addEventListener('click',event,false);
  }
}
function jsRotatingDivsSettings(Timeout) {
  this.timeout = Timeout;
  this.divs = new Array();
  this.active_index = new Array();
  this.display_toggle_function = 'jsRotatingDivsDisplayToggle';
  this.is_playing = new Array();
  this.timeouts = new Array();
  
  this.navigation_function = 'jsRotatingDivsCreateNavigation';
}

function jsRotatingDivsCreateNavigation(target_parent_div) {
  js_rotating_divs_navigation_span = document.createElement('SPAN');
  js_rotating_divs_navigation_span.id = 'js_rotating_divs_navigation';
  
  js_rotating_divs_navigation_rewind = document.createElement('IMG');
  js_rotating_divs_navigation_rewind.id= 'js_rotating_divs_navigation_rewind_img';
  js_rotating_divs_navigation_rewind.src = 'js_rotating_divs/images/control_rewind_blue.png';
  jsRotatingDivsAttachEvent(js_rotating_divs_navigation_rewind, function () {jsRotatingDivsDecrementIndex(target_parent_div); jsRotatingDivsShowNextDiv(target_parent_div, false);});
  
  js_rotating_divs_navigation_span.appendChild(js_rotating_divs_navigation_rewind);
  
  js_rotating_divs_navigation_play = document.createElement('IMG');
  js_rotating_divs_navigation_play.id= 'js_rotating_divs_navigation_play_img';
  js_rotating_divs_navigation_play.src = 'js_rotating_divs/images/control_pause_blue.png';
  jsRotatingDivsAttachEvent(js_rotating_divs_navigation_play, function () {jsRotatingDivsTogglePlay(target_parent_div);});
  
  js_rotating_divs_navigation_span.appendChild(js_rotating_divs_navigation_play);
  
  js_rotating_divs_navigation_fastforward = document.createElement('IMG');
  js_rotating_divs_navigation_fastforward.id= 'js_rotating_divs_navigation_fastforward_img';
  js_rotating_divs_navigation_fastforward.src = 'js_rotating_divs/images/control_fastforward_blue.png';
  jsRotatingDivsAttachEvent(js_rotating_divs_navigation_fastforward, function () {jsRotatingDivsIncrementIndex(target_parent_div); jsRotatingDivsShowNextDiv(target_parent_div, false);});
  
  js_rotating_divs_navigation_span.appendChild(js_rotating_divs_navigation_fastforward);
  
  return js_rotating_divs_navigation_span;
}

function jsRotatingDivsTogglePlay(target_parent_div) {  
  if (jsRotatingDivs.is_playing[target_parent_div]) {
    jsRotatingDivs.is_playing[target_parent_div] = false;
    document.getElementById('js_rotating_divs_navigation_play_img').src = 'js_rotating_divs/images/control_play_blue.png';
    window.clearTimeout(jsRotatingDivs.timeouts[target_parent_div]);
  } else {
    jsRotatingDivs.is_playing[target_parent_div] = true;
    document.getElementById('js_rotating_divs_navigation_play_img').src = 'js_rotating_divs/images/control_pause_blue.png';
    jsRotatingDivsShowNextDiv(target_parent_div);
  }  
}

var jsRotatingDivs = new jsRotatingDivsSettings(5000);
