/* Function to do client side validation on a number field 
	field - control being validated
	msg - message to alert user of input error
	min - minimum length for input 
	max - maximum length for input */

// 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 validateNumber(field, msg, min, max)
{
	if (!min) { min = 0 } 
	if (!max) { max = 255 } 

	if ( (parseInt(field.value) != field.value) ||  
	field.value.length < min || field.value.length > max)
	{
		alert(msg); 
		field.focus(); 
		field.select(); 
		return false; 
	}
	return true; 
}

/* Function to do client side validation on a string field 
	field - control being validated
	msg - message to alert user of input error
	min - minimum length for input 
	max - maximum length for input */

function validateString(field, msg, min, max)
{ 
	if (!min) { min = 1 } 
	if (!max) { max = 65535 } 

	if (!field.value || field.value.length < min || field.value.max > max)
	{ 
		alert(msg); 
		field.focus(); 
		field.select(); 
		return false; 
	}
	return true; 
}

/* Function to do client side validation on a string field 
	email - control being validated
	msg - message to alert user of input error
	optional - boolean for whether the email is an optional input */

function validateEmail(email, msg, optional)
{ 
	if (!email.value && optional)
	{ 
		return true; 
	} 

	var re_mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/; 
	if (!re_mail.test(email.value))
	{ 
		alert(msg); 
		email.focus(); 
		email.select(); 
		return false; 
	}
	return true; 
}

function validatePhone(phone,msg)
{

	if (validateString(phone,'Please Enter a Proper Phone Number',7,20))
	{

		if (!checkInternationalPhone(phone.value))
		{
			alert(msg);
			phone.focus();
			phone.select();
			return false;
		}
		return true;
	}
	return false;
}

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);
}

