/**
 * metafilter js used to submit filter queries and load results without a page refresh (uses ajax)
 * 
 * REQUIRES: jquery 1.3
 * 
 * @author Adam Davis
 *  
 */

/**
 * defining the main object to encapsulate this functionality as a object literal function - it's how we like to do things 
 */
var metaFilter = function(){
	var test = 'this is a test';
	
	/**
	 * callback for the AJAX operation
	 */
	var callback = function(data){
		jQuery('#article-list').html(data); 
	}
	
	var submitForm = function(e)
	{
		e.stopImmediatePropagation();
		changeFilter(this);
		return false
	}
	
	/**
	 * Event Handler for the form submit event
	 * scope of this method is the form that the submit event is attached to
	 */
	var changeFilter = function(theform){
		
		//console.log(theform);
		var url = theform.attr('action');
		var senddata = theform.serialize();
		senddata+="&bare=1";
		// type of data to receive (in our case we're expecting an HTML snippet)
	    var recformat = 'html';
	    // now send the form and wait to hear back
	    jQuery.get( url, senddata, callback, recformat )
		
	}

	var createCheckAlls = function()
	{
		var insertpoints = jQuery('#metaFilter_filter div.radio-options');
		var element;
		insertpoints.each(function(i,el){
			element = jQuery('<label for="selectAll'+i+'" class="selectAllLabel"><input type="checkbox" class="selectAll" name="selectAll'+i+'" id="selectAll'+i+'" value="1" />All</label>');
			jQuery('input:checkbox',element).click(function(evt){
				if(evt.target.checked){
					jQuery('input:checkbox',jQuery(el)).attr('checked','checked'); 
				}else{
					jQuery('input:checkbox',jQuery(el)).removeAttr('checked'); 
				};
				changeFilter(jQuery(evt.target.form));
			});
			jQuery('h4',jQuery(el)).after(element);
		});
		
	}

	var chboxClick = function(e){
		if(!e.target.checked){
			jQuery('input:checkbox.selectAll',jQuery(e.target).parent().parent()).removeAttr('checked');
		}
		changeFilter(jQuery(this.form));
	}
	
	return {
		init: function(){
			$('#metaFilter_filter input:submit').remove();
			$('#metaFilter_filter input:checkbox').click(chboxClick);
			createCheckAlls();
			//changeFilter($('#metaFilter_filter'));
		}
	
	}
}()


$(function(){
	metaFilter.init();
});
