Event.observe(window, 'load', function(event) {
	var form = $('advancedSearchForm');

	if (form) {
		refreshCriteria();
	}
});

function showSearchCriteria(criteria) {
	$('search-form-id').addClassName('search-page');
	$('search-form-id').show();
	refreshCriteria(criteria);
}

function refreshCriteria() {
	refreshCriteria('');
}

function refreshCriteria(criteria) {
	var colors = [];
	var habitats = [];
	var regions = [];
	var sizes = [];
	var fruits = [];
	var leafs = [];
	var months = [];
	var wingShapes = [];
	var songOrCallTypes = [];
	var songOrCallPatterns = [];
	var locomotions = [];
	
	var charArrays = {};
	
	var text = $('textCriteriaId');
	var select = $('categoryId');
	var subCategorySelect = $('subCategoryId');
	var criteriaDiv = $('additionalCriteria');
	
	if (criteria) {
		criteria = eval(criteria);
		
		if (text && criteria.textCriteria) {
			text.value = criteria.textCriteria;
		}
		
		if (typeof(criteria.colors) == 'string') {
			colors = new Array(criteria.colors);
		} else {
			colors = criteria.colors;
		}
		
		if (typeof(criteria.habitats) == 'string') {
			habitats = new Array(criteria.habitats);
		} else {
			habitats = criteria.habitats;
		}
		
		if (typeof(criteria.regions) == 'string') {
			regions = new Array(criteria.regions);
		} else {
			regions = criteria.regions;
		}
		
		if (typeof(criteria.sizes) == 'string') {
			sizes = new Array(criteria.sizes);
		} else {
			sizes = criteria.sizes;
		}
		
		if (typeof(criteria.fruits) == 'string') {
			fruits = new Array(criteria.fruits);
		} else {
			fruits = criteria.fruits;
		}
		
		if (typeof(criteria.leafs) == 'string') {
			leafs = new Array(criteria.leafs);
		} else {
			leafs = criteria.leafs;
		}
		
		if (typeof(criteria.months) == 'string') {
			months = new Array(criteria.months);
		} else {
			months = criteria.months;
		}
		
		if (typeof(criteria.wingShapes) == 'string') {
			wingShapes = new Array(criteria.wingShapes);
		} else {
			wingShapes = criteria.wingShapes;
		}
		
		if (typeof(criteria.songOrCallTypes) == 'string') {
			songOrCallTypes = new Array(criteria.songOrCallTypes);
		} else {
			songOrCallTypes = criteria.songOrCallTypes;
		}
		
		if (typeof(criteria.songOrCallPatterns) == 'string') {
			songOrCallPatterns = new Array(criteria.songOrCallPatterns);
		} else {
			songOrCallPatterns = criteria.songOrCallPatterns;
		}
		
		if (typeof(criteria.locomotions) == 'string') {
			locomotions = new Array(criteria.locomotions);
		} else {
			locomotions = criteria.locomotions;
		}
	}
	
	var isFull = false;
	if ($('isFull')) {
		isFull = true;
	}
	
	AdvancedSearchDWRController.refreshSearchFields(select.value, isFull, function(json) {
		subCategorySelect.innerHTML = '';
		criteriaDiv.innerHTML = '';
		json = eval(json);
		$A(json).each(function(sub) {
			var mname = sub.key;
			
			if (mname != 'subcategories' && mname != 'characteristics') {
				criteriaDiv.appendChild(Builder.node('h3', {className : 'line'}, mname.capitalize()));
			}
						
			
			$A(sub.value).each(function(c) {
				if (mname == 'subcategories') {
					var o = Builder.node('option', {value : c.key}, c.value);
					subCategorySelect.appendChild(o);
				} else {
					var check;
					if (mname == 'characteristics'){
						var name = c.name;
						var localName = c.localName;
						criteriaDiv.appendChild(Builder.node('h3', {className : 'line'}, localName.capitalize()));
						
						$A(c.values).each(function(char){
							check = Builder.node('input', {name : name, type : 'checkbox', className : 'check', value : char.key});
							criteriaDiv.appendChild(check);
							criteriaDiv.appendChild(Builder.node('span', {}, ' ' + char.value));
							criteriaDiv.appendChild(Builder.node('br'));
						});
					}else{
						
						if (!check) {
							check = Builder.node('input', {name : mname, type : 'checkbox', className : 'check', value : c.key});
						}
						
						criteriaDiv.appendChild(check);
						criteriaDiv.appendChild(Builder.node('span', {}, ' ' + c.value));
						criteriaDiv.appendChild(Builder.node('br'));
					}
				}
			});
		});
		
		if (criteria && criteria.subCategoryId) {
			subCategorySelect.value = criteria.subCategoryId;
		} else {
			subCategorySelect.value = -1;
		}
	});
	
	return false;
}

