
function getSelectedValue (box) {
        return (box.selectedIndex >= 0) ? box[box.selectedIndex].value : "" ;
}

function isEmail (emailStr) {   // updated 1/5/2011
	emailStr	= emailStr.toLowerCase();
        var checkTLD=1; // 1 to check for two-letter country or well-known TLD - 0 to ignore
        var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
        var emailPat=/^(.+)@(.+)$/;
        var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
        var validChars="\[^\\s" + specialChars + "\]";
        var quotedUser="(\"[^\"]*\")";
        var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
        var atom=validChars + '+';
        var word="(" + atom + "|" + quotedUser + ")";
        var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
        var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

        var matchArray=emailStr.match(emailPat);

        if (matchArray==null) { return false; } // Email address seems incorrect (check @ and .'s)
        var user=matchArray[1];
        var domain=matchArray[2];

        for (i=0; i<user.length; i++) {
                if (user.charCodeAt(i)>127) { return false; }   // The username contains invalid characters
        }
        for (i=0; i<domain.length; i++) {
                if (domain.charCodeAt(i)>127) { return false; } // The domain name contains invalid characters
        }

        if (user.match(userPat)==null) { return false; }        // The username is invalid

        var IPArray=domain.match(ipDomainPat);
        if (IPArray!=null) {    // this is an IP address
                for (var i=1;i<=4;i++) {
                        if (IPArray[i]>255) { return false; }   // Destination IP address is invalid
                }
                return true;
        }

        var atomPat=new RegExp("^" + atom + "$");
        var domArr=domain.split(".");
        var len=domArr.length;
        for (i=0;i<len;i++) {
                if (domArr[i].search(atomPat)==-1) { return false; }    // The domain name is invalid
        }


        if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
                return false;   // The address must end in a well-known domain or two letter country code
        }

        if (len<2) { return false; }    // This address is missing a hostname
        return true;
}

function validateRegForm (form) {
        var errstr = "";
        var cnt = 0;
        var selected = 0;
        if (form.email.value=="" || !isEmail(form.email.value))
                { errstr += "E-Mail Address\n"; }

        if (form.surname.value == "") { errstr += "Surname\n"; }
        if (form.givenname.value == "") { errstr += "Given Name\n"; }
        if (form.company.value == "") { errstr += "Company/Organization\n"; }
	if (form.country.value=="") { errstr += "Country\n"; }

        if (form.pncwkly.value == 1 || form.epnwkly.value == 1){
		//Only PNC requires city, state, address and zip
		if(form.pncwkly.value == 1){
			if (form.address1.value == "") { errstr += "Address\n"; }
			if (form.city.value == "") { errstr += "City\n"; }
			if(form.state.value=="" &&
				(form.country.value=='USA' || form.country.value=='CAN')){
				errstr += "State/Province\n";
			}
		}
		//Both PNC and EPN require zip
                if(form.zip.value == "" &&
                        (form.country.value=='USA' || form.country.value=='CAN')){
                        errstr += "Zip/Postal Code\n";
                }
        }

        if (form.epnwkly.value == 1){
                if (form.pw1.value == "") { errstr += "Password\n"; }
                if (form.pw2.value == "") { errstr += "Confirm Password\n"; }
                if (form.pw1.value!=form.pw2.value) { errstr += "Your passwords do not match\n"; }
        }

        if (form.pncwkly.value == 1){
		//This should never happen. "en" is the default value.
                if (!form.language[0].checked && !form.language[1].checked) { errstr += "Language Preference\n"; }
        }

	//NOT REQUIRED AT THIS TIME
        // if (getSelectedValue(form.primfunc)=="")
        // {
                // errstr += "Primary Job function\n";
        // }
        // else
        // {
		//IF other is selected make sure they enter something
                if (getSelectedValue(form.primfunc)=="other" && form.otherfunc.value=="")
                        { errstr += "Specify other job function\n"; }
        // }

	//REMOVED
	// selected = '';
	// for(cnt = 0; cnt < 4; cnt++){
		// if(form.primbus[cnt].checked){ selected = 'true';}
	// }

	// if(selected == ''){ errstr += "Company's primary business activity\n"; }

        // if (form.primbus[3].checked && form.busother.value=="")
        // {
		// { errstr += "Describe your company's primary business activity\n"; }
        // }

	// selected = '';
	// for(cnt = 0; cnt < 8; cnt++){
		// if(form.primjob[cnt].checked){ selected = 'true';}
	// }

	// if(selected == ''){ errstr += "Your primary function\n"; }

        // if (form.primjob[7].checked && form.jobother.value=="")
        // {
		// { errstr += "Describe your primary job function\n"; }
        // }

        if (errstr != "")
        {
                alert("The following required fields are missing:\n\n" + errstr);
                return false;
        }
        else
        {
                return true;
        }
}

function validateRegFormSust (form) {
        var errstr = "";
        var Count = 0;
        if (form.email.value=="" || !isEmail(form.email.value))
                { errstr += "E-Mail Address\n"; }

        if (form.surname.value == "") { errstr += "Surname\n"; }
        if (form.givenname.value == "") { errstr += "Given Name\n"; }
        if (form.company.value == "") { errstr += "Company/Organization\n"; }
	if (form.country.value=="") { errstr += "Country\n"; }

	if (form.address1.value == "") { errstr += "Address\n"; }
	if (form.city.value == "") { errstr += "City\n"; }

	if(form.state.value=="" &&
		(form.country.value=='USA' || form.country.value=='CAN')){
		errstr += "State/Province\n";
	}

	if(form.zip.value == "" && (form.country.value=='USA' || form.country.value=='CAN')){
		errstr += "Zip/Postal Code\n";
	}

        if (errstr != "")
        {
                alert("The following required fields are missing:\n\n" + errstr);
                return false;
        }
        else
        {
                return true;
        }
}

