function GenerateWeather() {
	if ((typeof(weather_json) == 'undefined') || (typeof(forecast_json) == 'undefined')) {
		document.getElementById('no-weather').style.display = 'block';
		document.getElementById('weather').style.display = 'none';
	}
	else {
		PopulateWeather();
	}
	return false;
}

function RenderValue (json_obj,json_key,dom_id) {
	switch (dom_id) {
		case 'feels-like':
			if (json_obj[json_key] != '') {
				document.getElementById(dom_id).innerHTML = 'Feels Like: ' + json_obj[json_key] + '&deg;';
			}; break;
		case 'current-sky':
			if (json_obj[json_key] != '') {
				if (weather_json['Sky'] != '') {document.getElementById(dom_id).innerHTML = '<img src="http://global.static.ghm.zope.net/resources/weather/weathercom-mapped/' + json_obj[json_key] + '.png" alt="' + weather_json['Sky'] + '" title="' + weather_json['Sky'] + '" class="current-sky" />';}
				else {document.getElementById(dom_id).innerHTML = '<img src="http://global.static.ghm.zope.net/resources/weather/weathercom-mapped/' + json_obj[json_key] + '.png" class="current-sky" />';}
			}; break;
		case 'day-2-sky': case 'day-3-sky': case 'day-4-sky': case 'day-5-sky': case 'day-6-sky': case 'day-7-sky':	
			if (json_obj[json_key] != '') {
				document.getElementById(dom_id).innerHTML = '<img src="http://global.static.ghm.zope.net/resources/weather/weathercom-mapped/small/' + json_obj[json_key] + '.png" style="width: 35px; height: 35px;" alt="Forecasted Sky Conditions" title="Forecasted Sky Conditions" class="current-sky" />';
			}; break;
		case 'day-2-low': case 'day-3-low': case 'day-4-low': case 'day-5-low': case 'day-6-low': case 'day-7-low':
			if (json_obj[json_key] != '') {
				document.getElementById(dom_id).innerHTML = '<span class="grey">Low: </span>' + json_obj[json_key] + '&deg;';
			}; break;
		default:
			if (json_obj[json_key] != '') {
				document.getElementById(dom_id).innerHTML = json_obj[json_key];
			}; break;
	}
	return false;
}

function PopulateWeather() {
	for (var wkey in weather_json) {
		switch (wkey) {
			case 'TemperatureF': RenderValue(weather_json,wkey,'current-temp'); break;
			case 'WindChillF': RenderValue(weather_json,wkey,'feels-like'); break;
			case 'WeatherDescription': RenderValue(weather_json,wkey,'sky'); break;
			case 'Pressure': RenderValue(weather_json,wkey,'current-pressure'); break;
			case 'VisibilityM': RenderValue(weather_json,wkey,'current-visibility'); break;
			case 'today_icon': RenderValue(weather_json,wkey,'current-sky'); break;
			case 'today_hi': RenderValue(weather_json,wkey,'current-high'); break;
			case 'today_lo': RenderValue(weather_json,wkey,'current-low'); break;
			case 'today_wDir': RenderValue(weather_json,wkey,'current-wind-direction'); break;
			case 'today_wSpd': RenderValue(weather_json,wkey,'current-wind-speed'); break;
			case 'today_pOP': RenderValue(weather_json,wkey,'current-precipitation'); break;
			case 'today_h': RenderValue(weather_json,wkey,'current-humidity'); break;
		}
	}
	for (var fkey in forecast_json) {
		switch (fkey) {
			case 'day2dow': RenderValue(forecast_json,fkey,'day-2-dow'); break;
			case 'day2sky24': RenderValue(forecast_json,fkey,'day-2-sky'); break;
			case 'day2hiTmpF': RenderValue(forecast_json,fkey,'day-2-high'); break;
			case 'day2loTmpF': RenderValue(forecast_json,fkey,'day-2-low'); break;
			case 'day3dow': RenderValue(forecast_json,fkey,'day-3-dow'); break;
			case 'day3sky24': RenderValue(forecast_json,fkey,'day-3-sky'); break;
			case 'day3hiTmpF': RenderValue(forecast_json,fkey,'day-3-high'); break;
			case 'day3loTmpF': RenderValue(forecast_json,fkey,'day-3-low'); break;
			case 'day4dow': RenderValue(forecast_json,fkey,'day-4-dow'); break;
			case 'day4sky24': RenderValue(forecast_json,fkey,'day-4-sky'); break;
			case 'day4hiTmpF': RenderValue(forecast_json,fkey,'day-4-high'); break;
			case 'day4loTmpF': RenderValue(forecast_json,fkey,'day-4-low'); break;
			case 'day5dow': RenderValue(forecast_json,fkey,'day-5-dow'); break;
			case 'day5sky24': RenderValue(forecast_json,fkey,'day-5-sky'); break;
			case 'day5hiTmpF': RenderValue(forecast_json,fkey,'day-5-high'); break;
			case 'day5loTmpF': RenderValue(forecast_json,fkey,'day-5-low'); break;
		}
	}
	return false;
}

function ChangeMap (map,btn) {
	document.getElementById(currentMap).style.display = 'none';
	document.getElementById(map).style.display = 'block';
	currentMap = map;
	
	var currentClass = btn.className;
	if (currentClass.indexOf(' active') == -1) {
		btn.className = btn.className + ' active';
		currentMapBtn.className = currentMapBtn.className.replace(' active','');
		currentMapBtn = btn;
	}
	return false;
}

var BrowserDetect = 
	{
		init: function () { this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function (data) { for (var i=0;i<data.length;i++)	{ var dataString = data[i].string; var dataProp = data[i].prop; this.versionSearchString = data[i].versionSearch || data[i].identity; if (dataString) { if (dataString.indexOf(data[i].subString) != -1) return data[i].identity; } else if (dataProp) return data[i].identity; } }, searchVersion: function (dataString) { var index = dataString.indexOf(this.versionSearchString); if (index == -1) return; return parseFloat(dataString.substring(index+this.versionSearchString.length+1)); }, dataBrowser: [ { 	string: navigator.userAgent, subString: "OmniWeb", versionSearch: "OmniWeb/", identity: "OmniWeb" }, { string: navigator.vendor, subString: "Apple", identity: "Safari" }, { prop: window.opera, identity: "Opera" }, { string: navigator.vendor, subString: "iCab", identity: "iCab" }, { string: navigator.vendor, subString: "KDE", identity: "Konqueror" }, { string: navigator.userAgent, subString: "Firefox", identity: "Firefox" }, { string: navigator.vendor, subString: "Camino", identity: "Camino" }, { string: navigator.userAgent, subString: "Netscape", identity: "Netscape" }, { string: navigator.userAgent, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE" }, { string: navigator.userAgent, subString: "Gecko", identity: "Mozilla", versionSearch: "rv" }, { string: navigator.userAgent, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla" } ], dataOS : [ { string: navigator.platform, subString: "Win", identity: "Windows" }, { string: navigator.platform, subString: "Mac", identity: "Mac" }, { string: navigator.platform, subString: "Linux", identity: "Linux" } ]
	};

BrowserDetect.init();