jQuery.fn.updateWithText = function(text, speed) { var dummy = $('
').html(text); if ($(this).html() != dummy.html()) { $(this).fadeOut(speed/2, function() { $(this).html(text); $(this).fadeIn(speed/2, function() { //done }); }); } } jQuery.fn.outerHTML = function(s) { return s ? this.before(s).remove() : jQuery("").append(this.eq(0).clone()).html(); }; function roundVal(temp) { return Math.round(temp * 10) / 10; } function kmh2beaufort(kmh) { var speeds = [1, 5, 11, 19, 28, 38, 49, 61, 74, 88, 102, 117, 1000]; for (var beaufort in speeds) { var speed = speeds[beaufort]; if (speed > kmh) { return beaufort; } } return 12; } jQuery(document).ready(function($) { var news = []; var newsIndex = 0; var lastCompliment; var compliment; var weatherParams = { 'q':'Baarn,Netherlands', 'units':'metric', 'lang':'nl' }; (function checkVersion() { $.getJSON('githash.php', {}, function(json, textStatus) { if (json) { if (json.gitHash != gitHash) { window.location.reload(); window.location.href=window.location.href; } } }); setTimeout(function() { checkVersion(); }, 3000); })(); (function updateTime() { var days = ['zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag']; var months = ['januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december']; var now = new Date(); var day = now.getDay(); var date = now.getDate(); var month = now.getMonth(); var year = now.getFullYear(); var date = days[day] + ', ' + date+' ' + months[month] + ' ' + year; $('.date').html(date); $('.time').html(now.toTimeString().substring(0,5)); setTimeout(function() { updateTime(); }, 1000); })(); (function updateCompliment() { var compliments = [ 'Hey, handsome!', 'Hi, sexy!', 'Hello, beauty!', 'You look sexy!', 'Wow, you look hot!', 'Looking good today!', 'You look nice!', 'Enjoy your day!' ]; while (compliment == lastCompliment) { compliment = Math.floor(Math.random()*compliments.length); } $('.compliment').updateWithText(compliments[compliment], 4000); lastCompliment = compliment; setTimeout(function() { updateCompliment(); }, 30000); })(); (function updateCurrentWeather() { var iconTable = { '01d':'wi-day-sunny', '02d':'wi-day-cloudy', '03d':'wi-cloudy', '04d':'wi-cloudy-windy', '09d':'wi-showers', '10d':'wi-rain', '11d':'wi-thunderstorm', '13d':'wi-snow', '50d':'wi-fog', '01n':'wi-night-clear', '02n':'wi-night-cloudy', '03n':'wi-night-cloudy', '04n':'wi-night-cloudy', '09n':'wi-night-showers', '10n':'wi-night-rain', '11n':'wi-night-thunderstorm', '13n':'wi-night-snow', '50n':'wi-night-alt-cloudy-windy' } $.getJSON('http://api.openweathermap.org/data/2.5/weather', weatherParams, function(json, textStatus) { var temp = roundVal(json.main.temp); var temp_min = roundVal(json.main.temp_min); var temp_max = roundVal(json.main.temp_max); var wind = roundVal(json.wind.speed); console.log(wind); var iconClass = iconTable[json.weather[0].icon]; var icon = $('').addClass('icon').addClass('dimmed').addClass(iconClass); $('.temp').updateWithText(icon.outerHTML()+temp+'°', 1000); // var forecast = 'Min: '+temp_min+'°, Max: '+temp_max+'°'; // $('.forecast').updateWithText(forecast, 1000); var now = new Date(); var sunrise = new Date(json.sys.sunrise*1000).toTimeString().substring(0,5); var sunset = new Date(json.sys.sunset*1000).toTimeString().substring(0,5); var windString = ' ' + kmh2beaufort(wind) ; var sunString = ' ' + sunrise; if (json.sys.sunrise*1000 > now && json.sys.sunset*1000 > now) { sunString = ' ' + sunset; } $('.sun').updateWithText(windString+' '+sunString, 1000); }); setTimeout(function() { updateCurrentWeather(); }, 60000); })(); (function updateWeatherForecast() { var dayAbbr = ['zo','ma','di','wo','do','vr','za']; $.getJSON('http://api.openweathermap.org/data/2.5/forecast', weatherParams, function(json, textStatus) { var forecastData = {}; for (var i in json.list) { var forecast = json.list[i]; var dateKey = forecast.dt_txt.substring(0, 10); if (forecastData[dateKey] == undefined) { forecastData[dateKey] = { 'timestamp':forecast.dt * 1000, 'temp_min':forecast.main.temp, 'temp_max':forecast.main.temp }; } else { forecastData[dateKey]['temp_min'] = (forecast.main.temp < forecastData[dateKey]['temp_min']) ? forecast.main.temp : forecastData[dateKey]['temp_min']; forecastData[dateKey]['temp_max'] = (forecast.main.temp > forecastData[dateKey]['temp_max']) ? forecast.main.temp : forecastData[dateKey]['temp_max']; } } var forecastTable = $('