

(function($) {
	$.fn.RoundAbout = function(options){
		var options = jQuery.extend({
		  RoundAboutDirection: 'left',
		  Speed: '50'
		},options);

		return this.each(function() {
			var Timer = options.RoundAboutDirection + Math.floor(Math.random() * 40);
			var speed = parseInt(options.Speed);
			var object = $(this);
			var ElementSize = $(this).find("li").size();
			var SumaElement = 0;
			var elementParentHW = 0;
			var Direction = "";
			
			switch(options.RoundAboutDirection)
			{
				case "left":
					$(object).find(" > ul").css({position:'absolute', left:'0px', top:'0px'});
					Direction = "horizontal";
					elementParentHW = parseInt($(this).width()) * 5;
				break;
				case "right":
					$(object).find(" > ul").css({position:'absolute', right:'0px', top:'0px'});
					Direction = "horizontal";
					elementParentHW = parseInt($(this).width()) * 5;
				break;
				case "top":
				case "bottom":
					$(object).find(" > ul").css({position:'absolute', left:'0px', bottom:'0px'});
					Direction = "vertical";
					elementParentHW = parseInt($(this).height()) * 5;
				break;
			}
			for(var i=0; i<ElementSize; i++)
			{
				if(Direction == "horizontal"){
					SumaElement += parseInt($(this).find("li:eq("+i+")").width()) 
						+ ($(this).find("li:eq("+i+")").css("paddingLeft") != "" ? parseInt($(this).find("li:eq("+i+")").css("paddingLeft")) : 0)
						+ ($(this).find("li:eq("+i+")").css("paddingLeft") != "" ? parseInt($(this).find("li:eq("+i+")").css("paddingRight")) : 0)
						+ ($(this).find("li:eq("+i+")").css("paddingLeft") != "" ? parseInt($(this).find("li:eq("+i+")").css("marginLeft")) : 0)
						+ ($(this).find("li:eq("+i+")").css("paddingLeft") != "" ? parseInt($(this).find("li:eq("+i+")").css("marginRight")) : 0);
				}else if(Direction == "vertical"){
					SumaElement += parseInt($(this).find("li:eq("+i+")").height()) 
						+ ($(this).find("li:eq("+i+")").css("paddingLeft") != "" ? parseInt($(this).find("li:eq("+i+")").css("paddingTop")) : 0)
						+ ($(this).find("li:eq("+i+")").css("paddingLeft") != "" ? parseInt($(this).find("li:eq("+i+")").css("paddingBottom")) : 0)
						+ ($(this).find("li:eq("+i+")").css("paddingLeft") != "" ? parseInt($(this).find("li:eq("+i+")").css("marginTop")) : 0)
						+ ($(this).find("li:eq("+i+")").css("paddingLeft") != "" ? parseInt($(this).find("li:eq("+i+")").css("marginBottom")) : 0);
				}else{
					alert("left, right, top, bottom");
					return false;
				}
				
			}
			if(Direction != "")
				ClonGalery(options.RoundAboutDirection, elementParentHW, SumaElement);
			
			function ClonGalery(Direction, elementParentHW, SumaElement){
				$(object).find(" > ul").hover(function(){
					clearTimeout(Timer);
					Timer = null;										  
				}, function(){
					switch(Direction)
					{
					case "left":
					case "right":
						Timer = setTimeout(function (){ ScrullMove($(object).width(), SumaElement, Direction) }, speed);
					break;
					case "top":
					case "bottom":
						Timer = setTimeout(function (){ ScrullMove($(object).height(), SumaElement, Direction) }, speed);
					break;
					}
				});
				if(SumaElement >= elementParentHW)
				{
					switch(Direction)
					{
					case "left":
					case "right":
						$(object).find(" > ul").css("width", SumaElement);
						Timer = setTimeout(function (){ ScrullMove($(object).width(), SumaElement, Direction) }, speed);
					break;
					case "top":
					case "bottom":
						$(object).find(" > ul").css("height", SumaElement);
						Timer = setTimeout(function (){ ScrullMove($(object).height(), SumaElement, Direction) }, speed);
					break;
					}
				}else{
					switch(Direction)
					{
					case "left": 
					case "right":
						var nn = Math.floor(elementParentHW / SumaElement + 1);
						SumaElement = 0;
						var objectHTML = $(object).find(" > ul").html();
						for(i=0; i<nn; i++)
						{
							$(object).find(" > ul").append(objectHTML);
						}
						for(var n=0; n<$(object).find(" > ul > li").size(); n++)
						{
							SumaElement += parseInt($(object).find(" > ul > li:eq(" + n + ")").width())
								+ ($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft") != "" ? parseInt($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft")) : 0)
								+ ($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft") != "" ? parseInt($(object).find(" > ul > li:eq(" + n + ")").css("paddingRight")) : 0)
								+ ($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft") != "" ? parseInt($(object).find(" > ul > li:eq(" + n + ")").css("marginLeft")) : 0)
								+ ($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft") != "" ? parseInt($(object).find(" > ul > li:eq(" + n + ")").css("marginRight")) : 0);
						}
						$(object).find(" > ul").css("width", SumaElement);
						Timer = setTimeout(function (){ ScrullMove($(object).width(), SumaElement, Direction) }, speed);
					break;
					case "top":
					case "bottom":
						var nn = Math.floor(elementParentHW / SumaElement + 1);
						SumaElement = 0;
						var objectHTML = $(object).find(" > ul").html();
						for(i=0; i<nn; i++)
						{
							$(object).find(" > ul").append(objectHTML);
						}
						for(var n=0; n<$(object).find(" > ul > li").size(); n++)
						{
							SumaElement += parseInt($(object).find(" > ul > li:eq(" + n + ")").height())
								+ ($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft") != "" ? parseInt($(object).find(" > ul > li:eq(" + n + ")").css("paddingTop")) : 0)
								+ ($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft") != "" ? parseInt($(object).find(" > ul > li:eq(" + n + ")").css("paddingBottom")) : 0)
								+ ($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft") != "" ? parseInt($(object).find(" > ul > li:eq(" + n + ")").css("marginTop")) : 0)
								+ ($(object).find(" > ul > li:eq(" + n + ")").css("paddingLeft") != "" ? parseInt($(object).find(" > ul > li:eq(" + n + ")").css("marginBottom")) : 0);
						}
						$(object).find(" > ul").css("height", SumaElement);
						Timer = setTimeout(function (){ ScrullMove($(object).height(), SumaElement, Direction) }, speed);
					break;
					}
				}
			}
			
			function ScrullMove(elementParentHW, SumaElement, Direction)
			{
				if((SumaElement - elementParentHW) > (parseInt($(object).find(" > ul").css(Direction)) * -1))
				{
					$(object).find(" > ul").css(Direction, (parseInt($(object).find(" > ul").css(Direction)) - 1) + "px");
				}else{
					$(object).find(" > ul").css(Direction, "0px");
				}
				Timer = setTimeout(function (){ ScrullMove($(object).width(), SumaElement, Direction) }, speed);
			}
			
			
			
		});
	}
})(jQuery);

