//##############################
// jQuery Custom Radio-buttons and Checkbox; basically it's styling/theming for Checkbox and Radiobutton elements in forms
// By Dharmavirsinh Jhala - dharmavir@gmail.com
// Date of Release: 13th March 10
// Version: 0.8

var elmHeight = "25";	// should be specified based on image size

jQuery.fn.extend({

	dgStyle: function()
	{
		// Initialize with initial load time control state
		$.each($(this), function(){
			var elm	= $(this).children().get(0);
			elmType = $(elm).attr("type");
			$(this).data('type', elmType);
			$(this).data('checked', $(elm).attr("checked"));
			$(this).dgClear();
		});
		$(this).mousedown(function() { $(this).dgEffect(); });
		$(this).mouseup(function() { $(this).dgHandle(); });
	},

	dgClear: function()
	{
		if($(this).data("checked") == true)
			$(this).css({backgroundPosition:"center -"+(elmHeight*2)+"px"});
		else
			$(this).css({backgroundPosition:"center 0"});
	},

	dgEffect: function()
	{
		if($(this).data("checked") == true)
			$(this).css({backgroundPosition:"center -"+(elmHeight*3)+"px"});
		else
			$(this).css({backgroundPosition:"center -"+(elmHeight)+"px"});
	},

	dgHandle: function()
	{
		
		var elm	= $(this).children().get(0);
		if (elm.value != $("input[name='"+$(elm).attr("name")+"']:checked").val() && $(this).data('type') == 'radio') {
			if($(this).data("checked") == true)
				$(elm).dgUncheck(this);
			else
				$(elm).dgCheck(this);

			$.each($("input[name='"+$(elm).attr("name")+"']"),function()
			{
				if(elm!=this) {
					$(this).dgUncheck(-1);
				}
			});
		}
		if($(this).data('type') == 'checkbox'){
			if($(this).data("checked") == true)
				$(elm).dgUncheck(this);
			else
				$(elm).dgCheck(this);
		}
	},

	dgCheck: function(div)
	{
		$(this).attr("checked",true);
		$(div).data('checked',true).css({backgroundPosition:"center -"+(elmHeight*2)+"px"});
	},

	dgUncheck: function(div)
	{
		$(this).attr("checked",false);
		if(div != -1)
			$(div).data('checked',false).css({backgroundPosition:"center 0"});
		else
			$(this).parent().data("checked",false).css({backgroundPosition:"center 0"});
	}

});






