/*

GZIP CONTENT DELIVERY
Copyright 2010 Fat Publisher

All rights reserved. Republication, redistribution,
replication or use of Fat Publisher content / scripting
is strictly prohibited without the prior written consent of Fat Publisher.

www.fatpublisher.com.au

Content generated : 06:59:01 am 07 September 2010

*/

var forecast_data = {'reports' : [], 'forecasts' : [], 'current' : []};
//var report_items = ["ski_area_name", "new_snow_min24", "new_snow_max24", "base_depth_min", "base_depth_max", "num_lifts_open", "num_trails_open", "snow_making", "night_skiing", "grooming", "percent_runs_open", "cross_country", "snow_boarding", "operation_hours", "snow_comments24"];
//var report_items = ["Open", "Name", "NewSnow24", "NewSnow48", "NewSnow72", "BaseDepth", "TopDepth", "NumLiftsOpen", "PerLiftsOpen", "NumLiftsTotal", "NumberOfRuns", "AcresOpen", "KmXC", "Hours", "EventNotices", "URL", "Email", "CallAheadPhone", "ProjectedOpeningDate", "ProjectedClosingDate", "ParkReshaped", "PipeRecut", "Hits", "Pipes", "MNCLink"];
var report_items = ["Open", "Name", "NewSnow24", "NewSnow48", "NewSnow72", "BaseDepth", "TopDepth", "NumLiftsOpen", "PerLiftsOpen", "NumLiftsTotal", "NumberOfRuns", "AcresOpen", "KmXC", "Hours"];

function load_forecast_data(sel)
{
	if (sel.value == "#") {
		return false;
	}
	
	try {
		if (sel.name == "resort") {
			document.getElementById("side_weather").elements["location"].value = sel.value;
			update_forecast(document.getElementById("side_weather").elements["location"]);
		}
		else {
			document.getElementById("forecast_form").elements["resort"].value = sel.value;			
		}
	}
	catch (e) {};

	try_cmd("fcs_load", "innerHTML = 'Retrieving data, please wait...';");
	try_cmd("fcs_load", "style.display = '';");
	try_cmd("fcs_info", "style.display = 'none';");	

	if (typeof(forecast_data['current'][sel.value]) == "undefined") {
		xml_get_queue_add("xmlrequests.php?request=current&resort=" + sel.value, function(obj) { save_current_data(obj, sel.value); });
	}
	else {
		show_current_data(sel.value);
		//show_current_small(sel.value);
	}

	if (typeof(forecast_data['forecasts'][sel.value]) == "undefined") {
		xml_get_queue_add("xmlrequests.php?request=forecasts&resort=" + sel.value, function(obj) { save_forecast_data(obj, sel.value); });
	}
	else {
		show_forecast_data(sel.value);
	}
	
	if (typeof(forecast_data['reports'][sel.value]) == "undefined") {
		try_cmd("rp", "style.display = 'none'");
		xml_get_queue_add("xmlrequests.php?request=reports&resort=" + sel.value, function(obj) { save_report_data(obj, sel.value); });
	}
	else {
		show_report_data(sel.value);
	}

	if (typeof(webcams) != "undefined") {
		show_webcams(sel.value, 0);
	}
	if (typeof(webcams) != "undefined") {
		show_radars(sel.value, 0);
	}
	return true;
}

function load_5day_forecast_data(sel) {
	setTimeout('add_current_to_queue("'+sel+'");',2000);
	setTimeout('add_forecast_to_queue("'+sel+'");',3000);
//	show_forecast_data(sel);
}
function add_current_to_queue(sel) {
	xml_get_queue_add("xmlrequests.php?request=current&resort=" + sel,		function(obj) { save_current_data(obj, sel); });
}
function add_forecast_to_queue(sel) {
	xml_get_queue_add("xmlrequests.php?request=forecasts&resort=" + sel,	function(obj) { save_forecast_data(obj, sel); });
}

function update_forecast(obj)
{
	var lnk = dom_id("fcs_link");
	if (lnk) {
		var orig = lnk.getAttribute("base_url");
		if (! orig) {
			lnk.setAttribute("base_url", lnk.href);
			orig = lnk.href;
		}
		lnk.href = orig + obj.value + "/";
	}
}

function save_current_data(obj, id)
{
	if (obj) {
//console.log(obj.responseXML.getElementsByTagName("report"));
		var report = obj.responseXML.getElementsByTagName("report")[0];
		if (report) {
			var time = report.getAttribute("localupdatetime")
			var obs = report.getElementsByTagName("observation");
			var avg = 0;	
			forecast_data['current'][id] = [];
			for (var  q = 0; q < obs.length; q ++) {
				if (q == 0) {
					var name = obs[q].getAttribute("city_name");
					var desc = obs[q].getAttribute("description");
					var icon = obs[q].getAttribute("icon");
					var hum = obs[q].getAttribute("humidity");
					var wind = obs[q].getAttribute("wind_long");
				}
				var tmp = obs[q].getAttribute("temperature");
				if (tmp && ! isNaN(tmp)) {
					avg += parseFloat(tmp);
				}
			}
			forecast_data['current'][id] = {"name" : name, "description" : desc, "average" : parseFloat(avg / obs.length).toFixed(2), "icon" : icon, "time" : time, "humidity" : hum, "wind" : wind};
			show_current_data(id);
			//show_current_small(id);
		}
		else {
			try_cmd("fcs_load", "innerHTML = 'Error returning data';");
		}
	}
}

function save_forecast_data(obj, id)
{
	if (!obj) {
		try_cmd("weather-loading", "style.display = 'none';");
		return;
	}

	try {
		var forecasts = obj.responseXML.getElementsByTagName("forecast");
		forecast_data['forecasts'][id] = [];
		for (var x = 0; x < 5; x ++) {
			forecast_data['forecasts'][id][x] = [];
			//alert(forecasts[x].attributes);
			for (var q = 0; q < forecasts[x].attributes.length; q ++) {
				var att = forecasts[x].attributes[q];
				forecast_data['forecasts'][id][x].push([att.nodeName, att.nodeValue]);
			}
		}
		show_forecast_data(id);
	}
	catch (e) {
		try_cmd('forecast', "innerHTML='weather information not available';");
		try_cmd("forecast", "style.display = '';");
		try_cmd("weather-loading", "style.display = 'none';");
	}
}


function save_report_data(obj, id)
{
	if (obj) {
		var rp = dom_id("rp");
		try {
			var ski = obj.responseXML.getElementsByTagName("SkiArea")[0];
			if (ski) {
				if (rp) {
					rp.style.display = "";
				}
				forecast_data['reports'][id] = [];
				for (var q = 0; q < report_items.length; q ++) {					
					var item = ski.getElementsByTagName(report_items[q]);
					if (report_items[q] == "MNCLink") {
						for (var f = 0; f < item.length; f ++) {
							forecast_data['reports'][id]["LINK:" + item[f].getAttribute("label")] = item[f].firstChild.data;								
						}
					}
					else {
						if (item.length == 1 || report_items[q] == "Name") {	
							try {
								forecast_data['reports'][id][report_items[q]] = item[0].firstChild.data;
								
								
							}
							catch (e) {
								forecast_data['reports'][id][report_items[q]] = "N/A";
							}
						}
						else {
							for (var n = 0; n < item.length; n ++) {
								var tx = item[n].getAttribute("unit");
								if (tx == "CM") {
									forecast_data['reports'][id][report_items[q]] = item[n].firstChild.data + "cm";
									break;
								}
							}
						}
					}

					/*
					forecast_data['reports'][id][report_items[q]] = ob.getAttribute(report_items[q]);
					*/
				}
				show_report_data(id);
			}
			else if (rp) {
				rp.style.display = "none";				
				//alert("There is no report available for this resort");
			}
		}
		catch (e) { }
		/*try {
			var ob = obj.responseXML.getElementsByTagName("observation")[0];
			if (ob) {
				if (rp) {
					rp.style.display = "";
				}
				forecast_data['reports'][id] = [];
				for (var q = 0; q < report_items.length; q ++) {
					forecast_data['reports'][id][report_items[q]] = ob.getAttribute(report_items[q]);
				}
				show_report_data(id);
			}
			else if (rp) {
				rp.style.display = "none";				
				//alert("There is no report available for this resort");
			}
		}
		catch (e) { }*/
	}
}

function show_current_data(id)
{
	var c = forecast_data['current'][id];
	try_cmd("fcs_temperature", "innerHTML = '" + c["average"] + "';");
	try_cmd("fc_temperature", "innerHTML = '" + c["average"] + "';");
	try_cmd("fc_localupdatetime", "innerHTML = '" + c["time"] + "';");
	try_cmd("fc_forecast", "innerHTML = '" + c["description"] + "';");
	try_cmd("fc_icon", "src = 'images/weather/" + c["icon"] + ".gif';");
	try_cmd("fcs_humidity", "innerHTML = '" + c["humidity"] + "';");
	try_cmd("fcs_wind_long", "innerHTML = '" + c["wind"] + "';");
	try_cmd("fc_localupdatetime", "innerHTML = '" + c["time"] + "';");
	try_cmd("fcs_description", "innerHTML = '" + c["description"] + "';");
	try_cmd("fcs_load", "style.display = 'none';");
	try_cmd("fcs_info", "style.display = '';");

	//fcs_link
}

/*function show_current_small(id)
{
	var c = forecast_data['current'][id];
	dom_id("fc_temperature").innerHTML = c["average"];
	dom_id("fc_localupdatetime").innerHTML = c["time"];
	dom_id("fc_forecast").innerHTML = c["description"];	
	dom_id("fc_icon").src = "images/weather/" + c["icon"] + ".gif";	
}*/

function show_forecast_data(id)
{
	for (var q = 0; q < forecast_data['forecasts'][id].length; q ++) {
		var current = forecast_data['forecasts'][id][q];
		for (var x = 0; x < current.length; x ++) {
			var el = dom_id("fc_" + q + "_" + current[x][0]);
			if (el) {
				if (el.tagName == "IMG") {
					el.src = "images/weather/" + current[x][1] + ".gif";
				}
				else {
					el.innerHTML = current[x][1];
				}
			}
			//alert(current[x][0] + " = " + );
		}
	}
	try_cmd("forecast", "style.display = '';");
	try_cmd("weather-loading", "style.display = 'none';");
}

function show_report_data(id)
{
	dom_id("rp").style.display = "";
	try {
		var lnk = dom_id("rp_Links");
		lnk.innerHTML = "";
	}
	catch (e) {};
	var current = forecast_data['reports'][id];
	for (var q = 0; q < report_items.length; q ++) {
		if (report_items[q] == "URL") {
			dom_id("rp_URL").href = current[report_items[q]];
		}
		else if (report_items[q] == "Email") {
			dom_id("rp_Email").href = "mailto:" + current[report_items[q]];
		}
		else if (report_items[q] == "MNCLink") {
			for (var z in current) {
				if (z.substring(0, 5) == "LINK:") {
					if (z.substring(5) != "null") {
						var a = document.createElement("A");
						a.href = current[z];
						a.innerHTML = z.substring(5);
						a.target = "_blank";
						a.style.marginRight = "5px";
						lnk.appendChild(a);			
					}
				}
			}
		}
		else {
			dom_id("rp_" + report_items[q]).innerHTML = current[report_items[q]];
		}
	}
}

function update_forecast_small(obj)
{
	/*var fields = ["high", "low", "outcome"];
	for (var w = 0; w < forecast_data.length; w ++) {
		if (forecast_data[w]["name"] == obj.value) {
			for (var x = 0; x < fields.length; x ++) {
				var el = dom_id("fcs_" + fields[x]);
				if (el) {
					el.innerHTML = forecast_data[w]["days"][0][fields[x]];
				}
			}
		}
	}*/
}

function show_webcams(id, index)
{
	var wc = dom_id("webcam");
	if (typeof(webcams[id]) != "undefined") {
		var x = webcams[id].split(/,/);
		var i = dom_id("wc_img");
		i.onload = function() { 
			this.style.display = ""; 			
			dom_id("webcam").style.display = (webcams[id].length && x.length) ? "" : "none";
		};
		i.src = x[index];		
		var wcl_1 = dom_id("wc_left");
		var wcl_2 = dom_id("wc_right");
		wcl_1.style.display = wcl_2.style.display = (x.length > 1) ? "" : "none";
		var n = ((index + 1) < parseInt(x.length)) ? (parseInt(index) + 1) : 0;
		var p = ((index - 1) < 0) ? (parseInt(x.length) - 1) : (index - 1);
		wcl_2.onclick = new Function("show_webcams(" + id + ", " + n + "); return false;");
		wcl_1.onclick = new Function("show_webcams(" + id + ", " + p + "); return false;");
	}
}

function show_radars(id, index)
{
	var wc = dom_id("weather_radar");
	if (typeof(radars[id]) != "undefined") {
		wc.style.display = (radars[id] != "") ? "" : "none";
		wc.getElementsByTagName("A")[0].href = radars[id];
	}
}

function try_cmd(id, value)
{
	var t = dom_id(id);
	if (t) {
		value = value.replace(/;$/, ";");
		eval("t." + value);
	}
}

function stop_mw()
{
	try {
		dom_id("forecast_form").elements["resort"].onmousewheel=function() { return false; };
	}
	catch (e){};
}

add_to_onload("stop_mw()");