﻿// JScript File
// Adapted by Steven Suits from http://brainerror.net/scripts/javascript/blendtrans/ on 4/10/08

function fadeIn(id, ms) {
   if ( ms == null ) ms = 2000;
   currentOpac(id, 100, ms);
}

function fadeOut(id, ms) {
   if ( ms == null ) ms = 300;
   currentOpac(id, 0, ms);
}

function shiftOpacity(id, ms) {
    //if an element is invisible, make it visible, else make it invisible
    if(document.getElementById(id).style.opacity == 0) {
        opacity(id, 0, 100, millisec);
    } else {
        opacity(id, 100, 0, millisec);
    }
} 


function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;
    
    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart - 1; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "');",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart + 1; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
    
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;

    if (typeof (getCurrState) == 'function')
    // if current state should be fading out but function is trying to fade in, don't change opacity
        if ((getCurrState(id) == 0 && object.opacity < (opacity / 100)) ||
    // if current state should be fading in but function is trying to fade out, don't change opacity
         (getCurrState(id) == 1 && object.opacity > (opacity / 100)))
        return;

    if (opacity > 0) {
        object.visibility = 'visible';
        object.filter = "alpha(opacity=" + opacity + ")";
        object.opacity = (opacity / 100);
        object.MozOpacity = (opacity / 100);
        object.KhtmlOpacity = (opacity / 100);
    }
    else {
        object.visibility = 'hidden';
    }
} 

//blend images together -- not fully functional
function blendimage(divid, imageid, imagefile, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	
	//set the current image as background
	document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
	
	//make image transparent
	changeOpac(0, imageid);
	
	//make new image
	document.getElementById(imageid).src = imagefile;

	//fade in image
	for(i = 0; i <= 100; i++) {
		setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
		timer++;
	}
}

//change element from current opacity to new given opacity
function currentOpac(id, opacEnd, millisec) {
	//standard opacity is 100
	var currentOpac = 100;
	
	//if the element has an opacity set, get it
	if(document.getElementById(id).style.opacity < 100) {
		currentOpac = document.getElementById(id).style.opacity * 100;
	}
		
	//call for the function that changes the opacity
	opacity(id, currentOpac, opacEnd, millisec);
}