(function($){
$.fn.imageSwap = function(settings) {
	 var defaults = {	
	 			mode : 'classname', /** Av: classname, imagepath **/
	 			mutatorOn: 'On',
	 			mutatorOff: 'Off',
	 			separator: '',
	 			searchClass: ''
	 		};

	 if( settings ) {
		 $.extend(defaults, settings);
	 }
	 
	 var selectedItem = '';
	 
	 if(defaults.searchClass !== ''){
		 switch(defaults.mode){
		 	case 'bgimage':
			 $('.' + defaults.searchClass).each(function(){
				if( $(this).css('background-image').indexOf(defaults.separator + defaults.mutatorOff) !== -1){
					selectedItem = $(this).css('background-image');				
				}
			 });
		 	case 'imagepath':
		 	$('.' + defaults.searchClass).each(function(){
				if( $(this).attr('src').indexOf(defaults.separator + defaults.mutatorOff) !== -1){					
					$(this).data('selected', true);
				}
			});
			break;
		 }
	 }
	
	
	 return this.each(function() {
    	
		 switch(defaults.mode){
			case 'classname':
				 var elClass = $(this).attr('class');
				 $(this).bind({
					 mouseenter: function() {
					 	$(this).attr('class', elClass + defaults.separator  + defaults.mutatorOn);
					  },
					  mouseleave: function(){
						  $(this).attr('class', elClass);					  
					  }	
				 });
				 break;
			case 'imagepath':				 
				 if($(this).attr('src').length > 0){
					 var elPath = $(this).attr('src');					 
					 var relay = 'src';
				 }	else	{
					 var elPath = $(this).attr('href');					 
					 var relay = 'href';
				 }				
				 
				 if($.fn.preloadImages){					
					 $.fn.preloadImages(elPath.replace(defaults.separator + defaults.mutatorOn, defaults.separator + defaults.mutatorOff));
				 } 
				 
				
				 if(elPath.indexOf(defaults.separator + defaults.mutatorOn)){
					 $(this).unbind('mouseenter').unbind('mouseleave').bind({
						 mouseenter: function() {						 	
						 	$(this).attr(relay, elPath.replace(defaults.separator + defaults.mutatorOn, defaults.separator + defaults.mutatorOff));
						  },
						  mouseleave: function(){
							  if($(this).data('selected') != true) {
								  $(this).attr(relay, elPath.replace(defaults.separator + defaults.mutatorOff, defaults.separator + defaults.mutatorOn));
							  }
						  }
					 });
					 
				 }
				 break;
			case 'bgimage':				
				if($(this).css('background-image').length > 0){
					 elPath = $(this).css('background-image');
					 if(elPath.indexOf(defaults.separator + defaults.mutatorOn)){
						 $(this).unbind('mouseenter').unbind('mouseleave').bind({
							 mouseenter: function() {
							 	$(this).css('background-image', elPath.replace(defaults.separator + defaults.mutatorOn, defaults.separator + defaults.mutatorOff));
							  },
							  mouseleave: function(){								
								 if( $(this).css('background-image') != selectedItem){
									 $(this).css('background-image', elPath.replace(defaults.separator + defaults.mutatorOff, defaults.separator + defaults.mutatorOn));
								 }
							  }
						 });
					 }
				}	else	{
					throw new oteError('Unnable to load menuswap case bgimage', 2);
				}
				break;
			 };

			 
			 
			 
			   	
    });
 };
})(jQuery);
