­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ !function(t,e,s,a){var i="flatWeatherPlugin",n={location:"Boston, MA",country:"USA",zmw:"02108.1.99999",displayCityNameOnly:!1,api:"darksky",forecast:5,apikey:"",latitude:"",longitude:"",view:"full",render:!1,loadingAnimation:!0,strings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],min:"Min",max:"Max",direction:["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"]},timeformat:"12",lang:"EN"},o={openweathermap:["https://api.openweathermap.org/data/2.5/weather","https://api.openweathermap.org/data/2.5/forecast/daily"],wunderground:["https://api.wunderground.com/api/apikey/conditions/forecast/astronomy/"],darksky:["https://api.darksky.net/forecast/apikey/"]};function r(e,s){this.element=e,this.settings=t.extend({},n,s),this.settings.units&&"auto"!=this.settings.units||(this.settings.units=-1==["united states","usa","united states of america","us"].indexOf(this.settings.country.toLowerCase())?"metric":"imperial"),this.settings.forecast=Math.min(this.settings.forecast,5),"wunderground"==this.settings.api&&(this.settings.forecast=Math.min(this.settings.forecast,3)),this._name=i,this.once=!1,this.init()}function d(t,e){var s={};if("openweathermap"==e.api){""!=t[0].name?(s.location=t[0].name+", "+t[0].sys.country,s.city=t[0].name):""!=t[1].city.name?(s.location=t[1].city.name+", "+t[1].city.country,s.city=t[1].city.name):(s.location=e.location+", "+e.country,s.city=e.location),s.today={},s.today.temp={},s.today.temp.now=Math.round(t[0].main.temp),s.today.temp.min=Math.round(t[0].main.temp_min),s.today.temp.max=Math.round(t[0].main.temp_max),s.today.desc=t[0].weather[0].description.capitalize(),s.today.code=t[0].weather[0].id,s.today.wind=t[0].wind,s.today.humidity=t[0].main.humidity,s.today.pressure=t[0].main.pressure,s.today.sunrise=c(t[0].sys.sunrise,e.timeformat),s.today.sunset=c(t[0].sys.sunset,e.timeformat),s.today.day=p(new Date,e.strings.days),s.forecast=[];for(var a=0;a=12?"PM":"AM";return"24"==e&&(i="",s=s<10?"0"+s:s),"12"==e&&(s%=12),(s=s||12)+":"+(a=a<10?"0"+a:a)+" "+i}t.extend(r.prototype,{init:function(){this.settings.render&&(this.settings.loadingAnimation&&!this.once&&(this.loading=t("
",{id:"flatWeatherLoading",class:"wi loading"}),this.loading.appendTo(this.element)),this.fetchWeather().then(this.render,this.error)),this.once=!0},fetchWeather:function(){var e=this,s=new t.Deferred,a=[],i=this.settings.location+" "+this.settings.country;if("openweathermap"==this.settings.api){var n={};this.settings.lat&&this.settings.lon?(n.lat=this.settings.lat,n.lon=this.settings.lon):n.q=i,n.units=this.settings.units,this.settings.apikey&&(n.appid=this.settings.apikey),this.settings.lang&&(n.lang=this.settings.lang),a.push(n),n.cnt=this.settings.forecast+1,a.push(n)}else("wunderground"==this.settings.api||"darksky"==this.settings.api)&&(o[this.settings.api][0]=o[this.settings.api][0].replace(/apikey/,this.settings.apikey));for(var r=[],p=0;p1?a.map((function(t){return t[0]})):a[0],"openweathermap"!=e.settings.api||"200"==a[0].cod&&"200"==a[1].cod)if("wunderground"==e.settings.api&&a.response&&a.response.error)console.log("Error interacting with the wunderground api see error object below for details:"),console.log(a),s.reject(a,e);else if("darksky"==e.settings.api&&403==a.status)console.log("Error authenticating with the darkmap api see error object below for details:"),console.log(a),s.reject(a,e);else{var i=d(a,e.settings);e._weather=i,t.data(e.element,"weather",i),s.resolve(i,e)}else console.log("Error interacting with the openweathermap api see error object below for details:"),console.log(a),s.reject(a,e)})).fail((function(t){s.reject(t,e)})),s},error:function(e,s){s||(s=this),s.settings.loadingAnimation&&s.settings.render&&s.loading.remove(),e="openweathermap"==s.settings.api?"200"!=e.responseJSON.cod?e.responseJSON.cod+" "+e.responseJSON.message+" See console log for details.":e.responseJSON.message+" See console log for details.":"wunderground"==s.settings.api?e.response.error.type+" See console log for details.":"Sorry, the weather service is currently down. Please try again later.";var a=t("
",{class:"flatWeatherPlugin "+s.settings.view});return t("

").text("Error").appendTo(a),t("

").text(e).appendTo(a),t(s.element).html(a),t(s.element)},render:function(e,s){s||(s=this,e=this._weather);var a="metric"==s.settings.units?"°C":"°F";s.settings.loadingAnimation&&s.settings.render&&s.loading.remove();var i=t("

",{class:"flatWeatherPlugin "+s.settings.view});if(s.settings.displayCityNameOnly?t("

").text(e.city).appendTo(i):t("

").text(e.location).appendTo(i),"forecast"!=s.settings.view){var n=t("
",{class:"wiToday"}),o=t("
",{class:"wiIconGroup"});t("
",{class:"wi wi"+e.today.code}).appendTo(o),t("

",{class:"wiText"}).text(e.today.desc).appendTo(o),o.appendTo(n),t("

",{class:"wiTemperature"}).html(e.today.temp.now+""+a+"").appendTo(n),n.appendTo(i)}if("simple"!=s.settings.view){var r=t("

",{class:"wiDetail"});if("partial"==s.settings.view&&t("

",{class:"wiDay"}).text(e.today.day).appendTo(n),"partial"!=s.settings.view){"today"!=s.settings.view&&t("

",{class:"wiDay"}).text(e.today.day).appendTo(r);var d=t("

    ",{class:"astronomy"}).appendTo(r);t("
  • ",{class:"wi sunrise"}).text(e.today.sunrise).appendTo(d),t("
  • ",{class:"wi sunset"}).text(e.today.sunset).appendTo(d);var p=t("
      ",{class:"temp"}).appendTo(r);t("
    • ").html(s.settings.strings.max+": "+e.today.temp.max+""+a+"").appendTo(p),t("
    • ").html(s.settings.strings.min+": "+e.today.temp.min+""+a+"").appendTo(p);var c=t("
        ",{class:"atmosphere"}).appendTo(r);t("
      • ",{class:"wi humidity"}).text(e.today.humidity).appendTo(c),t("
      • ",{class:"wi pressure"}).text(e.today.pressure).appendTo(c),t("
      • ",{class:"wi wind"}).text(function(t,e,s,a){var i=e;i>=0&&i<=11.25||i>348.75&&i<=360?i=a[0]:i>11.25&&i<=33.75?i=a[1]:i>33.75&&i<=56.25?i=a[2]:i>56.25&&i<=78.75?i=a[3]:i>78.75&&i<=101.25?i=a[4]:i>101.25&&i<=123.75?i=a[5]:i>123.75&&i<=146.25?i=a[6]:i>146.25&&i<=168.75?i=a[7]:i>168.75&&i<=191.25?i=a[8]:i>191.25&&i<=213.75?i=a[9]:i>213.75&&i<=236.25?i=a[10]:i>236.25&&i<=258.75?i=a[11]:i>258.75&&i<=281.25?i=a[12]:i>281.25&&i<=303.75?i=a[13]:i>303.75&&i<=326.25?i=a[14]:i>326.25&&i<=348.75&&(i=a[15]);i||(i="");return i+" "+t+" "+("metric"==s?"km/h":"mph")}(e.today.wind.speed,e.today.wind.deg,s.settings.units,s.settings.strings.direction)).appendTo(c),r.appendTo(n)}if("today"!=s.settings.view||"forecast"==s.settings.view){for(var l=t("
          ",{class:"wiForecasts"}),u="forecast"==s.settings.view?0:1;u",{class:"wiDay"}).html(""+e.forecast[u].day+"").appendTo(l),h=t("
            ",{class:"wiForecast"}).appendTo(y);t("
          • ",{class:"wi wi"+e.forecast[u].code}).appendTo(h),t("
          • ",{class:"wiMax"}).html(e.forecast[u].temp.max+""+a+"").appendTo(h),t("
          • ",{class:"wiMin"}).html(e.forecast[u].temp.min+""+a+"").appendTo(h)}l.appendTo(i)}}return t(s.element).html(i),t(s.element)}}),t.fn[i]=function(e,s){return t.isFunction(r.prototype[e])?this.data("plugin_"+i)[e](s):this.each((function(){if(!t.data(this,"plugin_"+i)){var s=new r(this,e);return t.data(this,"plugin_"+i,s)}}))},String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)}}(jQuery,window,document);