code: function(pluginName, defaultOptions) {
  		
  		var self = this,
  			options = $.extend(true, {}, defaultOptions);
  		
  		// if the plugin options were isolated in a property named after the
  		// plugin, use them (prevents conflicts with other plugins)
  		var pluginOptions = self.__options[pluginName];
  		
  		// if not, try to get them as regular options
  		if (!pluginOptions){
  			
  			pluginOptions = {};
  			
  			$.each(defaultOptions, function(optionName, value) {
  				
  				var o = self.__options[optionName];
  				
  				if (o !== undefined) {
  					pluginOptions[optionName] = o;
  				}
  			});
  		}
  		
  		// let's merge the default options and the ones that were provided. We'd want
  		// to do a deep copy but not let jQuery merge arrays, so we'll do a shallow
  		// extend on two levels, that will be enough if options are not more than 1
  		// level deep
  		$.each(options, function(optionName, value) {
  			
  			if (pluginOptions[optionName] !== undefined) {
  				
  				if ((		typeof value == 'object'
  						&&	!(value instanceof Array)
  						&&	value != null
  					)
  					&&
  					(		typeof pluginOptions[optionName] == 'object'
  						&&	!(pluginOptions[optionName] instanceof Array)
  						&&	pluginOptions[optionName] != null
  					)
  				) {
  					$.extend(options[optionName], pluginOptions[optionName]);
  				}
  				else {
  					options[optionName] = pluginOptions[optionName];
  				}
  			}
  		});
  		
  		return options;
  	}
docs: Meant for plugins to get their options
  
  @param {string} pluginName The name of the plugin that asks for its options
  @param {object} defaultOptions The default options of the plugin
  @returns {object} The options
  @protected