(function() { 
	var loader = new YAHOO.util.YUILoader({ 
		base: '/common/yui/build/', 
		require: ["connection","paginator"], 
		loadOptional: false, 
		combine: false, 
		filter: "MIN", 
		allowRollup: true, 
		onSuccess: function() { 
			YAHOO.util.Event.onContentReady('sw3_news', sw3.news.init);
		} 
	}); 
 
// Load the files using the insert() method. 
	loader.insert(); 
})(); 

sw3.GetAnchorParam = function (paramName) {
	var oRegex = new RegExp('[#&]' + paramName + '=([^&]+)', 'i');
	try {
		var oMatch = oRegex.exec(window.top.location);
	
		if (oMatch && oMatch.length > 1)
			return decodeURIComponent(oMatch[1]);
		else
			return '';
	} catch(err) {
		return '';
	}
}

if (!Date.prototype.setSQL) {
	var re_dateSQL = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
	Date.prototype.setSQL = function (str) {
		var d = str.match(re_dateSQL);
		this.setTime(Date.UTC(d[1], d[2] - 1, d[3], d[4], d[5], d[6]));
	}
}

// http://framework.zend.com/manual/en/zend.date.constants.html#zend.date.constants.selfdefinedformats
Date.prototype.setISO8601 = function (str) {
	function pr(d, str) {
		function pad(x) {
			if (x < 10) return '0' + x;
			return x;
		}
		
		function rep(what, where, by) {
			return where.replace(what, by);
		}
	
		str = rep(/YYYY/g, str, d.getUTCFullYear());
		str = rep(/MMMM/g, str, sw3lang.lib_month[d.getUTCMonth()]);
		str = rep(/MMM/g, str, sw3lang.lib_mon[d.getUTCMonth()]);
		str = rep(/MM/g, str, pad(d.getUTCMonth() + 1));
		str = rep(/dd/g, str, pad(d.getUTCDate()));
		str = rep(/hh/g, str, pad(d.getUTCHours()));
		str = rep(/mm/g, str, pad(d.getUTCMinutes()));
		str = rep(/ss/g, str, pad(d.getUTCSeconds()));
		return str
	}
	
	var a = str.split("'");
	var x = '';
	for (var i=0; i<a.length; i++) {
		if (i%2) {
			x += a[i];
		} else {
			x += pr(this, a[i]);
		}
	}
	
	return x;
}

sw3.news = {
	
	init : function() {

		function news_load() {
			function newsSuccess(o) {
				sw3.news.d = eval('(' + o.responseText + ')');
				sw3.news.d.idx = Array();
				sw3.news.d.filtered = Array();
				var p_page = 1;
				var i_page = 1;
				var p_item = 0;
				sw3.news.d.ids = new Object;
				for (var i=0; i<sw3.news.d.items.length; i++) {
					sw3.news.d.ids[sw3.news.d.items[i].id] = i;
					sw3.news.d.idx.push(i);
					sw3.news.d.filtered.push(i);
					var x = sw3.news.d.items[i].date;
					sw3.news.d.items[i].date = new Date();
					sw3.news.d.items[i].date.setSQL(x);
					sw3.news.d.items[i].res = sw3.convertDiacritics(sw3.news.d.items[i].res);
					if (sw3.news_current == sw3.news.d.items[i].id) {
						i_page = p_page;
					}
					p_item++;
					if (p_item >= sw3.news.d.rowsPerPage) {
						p_item = 0;
						p_page++;
					}
				}
//				console.log(sw3.news.d.ids);
				sw3.news.d.totalRecords = sw3.news.d.items.length;
				sw3.news.d.filteredRecords = sw3.news.d.filtered.length;
				news_div.innerHTML = '<div id="news_pag_search"><input type="text" id="news_filter" /></div><div id="news_pag_top"></div><ol id="news_list"></ol><div id="news_pag_bot"></div>';
				if (sw3.news.d.totalRecords > sw3.news.d.rowsPerPage) {
					YAHOO.util.Event.addListener('news_filter', "keypress", sw3.news_fnTimer);
					YAHOO.util.Event.addListener('news_filter', "keydown", sw3.news_fnTimer);
				} else {
					YAHOO.util.Dom.get('news_filter').style.display = 'none';
				}
				sw3.news.paginator = new YAHOO.widget.Paginator({
					rowsPerPage		: sw3.news.d.rowsPerPage,
					totalRecords	: sw3.news.d.totalRecords,
					containers		: ['news_pag_top', 'news_pag_bot'],
					template		: '{PreviousPageLink} {CurrentPageReport} {NextPageLink}',
					pageReportTemplate: '({currentPage}/{totalPages})',
					previousPageLinkLabel: '&lt;',
					nextPageLinkLabel: '&gt;',
					alwaysVisible	: false
				});
				
				sw3.news.paginator.render();
				sw3.news.news_list = YAHOO.util.Dom.get('news_list');
				sw3.news.paginator.subscribe('changeRequest', sw3.news_handlePagination);
				sw3.news.paginator.setPage(i_page);
				if (i_page == 1) sw3.news_handlePagination(sw3.news.paginator.getState());
//console.log(sw3.news);
				if (sw3.news_current != '') {
					sw3.news_setContent('<img src="/common/images/wait.gif" align="absmiddle" />');
					YAHOO.util.Connect.asyncRequest('GET', '/' + sw3.language + '/news/arc/' + sw3.news_current + '.html', {success:contentSuccess, failure:handleFailure});
				}
			}
			
			function contentSuccess(o) {
				sw3.news_setContent(o.responseText, sw3.news.d.items[sw3.news.d.ids[sw3.news_current]]);
			}
	
			function handleFailure(o) {
			};
			
			var news_div = YAHOO.util.Dom.get('sw3_news');
			if (news_div) {
				var x = YAHOO.util.Dom.get('news_template');
				if (x) {
					sw3.news_list_template = x.innerHTML;
				} else {
					sw3.news_list_template = '<li class="$state$"><a href="#news=$id$" onClick="sw3.news_load($id$);"><div class="date">$date$</div><div class="resume">$resume$</div></a></li>';
				}
				var x = YAHOO.util.Dom.get('news_content_template');
				if (x) {
					sw3.news_content_template = x.innerHTML;
				} else {
//					sw3.news_content_template = '<img src="$image$" class="news_hasimage_$hasimage$"></div><div>$news_content$</div>';
					sw3.news_content_template = '$news_content$';
				}
				var x = YAHOO.util.Dom.get('news_format');
				if (x) {
					sw3.news_format = x.innerHTML;
				} else {
					sw3.news_format = 'dd/MM/YYYY';
				}
				news_div.innerHTML = '<img src="/common/images/pixel.gif" align="absmiddle" class="sw3_wait_big" />';
				sw3.news_current = sw3.GetAnchorParam('news');
				YAHOO.util.Connect.asyncRequest('GET', '/' + sw3.language + '/news.json', {success:newsSuccess, failure:handleFailure});
			}
		}
	
		if (!sw3.language) {
			sw3.language = navigator.language ? navigator.language : navigator.userLanguage;
			sw3.language = sw3.language.substring(0, 2);
		}
		
		news_load();
	
	}

}

sw3.news_filter = function() {
	if (sw3.news_timer) {
		clearTimeout(sw3.news_timer);
		sw3.news_timer = false;
	}
	var re_words = /([^\s]+)/g;
	var str_filter = sw3.convertDiacritics(YAHOO.util.Dom.get('news_filter').value);
	var f = str_filter.match(re_words);
//console.log(f);
	if (f) {
		var re_f = Array();
		for (var i = 0; i < f.length; i++) {
			re_f.push(RegExp(f[i], 'i'));
		}
		sw3.news.d.filtered = Array();
		for (var i = 0; i < sw3.news.d.totalRecords; i++) {
			var s = sw3.news.d.items[i].res;
			var ok = true;
			j = 0;
			while (ok && j < re_f.length) {
				ok = s.match(re_f[j]);
				j++;
			}
			if (ok) sw3.news.d.filtered.push(i);
//console.log(s, ok);
		}
	} else {
		sw3.news.d.filtered = sw3.news.d.idx.slice();
	}
	sw3.news.paginator.set('totalRecords', sw3.news.d.filtered.length); 
	sw3.news_handlePagination(sw3.news.paginator.getState());
}

sw3.news_timer = false;
sw3.news_fnTimer = function(e) {
	if (sw3.news_timer) {
		clearTimeout(sw3.news_timer);
	}
	if (e.keyCode == 13) {
		sw3.news_filter();
	} else {
		sw3.news_timer = setTimeout("sw3.news_filter()", 2000);
	}
}

var YMPReady = false;
var YMPParse = false;
var YMPReadyHandler = function () {
//	if (console) console.log("YMPReady");
	YMPReady = true;
	if (YMPParse) {
//		if (console) console.log("YMP addTracks");
		YAHOO.MediaPlayer.addTracks(document.body, null, true);
		YMPParse = false;
	}
}

if (YAHOO && YAHOO.MediaPlayer) { // must reparse if using YAHOO.MediaPlayer
	YAHOO.MediaPlayer.onAPIReady.subscribe(YMPReadyHandler);
//	if (console) console.log("use YMP");
}

sw3.news_setContent = function(data, itm) {
	function layoutSuccess(o) {
		var sw3_content = YAHOO.util.Dom.get('sw3_content');
		sw3_content.innerHTML = o.responseText;
		els = YAHOO.util.Dom.getElementsByClassName('layoutmain');
		sw3.news.content = els[0];
		setData(data);
	}
	
	function setData(data) {
		sw3.news.content.innerHTML = data;
		if (sw3.iconsonload) sw3.iconsonload(sw3.news.content);
		if (sw3.sIFR) sw3.sIFR(); // must reparse if using sIFR
		if (YAHOO && YAHOO.MediaPlayer) { // must reparse if using YAHOO.MediaPlayer
			if (YMPReady) {
//				if (console) console.log("YMP addTracks");
				YAHOO.MediaPlayer.addTracks(document.body, null, true);
			} else {
				YMPParse = true;
			}
		}
	}

	function handleFailure(o) {
	};
	
	if (itm) {
		var s = sw3.news_content_template;
		if (itm.image) {
			s = s.replace(/\$thumbnail\$/gi, '/files/news/s' + itm.id + '.jpg?m=' + itm.stamp);
			s = s.replace(/\$image\$/gi, '/files/news/b' + itm.id + '.jpg?m=' + itm.stamp);
			s = s.replace(/\$hasimage\$/gi, '1');
		} else {
			s = s.replace(/\$thumbnail\$/gi, '/common/images/pixel.gif');
			s = s.replace(/\$image\$/gi, '/common/images/pixel.gif');
			s = s.replace(/\$hasimage\$/gi, '0');
		}
		s = s.replace(/\$date\$/gi, itm.date.setISO8601(sw3.news_format));
		s = s.replace(/\$resume\$/gi, itm.resume);
		s = s.replace(/\$news_content\$/gi, data);
		data = s;
	}
	
	if (sw3.news.content) {
		setData(data);
	} else {
		YAHOO.util.Connect.asyncRequest('GET', '/layout.html', {success:layoutSuccess, failure:handleFailure});
	}
}

sw3.news_load = function(id) {
	function contentSuccess(o) {
		sw3.news_setContent(o.responseText, sw3.news.d.items[sw3.news.d.ids[id]]);
	}
	
	function handleFailure(o) {
	};
	
	if (sw3.news_current != id) {
		sw3.news_setContent('<img src="/common/images/pixel.gif" align="absmiddle" class="sw3_wait_big" />');
		sw3.news_current = id;
		sw3.news_handlePagination(sw3.news.paginator.getState());
		YAHOO.util.Connect.asyncRequest('GET', '/' + sw3.language + '/news/arc/' + sw3.news_current + '.html', {success:contentSuccess, failure:handleFailure});
	}
}

sw3.news_getContent = function(state) {
//console.log(state);
	str = '';
	if (state.records) {
		var f = sw3.news_format;
		for (var i = state.records[0]; i <= state.records[1]; i++) {
			var idx = sw3.news.d.filtered[i];
			var itm = sw3.news.d.items[idx];
			var s = sw3.news_list_template;
			var st = (sw3.news_current == itm.id ? 'off' : 'on');
			if (i == state.records[0]) st += ' first';
			if (i == state.records[1]) st += ' last';
			s = s.replace(/\$state\$/gi, st);
			s = s.replace(/\$id\$/gi, itm.id);
			s = s.replace(/\$date\$/gi, itm.date.setISO8601(f));
			s = s.replace(/\$time\$/gi, itm.date.setISO8601('hh:mm'));
			s = s.replace(/\$YYYY\$/gi, itm.date.getUTCFullYear());
			s = s.replace(/\$resume\$/gi, itm.resume);
			if (itm.image) {
				s = s.replace(/\$image\$/gi, '/files/news/s' + itm.id + '.jpg?m=' + itm.stamp);
				s = s.replace(/\$hasimage\$/gi, '1');
			} else {
				s = s.replace(/\$image\$/gi, '/common/images/pixel.gif');
				s = s.replace(/\$hasimage\$/gi, '0');
			}
			str += s;
		}
	}
	return str;
}

sw3.news_handlePagination = function (newState) {
//console.log(newState);
	// Collect page data using the requested page number
	sw3.news.news_list.innerHTML = sw3.news_getContent(newState);

	// Update the Paginator's state
	sw3.news.paginator.setState(newState);
}
