
function doTblWx() {
	var tbl=document.getElementById("tblWx");
	try {
		// show file info if possible
		document.getElementById("wxDateLine").innerHTML="Data For: "+wxDataHead["month"]+"/"+wxDataHead["day"]+"/"+wxDataHead["year"];
		} catch (e) {}
	try {
		var tmin=aryWx[0][0].split(":");
	} catch (e) {
		return;
	}
	tbl.insertRow(0);
	tbl.rows[0].insertCell(0);
	tbl.rows[0].cells[0].innerHTML="<td colspan='8' align='center' ><span style='font-size:24px; color:red;'> Refreshing...</span></td>";
	var interval=document.getElementById("interval").value;
	var records=document.getElementById("records").value;
	//alert("i: "+interval+ "  r: "+records);
	//dynamically build weather table
	while(tbl.rows.length>2) {
		tbl.deleteRow(2);
	}

	var wxDat=wxDataHead["year"]+wxDataHead["month"]+wxDataHead["day"];
	var flagBadWindDir=false;
	if((wxDat*1>=20080129)&&(wxDat*1<20080519)) {
		flagBadWindDir=true;
		tbl.insertRow(1);
		tbl.rows[1].insertCell(0);
		tbl.rows[1].cells[0].colSpan="8";
		tbl.rows[1].cells[0].innerHTML="<td colspan='8' align='center' ><span style='font-size:24px; color:red;'>Reported Direction/Speed wrong<br />between 29 Jan 08 and 19 May 08 - sensor damaged.</span></td>"
	}

	theRows=tbl.rows;
	var lastDiv="";
	var dd="";
	var lastMin=0;
	var tmin=aryWx[0][0].split(":");
	//alert(aryWx[0][0]+"-->"+tmin[0]+"::"+tmin[1]);
	lastMin=(60*tmin[0])+(tmin[1]*1);
	//alert(aryWx[0][0]+"-->"+tmin[0]+"::"+tmin[1]+"==="+lastMin);
	lastMin=lastMin+(interval+1);
	for(var i=0;i<aryWx.length;i++) {
		if(theRows.length>=(records*1)+2) break;
		//if(i<5) alert("row "+i+" Time "+aryWx[i][0]);
		tmin=aryWx[i][0].split(":");
		tmin[0]=(60*tmin[0])+(tmin[1]*1);
		//if(i<10) alert(aryWx[i][0]+"-->"+tmin[0]+"::"+tmin[1]+"==="+lastMin);
		if(lastMin-tmin[0]>=interval) {
			newRow=tbl.insertRow(theRows.length);
			for(var j=0;j<aryWx[i].length;j++) {
				if(flagBadWindDir) {
					// don't give false wind info for Spring 08 downtime.
					aryWx[i][1]="-";
					aryWx[i][2]="-";
					aryWx[i][3]="-";
				}
				var lvHTML="<span class='small_1'>"+aryWx[i][j]+"</span>";
				newCell=newRow.insertCell(newRow.cells.length);
				newCell.innerHTML=lvHTML;
				newCell.align="center";
			}
			lastMin=tmin[0];
		}
	}
	tbl.deleteRow(0);
}


function addTableCell(aTbl,aRow,aVal,aWt,cSpan) {
	var newCell=aRow.insertCell(aRow.cells.length);
	newCell.style.fontWeight=aWt;
	newCell.colSpan=cSpan;
	var textNode = document.createTextNode(aVal);
  	newCell.appendChild(textNode);
	return(newCell);
}


<!--
    /////////////////////////////////////////
   /////////////////////////////////////////
  //   AJAX                              //
 /////////////////////////////////////////
/////////////////////////////////////////

// globals shared by AJAX functions
var http; // request object
var msg=""; // displayed message
var aryWx=new Array();
aryWx[0]=new Array(0,0,0);
var tbHead="";
var wxDataHead=new Array();
	
	
function makeURLwx(anId) {
	//alert("makeURLwx: "+anId);
	var rnd = Math.random();
	var rec=new Array();
	// build URL for AJAX call
		aURL="wxXML.php?wxDatFile="+anId+"&nocache="+rnd;
		msg="getting...";
	//alert(aURL);
	////showMsg("<pre>\n\n"+aURL+"</pre>");
	return aURL;
}

function doAJAXupdate(aURL) {
	//alert("in doAjax "+aURL);
	if(aURL=="") {
		//showMsg(msg);
		return;
	}
	// do AJAX call
	http = createRequestObject();
	try {
		//showMsg("Calling Database...");
		http.open("GET", aURL, true);
		http.setRequestHeader('Content-Type',  "text/xml");
		http.onreadystatechange = handleResponse;
		http.send(null);
	} catch(e) {
			// caught an error
			alert('Request send failed.'+ e);
			//showMsg("Request send failed: "+e);
	} finally {}
}

function handleResponse() {
	var waitMsg="Submitted. Waiting for response";
	try{
		if((http.readyState == 4)&&(http.status == 200)){
			var response = http.responseXML;
			var d=http.responseXML.getElementsByTagName('weather_data');
			//wxDataHead=new Array();
			for(var n=0;n<d[0].attributes.length;n++) {
					wxDataHead[d[0].attributes[n].name]=d[0].attributes[n].value;  //y,m,d etc. of xml data
					//alert(d[0].attributes[n].name+":::::"+d[0].attributes[n].value);
				}
			
			var c=http.responseXML.getElementsByTagName('weather_record');
			if((c.length>1)&&(c[0].attributes[0].value)!=aryWx[0][0]) {
				aryWx=new Array();
				for(var x=0;x<c.length;x++) {
					aryWx[x]=new Array();
					for(var n=0;n<c[x].attributes.length;n++) {
							//aryWx[x][c[x].attributes[n].name]=c[x].attributes[n].value;
							aryWx[x][n]=c[x].attributes[n].value;  //depends on attributes being in proper order
						}
				}
			}
			doTblWx();
		} else {
			waitMsg=waitMsg+".";
			//showMsg(waitMsg); 
		}
	} catch(e) {
		// caught an error
		alert('Response failed. State:'+http.readyState+'  error:'+e);
		//showMsg('Response failed. State:'+http.readyState+'  error:'+e);
	} finally {
		//showMsg(msg);
	}
}


function createRequestObject() {
	// find the correct xmlHTTP, works with IE, FF and Opera
	var xmlhttp;
	try {
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e) {
		try {
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			xmlhttp=null;
		}
	}
	if(!xmlhttp&&typeof XMLHttpRequest!="undefined") {
		xmlhttp=new XMLHttpRequest();
	}
	return  xmlhttp;
}


/*



*/


/*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 \\
  \\ end AJAX
   \\
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
*/





//-->