(function($) {
   
   $.fn.uiforms = function(settings) {
     var config = { 
		container: 'body'
     };
     if (settings) $.extend(config, settings);
     
     this.each(function() {
         // Add permanent classes
         $(config.container).find('form:not(.notui)').addClass('uiforms-form ui-widget ui-corner-all');
         $(config.container).find('fieldset:not(.notui)').addClass('uiforms-fieldset ui-widget-content ui-corner-all');
         $(config.container).find('legend:not(.notui)').addClass('uiforms-legend ui-widget-header ui-corner-all');
         $(config.container).find('label:not(.notui)').addClass('uiforms-label');
         $(config.container).find(':input:not(.notui)').addClass('uiforms-input ui-state-default ui-corner-all');
         $(config.container).find(':text:not(.notui)').addClass('uiforms-text');
         $(config.container).find(':password:not(.notui)').addClass('uiforms-password');
         $(config.container).find(':radio:not(.notui)').addClass('uiforms-radio');
         $(config.container).find(':checkbox:not(.notui)').addClass('uiforms-checkbox');
         $(config.container).find(':submit:not(.notui)').addClass('uiforms-submit');
         $(config.container).find(':image:not(.notui)').addClass('uiforms-image');
         $(config.container).find(':reset:not(.notui)').addClass('uiforms-reset');
         $(config.container).find(':button:not(.notui)').addClass('uiforms-button');
         $(config.container).find(':file:not(.notui)').addClass('uiforms-file');
         // Dynamically add and remove classes
         $(config.container).find(':input:not(.notui)').hover(function() {
            $(this).addClass('ui-state-hover');
         }, function() {
             $(this).removeClass('ui-state-hover');  
         });
         $(config.container).find(':input:not(.notui)').focus(function() {
            $(this).addClass('ui-state-focus');   
         });
         $(config.container).find(':input:not(.notui)').blur(function() {
            $(this).removeClass('ui-state-focus');   
         });

     });
     
     return this;
   
   };
 
})(jQuery);
