function isEmailAddr(email)

{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	return result;
}

function validDropDown(formField,fieldLabel)
{
	var result = true;
	if (formField.selectedIndex == 0)
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function allDigitsDecimals(str)
{
	return inValidCharSet(str,"0123456789.");
}

function inValidCharSet(str,charset)

{
	var result = true;
	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	if (required && !validRequired(formField,fieldLabel))
		result = false;
	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
  return result;
}

function validNum(formField,fieldLabel,required)
{
	var result = true;
	if (required && !validRequired(formField,fieldLabel))
		result = false;
 	if (result)
 	{
 		if (!allDigitsDecimals(formField.value))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	return result;
}

function validInt(formField,fieldLabel,required)
{
	var result = true;
	if (required && !validRequired(formField,fieldLabel))
		result = false;
 	if (result)
 	{
 		var num = parseInt(formField.value);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	return result;
}

function validDate(formField,fieldLabel,required)
{
	var result = true;
	if (required && !validRequired(formField,fieldLabel))
		result = false;
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		result = (elems.length == 3); // should be three components
 		if (result)
 		{
 			var month = elems[0];
			var day = parseInt(elems[1]);
 			var year = parseInt(elems[2]);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
  		if (!result)
 		{
 			alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	return result;
}

function validateSelect(formField, label)
{
	if(formField[formField.selectedIndex].value == "")
	{
		alert('Please enter the ' + label);
		formField.focus();
		return false;	
	}
	return true;

}

		function round(number,X) 
		{
			X = (!X ? 2 : X);
			var num =  Math.round(number*Math.pow(10,X))/Math.pow(10,X);
			var snum = new String(num);
			if(snum.indexOf(".") == -1)
			{
				snum = snum + ".00";
				num = snum;
			}
			return num;
		}

		function commafy(iNum)
		{
			var first = "";
			var last = "";
			var isNegative=false;
			if (parseFloat(iNum)<0)
			{
			        isNegative=true;
			        iNum=Math.abs(iNum);
			}
			var sNum = iNum.toString();
			if(sNum.indexOf(".") != -1)
			{
				first = sNum.substring(0,sNum.indexOf("."))
				last = sNum.substring(sNum.indexOf("."))
				sNum = first;
			}
			var len = sNum.length;
			var firstBit = "";
			var lastBit = "";
			for(k=len-1;k>=0;k--)
			{
				if(((len-k)%3==0) &&(k>0))
				{
					firstBit = sNum.substring(0,k);
					lastBit = sNum.substring(k);
					sNum = firstBit + "," + lastBit;
				}
			}
			sNum += last;
			if (isNegative)
			        sNum="-"+sNum;
				return(sNum)
		}


var digits = "0123456789";
var phoneNumberDelimiters = "()-. ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
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 checkPhone(strPhone)
{
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function validatePhone(Phone, required, num_text)
{

	if(required == true)
	{
		if ((Phone.value==null)||(Phone.value==""))
		{
			alert("Please Enter the " + num_text + " Number in the format (###)###-#### or ###-###-####")
			Phone.focus()
			return false
		}
	}
	if(required == false && Phone.value == "")
		return true;
	if (checkPhone(Phone.value)==false)
	{
		alert("Please Enter the " + num_text + " Number in the format (###)###-#### or ###-###-####")
		Phone.focus()
		return false
	}
	return true
 }