// FILE: validate.js
// GOAL: To handle validation of form data
// WHO:  Bradley Roberts



// Declaring required variables
var digits = "0123456789";

// Non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";

// Characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";

// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 9;


//////////////////////////////////////////////////////////////////
// FUNCTION: isInteger()
// GOAL:     To check a string for all integers
// EG:       © 2008 Darby Consulting
// USE:      Just call this as follows where needed:
//              <script language="javascript" type="text/javascript"><!-- Hidden from some browsers
//              isInteger(string);
//              // End --></script>
//////////////////////////////////////////////////////////////////
function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}


//////////////////////////////////////////////////////////////////
// FUNCTION: trim()
// GOAL:     To trim a string to remove white space
// EG:       © 2008 Darby Consulting
// USE:      Just call this as follows where needed:
//              <script language="javascript" type="text/javascript"><!-- Hidden from some browsers
//              trim(string);
//              // End --></script>
//////////////////////////////////////////////////////////////////
function trim(s)
{   
	var i;
    var returnString = "";
	
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is not whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}


//////////////////////////////////////////////////////////////////
// FUNCTION: stripCharsInBag()
// GOAL:     To strip out the characters in the bag from a given string
// EG:       © 2008 Darby Consulting
// USE:      Just call this as follows where needed:
//              <script language="javascript" type="text/javascript"><!-- Hidden from some browsers
//              stripCharsInBag(string, bag);
//              // End --></script>
//////////////////////////////////////////////////////////////////
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
	
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}


//////////////////////////////////////////////////////////////////
// FUNCTION: checkInternationalPhone()
// GOAL:     To check an International Phone Number
// EG:       © 2008 Darby Consulting
// USE:      Just call this as follows where needed:
//              <script language="javascript" type="text/javascript"><!-- Hidden from some browsers
//              checkInternationalPhone(sPhone);
//              // End --></script>
//////////////////////////////////////////////////////////////////
function checkInternationalPhone(strPhone){
	var bracket = 3;
	strPhone=trim(strPhone);
	if(strPhone.indexOf("+")>1) return false;
	if(strPhone.indexOf("-")!=-1) bracket=bracket+1;
	if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket) return false;
	var brchr=strPhone.indexOf("(");
	if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")") return false;
	if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1) return false;
	s = stripCharsInBag(strPhone, validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}


//////////////////////////////////////////////////////////////////
// FUNCTION: ValidateForm()
// GOAL:     To Validate the given Form
// EG:       © 2008 Darby Consulting
// USE:      Just call this as follows where needed:
//              <script language="javascript" type="text/javascript"><!-- Hidden from some browsers
//              ValidateForm();
//              // End --></script>
//////////////////////////////////////////////////////////////////
function ValidateForm(){
	var Phone=document.frmSample.txtPhone;
	
	if ((Phone.value==null)||(Phone.value==""))
	{
		alert("Please Enter your Phone Number");
		Phone.focus();
		return false;
	}
	if (checkInternationalPhone(Phone.value)==false)
	{
		alert("Please Enter a Valid Phone Number");
		Phone.value="";
		Phone.focus();
		return false;
	}
	alert("Valid Phone Number");
	return true
 }


//////////////////////////////////////////////////////////////////
// FUNCTION: preset_application_form()
// GOAL:     To preset various fields in the application form
// EG:       © 2008 Darby Consulting
// USE:      Just call this as follows where needed:
//              <script language="javascript" type="text/javascript"><!-- Hidden from some browsers
//              preset_application_form();
//              // End --></script>
//////////////////////////////////////////////////////////////////
function preset_application_form()
{
	var today = new date();
	var now = 	today.toLocaleDateString();

	var applied = document.forms[0];

        // document.$FORM.$FIELD.value	
	applied.date.value = today.toLocaleDateString();
	applied.certification.checked = true;
	
}


//////////////////////////////////////////////////////////////////
// FUNCTION: togglecertification()
// GOAL:     To togglecertification today
// EG:       © 2008 Darby Consulting
// 				<input name="certification" type="checkbox" value="unchecked" onchange="togglecertification()" />
// USE:      Just call this as follows where needed:
//              <script language="javascript" type="text/javascript"><!-- Hidden from some browsers
//              togglecertification();
//              // End --></script>
//////////////////////////////////////////////////////////////////
function togglecertification()
{
	var state = 0;
	
	if (application.certification.checked)
	{
		alert('Turning ON the check box');
		state = 1;
		formmail.certification.checked = true;
	}
	else
	{
		alert('Turning off the check box');
		state = 0;
		formmail.certification.checked = false;
	}

	return state;	
}



// End of functions

