﻿/***********************************************
* Ultimate Fade-In Slideshow (v1.51): © Dynamic Drive (http://www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/

var html_fadebgcolor;

////NO need to edit beyond here/////////////

var html_fadearray = new Array() //array to cache htmlSlideShow instances
var html_fadeclear = new Array() //array to cache corresponding clearinterval pointers
 
var dom = (document.getElementById) //modern dom browsers
var iebrowser = document.all

function htmlSlideShow(thehtmls, html_fadebgcolor, fadewidth, fadeheight, borderwidth, delay, selectionPanelFunction)//, pause, displayorder)
{

    this.html_fadebgcolor = html_fadebgcolor
    this.pausecheck = 0
    this.mouseovercheck = 0
    this.delay = delay
    this.selectionPanelFunction = selectionPanelFunction
    this.degree = 10 //initial opacity degree (10%)
    this.curhtmlindex = 0
    this.processing = false

    if (thehtmls.length > 1)
        this.nexthtmlindex = 1
    else
        this.nexthtmlindex = 0    
    
    html_fadearray[html_fadearray.length] = this
    this.slideshowid = html_fadearray.length-1
    this.canvasbase = "canvas"+this.slideshowid
    this.curcanvas = this.canvasbase+"_0"
    //if (typeof displayorder != "undefined")
    //    thehtmls.sort(function() {return 0.5 - Math.random();}) //thanks to Mike (aka Mwinter) :)
    this.thehtmls = thehtmls
    this.htmlborder = parseInt(borderwidth)
    this.posthtmls = new Array() //preload images
    for (p = 0;p<thehtmls.length;p++)
    {
        this.posthtmls[p] = thehtmls[p]
    }
     
    var fadewidth = fadewidth + this.htmlborder * 2
    var fadeheight = fadeheight + this.htmlborder * 2
     
    if (iebrowser&&dom||dom) //if IE5+ or modern browsers (ie: Firefox)
        document.write('<div id = "master'+this.slideshowid+'" style = "position:relative;width:'+fadewidth+'px;height:'+fadeheight+'px;overflow:hidden;"><div id = "'+this.canvasbase+'_0" style = "position:absolute;width:'+fadewidth+'px;height:'+fadeheight+'px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity = 10);opacity:0.1;-moz-opacity:0.1;-khtml-opacity:0.1;background-color:'+html_fadebgcolor+'"></div><div id = "'+this.canvasbase+'_1" style = "position:absolute;width:'+fadewidth+'px;height:'+fadeheight+'px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity = 10);opacity:0.1;-moz-opacity:0.1;-khtml-opacity:0.1;background-color:'+html_fadebgcolor+'"></div></div>')
    else
        document.write('<div name = "defaultslide'+this.slideshowid+'>'+this.posthtmls[0]+'</div>')
     
    if (iebrowser&&dom||dom) //if IE5+ or modern browsers such as Firefox
        this.startit()
    else
    {
        this.curhtmlindex++
        if (this.delay == 0)
            this.rotateHtmlForward();
        else
        {
            this.timeOutId = setInterval("html_fadearray[" + this.slideshowid + "].rotateHtmlForward()", parseFloat(this.posthtmls[0][1]) * 1000)
        }
    }

    return this;
}

function fadehtml(obj)
{
    if (obj.degree<100)
    {
        obj.degree += 10
        if (obj.tempobj.filters&&obj.tempobj.filters[0])
        {
            if (typeof obj.tempobj.filters[0].opacity == "number") //if IE6+
                obj.tempobj.filters[0].opacity = obj.degree
            else //else if IE5.5-
                obj.tempobj.style.filter = "alpha(opacity = "+obj.degree+")"
        }
        else if (obj.tempobj.style.MozOpacity)
            obj.tempobj.style.MozOpacity = obj.degree/101
        else if (obj.tempobj.style.KhtmlOpacity)
            obj.tempobj.style.KhtmlOpacity = obj.degree/100
        else if (obj.tempobj.style.opacity&&!obj.tempobj.filters)
            obj.tempobj.style.opacity = obj.degree/101
    }
    else
    {
        if (obj.delay > 0)
            obj.selectionPanelFunction((obj.nexthtmlindex == 0 ? obj.posthtmls.length : obj.nexthtmlindex))
        
        clearInterval(html_fadeclear[obj.slideshowid])
        obj.nextcanvas = (obj.curcanvas == obj.canvasbase+"_0") ? obj.canvasbase+"_0" : obj.canvasbase+"_1"
        obj.tempobj = iebrowser ? iebrowser[obj.nextcanvas] : document.getElementById(obj.nextcanvas)
        obj.populateslide(obj.tempobj, obj.nexthtmlindex)
        obj.nexthtmlindex = (obj.nexthtmlindex < obj.posthtmls.length-1) ? obj.nexthtmlindex + 1 : 0
        if (obj.delay != 0)
        {
            obj.timeOutId = setTimeout("html_fadearray[" + obj.slideshowid + "].rotateHtmlForward()", parseFloat(obj.posthtmls[obj.nexthtmlindex][1]) * 1000)
            obj.processing = false
        }
    }
}

htmlSlideShow.prototype.goToHtml = function(index)
{
    if (!this.processing == true)
    {
        clearTimeout(this.timeOutId)
        this.processing = true

        if (this.pausecheck == 1) //if pause onMouseover enabled, cache object
        {
            var cacheobj = this
        }

        if (this.mouseovercheck == 1)
        {
            setTimeout(function() { cacheobj.rotateHtmlForward() }, 100)
        }
        else if (iebrowser && dom || dom)
        {
            this.populateslide(html_fadearray[this.slideshowid].tempobj, index)
            this.nexthtmlindex = (index < this.posthtmls.length - 1) ? index + 1 : 0

            this.resetit()
            var crossobj = this.tempobj = iebrowser ? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
            crossobj.style.zIndex++
            html_fadeclear[this.slideshowid] = setInterval("fadehtml(html_fadearray[" + this.slideshowid + "])", 50)
            this.curcanvas = (this.curcanvas == this.canvasbase + "_0") ? this.canvasbase + "_1" : this.canvasbase + "_0"
        }
        else
        {
            var ns4imgobj = document.images['defaultslide' + this.slideshowid]
            ns4imgobj.src = this.posthtmls[this.curhtmlindex].src
        }

        this.curhtmlindex = index
    }
}
 
htmlSlideShow.prototype.populateslide =  function(picobj, picindex)
{
    var slideHTML = ""
    
    if (this.thehtmls[picindex][0] != "") //if associated link exists for image
        slideHTML = this.thehtmls[picindex][0]

    picobj.innerHTML = slideHTML
}

htmlSlideShow.prototype.resetit = function() 
{
    this.degree = 10
    var crossobj = iebrowser ? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
    
    if (crossobj.filters && crossobj.filters[0]) 
    {
        if (typeof crossobj.filters[0].opacity == "number") //if IE6+
            crossobj.filters(0).opacity = this.degree
        else //else if IE5.5-
            crossobj.style.filter = "alpha(opacity = " + this.degree + ")"
    }
    else if (crossobj.style.MozOpacity)
    {
        crossobj.style.MozOpacity = this.degree / 101
    }
    else if (crossobj.style.KhtmlOpacity) {
        crossobj.style.KhtmlOpacity = this.degree / 100
    }
    else if (crossobj.style.opacity && !crossobj.filters)
    {
        crossobj.style.opacity = this.degree / 101
    }
}

htmlSlideShow.prototype.rotateImageBackwards = function()
{
    this.processing = true
    if (this.pausecheck == 1) //if pause onMouseover enabled, cache object
    {
        var cacheobj = this
    }

    if (this.mouseovercheck == 1)
    {
        setTimeout(function() { cacheobj.rotateHtmlForward() }, 100)
    }
    else if (iebrowser && dom || dom)
    {
        this.nexthtmlindex = (this.curhtmlindex > 0) ? this.curhtmlindex - 1 : this.posthtmls.length - 1
        this.populateslide(html_fadearray[this.slideshowid].tempobj, this.nexthtmlindex)
        this.nexthtmlindex = (this.nexthtmlindex < this.posthtmls.length - 1) ? this.nexthtmlindex + 1 : 0

        this.resetit()
        var crossobj = this.tempobj = iebrowser ? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
        crossobj.style.zIndex++
        html_fadeclear[this.slideshowid] = setInterval("fadehtml(html_fadearray[" + this.slideshowid + "])", 50)
        this.curcanvas = (this.curcanvas == this.canvasbase + "_0") ? this.canvasbase + "_1" : this.canvasbase + "_0"
    }
    else
    {
        var ns4imgobj = document.images['defaultslide' + this.slideshowid]
        ns4imgobj.src = this.posthtmls[this.curhtmlindex].src
    }

    this.curhtmlindex = (this.curhtmlindex > 0) ? this.curhtmlindex - 1 : this.posthtmls.length - 1
}

htmlSlideShow.prototype.rotateHtmlForward = function() 
{
    this.processing = true
    if (this.pausecheck == 1) //if pause onMouseover enabled, cache object
    {
        var cacheobj = this
    }

    if (this.mouseovercheck == 1)
    {
        setTimeout(function() { cacheobj.rotateHtmlForward() }, 100)
    }
    else if (iebrowser && dom || dom)
    {
        this.resetit()
        var crossobj = this.tempobj = iebrowser ? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
        crossobj.style.zIndex++
        html_fadeclear[this.slideshowid] = setInterval("fadehtml(html_fadearray[" + this.slideshowid + "])", 50)
        this.curcanvas = (this.curcanvas == this.canvasbase + "_0") ? this.canvasbase + "_1" : this.canvasbase + "_0"
    }
    else 
    {
        var ns4imgobj = document.images['defaultslide' + this.slideshowid]
        ns4imgobj.src = this.posthtmls[this.curhtmlindex].src
    }
    
    this.curhtmlindex = (this.curhtmlindex < this.posthtmls.length - 1) ? this.curhtmlindex + 1 : 0
}

htmlSlideShow.prototype.startit = function()
{
    var crossobj = iebrowser? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
    this.populateslide(crossobj, this.curhtmlindex)
    if (this.pausecheck == 1)
    { //IF SLIDESHOW SHOULD PAUSE ONMOUSEOVER
        var cacheobj = this
        var crossobjcontainer = iebrowser? iebrowser["master"+this.slideshowid] : document.getElementById("master"+this.slideshowid)
        crossobjcontainer.onmouseover = function(){cacheobj.mouseovercheck = 1}
        crossobjcontainer.onmouseout = function(){cacheobj.mouseovercheck = 0}
    }
    this.rotateHtmlForward()
}