// Script to Animate NWS Radar Images
// Developed by rainman@morganhillweather.com
// Used in : www.morganhillweather.com/radar.html
// radar_animate_v2.js 2009-10-12
// v2: major re-write for cached NOAA archive image directory listing

NWSradarLgdURLcurr = "http://radar.weather.gov/ridge/Legend/N0R/MUX_N0R_Legend_0.gif";
NWSradarImgURLcurr = "http://radar.weather.gov/ridge/RadarImg/N0R/MUX_N0R_0.gif";
NWSradarImgURLhead = "http://radar.weather.gov/ridge/RadarImg/N0R/MUX/MUX_";
NWSradarImgURLtail = "_N0R.gif";
NWSradarImgURL = "";

NWSradarImgCnt = 0;
NWSradarImgNum = 0;
NWSradarImg1st = 0;

stateAnimating =  false;
stateFirstTime =  true;

function radarImageInit() {

    if( stateAnimating ) {
	// clicked "Stop" button while animating
	stateAnimating = false;
	document.getElementById("anibutt").innerHTML="Animate"; // Change the "Stop" button back to "Animate"
    }
    else {
	if( stateFirstTime ) {
	    // Find first valid link to an image... in case other stuff up front
	    var NWSvalidImgTag = new RegExp(NWSradarImgURLtail);

	    NWSradarImgCnt = noaadir.document.links.length;
	    // NWSradarImgNum = 0;

	    do {
	        NWSradarImgNum++;
                NWSradarImgURL = noaadir.document.links[NWSradarImgNum].href;
            } while( (! NWSvalidImgTag.test(NWSradarImgURL)) && (NWSradarImgNum < NWSradarImgCnt) );

	    NWSradarImg1st = NWSradarImgNum;		// save first image num so we can loop to there
	    stateFirstTime = false;
	}

	// If we found a valid gif image link then animate it else do nothing and exit
	if( NWSradarImgNum < NWSradarImgCnt ) {

            setTimeout( "radarImageAnimate()", 100 );

	    stateAnimating = true;
	    document.getElementById("anibutt").innerHTML="[[STOP]]"; // Change the "Animate" button to "Stop"
	}
    }
}

function testGetImage() {
    target=new Image();
    target.onload=displayImage;
    target.onerror=bumpURL;
    target.src=NWSradarImgURL;

    return target;
}

function displayImage() {
    document['radar'].src = document['preloadedImage'].src;
}

function bumpURL() {

// ??    if( NWSradarImgNum < NWSradarImgCnt ) NWSradarImgNum++;
}

function radarImageAnimate() {

    if( stateAnimating ) {
	document["preloadedImage"] = testGetImage(); //if image exists at NWS, preload it

	NWSradarImgNum++;  // prep for next image

	// If more images left to display, continue to animate
	if ( NWSradarImgNum < NWSradarImgCnt ) {
	    NWSradarImgURL = noaadir.document.links[NWSradarImgNum].href;
            setTimeout( "radarImageAnimate()", 100 );
	}
	else {  
	    NWSradarImgNum=NWSradarImg1st;
	    NWSradarImgURL = noaadir.document.links[NWSradarImgNum].href;
            setTimeout( "radarImageAnimate()", 100 );

  	    //put the latest image back on display before exiting
            // NWSradarImgURL = NWSradarImgURLcurr;
            // document["preloadedImage"] = testGetImage();
	}
    }
}

function radarRefresh() {

    var theDate = new Date();

    // Reset state variables
    NWSradarImgCnt = 0;
    NWSradarImgNum = 0;
    NWSradarImg1st = 0;

    stateAnimating =  false;
    stateFirstTime =  true;
    document.getElementById("anibutt").innerHTML="Animate"; // Make sure button is back to "Animate"

    // Display latest radar image
    document['radar'].src = NWSradarImgURLcurr + "?" + parseInt(theDate.getTime() / 1000);

    // Display latest radar legend
    document['legend'].src = NWSradarLgdURLcurr + "?" + parseInt(theDate.getTime() / 1000);

    // Refresh NWS radar image archive in frame
    noaadir.document.src = "get_noaa_radar.php";

}

