// convert decimal value (0 - 255) to hexadecimal
// (use .toString(16) method supported by IE)
function toHex(dec) {
        // create list of hex characters
        var hexCharacters = "0123456789ABCDEF"
        // if number is out of range return limit
        if (dec < 0)
                return "00"
        if (dec > 255)
                return "FF"
        // decimal equivalent of first hex character in converted number
        var i = Math.floor(dec / 16)
        // decimal equivalent of second hex character in converted number
        var j = dec % 16
        // return hexadecimal equivalent
        return hexCharacters.charAt(i) + hexCharacters.charAt(j)
}
// set background color to specified descriptors
function setbgColor(red, green, blue) {
         document.bgColor = "#" + toHex(red) + toHex(green) +
toHex(blue)
}
// fade from start to end descriptors (increase step to increase transition speed)
function fade(sred, sgreen, sblue, ered, egreen, eblue, step) {
        // loop to create fade effect
        for(var i = 0; i <= step; ++i) {
                // set current red descriptor
                var red = Math.floor(sred * ((step - i) / step) + ered
* (i / step))
                // set current green descriptor
                var green = Math.floor(sgreen * ((step - i) / step) +
egreen * (i / step))
               // set current green descriptor
                var blue = Math.floor(sblue * ((step - i) / step) +
eblue * (i / step))
                // set background color according to descriptors
                setbgColor(red, green, blue)
        }
}

