//////////////////////////////////////////////////////////////
//                                                          //
//  This file requires the inclusion of /common/ls_lib.js   //
//                                                          //
//////////////////////////////////////////////////////////////
function validateForm(form) {



    var password;
    var count=0;
    var i=0;
    var k=0;
    var j=0;
    var p=0;
        
    var keywords = new Array('OR', 'AND', 'HAVING', 'UNION', 'DROP', 'ALTER', 'UPDATE', 'DELETE', 'INSERT');
    var invalidChars = new Array('\u0027', '\b', '\t','\v', '\f', '\n', '\r', '\u0020', '\'' );
 
    password=(form.password.value).toUpperCase();
    p = password.length;



    // First name
    if(form.first) {
        if(isEmpty(form.first.value)) {
            alert('You must supply a first name.');
            form.first.focus();
            return false;
        }
    }
    // Last name
    if(form.last) {
        if(isEmpty(form.last.value)) {
            alert('You must supply a last name.');
            form.last.focus();
            return false;
        }
    }

    // Password
    if(form.password) {
        if(isEmpty(form.password.value)) {
            alert('You must supply a password.');
            form.password.focus();
            return false;
        }
        if(form.password_confirm && (form.password_confirm.value != form.password.value)) {
            alert('Your passwords do not match. Please re-enter your passord.');
            form.password_confirm.value = '';
            form.password.value = '';
            form.password.focus();
            return false;
        }

	for (i=0; i<keywords.length; i++)
   	{
       	   k=password.indexOf(keywords[i]);
       
       	   //if we found an invalid keyword in memberid increment counter 
          if (k != -1) count++;
   	}
   
   	for (m=0; m<invalidChars.length; m++)
   	{
       	   j=password.indexOf(invalidChars[m]);
       
           //if we found an invalid keyword in memberid increment counter 
           if (m != -1) j++;
        }
   
  
       
   	if (count != 0 && j !=0)
   	{
           //alert('Not a valid password. invalid words:' + count + 'invalid chars: ' + j);
           alert('Not a valid password.');
           //reset counter
           count=0;
           form.password.focus();
           return false;
        }

    }


   

    // Address
    if(form.address) {
        if(isEmpty(form.address.value)) {
            alert('You must supply an address.');
            form.address.focus();
            return false;
        }
    }

    // City
    if(form.city) {
        if(isEmpty(form.city.value)) {
            alert('You must supply a City.');
            form.city.focus();
            return false;
        }
    }

	// State/Province
    if(form.state) {
    	if(form.state.selectedIndex == 0) { // first item selected
            alert('You must select a State/Province.');
            form.state.focus();
            return false;
        }
    }

    // Country
    if(form.country) {
        if(form.country.selectedIndex == 0) { // first item selected
            alert('You must select a Country.');
            form.country.focus();
            return false;
        }
    }

    // Postal/Zip Code (only mandatory for US/Canada
    if(form.zip) {
        var country = '';
        if(form.country)
            country = form.country.options[form.country.selectedIndex].text;

        var zip = form.zip.value + '';
        if(country == 'United States' || country == 'Canada') {
            if(isEmpty(zip)) {
                alert('You must supply a Zip/Postal Code.');
                form.zip.focus();
                return false;
            }
            if (country.toUpperCase() == 'UNITED STATES' && !(/^\d{5}$/.test(zip) || /^\d{5}-\d{4}$/.test(zip))) {
                alert('You have entered an invalid US Zip code\nPlease use the one of the following formats:'
                    + '\n99999 or 99999-9999');
                form.zip.focus();
                form.zip.select();
                return false;
            }
            if (country.toUpperCase() == 'CANADA' && !(/^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/.test(zip))) {
                alert('You have entered an invalid Canadian Postal Code\nPlease use the one of the following formats:'
                   + '\nZ9Z-9Z9 or Z9Z9Z9');
                form.zip.focus();
                form.zip.select();
                return false;
            }
        }
    }

    // E-mail
    if(form.email) {
        if(isEmpty(form.email.value) || !isValidEmail(form.email.value)) {
            alert('You must supply a valid email address.');
            form.email.focus();
            form.email.select();
            return false;
        }
    }
    // Phone
    if(form.phone) {
        if(isEmpty(form.phone.value) || form.phone.value.length < 10) {
            alert('You must enter a valid phone number.');
            form.phone.focus();
            form.phone.select();
            return false;
        }
    	if(!bContainsValidChars(form.phone.value, numchars + '+ .-')) {
            alert('You have entered an invalid phone number.\nAllowable characters include only the following:\n  digits [0-9]\n  hyphens [-]\n  spaces [ ]\n  periods [.]');
            form.phone.focus();
            form.phone.select();
            return false;
        }
    }
    // Paytype
    if(form.payMethod) {
        if(form.payMethod.options[form.payMethod.selectedIndex].text == 'Please Make A Selection') {
            alert('You must select a Preferred Payment Method');
            form.payMethod.focus();
            return false;
        }
    }
    return true;
}