var seconds=0; //number of seconds since last update
var wxdata_ids=new Array('hours', 'minutes', 'am_pm', 'day', 'month', 'year', 'wind_speed', 'wind_gust', 'wind_high',
'wind_high_time', 'wind_direction', 'temp', 'temp_high', 'temp_high_time', 'temp_low', 'temp_low_time', 'temp_rate', 
'rain_today','rain_rate', 'rain_yesterday', 'rain_month', 'rain_year', 'uv_index', 'uv_index_high', 
'uv_index_high_time', 'uv_index_rate', 'solar_radiation', 'humidity', 'pressure', 'pressure_rate', 'dew_point', 'cloud_base', 
'wind_chill', 'heat_index', 'comfort_level', 'sunrise', 'sunset', 'moon_rise', 'moon_set', 'moon_percent', 'uv_warning');
var wxdata_current=new Array();
var wxdata_update=new Array();
var updateStatus=false;

$(document).ready(function(){
	wxInitialize(); 
});

function wxInitialize(){
	updateWXdata();
	updateTimer();
}

function updateTimer()
{
	seconds++;
	document.getElementById('counter').innerHTML=' (' + seconds + ' seconds since last update)'; //Updates counter in HTML

	if (seconds >=60)
	window.location.reload();

	if (seconds >= 5 && !updateStatus){
	updateWXdata();
	}

	//if (seconds >= 5 && !updateStatus) //Clears seconds if greater than 5 and updateWXdata() was successful 
	//seconds = 0;

	setTimeout('updateTimer()',1000); //Creates another timer
}

function updateWXdata(){
	updateStatus=true;

	$.ajax({
  		url: 'wxdata.php',
  		cache: false,
  		success: function(data){
  			var wxdataphp_raw = data;
  			var wxdataphp_values=wxdataphp_raw.split(','); //Splits values into array
  			if(wxdataphp_values.length == 63){
  				wxdata_update[0]=wxdataphp_values[4];//hours
 				wxdata_update[1]=wxdataphp_values[5];//minutes
 				wxdata_update[3]=wxdataphp_values[3];//day
 				wxdata_update[4]=wxdataphp_values[2];//month
 				wxdata_update[5]=wxdataphp_values[1];//year
 				wxdata_update[6]=wxdataphp_values[7];//wind_speed
 				wxdata_update[7]=wxdataphp_values[8];//wind_gust
 				wxdata_update[8]=wxdataphp_values[41];//wind_high
 				wxdata_update[9]=wxdataphp_values[42];//wind_high_time
 				wxdata_update[10]=convertWindDegrees(wxdataphp_values[9]);//Converts wind direction degrees to N,E,S,W type directions
 				wxdata_update[11]=wxdataphp_values[13];//temp
 				wxdata_update[12]=wxdataphp_values[43];//temp_high
 				wxdata_update[13]=wxdataphp_values[44];//temp_high_time
 				wxdata_update[14]=wxdataphp_values[45];//temp_low
 				wxdata_update[15]=wxdataphp_values[46];//temp_low_time
 				wxdata_update[16]=wxdataphp_values[33];//temp_rate
 				wxdata_update[17]=wxdataphp_values[16];//rain_today
 				wxdata_update[18]=wxdataphp_values[32];//rain_rate
 				wxdata_update[19]=wxdataphp_values[60]-wxdataphp_values[61];//Calculates yesterdays rain total
				wxdata_update[19]= wxdata_update[19].toFixed(2);//Limits to 2 decimal places
 				wxdata_update[20]=wxdataphp_values[39];//rain_month
 				wxdata_update[21]=wxdataphp_values[15];//rain_year
 				wxdata_update[22]=wxdataphp_values[26];//uv_index
 				wxdata_update[23]=wxdataphp_values[48];//uv_index_high
 				wxdata_update[24]=wxdataphp_values[49];//uv_index_high_time
 				wxdata_update[25]=wxdataphp_values[50];//uv_index_rate
 				wxdata_update[26]=wxdataphp_values[27];//solar_radiation
 				wxdata_update[27]=wxdataphp_values[11];//humidity
 				wxdata_update[28]=wxdataphp_values[14];//pressure
 				wxdata_update[29]=wxdataphp_values[35];//pressure_rate
 				wxdata_update[30]=wxdataphp_values[31];//dew_point
 				wxdata_update[31]=wxdataphp_values[52];//cloud_base
 				wxdata_update[32]=wxdataphp_values[54];//wind_chill
 				wxdata_update[33]=wxdataphp_values[54];//heat_index
 				wxdata_update[34]=wxdataphp_values[62];//comfort_level
 				wxdata_update[35]=wxdataphp_values[55];//sunrise
 				wxdata_update[36]=wxdataphp_values[56];//sunset
 				wxdata_update[37]=wxdataphp_values[57];//moon_rise
 				wxdata_update[38]=wxdataphp_values[58];//moon_set
 				wxdata_update[39]=wxdataphp_values[59];//moon_percent
 			
 				if (wxdata_update[0]>12)//Determine AM or PM
				wxdata_update[2]='pm';
				else
				wxdata_update[2]='am';
				if (wxdata_update[0]==0)//Changes 0 hour in 24hour clock to 12
				wxdata_update[0]=12;
				if (wxdata_update[0]>12)//Convert 24hour clock to 12 hour clock
				wxdata_update[0]=wxdata_update[0]-12;
				if (wxdata_update[1]<=9)//Adds a zero in front of minutes if value is less than 9
				wxdata_update[1]='0' + wxdata_update[1];
				
				var uv_warning_code;
				if(wxdata_update[22]>=11.0)//Determines UV Index risk and warning color code
				{
					wxdata_update[40]='Extreme Risk';
					uv_warning_color='#9933FF';
				}
				if(wxdata_update[22]<=10.9)
				{
					wxdata_update[40]='Very High Risk';
					uv_warning_color='#FF0000';
				}
				if(wxdata_update[22]<=7.9)
				{
					wxdata_update[40]='High Risk';
					uv_warning_color='#FF9900';
				}
				if(wxdata_update[22]<=5.9)
				{
					wxdata_update[40]='Moderate Risk';
					uv_warning_color='#FFFF00';
				}
				if(wxdata_update[22]<=2.9)
				{
					wxdata_update[40]='Low Risk';
					uv_warning_color='#33CC00';
				}

				var wxElement = document.getElementById('uv_warning_td');
				if(wxElement != null)
				document.getElementById('uv_warning_td').style.backgroundColor=uv_warning_color;//Update background color of UV index color code
 				
 				for (var i=0;i<=(wxdata_update.length-1);i++) //Updates span tags in HTML document to new values
				{
					var wxElement = document.getElementById(wxdata_ids[i]);
					if((wxdata_current[i]!=wxdata_update[i]) && (wxElement != null))
					{
						document.getElementById(wxdata_ids[i]).innerHTML=wxdata_update[i];
					}
	                        }
				for (var i=0;i<=(wxdata_update.length-1);i++)
				{
					wxdata_current[i]=wxdata_update[i];
				}
  
 				seconds=0;
  			}

 		}
  	});
     updateStatus=false;
}
function convertWindDegrees(wind_degrees)
{
	if(wind_degrees>360 || wind_degrees<0)
	return wind_degrees;
	else if(wind_degrees>=349 && wind_degrees<=11)
	return 'N';
	else if(wind_degrees>=12 && wind_degrees<=33)
	return 'NNE';
	else if(wind_degrees>=34 && wind_degrees<=56)
	return 'NE';
	else if(wind_degrees>=57 && wind_degrees<=78)
	return 'ENE';
	else if(wind_degrees>=79 && wind_degrees<=101)
	return 'E';
	else if(wind_degrees>=102 && wind_degrees<=123)
	return 'ESE';
	else if(wind_degrees>=124 && wind_degrees<=146)
	return 'SE';
	else if(wind_degrees>=147 && wind_degrees<=168)
	return 'SSE';
	else if(wind_degrees>=169 && wind_degrees<=191)
	return 'S';
	else if(wind_degrees>=192 && wind_degrees<=213)
	return 'SSW';
	else if(wind_degrees>=214 && wind_degrees<=236)
	return 'SW';
	else if(wind_degrees>=237 && wind_degrees<=258)
	return 'WSW';
	else if(wind_degrees>=259 && wind_degrees<=281)
	return 'W';
	else if(wind_degrees>=282 && wind_degrees<=303)
	return 'WNW';
	else if(wind_degrees>=304 && wind_degrees<=326)
	return 'NW';
	else
	return 'NNW';
}