
/*===============================================================================
	public.js
	John Larson
	2/12/09
	
	All page-specific JavaScript for public (i.e. non-logged in) pages.
	
	
===============================================================================*/


window.addEvent('domready', function() {
	CA.confirmModal = new ModalDialogue.Alert('Confirm');
	CA.windowScroller = new Fx.Scroll(window);
});

	
	
	function scrollToFeatureTop(which) {
		if(which > 0)
			CA.windowScroller.toElement('sectionTop');
	}
	
/****************************************************************************
//	SECTION::Login Interface
*/
	
	function submitLogin(theForm) {
	//	$('loginMessage').setText('Logging in...');
		new Request.HTML({ url: 'AJAXPublic.asp?a=login',
			method: 'post',
			data: $(theForm),
			update: 'loginMessage',
			evalScripts: true
		}).send();
	}
	
	function launchLoginHelper() {
		$('loginHelperForm').username.value = $('loginForm').username.value;
		if($('loginHelperForm').helpMode) $('loginHelperForm').helpMode[0].checked = true;
		swapSections('loginFormDiv', 'loginHelperFormDiv');
	}
	
	
	function cancelLoginHelper() {
		swapSections('loginHelperFormDiv', 'loginFormDiv');
	}
	
	function closeLoginHelper() {
		swapSections('loginHelperCompletion', 'loginFormDiv');
	}
	
	
	function submitLoginHelpRequest() {
		var theForm = $('loginHelperForm');
		
		if(theForm.helpMode[0].checked  &&  theForm.username.value == '') {
			calert('Please indicate your username.');
			theForm.username.focus();
			return;
		}
		
		if(theForm.helpMode[1].checked  &&  !isValidEmailAddress(theForm.email.value)) {
			calert('Please indicate your email address on file (must be valid).');
			theForm.email.select();
			return;
		}
		
		new Request.HTML({ url: 'AJAXPublic.asp?a=loginHelper',
			method: 'post',
			data: theForm,
			onComplete: function() {
				dbug.log('new oncomplete!');
				$('loginHelperMessage').setText(this.response.text);
				swapSections('loginHelperFormDiv', 'loginHelperCompletion');
			}
		}).send();
	}
/*
//	End SECTION::Login Interface
****************************************************************************/



/****************************************************************************
//	SECTION::Beta Tester Sign Up
*/
	function submitBetaTesterForm(theForm) {
	  with(theForm) {
		if(firstName.value == '') {
			alert('Please tell use your first name.');
			firstName.focus();
			return false;
		}
		if(lastName.value == '') {
			alert('Please tell use your last name.');
			lastName.focus();
			return false;
		}
		if(!isValidEmailAddress(email.value)) {
			alert('Please indicate a valid email address.  Without one, we\'ll not be able ' +
				  'to get you set up to use Coach Accountable.');
			email.focus();
			return false;
		}
		
		// all's well, so:
		new Request.HTML({ url: 'signUp.asp?a=betaTesterSignUp',
			method: 'post',
			data: theForm,
			evalScripts: true
		}).send();
		
		return false;
	  }
	}
/*
//	End SECTION::Beta Tester Sign Up
****************************************************************************/



/****************************************************************************
//	SECTION::User Sign Up
*/
	
	function verifyUsernameAvailability(username) {
		
		if(isValidUsername(username)) {
			new Request.HTML({ url: 'AJAXPublic.asp?a=verifyUsernameAvailability',
				method: 'post',
				data: 'username=' + username,
				update: 'usernameMessage'
			}).send();
		}
	}
	
	function replaceUsernameWith(newUsername) {
		$('usernameInput').value = newUsername;
		$('usernameMessage').setText('');
	}
	
/*
//	End SECTION::User Sign Up
****************************************************************************/






/****************************************************************************
//	SECTION::Coach Sign Up
*/
	
	
	function submitCoachSignUp(theForm) {
		
		theForm = $(theForm);
		with(theForm) {
			if(!isValidEmailAddress(email.value)) {
				calert('Please enter a valid email address.');
				email.focus();
				return false;
			}
			if(firstName.value == '') {
				calert('Please enter your first name.');
				firstName.select();
				return false;
			}
			if(lastName.value == '') {
				calert('Please enter your last name.');
				lastName.select();
				return false;
			}
			if(!isValidUsername(username.value)) {
				calert(CA.errorMessage);
				username.focus();
				return false;
			}
			if(!isValidPassword(password.value)) {
				calert(CA.errorMessage);
				password.focus();
				return false;
			}
			if(password.value != password2.value) {
				calert('The passwords do not match.  Please double check them.');
				password.select();
				return false;
			}
			if(!agreedToTOS.checked) {
				calert('In order to use CoachAccountable, please indicate that you ' +
					'have read and agree to our Terms of Service and Privacy Policy.');
				agreedToTOS.focus();
				return false;
			}
		}
		AJAXPostToThisPage(theForm);
	}
/*
//	End SECTION::Coach Sign Up
****************************************************************************/




/****************************************************************************
//	SECTION::Affiliates
*/
	function submitAffiliateLoginHelpRequest() {
		var theForm = $('loginHelperForm');
		
		if(!isValidEmailAddress(theForm.username.value)) {
			calert('Please indicate your email address on file (must be valid).');
			theForm.email.select();
			return;
		}
		
		new Request.HTML({ url: 'AJAXPublic.asp?a=affiliateLoginHelper',
			method: 'post',
			data: theForm,
			onComplete: function() {
				dbug.log('new oncomplete!');
				$('loginHelperMessage').setText(this.response.text);
				swapSections('loginHelperFormDiv', 'loginHelperCompletion');
			}
		}).send();
	}
	
	function submitAffiliateSignUp(theForm) {
		
		theForm = $(theForm);
		with(theForm) {
			if(firstName.value == '') {
				calert('Please enter your first name.');
				firstName.select();
				return false;
			}
			if(lastName.value == '') {
				calert('Please enter your last name.');
				lastName.select();
				return false;
			}
			if(!isValidEmailAddress(email.value)) {
				calert('Please enter a valid email address.');
				email.focus();
				return false;
			}
			if(email.value != email2.value) {
				calert('The email addresses do not match.  Please double check them.');
				email.select();
				return false;
			}
			if(!isValidPassword(password.value)) {
				calert(CA.errorMessage);
				password.focus();
				return false;
			}
			if(password.value != password2.value) {
				calert('The passwords do not match.  Please double check them.');
				password.select();
				return false;
			}
			if(!agreedToTOS.checked) {
				calert('In order to join the CoachAccountable Affiliate Program you must first indicate that ' +
					'have read and agree to our Terms of Service and Privacy Policy.');
				agreedToTOS.focus();
				return false;
			}
		}
		AJAXPostToThisPage(theForm);
	}
/*
//	End SECTION::Affiliates
****************************************************************************/


/****************************************************************************
//	SECTION::General Purpose AJAX Post
*/
	function AJAXPostToThisPage(theForm) {
		showLoad();
		new Request.HTML({ url: CA.thisPage + '?a=submit',
			method: 'post',
			data: $(theForm),
			evalScripts: true,
			onComplete: function() {
				hideLoad();
			}
		}).send();
	}
/*
//	End SECTION::General Purpose AJAX Post
****************************************************************************/
