/**
* Hash Filters: a jQuery Plugin
* @author: Mark James
*
*/
if(typeof jQuery != 'undefined') {
	jQuery(function($) {
		$.fn.extend({
			hashvalues: function(options) {
				var settings = $.extend({}, $.fn.hashvalues.defaults, options);
				var hashopts = {};

				var result = this.each(
					function() {
						if($.fn.jquery < '1.2.6') {return;}
						var $t = $(this);
						var o = $.metadata ? $.extend({}, settings, $t.metadata()) : settings;

						var n = $t.attr('name').replace('[]','');
						if( !hashopts[n] ) {
							hashopts[n] = [];
						}
						hashopts[n].push($t.val());
						
					}
				);
				
				var hash = settings['prefix'];
				for( var key in hashopts ) {
					
					// Set the prefix
					hash = hash + '&' + key + '=';
					
					// Add in the values
					var y = 0;
					for( var k in hashopts[key] ) {
						hash = hash + (y++ ? ',' : '' ) + hashopts[key][k];
					}
				}

				$.hashvalues.hash( hash );

				return result;
				
			}
		});

		$.fn.hashvalues.defaults = {
			'prefix': ''
		};
		
		$.hashvalues = {};
		$.hashvalues.hash = function( val ) {
			if( undefined === val ) {
				return window.location.hash;
			} else {
				window.location.hash = val;
			}
			
		}

		$.hashvalues.prefix = function() {
			var bits = window.location.hash.split('&');
			if( bits.length ) {
				return bits[0];
			} else {
				return '';
			}
		}

		$.hashvalues.values = function( key ) {
			var bits = window.location.hash.split('&');
			if( bits.length ) {
				for( var i in bits ) {
					keybits = bits[i].split('=');
					if( keybits[0] && keybits[0] == key ) {
						return keybits[1].split(',');
					}
				}
			} else {
				return [];
			}
		}

	});
}