(function($){  
	$.fn.slide = function(options){
		var defaults = {  
			Width: 500,
			Height: 500,
			Speed: 1500,
			NextClass: "Next",
			PrevClass: "down-arrow",
			Direction: "vertical",
			Offset: 1,
			Restart: false,
			RestartSpeed: options.Speed * 4,
			Wobble: false
		};
	  var options = $.extend(defaults, options);  
		return this.each(function(){
			var obj = $(this);
			$("#channels").find("."+options.NextClass).css({'cursor':'default'});
			$("#channels").find("."+options.PrevClass).css({'cursor':'default'});


			$("li",obj).css("height", options.Height);

			if(options.Direction == "vertical"){
				var Max = parseInt(($("li", obj).length - options.Offset) * options.Height);
			} else {
				var Max = parseInt(($("li", obj).length - options.Offset) * options.Width);
			}
			var Low = "-"+(Max - parseInt($(obj).width()) - options.Width);
			if(options.Direction !== "vertical"){
				$("ul",obj).css("width", (Max+100) + (options.Offset * options.Width)+"px");
				$("li",obj).css("float", "left");
			}
			checkAvailable();
			$("."+options.NextClass).click(function(){ doMove("next"); setTimeout(checkAvailable, 500); return false;});
			$("."+options.PrevClass).click(function(){ doMove("prev"); setTimeout(checkAvailable, 500); return false; });
			function checkAvailable() {
				if(options.Direction == "vertical"){
					var CssAttr = "margin-top";
				} else {
					var CssAttr = "margin-left";
				}
				var Curr = $("ul", obj).css(CssAttr);
				var Curr = parseInt(Curr.substr(0,Curr.length-2));
				if(Curr > Low){
					$(".weather").find("."+options.NextClass).css({'display':''});
					$("#channels").find("."+options.NextClass).css({'cursor':'pointer'});
		
				} else {
					$(".weather").find("."+options.NextClass).css({'display':'none'});
					$("#channels").find("."+options.NextClass).css({'cursor':'default'});
				
				}
				if(Curr < 0){
					$(".weather").find("."+options.PrevClass).css({'display':''});
					$("#channels").find("."+options.PrevClass).css({'cursor':'pointer'});
				} else {
					$(".weather").find("."+options.PrevClass).css({'display':'none'});
					$("#channels").find("."+options.PrevClass).css({'cursor':'default'});
				}
			}
			function doMove(dir){
				if($(':animated', obj).length){
					return false;
				} else {
					var Ran = "n";
					if(dir.length > 0){
						if(options.Direction == "vertical"){
							var CssAttr = "margin-top";
							var AnimateAttr = "marginTop";
						} else {
							var CssAttr = "margin-left";
							var AnimateAttr = "marginLeft";
						}
						var Height = options.Height;
						var Curr = $("ul", obj).css(CssAttr);
						var Curr = parseInt(Curr.substr(0,Curr.length-2));
						switch(dir){
							case "next" :
								if(options.Direction !== "vertical"){
									var Moving = ((options.Width - Curr));
								} else var Moving = ((Height - Curr));
								if(Curr > Low){
									eval("$('ul',obj).animate({ "+AnimateAttr+": '-'+Moving }, options.Speed)");
									Ran = "y";
								} 
								break;
							case "prev" :
								if(options.Direction !== "vertical"){
									var Moving = ((options.Width + Curr));
								} else var Moving = ((Height + Curr));
								if(Curr < 0){
									eval("$('ul',obj).animate({ "+AnimateAttr+": Moving }, options.Speed)");
									Ran = "y";
								} 
								break;
						}
						if(options.Wobble){
							var elem = $("ul", obj);
							if(Ran == "y"){
								for(i=1;i<=2;i++){
									var Speed = 75 * i;
									mt = Moving + (10 / i);
									$(elem).animate({
										marginLeft: "-"+mt+"px"
									},Speed);
									$(elem).animate({
										marginLeft: "-"+Moving + "px"
									},Speed);
								}
							}
						}
						if(options.Restart){
							if(Ran !== "y"){
								if(dir == "next"){
									var ResetVal = "0px";
									if(ResetVal.length > 0) eval("$('ul',obj).animate({ "+AnimateAttr+": ResetVal }, "+options.RestartSpeed+")");
								}
							}
						}			
					}
				}
			}
		});
};})(jQuery);  

