var results = {
	columns: Class.empty,
	columnsOff: false,
	filterList: new Array(),
	init: function() {
		results.columns = $$('.articleCol');
		results.columns.each(function(col, n) {
			var d =  new Element('div');
			d.addClass('articleMore');
			d.innerHTML = '';
			d.injectInside(col);
		});
		$('search_articles').value = 'Search Articles';
		$('search_articles').addEvent('focus', function() {
			if (this.getValue()=='Search Articles') this.value = '';
		});
		$('search_articles').addEvent('blur', function() {
			if (this.getValue()=='') this.value = 'Search Articles';
		});
		$('sort_recent').disabled = '';
		$('sort_viewed').disabled = '';
		$('sort_recent').addEvent('click', results.sortArticles);
		$('sort_viewed').addEvent('click', results.sortArticles);
		$('articleControlForm').addEvent('submit', results.searchArticles);
		if (typeof(ps)!='undefined' && ps>'') {
			$('search_articles').value = ps;
			results.searchArticles();
		}
		results.sortArticles();
	},
	moreArticles: function(col) {
		var as = $ES('.unfiltered', results.columns[col]);
		var firston = -1;
		as.each(function(a, i) {
			if (firston==-1) {
				if (!a.hasClass('hidden')) {
					firston = i;
					a.addClass('hidden');
				}
			} else if (i>=firston && i<(firston+4)) {
				a.addClass('hidden');
			} else if (i>=(firston+4) && i<(firston+8)) {
				a.removeClass('hidden');
			} else {
				a.addClass('hidden');
			}
		});
		// wraparound
		if (firston==-1 || (firston+4)>=as.length) {
			as.each(function(a, i) {
				if (i<4) a.removeClass('hidden');
				else a.addClass('hidden');
			});
		}
	},
	sortArticles: function() {
		var as, vp, tosort;
		if (results.columnsOff) results.showColumns();
		results.columns.each(function(col, n) {
			tosort = new Array();

			// filter
			as = $ES('.article', col);
			if (results.filterList.length>0) {
				var id;
				as.each(function(a, i) {
					id = $E('a', a).getProperty('href').match(/id=(.*)/)[1];
					if (results.filterList.contains(id)) {
						a.addClass('unfiltered');
					} else {
						a.removeClass('unfiltered');
						a.addClass('hidden');
					}
				});
			} else {
				as.each(function(a) {
					a.addClass('unfiltered');
				});
			}

			// sort
			as = $ES('.unfiltered', col);
			as.each(function(a, i) {
				a.addClass('unfiltered');
				elements = $E('small', a);
				if (elements.className != 'vidlnk') {
					vp = $E('small', a).innerHTML.split(' views / posted ');
					tosort.push({
						id: i,
						views: vp[0],
						posted: vp[1]
					});
				}
			});
			if ($('sort_viewed').checked) {
				tosort.sort(results.sortByViews);
			} else {
				tosort.sort(results.sortByRecent);
			}
			
			for (var j=0; j<tosort.length; j++) {
				as[tosort[j].id].injectInside($E('.articleContent',col));
			}
			// restart pagination
			as = $ES('.unfiltered', col);
			as.each(function(a, i) {
				if (i<4) a.removeClass('hidden');
				else a.addClass('hidden');
			});
			
			// display more articles link
			var d = $E('.articleMore', col);
			if (as.length>4) {
				d.innerHTML = '<a href="#"><img src="../images/more-articles.png" alt="More Articles" border="0" width="74" height="15" /></a>';
				$E('a', d).addEvent('click', function(e) {
					e = new Event(e);
					e.stop();
					results.moreArticles(n);
				});
			} else {
				d.innerHTML = '';
			}
		});

	},
	sortByViews: function(a,b) {
		if (!a.views || !b.views) return -1;
		if (Number(a.views) < Number(b.views)) return 1;
		if (Number(a.views) > Number(b.views)) return -1;
		if (Number(a.views) == Number(b.views)) return 0;
	},
	sortByRecent: function(a,b) {
		if (!a.posted || !b.posted) return -1;
		if (a.posted < b.posted) return 1;
		if (a.posted > b.posted) return -1;
		if (a.posted == b.posted) return 0;
	},
	searchArticles: function(e) {
		if (e) {
			e = new Event(e);
			e.stop();
		}
		var q = $('search_articles').getValue();
		if (q && q!='Search Articles') {
			new Ajax('./', {
				method: 'post',
				data: 'ajax=1&q=' + q,
				onComplete: results.searchArticlesResponse
			}).request();
		} else {
			// clear search
			results.filterList = new Array();
			results.sortArticles();
		}
	},
	searchArticlesResponse: function(r) {
		if (r) {
			results.filterList = r.split('#');
			results.sortArticles();
		} else {
			// no matches
			results.filterList = new Array();
//			results.sortArticles();
			results.showNoResults();
		}
	},
	showNoResults: function() {
		results.columnsOff = true;
		$('sort_recent').disabled = 'disabled';
		$('sort_viewed').disabled = 'disabled';
		$$('.articleCol .articleContent').each(function(ea) {
			ea.setStyle('display','none');
		});
		$$('.articleCol .articleMore').each(function(ea) {
			ea.setStyle('display','none');
		});
		if (!$chk($('articleMessage'))) {
			var d = new Element('div');
			d.id = 'articleMessage';
			d.setStyles({
				borderLeft: '1px solid #ddd',
				borderRight: '1px solid #ddd',
				float: 'left',
				padding: '40px 20px',
				textAlign: 'center',
				width: '690px'
			});
			d.injectInside( $('articleList') );
		}
		$('articleMessage').innerHTML = '<p>Sorry, your search returned no results.</p><p><a href="#" onclick="return results.resetSearch()">View All</a></p>';
		$('articleMessage').setStyle('display', 'block');
	},
	showColumns: function() {
		results.columnsOff = false;
		$('sort_recent').disabled = '';
		$('sort_viewed').disabled = '';
		$$('.articleCol .articleContent').each(function(ea) {
			ea.setStyle('display','block');
		});
		$$('.articleCol .articleMore').each(function(ea) {
			ea.setStyle('display','block');
		});
		$('articleMessage').setStyle('display', 'none');
	},
	resetSearch: function() {
		$('search_articles').value = 'Search Articles';
		results.sortArticles();
		return false;
	}
}
window.addEvent('domready', results.init);