	function handleSessionResponse(response) {
		if (!response.session) {
			//alert("not connected");
			//onNotConnected();
		} else {
			//alert("connected");
			//onConnected(response.session.uid);
		}
	}
	function logoutOfFacebook() {
		// It doesn't seem to even call the callback if the user is not logged in to FB 
		//	so we have to get the current status first
		FB.getLoginStatus(function(response) {
			if (!response.authResponse) {
				logout();
			} else {
				FB.logout(function() {
					logout();
				});
			}
		});
	}
	function toggleSignIn() {
		var signInArea = $("#sign-in");
		if (signInArea.hasClass("slid-up")) {
			// get its margin-top and animate to 0
			var marginTop = signInArea.css("margin-top");
			signInArea.data("margin-top", marginTop);
			signInArea.animate({"margin-top": 0}, {
				complete: function() {signInArea.removeClass("slid-up");}
			});
			//signInArea.removeClass("slid-up");
		} else {
			signInArea.animate({"margin-top": signInArea.data("margin-top")}, {
				complete: function() {signInArea.addClass("slid-up");}
			});
			
		}
	}
	function createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}

	function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}

	function eraseCookie(name) {
		createCookie(name,"",-1);
	}
	$(document).ready(function() {
		$.defaultText({
			context:"#house-login"
			});
		//$("#house-login input").default_text({text:$(this).attr("title")});
		$("#j_username").blur(function() {
			var ths = $(this);
			var val = ths.val();
			if (val.indexOf("@") > 0) {
				var forgotLink = $("#forgot a");
				var href = forgotLink.attr("href");
				var query = href.indexOf("?");
				if (query > 0) {
					href = href.substr(0, query);
				}
				href += "?email=" + val;
				forgotLink.attr("href", href);
				// also save it to a cookie
				createCookie('login-email', val);
			}
		});
		doMessageFadeIn();
		
		if ($(".rotatable").size() > 0 || $(".sidebar .learn-item").size()>0) {
			kickoffRotation();
		}
	});
	
	function alertDialog(title, text, modal) {
		var alertDiv = $("<div></div>");
		alertDiv.attr("title", title);
		alertDiv.append(text);
		if (modal == null || typeof (modal) == 'undefined') {
			modal = true;
		}
		alertDiv.dialog({resizable:false, modal:modal, position:['center', 100], buttons: {"Close" : function() { $(this).dialog("destroy");}}});
	}
	function onError(title, text) {
		alertDialog(title, text, true);
	}
	function showMessage(msg) {
		$(".messages-container").empty().append($("<div class='messages success-messages'><div class='message'></div></div>").html(msg));
		doMessageFadeIn();
	}
	function doMessageFadeIn() {
		var msgs = $(".messages-container .messages");
		if (msgs.size() > 0) {
			//msgs.show();
			msgs.fadeIn("medium", function() {
				window.setTimeout(function() {msgs.fadeOut("medium");}, 5*1000)
			});
		}
	}
	// taken from
	// http://stackoverflow.com/questions/901115/get-query-string-values-in-javascript
	function getUrlParameter(paramName, url) {
		paramName = paramName.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
		  var regexS = "[\\?&]" + paramName + "=([^&#]*)";
		  var regex = new RegExp(regexS);
		  var results = regex.exec(url);
		  if(results == null)
		    return "";
		  else
		    return decodeURIComponent(results[1].replace(/\+/g, " "));
	}
