/**
* @author: John Giotta
* version 1.3 - 12/12/2007
*/
if (typeof(mediageneral) == "undefined") var mediageneral = new Object();
mediageneral.currentsticker = function (target_element, interval_secs) {
	this._currents = [];
	this.seconds = interval_secs;
	this.datasource = mediageneral.currentsticker.dsn+"/wx.php?alt=conditionsandwarnings&config=js";
	this.element = document.getElementById(target_element);
	this.arrayPosition = 0;
	this.parameters = new Object();
}
mediageneral.currentsticker.dsn = 'http://wx.mgnetwork.com';
mediageneral.currentsticker.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;
	},
	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.warningData != "undefined") {
			if (typeof mediageneral.warningData.content != "undefined") {
				this._currents[this.arrayPosition].hasWarning = true;
			} else {
				this._currents[this.arrayPosition].hasWarning = false;
			}
			delete mediageneral.warningData;
		}
		if (typeof mediageneral.currentsData != "undefined") {
			clearInterval(this.loadTimer);
			for ( i = 0; i<mediageneral.currentsData.content.length; i++) {
				this._currents[this.arrayPosition].loaded = true;
				this._currents[this.arrayPosition].content = mediageneral.currentsData.content[i];
			}
			delete mediageneral.currentsData;
			this.build(this._currents[this.arrayPosition]);
		}
	},
	build: function (current) {
		var _linkback = '';
		var msg = [];
		var warning_elem = warning_elem = document.getElementById('warningspan');
		if(current.linkback.split(".").length > 1){
			_linkback = current.linkback;
		}else{
			_linkback = mediageneral.currentsticker.dsn+'/wx.php?pands='+current.content.pands+'&user='+current.linkback.toUpperCase();
		}
		
		msg.push('<a href="'+_linkback+'">'+current.content.pands+'</a>');
		if(this.parameters['temp'] == "true") msg.push('<span>'+current.content.temp+'</span>');
		if(this.parameters['feelslike'] == "true") msg.push('<span>Feels Like: '+current.content.feelslike+'</span>');
		if(this.parameters['humidity'] == "true") msg.push('<span>Humidity: '+current.content.humidity+'</span>');
		if(this.parameters['sky'] == "true") msg.push('<span>'+current.content.sky+'</span>');
		if(this.parameters['windspeed'] == "true") msg.push('<span>Wind: '+current.content.windspeed+'</span>');
		if(this.parameters['barometer'] == "true") msg.push('<span>Barometer: '+current.content.barometer+'</span>');
		if(this.parameters['dewpoint'] == "true") msg.push('<span>Dewpoint: '+current.content.dewpoint+'</span>');
		this.element.innerHTML = msg.join(" ");
		
		if (current.hasWarning) {
			warning_elem.innerHTML = '<a href="' + mediageneral.currentsticker.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.innerHTML = '&nbsp;';
		}
		
		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 () {
		if(this._currents[this.arrayPosition].loaded)
		{
			this.build(this._currents[this.arrayPosition]);
		} else {
			this.load(this._currents[this.arrayPosition].url);
		}
	},
	setParameters: function (params) {
		var prop = "";
		for (prop in params) {
			this.parameters[prop] = params[prop];
		}
	}	
}