/**
 * PackageSearchForm.js - Package search form functionality
 * 
 * @author  Webstores <info at webstores dot nl>
 *          Copyright (c) Webstores internet totaalbureau <http://www.webstores.nl/>
 */
function PackageSearchForm(form) {
	this.form = jQuery(form);
	this.defaults = null;
	this.overlay = null;
	this.init();
}

PackageSearchForm.prototype = {
	/**
	 * Initialize
	 */
	init: function() {
		if(this.form.length) {
			this.defaults = {
				canvasSelector: '#packages > table',
				controlSelector: '.search-control'
			};
			
			this.overlay = jQuery('<div class="overlay">').hide().insertAfter(this.defaults.canvasSelector);
			this.addEventHandlers();
		}
	},
	
	/**
	 * Add event handlers
	 */
	addEventHandlers: function() {
		var self = this;
		
		this.form.submit(function(e) {
			e.preventDefault();
			self.sendRequest();
		});
		
		this.form.find(':input').add(':input' + this.defaults.controlSelector).change(function() {
			self.sendRequest();
		});
	},
	
	/**
	 * Request a new list of packages
	 */
	sendRequest: function() {
		var self = this;
		
		this.overlay.show();
		
		jQuery.ajax({
			url: self.form.attr('action'),
			cache: false,
			dataType: 'html',
			type: 'POST',
			data: this.form.serialize() + '&' + $('#sort-form').serialize(),
			success: function(html) {
				self.updateView(html);
			}
		});
	},
	
	/**
	 * Update the list of packages
	 * 
	 * @param {String} html The updated HTML
	 */
	updateView: function(html) {
		jQuery(this.defaults.canvasSelector).replaceWith(html);
		RowClick.initialize();
		RowHover.initialize();
		this.overlay.hide();
	}
};


/**
 * Instantiate
 */
jQuery(function() {
	var psf = new PackageSearchForm('#package-search-form');
});

