var xThumbRotator;

(function($) {

var thumb_rotator_class = '.thumbs_rotator';
var thumb_rotator_delay = 700;
var thumb_rotator_leading_zero = true;

var thumb_rotator_id_preffix = 'thumb_rotator_';	
var thumb_rotator_fn_preffix_d = '-';	
var thumb_rotator_fn_suffix_d = '.';

var changing_thumbs = new Array();

xThumbRotator = 
{
	init : function() 
	{
		var current_thumb = 0;
		$(thumb_rotator_class).each(function()
		{
			current_thumb++;
			changing_thumbs[thumb_rotator_id_preffix + current_thumb] = false;
			$(this).attr('id', thumb_rotator_id_preffix + current_thumb);
		});
		
		this.addEvents();
	},

	startContinueRotateThumb : function(thumb_id, current_count, thumb_url_preffix, thumb_url_suffix)
	{
        current_count++;
        setTimeout("xThumbRotator.continueRotateThumb('" + thumb_id + "'," + current_count + ", '" + thumb_url_preffix + "', '" + thumb_url_suffix + "')", thumb_rotator_delay);		
	},
	
	// thumb - JQuery object
	continueRotateThumb : function(thumb_id, current_count, thumb_url_preffix, thumb_url_suffix)
	{
	     if (changing_thumbs[thumb_id] != false)
	     {
	         var img = new Image();
	         var url = thumb_url_preffix + ((thumb_rotator_leading_zero && (current_count < 10)) ? '0' : '') + current_count + thumb_url_suffix;
	         
	         $(img).load(function(){
	        	 $('#'+thumb_id).attr('src', url);
	    		 xThumbRotator.startContinueRotateThumb(thumb_id, current_count, thumb_url_preffix, thumb_url_suffix);
	    	 });
	    	 
	         $(img).error(function(){
	    		 xThumbRotator.continueRotateThumb(thumb_id, 1, thumb_url_preffix, thumb_url_suffix);
	    	 });
	    	 
	    	 //$('#log_div').html(current_count);
	    	 $(img).attr('src', url);
	     }
	},	
	
	// thumb - JQuery object
	startRotateThumb : function(thumb)
	{
		 var thumb_id = thumb.attr('id');
	     if (changing_thumbs[thumb_id] == false)
	     {
			changing_thumbs[thumb_id] = thumb.attr('src');
			var thumb_url_parts = thumb.attr('src').split('/');
			var thumb_file_name = thumb_url_parts.pop();
			var thumb_file_name_parts = thumb_file_name.split(thumb_rotator_fn_suffix_d);
			
			var thumb_file_name_preffix = '';
			if (thumb_rotator_fn_preffix_d){
				 var thumb_file_name_suffix_parts = thumb_file_name_parts[0].split(thumb_rotator_fn_preffix_d);
				 thumb_file_name_suffix_parts.pop();
				 thumb_file_name_preffix = thumb_file_name_suffix_parts.join(thumb_rotator_fn_preffix_d);
			}
			
			var thumb_url_preffix = thumb_url_parts.join('/') + '/' + thumb_file_name_preffix + thumb_rotator_fn_preffix_d;
			var thumb_url_suffix = thumb_rotator_fn_suffix_d + thumb_file_name_parts[1];
			
			this.continueRotateThumb(thumb_id, 2, thumb_url_preffix, thumb_url_suffix);
	     }
	},

	// thumb - JQuery object
	stopRotateThumb : function(thumb)
	{
		 var thumb_id = thumb.attr('id');
	     if (changing_thumbs[thumb_id] != false)
	     {
		    thumb.attr('src', changing_thumbs[thumb_id]);
		    changing_thumbs[thumb_id] = false;
	     }
	},	
	
	addEvents : function() 
	{
		$(thumb_rotator_class).mouseover(function(){xThumbRotator.startRotateThumb($(this));});
		$(thumb_rotator_class).mouseout(function(){xThumbRotator.stopRotateThumb($(this));});
	},
	
	setClass : function(new_value){thumb_rotator_class = new_value;},
	setDelay : function(new_value){thumb_rotator_delay = new_value;},
	setLeadingZero : function(new_value){thumb_rotator_leading_zero = new_value;},
	
	setIdPreffix : function(new_value){thumb_rotator_id_preffix = new_value;},
	setThumbPreffixD : function(new_value){thumb_rotator_fn_preffix_d = new_value;},
	setThumbSuffixD : function(new_value){thumb_rotator_fn_suffix_d = new_value;}
};
$(document).ready(function(){xThumbRotator.init();});

})(jQuery);