/***********************************************
* Ultimate Fade-In Slideshow (v1.5): © 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 fadeimages=new Array()

var globalhyperLinks = new Array();
var globalcurrentindex = 0;

var altText= new Array();
var fadebgcolor="#fff"
 
////NO need to edit beyond here/////////////
 
var fadearray=new Array() //array to cache fadeshow instances
var fadeclear=new Array() //array to cache corresponding clearinterval pointers
 
var dom=(document.getElementById) //modern dom browsers
var iebrowser=document.all
 
function fadeshow(theimages, fadewidth, fadeheight, borderwidth, delay, pause, displayorder)
{
    var responseImageURL=AjaxFunctions.GetInfoRotatingImageURL();
    theimages=responseImageURL.value.split('|');

    var responseAltText=AjaxFunctions.GetInfoRotatingAltText();
    var altText=responseAltText.value.split('|');

    var responseLinkToUrl=AjaxFunctions.GetInfoRotatingLinkToUrl();
    var hyperLinks=responseLinkToUrl.value.split('|');

    this.picwidth = fadewidth
    this.picheight = fadeheight
    this.pausecheck=pause
    this.mouseovercheck=0
    this.delay=delay
    this.degree=0 //initial opacity degree (10%)
    this.curimageindex=0
    this.nextimageindex=1
    fadearray[fadearray.length]=this
    this.slideshowid=fadearray.length-1
    this.canvasbase="canvas"+this.slideshowid
    this.curcanvas=this.canvasbase+"_0"
    if (typeof displayorder!="undefined")
        //theimages.sort(function() {return 0.5 - Math.random();}) //thanks to Mike (aka Mwinter) :)
        hyperLinks.sort(function() {return 0.5 - Math.random();})//neeraj
    this.theimages=theimages
    this.hyperLinks=hyperLinks//neeraj
    this.altText=altText;//neeraj
    this.imageborder=parseInt(borderwidth)
    this.postimages=new Array() //preload images
    this.postHyperLinks= new Array()//neeraj
    this.postAltText = new Array()//neeraj
    for (p=0;p<theimages.length;p++)
    {
        this.postimages[p]= new Image();
        this.postimages[p].src=theimages[p]
    }
    for (p=0;p<hyperLinks.length;p++)
    {
        this.postHyperLinks[p]=new Image()
        this.postHyperLinks[p].src = hyperLinks[p]
        globalhyperLinks[p] = hyperLinks[p];
    }
    for (p=0;p<altText.length;p++)
    {
        this.postAltText[p]=new Array()
        this.postAltText[p]=altText[p]
    }
     
    var fadewidth=fadewidth+this.imageborder*2
    var fadeheight=fadeheight+this.imageborder*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);-moz-opacity:10;-khtml-opacity:10;background-color:'+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);-moz-opacity:10;background-color:'+fadebgcolor+'"></div></div>')
    else              //i have to work here
        document.write('<div><img name="defaultslide'+this.slideshowid+'" src="'+this.postimages[0].src+'" width="'+fadewidth+'px" height="'+fadeheight+'px" /></div>')
     
    if (iebrowser&&dom||dom) //if IE5+ or modern browsers such as Firefox
        this.startit()
    else
    {
        this.curimageindex++
        setInterval("fadearray["+this.slideshowid+"].rotateimage()", this.delay)
    }
}

function fadepic(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
{
    clearInterval(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.nextimageindex)
    obj.nextimageindex=(obj.nextimageindex<obj.postimages.length-1)? obj.nextimageindex+1 : 0
    setTimeout("fadearray["+obj.slideshowid+"].rotateimage()", obj.delay)
}
}
 
fadeshow.prototype.populateslide=function(picobj, picindex)
{
    var slideHTML=""
    if (this.theimages[picindex][1]!="") //if associated link exists for image
        slideHTML+='<a href="'+this.postHyperLinks[picindex].src+'"><img src="'+this.postimages[picindex].src+'" border="'+this.imageborder+'px" alt="'+this.postAltText[picindex]+'" width="'+this.picwidth+'px" height="'+this.picheight+'px"></a>'
    if (this.theimages[picindex][1]!="") //if associated link exists for image
        picobj.innerHTML=slideHTML
}

fadeshow.prototype.rotateimage = function() {
    if (this.pausecheck == 1) //if pause onMouseover enabled, cache object
        var cacheobj = this
    if (this.mouseovercheck == 1)
        setTimeout(function() { cacheobj.rotateimage() }, 100)
    else
        if (iebrowser && dom || dom) {
        this.resetit()
        var crossobj = this.tempobj = iebrowser ? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
        crossobj.style.zIndex++
        fadeclear[this.slideshowid] = setInterval("fadepic(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.postimages[this.curimageindex].src
    }
    var curvedoverlay = document.getElementById("curvededges")
    this.curimageindex = (this.curimageindex < this.postimages.length - 1) ? this.curimageindex + 1 : 0
    globalcurrentindex = this.curimageindex;
}

function clickLink() {
    var usethisindex = globalcurrentindex - 1;
    if (usethisindex == -1) usethisindex = globalhyperLinks.length - 1;
    window.location.href =  "http://" + top.location.host + globalhyperLinks[usethisindex];
}

fadeshow.prototype.resetit=function() {
    // Resets the opacity just before an image changes
    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=obj.degree/100
}
 
fadeshow.prototype.startit=function()
{
    var crossobj=iebrowser? iebrowser[this.curcanvas] : document.getElementById(this.curcanvas)
    this.populateslide(crossobj, this.curimageindex)
    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.rotateimage()
}

// written by Dean Edwards, 2005
// with input from Tino Zijdel - crisp@xs4all.nl
// http://dean.edwards.name/weblog/2005/10/add-event/
function addEvent(element, type, handler)
{
	if (element.addEventListener)
		element.addEventListener(type, handler, false);
	else
	{
		if (!handler.$$guid) handler.$$guid = addEvent.guid++;
		if (!element.events) element.events = {};
		var handlers = element.events[type];
		if (!handlers)
		{
			handlers = element.events[type] = {};
			if (element['on' + type]) handlers[0] = element['on' + type];
			element['on' + type] = handleEvent;
		}
	
		handlers[handler.$$guid] = handler;
	}
}
addEvent.guid = 1;

function removeEvent(element, type, handler)
{
	if (element.removeEventListener)
		element.removeEventListener(type, handler, false);
	else if (element.events && element.events[type] && handler.$$guid)
		delete element.events[type][handler.$$guid];
}

function handleEvent(event)
{
	event = event || fixEvent(window.event);
	var returnValue = true;
	var handlers = this.events[event.type];

	for (var i in handlers)
	{
		if (!Object.prototype[i])
		{
			this.$$handler = handlers[i];
			if (this.$$handler(event) === false) returnValue = false;
		}
	}

	if (this.$$handler) this.$$handler = null;

	return returnValue;
}

function fixEvent(event)
{
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
}
fixEvent.preventDefault = function()
{
	this.returnValue = false;
}
fixEvent.stopPropagation = function()
{
	this.cancelBubble = true;
}

// This little snippet fixes the problem that the onload attribute on the body-element will overwrite
// previous attached events on the window object for the onload event
if (!window.addEventListener)
{
	document.onreadystatechange = function()
	{
		if (window.onload && window.onload != handleEvent)
		{
			addEvent(window, 'load', window.onload);
			window.onload = handleEvent;
		}
	}
}
