ww.Clock={localTime:null,initialise:function(utcTimeStamp,timezoneOffset){this.utcTimeStamp=utcTimeStamp;this.timezoneOffset=timezoneOffset;this.utcDate=ww.Utils.formatTimeStamp(this.utcTimeStamp);this.localDate=ww.Utils.formatTimeStamp(this.utcTimeStamp);this.localDate.setSeconds(this.localDate.getSeconds()+this.timezoneOffset);this.date=$("#date");this.hour=$("#time .hour");this.minutes=$("#time .minutes");this.seconds=$("#time .seconds");this.displayTime();this.updateTimeIndicator.interval(1000,this);this.updateTime.interval(60000,this);},displayTime:function(){this.date.html(this.localDate.format("jS F Y"));this.hour.html(this.localDate.format("g"));this.minutes.html(this.localDate.format("i a"));},updateTime:function(){this.utcDate.setMinutes(this.utcDate.getMinutes()+1);this.localDate.setMinutes(this.localDate.getMinutes()+1);this.displayTime();},updateTimeIndicator:function(){this.seconds.hasClass("hide")?this.seconds.removeClass("hide"):this.seconds.addClass("hide");},getDate:function(){return new Date(this.localDate.getTime());},getUtcDate:function(){return new Date(this.utcDate.getTime());}};function dayno(year,month,day,hours){var d=367*year-Math.floor(7*(year+Math.floor((month+9)/12))/4)+Math.floor((275*month)/9)+day-730530+hours/24;return d;}function julian(year,month,day,hours){return dayno(year,month,day,hours)+2451543.5;}function jdtocd(jd){var Z=Math.floor(jd+0.5);var F=jd+0.5-Z;if(Z<2299161){var A=Z;}else{var alpha=Math.floor((Z-1867216.25)/36524.25);var A=Z+1+alpha-Math.floor(alpha/4);}var B=A+1524;var C=Math.floor((B-122.1)/365.25);var D=Math.floor(365.25*C);var E=Math.floor((B-D)/30.6001);var d=B-D-Math.floor(30.6001*E)+F;if(E<14){var month=E-1;}else{var month=E-13;}if(month>2){var year=C-4716;}else{var year=C-4715;}var day=Math.floor(d);var h=(d-day)*24;var hours=Math.floor(h);var m=(h-hours)*60;var minutes=Math.floor(m);var seconds=Math.round((m-minutes)*60);if(seconds>=60){minutes=minutes+1;seconds=seconds-60;}if(minutes>=60){hours=hours+1;minutes=0;}var dw=Math.floor(jd+1.5)-7*Math.floor((jd+1.5)/7);return new Array(year,month,day,dw,hours,minutes,seconds);}function local_sidereal(year,month,day,hours,lon){var d=dayno(year,month,day,hours);var lst=(98.9818+0.985647352*d+hours*15+lon);return rev(lst)/15;}function radtoaa(ra,dec,year,month,day,hours,lat,lon){var lst=local_sidereal(year,month,day,hours,lon);var x=cosd(15*(lst-ra))*cosd(dec);var y=sind(15*(lst-ra))*cosd(dec);var z=sind(dec);var xhor=x*sind(lat)-z*cosd(lat);var yhor=y;var zhor=x*cosd(lat)+z*sind(lat);var azimuth=rev(atan2d(yhor,xhor)+180);var altitude=atan2d(zhor,Math.sqrt(xhor*xhor+yhor*yhor));return new Array(altitude,azimuth);}function rev(angle){return angle-Math.floor(angle/360)*360;}function sind(angle){return Math.sin((angle*Math.PI)/180);}function cosd(angle){return Math.cos((angle*Math.PI)/180);}function tand(angle){return Math.tan((angle*Math.PI)/180);}function asind(c){return(180/Math.PI)*Math.asin(c);}function acosd(c){return(180/Math.PI)*Math.acos(c);}function atan2d(y,x){return(180/Math.PI)*Math.atan(y/x)-180*(x<0);}function anglestring(a,circle){var ar=Math.round(a*60)/60;var deg=Math.abs(ar);var min=Math.round(60*(deg-Math.floor(deg)));if(min>=60){deg+=1;min=0;}var anglestr="";if(!circle){anglestr+=(ar<0?"-":"+");}if(circle){anglestr+=((Math.floor(deg)<100)?"0":"");}anglestr+=((Math.floor(deg)<10)?"0":"")+Math.floor(deg);anglestr+=((min<10)?":0":":")+(min);return anglestr;}var T45AD=new Array(0,2,2,0,0,0,2,2,2,2,0,1,0,2,0,0,4,0,4,2,2,1,1,2,2,4,2,0,2,2,1,2,0,0,2,2,2,4,0,3,2,4,0,2,2,2,4,0,4,1,2,0,1,3,4,2,0,1,2,2);var T45AM=new Array(0,0,0,0,1,0,0,-1,0,-1,1,0,1,0,0,0,0,0,0,1,1,0,1,-1,0,0,0,1,0,-1,0,-2,1,2,-2,0,0,-1,0,0,1,-1,2,2,1,-1,0,0,-1,0,1,0,1,0,0,-1,2,1,0,0);var T45AMP=new Array(1,-1,0,2,0,0,-2,-1,1,0,-1,0,1,0,1,1,-1,3,-2,-1,0,-1,0,1,2,0,-3,-2,-1,-2,1,0,2,0,-1,1,0,-1,2,-1,1,-2,-1,-1,-2,0,1,4,0,-2,0,2,1,-2,-3,2,1,-1,3,-1);var T45AF=new Array(0,0,0,0,0,2,0,0,0,0,0,0,0,-2,2,-2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,-2,2,0,2,0,0,0,0,0,0,-2,0,0,0,0,-2,-2,0,0,0,0,0,0,0,-2);var T45AL=new Array(6288774,1274027,658314,213618,-185116,-114332,58793,57066,53322,45758,-40923,-34720,-30383,15327,-12528,10980,10675,10034,8548,-7888,-6766,-5163,4987,4036,3994,3861,3665,-2689,-2602,2390,-2348,2236,-2120,-2069,2048,-1773,-1595,1215,-1110,-892,-810,759,-713,-700,691,596,549,537,520,-487,-399,-381,351,-340,330,327,-323,299,294,0);var T45AR=new Array(-20905355,-3699111,-2955968,-569925,48888,-3149,246158,-152138,-170733,-204586,-129620,108743,104755,10321,0,79661,-34782,-23210,-21636,24208,30824,-8379,-16675,-12831,-10445,-11650,14403,-7003,0,10056,6322,-9884,5751,0,-4950,4130,0,-3958,0,3258,2616,-1897,-2117,2354,0,0,-1423,-1117,-1571,-1739,0,-4421,0,0,0,0,1165,0,0,8752);var T45BD=new Array(0,0,0,2,2,2,2,0,2,0,2,2,2,2,2,2,2,0,4,0,0,0,1,0,0,0,1,0,4,4,0,4,2,2,2,2,0,2,2,2,2,4,2,2,0,2,1,1,0,2,1,2,0,4,4,1,4,1,4,2);var T45BM=new Array(0,0,0,0,0,0,0,0,0,0,-1,0,0,1,-1,-1,-1,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,-1,0,0,0,0,1,1,0,-1,-2,0,1,1,1,1,1,0,-1,1,0,-1,0,0,0,-1,-2);var T45BMP=new Array(0,1,1,0,-1,-1,0,2,1,2,0,-2,1,0,-1,0,-1,-1,-1,0,0,-1,0,1,1,0,0,3,0,-1,1,-2,0,2,1,-2,3,2,-3,-1,0,0,1,0,1,1,0,0,-2,-1,1,-2,2,-2,-1,1,1,-1,0,0);var T45BF=new Array(1,1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,1,3,1,1,1,-1,-1,-1,1,-1,1,-3,1,-3,-1,-1,1,-1,1,-1,1,1,1,1,-1,3,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1);var T45BL=new Array(5128122,280602,277693,173237,55413,46271,32573,17198,9266,8822,8216,4324,4200,-3359,2463,2211,2065,-1870,1828,-1794,-1749,-1565,-1491,-1475,-1410,-1344,-1335,1107,1021,833,777,671,607,596,491,-451,439,422,421,-366,-351,331,315,302,-283,-229,223,223,-220,-220,-185,181,-177,176,166,-164,132,-119,115,107);function MoonPos(year,month,day,hours){var jd=julian(year,month,day,hours);var T=(jd-2451545)/36525;var T2=T*T;var T3=T2*T;var T4=T3*T;var LP=218.3164477+481267.88123421*T-0.0015786*T2+T3/538841-T4/65194000;var D=297.8501921+445267.1114034*T-0.0018819*T2+T3/545868-T4/113065000;var M=357.5291092+35999.0502909*T-0.0001536*T2+T3/24490000;var MP=134.9633964+477198.8675055*T+0.0087414*T2+T3/69699-T4/14712000;var F=93.272095+483202.0175233*T-0.0036539*T2-T3/3526000+T4/863310000;var A1=119.75+131.849*T;var A2=53.09+479264.29*T;var A3=313.45+481266.484*T;var E=1-0.002516*T-0.0000074*T2;var E2=E*E;var Sl=0;var Sr=0;for(var i=0;i<60;i++){var Eterm=1;if(Math.abs(T45AM[i])==1){Eterm=E;}if(Math.abs(T45AM[i])==2){Eterm=E2;}Sl+=T45AL[i]*Eterm*sind(rev(T45AD[i]*D+T45AM[i]*M+T45AMP[i]*MP+T45AF[i]*F));Sr+=T45AR[i]*Eterm*cosd(rev(T45AD[i]*D+T45AM[i]*M+T45AMP[i]*MP+T45AF[i]*F));}var Sb=0;for(var i=0;i<60;i++){var Eterm=1;if(Math.abs(T45BM[i])==1){Eterm=E;}if(Math.abs(T45BM[i])==2){Eterm=E2;}Sb+=T45BL[i]*Eterm*sind(rev(T45BD[i]*D+T45BM[i]*M+T45BMP[i]*MP+T45BF[i]*F));}Sl=Sl+3958*sind(rev(A1))+1962*sind(rev(LP-F))+318*sind(rev(A2));Sb=Sb-2235*sind(rev(LP))+382*sind(rev(A3))+175*sind(rev(A1-F))+175*sind(rev(A1+F))+127*sind(rev(LP-MP))-115*sind(rev(LP+MP));var mglong=rev(LP+Sl/1000000);var mglat=rev(Sb/1000000);if(mglat>180){mglat=mglat-360;}var mr=Math.round(385000.56+Sr/1000);var obl=23.4393-3.563e-9*(jd-2451543.5);var ra=rev(atan2d(sind(mglong)*cosd(obl)-tand(mglat)*sind(obl),cosd(mglong)))/15;var dec=rev(asind(sind(mglat)*cosd(obl)+cosd(mglat)*sind(obl)*sind(mglong)));if(dec>180){dec=dec-360;}return new Array(ra,dec,mr);}function MoonRise(year,month,day,TZ,latitude,longitude){var hours=0;var riseset=new Array();var elh=new Array();var elhdone=new Array();for(var i=0;i<=24;i++){elhdone[i]=false;}var rad=MoonPos(year,month,day,hours-TZ);var altaz=radtoaa(rad[0],rad[1],year,month,day,hours-TZ,latitude,longitude);elh[0]=altaz[0];elhdone[0]=true;if(elh[0]>0){riseset=new Array(-2,-2);}else{riseset=new Array(-1,-1);}hours=24;rad=MoonPos(year,month,day,hours-TZ);altaz=radtoaa(rad[0],rad[1],year,month,day,hours-TZ,latitude,longitude);elh[24]=altaz[0];elhdone[24]=true;for(var rise=0;rise<2;rise++){var found=false;var hfirst=0;var hlast=24;while(Math.ceil((hlast-hfirst)/2)>1){hmid=hfirst+Math.round((hlast-hfirst)/2);if(!elhdone[hmid]){hours=hmid;rad=MoonPos(year,month,day,hours-TZ);altaz=radtoaa(rad[0],rad[1],year,month,day,hours-TZ,latitude,longitude);elh[hmid]=altaz[0];elhdone[hmid]=true;}if(((rise==0)&&(elh[hfirst]<=0)&&(elh[hmid]>=0))||((rise==1)&&(elh[hfirst]>=0)&&(elh[hmid]<=0))){hlast=hmid;found=true;continue;}if(((rise==0)&&(elh[hmid]<=0)&&(elh[hlast]>=0))||((rise==1)&&(elh[hmid]>=0)&&(elh[hlast]<=0))){hfirst=hmid;found=true;continue;}break;}if((hlast-hfirst)>1){for(var i=hfirst;i<hlast;i++){found=false;if(!elhdone[i+1]){hours=i+1;rad=MoonPos(year,month,day,hours-TZ);altaz=radtoaa(rad[0],rad[1],year,month,day,hours-TZ,latitude,longitude);elh[hours]=altaz[0];elhdone[hours]=true;}if(((rise==0)&&(elh[i]<=0)&&(elh[i+1]>=0))||((rise==1)&&(elh[i]>=0)&&(elh[i+1]<=0))){hfirst=i;hlast=i+1;found=true;break;}}}if(found){var elfirst=elh[hfirst];var ellast=elh[hlast];hours=hfirst+0.5;rad=MoonPos(year,month,day,hours-TZ);altaz=radtoaa(rad[0],rad[1],year,month,day,hours-TZ,latitude,longitude);if((rise==0)&&(altaz[0]<=0)){hfirst=hours;elfirst=altaz[0];}if((rise==0)&&(altaz[0]>0)){hlast=hours;ellast=altaz[0];}if((rise==1)&&(altaz[0]<=0)){hlast=hours;ellast=altaz[0];}if((rise==1)&&(altaz[0]>0)){hfirst=hours;elfirst=altaz[0];}var eld=Math.abs(elfirst)+Math.abs(ellast);riseset[rise]=hfirst+(hlast-hfirst)*Math.abs(elfirst)/eld;}}return(riseset);}function MoonPhase(year,month,day){var j=dayno(year,month,day,12)+2451543.5;var T=(j-2451545)/36525;var T2=T*T;var T3=T2*T;var T4=T3*T;var D=297.8501921+445267.1114034*T-0.0018819*T2+T3/545868-T4/113065000;var MP=134.9633964+477198.8675055*T+0.0087414*T2+T3/69699-T4/14712000;var M=357.5291092+35999.0502909*T-0.0001536*T2+T3/24490000;var pa=180-D-6.289*sind(MP)+2.1*sind(M)-1.274*sind(2*D-MP)-0.658*sind(2*D)-0.214*sind(2*MP)-0.11*sind(D);return(rev(pa));}function MoonQuarters(year,month,day){var quarters=new Array();var k=Math.floor((year+((month-1)+day/30)/12-2000)*12.3685);var T=k/1236.85;var M=rev(2.5534+29.10535669*k-0.0000218*T*T);var MP=rev(201.5643+385.81693528*k+0.0107438*T*T+0.00001239*T*T*T-1.1e-7*T*T*T);var E=1-0.002516*T-0.0000074*T*T;var F=rev(160.7108+390.67050274*k-0.0016341*T*T-0.00000227*T*T*T+1.1e-8*T*T*T*T);var Omega=rev(124.7746-1.5637558*k+0.0020691*T*T+0.00000215*T*T*T);var A=new Array();A[1]=rev(299.77+0.107408*k-0.009173*T*T);A[2]=rev(251.88+0.016321*k);A[3]=rev(251.83+26.651886*k);A[4]=rev(349.42+36.412478*k);A[5]=rev(84.88+18.206239*k);A[6]=rev(141.74+53.303771*k);A[7]=rev(207.14+2.453732*k);var JDE0=2451550.09765+29.530588853*k+0.0001337*T*T-1.5e-7*T*T*T+7.3e-10*T*T*T*T;JDE0=JDE0-56.184/(24*60*60);var JDE=JDE0-0.4072*sind(MP)+0.17241*E*sind(M)+0.01608*sind(2*MP)+0.01039*sind(2*F)+0.00739*E*sind(MP-M)-0.00514*E*sind(MP+M)+0.00208*E*E*sind(2*M)-0.00111*sind(MP-2*F)-0.00057*sind(MP+2*F)+0.00056*E*sind(2*MP+M)-0.00042*sind(3*MP)+0.00042*E*sind(M+2*F)+0.00038*E*sind(M-2*F)-0.00024*E*sind(2*MP-M)-0.00017*sind(Omega)-0.00007*sind(MP+2*M);quarters[0]=JDE+0.000325*sind(A[1])+0.000165*sind(A[2])+0.000164*sind(A[3])+0.000126*sind(A[4])+0.00011*sind(A[5])+0.000062*sind(A[6])+0.00006*sind(A[7]);JDE=JDE0+29.530588853*0.25;M=rev(M+29.10535669*0.25);MP=rev(MP+385.81693528*0.25);F=rev(F+390.67050274*0.25);Omega=rev(Omega-1.5637558*0.25);A[1]=rev(A[1]+0.107408*0.25);A[2]=rev(A[2]+0.016321*0.25);A[3]=rev(A[3]+26.651886*0.25);A[4]=rev(A[4]+36.412478*0.25);A[5]=rev(A[5]+18.206239*0.25);A[6]=rev(A[6]+53.303771*0.25);A[7]=rev(A[7]+2.453732*0.25);JDE=JDE-0.62801*sind(MP)+0.17172*E*sind(M)-0.01183*E*sind(MP+M)+0.00862*sind(2*MP)+0.00804*sind(2*F)+0.00454*E*sind(MP-M)+0.00204*E*E*sind(2*M)-0.0018*sind(MP-2*F)-0.0007*sind(MP+2*F)-0.0004*sind(3*MP)-0.00034*E*sind(2*MP-M)+0.00032*E*sind(M+2*F)+0.00032*E*sind(M-2*F)-0.00028*E*E*sind(MP+2*M)+0.00027*E*sind(2*MP+M)-0.00017*sind(Omega);JDE=JDE+(0.00306-0.00038*E*cosd(M)+0.00026*cosd(MP)-0.00002*cosd(MP-M)+0.00002*cosd(MP+M)+0.00002*cosd(2*F));quarters[1]=JDE+0.000325*sind(A[1])+0.000165*sind(A[2])+0.000164*sind(A[3])+0.000126*sind(A[4])+0.00011*sind(A[5])+0.000062*sind(A[6])+0.00006*sind(A[7]);JDE=JDE0+29.530588853*0.5;M=rev(M+29.10535669*0.25);MP=rev(MP+385.81693528*0.25);F=rev(F+390.67050274*0.25);Omega=rev(Omega-1.5637558*0.25);A[1]=rev(A[1]+0.107408*0.25);A[2]=rev(A[2]+0.016321*0.25);A[3]=rev(A[3]+26.651886*0.25);A[4]=rev(A[4]+36.412478*0.25);A[5]=rev(A[5]+18.206239*0.25);A[6]=rev(A[6]+53.303771*0.25);A[7]=rev(A[7]+2.453732*0.25);JDE=JDE-0.40614*sind(MP)+0.17302*E*sind(M)+0.01614*sind(2*MP)+0.01043*sind(2*F)+0.00734*E*sind(MP-M)-0.00515*E*sind(MP+M)+0.00209*E*E*sind(2*M)-0.00111*sind(MP-2*F)-0.00057*sind(MP+2*F)+0.00056*E*sind(2*MP+M)-0.00042*sind(3*MP)+0.00042*E*sind(M+2*F)+0.00038*E*sind(M-2*F)-0.00024*E*sind(2*MP-M)-0.00017*sind(Omega)-0.00007*sind(MP+2*M);quarters[2]=JDE+0.000325*sind(A[1])+0.000165*sind(A[2])+0.000164*sind(A[3])+0.000126*sind(A[4])+0.00011*sind(A[5])+0.000062*sind(A[6])+0.00006*sind(A[7]);JDE=JDE0+29.530588853*0.75;M=rev(M+29.10535669*0.25);MP=rev(MP+385.81693528*0.25);F=rev(F+390.67050274*0.25);Omega=rev(Omega-1.5637558*0.25);A[1]=rev(A[1]+0.107408*0.25);A[2]=rev(A[2]+0.016321*0.25);A[3]=rev(A[3]+26.651886*0.25);A[4]=rev(A[4]+36.412478*0.25);A[5]=rev(A[5]+18.206239*0.25);A[6]=rev(A[6]+53.303771*0.25);A[7]=rev(A[7]+2.453732*0.25);JDE=JDE-0.62801*sind(MP)+0.17172*E*sind(M)-0.01183*E*sind(MP+M)+0.00862*sind(2*MP)+0.00804*sind(2*F)+0.00454*E*sind(MP-M)+0.00204*E*E*sind(2*M)-0.0018*sind(MP-2*F)-0.0007*sind(MP+2*F)-0.0004*sind(3*MP)-0.00034*E*sind(2*MP-M)+0.00032*E*sind(M+2*F)+0.00032*E*sind(M-2*F)-0.00028*E*E*sind(MP+2*M)+0.00027*E*sind(2*MP+M)-0.00017*sind(Omega);JDE=JDE-(0.00306-0.00038*E*cosd(M)+0.00026*cosd(MP)-0.00002*cosd(MP-M)+0.00002*cosd(MP+M)+0.00002*cosd(2*F));quarters[3]=JDE+0.000325*sind(A[1])+0.000165*sind(A[2])+0.000164*sind(A[3])+0.000126*sind(A[4])+0.00011*sind(A[5])+0.000062*sind(A[6])+0.00006*sind(A[7]);return quarters;}function moons(year){var moondates=new Array();var R1=Math.PI/180;var Y=year;var K0=Math.floor((Y-1900)*12.3685);var T=(Y-1899.5)/100;var T2=T*T;var T3=T*T*T;var J0=2415020+29*K0;var F0=0.0001178*T2-1.55e-7*T3;var F0=F0+0.75933+0.53058868*K0;var F0=F0-0.000837*T-0.000335*T2;var M0=K0*0.08084821133;M0=360*(M0-Math.floor(M0))+359.2242;M0=M0-0.0000333*T2;M0=M0-0.00000347*T3;var M1=K0*0.07171366128;M1=360*(M1-Math.floor(M1))+306.0253;M1=M1+0.0107306*T2;M1=M1+0.00001236*T3;var B1=K0*0.08519585128;B1=360*(B1-Math.floor(B1))+21.2964;B1=B1-0.0016528*T2;B1=B1-0.00000239*T3;for(var K9=0;K9<=28;K9+=1){var J=J0+14*K9;var F=F0+0.765294*K9;var K=K9/2;var M5=(M0+K*29.10535608)*R1;var M6=(M1+K*385.81691806)*R1;var B6=(B1+K*390.67050646)*R1;var F=F-0.4068*Math.sin(M6);F=F+(0.1734-0.000393*T)*Math.sin(M5);F=F+0.0161*Math.sin(2*M6);F=F+0.0104*Math.sin(2*B6);F=F-0.0074*Math.sin(M5-M6);F=F-0.0051*Math.sin(M5+M6);F=F+0.0021*Math.sin(2*M5);F=F+0.001*Math.sin(2*B6-M6);J=J+F;moondates[K9]=J;}return moondates;}ww.MoonPhaseForecast=function(){return{init:function(startDate,requestedDates,latitude,longitude,startIndex,size,scroll,url){this.id="#moonphase-forecast";this.startDate=startDate;this.requestedDates=requestedDates;this.metricLatitude=latitude;this.metricLongitude=longitude;this.startIndex=startIndex;this.size=size;this.scroll=scroll;this.url=url;this.graphics=new Array();this.graphics["FULL"]=16;this.graphics["NEW"]=32;this.graphics["1st Quarter"]=8;this.graphics["3rd Quarter"]=24;this.graphics["Waxing Crescent"]={6:1,13:2,21:3,28:4,35:5,43:6,50:7};this.graphics["Waxing Gibbous"]={56:9,63:10,71:11,78:12,85:13,93:14,100:15};this.graphics["Waning Gibbous"]={56:23,64:22,71:21,78:20,86:19,93:18,100:17};this.graphics["Waning Crescent"]={6:31,13:30,21:29,28:28,35:27,43:26,50:25};},carouselInitCallback:function(carousel){$(this.id+" .jump-to #date-picker").change(this.scrollTo.createDelegate(this,[carousel],true));},scrollTo:function(e,carousel){var jsHistoricalStartDate=ww.Utils.getDate(this.startDate);var targetDate=ww.Utils.getDate(e.target.value);var msPerDay=24*60*60*1000;var days=Math.round((targetDate.valueOf()-jsHistoricalStartDate.valueOf())/msPerDay)+1;if(days>carousel.size()||days<1){var loader="";for(var i=0;i<5;i++){loader+='<li class="jcarousel-item-placeholder"><div><div>&nbsp;</div></div></li>';}$(this.id+" .carousel").html(loader);targetDate.setHours("12");$.post(this.url,{startDate:targetDate.format("Y-m-d H:i:s"),offset:0},this.loadCallback.createDelegate(this,[carousel],true),"json");}else{carousel.scroll(days);}},loadCallback:function(json,status,jqxhr,carousel){this.requestedDates=json;this.startDate=this.requestedDates[0]["date"];carousel.reset();},load:function(carousel){if(carousel.has(carousel.first,carousel.last)){return;}var locationDate=ww.Clock.getDate();for(var i=carousel.first;i<=carousel.last;i++){var forecast=this.generateForecast(this.requestedDates[i-1]);var isToday=ww.Utils.compareDates(forecast["date"],locationDate);carousel.add(i,this.template(forecast,isToday));}},renderMoonClock:function(){var locationDate=ww.Clock.getDate();var phaseNames={"new":"new moon","first":"first quarter","last":"last quarter","full":"full moon"};var data={current:null,phases:new Array(),hemisphere:null};for(var i=0;i<this.requestedDates.length;i++){var forecast=this.generateForecast(this.requestedDates[i]);var forecastDate=forecast["date"];data.hemisphere=forecast["hemisphere"]==="n"?"northern":"southern";var phaseKey=forecast["phaseKey"];if(forecastDate.getTime()>locationDate.getTime()){if(phaseKey==="new"||phaseKey==="first"||phaseKey==="last"||phaseKey==="full"){if(data.phases.length<4){data.phases.push({date:forecastDate.format("M j"),name:phaseNames[phaseKey],key:phaseKey});}}}if(ww.Utils.compareDates(forecast["date"],locationDate)){var order=forecast["setRiseOrder"]=="set"?["set","rise"]:["rise","set"];data.current={label1:order[0],value1:forecast[order[0]],label2:order[1],value2:forecast[order[1]],illumination:forecast["illumination"]};}}var clock=$("#moonphases-clock");for(var i=0;i<data.phases.length;i++){var phase=data.phases[i];clock.find(".moon-nextphase:eq("+i+") .phase-name").html(phase.name);clock.find(".moon-nextphase:eq("+i+") .phase-date").html(phase.date);clock.find(".moon-nextphase:eq("+i+") .phase-img").addClass(data.hemisphere+"-"+phase.key);}clock.find(".moon-currentphase .rs-label:eq(0)").html(data.current.label1);clock.find(".moon-currentphase .rs-value:eq(0)").html(data.current.value1);clock.find(".moon-currentphase .rs-label:eq(1)").html(data.current.label2);clock.find(".moon-currentphase .rs-value:eq(1)").html(data.current.value2);var dir=data.phases[0].key=="full"||data.phases[0].key=="first"?"left":"right";var illumination=data.current.illumination;if(data.hemisphere=="northern"){if(dir=="left"){dir="right";}else{if(dir=="right"){dir="left";}}}if(dir=="right"){illumination=100-illumination;}var phaseX=(illumination*(96/100))-12;var dimension=72;var canvas=ww.Utils.createCanvas(dimension,dimension);canvas.appendTo("#moonphases-clock .reader");var ctx=canvas.get(0).getContext("2d");var midPoint=dimension/2;var centerX=midPoint;var centerY=midPoint;var radius=midPoint;ctx.lineWidth=0;ctx.strokeStyle="#A2BADC";ctx.fillStyle="#A2BADC";ctx.beginPath();ctx.arc(centerX,centerY,radius,0,2*Math.PI,false);ctx.stroke();ctx.fill();ctx.lineWidth=0;ctx.strokeStyle="#A2BADC";ctx.fillStyle="#fff";ctx.beginPath();if(dir=="left"){ctx.arc(centerX,centerY,radius,0.5*Math.PI,1.5*Math.PI,false);}else{ctx.arc(centerX,centerY,radius,1.5*Math.PI,0.5*Math.PI,false);}ctx.closePath();ctx.stroke();ctx.fill();var xAdjusted=midPoint;if((phaseX<midPoint&&dir=="left")||(phaseX>=midPoint&&dir=="right")){ctx.strokeStyle="#A2BADC";ctx.fillStyle="#A2BADC";if(dir=="right"){xAdjusted=35;}else{xAdjusted=37;}}else{ctx.strokeStyle="#fff";ctx.fillStyle="#fff";if(dir=="right"){xAdjusted=37;}else{xAdjusted=35;}}ctx.beginPath();ctx.moveTo(midPoint,0);var xPos=phaseX;var yDiff=-4;var controlX1=xPos;var controlY1=0-yDiff;var controlX2=xPos;var controlY2=dimension+yDiff;var endX=xAdjusted;var endY=dimension;ctx.bezierCurveTo(controlX1,controlY1,controlX2,controlY2,endX,endY);ctx.closePath();ctx.stroke();ctx.fill();},generateSubForecastContent:function(){var locationDate=this.startDate;var forecastData=[];for(var i=0;i<this.size;i++){var forecast=this.generateForecast(this.requestedDates[i]);var isToday=ww.Utils.compareDates(forecast["date"],locationDate);forecastData[i]=this.subForecastTemplate(forecast,isToday);}return forecastData;},generatePrintContent:function(){var locationDate=this.startDate;var forecastData=[];for(var i=0;i<this.size;i++){var forecast=this.generateForecast(this.requestedDates[i]);var isToday=ww.Utils.compareDates(forecast["date"],locationDate);forecastData[i]=this.printTemplate(forecast,isToday);}return forecastData;},generateOverlayContent:function(locationName,locationUrl){var forecast=this.generateForecast(this.requestedDates);return this.overlayTemplate(forecast,locationName,locationUrl);},template:function(data,isToday){var headingCss=isToday?" heading-today":"";var infoCss=isToday?" today":"";var xOffset=(data["phaseGraphic"]+1)*90;var yOffset=data["hemisphere"]=="n"?0:90;var order=data["setRiseOrder"]=="set"?["set","rise"]:["rise","set"];var s='<div class="day">'+'<div class="heading'+headingCss+'">'+'<div class="day-title">'+data["date"].format("D")+'</div><div class="date-title">'+data["date"].format("M j")+"</div>"+"</div>"+'<div class="info" style="background-color:#001F42">'+'<div class="phase-graphic">'+'<div class="icon" style="background-position: '+xOffset+"px "+yOffset+'px">'+"</div>"+"</div>"+'<div class="rise-set">'+'<div class="'+order[0]+'">'+order[0]+": <br />"+data[order[0]]+"</div>"+'<div class="divider">&nbsp</div>'+'<div class="'+order[1]+'">'+order[1]+": <br />"+data[order[1]]+"</div>"+"</div>"+'<div class="moon-info'+infoCss+'">'+'<div class="moon-phase">'+data["phaseName"]+"</div>"+"<div>"+data["illumination"]+"% full</div>"+"</div>"+"</div>"+"</div>"+'<div class="day-delim"><div class="ribbon"></div></div>';return s;},subForecastTemplate:function(data,isToday){var infoCss=isToday?" today":"";var graphic=data["phaseGraphic"];var xOffset=((graphic-1)*-16)+"px";var imperialLatitude=ww.Measurement.metricToImperial(this.metricLatitude);var latitude=imperialLatitude["degrees"]+(imperialLatitude["minutes"]/60);var yOffset=latitude>0?"-325px":"-309px";var s=['<div class="day">','<div class="phase-graphic"><div style="background-position:',xOffset," ",yOffset,'">&nbsp;</div></div>','<div class="moon-info text"><div class="moon-phase">',data["phaseName"],"</div>",'<div class="percentage-full">',data["illumination"],"% full</div>","</div></div>"];return s.join("");},printTemplate:function(data,isToday){var infoCss=isToday?" today":"";var graphic=data["phaseGraphic"];var xOffset=((graphic-1)*-16)+"px";var imperialLatitude=ww.Measurement.metricToImperial(this.metricLatitude);var latitude=imperialLatitude["degrees"]+(imperialLatitude["minutes"]/60);var order=data["setRiseOrder"]=="set"?["set","rise"]:["rise","set"];var s=['<div class="day">','<div class="moon-info text"><div class="moon-phase">',data["phaseName"],"</div>",'<div class="percentage-full">',data["illumination"],"% full</div>","</div>",'<div class="rise-set">','<div class="am"><span class="label">',order[0],'</span><div class="text">',data[order[0]],"</div></div>",'<div class="pm"><span class="label">',order[1],'</span><div class="text">',data[order[1]],"</div></div>","</div>"];return s.join("");},overlayTemplate:function(data,locationName,locationUrl){var graphic=data["phaseGraphic"];var xOffset=((graphic-1)*-16)+"px";var imperialLatitude=ww.Measurement.metricToImperial(this.metricLatitude);var latitude=imperialLatitude["degrees"]+(imperialLatitude["minutes"]/60);var yOffset=latitude>0?"-325px":"-309px";var order=data["setRiseOrder"]=="set"?["set","rise"]:["rise","set"];var s=['<div class="phase-graphic" style="background-position:',xOffset," ",yOffset,'" title="',data["phaseName"],'">&nbsp;</div>','<div class="location"><a href="',locationUrl,'">',locationName,"</a></div>",'<div class="main-sprite ',order[0],'"></div><div class="time">',data[order[0]],"</div>",'<div class="main-sprite ',order[1],'" style="margin-left:18px"></div><div class="time">',data[order[1]],"</div>"];return s.join("");},generateForecast:function(requestedDay){var imperialLongitude=ww.Measurement.metricToImperial(this.metricLongitude);var longitude=imperialLongitude["degrees"]+(imperialLongitude["minutes"]/60);var imperialLatitude=ww.Measurement.metricToImperial(this.metricLatitude);var latitude=imperialLatitude["degrees"]+(imperialLatitude["minutes"]/60);var date=ww.Utils.getDate(requestedDay["date"]);var forecast={date:date,rise:"",set:"",phaseName:"",phaseKey:"",phaseGraphic:"",illumination:"",setRiseOrder:"",hemisphere:""};var mp=MoonPhase(date.getFullYear(),date.getMonth()+1,date.getDate());var mPhaseD=Math.round(100*(1+cosd(mp))/2);var phaseName="";var phaseKey="";var phaseGraphic="";if((mp<=6.0953745)||(mp>=(360-6.0953745))){phaseName="FULL";phaseKey="full";phaseGraphic=16;}else{if(Math.abs(mp-180)<=6.0953745){phaseName="NEW";phaseKey="new";phaseGraphic=32;}else{if(Math.abs(mp-90)<=6.0953745){phaseName="1st Quarter";phaseKey="first";forecast["illumination"]=50;phaseGraphic=8;}else{if(Math.abs(mp-270)<=6.0953745){phaseName="3rd Quarter";phaseKey="last";forecast["illumination"]=50;phaseGraphic=24;}}}}if(phaseName==""&&phaseGraphic===""){var dayInCycle=15-(mp/(90/7));if(dayInCycle<1){dayInCycle+=29;}dayInCycle=parseInt(dayInCycle);if(dayInCycle<=7){phaseName="Waxing Crescent";phaseKey="waxc";}else{if(dayInCycle<=14){phaseName="Waxing Gibbous";phaseKey="waxg";}else{if(dayInCycle<=22){phaseName="Waning Gibbous";phaseKey="wang";}else{if(dayInCycle<=29){phaseName="Waning Crescent";phaseKey="wanc";}}}}var mappings=this.graphics[phaseName];for(var illuminationKey in mappings){if(mPhaseD<=parseInt(illuminationKey)){phaseGraphic=mappings[illuminationKey];break;}}}forecast["phaseKey"]=phaseKey;forecast["phaseName"]=phaseName;forecast["phaseGraphic"]=phaseGraphic;forecast["illumination"]=mPhaseD==100&&phaseName!="FULL"?mPhaseD-1:mPhaseD;if(latitude>=0){forecast["hemisphere"]="n";}else{forecast["hemisphere"]="s";}var timeZoneOffset=requestedDay["timeZoneOffset"]!=0?requestedDay["timeZoneOffset"]/60/60:0;mrs=MoonRise(date.getFullYear(),date.getMonth()+1,date.getDate(),timeZoneOffset,latitude,longitude);var now=new Date();if(mrs[0]>=0){forecast["rise"]=ww.Utils.getDateFromMinutes(mrs[0]).format("g:ia");}else{forecast["rise"]="-";}if(mrs[1]>=0){forecast["set"]=ww.Utils.getDateFromMinutes(mrs[1]).format("g:ia");}else{forecast["set"]="-";}if((mrs[0]>=0)&&(mrs[1]>=0)){mrs0=mrs[0];mrs1=mrs[1];while(mrs0>=24){mrs0-=24;}while(mrs0<0){mrs0+=24;}while(mrs1>=24){mrs1-=24;}while(mrs1<0){mrs1+=24;}if(mrs0<mrs1){order="rise";}else{order="set";}}else{if(mrs[1]>=0){order="set";}else{order="rise";}}forecast["setRiseOrder"]=order;return forecast;}};};ww.MoonPhaseMapOverlays=function(){return{render:function(){$(".moonphase-overlay").each(function(){var config=eval("("+$(this).html()+")");var forecast=new ww.MoonPhaseForecast();forecast.init(null,config["day"],config["latitude"],config["longitude"],0,1,false);$(this).html(forecast.generateOverlayContent(config["locationName"],config["locationUrl"])).toggle();});}};};
