﻿//
// Form validation functions for web pages
//

//
// validateMlist
// 
// Validates form in maillist.htm
//
function validateMlist(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    pageForm.maillistError.value = "";
    pageForm.emailError.value = "";

    if (pageForm.maillist[0].checked != 1 && 
	pageForm.maillist[1].checked != 1) {
        valid = false;

        pageForm.maillistError.value = "S&eacute;lectionner une liste de diffusion";
    }
    else {
        pageForm.maillistError.value = "";
    }

    if (isValidEmail(pageForm.email.value)) {
	pageForm.emailError.value = "";
    }
    else {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.email.focus();
	    alreadyFocused = true;
	}

  	if (pageForm.email.value == "") {
            pageForm.emailError.value = "Entrer une adresse e-mail";
        }
        else {
	    pageForm.emailError.value = "Entrer un e-mail VALIDE";
        }
    }               

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;
  
}

//
// validateMchangeC
//
// Validates the change form in mailchange.htm
//
function validateMchangeC(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    //
    // Clear the errors on this form before we start, but also
    // clear the error on the other form as well.
    //
    pageForm.emailOldError.value = "";
    pageForm.emailNewError.value = "";
    document.forms[2].emailError.value = "";


    if (isValidEmail(pageForm.emailold.value)) {
	pageForm.emailOldError.value = "";
    }
    else {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.emailold.focus();
            alreadyFocused = true;
	}

  	if (pageForm.emailold.value == "") {
            pageForm.emailOldError.value = "Entrer une adresse e-mail";
        }
        else {
	    pageForm.emailOldError.value = "Entrer un e-mail VALIDE";
        }
    }               

    if (isValidEmail(pageForm.emailnew.value)) {
	pageForm.emailNewError.value = "";
    }
    else {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.emailnew.focus();
            alreadyFocused = true;
	}

  	if (pageForm.emailnew.value == "") {
            pageForm.emailNewError.value = "Entrer une adresse e-mail";
        }
        else {
	    pageForm.emailNewError.value = "Entrer un e-mail VALIDE";
        }
    }               

    if (pageForm.emailnew.value == pageForm.emailold.value &&
	valid == true) {
	pageForm.emailNewError.value = "Les adresses sont identiques";
	valid = false;
    }

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;
}

//
// validateMchangeU
//
// Validates the unsubscribe form in mailchange.htm
//
function validateMchangeU(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    document.forms[1].emailNewError.value = "";
    document.forms[1].emailOldError.value = "";
    pageForm.emailError.value = "";

    if (isValidEmail(pageForm.email.value)) {
	pageForm.emailError.value = "";
    }
    else {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.email.focus();
            alreadyFocused = true;
	}

  	if (pageForm.email.value == "") {
            pageForm.emailError.value = "Entrer une adresse e-mail";
        }
        else {
	    pageForm.emailError.value = "Entrer un e-mail VALIDE";
        }
    }               

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;
}

//
// validateWZOptOut
//
// Validates the unsubscribe form in optout.htm
//
function validateWZOptOut(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    pageForm.emailError.value = "";

    if (isValidEmail(pageForm.email.value)) {
	pageForm.emailError.value = "";
    }
    else {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.email.focus();
            alreadyFocused = true;
	}

  	if (pageForm.email.value == "") {
            pageForm.emailError.value = "Entrer une adresse e-mail";
        }
        else {
	    pageForm.emailError.value = "Entrer un e-mail VALIDE";
        }
    }               

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;
}


//
// validateX
//
// Validates forms in xtech.htm,xsuggest.htm,betaprob.htm
//
function validateX(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    pageForm.nameError.value = "";
    pageForm.fromError.value = "";
    pageForm.descriptError.value = "";

//    if (pageForm.Name.value == "") {
//	valid = false;
//
//	if (alreadyFocused == false) {
//	    pageForm.Name.focus();
//            alreadyFocused = true;
//	}
//
//	pageForm.nameError.value = "Entrer un nom";
//    }
//    else {
//        pageForm.nameError.value = "";
//    }


    if (isValidEmail(pageForm.From.value)) {
        pageForm.fromError.value = "";
    }
    else {
        valid = false;

	if (alreadyFocused == false) {
	    pageForm.From.focus();
            alreadyFocused = true;
	}

        if (pageForm.From.value == "") {
            pageForm.fromError.value = "Entrer une adresse e-mail";
        }
        else {
            pageForm.fromError.value = "Entrer un e-mail VALIDE";
        }
    }
      
    if (pageForm.Descript.value == "") {
         valid = false;

        if (alreadyFocused == false) {
	    pageForm.Descript.focus();
            alreadyFocused = true;
	}

	//
	// This script is used to validate several forms.
	// Grab the hidden field passed in to the CGI
	// to find out what the name of the htm page is
	// and set the error message accordingly.
	//
	if (pageForm.Page.value == "xsuggest.htm") {
	    pageForm.descriptError.value = "Entrer une suggestion";
	}
	else if (pageForm.Page.value == 'send_page.htm') {
		pageForm.descriptError.value = "Entrer des adresses e-mail";
	}
	else if (pageForm.Page.value == "xsales.htm") {
	    pageForm.descriptError.value = "Entrer une question";
        }
	else {
            pageForm.descriptError.value = "Entrer une description";
	}
    }
    else {
        pageForm.descriptError.value = "";
    }

    if (valid == true) {
	disableSubmit(pageForm);
    }


    return valid;

}

//
// validateXreg
//
// Validates form on xregprob.htm
//
function validateXreg(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    pageForm.nameError.value = "";
    pageForm.fromError.value = "";

    if (pageForm.Name.value == "") {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.Name.focus();
            alreadyFocused = true;
	}

	pageForm.nameError.value = "Entrer un nom";
    }
    else {
        pageForm.nameError.value = "";
    }

    if (isValidEmail(pageForm.From.value)) {
        pageForm.fromError.value = "";
    }
    else {
        valid = false;
	
	if (alreadyFocused == false) {
	    pageForm.From.focus();
            alreadyFocused = true;
	}

        if (pageForm.From.value == "") {
            pageForm.fromError.value = "Entrer une adresse e-mail";
        }
        else {
            pageForm.fromError.value = "Entrer un e-mail VALIDE";
	}
    }

    if (valid == true) {
	disableSubmit(pageForm);
    }
        
    return valid;
}

//
// validateXaddr
//
// Validates form on xaddr.htm
//
function validateXaddr(pageForm) {
    var valid = true;
    var alreadyFocused = false;
    var emailChange = false;
    var uspsChange = false;


    pageForm.nameError.value = "";
    pageForm.cEmailError.value = "";
    pageForm.nEmailError.value = "";
    pageForm.newAddrError.value = "";
    pageForm.oldAddrError.value = "";

    if (pageForm.Name.value == "") {
        valid = false;

	if (alreadyFocused == false) {
	    pageForm.Name.focus();
            alreadyFocused = true;
	}

	pageForm.nameError.value = "Entrer un nom";
    }
    else {
        pageForm.nameError.value = "";
    }

	
    //
    // Must have a current Email address to track 
    // this email (and find the user).
    //
    if (isValidEmail(pageForm.cEmail.value)) {
        pageForm.cEmailError.value = "";
    }
    else {
        valid = false;

        if (alreadyFocused == false) {
	    pageForm.cEmail.focus();
            alreadyFocused = true;
	}

        if (pageForm.cEmail.value == "") {
            pageForm.cEmailError.value = "Entrer une adresse e-mail";
        }
        else {
            pageForm.cEmailError.value = "Entrer un e-mail VALIDE";
        }
    }

    //
    // If current email and new email have values, validate them, as we must
    // assume this is a change of email address.
    //
    if (pageForm.nEmail.value != "") {
	emailChange = true;

        if (isValidEmail(pageForm.nEmail.value)) {
	    if (pageForm.nEmail.value == pageForm.cEmail.value) {
		valid = false;

	        if (alreadyFocused == false) {
	            pageForm.nEmail.focus();
                    alreadyFocused = true;
	        }

		pageForm.nEmailError.value = "Les adresses sont identiques";
	    }
	    else {
                pageForm.nEmailError.value = "";
            }
        }
        else {
            valid = false;

	    if (alreadyFocused == false) {
	        pageForm.nEmail.focus();
                alreadyFocused = true;
	    }

            if (pageForm.nEmail.value == "") {
                pageForm.nEmailError.value = "Entrer une adresse e-mail";
            }
            else {
                pageForm.nEmailError.value = "Entrer un e-mail VALIDE";
            }
        }
    }

    if (emailChange == false && pageForm.Name.value != "" 
        && pageForm.cEmail.value != "") {

        if (pageForm.Old_addr.value == "" ) {
            valid = false;

	    if (alreadyFocused == false) {
	        pageForm.Old_addr.focus();
                alreadyFocused = true;
	    }

	    pageForm.oldAddrError.value = "Entrer l’ancienne adresse";
        }
        else {
            pageForm.oldAddrError.value = "";
        }


        if (pageForm.New_addr.value == "" ) {
            valid = false;

	    if (alreadyFocused == false) {
	        pageForm.New_addr.focus();
                alreadyFocused = true;
	    }

	    pageForm.newAddrError.value = "Entrer la nouvelle adresse";
        }
        else {
            pageForm.newAddrError.value = "";
        }
    }

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;

}

//
// validateUpgrade
//
// Validates form on upgrade.htm
//
function validateupgrade(pageForm) {
    var valid = true;
    var alreadyFocused = false;
    var emailChange = false;
    var uspsChange = false;

    pageForm.nameError.value = "";
    pageForm.cEmailError.value = "";
    pageForm.nEmailError.value = "";
    pageForm.newAddrError.value = "";
    pageForm.oldAddrError.value = "";
    pageForm.numberError.value = "";
    pageForm.RegcodeError.value = "";

    if (pageForm.Name.value == "") {
        valid = false;

	if (alreadyFocused == false) {
	    pageForm.Name.focus();
            alreadyFocused = true;
	}

	pageForm.nameError.value = "Entrer un nom";
    }
    else {
        pageForm.nameError.value = "";
    }

    if (pageForm.User[1].checked == true) {
        if (!isInteger(pageForm.Number.value)) {
            valid = false;
            pageForm.numberError.value = "Entrer un nombre";   
        }
    }
    else {
        pageForm.Number.value = "";

        //
        // Must have a valid 9.0 reg code
        //
        if (isValidRegcode(pageForm.Regcode.value)) {
 	    pageForm.RegcodeError.value = "";
        }
        else {
	    valid = false;
		
	    if (alreadyFocused == false) {
  	        pageForm.Regcode.focus();
	        alreadyFocused = true;
 	    }
	
	    if (pageForm.Regcode.value =="") {
  	        pageForm.RegcodeError.value = "Entrer le code d’enregistrement";
	    }
	    else {
	        pageForm.RegcodeError.value = "Entrer un code d’enregistrement VALIDE";
	    }
        }
    }					
	
    //
    // Must have a current Email address to track 
    // this email (and find the user).
    //
    if (isValidEmail(pageForm.cEmail.value)) {
        pageForm.cEmailError.value = "";
    }
    else {
        valid = false;

        if (alreadyFocused == false) {
	    pageForm.cEmail.focus();
            alreadyFocused = true;
	}

        if (pageForm.cEmail.value == "") {
            pageForm.cEmailError.value = "Entrer une adresse e-mail";
        }
        else {
            pageForm.cEmailError.value = "Entrer un e-mail VALIDE";
        }
    }

    //
    // If current email and new email have values, validate them, as we must
    // assume this is a change of email address.
    //
    if (pageForm.nEmail.value != "") {
	emailChange = true;

        if (isValidEmail(pageForm.nEmail.value)) {
	    if (pageForm.nEmail.value == pageForm.cEmail.value) {
		valid = false;

	        if (alreadyFocused == false) {
	            pageForm.nEmail.focus();
                    alreadyFocused = true;
	        }

		pageForm.nEmailError.value = "Les adresses sont identiques";
	    }
	    else {
                pageForm.nEmailError.value = "";
            }
        }
        else {
            valid = false;

	    if (alreadyFocused == false) {
	        pageForm.nEmail.focus();
                alreadyFocused = true;
	    }

            if (pageForm.nEmail.value == "") {
                pageForm.nEmailError.value = "Entrer une adresse e-mail";
            }
            else {
                pageForm.nEmailError.value = "Entrer un e-mail VALIDE";
            }
        }
    }

    if (emailChange == false && pageForm.Name.value != "" 
        && pageForm.cEmail.value != "") {

/*****        if (pageForm.Old_addr.value == "" ) {
            valid = false;

	    if (alreadyFocused == false) {
	        pageForm.Old_addr.focus();
                alreadyFocused = true;
	    }

	    pageForm.oldAddrError.value = "Entrer l’ancienne adresse";
        }
        else {
            pageForm.oldAddrError.value = "";
        }


        if (pageForm.New_addr.value == "" ) {
            valid = false;

	    if (alreadyFocused == false) {
	        pageForm.New_addr.focus();
                alreadyFocused = true;
	    }

	    pageForm.newAddrError.value = "Entrer la nouvelle adresse";
        }
        else {
            pageForm.newAddrError.value = "";
        }   
******/
    }

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;

}


//
// validateA
//
// Validates form on aes_info.htm
//
function validateA(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    pageForm.emailError.value = "";


    if (isValidEmail(pageForm.email.value)) {
	pageForm.emailError.value = "";
    }
    else {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.email.focus();
            alreadyFocused = true;
	}

  	if (pageForm.email.value == "") {
            pageForm.emailError.value = "Entrer une adresse e-mail";
        }
        else {
	    pageForm.emailError.value = "Entrer un e-mail VALIDE";
        }
    }               

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;
}

//
// validateZ
//
// Validates form on zip2.htm
//
function validateZ(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    pageForm.emError.value = "";
    pageForm.kzcError.value = "";
    pageForm.kzlError.value = "";
    pageForm.vcbError.value = "";
    pageForm.vneError.value = "";

    //
    // Need to select a version...
    //
    if (!pageForm.Release[0].checked &&
        !pageForm.Release[1].checked &&
        !pageForm.Release[2].checked &&
        !pageForm.Release[3].checked &&
        !pageForm.Release[4].checked &&
	!pageForm.Release[5].checked &&
	!pageForm.Release[6].checked &&
	!pageForm.Release[7].checked ) {
        valid = false;
	if (alreadyFocused == false) {
           pageForm.Release[0].focus;
           alreadyFocused = true;
        }

        pageForm.vcbError.value = "S&eacute;lectionner la version";
    }
         


    //
    // If Release 9.0 beta is checked, and the
    // VersionNeededToExtract text box is empty, 
    // let them know.
    //
    if ((pageForm.Release[3].checked ||
         pageForm.Release[4].checked) &&
        pageForm.VersionNeededToExtract.value == "") {
	valid = false;
	if (alreadyFocused == false) {
            pageForm.VersionNeededToExtract.focus();
            alreadyFocused = true;
        }
	pageForm.vneError.value = "Entrer la version";
    }

    //
    // If they say "Oui" to knowing what Zip utility
    // was used, and they didn't enter it, let them
    // know.
    //
    if (pageForm.ZipCreate.value == "" &&
        pageForm.KnowZipCreate[0].checked) {
	valid = false;
	if (!alreadyFocused) {
	    pageForm.ZipCreate.focus();
            alreadyFocused = true;
        }
	pageForm.kzcError.value = "Entrer un nom";
    }

    //
    // If they say Yes, the file is available, and 
    // they don't say where, let them know.
    // (The "Non" choices will be disabled by an onChange)
    //
    if (pageForm.KnowZipLocation[0].checked && 
        pageForm.ZipLocation.value == "") {
	valid = false;
	if (!alreadyFocused) {
  	    pageForm.ZipLocation.focus();
            alreadyFocused = true;
        }
	pageForm.kzlError.value = "Entrer l'emplacement";
    }
       
    //
    // If it is a blank email or invalid email, 
    // let them know.
    //
    if (isValidEmail(pageForm.ContactEmail.value)) {
	pageForm.emError.value = "";
    }
    else {
	valid = false;
	if (!alreadyFocused) {
	    pageForm.ContactEmail.focus();
            alreadyFocused = true; 
        }
  	if (pageForm.ContactEmail.value == "") {
            pageForm.emError.value = "Entrer une adresse e-mail";
        }
        else {
	    pageForm.emError.value = "Entrer un e-mail VALIDE";
        }
    }               

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;
}

  
//
// validateBetaA
//
// Validates form in betapply.htm
//
function validateBetaA(pageForm) {
    var valid = true;
    var alreadyFocused = false;

    pageForm.nameError.value = "";
    pageForm.paddr1Error.value = "";
    pageForm.cityError.value = "";
    pageForm.stateError.value = "";
    pageForm.phoneError.value = "";
    pageForm.emailError.value = "";


    if (pageForm.Name.value == "") {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.Name.focus();
            alreadyFocused = true;
	}

	pageForm.nameError.value = "Entrer un nom";
    }
    else {
        pageForm.nameError.value = "";
    }

    if (pageForm.PAddr1.value == "") {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.PAddr1.focus();
            alreadyFocused = true;
	}

	pageForm.paddr1Error.value = "Entrer l’adresse postale";
    }
    else {
        pageForm.nameError.value = "";
    }

    if (pageForm.City.value == "") {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.City.focus();
            alreadyFocused = true;
	}

	pageForm.cityError.value = "Entrer la ville";
    }
    else {
        pageForm.cityError.value = "";
    }

    if (pageForm.State.value == "") {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.State.focus();
            alreadyFocused = true;
	}

	pageForm.stateError.value = "Entrer l’&Eacute;tat";
    }
    else {
        pageForm.stateError.value = "";
    }

    if (pageForm.Phone.value == "") {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.Phone.focus();
            alreadyFocused = true;
	}

	pageForm.phoneError.value = "Entrer le t&eacute;l&eacute;phone";
    }
    else {
        pageForm.phoneError.value = "";
    }

    if (isValidEmail(pageForm.EmAddr.value)) {
        pageForm.emailError.value = "";
    }
    else {
        valid = false;

	if (alreadyFocused == false) {
	    pageForm.EmAddr.focus();
            alreadyFocused = true;
	}

        if (pageForm.EmAddr.value == "") {
            pageForm.emailError.value = "Entrer une adresse e-mail";
        }
        else {
            pageForm.emailError.value = "Entrer un e-mail VALIDE";
        }
    }
      
    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;

}

//
// validateC
//
// Validates forms created via template in c.cgi, a
// mailing campaign change of address form.
//
function validateC(pageForm) {

    var valid = true;
    var alreadyFocused = false;

    pageForm.nameError.value = "";
    pageForm.emailError.value = "";
    pageForm.addrError.value = "";

    if (pageForm.Name.value == "") {
	valid = false;

	if (alreadyFocused == false) {
	    pageForm.Name.focus();
            alreadyFocused = true;
	}

	pageForm.nameError.value = "Entrer un nom";
    }
    else {
        pageForm.nameError.value = "";
    }


    if (isValidEmail(pageForm.Email.value)) {
        pageForm.emailError.value = "";
    }
    else {
        valid = false;

	if (alreadyFocused == false) {
	    pageForm.Email.focus();
            alreadyFocused = true;
	}

        if (pageForm.Email.value == "") {
            pageForm.emailError.value = "Entrer une adresse e-mail";
        }
        else {
            pageForm.emailError.value = "Entrer un e-mail VALIDE";
        }
    }
      
    if (pageForm.Address.value == "") {
         valid = false;

        if (alreadyFocused == false) {
	    pageForm.Address.focus();
            alreadyFocused = true;
	}

        pageForm.addrError.value = "Entrer une adresse";
    }
    else {
        pageForm.addrError.value = "";
    }

    if (valid == true) {
	disableSubmit(pageForm);
    }

    return valid;

}


//
// disableSubmit
// 
// Disables the submit button in successful form validation
// to prevent double click submits.
//
function disableSubmit(pageForm) {
    if (document.all || document.getElementById) {
	for (i = 0; i < pageForm.length; i++) {
	    var tempobj = pageForm.elements[i];
	    if (tempobj.type.toLowerCase() == "soumettre")
		tempobj.disabled = true;
        }
    }
}

function isValidRegcode(regcode) {
   var re = /^[0-9A-Za-z]+$/
    while (regcode.charAt(0) == " ") {
        regcode = regcode.substring(1,regcode.length);
    }

    while (regcode.charAt(regcode.length-1) == " ") {
        regcode = regcode.substring(0,regcode.length - 1);
    }

    return re.test(regcode);
}
function isValidEmail(emailAddress) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

    //
    // Strip leading and trailing spaces off of the email
    // address
    //
    while (emailAddress.charAt(0) == " ") {
        emailAddress = emailAddress.substring(1,emailAddress.length);
    }

    while (emailAddress.charAt(emailAddress.length-1) == " ") {
        emailAddress = emailAddress.substring(0,emailAddress.length - 1);
    }

    return re.test(emailAddress);
}

function isInteger(val) {
    if (isBlank(val)) {
        return false;
    }
    for (var i = 0; i < val.length; i++) {
        if (!isDigit(val.charAt(i))) {
            return false;
        }
    }
    return true;
}

function isBlank(val){
    if (val == null) {
        return true;
    }
    for (var i = 0; i < val.length; i++) {
        if ((val.charAt(i) != ' ') && 
            (val.charAt(i) != "\t") && 
            (val.charAt(i) != "\n") && 
            (val.charAt(i) != "\r")) {
            return false;
        }
    }
    return true;
}

function isDigit(num) {
    if (num.length > 1) {
        return false;
    }
    var string = "1234567890";

    if (string.indexOf(num) != -1) {
        return true;
    }
    return false;
}




