$(function($){  
	$.fn.slide = function(options){
		var defaults = {  
			Width: 500,
			Height: 500,
			Speed: 1500,
			Additional: 10,
			NextClass: "Next",
			PrevClass: "Prev",
			Direction: "vertical",
			Offset: 1,
			Restart: false,
			RestartSpeed: options.Speed * 4,
			Wobble: false
		};
	  var options = $.extend(defaults, options);  
		return this.each(function(){
			var obj = $(this);
			$("."+options.NextClass).attr("href","javascript:void(0);");
			$("."+options.PrevClass).attr("href","javascript:void(0);");
			//$("li",obj).css("width", options.Width);
			//$("li",obj).css("height", options.Height);
			if(options.Offset >= 1){ $(obj).css("width", options.Width); $(obj).css("height", options.Height); }
			if(options.Direction == "vertical"){
				var Height = $("li", obj).css("height");
				var Max = ($("li", obj).length * Height.substr(0, Height.length-2));
			} else var Max = parseInt(($("li", obj).length - options.Offset) * options.Width);
			if(options.Direction =="vertical"){
				var lowHeight = $("li",obj).css("height");
				var lowHeight = parseInt(lowHeight.substr(0,lowHeight.length-2));
				var Low = "-"+(lowHeight * ($("li", obj).length - options.Offset));
			} else {
				var Low = "-"+Max;
			}
			if(options.Direction !== "vertical"){
				$("ul",obj).css("width", (Max+300) + (options.Offset * options.Width)+"px");
				$("li",obj).css("float", "left").css("width", options.Width).css("height", options.Height);
			} else {
				$("ul",obj).css("height", (Max+"px"));
			}
			
			checkAvailable();
			
			$("."+options.NextClass).click(function(){ doMove("next"); setTimeout(checkAvailable, 500); });
			$("."+options.PrevClass).click(function(){ doMove("prev"); setTimeout(checkAvailable, 500); });
			
			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));
				
				var nextObj = $("." + options.NextClass).attr("class");
				var nextObjSplit = nextObj.split(" ");
				var nextObj = nextObjSplit[0];
				var rightDist;
				var prevObj = $("." + options.PrevClass).attr("class");
				var prevObjSplit = prevObj.split(" ");
				var prevObj = prevObjSplit[0];
				var leftDist;
				
				var direction;
				
				if(Curr > Low){
					$("."+options.NextClass).css("cursor", "pointer");
					switch(nextObj){
						case "rightBusTab" :
							if($.browser.msie && $.browser.version.substr(0,1)<7) {
								rightDist = "-25px";
							} else {
								rightDist = "-13px";
							}
							direction = "right";
							break;
						case "nextVert" :
							rightDist = "-61px";
							direction = "top";
							break;
						case "rightNewsPageTab" :
						case "rightTab" :
						case "rightTabEvents":
							if($.browser.msie && $.browser.version.substr(0,1)<7) {
								rightDist = "-0px";
							} else {
								rightDist = "-21px";
							}
							direction = "right";
							break;
					}
					eval("$('."+options.NextClass+"').animate({'"+direction+"': '"+rightDist+"'}, 200).attr('rel', 'out')")
				} else {
					$("."+options.NextClass).css("cursor", "not-allowed");
					switch(nextObj){
						case "rightBusTab" :
							rightDist = "15px";
							direction = "right";
							break;
						case "nextVert" :
							rightDist = "-30px";
							direction = "top";
							break;
						case "rightNewsPageTab" :
						case "rightTab" :
						case "rightTabEvents":
							if($.browser.msie && $.browser.version.substr(0,1)<7) {
								rightDist = "25px";
							} else {
								rightDist = "10px";
							}
							direction = "right";
							break;
					}
					eval("$('."+options.NextClass+"').animate({'"+direction+"': '"+rightDist+"'}, 200).attr('rel', 'in')");
				}
				if(Curr < 0){
					$("."+options.PrevClass).css("cursor", "pointer");
					switch(prevObj){
						case "leftBusTab" :
							if($.browser.msie && $.browser.version.substr(0,1)<7) {
								leftDist = "-0px";
							} else {
								leftDist = "-13px";
							}
							direction = "left";
							break;
						case "prevVert" :
							leftDist = "-47px";
							direction = "bottom";
							break;
						case "leftNewsPageTab" :
						case "leftTab" :
						case "leftTabEvents":
							if($.browser.msie && $.browser.version.substr(0,1)<7) {
								leftDist = "-21px";
							} else {
								leftDist = "-21px";
							}
							direction = "left";
							break;
					}
					eval("$('."+options.PrevClass+"').animate({'"+direction+"': '"+leftDist+"'}, 200).attr('rel', 'out')");
				} else {
					$("."+options.PrevClass).css("cursor", "not-allowed");
					switch(prevObj){
						case "leftBusTab" :
							if($.browser.msie && $.browser.version.substr(0,1)<7) {
								leftDist = "26px";
							} else {
								leftDist = "15px";
							}
							direction = "left";
							break;
						case "prevVert" :
							leftDist = "15px";
							direction = "bottom";
							break;
						case "leftNewsPageTab" :
						case "leftTab" :
						case "leftTabEvents":
							if($.browser.msie && $.browser.version.substr(0,1)<7) {
								leftDist = "20px";
							} else {
								leftDist = "10px";
							}
							direction = "left";
							break;
					}
					eval("$('."+options.PrevClass+"').animate({'"+direction+"': '"+leftDist+"'}, 200).attr('rel', 'in')");
				}
			}
			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 = $("li",obj).css("height");
						var Height = parseInt(Height.substr(0,Height.length-2));
						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 + options.Additional));
								} 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 + options.Additional));
								} 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+")");
								}
							}
						}			
					}
				}
			}
		});
};});  
