/*	quicksearch.js | De Geluksdruif
**	Lodewijk Schutte | Low
**	v1.0 | 20091106
**	---------------------------------------------------------------------- */


$(function(){

	// Quick Search results using Ajax
	$('#searchform').each(function(){

		// Modify search parameters
		$('#searchform input[name=RP]').attr('value','ajax/searchresults');
		$('#searchform input[name=NRP]').attr('value','ajax/noresults');
	
		// Add onsubmit event to form
		$(this).submit(function(e){

			// prevent regular event
			e.preventDefault();
			
			// Is there a container div for the results? If not, create it
			if (!$('#quickresults').get(0)) {
				$('<div/>').attr('id', 'quickresults').appendTo($(this).parent());
			}
			
			// Is search term size bigger than 3? If not, show error and exit
			if ($.trim($('#keywords').attr('value')).length <= 3) {
				$('#quickresults').html(
					'<p>Sorry, de zoekterm moet langer zijn '+
					'dan 3 tekens. Probeer het nog eens.</p>'
				);
				return false;
			}
			
			// Show Loading message
			$('#quickresults').html('<p>Momentje&hellip;</p>');

			// Callback function onSuccess
			var showSearchResults = function(data) {
				
				// Check to see if result is valid
				if (data && data.results && data.results.length) {
					
					// Create list
					var ul = $('<ul/>');
					
					// Loop through results
					for (var i = 0; i < data.results.length; i++) {
						
						// This row
						var row = data.results[i];

						// Create list item
						var li = $('<li/>');
						
						// Create link
						var a  = $('<a/>').attr('href', row.url).html(row.title);
						
						// Append link to list item, append that to the list
						a.appendTo(li.appendTo(ul));

						// If we're at the 4th or last item,
						// add link to extended results and break out of loop
						if (i == 3 || i == (data.results.length - 1)) {
							var txt = 'Toon uitgebreide resultaten ('+data.total_results+')';
							var li = $('<li/>').attr('class','more');
							var a = $('<a/>').attr('href', data.url).html(txt);
							a.appendTo(li.appendTo(ul));
							break;
						}
					}
					
					// Clear the results div
					$('#quickresults').empty();
					
					// Append new results to div
					ul.appendTo('#quickresults');
					
				} else {
					
					// No valid results, show message
					$('#quickresults').html('<p>Niets gevonden&hellip;</p>');
				
				}
			
			}; // end showSearchResults()
			
			// Callback function onError
			var showError = function() {
				
				// Show error message in results div
				$('#quickresults').html('<p>Oeps! Er ging iets mis. Probeer het nog eens.</p>');

			};
			
			// Execute Ajax call
			$.ajax({
				url: $(this).attr('action'),	// Url = action from form itself
				data: $(this).serialize(),		// Serialized form data
				success: showSearchResults,		// Callback function onSuccess
				dataType: 'json',				// Returns data in JSON format
				error: showError,				// Callback function onError
				type: 'POST'					// We're adding stuff to the DB
			});

		}); // End $(this).submit();
		
	}); // End $('#searchform').each();
		
});
