window.addEvent('domready', function() {
	
	
	$('labels').addEvent('change', function() {
		
		var key = $('labels').get('value');
		load_item(key, 'labels', 'artists', 'no');
	
	});
	
	$('artists').addEvent('change', function() {
			update_results();
	});
	
	$('genres').addEvent('change', function() {
		
		$$('#artists option').each(function(element) { element.dispose(); });	
		$$('#labels option').each(function(element) { element.dispose(); });
		load_all('artists');
		load_all('labels');
		
		var key = $('genres').get('value');
		load_item(key, 'genres', 'labels', 'no');
		load_item(key, 'genres', 'artists', 'yes');
		
	});
	
	$('key').addEvent('keyup', function() {
			update_results();
	});
	
	function load_all(item) {
		
		new Request.JSON({
			url: '/searchData.php',
			method: 'get',
			onComplete: function(data){
			
				$$('#'+item+'option').each(function(element) {
					element.dispose();
				});	

				if(item == "genres") insert_option('-- Genre --', '', item);
				else if(item == "labels") insert_option('-- Label --', '', item);
				else insert_option('-- Artist --', '', item);
					
					
					
					data.each(function(video){
				
						var itemField;
						if(video.artist) 
							itemField = video.artist;
						else if(video.genre) 
							itemField = video.genre;
						else {
							itemField = video.label;
						}
						
						insert_option(itemField, itemField, item);

					});
					
				
			}
		}).get({'key': item, 'item': 'all'});
		
		
	};
	
	function load_item(key, item, target, cascade) {
	
		new Request.JSON({
			url: '/searchData.php',
			method: 'get',
			onComplete: function(data){
			
				$$('#'+target+' option').each(function(element) {
					element.dispose();
				});				
				
				
				var preCount = 0;
				data.each(function(vid) {
					preCount++;
				});
				
				if(preCount > 1) insert_option('All', '--', target);
				
				var count = 0;
				data.each(function(video){

					var itemField;
					if(video.artist) 
						itemField = video.artist;
					else if(video.genre) 
						itemField = video.genre;
					else {
						itemField = video.label;
					}
					
					insert_option(itemField, itemField, target);
				
				count++;				
				});

				if(count == 0) load_all(target);
				

				update_results();
				
			}
		}).get({'key': key, 'item': item, 'cascade': cascade});
	};
	
	function insert_option(sOption, sValue, sTarget) {
		
		new Element('option').set({
						value: sValue,
						html: sOption
					}).inject($(sTarget, 'bottom'));
		
	};
	
	$('searchReset').addEvents({'click': function() {
		
		$$('#artists option').each(function(element) {
					element.dispose();
				});	
				
		$$('#labels option').each(function(element) {
					element.dispose();
				});
				
		$$('#genres option').each(function(element) {
					element.dispose();
				});	
				
		$('key').set('value', '');
				
		load_all('artists');
		load_all('labels');
		load_all('genres');
		
		update_results();
	},
	'mouseover': function() { $('searchReset').setStyle('text-decoration', 'underline'); },
	'mouseout': function() { $('searchReset').setStyle('text-decoration', 'none'); }
	});
	
	update_results();
	
	function update_results() {
		
		var rArtist = $('artists').get('value');
		var rLabel = $('labels').get('value');
		var rGenre = $('genres').get('value');
		var rKey = $('key').get('value');
		
		new Request.JSON({
			url: '/searchData.php',
			method: 'get',
			onComplete: function(data){
			
				//var count = 0;
				//data.each(function(video){
				//	count++;				
				//});

				$('searchCount').set('html', data.count);

			
				
			}
		}).get({'genre': rGenre, 'artist': rArtist, 'label': rLabel, 'item': 'results', 'key': rKey});
		
	};
	
	
});
