//[sooper] validate.js v2.1b
var err = 0; var sendError = true;
var errorMessage = '';
var errorAlertMessage = '';
var emptyFieldMessage = '';
var currentForm = '';
var runReturnValue = 0;
var runFieldValue = 1;
var onetimesubmit = 0;
var errorAlertHeader = '';

function submitProcessing(action_val, submitOnce, validate){
	processed = 'false';
	if ( (submitOnce && document.forms[0].action.value != action_val) || !submitOnce ){
		if(validate){
			if(ogncUVal(VD_Form1)){
				document.forms[0].action.value = action_val;
				popUpProcessing('/display.do?jsp=/jsp/register/popup_processing.jsp', 'processing', '360', '163');
				return true;
			}
			else{
				return false;
			}
		}
		else{
			document.forms[0].action.value = action_val;
			popUpProcessing('/display.do?jsp=/jsp/register/popup_processing.jsp', 'processing', '360', '163');
			document.forms[0].submit();
			
		}
	}
	else if(validate){
		return false;
	}
	
}

function submitProcessingNoConfirm(action_val, submitOnce, validate){
	processed = 'false';
	if ( (submitOnce && document.forms[0].action.value != action_val) || !submitOnce ){
		if(validate){
			if(ogncUVal(VD_Form1)){
				document.forms[0].action.value = action_val;
				popUpProcessing('/display.do?jsp=/jsp/register/popup_processing.jsp', 'processing', '360', '163');
				document.forms[0].submit();
			}
		}
		else{
			document.forms[0].action.value = action_val;
			popUpProcessing('/display.do?jsp=/jsp/register/popup_processing.jsp', 'processing', '360', '163');
			document.forms[0].submit();
			
		}
	}
}

function setActionSubmit(arg_which,validateForm) {
	document.forms[0].action.value = arg_which;
	if (validateForm == false){
		if (onetimesubmit == 0){
		document.forms[0].submit();
		onetimesubmit = 1; 
		}
	}
	else{
		ogncUVal(VD_Form1);
	}
}


function submitFormOnceDisable() {
	var tempobj = document.forms[0].submit1;
	tempobj.disabled = true;
	}

function submitFormOnce(arg_which) {
	if (sendError && ogncUVal(arg_which)) {
		sendError = false;
		eval(arg_which[0][1]).submit();
	}
}

function ogncUVal(VDArray) {
	resetErrs();
	return validateForm(VDArray, false);
}

function resetErrs() {
	err=0;
	errorMessage = '';
	errorAlertMessage = '';
	emptyFieldMessage = '';
	errorAlertHeader = '';
	return true;
}

function validateForm(VDArray) {
	currentForm = VDArray[0][1];
	for (x=1; x<VDArray.length; x++) {
		niceName = VDArray[x][1];
		defaultValue = VDArray[x][2];
		for (yc=3; yc<VDArray[x].length; yc++) {
			evaluateFunction(currentForm,VDArray[x],yc);
		}
	}
	if(err>0) {
		if (sendError==true) {
			if (errorAlertHeader == 'errorHSELD') {
				errorAlertMessage=langString('errorHSELD') + "\n\n";
			} else {
				errorAlertMessage=langString('error0') + "\n\n";
			}
			if (emptyFieldMessage.length > 0) {
				errorAlertMessage=errorAlertMessage + langString('error1') + '\n\n   ' + emptyFieldMessage.substring(0,emptyFieldMessage.length - 2) + "\n\n";
				if (errorMessage.length > 0) {
					errorAlertMessage=errorAlertMessage + langString('error2') + '\n\n';
				}
			}
			if (errorMessage.length > 0) {
				errorAlertMessage=errorAlertMessage+ errorMessage + "\n\n";
			}
			alert(errorAlertMessage);
		}
		sendError=true;
		return false;
	}
	else { 
		sendError=true; 
		return true; }
}

/*function evaluateFunction(currentForm, arrayItem, itemNo) {
	runIf = false;
	runWhat = new Array();
	runAgainst = new Array();
	runNo = 0;
	functionName = arrayItem[itemNo][0];
	returnValue = null;
	
	
	if(functionName=='runIf') {
		runIf = true;
		runWhat[runNo] = arrayItem[itemNo];
		runAgainst[runNo] = runFieldValue;
		runNo++;
	} else {
		functionCall = functionName+'(\''+currentForm+'.elements.'+arrayItem[0]+'\',\''+arrayItem[1]+'\',\''+arrayItem[2]+'\'';
		if(arrayItem[itemNo].length>1) {
			for(ze=1; ze<arrayItem[itemNo].length; ze++) {
				if(arrayItem[itemNo][ze][0] && arrayItem[itemNo][ze][0]=='runIf') {
					runIf = true;
					runWhat[runNo] = arrayItem[itemNo][ze];
					runAgainst[runNo] = runReturnValue;
					runNo++;
				}
				functionCall = functionCall + ',\''+arrayItem[itemNo][ze]+'\'';
			}
		}
		functionCall = functionCall+')';
		returnValue = eval(functionCall);
	}

	if(runIf) {
		for(co=0; co<runNo; co++) {
		alert (runAgainst[co]); 
		alert (runReturnValue);
			if((runAgainst[co]==runReturnValue && returnValue==runWhat[co][1]) || (runAgainst[co]==runFieldValue && getFieldValue(currentForm+'.elements.'+arrayItem[0])==runWhat[co][1])) {
				evaluateFunction.call(this,currentForm,eval(runWhat[co][2]),3);
			}
		}
	}
}*/

function evaluateFunction(currentForm, arrayItem, itemNo) {
	runIf = false;
	runWhat = '';
	runAgainst = '';
	functionName = arrayItem[itemNo][0];
	idx = 1;
	if(functionName=='runIf') {
		runWhatField = arrayItem[itemNo][1];
		runAgainst = arrayItem[itemNo][2];
		runIf = true;
		functionName = arrayItem[itemNo][3];
		idx=4;
	}
	
	if ( ((runIf) && (getFieldValue (eval(currentForm+'.'+runWhatField))==runAgainst))|| (!runIf)){
		functionCall = functionName+'(\''+currentForm+'.elements.'+arrayItem[0]+'\',\''+arrayItem[1]+'\',\''+arrayItem[2]+'\'';
		if(arrayItem[itemNo].length>1) {
			for(ze=idx; ze<arrayItem[itemNo].length; ze++) {
				if(arrayItem[itemNo][ze][0] && arrayItem[itemNo][ze][0]=='runIf') {
					runIf = true;
					runWhat[runNo] = arrayItem[itemNo][ze];
					runAgainst[runNo] = runReturnValue;
					runNo++;
				}
				functionCall = functionCall + ',\''+arrayItem[itemNo][ze]+'\'';
			}
		}
		functionCall = functionCall+')';

		returnValue = eval(functionCall);
	}
}

function getFieldValue(arg_whichField) {
	fieldObj = eval(arg_whichField);
	if(fieldObj.type=='select-one' || fieldObj.type=='select-multiple')	{
		return(fieldObj.options[fieldObj.selectedIndex].value);
	} else if(fieldObj.type=='checkbox') {
		if(fieldObj.checked) return true;
		else return false;
	} else if(fieldObj[0] && fieldObj[0].type=='radio') {
		for(var i=0;i<fieldObj.length;i++) {
			if(fieldObj[i].checked) {
				return fieldObj[i].value;
				i=-1;
				return true;
				break;
			}
		}
		if(i!=-1) return false;
	}
	else if(fieldObj.type=='radio') {
		if(fieldObj.checked) return true;
		else return false;
	}
	else { return(fieldObj.value); }
}


function checkEmptyDropdown(arg_whichField,arg_niceName,arg_default) { 
	choice = eval(arg_whichField+".selectedIndex");
    if (choice == 0) {
    flagError(langString('checkDropdown', arg_niceName));
	return true;
    } else { return false; }
}    


function checkEmptyRadio(arg_whichField,arg_niceName,arg_default) {
	fieldValue = getFieldValue(arg_whichField);
	if (isEmpty(fieldValue,arg_default)) {
		flagError(langString('checkRadio', arg_niceName));
		return true;
	} else { return false; }
}


function CheckifAtLeastOneCheckbox(arg_whichField,arg_niceName,arg_default,arg_checkAgainst) {
	fieldValue = getFieldValue(arg_whichField);
	otherFieldValue = getFieldValue(arg_checkAgainst);
	if ((fieldValue == false) && (otherFieldValue == false)) {
		flagError(langString('checkAtLeastOneCheckbox', arg_niceName));
		return true;
	} else { return false; }
}

function CheckBothCheckboxes(arg_whichField,arg_niceName,arg_default,arg_checkAgainst,arg_niceName2) {
	fieldValue = getFieldValue(arg_whichField);
	otherFieldValue = getFieldValue(arg_checkAgainst);
	if ((fieldValue == false) && (otherFieldValue == true)) {
		flagError(langString('checkCompareCheckboxes', arg_niceName, arg_niceName2));
		return true;
	} else { return false; }
}

function checkEmpty(arg_whichField,arg_niceName,arg_default) {
	fieldValue = getFieldValue(arg_whichField);
	if (isEmpty(fieldValue,arg_default)) {
		err++;
		if (emptyFieldMessage.substring(emptyFieldMessage.lastIndexOf('\n')).length) {
			emptyFieldMessage = emptyFieldMessage + '\n   ';
		}
		emptyFieldMessage = emptyFieldMessage + arg_niceName+'     ';
		return true;
	} else { return false; }
}

function checkEmptyAgree(arg_whichField,arg_niceName,arg_default) {
	fieldValue = getFieldValue(arg_whichField);
	if (isEmpty(fieldValue,arg_default)) {
		flagError(langString('checkEmptyAgree', arg_niceName));
		return true;
	} else { return false; }
}

function isEmpty(arg_value,arg_default) {
	if (arg_value.length==0 || arg_value=='' || (arg_value==false) || (arg_value==arg_default && arg_default!='')) {
		return true;
	} else { return false; }
}

function checkNumeric(arg_whichField,arg_niceName,arg_default) {
	fieldValue = getFieldValue(arg_whichField);
	if (isNaN(fieldValue) && (fieldValue!=arg_default || arg_default=='')) {
		flagError(langString('checkNumeric', arg_niceName));
		return true;
	} else { return false; }
}
/* Check Phone number */
function checkPhoneNumber(arg_whichField,arg_niceName) {
	fieldValue = getFieldValue(arg_whichField);
	regEx = /^\d{3}[\-]\d{3}[\-]\d{4}$/;
	if ((fieldValue.length>0) && (!regEx.test(fieldValue))) {
		flagError(langString('checkPhoneNumber', arg_niceName));
		return true;
	} else { return false; }
}

function checkAlpha(arg_whichField,arg_niceName) {
	fieldValue = getFieldValue(arg_whichField);
	regEx = /(\d+)|(^\s+)/;
	if ((fieldValue.length>0) && (regEx.test(fieldValue))) {
		flagError(langString('checkAlpha', arg_niceName));
		return true;
	} else { return false; }
}

function checkAlphaNumeric(arg_whichField,arg_niceName) {
	fieldValue = getFieldValue(arg_whichField);
	regEx = /\W+/;
	if ((fieldValue.length>0) && (regEx.test(fieldValue))) {
		flagError(langString('checkAlphaNumeric', arg_niceName));
		return true;
	} else { return false; }
}

function checkIllegalCharacters(arg_whichField,arg_niceName) {
	fieldValue = getFieldValue(arg_whichField);
	var regEx = /^([a-zA-Z0-9_\-\@\.]+)$/;
	if ((fieldValue.length>0) && (!regEx.test(fieldValue))) {
		flagError(langString('checkIllegalCharacters', arg_niceName));
		return true;
	} else { return false; }
}

function checkIllegalCharactersPassword(arg_whichField,arg_niceName) {
	fieldValue = getFieldValue(arg_whichField);
	if( fieldValue.search('\"') > 0 || fieldValue.search('\'') > 0 || 
	    fieldValue.search('\`') > 0 || fieldValue.search('&') > 0)
	{
		flagError(langString('checkIllegalCharactersPassword', arg_niceName));
		return true;
	} 
	else 
		{ return false; }
}

function checkLength(arg_whichField,arg_niceName,arg_default,arg_length) {
	fieldValue = getFieldValue(arg_whichField);
	if (fieldValue.length!=eval(arg_length) && (fieldValue!=arg_default || arg_default=='')) {
		flagError(langString('checkLength', arg_niceName, arg_length));
		return true;
	} else { return false; }
}

function checkMinLength(arg_whichField,arg_niceName,arg_default,arg_length) {
	fieldValue = getFieldValue(arg_whichField);
	if (fieldValue<=0) return true;
	if (fieldValue.length < eval(arg_length) && (fieldValue!=arg_default || arg_default=='')) {
		flagError(langString('checkMinLength', arg_niceName, arg_length));
		return true;
	} else { return false; }
}

function checkCanadianPostal(arg_whichField,arg_niceName,arg_default) {
	fieldValue = getFieldValue(arg_whichField);
	if(isNotCanadianPostal(fieldValue)) {
		flagError(langString('zipPostal', arg_niceName));
		return true;
	} else { return false; }
}

function isNotCanadianPostal(arg_value) {
	regEx = /^[a-zA-Z][0-9][a-zA-Z][0-9][a-zA-Z][0-9]$/;
	regEx2 = /^[a-zA-Z][0-9][a-zA-Z]\s[0-9][a-zA-Z][0-9]$/;
	if((arg_value.length>0) && ( (!(regEx2.test(arg_value))) && (!(regEx.test(arg_value)))  )   ) {
		return true;
	} else { return false; }
}

function checkEmail(arg_whichField,arg_niceName,arg_default) {
	fieldValue = getFieldValue(arg_whichField);
	var regEx1 = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	if((fieldValue.length>0) && (!regEx1.test(fieldValue))) {
		flagError(langString('checkEmail', arg_niceName));
		return true;
	} else { return false; }
}


function checkSkillTestAnswer(arg_whichField,arg_niceName,arg_default) {
	fieldValue = getFieldValue(arg_whichField);
	if(arg_default.length >0 && (fieldValue.length ==0 || arg_default.indexOf(fieldValue) < 0)) {
		flagError(langString('checkSkillTestAnswer', arg_niceName));
		return true;
	} else { return false; }
}



function paySympatico() {
	document.forms[0].ccType.value='-1';
	document.forms[0].ccType.disabled=true;
	document.forms[0].ccNumber.value='';
	document.forms[0].ccNumber.disabled=true;
	document.forms[0].ccHolderName.value='';
	document.forms[0].ccHolderName.disabled=true;
	document.forms[0].ccExpYear.value='-1';
	document.forms[0].ccExpYear.disabled=true;
	document.forms[0].ccExpMonth.value='-1';
	document.forms[0].ccExpMonth.disabled=true;

	document.forms[0].sympaticoEmail.disabled=false;
	document.forms[0].sympaticoId.disabled=false;

	fieldValue = getFieldValue(document.forms[0].parentSympEmail);
	var regEx1 = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	if((fieldValue.length>0) && regEx1.test(fieldValue) && fieldValue.search('sympatico.ca') >= 1) {
		document.forms[0].sympaticoEmail.value=fieldValue;
	} else { return false; }
}

function payCC() {
	document.forms[0].sympaticoEmail.value='';
	document.forms[0].sympaticoEmail.disabled=true;
	document.forms[0].sympaticoId.value='';
	document.forms[0].sympaticoId.disabled=true;
	
	document.forms[0].ccType.disabled=false;
	document.forms[0].ccNumber.disabled=false;
	document.forms[0].ccHolderName.disabled=false;
	document.forms[0].ccExpYear.disabled=false;
	document.forms[0].ccExpMonth.disabled=false;
}


function paySympatico2() { //For non-standard forms
	document.forms[0].ccType.value='-1';
	document.forms[0].ccType.disabled=true;
	document.forms[0].ccNum.value='';
	document.forms[0].ccNum.disabled=true;
	document.forms[0].cHolderName.value='';
	document.forms[0].cHolderName.disabled=true;
	document.forms[0].year.value='-1';
	document.forms[0].year.disabled=true;
	document.forms[0].month.value='-1';
	document.forms[0].month.disabled=true;

	document.forms[0].sympaticoEmail.disabled=false;
	document.forms[0].sympaticoId.disabled=false;

	getFieldValue(document.forms[0].parentSympEmail);
	var regEx1 = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	if((fieldValue.length>0) && regEx1.test(fieldValue) && fieldValue.search('sympatico.ca') >= 1) {
		document.forms[0].sympaticoEmail.value=fieldValue;
	} else { return false; }
}

function payCC2() { //For non-standard forms
	document.forms[0].sympaticoEmail.value='';
	document.forms[0].sympaticoEmail.disabled=true;
	document.forms[0].sympaticoId.value='';
	document.forms[0].sympaticoId.disabled=true;
	
	document.forms[0].ccType.disabled=false;
	document.forms[0].ccNum.disabled=false;
	document.forms[0].cHolderName.disabled=false;
	document.forms[0].year.disabled=false;
	document.forms[0].month.disabled=false;
}

function checkPassword(arg_whichField,arg_niceName,arg_default,arg_checkAgainst,arg_minLength) {
	password1=getFieldValue(arg_whichField);
	password2=getFieldValue(arg_checkAgainst);
	if(password1!=password2) {
		flagError(langString('checkPasswordMatch'));
		return true;
	} else { return false; }
}

function checkCC(arg_whichField,arg_niceName,arg_default) {
		field=getFieldValue(arg_whichField);
		i = field.length;
		j = field.substring(0, 4);
    	if (i<=0) return true;

		if( field.search(' ') > 0 )
		{
			flagError(langString('checkCC'));
			return true;
		}
        if(4000 <= j && j <= 4999 && (i == 13 || i == 16))
            return false;// Visa
        else if(5100 <= j && j <= 5599 && i == 16)
            return false;// Mastercard 
        else if((3400 <= j && j <= 3499 || 3700 <= j && j <= 3799) && i == 15)
            return false;// American Express
        else{
            flagError(langString('checkCC'));
			return true;
		}

}

function checkCCdate() {
	chosenmonth = Number(document.forms[0].ddlMonth.value);
	chosenyear = Number('20' + document.forms.billing.ddlYear.value);

	today = new Date();
	presentmonth = today.getMonth()+1;
	presentyear = today.getYear();

	if ((presentmonth > chosenmonth && presentyear == chosenyear) || (presentyear > chosenyear)) {
		if (chosenmonth != -1 && chosenyear != -1){
			flagError(langString('checkCCdate'));
		return true;
		}
	}
}


function checkCCdate2() { //For non-standard forms
	chosenmonth = Number(document.forms[0].month.value);
	chosenyear = Number('20' + document.forms[0].year.value);

	today = new Date();
	presentmonth = today.getMonth()+1;
	presentyear = today.getYear();

	if ((presentmonth > chosenmonth && presentyear == chosenyear) || (presentyear > chosenyear)) {
		if (chosenmonth != -1 && chosenyear != -1){
			flagError(langString('checkCCdate'));
		return true;
		}
	}
}


function flagError(arg_errorText) {
	errorMessage=errorMessage+'   '+arg_errorText+'\n';
	err++;
}

function throwError(errorText) {
	flagError(errorText);
}

function clearDefault(arg_whichField, arg_defaultValue) {
	if (arg_whichField.value == arg_defaultValue) { arg_whichField.value=""; }
}

function checkURL(arg_whichField,arg_niceName) {
	fieldValue = getFieldValue(arg_whichField);
	if ((fieldValue.length>0) && ((fieldValue.length<7) || (fieldValue.substring(0,7)!='http://'))) {
		{ flagError('The ' + arg_niceName + ' field does not appear to be a proper URL'); }
		return true;
	} else { return false; }
}

// Messages

function langString(stringNumber) {
	if (stringNumber == 'error0') {
		return 'Sorry, the form could not be submitted yet. Please correct the following fields and re-enter.';
	}
	if (stringNumber == 'errorHSELD') {
		return 'Sorry!';
	}
	if (stringNumber == 'error1') {
		return 'The following fields cannot be left empty:';
	}
	if (stringNumber == 'error2') {
		return 'Additionally:';
	}
	if (stringNumber == 'checkNumeric') {
		return 'The '+langString.arguments[1]+' field must be a number.';
	}
	if (stringNumber == 'checkAlpha') {
		return 'The '+langString.arguments[1]+' field must contain only alpha characters (a-Z).';
	}
	if (stringNumber == 'checkAlphaNumeric') {
		return 'The '+langString.arguments[1]+' field must contain only alpha or number characters.';
	}
	if (stringNumber == 'checkPhoneNumber') {
		return 'The '+langString.arguments[1]+' field must be in the format 555-555-5555 and can only contain "-"';
	}
	if (stringNumber == 'checkIllegalCharacters') {
		return 'The '+langString.arguments[1]+' field may only contain the following special characters:  "_ @ . "';
	}
	if (stringNumber == 'checkIllegalCharactersPassword') {
		return 'The '+langString.arguments[1]+' field may not contain the following special characters:  \" \' \' \` \`&amp;';
	}
	if (stringNumber == 'checkLength') {
		return 'The '+langString.arguments[1]+' field must be '+langString.arguments[2]+' characters long.';
	}
	if (stringNumber == 'checkMinLength') {
		return 'The '+langString.arguments[1]+' field must be at least '+langString.arguments[2]+' characters long.';
	}
	if (stringNumber == 'checkEmail') {
		return 'The '+langString.arguments[1]+' field is not a valid email address.';
	}
	if (stringNumber == 'checkSympaticoEmail') {
		return 'The Sympatico email address does not appear to be correct.';
	}
	if (stringNumber == 'sympaticoId') {
		return 'The '+langString.arguments[1]+' field is not a valid Sympatico ID.';
	}
	if (stringNumber == 'checkPasswordMatch') {
		return 'The Password fields do not match.';
	}
		if (stringNumber == 'zipPostal') {
		return 'The '+langString.arguments[1]+' field does not appear to be in the correct format.';
	}
	if (stringNumber == 'checkCC') {
		return 'The Credit Card Number field is not a valid credit card number.';
	}
	if (stringNumber == 'checkCCdate') {
		return 'The Credit Card expiry date is not valid.';
	}
	if (stringNumber == 'checkCompareCheckboxes') {
		return 'The '+langString.arguments[1]+' box must be checked, if the '+langString.arguments[2]+' box is selected.';
	}
	if (stringNumber == 'checkAtLeastOneCheckbox') {
		return 'At least one of the '+langString.arguments[1]+' boxes must be checked, before submitting this form.';
	}
	if (stringNumber == 'checkDropdown') {
		return 'You did not choose an option from the '+langString.arguments[1]+' drop-down list.';
	}
	if (stringNumber == 'checkDropdownHSELD') {
		return 'This offer is exclusive to our High Speed and Long Distance bundle subscribers.';
	}
	if (stringNumber == 'checkRadio') {
		return 'You did not choose an option for the '+langString.arguments[1]+'.';
	}
	if (stringNumber == 'checkEmptyAgree') {
		return 'You did not agree to '+langString.arguments[1]+'.';
	}
	if (stringNumber == 'checkSkillTestAnswer') {
		return 'You did not enter the correct skill-testing answer.';
	}
}
	function validation()
	{
		var name = document.getElementById("name");
		var email = document.getElementById("ea");
		if(name.value=="")
		{
			document.getElementById("lblMes").value = "Name is required field";
			name.focus();
			return false;
		}
		else if(email.value=="")
		{
			document.getElementById("lblMes").value = "Email is required field";
			email.focus();
			return false;
		}
		else
		{
			document.getElementById("lblMes").value =="";
		}
		return true;
	}
