/* 
Validate email field before form submission
*/

//set up basic character groups
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var nameDelimiters = "-. ";
var decimalPointDelimiter = ".";

//electronic addresses
var validDomainNameChars = digits + uppercaseLetters + lowercaseLetters + "-_.";

var emailblankOK=false;

var defaultEmptyOK=false;

//Call from mailrkb.html FORM ONSUBMIT:
function ValidateForm()
{
return ValidEmail();
}

/*
Call from iccenq.html FORM ONSUBMIT
email address required
*/
function ValidateForm1()
{
emailblankOK=false;

var emailOK=ValidEmail();
if (emailOK != true)
	{
	return false;
	}

return ValidPaper();
}

function ValidEmail()
{
var emailID=document.getElementById("ENQ").email;
var emailID2=document.getElementById("ENQ").email2;
	
	if (isEmpty(emailID.value) && emailblankOK) return true;
	else if (emailID.value!=emailID2.value)
		{
		alert("Your Email address entries don't match");
		emailID.focus();
		return false;
		}
	else if (isEmpty(emailID.value))
	{
		alert("Please Enter your Email address");
		emailID.focus();
		return false;
	}
	else
	{
		emailStatus = isEmail(emailID.value, false);
		if (emailStatus != true)
			{
			emailID.select();
			return false;
			}
	}
return true;
}


function isEmail(s)
{
    if (isEmpty(s)) 
		{
		if (isEmail.arguments.length == 1) return defaultEmptyOK;
		else return (isEmail.arguments[1] == true);
		}
    if (s.indexOf(" ")!=-1)
		{
		alert ("Invalid Email Address - contains space");
		return false;
		}
    var i = 1;
    var sLength = s.length;
 
    if (sLength >= 60)
		{
		alert ("Email Address has reached 60 characters long - if it is incomplete, please say so in the Enquiry text");
		return false;
		}
    
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++ }

    if ((i >= sLength) || (s.charAt(i) != "@"))
    {
    alert ("Invalid Email Address - no @ sign");
	return false
	}
    else atloc = i;
    j = i+1;
    i += 1;
    
    while ((j < sLength) && (validDomainNameChars.indexOf(s.charAt(j)) != -1))
    { j++ }
    
    if (j < sLength)
    {
	alert ("Invalid character in domain name: "+s.charAt(j));
	return false;
	}
	
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++ }
    
    if (i == sLength)
    {
    alert ("Invalid Email Address - no . in domain name");
    return false;
    }

    if (i == (atloc +1) || s.charAt(atloc-1) == ".")
    {
	alert("Invalid Email Address - not enough space between @ and .");
	return false;
    }
    
    k = atloc+1;
    while (k < sLength)
    {
	if ((s.charAt(k) == ".") && (s.charAt(k+1) == "."))
		{
		alert ("Invalid Email Address - too many .'s");
		return false;
		}
	k++;;
    }
    
    l = sLength;
    while ((i < sLength -2) && (l != i) && (s.charAt(l) != "."))
    { l = l-1 }
    
    if ((i >= sLength - 2) || (s.charAt(i) != ".") || (l >= sLength - 2))
    {
    alert ("Invalid Email Address - not enough chars after .");
    return false;
	}
return true;
}

function isEmpty(s) 
{
	return ((s == null) || (s.length == 0));
}

function ValidPaper()
{
var paperID=document.ENQ.Paper;

	if (paperID.value=="Select Paper...")
	{
	alert("Please select Paper Type");
	paperID.focus();
	return false;
	}
return true;
}

