﻿/*
* simpleWeather
* 
* A simple jQuery plugin to display the weather information
* for a location. Weather is pulled from the public Yahoo!
* Weather feed via their api.
*
* Developed by James Fleeting <twofivethreetwo@gmail.com>
* Another project from monkeeCreate <http://monkeecreate.com>
*
* Version 1.8 - Last updated: May 15 2011
*/

(function ($) { $.extend({ simpleWeather: function (d) { var d = $.extend({ zipcode: '76309', location: '', unit: 'f', success: function (a) { }, error: function (a) { } }, d); now = new Date(); var e = 'http://query.yahooapis.com/v1/public/yql?format=json&rnd=' + now.getFullYear() + now.getMonth() + now.getDay() + now.getHours() + '&diagnostics=true&callback=?&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&q='; if (d.location != '') e += 'select * from weather.forecast where location in (select id from weather.search where query="' + d.location + '") and u="' + d.unit + '"'; else if (d.zipcode != '') e += 'select * from weather.forecast where location in ("' + d.zipcode + '") and u="' + d.unit + '"'; else { d.error("No location given."); return false } $.getJSON(e, function (c) { if (c != null && c.query.results != null) { $.each(c.query.results, function (i, a) { if (a.constructor.toString().indexOf("Array") != -1) a = a[0]; currentDate = new Date(); sunRise = new Date(currentDate.toDateString() + ' ' + a.astronomy.sunrise); sunSet = new Date(currentDate.toDateString() + ' ' + a.astronomy.sunset); if (currentDate > sunRise && currentDate < sunSet) timeOfDay = 'd'; else timeOfDay = 'n'; compass = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N']; windDirection = compass[Math.round(a.wind.direction / 22.5)]; if (a.item.condition.temp < 80 && a.atmosphere.humidity < 40) heatIndex = -42.379 + 2.04901523 * a.item.condition.temp + 10.14333127 * a.atmosphere.humidity - 0.22475541 * a.item.condition.temp * a.atmosphere.humidity - 6.83783 * (Math.pow(10, -3)) * (Math.pow(a.item.condition.temp, 2)) - 5.481717 * (Math.pow(10, -2)) * (Math.pow(a.atmosphere.humidity, 2)) + 1.22874 * (Math.pow(10, -3)) * (Math.pow(a.item.condition.temp, 2)) * a.atmosphere.humidity + 8.5282 * (Math.pow(10, -4)) * a.item.condition.temp * (Math.pow(a.atmosphere.humidity, 2)) - 1.99 * (Math.pow(10, -6)) * (Math.pow(a.item.condition.temp, 2)) * (Math.pow(a.atmosphere.humidity, 2)); else heatIndex = a.item.condition.temp; var b = { title: a.item.title, temp: a.item.condition.temp, code: a.item.condition.code, units: { temp: a.units.temperature, distance: a.units.distance, pressure: a.units.pressure, speed: a.units.speed }, currently: a.item.condition.text, high: a.item.forecast[0].high, low: a.item.forecast[0].low, forecast: a.item.forecast[0].text, wind: { chill: a.wind.chill, direction: windDirection, speed: a.wind.speed }, humidity: a.atmosphere.humidity, heatindex: heatIndex, pressure: a.atmosphere.pressure, rising: a.atmosphere.rising, visibility: a.atmosphere.visibility, sunrise: a.astronomy.sunrise, sunset: a.astronomy.sunset, description: a.item.description, thumbnail: "http://l.yimg.com/a/i/us/nws/weather/gr/" + a.item.condition.code + timeOfDay + "s.png", image: "http://l.yimg.com/a/i/us/nws/weather/gr/" + a.item.condition.code + timeOfDay + ".png", tomorrow: { high: a.item.forecast[1].high, low: a.item.forecast[1].low, forecast: a.item.forecast[1].text, code: a.item.forecast[1].code, date: a.item.forecast[1].date, day: a.item.forecast[1].day, image: "http://l.yimg.com/a/i/us/nws/weather/gr/" + a.item.forecast[1].code + "d.png" }, city: a.location.city, country: a.location.country, region: a.location.region, updated: a.item.pubDate, link: a.item.link }; d.success(b) }) } else { if (c.query.results == null) d.error("Invalid location given."); else d.error("Weather could not be displayed. Try again.") } }); return this } }) })(jQuery);

$(function () {
    $.simpleWeather({
        zipcode: '10001',
        unit: 'f',
        success: function (weather) {
            //alert('response');
            var html = '<div id="wimg"><img src="' + weather.thumbnail + '" height="49" alt="Current Conditions" /></div>'
                + '<div id="wdetails"><span>' + weather.temp + '&deg;F</span><br />' + weather.currently + '</div>';
            document.getElementById('winfo').innerHTML = html;
            //$(".tempcture").append(html);
        },
        error: function (error) {
            document.getElementById('winfo').innerHTML = error;
            //$("tempcture").html(error);
        }
    })
});

