/**
* @framework author: John Giotta
* @author: John Giotta
* version 1.3 - 12/12/2007
*/
if (typeof(mediageneral) == "undefined") var mediageneral = new Object();
mediageneral.currents = function (target_element, interval_secs) {
	this._currents = [];
	this.seconds = interval_secs;
	this.datasource = mediageneral.currents.dsn+"/wx.php?forecast=hourly&alt=currentsjson&config=js";
	this.element = document.getElementById(target_element);
	this.arrayPosition = 0;
	this.parameters = new Object();
}
mediageneral.currents.dsn = 'http://wx.mgnetwork.com';
mediageneral.currents.prototype = {
	load: function (url) {
		var data_exchange_script = document.createElement("script");
		// Add script object attributes
		data_exchange_script.setAttribute("type", "text/javascript");
		data_exchange_script.setAttribute("id", "current_data");
		data_exchange_script.setAttribute('src', url);
		document.getElementsByTagName("head").item(0).appendChild(data_exchange_script);
		
		this.loadTimer = setInterval(this.delegate(this, this.handleData), 25);
		this.loadTimer.owner = this;
	},
	checkForWarnings: function (url) {
		var data_exchange_script = document.createElement("script");
		// Add script object attributes
		data_exchange_script.setAttribute("type", "text/javascript");
		data_exchange_script.setAttribute("id", "warning_data");
		data_exchange_script.setAttribute('src', url);
		document.getElementsByTagName("head").item(0).appendChild(data_exchange_script);
		
		this.warningTimer = setInterval(this.delegate(this, this.handleWarning), 25);
		this.warningTimer.owner = this;
	},
	delegate: function(obj, func) {
		var f = function () {
			var target = arguments.callee.target;
			var func0 = arguments.callee.func;
			return func0.apply(target, arguments);
		};
		f.target = obj;
		f.func = func;
		
		return f;
	},
	handleData: function () {
		if (typeof mediageneral.currentsData != "undefined") {
			clearInterval(this.loadTimer);
			var _linkback = '';
			var msg = [];
			var i = 0;
			for (i; i<mediageneral.currentsData.content.length; i++) {
				if(this._currents[this.arrayPosition].linkback.split(".").length > 1){
					_linkback = this._currents[this.arrayPosition].linkback;
				}else{
					_linkback = mediageneral.currents.dsn+'/wx.php?pands='+mediageneral.currentsData.content[i].pands+'&user='+this._currents[this.arrayPosition].linkback.toUpperCase();
				}
				msg.push('<a href="'+_linkback+'">'+mediageneral.currentsData.content[i].pands+'</a>');
				//this.element.innerHTML +='<div id="wx_img"><img src="'+mediageneral.currentsData.content[arrayPosition].wxicon+'" alt="'+mediageneral.currentsData.content[arrayPosition].sky+'" /></div>';
				if(this.parameters['temp'] == "true") msg.push('<span>'+mediageneral.currentsData.content[i].temp+'</span>');
				if(this.parameters['feelslike'] == "true") msg.push('<span>Feels Like: '+mediageneral.currentsData.content[i].feelslike+'</span>');
				if(this.parameters['humidity'] == "true") msg.push('<span>Humidity: '+mediageneral.currentsData.content[i].humidity+'</span>');
				if(this.parameters['sky'] == "true") msg.push('<span>'+mediageneral.currentsData.content[i].sky+'</span>');
				if(this.parameters['windspeed'] == "true") msg.push('<span>Wind: '+mediageneral.currentsData.content[i].windspeed+'</span>');
				if(this.parameters['barometer'] == "true") msg.push('<span>Barometer: '+mediageneral.currentsData.content[i].barometer+'</span>');
				if(this.parameters['dewpoint'] == "true") msg.push('<span>Dewpoint: '+mediageneral.currentsData.content[i].dewpoint+'</span>');
				//msg.push('<span id="warningspan">&nbsp;</span>');
			}
			this.element.innerHTML = msg.join(" ");
			delete mediageneral.currentsData;
			
		}
	},
	handleWarning: function () {
		var warning_elem;
		if (typeof mediageneral.warningData != "undefined") {
			if (typeof mediageneral.warningData.content != "undefined") {
				warning_elem = document.getElementById('warningspan');
				warning_elem.innerHTML = '<a href="' + mediageneral.currents.dsn + '/wx.php?user=' + this._currents[this.arrayPosition].user.toUpperCase() + '&pands=' + this._currents[this.arrayPosition].pands + '&forecast=warnings">View Warnings/Advisories</a>';
				this.element.parentNode.className = "warning";
			} else {
				this.element.parentNode.className = "";
				warning_elem = document.getElementById('warningspan');
				warning_elem.innerHTML = '&nbsp;';
			}
			
			clearInterval(this.warningTimer);
			delete mediageneral.warningData;
			
			if (this._currents.length > 1) {
				this.arrayPosition++;
				if (this._currents.length == this.arrayPosition) this.arrayPosition = 0;
				setTimeout(this.delegate(this, this.getData), this.seconds * 1000);
			}
		}
	},
	addLoc: function (pands, linkback, temp, feelslike, humidity, sky, windspeed, barometer, dewpoint) {
		var usr = 'currentsjson';
		if(linkback.length == 3) {
			usr = linkback+'_currentsjson';
		}

		this._currents.push({url:this.datasource + "&pands=" + pands + "&user=" + usr, linkback:linkback, user:linkback, pands:pands});
	},
	getData: function () {
		this.load(this._currents[this.arrayPosition].url);
		this.checkForWarnings(this._currents[this.arrayPosition].url.replace(/currentsjson/, "warningsjson").replace(/hourly/, "warnings"));
	},
	setParameters: function (params) {
		var prop = "";
		for (prop in params) {
			this.parameters[prop] = params[prop];
		}
	}	
}