/**
 * @author Betterment
 */

function writeSessionCookie (cookieName, cookieValue) {
	if (testSessionCookie()) {
		document.cookie = escape(cookieName) + "=" + escape(cookieValue) + "; domain=betterment.com; path=/";
		return true;
	}
	else
		return false;
}

function writePersistentCookie (CookieName, CookieValue, periodType, offset) {
	var expireDate = new Date ();
	offset = offset / 1;
	
	var myPeriodType = periodType;
	switch (myPeriodType.toLowerCase()) {
		case "years": 
			var year = expireDate.getYear(); 
			// Note some browsers give only the years since 1900, and some since 0.
			if (year < 1000) year = year + 1900; 
			expireDate.setYear(year + offset);
			break;
		case "months":
			expireDate.setMonth(expireDate.getMonth() + offset);
			break;
		case "days":
			expireDate.setDate(expireDate.getDate() + offset);
			break;
		case "hours":
			expireDate.setHours(expireDate.getHours() + offset);
			break;
		case "minutes":
			expireDate.setMinutes(expireDate.getMinutes() + offset);
			break;
		default:
			alert ("Invalid periodType parameter for writePersistentCookie()");
			break;
	} 
	document.cookie = escape(CookieName ) + "=" + escape(CookieValue) + "; expires=" + expireDate.toGMTString() + "; domain=betterment.com; path=/";
}

function getCookieValue (cookieName) {
	var exp = new RegExp (escape(cookieName) + "=([^;]+)");
	if (exp.test (document.cookie + ";")) {
		exp.exec (document.cookie + ";");
		return unescape(RegExp.$1);
		}
	else
		return false;
}

function deleteCookie (cookieName) {
	if (getCookieValue (cookieName)) writePersistentCookie (cookieName,"Pending delete","years", -1);  
	return true;     
}

function testSessionCookie () {
	document.cookie ="testSessionCookie=Enabled";
	if (getCookieValue ("testSessionCookie")=="Enabled")
		return true 
	else
		return false;
}

function preSubmitCheck () {
	if (document.appLogin.userName.value.length==0) {
		alert ("Please provide a username/email address")
		return false;
	}
	else if (document.appLogin.password.value.length==0)  {
		alert ("Please provide a password")
		return false;
	}
	else if (testSessionCookie()) {
		writeSessionCookie ("userName", document.appLogin.userName.value);
		if (document.appLogin.remember.checked)
			writePersistentCookie ("savedEmail", document.appLogin.userName.value, "months", 3)
		else if (getCookieValue("savedEmail"))
			deleteCookie("savedEmail");
		return true;
	}
	else
		alert ("Session cookies are currently disabled. Must establish a secure connection before login."); 
	return true;
}

function populateEmail () {
	if (getCookieValue("savedEmail")) {
		document.appLogin.userName.value = getCookieValue("savedEmail");
		document.appLogin.remember.checked = true;
	}
	if (getCookieValue("userName")) {
		deleteCookie("userName")
	}
}

function readCookieTest () {
	if (getCookieValue ("userName"))
		alert ('userName: "' + getCookieValue ("userName") + '"')
	else alert ("Cookie not found");
}
