/*
	Copyright (c) 2007-2008 JB Interactive Pty. Ltd.
	All Rights Reserved
	http://www.jbinteractive.com.au/
*/

$.fn.checkbox = function (o) {

	o = $.extend({}, $.fn.checkbox.defaults, o);

	return $(this).each(function () {
		
		if (!$(this).is(':checkbox')) return;

		var el = $(this).css('display', 'none');
		var checked = el.is(':checked') ? 1 : 0;
		
		var base = $('<div />')
			.addClass(o.classBase)
			.css({
				height: o.height + 'px',
				float: 'left'
			})
			.click(function () {
				el.trigger('click');
			});
		
		var tray = $('<div />')
			.addClass(o.classTray)
			.css({
				float: 'left',
				position: 'relative',
				width: o.widthTray + 'px',
				height: o.height + 'px',
				background: 'url(' + o.imageTray + ') no-repeat'
			});
		
		var slider = $('<div />')
			.addClass(o.classSlider)
			.css({
				position: 'absolute',
				width: o.widthSlider + 'px',
				height: o.height + 'px',
				left: checked ? (o.widthTray - o.widthSlider) + 'px' : 0,
				top: 0,
				background: 'url(' + o.imageSlider + ') no-repeat'
			});
		
		base.append(tray.append(slider));
		el.after(base).appendTo(slider);
		
		el.click(function () {
			el.is(':checked') ? slider.css ('display', 'block') : slider.css ('display', 'none');
			slider.css ('left', (o.widthTray - o.widthSlider));
			slider.animate({ left: 'toggle' }, 100, 'easeinout', function () { 
					slider.css ('left', 
						el.is(':checked') ? (o.widthTray - o.widthSlider) + 'px' : '0'
					);
					slider.css ('display', 'block'); 
				});
		});
	});
	
};

$.fn.checkbox.defaults = {
	imageTray: '/img/layout/checkbox_tray.gif',
	imageSlider: '/img/layout/checkbox_slider.png',
	classBase: 'checkbox',
	classTray: 'checkbox_tray',
	widthTray: 80,
	classSlider: 'checkbox_slider',
	widthSlider: 45,
	height: 22,
	delay: 100
};

$(document).ready(function () {
	$('.toggle').checkbox();
});
