/**
 * @author Orbitrix
 */
var jsonReqSitelist;

window.addEvent('domready', function() {
	color_filters('green');
	fetch_sitelist();
	
	$('input_site').addEvent('keyup', function(){ refresh_filters(); return false; });
	
	$('input_online').addEvent('change', function(){ refresh_filters();	return false; });
	
	$('input_registration').addEvent('change', function(){ refresh_filters(); return false; });
	
	$('input_rss').addEvent('change', function(){ refresh_filters(); return false; });
	
	$('input_category').addEvent('keyup', function(){ refresh_filters(); return false; });
	
	//fix for IE8 not handling css rules properly
	$('prompt_background').set('styles', {
		'opacity': '0'
	});
});

function refresh_filters() {
		if(jsonReqSitelist) { jsonReqSitelist.cancel(); }
		$('input_page').set('value', 1);
		
		if(fetch_sitelist() != 0) {
			color_filters('green');
		} else {
			color_filters('red');
		}
}

function clear_filters() {
	$('input_site').set('value', '');
	$('input_online').set('value', '');
	$('input_registration').set('value', '');
	$('input_rss').set('value', '');
	$('input_category').set('value', '');
	$('input_page').set('value', 1);
	color_filters();
	fetch_sitelist();
}

function color_filters(color) {
	var site         = $('input_site').get('value');
	var online       = $('input_online').get('value');
	var registration = $('input_registration').get('value');
	var rss          = $('input_rss').get('value');
	var category     = $('input_category').get('value');
	var page         = $('input_page').get('value');
	
	var active_fitler = 0;
	
	if(site.trim() != '') {
		$('input_site').set('class', 'row_' + color);
		active_fitler = 1;
	} else {
		$('input_site').erase('class');
	}
	
	if(online != '') {
		$('input_online').set('class', 'row_' + color);
		active_fitler = 1;
	} else {
		$('input_online').erase('class');
	}
	
	if(registration != '') {
		$('input_registration').set('class', 'row_' + color);
		active_fitler = 1;
	} else {
		$('input_registration').erase('class');
	}
	
	if(rss != '') {
		$('input_rss').set('class', 'row_' + color);
		active_fitler = 1;
	} else {
		$('input_rss').erase('class');
	}
	
	if(category.trim() != '') {
		$('input_category').set('class', 'row_' + color);
		active_fitler = 1;
	} else {
		$('input_category').erase('class');
	}
	
	if(active_fitler) {
		display_clearfilter();
	} else {
		hide_clearfilter();	
	}
}

function set_category(category) {
	var new_value;
	if($('input_category').get('value') != "") {
		new_value = $('input_category').get('value') + ', ' + category.trim();
	} else {
		new_value = category.trim();
	}
	 
	$('input_category').set('value', new_value);
	$('input_page').set('value', 1);
	color_filters('green');
	fetch_sitelist();
}

function remove_category(category) {
	var new_value;
	
	new_value = $('input_category').get('value').trim();
	
	if((new_value.indexOf(', ' + category) != -1) || (new_value.indexOf(', ' + category.toLowerCase()) != -1)) {
		new_value = new_value.replace(', ' + category, '');
		new_value = new_value.replace(', ' + category.toLowerCase(), '');
	}
	if((new_value.indexOf(category + ', ') != -1) || (new_value.indexOf(category.toLowerCase() + ', ') != -1)) {
		new_value = new_value.replace(category + ', ', '');
		new_value = new_value.replace(category.toLowerCase() + ', ', '');
	}
	if((new_value.indexOf(category) != -1) || (new_value.indexOf(category.toLowerCase()) != -1)) {
		new_value = new_value.replace(category, '');
		new_value = new_value.replace(category.toLowerCase(), '');
	}

	$('input_category').set('value', new_value);
	color_filters();
	fetch_sitelist();
}

function display_clearfilter() {
	$('torrentlist_clearfilter').set('html','<a href="javascript:clear_filters();">Clear Filter(s)</a>');
	$('torrentlist_clearfilter').setStyle('display', 'block');
}
function hide_clearfilter() {
	$('torrentlist_clearfilter').set('html',"");
	$('torrentlist_clearfilter').setStyle('display', 'none');
}

function fetch_sitelist() {
	var site         = $('input_site').get('value');
	var online       = $('input_online').get('value');
	var registration = $('input_registration').get('value');
	var rss          = $('input_rss').get('value');
	var category     = $('input_category').get('value');
	var page         = $('input_page').get('value');
	
	jsonReqSitelist = new Request.JSON({url:'ajax/sitelist_json.php?site=' + site + '&online=' + online + '&registration=' + registration + '&rss=' + rss + '&category=' + category + '&page=' + page, onComplete: function(jsonObject){
																																																					 
		var table_body = $('sitelist_table_body');
		
		table_body.empty();		

		var rowcount = 0;
		//alert(jsonObject[0].url);
		$each(jsonObject, function(row, index){
			if(index != 6969) {
				var rowclass = rowcount % 2;
				
				//fix for chrome browser not iterating through the jsonObject in the right order
				row = jsonObject[rowcount];
				
				var table_row  = new Element('tr', {'class': 'row_' + rowclass.toString()});	
					
					//site column
				var td_site = new Element('td', {'class': 'col_title'});
					var td_site_a = new Element('a', {'href': row.url, 'target': '_blank'});
						td_site_a.set('html', row.title);
						td_site_a.inject(td_site);
					td_site.inject(table_row);
				
					//status column
				var td_online = new Element('td', {'class': 'col_online'});
						td_online.set('html', '<span class="' + row.online + '">' + row.online + '</span>');
					td_online.inject(table_row);
					
					//registration column
				var td_registration = new Element('td', {'class': 'col_registration'});
					if(row.registration == "No") {
						td_registration.set('html', "<strong>" + row.registration + "</strong>"); 
					} else { 
						td_registration.set('html', row.registration); 
					}
					td_registration.inject(table_row);
					
					//rss column
				var td_rss = new Element('td', {'class': 'col_rss'});
					if(row.rss == "Yes") { 
						td_rss.set('html', '<div class="rss18icon" onClick="prompt_control(\'display\', \'rss\', \'' + row.id + '\')"><a href="#" onClick="javascript:return false;">' + row.rss + '</a></div>');
					} else {
						td_rss.set('html', row.rss);
					}
					td_rss.inject(table_row);
					
					//category column 
				var td_category = new Element('td', {'class': 'col_category'});
					var category_string = row.category.toString();
					var category_array = category_string.split(',');
						
						category_string = "";
						$each(category_array, function(cat, index){
							if(cat.indexOf('<B>') == -1) {
								category_string = category_string + '<a href="javascript:set_category(\'' + cat.trim() + '\')">' + cat.trim() + '</a>, ';
							} else {
								var filter_start = cat.indexOf('<B>') + 3;
								var filter_end = cat.indexOf('</B>');
								
								var clean_cat = cat.substring(filter_start, filter_end);
								
								category_string = category_string + '<a href="javascript:remove_category(\'' + clean_cat.trim() + '\')">' + cat.trim() + '</a>, ';
							}
						});
						category_string = category_string.substring(0, category_string.length - 2);
						
					td_category.set('html', '<span>' + category_string + '</span>');
					td_category.inject(table_row);
	
				table_row.inject(table_body);
				
				rowcount++;
			} else {
				if(rowcount > 0) { //if there are results, display number of pages, else empty pages div
					var page_text = "Page " + row.page + " of " + row.page_count;
					var left_arrow;
					var right_arrow;
					
					if(row.page == 1) {
						left_arrow = '<span class="back24icondisabled"><span>&lt;</span></span> '
					} else {
						left_arrow = '<span class="back24icon" id="page_prev"><a href="#">&lt;</a></span> ';
					}
					
					if(row.page == row.page_count) {
						right_arrow = ' <span class="next24icondisabled"><span>&gt;</span>'
					} else {
						right_arrow = ' <span class="next24icon" id="page_next"><a href="#">&gt;</a></span>';
					}
	
					page_text = left_arrow + page_text + right_arrow;
					
					
					$('pages').set('html', page_text);
	
					
	
					if($('page_next')) {
						$('page_next').addEvent('click', function(){
							if(jsonReqSitelist) { jsonReqSitelist.cancel(); }
							$('input_page').set('value', parseInt($('input_page').get('value')) + 1);
							fetch_sitelist();
							return false; // equivalent to stopPropagation.
						});
					}
					if($('page_prev')) {
						$('page_prev').addEvent('click', function(){
							if(jsonReqSitelist) { jsonReqSitelist.cancel(); }
			
							$('input_page').set('value', parseInt($('input_page').get('value')) - 1);
					
							fetch_sitelist();
							return false; // equivalent to stopPropagation.
						});
					}
				} else {
					$('pages').empty();
					$('sitelist_table_body').set('html', '<tr><td colspan="5" class="col_error">No results were found matching your criteria!  Please <a href="javascript:clear_filters();">clear your filters</a> and try again.</td></tr>');
					color_filters('red');
				}
			}
		});
	}});
	
	jsonReqSitelist.send();
}
