/*
 +-------------------------------------------------------------------+
 |                  J S - S L I D E S H O W   (v2.1)                 |
 |                                                                   |
 | Copyright Gerd Tentler                www.gerd-tentler.de/tools   |
 | Created: Apr. 9, 2003                 Last modified: Sep. 6, 2008 |
 +-------------------------------------------------------------------+
 | This program may be used and hosted free of charge by anyone for  |
 | personal purpose as long as this copyright notice remains intact. |
 |                                                                   |
 | Obtain permission before selling the code for this program or     |
 | hosting this software on a commercial website or redistributing   |
 | this software over the Internet or in any other medium. In all    |
 | cases copyright must remain intact.                               |
 +-------------------------------------------------------------------+

 This script was tested with:

 - Windows XP: Internet Explorer 6, Netscape Navigator 7, Opera 7 + 9, Firefox 2
 - Mac OS X:   Internet Explorer 5, Safari 1

 If you use another browser or operating system, this script may not work for you.
*/
//---------------------------------------------------------------------------------------------------------
// Configuration
//---------------------------------------------------------------------------------------------------------

var slsInnovAutoStart = true;                    // start animation (true = yes, false = no)
var slsInnovPauseTime = 9;                       // change pages every .. seconds
var slsInnovMode = "fade";                      // mode can be "slide" or "fade"
var slsInnovViewModeIcons = false;                // view mode icons (true = yes, false = no)
var slsInnovFadeSpeed = 1;                      // fading speed (just for fade mode)

var slsInnovWidth = 250;                         // content width (pixels)
var slsInnovHeight = 130;                        // content height (pixels)
var slsInnovColor = "#f7f7f7";                   // content background color
var slsInnovOverflow = "hidden";                 // content scrollbars: "auto" or "hidden"
                                            // ("auto" may cause flickering with Gecko browsers)

var slsInnovBorderWidth = 0;                     // border width (pixels)
var slsInnovBorderStyle = "none";               // border style (CSS-spec, e.g. "solid", "outset", "inset", etc.)
var slsInnovBorderColor = "#f7f7f7";             // border color

var slsInnovBarHeight = 0;                      // iconbar height (pixels)
var slsInnovBarSpace = 0;                        // space between iconbar and slideshow (pixels)
var slsInnovBarPosition = "bottom";              // iconbar position ("top" or "bottom")

var slsInnovImgPrev = "bl.gif";            // previous button: path to image
var slsInnovImgPrevWidth = 0;                   // previous button: image width (pixels)
var slsInnovImgNext = "bl.gif";                // next button: path to image
var slsInnovImgNextWidth = 0;                   // next button: image width (pixels)
var slsInnovImgPlay = "bl.gif";                // play button: path to image
var slsInnovImgPlayWidth = 0;                   // play button: image width (pixels)
var slsInnovImgStop = "bl.gif";                // stop button: path to image
var slsInnovImgStopWidth = 0;                   // stop button: image width (pixels)
var slsInnovImgSlide = "bl.gif";              // slide mode button: path to image
var slsInnovImgSlideWidth = 0;                  // slide mode button: image width (pixels)
var slsInnovImgFade = "bl.gif";                // fade mode button: path to image
var slsInnovImgFadeWidth = 0;                   // fade mode button: image width (pixels)
var slsInnovImgBlank = "bl.gif";              // path to blank image

var slsInnovIndView = true;                      // view index (true = yes, false = no)
var slsInnovIndCount = 3;                       // max. number of visible index entries
var slsInnovIndSpace = 8;                        // space between index and iconbar
var slsInnovIndColor = "";                       // index background color
var slsInnovIndFont = "Arial, Helvetica";        // index font family
var slsInnovIndFontSize = 10;                    // index font size (pixels)
var slsInnovIndPosition = "bottom";              // index position ("top" or "bottom")

var slsInnovSlidingMax = 20;                     // if there are more than slsInnovSlidingMax pages, sliding will be
                                            // turned off for performance reasons; this does not affect fading

//---------------------------------------------------------------------------------------------------------
// Functions
//---------------------------------------------------------------------------------------------------------

var DOM = document.getElementById;
var OP = (window.opera || navigator.userAgent.indexOf('Opera') != -1);
var IE4 = (document.all && !OP);

var slsInnovBord, slsInnovCont, slsInnovArea, slsInnovBarArea, slsInnovIndArea, slsInnovIV, slsInnovTimer, slsInnovPrevious;
var slsInnovIndStart = slsInnovCurPage = 0;
var slsInnovPages = (typeof(slsInnovContents) != 'undefined') ? slsInnovContents.length : 0;
var slsInnovAnimation = false;

var slsInnovW = slsInnovWidth + slsInnovBorderWidth * 2;
var slsInnovH = slsInnovHeight + slsInnovBorderWidth * 2 + slsInnovBarSpace + slsInnovBarHeight;
if(slsInnovIndView) slsInnovH += slsInnovIndSpace + slsInnovIndFontSize;

function slsInnovObject(id) {
  this.elem = DOM ? document.getElementById(id) : document.all[id];
  this.css = this.elem.style;
  this.width = this.elem.offsetWidth;
  this.left = 0;
  return this;
}

function slsInnovSetMode(type) {
  var obj, i;
  switch(type.toLowerCase()) {

    case 'slide':
      if(document.images.slsInnovFade) {
        document.images.slsInnovFade.style.backgroundColor = '#666666';
      }
      if(document.images.slsInnovSlide) {
        document.images.slsInnovSlide.style.backgroundColor = '#FF0000';
      }
      for(i = 0; i < slsInnovPages; i++) {
        obj = new slsInnovObject('slsInnovPage' + i);
        obj.css.position = 'static';
        obj.css.display = 'block';
        obj.css.cssFloat = 'left';
        obj.css.styleFloat = 'left';
      }
      slsInnovNewX = slsInnovArea.left = slsInnovCurX = slsInnovCurPage * -slsInnovWidth;
      slsInnovArea.css.left = slsInnovNewX + 'px';
      slsInnovMode = 'slide';
      slsInnovJump(slsInnovCurPage);
      if(slsInnovPauseTime && slsInnovAutoStart) slsInnovStartAnimation();
      break;

    case 'fade':
      if(document.images.slsInnovSlide) {
        document.images.slsInnovSlide.style.backgroundColor = '#666666';
      }
      if(document.images.slsInnovFade) {
        document.images.slsInnovFade.style.backgroundColor = '#FF0000';
      }
      for(i = 0; i < slsInnovPages; i++) {
        obj = new slsInnovObject('slsInnovPage' + i);
        obj.css.position = 'absolute';
        obj.css.display = 'none';
        obj.css.cssFloat = 'none';
        obj.css.styleFloat = 'none';
        obj.css.zIndex = 1;
      }
      slsInnovArea.css.left = '0px';
      slsInnovPrevious = null;
      slsInnovMode = 'fade';
      slsInnovJump(slsInnovCurPage);
      if(slsInnovPauseTime && slsInnovAutoStart) slsInnovStartAnimation();
      break;

    default: alert('Wrong type: ' + type);
  }
}

function slsInnovPrevPage() {
  if(!slsInnovAnimation && slsInnovCurPage > 0) {
    slsInnovJump(slsInnovCurPage - 1);
  }
}

function slsInnovNextPage() {
  if(!slsInnovAnimation && slsInnovCurPage < slsInnovPages - 1) {
    slsInnovJump(slsInnovCurPage + 1);
  }
}

function slsInnovJump(page) {
  if(!slsInnovAnimation) {
    if(slsInnovMode == 'fade') {
      if(page != slsInnovCurPage) {
        slsInnovPrevious = new slsInnovObject('slsInnovPage' + slsInnovCurPage);
        slsInnovPrevious.css.zIndex = 1;
      }
      var newPage = new slsInnovObject('slsInnovPage' + page);
      slsInnovOpacity = 0;
      slsInnovSetOpacity(newPage);
      newPage.css.display = 'block';
      newPage.css.zIndex = 2;
      slsInnovIV = setInterval('slsInnovFader(' + page + ')', 1);
    }
    else {
      slsInnovNewX = slsInnovArea.left = page * -slsInnovWidth;
      if(slsInnovPages > slsInnovSlidingMax) {
        slsInnovCurX = slsInnovNewX;
        slsInnovArea.css.left = slsInnovNewX + 'px';
        slsInnovCheckImg();
        if(slsInnovIndView) slsInnovSetIndex(slsInnovGetIndStart());
      }
      else slsInnovIV = setInterval('slsInnovSlider()', 1);
    }
    slsInnovCurPage = page;
  }
}

function slsInnovCheckImg() {
  var iconbar = 0;
  var img = document.images['slsInnovLeft'];
  if(slsInnovCurPage <= 0) img.src = slsInnovImgBlank;
  else img.src = iconbar = slsInnovImgPrev;
  img = document.images['slsInnovRight'];
  if(slsInnovCurPage >= slsInnovPages - 1) img.src = slsInnovImgBlank;
  else img.src = iconbar = slsInnovImgNext;
  if(!iconbar) slsInnovBarArea.css.visibility = slsInnovIndArea.css.visibility = 'hidden';
}

function slsInnovGetIndStart() {
  var start = 0;
  if(slsInnovCurPage % slsInnovIndCount == 0) {
    start = slsInnovCurPage + 1;
  }
  else if(slsInnovCurPage % slsInnovIndCount == slsInnovIndCount - 1) {
    start = slsInnovCurPage - slsInnovIndCount + 2;
  }
  return start;
}

function slsInnovSetIndex(start) {
  if(!slsInnovAnimation) {
    if(start) slsInnovIndStart = start - 1;
    var html = link = '';
    for(var i = slsInnovIndStart; i < slsInnovPages && i < slsInnovIndStart + slsInnovIndCount; i++) {
      if(i && html) html += ' &middot; ';
      if(i == slsInnovCurPage) html += '<b>' + (i+1) + '</b>';
      else {
        link = 'javascript:slsInnovStopAnimation(); slsInnovJump(' + i + ')';
        html += '<a href="' + link + '" style="text-decoration:none">' + (i+1) + '</a>';
      }
    }
    if(slsInnovIndStart) {
      link = 'javascript:slsInnovSetIndex(' + (slsInnovIndStart - slsInnovIndCount+1) + ')';
      html += ' &middot; <a href="' + link + '" style="text-decoration:none">&lt;&lt;</a> ';
    }
    if(i < slsInnovPages) {
      link = 'javascript:slsInnovSetIndex(' + (i+1) + ')';
      html += ' &middot; <a href="' + link + '" style="text-decoration:none">&gt;&gt;</a>';
    }
    slsInnovIndArea.elem.innerHTML = html;
  }
}

function slsInnovDoAnimation() {
  if(slsInnovCurPage >= slsInnovPages - 1) slsInnovJump(0);
  else slsInnovNextPage();
}

function slsInnovStopAnimation() {
  if(slsInnovAutoStart) {
    if(slsInnovTimer) clearInterval(slsInnovTimer);
    var img = document.images['slsInnovPlayStop'];
    img.src = slsInnovImgPlay;
    img.width = slsInnovImgPlayWidth;
    img.onclick = function() { slsInnovStartAnimation(true); this.blur(); }
    slsInnovAutoStart = false;
  }
}

function slsInnovStartAnimation(showNext) {
  slsInnovStopAnimation();
  slsInnovTimer = setInterval('slsInnovDoAnimation()', slsInnovPauseTime * 1000);
  var img = document.images['slsInnovPlayStop'];
  img.src = slsInnovImgStop;
  img.width = slsInnovImgStopWidth;
  img.onclick = function() { slsInnovStopAnimation(); this.blur(); }
  slsInnovAutoStart = true;
  if(showNext) slsInnovDoAnimation();
}

function slsInnovInit() {
  if(DOM || IE4) {
    if(!slsInnovPages) {
      alert("No contents found.");
      return false;
    }
    else 
    	if (slsInnovPages == 1)
    		slsInnovAutoStart = false;	
    
    slsInnovBord = new slsInnovObject('slsInnovBorder');
    slsInnovCont = new slsInnovObject('slsInnovContainer');
    slsInnovArea = new slsInnovObject('slsInnovSlider');
    slsInnovBarArea = new slsInnovObject('slsInnovBar');
    if(slsInnovIndView) slsInnovIndArea = new slsInnovObject('slsInnovInd');

    if(slsInnovColor) slsInnovCont.css.backgroundColor = slsInnovColor;
    if(slsInnovIndColor) slsInnovIndArea.css.backgroundColor = slsInnovIndColor;

    if(slsInnovBorderWidth) slsInnovBord.css.borderWidth = slsInnovBorderWidth + 'px';
    if(slsInnovBorderStyle) slsInnovBord.css.borderStyle = slsInnovBorderStyle;
    if(slsInnovBorderColor) slsInnovBord.css.borderColor = slsInnovBorderColor;

    var bordTop = 0;
    if(slsInnovBarPosition == 'top') bordTop += (slsInnovBarHeight + slsInnovBarSpace);
    if(slsInnovIndView && slsInnovIndPosition == 'top') bordTop += (slsInnovIndFontSize + slsInnovIndSpace);

    slsInnovBord.css.top = bordTop + 'px';
    slsInnovBord.css.width = slsInnovWidth + 'px';
    slsInnovBord.css.height = slsInnovHeight + 'px';

    slsInnovArea.width = slsInnovWidth * slsInnovPages;
    slsInnovArea.css.width = slsInnovArea.width + 'px';
    slsInnovArea.css.position = 'absolute';

    slsInnovCont.css.width = slsInnovWidth + 'px';
    slsInnovCont.css.height = slsInnovHeight + 'px';
    slsInnovCont.css.visibility = 'visible';

    var content = '<img src="' + slsInnovImgPrev + '" name="slsInnovLeft" height="' + slsInnovBarHeight + '"' +
                  ' width="' + slsInnovImgPrevWidth + '" style="margin:0px 5px; cursor:pointer"' +
                  ' onClick="slsInnovStopAnimation(); slsInnovPrevPage(); this.blur()">' +
                  '<img src="' + slsInnovImgPlay + '" name="slsInnovPlayStop" height="' + slsInnovBarHeight + '"' +
                  ' width="' + slsInnovImgPlayWidth + '" style="margin:0px 5px; cursor:pointer"' +
                  ' onClick="slsInnovStartAnimation(true); this.blur()">' +
                  '<img src="' + slsInnovImgNext + '" name="slsInnovRight" height="' + slsInnovBarHeight + '"' +
                  ' width="' + slsInnovImgNextWidth + '" style="margin:0px 5px; cursor:pointer"' +
                  ' onClick="slsInnovStopAnimation(); slsInnovNextPage(); this.blur()">';

    if(slsInnovViewModeIcons) {
      content += '<img src="' + slsInnovImgSlide + '" name="slsInnovSlide" height="' + slsInnovBarHeight + '"' +
                 ' width="' + slsInnovImgSlideWidth + '" style="margin:0px 5px 0px 25px; cursor:pointer"' +
                 ' onClick="slsInnovSetMode(\'slide\')">' +
                 '<img src="' + slsInnovImgFade + '" name="slsInnovFade" height="' + slsInnovBarHeight + '"' +
                 ' width="' + slsInnovImgFadeWidth + '" style="margin:0px 5px; cursor:pointer"' +
                 ' onClick="slsInnovSetMode(\'fade\')">';
    }
    var barTop = 0;
    if(slsInnovBarPosition != 'top') barTop += slsInnovHeight + slsInnovBorderWidth*2 + slsInnovBarSpace;
    if(slsInnovIndView && slsInnovIndPosition == 'top') barTop += slsInnovIndFontSize + slsInnovIndSpace;
    slsInnovBarArea.elem.innerHTML = content;
    slsInnovBarArea.css.top = barTop + 'px';
    slsInnovBarArea.css.width = slsInnovW + 'px';
    slsInnovBarArea.css.height = slsInnovBarHeight + 'px';
    slsInnovBarArea.css.textAlign = 'center';

    if(slsInnovIndView) {
      var indTop = (slsInnovIndPosition == 'top') ? 0 : slsInnovHeight + slsInnovBorderWidth*2 + slsInnovBarSpace + slsInnovBarHeight + slsInnovIndSpace;
      slsInnovIndArea.css.top = indTop + 'px';
      slsInnovIndArea.css.height = slsInnovIndFontSize + 'px';
      slsInnovIndArea.css.width = slsInnovW + 'px';
      slsInnovIndArea.css.textAlign = 'center';
      if(slsInnovIndFont) slsInnovIndArea.css.fontFamily = slsInnovIndFont;
      if(slsInnovIndFontSize) slsInnovIndArea.css.fontSize = slsInnovIndFontSize + 'px';
      slsInnovSetIndex();
    }
    setTimeout('slsInnovCheckImg()', 100);
    slsInnovSetMode(slsInnovMode);
  }
  else alert("Sorry, this script doesn't work with your browser.");
}

//---------------------------------------------------------------------------------------------------------
// Page slider
//---------------------------------------------------------------------------------------------------------

var slsInnovCurX = slsInnovNewX = 0;

function slsInnovSlider() {
  if(slsInnovCurX != slsInnovNewX) {
    slsInnovAnimation = true;
    var percent = .1 * (slsInnovNewX - slsInnovCurX);
    if(percent > 0) percent = Math.ceil(percent);
    else percent = Math.floor(percent);
    slsInnovCurX += percent;
    slsInnovArea.css.left = slsInnovCurX + 'px';
  }
  else {
    slsInnovAnimation = false;
    if(slsInnovIV) clearInterval(slsInnovIV);
    slsInnovCheckImg();
    if(slsInnovIndView) slsInnovSetIndex(slsInnovGetIndStart());
  }
}

//---------------------------------------------------------------------------------------------------------
// Page fader
//---------------------------------------------------------------------------------------------------------

var slsInnovOpacity = 0;

function slsInnovSetOpacity(obj) {
  if(obj) {
    obj.css.opacity = slsInnovOpacity / 100;
    obj.css.MozOpacity = slsInnovOpacity / 100;
    obj.css.KhtmlOpacity = slsInnovOpacity / 100;
    obj.css.filter = 'alpha(opacity=' + slsInnovOpacity + ')';
  }
}

function slsInnovFader(page) {
  if(obj = new slsInnovObject('slsInnovPage' + page)) {
    slsInnovAnimation = true;
    if(slsInnovFadeSpeed && slsInnovOpacity < 100) {
      slsInnovOpacity += slsInnovFadeSpeed;
      if(slsInnovOpacity > 100) slsInnovOpacity = 100;
      slsInnovSetOpacity(obj);
    }
    else {
      slsInnovAnimation = false;
      slsInnovOpacity = 0;
      if(slsInnovIV) clearInterval(slsInnovIV);
      slsInnovCheckImg();
      if(slsInnovIndView) slsInnovSetIndex(slsInnovGetIndStart());
      if(slsInnovPrevious && slsInnovPrevious != obj) {
        slsInnovPrevious.css.display = 'none';
      }
    }
  }
}

//---------------------------------------------------------------------------------------------------------
// Create slideshow
//---------------------------------------------------------------------------------------------------------

function slsInnovBuildContainers() {
  document.write('<div id="slideShow" style="position:relative; width:' + slsInnovW + 'px; height:' + slsInnovH + 'px">');
  if(slsInnovIndView) document.write('<div id="slsInnovInd" style="position:absolute; z-index:69"></div>');
  document.write('<div id="slsInnovBar" style="position:absolute; z-index:69"></div>');
  document.write('<div id="slsInnovBorder" style="position:absolute">');
  document.write('<div id="slsInnovContainer" style="position:absolute; z-index:0; overflow:hidden;');
  document.write(' clip:rect(0,' + slsInnovWidth + ',' + slsInnovHeight + ',0); visibility:hidden">');
  document.write('<div id="slsInnovSlider">');

  for(var i = 0; i < slsInnovPages; i++) {
    document.write('<div id="slsInnovPage' + i + '" style="width:' + slsInnovWidth + 'px;');
    document.write(' height:' + slsInnovHeight + 'px; overflow:' + slsInnovOverflow + '; background-color:' + slsInnovColor + '">');
    document.write(slsInnovContents[i] + '</div>');
  }
  document.write('</div></div></div></div>');
}

slsInnovBuildContainers();
AttachEvent(window,'load',slsInnovInit);
