//##############################
// 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
/*
 USAGE:
  $(document).ready(function(){
    $(":radio").behaveLikeCheckbox();
  }
*/

var elmHeight = "25"; // should be specified based on image size

// Extend JQuery Functionality For Custom Radio Button Functionality
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($(this).data("checked") == true)
    $(elm).dgUncheck(this);
  else
    $(elm).dgCheck(this);
  
  if($(this).data('type') == 'radio')
  {
    $.each($("input[name='"+$(elm).attr("name")+"']"),function()
    {
      if(elm!=this)
        $(this).dgUncheck(-1);
    });
  }
},
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"});
}
});
