// JavaScript Document

function CheckValidate()
{
	var validate = false;

	validate = CheckNull('firstname', 'First name');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('lastname', 'Last name');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckEmail('email');
	if(!validate)
	{
		return validate;
	}
	
	
/*	validate = CheckPhone('phone', 'Phone');
	if(!validate)
	{
		return validate;
	}

	validate = CheckNull('addr', 'Address');
	if(!validate)
	{	
		return validate;
	}
*/	
	validate = CheckNull('city', 'City');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('state', 'State/Province');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckZip('zip');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('country', 'Country');
	if(!validate)
	{	
		return validate;
	}
	
	validate = CheckNull('comment', 'Comments');
	if(!validate)
	{	
		return validate;
	}
	
	

		
	return validate;
}


//=================check Zip
function CheckZip(zipID) {
var zip=document.getElementById(zipID);
var zipValue = zip.value;
var valid = "0123456789-";
var hyphencount = 0;

if ((zipValue.length!=5) && (zipValue.length!=10)) {
alert("Invalid Zip/Postal code.");
zip.value = "";
zip.focus();
return false;
}
for (var i=0; i < zipValue.length; i++) {
temp = "" + zipValue.substring(i, i+1);
if (temp == "-") hyphencount++;
if (valid.indexOf(temp) == "-1") {
alert("Invalid Zip/Postal code.");
zip.value = "";
zip.focus();
return false;
}
if ((hyphencount > 1) || ((zipValue.length==10) && ""+zipValue.charAt(5)!="-")) {
alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
zip.value = "";
zip.focus();
return false;
   }
}
return true;
}
//==================end check Zip

//================check null
function CheckConfirmation(objID, msg){
	var obj=document.getElementById(objID);

	if (!obj.checked){

		alert(msg);

		obj.focus();

		return false
	}

	return true;
}

//================check null
function CheckNull(objID, msg){
	var obj=document.getElementById(objID);

	var text = obj.value;

	text = text.replace(/^\s*|\s*$/g,"");

	if ((text==null)||(text=="")){

		alert(msg + " cannot be empty.")

		obj.focus();

		return false

	}

	return true;
}
//================end check null


//=======================================email validation
function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Invalid Email address.");
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid Email address.");
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid Email address.");
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid Email address.");
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid Email address.");
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid Email address.");
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid Email address.");
		    return false
		 }

 		 return true					
	}

function CheckEmail(email){
	var emailID=document.getElementById(email);
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Email address cannot be empty.")
		emailID.focus()
		return false
	}
	if (echeck(emailID.value)==false){
		emailID.value=""
		emailID.focus()
		return false
	}
	return true
 }
//===================================end email validation

//===================================phone validation
// 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 = 10;

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 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(strPhone){
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function CheckPhone(phone, msg){
	var Phone=document.getElementById(phone);
	
	if ((Phone.value==null)||(Phone.value=="")){
		alert(msg + " cannot be empty");
		Phone.focus()
		return false
	}
	if (checkInternationalPhone(Phone.value)==false){
		alert("Invalid " + msg);
		Phone.value=""
		Phone.focus()
		return false
		
	}
	return true
}
//=====================================end phone validation

