
//<!--
//Following JavaScript background color fade code (original) taken from HattiesburgTowing.com, circa 10/21/2007 ...
//-->
//<script>

// MWD: Reformatted existing code ...

///////////////////////////////////////////////////////////////////////////
// CONFIGURATION STARTS HERE
///////////////////////////////////////////////////////////////////////////

// Choose a fade effect by configuering the variable fade_effect below:
// Set 1 if the background should fade from dark to medium and back to dark
// Set 2 if the background should fade from light to medium and back to light
// Set 3 if the background should fade from light to dark and back to light
// Set 4 if the background should fade from light to very light and back to light
// Set 5 if the background should fade from dark to very dark and back to dark

// MWD: Removing following fade_effect var allows to set in calling HTML ...
//var fade_effect=4

/*
<script type="text/javascript"> var fade_effect=3 </script>
<script type="text/javascript" src="TestFade2a.js"></script>
*/

//fade_effect=3   // MWD: approx 45sec fade light to dark back to light ...

/*  MWD ... Control variable summary ...
    fade_effect = 1 - 5: specific settings to max values to effect as above
    darkmax     = 1 - 180: min absolute values for raw RGB color codes
    lightmax    = 80 - 254: max absolute values for raw RGB color codes
    stepmax     = 3: range/max for random setting of each RGB triplet's step increment ?
*/

///////////////////////////////////////////////////////////////////////////
// CONFIGURATION ENDS HERE
///////////////////////////////////////////////////////////////////////////

// MWD: hexc array used to generate HTML RGB hex codes ...
var hexc = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F')

var redcol_1
var redcol_2
var greencol_1
var greencol_2
var bluecol_1
var bluecol_2

var stepmax=3

// MWD: Just call setrandomstep to init ...
//var stepred=Math.ceil(stepmax*Math.random())
//var stepgreen=Math.ceil(stepmax*Math.random())
//var stepblue=Math.ceil(stepmax*Math.random())

function setfade() {
    // MWD: set dark/light max based on fade_effect var ... 1-5
    if (fade_effect==1) {
        darkmax=1
        lightmax=127
    }
    if (fade_effect==2) {
        darkmax=127
        lightmax=254
    }
    if (fade_effect==3) {
        darkmax=1
        lightmax=254
    }
    if (fade_effect==4) {
        darkmax=180
        lightmax=254
    }
    if (fade_effect==5) {
        darkmax=1
        lightmax=80
    }
    // MWD: start lighter
    redrgb=lightmax
    greenrgb=lightmax
    bluergb=lightmax
}   // setfade

function changefade() {
    // MWD: document's form NOT setup yet, if NOT called from form button-click ?!
    // MWD: ? changefade w/parameter for init vs. form/button ?
    fade_effect_select_index = document.fade_effect_form.fade_effect_select.selectedIndex
    fade_effect = document.fade_effect_form.fade_effect_select.options[fade_effect_select_index].value
    setfade()
}   // changefade

function setrandomstep() {
    // MWD: w/stepmax=3, random step = 0 to <3 ...
    stepred=Math.ceil(stepmax*Math.random())
    stepgreen=Math.ceil(stepmax*Math.random())
    stepblue=Math.ceil(stepmax*Math.random())
}   // setrandomstep

function makedarker() {
    // MWD: Started lighter, decrement each RGB to get darker
    redrgb-=stepred
    greenrgb-=stepgreen
    bluergb-=stepblue
    // MWD: if dark enough (darkmax), don't set darker, set to max
    if (redrgb<darkmax) {redrgb=darkmax}
    if (greenrgb<darkmax) {greenrgb=darkmax}
    if (bluergb<darkmax) {bluergb=darkmax}
    // MWD: if any RGB still NOT dark enough ...
    if (redrgb>darkmax || greenrgb>darkmax || bluergb>darkmax) {
        // MWD: generate each RGB hex digit ... ? Is this neccessary ? Use decimal notation ?
        redcol_1 = hexc[Math.floor(redrgb/16)];     // MWD: Most Sig. Digit, clip to integer
        redcol_2 = hexc[redrgb%16];                 // MWD: Least Sig. Digit, MOD for remainder
        greencol_1 = hexc[Math.floor(greenrgb/16)];
        greencol_2 = hexc[greenrgb%16];
        bluecol_1 = hexc[Math.floor(bluergb/16)];
        bluecol_2 = hexc[bluergb%16];
        // MWD: concatenate HTML hex RGB color code from generated digits
        var backcolor="#"+redcol_1+redcol_2+greencol_1+greencol_2+bluecol_1+bluecol_2
        document.bgColor=backcolor  // MWD: Set background color
        var timer=setTimeout("makedarker()",100);   // MWD: Call makedarker again in 100 msec
    } else {    // MWD: Dark enough, now set up to make lighter ...
        clearTimeout(timer) // MWD: cancel any previous timer scheduled
        setrandomstep()     // MWD: reset randdom step amounts ...  WHY ?
        setTimeout("makelighter()",2000)    // MWD: Wait 2 sec, call makelighter ...
    }
}   // makedarker

// MWD: Same algorithm as previously documented code in makedarker, except as noted ...
function makelighter() {
    // MWD: Previously Darker, now INCrement each RGB to get LIGHTer
    redrgb+=stepred
    greenrgb+=stepgreen
    bluergb+=stepblue
    // MWD: if LIGHT enough (lightmax), don't set LIGHTer, set to max
    if (redrgb>=lightmax) {redrgb=lightmax}
    if (greenrgb>=lightmax) {greenrgb=lightmax}
    if (bluergb>=lightmax) {bluergb=lightmax}
    // MWD: if any RGB still NOT LIGHT enough ...
    if (redrgb<lightmax || greenrgb<lightmax || bluergb<lightmax) {
        redcol_1 = hexc[Math.floor(redrgb/16)];
        redcol_2 = hexc[redrgb%16];
        greencol_1 = hexc[Math.floor(greenrgb/16)];
        greencol_2 = hexc[greenrgb%16];
        bluecol_1 = hexc[Math.floor(bluergb/16)];
        bluecol_2 = hexc[bluergb%16];
        var backcolor="#"+redcol_1+redcol_2+greencol_1+greencol_2+bluecol_1+bluecol_2
        document.bgColor=backcolor
        var timer=setTimeout("makelighter()",100);  // MWD: call makelighter again in 100 msec
    } else {    // MWD: LIGHT enough, now set up to make DARKer ...
        clearTimeout(timer)
        setrandomstep()
        setTimeout("makedarker()",2000)     // MWD: Wait 2 sec, call makeDARKer ...
    }
}   // makelighter

// MWD: START fading ...

setfade()
setrandomstep()

makedarker()    // MWD: started out light, so make darker ...

// </script>

