var last_shown_note = null;

function keypress_mkacct(inkey) {
	switch (inkey) {
		case 'ESC':
			$("#mkacctwin")[0].deactivate();
			return false;
		case 'Ctrl+ENTER':
			createAccountSubmit();
			return false;
	}
	return true;
}
function keypress_forgotpass(inkey) {
	switch (inkey) {
		case 'ESC':
			$("#forgotpasswin")[0].deactivate();
			$("#resetpassstart").show();
			$("#resetpassauth").hide();
			$("#rp_authcode, #rp_pass, #rp_pass2, #fp_email").val("");
			return false;
		case 'Ctrl+ENTER':
			forgotPassSubmit();
			return false;
	}
	return true;
}

function keypress_forgotpassdone(inkey) {
	switch (inkey) {
		case 'ESC':
			$("#forgotpassdonewin")[0].deactivate();
			return false;
	}
	return true;
}


function showNote(which, contents) {
   if (last_shown_note)
      last_shown_note.style.display = "none";
   last_shown_note = document.getElementById(which + "note");
   if (last_shown_note) {
      last_shown_note.style.display = "block";
   	if (contents && contents.length)
      	last_shown_note.innerHTML = contents;
	}
	mkstatus();
}

function createAccount() {
	$("#mkacctwin")[0].activate(
			{title:"Create Account", keyhandler:keypress_mkacct});
	$("#mk_email").focus();
	var refcookie = document.cookie.match(/.*\breferrer=([^;]*).*/);
	if (refcookie)
		$("#mk_userreferkey")[0].value = decodeURIComponent(refcookie[1]);
}

function forgotPass() {
	$('#fp_email').val("")
	$("#forgotpasswin")[0].activate(
			{title:"Forgot Password", keyhandler:keypress_forgotpass});
	$("#fp_email").focus();
	
}

function forgotPassSubmit() {
	
	if($("#resetpassstart:visible").length) {
		//need auth code emailed block
		if(!$('#fp_email').val().length)
			return;
		lfjs.window.wait();
	
	
		var msg = util.getcommunity() + "lostpassword";
		msg = "genericlostpassword";
		$.ajax({ type: "POST", 
			   data:{
					lostpassword: "genericlostpassword:" + $('#fp_email').val()
				}, 
				success: forgotPassDone,
				error: function(req, errMsg, e) { 
					alert("Error: " + errMsg)
					lfjs.window.nowait(); 
				},
				url: (raccauth.url + "?db=" + raccauth.authservice) 
			});
	} else if($("#resetpassauth:visible").length) {
		//has auth code block
		if(!$('#rp_authcode').val().length || !$('#rp_pass').val().length || !$('#rp_pass2').val().length)
			return;
			
		if($('#rp_pass').val() != $('#rp_pass2').val()) {
			alert("Password values do not match.\nPlease make sure they are entered correctly.");
			$('#rp_pass').focus().select()
			return;
		}
		var servicelist = "";
		for (var servicename in raccauth.serverlist) {
			if (servicelist.length)
				servicelist += ",";
			servicelist += servicename;
			if (raccauth.serverlist[servicename].plain)
				servicelist += ":plain";
			else if (raccauth.serverlist[servicename].acctname)
				servicelist += ":" + raccauth.serverlist[servicename].acctname;
		}
		$.ajax({ type: "POST", 
				url: (raccauth.url + "?db=" + raccauth.authservice),
				data:{
					loginname: $('#rp_authcode').val(),
					loginpassword: "loginhash",
					modaccount: "password:" + $('#rp_pass').val(),
					logindbname: servicelist 
				}, 
				success: resetPassDone,
				error: function(req, errMsg, e) { 
					alert("Error: " + errMsg)
					lfjs.window.nowait(); 
				} 
			});
		}
}
function showAuth() {
	$("#resetpassstart").slideUp();
	$("#resetpassauth").slideDown();
}
function forgotPassDone(req) {
	lfjs.window.nowait();
	$("#forgotpasswin")[0].deactivate();
	if($(req).find("error").length) {
		var err = $(req).find("error message").text();
		if(err.toLowerCase().indexOf("user does not exist") != -1) {
			alert('Could not find a user account for "' + $('#fp_email').val() + '"\nPlease check to make sure it is entered correctly and try again');
		} else {
			alert("Error: " + err + "\nPlease try your request again or\ncontact customer service.");
		}
		return;
	}
	$("#forgotpassdonewin")[0].activate(
			{title:"Password Reset Request Sent", keyhandler:keypress_forgotpassdone});
}

function resetPassDone(req) {
	lfjs.window.nowait();
	if ($(req).find("error").length > 0) {
		var msg = $(req).find("error>message").text().substr(4);
		if(msg.toLowerCase().indexOf("invalid password") != -1) {
			alert("Invalid Authorization Code.\nPlease check to make sure you have the same\nauthorization key that was sent in your email.");
		}
		return false;
	}
	lfjs.keypress.stuff("ESC");
	
	
	raccauth.loginSuccess(req);
}
function keypress_email(field) {
	return true;
}

function mkstatus(status, icon) {
	if (!status)
		$("#mkstatus").empty();
	else
		$("#mkstatus").html("<img src='/images/icons/" +
			(icon ? icon : "cancel") + ".png'> " + status);
}

function checkemail(emailfield) {
	emailfield.value = emailfield.value.replace(/^ */, "").replace(/ *$/, "");
	var reLoose = /[\!-\~]+\@[\!-\~]+/;
	var reTight =
		/^[a-z0-9][^\(\)\<\>\@\,\;\:\\\"\[\]]*\@[a-z0-9][a-z0-9\-\.]*\.[a-z]+$/
	if (!emailfield.value.match(reTight)) {
		setTimeout(function() {
			$("#mk_email").focus();
			mkstatus("Invalid email address. Please check and try again.");
		}, 10);
		return false;
	}
	if ($("#mk_handle")[0].value.length == 0) {
		$("#mk_handle")[0].value =
				emailfield.value.substr(0, emailfield.value.indexOf("@"));
		checkhandle($("#mk_handle")[0]);
	}
}

function checkhandle(handlefield) {
	if (handlefield.value.length < 5 || handlefield.value.length > 40) {
		setTimeout(function() {
			mkstatus("Account names need to be 5-40 characters long");
		}, 10);
		return false;
	}
	// Check to see if it works
	$.ajax({ url: raccauth.url + "?db=" + raccauth.authservice + "&profile=" + 
		encodeURIComponent(handlefield.value), success: checkedhandle });
}

function checkedhandle(req) {
	var user = $(req).find("user");
	if (user.length > 0) {
		mkstatus("Account name '" + user.attr("name") + "' is not available.");
	} else {
		mkstatus("Account name is available.", "accept");
	}
}

function checkpassword() {
	var val1 = $('#mk_password')[0].value;
	var val2 = $('#passwordconfirm')[0].value;
	if (val1 != val2) {
		setTimeout(function() {
			$('#mk_password').focus();
			$('#mk_password')[0].select();
			$('#passwordconfirm')[0].value = "";
			mkstatus("Passwords do not match.  Try again.");
		}, 10);
	}
}

function keypress_handle(handlefield) {
	// Letters, numbers, and single spaces in middle of strings
	handlefield.value = handlefield.value.replace(/[^a-zA-Z0-9 ]/g, "").
			replace(/  +/g, " ").replace(/^ */, "");
}

function createAccountSubmit() {
	lfjs.window.wait();
	var commname = util.getcommunity().replace("photos", "").
			replace("photo", "").replace("stage", "");
	var msg;
	switch (commname) {
		case "herky":
		case "unipanther":
		case "gocy":
		case "iowafca":
		case "mizzou":
		case "powercat":
		case "badger":
		case "nittanylion":
		case "pistolpete":
		case "ousooner":
		case "bravo":
		case "atlassports":
		case "somopics":
		case "centraldutch":
		case "sundevil":
		case "uichildrens":
		case "redbirds":
			msg = commname + "welcome";
			break;

		case "dev8":
			msg = "devwelcome";
			break;
		default:
			msg = "genericwelcome";
	}

	var postdata = $("#mk_handle")[0].value +
		"\tf_name:" + $("#mk_f_name")[0].value +
		"\tl_name:" + $("#mk_l_name")[0].value +
		"\tpassword:" + $("#mk_password")[0].value +
		"\temail:" + $("#mk_email")[0].value +
		"\tzip:" + $("#mk_zip")[0].value +
		"\tphone:" + $("#mk_phone")[0].value +
		"\tuserreferkey:" + $("#mk_userreferkey")[0].value +
		"\tmakeip:" + util.getcommunity() +
		"\tmakemessage:" + msg;
	if ($('#mk_hidden')[0].checked)
		postdata += "\thidden:*";
	$.ajax({ url: raccauth.url + "?db=" + raccauth.authservice, type: "POST",
		data: "makeacct=" + encodeURIComponent(postdata) ,
		success: createAccountDone });
}

function createAccountDone(req) {
	lfjs.window.nowait();
	var errors = $(req).find("error");
	if (errors && errors.length > 0) {
		var msg = $(errors[0]).find("message").text();
		if (msg.indexOf("\t") > 0)
			msg = msg.substr(msg.indexOf("\t")+1);
		mkstatus(msg);
		return false;
	}
	$("#mkacctwin")[0].deactivate();
	$('#loginacct')[0].value = $("#mk_handle")[0].value;
	$('#loginpass')[0].value = $("#mk_password")[0].value;
	raccauth.message("Account created; logging in...");
	raccauth.login();
}
