/* CREDITS
 * ----------------------------------------------------------
 * Title:		Handle specific search form
 * Author:		Dirk Bonhomme <dirk@inventis.be>
 * Date:		08/12/2009
 * Last Edit:	08/12/2009 [Dirk Bonhomme]
 * ----------------------------------------------------------
 * Inventis - Web Architects - We design the Web!
 * www.inventis.be
*/
window.addEvent('domready', function(){

	// Show/hide default text in input fields
	$$('div.search_module .empty').addEvent('focus', function(e){
		if(e.target.hasClass('empty')){
			e.target.removeClass('empty');
			e.target.value = '';
		}	
	});
	
	// Add or remove empty style to selectboxes
	$$('div.search_module select').addEvent('change', function(e){
		if(e.target.value){
			e.target.removeClass('empty');
		}else{
			e.target.addClass('empty');
		}
	});
	
	// Clear default values and disable unused fields on form submit
	$$('div.search_module form').pop().addEvent('submit', function(e){
	
		// Clear default values
		$$('div.search_module input.empty').each(function(field){
			field.value = '';
		});
		
	});
	
	// Add listeners for radio selections
	$$('div.search_module input[name=category]').addEvent('click', function(e){
		requestSearchModuleData(e.target.value, $$('div.search_module select[name=item]').pop());
	});

});

var searchModuleCache = {};

function requestSearchModuleData(id, targetField, type){
	
	// Clear and disable target field
	while(targetField.firstChild){
		targetField.removeChild(targetField.firstChild);
	}
	targetField.disabled = true;
	targetField.addClass('empty');
		
	// Request or fetch from cache
	var cacheKey = id
	var emptyText = '(kies een artikel)';
	if(data = searchModuleCache[cacheKey]){
		fillSearchModuleSelect(targetField, data, emptyText);
	}else{
		targetField.options[0] = new Option('laden...');
		new Request.JSON({
			url: '/bodymind/jsonbycategory',
			data: {
				category_id: id
			},
			onSuccess: function(result){
				searchModuleCache[cacheKey] = result;
				fillSearchModuleSelect(targetField, result, emptyText);
			}
		}).post();
	}
}

function fillSearchModuleSelect(field, result, emptyText){
	if(result.data.length > 0){
		
		// Add first item
		field.options[0] = new Option(emptyText, '', true);
		
		// Fill selectbox
		for(i = 0; i < result.data.length; i++){
			field.appendChild(new Element('option', {
				html: result.data[i].title,
				value: result.data[i].id
			}));
		}
	
		// Enable selectbox
		field.disabled = false;
		field.removeClass('empty');
	}else{
		field.options[0] = new Option('geen gegevens...');
	}	
	
}
