﻿/**
 * jQuery.slider - a simple slider interface
 * Written by Michael Kerr (mike AT onlysport DOT co DOT nz)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2009/11/03
 *
 * @author Michael Kerr
 * @version 0.1.1
 *
 **/

jQuery.fn.extend({
	slider: function()
	{
		_args = arguments;

		return this.each(function() {
			jQuery._slider.init(this, _args);
		});
	},
	
	slider_set_pos: function ( value ) { return this.each(function() { jQuery._slider._set_pos( value ); }); }
});

jQuery.extend({
	_slider: {
		slider: '0.1.1',

		container: null,
		handle: null,

		_width: 100,
		_handle_width: 10,

		init: function(_this, _o)
		{
			var self = this;
			var options = _o[0];

			self.container = $(_this);

			if (typeof options == 'undefined') return false;

			if (typeof options.handle != 'undefined') self.handle = $(options.handle);
			if (typeof options.release != 'undefined') self._release = options.release;

			self._width = self.container.width() - 3;
			self._handle_width = self.handle.width();

			$(self.handle).draggable({ containment: $(self.container), stop: function(event, ui)
			{
				var x = parseInt( $(this)[0].style.left );
				var percent = parseInt(((x + parseInt(self._handle_width / 2)) / self._width * 100));

				if (typeof self._release == 'function') self['_release'].call(self, (percent / 100));
			}});
		},
		
		_set_pos: function ( value )
		{
			var self = this;
			var x = parseInt( value );

			self.handle.animate({ left: (x - parseInt(self._handle_width / 2)) }, 250, function()
			{
				var percent = parseInt(((x + parseInt(self._handle_width / 2)) / self._width * 100));

				percent = percent <= 0 ? 1 : percent;
				percent = percent >= 100 ? 99 : percent;

				if (typeof self._release == 'function') self['_release'].call(self, (percent / 100));
			});
		}
	}
});
