
//Contains functions needed by GMS_ConfirmRegistration.jsp and UserRegistrationAck.jsp for the client-side validation

var formName = "ConfirmationCodeForm";
var phoneNumberFieldName = "NewPhoneNumber";
var phoneNumberWithCCFieldName = "phoneNumber";
var countryCodeFieldName = "countryCode";
var codeFieldName = "code";
var codeRequest = "codeRequest";
var formattedPhoneNumberTagName = "formattedPhoneNumber";
var dataConfirmNeededCheckBoxName = "dataConfirmNeeded";

function isValidCode(field) {
	var message = "";
	var pattern = /^[a-zA-Z0-9]{6}$/
	var isValid = field.value.match(pattern);
	
	if(!isValid) {
		message = "Invalid confirmation code format";
	}
	updateFormError(field.id, message);
	return isValid;
}


function phonePreValidateLocal()
{
	var form = document.forms[formName];
	 
	 var elmt = form.elements[countryCodeFieldName];
	 var countryCode = elmt.options[elmt.selectedIndex].value;
	 
     phonePreValidateWithCC(countryCode, phoneNumberFieldName, false);
}

function handleNewCodeRequest() {
	
	var form = document.forms[formName];
	
	var isAckForm = !form.elements[dataConfirmNeededCheckBoxName].value;
	
	if(!isAckForm) {
		var countryCodeElmt = form.elements[countryCodeFieldName]
		var countryCode = countryCodeElmt.options[countryCodeElmt.selectedIndex].value;
		var phoneNumber = form.elements[phoneNumberFieldName];
	
		if(!phoneValidateWithCC(countryCode, phoneNumber)) {
			return;
		}
	}
	form.elements[codeRequest].value = "1";
	form.submit();
}

function preparePhoneNumberField() {
	var form = document.forms[formName];	 
	var elmt = form.elements[countryCodeFieldName];
	var countryCode = elmt.options[elmt.selectedIndex].value;
	var telNumFinal = form.elements[phoneNumberFieldName].value;
	telNumFinal = "+" + countryCode + " " + telNumFinal;
	
	form.elements[phoneNumberWithCCFieldName].value = telNumFinal;
}

//Used in UserRegistrationAck.jsp

function handleAckFormSubmit() {
	var form = document.forms[formName];
	
	preparePhoneNumberFieldAck();
	
	updateFormError(codeFieldName, "");
	if(isValidCode(form.elements[codeFieldName])) {
		form.submit();
	}
}

function handleNewCodeRequestAck() {
	
	var form = document.forms[formName];
	form.elements[codeRequest].value = "1";
	form.submit();
}

function preparePhoneNumberFieldAck() {
	var numberField = document.getElementById(phoneNumberWithCCFieldName);
	var displayedPhoneNumber = document.getElementById(formattedPhoneNumberTagName);
	
	if(numberField.value == null || numberField.value == "") {
		numberField.value = displayedPhoneNumber.innerHTML;
	}

}


function initAckPage() {
	var phoneNumberInForm = document.getElementById(phoneNumberWithCCFieldName).value;
	if(phoneNumberInForm != null && phoneNumberInForm != "") {
		document.getElementById(formattedPhoneNumberTagName).innerHTML = phoneNumberInForm;
	}
}

//Used in GMS_ConfirmRegistration.jsp

function initPage() {
	var formattedTel = document.getElementById(phoneNumberWithCCFieldName).value;
	if (formattedTel && formattedTel != "")
	{
		var cc = getCountryCode(formattedTel);
		var ph = getPhoneNum(formattedTel);
		selectCC('CountryCodes', 'countryCode', cc);
		document.getElementById(phoneNumberFieldName).value = ph;
	}
}


function handleFormSubmit() {

	clearErrors();
	
	var form = document.forms[formName];
	
	var countryCodeElmt = form.elements[countryCodeFieldName];
	
	var countryCode = countryCodeElmt.options[countryCodeElmt.selectedIndex].value;
	var phoneNumberField = form.elements[phoneNumberFieldName];
	var codeField = form.elements[codeFieldName];
	
	if(phoneValidateWithCC(countryCode, phoneNumberField)
		&& isValidCode(codeField)) {
			
			preparePhoneNumberField();
			form.submit();
	}
}

function clearErrors() {
	updateFormError(phoneNumberFieldName, "");
	updateFormError(codeFieldName, "");
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function buildSampleMtgNotice() {
}
