// heavily modified from http://be.twixt.us/jquery/formSubmission.php

$.fn.ajaxSubmit = function(){
	this.submit(function(){
		var params = {};
		var destination = '#' + $(this).parent().attr('id').replace('option_','result_');
		
		// see if we need to copy any table limits
		$(destination).find('.ows_select').each(function(){
			params[this.name] = this.value;
		});
		
		$(this)
		.find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea") 
		.filter(":enabled") 
		.each(function() {
			var id = this.name || this.id;
			
			if (!id){
				if ($(this.parentNode).attr('disabled'))
					return;
				id = this.parentNode.name || this.parentNode.id;
			}
			
			if (id.indexOf('[]') != -1){
				if (params[id] === undefined)
					params[id] = new Array();
				params[id][params[id].length] = this.value;
			}else
				params[id] = this.value;
		});
		
		if ($(this).find("input[@class='show_common_limits']").size() > 0){
			$('#optional_limits')
			.find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea") 
			.filter(":enabled") 
			.each(function() {
				var id = this.name || this.id;
				
				if (!id){
					if ($(this.parentNode).attr('disabled'))
						return;
					id = this.parentNode.name || this.parentNode.id;
				}
				
				if (id.indexOf('[]') != -1){
					if (params[id] === undefined)
						params[id] = new Array();
					params[id][params[id].length] = this.value;
				}else
					params[id] = this.value;
			});
		}
		
		params['ajax'] = 'xaja';

		$.post(this.getAttribute("action"),params,function(data){
			// sadly, does not execute scripts
			$(destination).html(data);
			$("#loading").addClass("loaded").html("Loaded results.");
			
			$(destination + " tr").each(function(){
				$(this).mouseout(function(){$(this).removeClass('highlighted');});
				$(this).mouseover(function(){$(this).addClass('highlighted');});
			});
			
			setTimeout(function(){ $("#loading").fadeOut(1000).removeClass("loaded"); },3000);
		});
		$("#loading").fadeIn(500);
		$("#loading").html("<div class=\"loading_img\">&nbsp;</div>Loading filter results...");
		$(destination).html('');
		return false;
	});
};


