function scrollWindow(swOptions){
	// PRIVATE
	var self = this;
	self.ar;
	// Required Variables
	var itemList = swOptions.itemList;
	var marginWidth = swOptions.marginWidth;
	var itemsPerView = swOptions.itemsPerView;
	var navLeft = swOptions.navLeft;
	var navRight = swOptions.navRight;
	var shadedOpacity = swOptions.shadedOpacity;
	
	var shadedFilter = 'alpha(opacity='+(parseInt(shadedOpacity.substr(1,1))*10)+')';
	
	// Optional Variables
	var viewIndicator = null;
	var pageDisplay = null;
	
	if (swOptions.viewIndicator)
		viewIndicator = swOptions.viewIndicator;
	
	if (swOptions.pageDisplay)
		pageDisplay = swOptions.pageDisplay;
	
	var widgetWidth = itemList.children("li").width();
	var offset = ((widgetWidth + marginWidth)*itemsPerView);
	var numWidgets = itemList.children("li").length;
	var numPages = Math.ceil(numWidgets/itemsPerView);
	var maxRight = 0 - ((numPages - 1) * offset);
	var isCurrentlyScrolling = false;
	
	var animate = function(position){
		if(isCurrentlyScrolling)
			return;
		isCurrentlyScrolling = true;
		
		itemList.animate({ left: position }, 400, 'swing', function(){ isCurrentlyScrolling = false; })
		
		if (position == maxRight){
			lowerOpacity(navRight);
			navRight.unbind("click");
		} else if (navRight.css("opacity") != '1'){
			fullOpacity(navRight);
			navRight.bind("click", self.next);
		}
		
		if (position == 0){
			lowerOpacity(navLeft);
			navLeft.unbind("click");
		} else if (navLeft.css("opacity") != '1'){
			fullOpacity(navLeft);
			navLeft.bind("click", self.previous);
		}
	
		if (viewIndicator)
			setIndicator(position);
	
		if (pageDisplay)
			displayPage(position);
	}
	
	var setIndicator = function(position){
		var currentPage = Math.abs(position)/offset;
		if (viewIndicator){
			viewIndicator.children("li")
				.removeClass("current")
				.each(function(i){
					if (currentPage == i){
						$(this).addClass("current");
					}
				});
		}
	}
	
	var displayPage = function(position){
		var currentWidget = (Math.abs(position)/offset)+1;
		pageDisplay.html(currentWidget+" of "+numWidgets);
	}
	
	var lowerOpacity = function(obj){
		$(obj).css({ opacity: shadedOpacity, filter: shadedFilter });
	}
	
	var fullOpacity = function(obj){
		$(obj).css({ opacity: "1", filter: "alpha(opacity=100)" });
	}
	
	var getCurrentPosition = function(){
		var pos = itemList.css("left");
		var position = pos.substr(0,(pos.length-2));
		return position;
	}
	
	var autoRotate = function(){
		var position = getCurrentPosition();
		var newPosition;
		if (position == maxRight){
			newPosition = 0;
		} else {
			newPosition = parseInt(position) - offset;
		}
		animate(newPosition);
		self.ar = setTimeout(autoRotate, 5000);
	}
	
	var initNavigation = function(){
		if (viewIndicator){
			for (var i=0; i<numPages; i++){
				viewIndicator.append("<li></li>");
			}
			viewIndicator.children("li").eq(0).addClass("current");
		}
	
		lowerOpacity(navLeft);
	
//		navLeft.bind("click", self.previous);
		if (numPages != 1)
			navRight.bind("click", self.next);
		else
			lowerOpacity(navRight);
	}

	// PUBLIC
	this.previous = function(){
		var position = getCurrentPosition();
		var newPosition = parseInt(position) + offset;
		
		animate(newPosition);
	}
	
	this.next = function(){
		var position = getCurrentPosition();
		var newPosition = parseInt(position) - offset;
		
		animate(newPosition);
	}
	
	this.resizeScrollWindow = function(viewerWindow, widgetHeight){
		itemList.children("li").each(function(i){
			if ($(this).height() > widgetHeight){
				widgetHeight = $(this).height();
			}
		});
		viewerWindow.css("height", widgetHeight+"px");
	}
	
	this.goToWidget = function(widgetIndex){
		var widgetPos = parseInt(0 - (widgetIndex * (widgetWidth+marginWidth)));
		var currentPage = Math.floor(Math.abs(widgetPos/offset));
		var startPosition = parseInt(0 - (currentPage * offset));
		animate(startPosition);
		if (currentPage < 1){
			lowerOpacity(navLeft);
		} else if (startPosition == maxRight){
			fullOpacity(navLeft);
			navLeft.bind("click", self.previous);
			lowerOpacity(navRight);
			navRight.unbind("click");
		} else {
			fullOpacity(navLeft);
			navLeft.bind("click", self.previous);
		}
		
		return this;
	}
	
	this.initAutoRotate = function(widget){
		widget.bind("mouseover", function(){
			clearTimeout(self.ar);
		});
		widget.bind("mouseout", function(){
			self.ar = setTimeout(autoRotate,5000);
		});
		
		autoRotate();
	}
	
	initNavigation();
}

function searchFormValidate(searchForm) {
	if (searchForm.q.value != '') {
		searchForm.submit();
	} else {
		searchForm.q.focus();
	}
}

function ie6NavFix() {
	if ($.browser.msie && $.browser.version.indexOf('6') == 0) {
		$('.mainNav ul li').bind("mouseover",function(){
			$(this).addClass("sfhover");
		}).bind("mouseout",function(){
			$(this).removeClass("sfhover");
		});
		$('.mainNav ul li ul li').unbind("mouseover").unbind("mouseout");
	}
}

function getLoginStatus() {
	//giabUrl = giabBase+"giab";
	giabUrl = "http://www.gardenguides.com/giab";
	arrow = '<img src="'+mediaBase+'ui/images/symbols/arrow.gif" />';	signInText = '<a href="'+giabBase+'profiles/signin.aspx">sign in</a>';	signUpText = '<a href="'+giabBase+'profiles/signin.aspx">sign up</a>';	signOutText = '<a href="'+giabBase+'profiles/signout.aspx">sign out</a>';
	
	var giabLogin = $("#giabLogin");
	gUrl = giabUrl+"?"+(new Date()).getTime();

//	$.get(gUrl, function(data){
		var data = ''; // temporary while AJAX is turned off
		if (data == 'Not Logged In' || data == '') {
//			giabLogin.html(arrow+' '+signInText+' | '+signUpText);
			profileUrl = 'profiles/signin.aspx';
		} else {
			giabLogin.html('Welcome, '+data+' | '+signOutText);
			profileUrl = 'members/'+data;
		}
		$('a.myProfileH').attr('href', function(){ return this.href+profileUrl });
		$('a.myProfile').attr('rel', function(){ return this.rel+profileUrl });
		$('a.jsNoFollow').noFollow();
//	});
	giabLogin.html(arrow+' <a href="'+giabBase+'profiles/signin.aspx">go to my profile</a>'); // temporary while AJAX is turned off
}

(function($) {    $.fn.noFollow = function() {        return this.each(function() {            var $this = $(this);            $this.attr("href", $this.attr('rel'));        });    }})(jQuery);

$(document).ready(function(){
	$(".changer").click(function(){
		var $mainText = $('.resizeable');
		var currentSize = $mainText.css('font-size');
		var num = parseFloat(currentSize, 10);
		var unit = currentSize.slice(-2);
		if (this.id == 'font_bigger'){
			num = num * 1.25;
		} else if (this.id == 'font_smaller'){
			num = num / 1.25;
		}
		$mainText.css('font-size', num + unit);
		return false;
	});
	
	$('.jsSiteSearch ul li').bind("click",function(){
		$(this).siblings("li").removeClass("selected");
		$(this).addClass("selected");
		$filter = $(this).html().toLowerCase();
		$(this).parent().siblings("form").find("input[name='filter']").val($filter);
	});
	
	$("div[id^='flashProxy_pluckit_']").css({width:"1020px", margin:"0 auto", background:"#fff", height:"0px"});
	
	getLoginStatus();
	// $('a.jsNoFollow').noFollow(); <-- Moved to inside prior function so the url for the profile link can populate before the noFollow fires.
	ie6NavFix();
});