// 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 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 isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
	var bracket=3
	strPhone=trim(strPhone)
	if(strPhone.indexOf("+")>1) return false
	if(strPhone.indexOf("(")!=-1 && strPhone.indexOf(")")==-1)return false
	if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function checkemail(str){
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(str))
		return true
	else{
		return false
	}
}

function ValidateForm(nameCheck,phoneCheck,mailCheck,messageCheck){
	var Phone=document.formValidate.telephone;
	var Name=document.formValidate.fullName;
	var Mail=document.formValidate.email;
	var Mess=document.formValidate.message;
	var UName=document.formValidate.username;
	var PWord=document.formValidate.password;
	var testresults=true;
	var userMessage="";
	var fieldFocus="";
	nameCheck=(nameCheck==false)? false: true;
	phoneCheck=(phoneCheck==false)? false: true;
	mailCheck=(mailCheck==false)? false: true;
	messageCheck=(messageCheck==false)? false: true;
	if(Name){
		if (((Name.value==null)||(Name.value==""))&&(nameCheck==true)){
			//alert("Please Enter your Full Name")
			if(fieldFocus=="")Name.focus();
			fieldFocus = "Name";
			testresults=false;
			userMessage=(userMessage=="")? userMessage+" your Full Name":userMessage+", Full Name";
		}
	}
	if(Phone){
		if (((Phone.value==null)||(Phone.value==""))&&(nameCheck==true)){
			//alert("Please Enter your Phone Number")
			if(fieldFocus=="")Phone.focus();
			testresults=false;
		}
	}
	if(Phone){
		if ((checkInternationalPhone(Phone.value)==false)&&(phoneCheck==true)){
			//alert("Please Enter a Valid Phone Number")
			Phone.value="";
			if(fieldFocus=="")Phone.focus();
			fieldFocus = "Phone";
			testresults =false;
			userMessage=(userMessage=="")? userMessage+" a Valid Phone Number":((checkemail(Mail.value)==false)||(Mess.value==null)||(Mess.value==""))? userMessage+", a Valid Phone Number":userMessage+" and a Valid Phone Number.";
		}
	}
	if(Mail){
		if ((checkemail(Mail.value)==false)&&(mailCheck==true)){
			//alert("Please input a valid email address!")
			Mail.value="";
			if(fieldFocus=="")Mail.focus();
			fieldFocus = "Mail";
			testresults =false;
			userMessage=(userMessage=="")? userMessage+" a Valid Email Address":((Mess.value==null)||(Mess.value==""))? userMessage+", a Valid Email Address":userMessage+" and a Valid Email Address.";
		}
	}
	if(Mess){
		if (((Mess.value==null)||(Mess.value==""))&&(messageCheck==true)){
			//alert("Please input a Message")
			Mess.value="";
			if(fieldFocus=="")Mess.focus();
			fieldFocus = "Mess";
			testresults =false;
			userMessage=(userMessage=="")? userMessage+" a Message": userMessage+" and a Message.";
		}
	}
	if(UName){
		if ((UName.value==null)||(UName.value=="")){
			//alert("Please input your User Name")
			UName.value="";
			if(fieldFocus=="")UName.focus();
			fieldFocus = "UName";
			testresults =false;
			userMessage=(userMessage=="")? userMessage+" your User Name": userMessage+" and your User Name.";
		}
	}
	if(PWord){
		if ((PWord.value==null)||(PWord.value=="")){
			//alert("Please input your Password")
			PWord.value="";
			if(fieldFocus=="")PWord.focus();
			fieldFocus = "PWord";
			testresults =false;
			userMessage=(userMessage=="")? userMessage+" your Password": userMessage+" and Password.";
		}
	}
	if(testresults == false){
		alert("Please Enter" + userMessage);
		return false;
	}else{
		return true;
	}
 }
