(function($){
	
	var baseClass = 'sg-admin-icons',
		iconClass = 'sg-icon ui-corner-all',
		iconPictClass = 'ui-icon',
		iconDefaultClass = 'ui-state-default',
		iconHoverClass = 'ui-state-hover',
		
		iconSelector = '.sg-icon';
	
	$.widget( "sg.sg_admin_icons", {
		options: { 
			buttons: {},
			buttons_setup: {}
		},
	 
		_create: function() {			
			var $widget = this;
			var $wrapper = this.element;
			var $options = this.options;
			
			// source icon
			var $src_icon = $wrapper.children();
			
			// setup wrapper
			$wrapper.empty();
			$wrapper.addClass( baseClass );
			
			// setup icons
			$src_icon.each(function(){
				var $iconClass = iconClass+' '+iconDefaultClass+' '+$(this).attr('class');
				var $iconPictClass = iconPictClass+' '+$(this).html();
				var $tag_icon = $('<span class="'+$iconClass+'"><span class="'+$iconPictClass+'"></span></span>');
				$wrapper.append( $tag_icon );
			});
			
			// on icon hover
			var $tag_icon = $wrapper.find( iconSelector );
			$tag_icon.hover(function(){
				$(this).removeClass( iconDefaultClass );
				$(this).addClass( iconHoverClass );
			},function(){
				$(this).removeClass( iconHoverClass );
				$(this).addClass( iconDefaultClass );
			});
			
			// SETUP AUTO BUTTONS
			$wrapper.sg_autobuttons({
				buttons: $options.buttons,
				buttons_setup: $options.buttons_setup
			});
		},
		
		showIcons: function() {
			this.element.removeClass('ui-helper-hidden');
		},
		
		hideIcons: function() {
			this.element.addClass('ui-helper-hidden');
		}
	});
}(jQuery));
