
function sb_slideshow_effect(id, time) {
 this.interval  = null;
 this.id = id;
 this.time = time;
 this.count = 0;
 this.position = 0;
 this.effect = false;
 this.images = new Array();
 this.titles = new Array();
 this.texts  = new Array();
 this.urls    = new Array();
 this.targets = new Array();
 this.rss_feed = null; //'http://api.flickr.com/services/feeds/photos_public.gne?id=51035630381@N01&lang=en-us&format=rss_200';

 this.load = function(play) {
  var title1 = document.getElementById(this.id+'_title1');
  var title2 = document.getElementById(this.id+'_title2');
  var text1 = document.getElementById(this.id+'_text1');
  var text2 = document.getElementById(this.id+'_text2');
 
  if (this.rss_feed) {
   this.get_feed();
  }

  for (var i = 0; i < this.images.length; i++) {
   if (this.images[i]) {
    var img = new Image();
    img.src = this.images[i];
   }
  }

  if (title2) {
//   title2.style.width = title1.offsetWidth + 'px';
   var max = 0;
   for (var i = 0; i < this.titles.length; i++) {
    title2.innerHTML = this.titles[i];
    if (title2.offsetHeight > max) { 
     max = title2.offsetHeight;
    }
   }
   title2.parentNode.style.height = max+'px';
  }

  if (text2) {
//   text2.style.width = text1.offsetWidth + 'px';
   var max = 0;
   for (var i = 0; i < this.texts.length; i++) {
    text2.innerHTML = this.texts[i];
    if (text2.offsetHeight > max) { 
     max = text2.offsetHeight;
    }
   }

   text2.parentNode.style.height = max+'px';
  }

  if (play) {
   this.resume();
  }
 }

 this.fade = function() {
  this.count++;
  var image1 = document.getElementById(this.id+'_image1');
  var image2 = document.getElementById(this.id+'_image2');
  var div1 = document.getElementById(this.id+'_div1');
  var div2 = document.getElementById(this.id+'_div2');
  var title1 = document.getElementById(this.id+'_title1');
  var title2 = document.getElementById(this.id+'_title2');
  var text1 = document.getElementById(this.id+'_text1');
  var text2 = document.getElementById(this.id+'_text2');

  if (typeof(div1.style.opacity) == "string") {
   div1.style.opacity = (10 - this.count) / 10;
   div2.style.opacity = this.count / 10;
   if (text1) {
    text1.style.opacity = div1.style.opacity;
    text2.style.opacity = div2.style.opacity;
   }
   if (title1) {
    title1.style.opacity = div1.style.opacity;
    title2.style.opacity = div2.style.opacity;
   }
  }
  else if (typeof(div1.style.filter) == "string") {
   div1.style.filter = 'alpha(opacity='+((10 - this.count) * 10)+')'
   div2.style.filter = 'alpha(opacity='+(this.count * 10)+')'
   if (text1) {
    text1.style.filter = div1.style.filter;
    text2.style.filter = div2.style.filter;
   }
   if (title1) {
    title1.style.filter = div1.style.filter;
    title2.style.filter = div2.style.filter;
   }
  }

  if (this.count == 10) {
   image1.src = image2.src;
   if (this.urls[this.position]) {
    image1.style.cursor = 'pointer';
    var url = this.urls[this.position];
    var target = this.targets[this.position];
    image1.onclick = function() {
     if (target) {
      window.open(url, target);
     }
     else {
      window.location.href = url;
     }
    }
   }
   else {
    image1.style.cursor = '';
    image1.onclick = '';
   }

   if (typeof(div1.style.opacity) == "string") {
    div1.style.opacity = 1;
    div2.style.opacity = 0;
    if (text1) {
     text1.style.opacity = 1;
     text2.style.opacity = 0;
    }
    if (title1) {
     title1.style.opacity = 1;
     title2.style.opacity = 0;
    }
   }
   else if (typeof(div1.style.filter) == "string") {
    div1.style.filter = 'alpha(opacity=100)'
    div2.style.filter = 'alpha(opacity=0)'
    if (text1) {
     text1.style.filter = 'alpha(opacity=100)'
     text2.style.filter = 'alpha(opacity=0)'
    }
    if (title1) {
     title1.style.filter = 'alpha(opacity=100)'
     title2.style.filter = 'alpha(opacity=0)'
    }
   }

   div2.style.display = 'none';
   if (text2) {
    text1.innerHTML = text2.innerHTML;
    text2.style.visibility = 'hidden';
   }
   if (title2) {
    title1.innerHTML = title2.innerHTML;
    title2.style.visibility = 'hidden';
   }
   this.count = 0;
  }
  else {
   var obj = this;
   setTimeout(function() {obj.fade()}, 66);
  }
 }

 this.swap = function(position) {
  if (this.count) {
   var obj = this;
   return;
  }

  if (position < 0) {
   this.position = this.images.length - 1;
  }
  else if (position >= this.images.length) {
   this.position = 0;
  }
  else {
   this.position = position;
  }
 
//  this.position = this.position == 0 ? this.images.length - 1 : this.position - 1; 
//  this.position = this.position < this.images.length - 1 ? this.position + 1 : 0; 


  var image1 = document.getElementById(this.id+'_image1');
  var image2 = document.getElementById(this.id+'_image2');

  var div1 = document.getElementById(this.id+'_div1');
  var div2 = document.getElementById(this.id+'_div2');
  var text1 = document.getElementById(this.id+'_text1');
  var text2 = document.getElementById(this.id+'_text2');
  var title1 = document.getElementById(this.id+'_title1');
  var title2 = document.getElementById(this.id+'_title2');
  var thumbnails = document.getElementById(this.id+'_thumbnails');

  if (thumbnails) {
   for (var i = 0; i < thumbnails.childNodes.length; i++) {
    var li = thumbnails.childNodes[i];
    li.className = this.position == i ? 'on' : '';
   }
  }

    
  if (this.effect == false) {
   if (image1) {
    image1.src = this.images[this.position];
    if (this.urls[this.position]) {
     image1.style.cursor = 'pointer';
     var url = this.urls[this.position];
     var target = this.targets[this.position];
     image1.onclick = function() {
      if (target) {
       window.open(url, target);
      }
      else {
       window.location.href = url;
      }
     }
    }
    else {
     image1.style.cursor = '';
     image1.onclick = '';
    }
   }
   if (text1) {
    text1.innerHTML = this.texts[position];
   }
   if (title1) {
    title1.innerHTML = this.titles[position];
   }
   return;
  }

  if (typeof(div2.style.opacity) == "string") {
   div2.style.opacity = 0;
  }
  else if (typeof(div2.style.filter) == "string") {
   div2.style.filter = 'alpha(opacity=0)'
  }

  image2.src = this.images[this.position];
  div2.style.marginTop  =  0 - div1.offsetHeight + 'px'; 

  if (text1) {
   text2.innerHTML = this.texts[this.position] ? this.texts[this.position] : '';
//   text2.style.marginTop = 0 - text1.offsetHeight + 'px';
   text2.style.visibility = 'visible';
  }

  if (title1) {
   title2.innerHTML = this.titles[this.position] ? this.titles[this.position] : '';
//   title2.style.marginTop = 0 - title1.offsetHeight + 'px';
   title2.style.visibility = 'visible';
   title2.style.filter = 'alpha(opacity=100)'
  }

  div2.style.opacity = 0;
  div2.style.display = 'block';
//  this.count = 0;
  this.fade();
 }

 this.previous = function(pause) {
  if (this.count > 0) {
   return;
  }
  if (pause) {
   this.pause();
  }
  this.swap(this.position - 1);
 }

 this.next = function(pause) {
  if (this.count > 0) {
   return;
  }
  if (pause) {
   this.pause();
  }
  this.swap(this.position + 1);
 }

 this.set = function(position) {
  this.pause();
  if (position != this.position) {
   this.swap(position);
  }
 }

 this.play = function(next) {
  var play  = document.getElementById(this.id+'_play');
  var pause = document.getElementById(this.id+'_pause');
  if (play && pause) {
   play.style.display = 'none';
   pause.style.display = '';
  }

  if (next) {
   this.next();
  }

  if (this.interval) {
   clearInterval(this.interval);
  }

  var obj = this;
  this.interval = setInterval(function() {obj.next();}, this.time);  
 }


 this.resume = function() {
  if (!this.interval) {
   var obj = this;
   this.interval = setInterval(function() {obj.next();}, this.time);  
  }
 }

 this.pause = function() {
  var play  = document.getElementById(this.id+'_play');
  var pause = document.getElementById(this.id+'_pause');
  if (play && pause) {
   pause.style.display = 'none';
   play.style.display = '';
  }

  if (this.interval) {
   clearInterval(this.interval);
   this.interval = null;
  }
 }

 this.get_feed = function() {
  this.rss_feed = "http://www.smallboxsoftware.net/smallbox4/enews.php";
  this.images = this.titles = this.urls = this.texts = new Array();
  var xml = sb_get_xml('/smallbox4/rss.php');

  var items = xml.getElementsByTagName('item');


  var item = items.item(0);
  for (var i = 0; i < items.length; i++) {
   var item = items.item(i);
   var content = item.getElementsByTagName('media:content');
   if (content.length) {
    var media = content.item(0);
    this.images[this.images.length] = media.attributes[0].value.replace(/_m\./, ".");
   }
  }
 }
}


