/*
 * Front end registration functions to format and check input for submission to validation script.
 */

var internationalPrefix = '1';

/*
 * Check that the user has checked the Ts&Cs checkbox
 * Construct complete MSISDN from partial form fields.
 * Add international prefix.
 * Perform simple pre-submission check on MSISDN:
 *  - number contains only digits
 *  - number is the correct length.
 */
function checkRegisterSubmission(form, msisdnMinLength, msisdnMaxLength) {
	var termsChecked = true;
	if (!form.register_terms.checked) {
		document.getElementById("register_terms_label").style.display = "none";
		document.getElementById("register_terms_error_label").style.display = "block";
		termsChecked = false;
	}

	msisdnPartOne = form.msisdn_part_1.value;
	msisdnPartTwo = form.msisdn_part_2.value;
	msisdnPartThree = form.msisdn_part_3.value;
	
	msisdn = msisdnPartOne + msisdnPartTwo + msisdnPartThree;
	form.msisdn.value = internationalPrefix + msisdn;
	
	var msisdnIsCorrectLength = (msisdn.length >= msisdnMinLength) && (msisdn.length <= msisdnMaxLength);
	var msisdnIsValid = true;
	if (!(msisdnIsCorrectLength && isInteger(msisdn))) {
		document.getElementById("register_msisdn_user_message").style.display = "none";
		document.getElementById("register_msisdn_user_error_message").style.display = "block";
		msisdnIsValid = false;
	}
	
	if (termsChecked && msisdnIsValid) {
		return true;
	} else {
		return false;
	}
}


/*
 * Check that all of the characters in a string are digits.
 * Any non-digit character, including white space, will give in a false result. 
 */
function isInteger(s) {
	var i;
	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if ((c < "0") || (c > "9")) {
			return false;
		}
	}
	return true;
}

/*
 * Move the cursor to the next input box if the current box is full
 */
function nextBox(currentBox, nextBoxId, inputLength) {
	if (currentBox.value.length >= inputLength) {
		document.getElementById(nextBoxId).focus();
	}
}