(function ($)
{    
	var settings = 
	{   
		release_id : 'opinion-widget-release',
		release_class : 'thickbox',
		release_title : 'Say what you think about us',
		release_href  : '/opinion/?KeepThis=true&amp;TB_iframe=true&amp;height=600&amp;width=700', 
		widget_id : 'opinion-widget',
		widget_class_on : 'opinion-widget-on',
		widget_class_off : 'opinion-widget-off',
		widget_width_off: 60,
		widget_width_on: 274,
		widget_animate_time : 500
	}

	var data = 
	{
		active:false,
		status:0
	}

	var methods = {
		init : function(options)
		{   
			return this.each(function()
			{
				if (data.active == false)
				{
					data.active = true;

					if (options)
					{   
						$.extend(settings, options);
					}

					var div = $('<div/>')
					.attr('id',settings.widget_id)
					.attr('class',settings.widget_class_off)
					.css('width',settings.widget_width_off);

					var a = $('<a/>')
					.attr('class',settings.release_class)
					.attr('title',settings.release_title)
					.attr('href',settings.release_href)
					.attr('id',settings.release_id);

					div.click(methods.animate);
					a.click(methods.animate);

					$(this).append(div.append(a));
				} 
			})
		},
		animate : function()
		{
			var w = $('#'+settings.widget_id);
			if (data.status == 0)
			{
				data.status ++;
				w.removeClass(settings.widget_class_off).addClass(settings.widget_class_on).animate(
				{width: settings.widget_width_on}, 
				settings.widget_animate_time);
			}
			else
			{
				data.status --;
				w.animate(
					{width: settings.widget_width_off}, 
					settings.widget_animate_time, 
					function()
					{
						w.removeClass(settings.widget_class_on).addClass(settings.widget_class_off);
					});
			}
			return this;
		}
	}

	$.fn.opinion = function(method) 
	{

		if (methods[method]) 
		{
			return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
		} 
		else if ( typeof method === 'object' || ! method )
		{ 
			return methods.init.apply( this, arguments );
		} 
		else 
		{
			$.error( 'Method ' +  method + ' does not exist on jQuery.opinion' );
		} 
	}
})(jQuery);
