var slideshows = Array();

function slideshow_add(div_id, delay, step, showbuttons) {
  var objLi, objLink, j;
  var adiv = document.getElementById(div_id);
  if (adiv == undefined) return;
  var adiv_pager = document.getElementById(div_id + '_pager');
  if (adiv_pager != undefined) {
    var ul = adiv_pager.firstChild;
    if (showbuttons) {
      j = 0;
      for (var i=0;i<adiv.childNodes.length;i++) {
        if (adiv.childNodes[i].nodeName == 'DIV' && adiv.childNodes[i].id != div_id + '_pager') {
          j = j +1;
          objLi = document.createElement("li");

          objLink = document.createElement("a");
          objLink.setAttribute('href','#');
          objLink.div_id = div_id;
          objLink.i = i;
          objLink.innerHTML = j;
          objLink.onclick = function () { slideshow_go(this.div_id, this.i); return false; }
          objLi.appendChild(objLink);
          
          ul.insertBefore(objLi, ul.lastChild);
        }
      }
      adiv_pager.style.display = 'block';
      adiv_pager.style.zIndex = 1003;
    } else {
      adiv_pager.style.display = 'none';
    }
  }
  if (slideshows[div_id] == undefined) {
    slideshows[div_id] = Array();
    slideshows[div_id]['run'] = false;
    slideshows[div_id]['delay'] = delay;
    slideshows[div_id]['step'] = step;
    slideshow_init(div_id);
    slideshows[div_id]['run'] = true;
  }
}

function get_next_div(div_id, current) {
  var acontainer = document.getElementById(div_id);
  var div_ids = Array();
  var result;
  for (var i=0;i<acontainer.childNodes.length;i++) {
    if (acontainer.childNodes[i].nodeName == 'DIV' && acontainer.childNodes[i].id != div_id + '_pager') {
      div_ids.push(i);
    }
  }
  if (current == undefined) {
    if (div_ids.length > 0) {
      result = div_ids[0];
    }
  } else {
    for (i in div_ids) {
      if (div_ids[i] == current) break;
    }
    if (i < div_ids.length - 1) {
      i++;
      result = div_ids[i];
    } else {
      result = div_ids[0];
    }
  }
  return result;
}

function slideshow_init(div_id) {
  var acontainer = document.getElementById(div_id);
  slideshows[div_id]['opacity'] = 100;
  slideshows[div_id]['delays'] = 0;
  for (var i=0;i<acontainer.childNodes.length;i++) {
    if (acontainer.childNodes[i].nodeName == 'DIV' && acontainer.childNodes[i].id != div_id + '_pager') {
      acontainer.childNodes[i].style.display = 'none';
    }
  }
  if (slideshows[div_id]['next'] != undefined) {
    slideshows[div_id]['current'] = slideshows[div_id]['next'];
  } else {
    slideshows[div_id]['current'] = get_next_div(div_id, slideshows[div_id]['current']);
  }
  slideshows[div_id]['next'] = get_next_div(div_id, slideshows[div_id]['current']);
  if (slideshows[div_id]['current'] != undefined) {
    acontainer.childNodes[slideshows[div_id]['current']].style.display = 'block';
    acontainer.childNodes[slideshows[div_id]['current']].style.filter = '';
    acontainer.childNodes[slideshows[div_id]['current']].style.opacity = 1;
    acontainer.childNodes[slideshows[div_id]['current']].style.zIndex = 1002;
    var adiv_pager = document.getElementById(div_id + '_pager');
    if (adiv_pager != undefined) {
      var ul = adiv_pager.firstChild;
      var j = 0;
      for (var i=0;i<acontainer.childNodes.length;i++) {
        if (acontainer.childNodes[i].nodeName == 'DIV' && acontainer.childNodes[i].id != div_id + '_pager') {
          j = j + 1;
          if (i == slideshows[div_id]['current']) break;
        }
      }
      var k = 0;
      for (var i=0;i<ul.childNodes.length;i++) {
        if (ul.childNodes[i].nodeName == 'LI') {
          k = k + 1;
          if (k == j) {
            ul.childNodes[i].firstChild.className = 'selected';
          } else if (ul.childNodes[i].firstChild.className == 'selected') {
            ul.childNodes[i].firstChild.className = '';
          }
        }
      }
    }
  }
  if (slideshows[div_id]['next'] != undefined) {
    acontainer.childNodes[slideshows[div_id]['next']].style.display = 'block';
    acontainer.childNodes[slideshows[div_id]['next']].style.filter = 'alpha(opacity=0,finishopacity=0,style=0)';
    acontainer.childNodes[slideshows[div_id]['next']].style.opacity = 0;
    acontainer.childNodes[slideshows[div_id]['next']].style.zIndex = 1001;
  }
}

function slideshow_fade(div_id) {
  var acontainer = document.getElementById(div_id);
  if (slideshows[div_id]['current'] != undefined && slideshows[div_id]['next'] != undefined) {
    adiv = acontainer.childNodes[slideshows[div_id]['current']];
    bdiv = acontainer.childNodes[slideshows[div_id]['next']];
  } else {
    return;
  }
  slideshows[div_id]['opacity'] = Math.round(slideshows[div_id]['opacity'] - slideshows[div_id]['step']);
  if (slideshows[div_id]['opacity'] <= 0) {
    adiv.style.filter = 'alpha(opacity=0,finishopacity=0,style=0)';
    adiv.style.opacity = 0;
    bdiv.style.filter = '';
    bdiv.style.opacity = 1;
    slideshow_init(div_id);
  } else {
    adiv.style.filter = 'alpha(opacity=' + slideshows[div_id]['opacity'] + ',finishopacity=' + slideshows[div_id]['opacity'] + ',style=0)';
    adiv.style.opacity = slideshows[div_id]['opacity'] / 100;
    bdiv.style.filter = 'alpha(opacity=' + (100 - slideshows[div_id]['opacity']) + ',finishopacity=' + (100 - slideshows[div_id]['opacity']) + ',style=0)';
    bdiv.style.opacity = 1 - (slideshows[div_id]['opacity'] / 100);  
  }
}

function slideshow_go(div_id, next) {
  var acontainer = document.getElementById(div_id);
  slideshows[div_id]['opacity'] = 100;
  slideshows[div_id]['delays'] = slideshows[div_id]['delay'];
  for (var i=0;i<acontainer.childNodes.length;i++) {
    if (acontainer.childNodes[i].nodeName == 'DIV' && acontainer.childNodes[i].id != div_id + '_pager') {
      acontainer.childNodes[i].style.display = 'none';
    }
  }
  slideshows[div_id]['next'] = next;
  if (slideshows[div_id]['current'] != undefined) {
    acontainer.childNodes[slideshows[div_id]['current']].style.display = 'block';
    acontainer.childNodes[slideshows[div_id]['current']].style.filter = '';
    acontainer.childNodes[slideshows[div_id]['current']].style.opacity = 1;
  }
  if (slideshows[div_id]['next'] != undefined) {
    acontainer.childNodes[slideshows[div_id]['next']].style.display = 'block';
    acontainer.childNodes[slideshows[div_id]['next']].style.filter = 'alpha(opacity=0,finishopacity=0,style=0)';
    acontainer.childNodes[slideshows[div_id]['next']].style.opacity = 0;
  }
}

function slideshow_timer(interval) {
  var i;
  for (i in slideshows) {
    if (slideshows[i]['run']) {
      slideshows[i]['delays'] = slideshows[i]['delays'] + 1;
    }
    if (slideshows[i]['delays'] >= slideshows[i]['delay']) {
      slideshow_fade(i);
    }
  }
  setTimeout("slideshow_timer(" + interval + ")",interval);
}

function slideshow_stop(div_id) {
  if (slideshows[div_id] != undefined) slideshows[div_id]['run'] = false;
}

function slideshow_start(div_id) {
  if (slideshows[div_id] != undefined) slideshows[div_id]['run'] = true;
}

function slideshow_pause(div_id, state) {
  if (state == 'stop') {
    slideshow_stop(div_id);
    state = 'start';
  } else {
    slideshow_start(div_id);
    state = 'stop';
  }
  return state;
}

