//Weather Graph Widget Written By Andrew Stables.
//Copyright 2010 Andrew Stables.
$(document).ready(function(){var date=new Date();var month=date.getMonth()+1;var year=date.getFullYear();if(date.getDate()<=2){month-=1;}
drawGraph(month,year,'temp','chartdiv');drawGraph(month,year,'rain','raindiv');drawGraph(month,year,'windspeed','winddiv');drawGraph(month,year,'windchill','chilldiv');function drawGraph(month,year,stat,divID){var chartDivID='#'+divID;$(chartDivID).empty();var $loadingCog=$('<img/>').attr('src','../images/loading.gif').addClass('loadingIcon').css('left',($(chartDivID).width()-32)/2).css('top',($(chartDivID).height()-32)/2).appendTo(chartDivID).show();var $navPanel=$('<div/>').addClass('navPanel').css('opacity',0.5).css('width',$(chartDivID).width()).appendTo(chartDivID).hide();var open=false;var $hotSpot=$('<div/>').addClass('hotSpot').css('width',$(chartDivID).width()).appendTo(chartDivID).show().hover(function(){if(!open){$navPanel.slideDown(function(){open=true;});if($goBackButton)$goBackButton.fadeIn();if($goForwardButton)$goForwardButton.fadeIn();}},function(){if(open){$navPanel.slideUp(function(){open=false;});if($goBackButton)$goBackButton.fadeOut();if($goForwardButton)$goForwardButton.fadeOut();}});if(year>2009||month<12){var $goBackButton=$('<img/>').attr('src','../images/prevlabel.gif').addClass('goBackIcon').css('opacity',1.0).hide().appendTo($hotSpot).one('click',function(){$hotSpot.unbind('mouseenter mouseleave');month-=1;if(month==0){month=12;year-=1;}
drawGraph(month,year,stat,divID);$(chartDivID).trigger('mouseenter');});}
var todaymonth=date.getMonth()+1;var todayyear=date.getFullYear();if(todaymonth!=month||todayyear!=year){var $goForwardButton=$('<img/>').attr('src','../images/nextlabel.gif').addClass('goForwardIcon').css('opacity',1.0).hide().appendTo($hotSpot).one('click',function(){$hotSpot.unbind('mouseenter mouseleave');month+=1;if(month==13){month=1;year+=1;}
drawGraph(month,year,stat,divID);$(chartDivID).trigger('mouseenter');});}
$.get('weather.php?date='+addLeadZero(month)+'.'+year+'&stat='+stat,function(data){$loadingCog.hide();json=eval('('+data+')');if(json.day.length>0){var line1=[];var line2=[];var line3=[];var xticks=[];var statLegend;var unitsFormat;var seriesMap;var linesList;if(json.day.length==1)
var markersOn=true;else
var markersOn=false;switch(stat){case'temp':statLegend='Temperature';for(var i=0;i<json.day.length;i++){line1.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].max]);line2.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].mean]);line3.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].min]);};var xmin=-5.0;while(xmin<=json.overallmax||xmin<10.0){xticks.push(xmin);xmin+=2.5;}
xticks.push(xmin);unitsFormat='%.1f°';seriesMap=[{label:'Max',lineWidth:1,showMarker:markersOn,color:'#C00000'},{label:'Mean',lineWidth:2,showMarker:markersOn,color:'#000000'},{label:'Min',lineWidth:1,showMarker:markersOn,color:'#0000C0'}];linesList=[line1,line2,line3];break;case'windchill':statLegend='Windchill';for(var i=0;i<json.day.length;i++){line1.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].max]);line2.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].mean]);line3.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].min]);};var xmin=-12.5;while(xmin<=json.overallmax||xmin<10.0){xticks.push(xmin);xmin+=2.5;}
xticks.push(xmin);unitsFormat='%.1f°';seriesMap=[{label:'Max',lineWidth:1,showMarker:markersOn,color:'#C00000'},{label:'Mean',lineWidth:2,showMarker:markersOn,color:'#000000'},{label:'Min',lineWidth:1,showMarker:markersOn,color:'#0000C0'}];linesList=[line1,line2,line3];break;case'windspeed':statLegend='Wind';for(var i=0;i<json.day.length;i++){json.day[i].max=json.day[i].max/1.6;json.day[i].mean=json.day[i].mean/1.6;line1.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].max]);line2.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].mean]);};json.overallmax=json.overallmax/1.6;var xmin=0.0;while(xmin<=json.overallmax||xmin<10.0){xticks.push(xmin);xmin+=5.0;}
xticks.push(xmin);unitsFormat='%.1fmph';seriesMap=[{label:'Max Gust',lineWidth:1,showMarker:markersOn,color:'#C00000'},{label:'Mean',lineWidth:2,showMarker:markersOn,color:'#000000'}];linesList=[line1,line2];break;case'rain':statLegend='Rain';var peakRain=0.0;for(var i=0;i<json.day.length;i++){if(json.day[i].rain>peakRain){peakRain=json.day[i].rain;}
line1.push([json.day[i].year+'-'+json.day[i].month+'-'+json.day[i].day,json.day[i].rain]);};if(peakRain>30.0)
var delta=5.0;else
var delta=2.5;var xmin=0.0;while(xmin<=peakRain||xmin<10.0){xticks.push(xmin);xmin+=delta;}
xticks.push(xmin);unitsFormat='%.1fmm';seriesMap=[{label:'Daily Rainfall',lineWidth:1,showMarker:markersOn,color:'#0000C0'}];linesList=[line1];break;};var monthNames=new Array("","January","February","March","April","May","June","July","August","September","October","November","December");$.jqplot(divID,linesList,{title:statLegend+' - '+monthNames[month]+' '+year,legend:{show:true,location:'ne'},series:seriesMap,axes:{xaxis:{renderer:$.jqplot.DateAxisRenderer,tickOptions:{formatString:'%b %d'},tickInterval:'1 week'},yaxis:{ticks:xticks,tickOptions:{formatString:unitsFormat}}}});}});};function addLeadZero(num){var numStr='0'+num.toString();numStr=numStr.substr(numStr.length-2,2);return numStr;};});