/*
 +-------------------------------------------------------------------+
 |                  J S - S L I D E S H O W   (v1.6)                 |
 |                                                                   |
 | Copyright Gerd Tentler                www.gerd-tentler.de/tools   |
 | Created: Apr. 9, 2003                 Last modified: Dec. 8, 2007 |
 +-------------------------------------------------------------------+
 | 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 s_slsAutoStart = true;                    // start auto slide (true = yes, false = no)
var s_slsAutoSlideTime = 5;                   // change pages every .. seconds

var s_slsWidth = 208;                         // content width (pixels)
var s_slsHeight = 188;                        // content height (pixels)
var s_slsColor = "#f5e2c8";                   // content background color
var s_slsOverflow = "hidden";                 // content scrollbars: "auto" or "hidden"
                                            // ("auto" may cause flickering with Gecko browsers)

var s_slsBorderWidth = 0;                     // border width (pixels)
var s_slsBorderStyle = "none";               // border style (CSS-spec, e.g. "solid", "outset", "inset", etc.)
var s_slsBorderColor = "#FFFFFF";             // border color

var s_slsBarHeight = 10;                      // iconbar height (pixels)
var s_slsBarSpace = 2;                        // space between iconbar and page contents (pixels)

var s_slsIndView = true;                      // view index (true = yes, false = no)
var s_slsIndCount = 10;                       // max. number of visible index entries
var s_slsIndHeight = 15;                      // index height (pixels);
var s_slsIndSpace = 8;                        // space between index and iconbar
var s_slsIndColor = "";                       // index background color
var s_slsIndFont = "Arial, Helvetica";        // index font family
var s_slsIndFontSize = 14;                    // index font size (pixels)

var s_slsSlidingMax = 20;                     // if there are more than s_slsSlidingMax pages, sliding will be
                                            // turned off for performance reasons

//---------------------------------------------------------------------------------------------------------
// Functions
//---------------------------------------------------------------------------------------------------------

var DOM = document.getElementById;
var OP = (navigator.userAgent.indexOf('Opera') != -1);
var IE4 = (document.all && !OP);

var s_slsBord, s_slsCont, s_slsArea, s_slsBarArea, s_slsIndArea, s_slsIV, s_slsTimer;
var s_slsIndStart = 0;
var s_slsPages = (typeof(s_slsContents) != 'undefined') ? s_slsContents.length : 0;
var s_slsAutoSliding = false;

var s_slsW = s_slsWidth + s_slsBorderWidth*2;
var s_slsH = s_slsHeight + s_slsBorderWidth*2 + s_slsBarSpace + s_slsBarHeight;
if(s_slsIndView) s_slsH += s_slsIndSpace + s_slsIndHeight;

function s_slsObject(obj) {
  this.elem = DOM ? document.getElementById(obj) : document.all[obj];
  this.css = this.elem.style;
  this.width = this.elem.offsetWidth;
  this.left = 0;
  return this;
}

function s_slsPrevPage() {
  if(!s_slsSliding && s_slsArea.left < 0) s_slsJump(s_slsCurX + s_slsWidth);
}

function s_slsNextPage() {
  if(!s_slsSliding && s_slsArea.left > -s_slsArea.width+s_slsWidth) s_slsJump(s_slsCurX - s_slsWidth);
}

function s_slsJump(position) {
  if(!s_slsSliding) {
    s_slsNewX = s_slsArea.left = position;
    if(s_slsPages > s_slsSlidingMax) {
      s_slsArea.css.left = s_slsCurX = s_slsNewX;
      s_slsCheckImg();
      if(s_slsIndView) {
        var start = Math.ceil(s_slsCurX / s_slsWidth / s_slsIndCount) * s_slsIndCount * -1 + 1;
        s_slsSetIndex(start);
      }
    }
    else s_slsIV = setInterval('s_slsSlider()', 1);
  }
}

function s_slsCheckImg() {

}

function s_slsSetIndex(start) {
  if(!s_slsSliding) {
    if(start) s_slsIndStart = start-1;
    var html = link = '';
    for(var i = s_slsIndStart; i < s_slsPages && i < s_slsIndStart+s_slsIndCount; i++) {
      if(i && html) html += ' &middot; ';
      if(s_slsCurX == i * -s_slsWidth) html += '<b>' + (i+1) + '</b>';
      else {
        link = 'javascript:s_slsStopAutoSlide(); s_slsJump(' + (i * -s_slsWidth) + ')';
        html += '<a href="' + link + '" class="border2">' + (i+1) + '</a>';
      }
    }
    if(s_slsIndStart) {
      link = 'javascript:s_slsSetIndex(' + (s_slsIndStart-s_slsIndCount+1) + ')';
      html += ' &middot; <a href="' + link + '" class="border2">&lt;&lt;</a> ';
    }
    if(i < s_slsPages) {
      link = 'javascript:s_slsSetIndex(' + (i+1) + ')';
      html += ' &middot; <a href="' + link + '" class="border2">&gt;&gt;</a>';
    }
    s_slsIndArea.elem.innerHTML = html;
  }
}

function s_slsDoAutoSlide() {
  if(s_slsArea.left <= -s_slsArea.width+s_slsWidth) s_slsJump(0);
  else s_slsNextPage();
}

function s_slsStopAutoSlide() {
  if(s_slsAutoSliding) {
    if(s_slsTimer) clearInterval(s_slsTimer);
    s_slsAutoSliding = false;
  }
}

function s_slsStartAutoSlide() {
  s_slsStopAutoSlide();
  s_slsTimer = setInterval('s_slsDoAutoSlide()', s_slsAutoSlideTime * 1000);
  s_slsAutoSliding = true;
}

function s_slsInit() {
	slsInit();
  if(DOM || IE4) {
    if(s_slsPages) {
      s_slsBord = new s_slsObject('s_slsBorder');
      s_slsCont = new s_slsObject('s_slsContainer');
      s_slsArea = new s_slsObject('s_slsSlider');
      if(s_slsIndView) s_slsIndArea = new s_slsObject('s_slsInd');

      if(s_slsColor) s_slsCont.css.backgroundColor = s_slsColor;
      if(s_slsIndColor) s_slsIndArea.css.backgroundColor = s_slsIndColor;

      if(s_slsBorderWidth) s_slsBord.css.borderWidth = s_slsBorderWidth + 'px';
      if(s_slsBorderStyle) s_slsBord.css.borderStyle = s_slsBorderStyle;
      if(s_slsBorderColor) s_slsBord.css.borderColor = s_slsBorderColor;

      s_slsBord.css.width = s_slsWidth + 'px';
      s_slsBord.css.height = s_slsHeight + 'px';

      s_slsArea.width = s_slsWidth * s_slsPages;
      s_slsArea.css.width = s_slsArea.width + 'px';
      s_slsArea.css.position = 'absolute';

      s_slsCont.css.width = s_slsWidth + 'px';
      s_slsCont.css.height = s_slsHeight + 'px';
      s_slsCont.css.visibility = 'visible';


      if(s_slsIndView) {
        s_slsIndArea.css.top = (s_slsHeight + s_slsBorderWidth*2 + s_slsBarSpace + s_slsBarHeight + s_slsIndSpace) + 'px';
        s_slsIndArea.css.height = s_slsIndHeight + 'px';
        s_slsIndArea.css.width = s_slsW + 'px';
        if(s_slsIndFont) s_slsIndArea.css.fontFamily = s_slsIndFont;
        if(s_slsIndFontSize) s_slsIndArea.css.fontSize = s_slsIndFontSize + 'px';
        s_slsSetIndex();
      }
      setTimeout('s_slsCheckImg()', 100);
      if(s_slsAutoSlideTime && s_slsAutoStart) s_slsStartAutoSlide();
    }
    else alert("No contents found.");
  }
  else alert("Sorry, this script doesn't work with your browser.");
}

window.onload = s_slsInit;


//---------------------------------------------------------------------------------------------------------
// Page slider
//---------------------------------------------------------------------------------------------------------

var s_slsCurX = s_slsNewX = 0;
var s_slsSliding = false;

function s_slsSlider() {
  if(s_slsCurX != s_slsNewX) {
    s_slsSliding = true;
    var percent = .1 * (s_slsNewX - s_slsCurX);
    if(percent > 0) percent = Math.ceil(percent);
    else percent = Math.floor(percent);
    s_slsCurX += percent;
    s_slsArea.css.left = s_slsCurX + 'px';
  }
  else {
    s_slsSliding = false;
    clearInterval(s_slsIV);
    s_slsCheckImg();
    if(s_slsIndView) {
      var start = Math.ceil(s_slsCurX / s_slsWidth / s_slsIndCount) * s_slsIndCount * -1 + 1;
      s_slsSetIndex(start);
    }
  }
}

//---------------------------------------------------------------------------------------------------------
// Set styles
//---------------------------------------------------------------------------------------------------------

document.write('<style> ' +
               '#slideShow { background-color: #f5e2c8; position:relative; width:' + s_slsW + 'px; height:' + s_slsH + 'px; } ' +
               '#s_slsBorder { position:absolute; top:0px; left:0px; } ' +
               '#s_slsContainer { position:absolute; top:0px; left:0px; ' +
               'clip:rect(0,' + s_slsWidth + ',' + s_slsHeight + ',0); ' +
               'z-index:0; overflow:hidden; visibility:hidden; } ' +
               '.s_slsPage { width:' + s_slsWidth + 'px; height:' + s_slsHeight + 'px; ' +
               'float:left; overflow:' + s_slsOverflow + '; } ' +
               'img.s_slsIcon { margin: 0px 5px 0px 5px; cursor: pointer; } ' +
               '</style>');

//---------------------------------------------------------------------------------------------------------
// Build border, contents, iconbar and index
//---------------------------------------------------------------------------------------------------------

if(s_slsPages) {
  document.write('<div id="slideShow">');
  if(s_slsIndView) document.write('<div id="s_slsInd" style="position:absolute; z-index:69; text-align:center"></div>');
  document.write('<div id="s_slsBar" style="position:absolute; z-index:69"></div>');
  document.write('<div id="s_slsBorder"><div id="s_slsContainer"><div id="s_slsSlider">');

  for(var i = 0; i < s_slsPages; i++) {
    document.write('<div class="s_slsPage">' + s_slsContents[i] + '</div>');
  }
  document.write('</div></div></div></div>');
}

//---------------------------------------------------------------------------------------------------------

