var code = '';
var oMessage = new Object();
	
function initDoc() {
	
	var oForm = document.getElementById("editUserForm");
	var oPersonaDescription = document.getElementById("personaDescription");
	var oCountry = document.getElementById("countryID");
	
	if (oPersonaDescription) {
		countChars( oPersonaDescription.value ); 
	}
	
	if (oCountry) {
		checkCountry(oCountry);
		
		// should ideally add the event listener here....

	}
	
	if (oForm) {
		// wire form sbmission to validation
		// formValidator.wireup(oForm);
	}
	
	window.focus();
	
}
Event.observe(window, "load", initDoc);

function confirmThis(message)
{
	if (confirm(message)) return true;
	return false;
}

function confirmDeleteProfile(url,message) {
 	if(confirmThis("Are you sure you want to delete your profile? If you own any communities, they will be deleted too!")) {
 		if (this.parent) {
 			this.parent.document.location.href = root_url + 'index.cfm?action=user.deleteuser';
 		}
 		else {
 			document.location.href = root_url + 'index.cfm?action=user.deleteuser';
 		}
 	}
}  

function checkCountry(oSelect) {
	if (!oSelect) {
		alert("no select!");
		return;
	}
	var oPostalCode = document.getElementById("userPostalCode");
	var oCity = document.getElementById("userCity");
	var oState = document.getElementById("userState");
	
	if ( oSelect[oSelect.selectedIndex].value == 0 || oSelect[oSelect.selectedIndex].value == 219 )
	{
		if ( oPostalCode.value == '' )
		{
			oPostalCode.value = 'Zip Code';
		}
		// document.getElementById( 'usa' ).style.display = 'block'; These lines causing a JS error - not sure if these exist anymore
		// document.getElementById( 'int' ).style.display = 'none';
	}
	else
	{
		if ( oCity.value == '' )
		{
			oCity.value = 'City';
		}

		if ( oState.value == '' )
		{
			oState.value = 'Province';
		}
		document.getElementById( 'usa' ).style.display = 'none';
		document.getElementById( 'int' ).style.display = 'block';
	}
}
		  
	function doValidate(e) {
		var oMessage = null;
		var oStatus = null;
		
		// clear the labels
		clearErrorLabels();
		
		// show a message saying "hey submitting"
		showProcessingMessage();
		
		oMessage = validateQSUForm(e, this);
		
		if (oMessage) {
			getMessage(oMessage);
			stopEvent(e);
			return;
		}
	}
	
	function validateQSUForm(e) {
		var result = new Object();
		var oMessageContainer = document.getElementById("output-message");
		var oForm = document.getElementById("quickSignupForm");
		var oUserEmail = document.getElementById("email");
		var oTOS = document.getElementById("tos");
		var oPassword = document.getElementById("password");
		var oPasswordConfirm = document.getElementById("passwordConfirm");
		var oScreenName = document.getElementById("userHandle");
		
		var oBirthdayDay = document.getElementById("userBirthdayDay");
		var oBirthdayMonth = document.getElementById("userBirthdayMonth");
		var oBirthdayYear = document.getElementById("userBirthdayYear");
		var strBirthDate = oBirthdayDay[oBirthdayDay.selectedIndex].value + "/" + oBirthdayMonth[oBirthdayMonth.selectedIndex].value + "/" + oBirthdayYear[oBirthdayYear.selectedIndex].value;
		
		var result = null;
		var oMessage = null;
		
		result = isChecked(oTOS);
		// validate tos checked
		if (!result.passed) {
			oMessage = { messageCode: 370, type:"exception", label:"lblTOS"};
			// appendMessage(oMessageContainer,result)
			return oMessage;
		}
		
		if (trim(oUserEmail.value) == "") {
			oMessage = { messageCode: 373 , type:"exception", label:"lblEmail" };
			return oMessage;
		}
		
		result = isEmail(oUserEmail);
		if (!result.passed) {
			oMessage = { messageCode: 374 , type:"exception", label:"lblEmail" };
			return oMessage;
		}
		
		result = isDate(strBirthDate);
		if (!result.passed) {
			oMessage = { messageCode:372 , type:"exception", label:"lblUserBirthday"}
			return oMessage;
		}
		
		
		// check screen name
		if (trim(oScreenName.value) == "") {
			oMessage = { messageCode: 377, type:"exception", label:"lblUserHandle"};
			return oMessage;
		}
		
		if (trim(oPassword.value) == "") {
			oMessage = { messageCode: 379, type:"exception", label:"lblPassword"};
			return oMessage;
		}
		
		if (oPassword.value.length < 5) {
			oMessage = { messageCode: 380, type:"exception", label:"lblPassword"};
			return oMessage;
		}
		
		// make sure the passwords mizzatch!
		result = matches(oPassword, oPasswordConfirm);
		if (!result.passed) {
			oMessage = { messageCode:381, type:"exception", label:"lblPasswordConfirm"};
			return oMessage;
		}
		
	}
	
	function showProcessingMessage() {
		clearMessageContainer("output-message");
		var o = document.getElementById("output-message");
		// o.innerHTML = "<div class='message-container'><img src='assets/images/ajax-loader.gif' style='float:left; padding-right:5px;'>Processing... brb!</div>";
		var oMessage = { message: "<img src='assets/images/ajax-loader.gif' style='padding-right:5px;'>Processing... brb!", type:"status" };
		getMessage(oMessage);
	}
	
	
	
	function getMessage(oMessage) {		
		// correct the header container
		
		/*
		if (oMessage.type == "exception") {
			document.getElementById("output-header-exception").show();
			document.getElementById("output-header-success").hide();
		}
		else {
			document.getElementById("output-header-exception").hide();
			document.getElementById("output-header-success").show();	
		}
		* */
		
		// change the message container
		clearMessageContainer("output-message");
		appendMessage("output-message", oMessage);
		
		// if there's a label - change the class to error
		if (oMessage.label && document.getElementById(oMessage.label)) {
			document.getElementById(oMessage.label).className = "error";
		}
		
	}
	
	function clearErrorLabels() {
		var oForm = document.getElementById("quickSignupForm");
		var arrErrors = oForm.getElementsByClassName("error");
		for (var i = 0; i < arrErrors.length; i++){
			arrErrors[i].removeClassName("error");
		}
	}
	
	function checkUsername(result) {
		postURL = postURL + "&code=" + result.messageCode;	
		DWREngine._execute(_ajaxConfig._cfscriptLocation + "/users.cfc", null, "validateCredentials", oUsername.value, oPassword.value, oCompanyID.value, credentialValidationResult);			
		// new Ajax.Request(postURL, {onSuccess: populateMessage});
	}

	function populateMessage(o) {
		var oMessageContainer = document.getElementById("output-message");
		oMessageContainer.innerHTML = o.responseText;
	}
	
	function stopEvent(e) {
		Event.stop(e);
		return;
	}