/* -------------------------------------------------------------------
   functions format rate and US currency
 ---------------------------------------------------------------------*/
function formatRate(num) {

	if(num==null)
		num = "";
	if (num.toString().length == 0)
	num = "";

	//num = num.toString().replace(/\$|\,/g,'');
	if (num.length == 0)
		num = "";
	if(isNaN(num))
		num = "";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*1000+0.50000000001);
	cents = num%1000;
	num = Math.floor(num/1000).toString();
	if(cents < 10)
		cents = "0" + cents; 
	return (((sign)?'':'-') + num + '.' + cents);
}

function formatCurrency(num) {

	if(num==null)
		return '';
	if (num.toString().length == 0)
		return '';
	//num = num.toString().replace(/\$|\,/g,'');
	if (num.length == 0)
		return '';
	if(isNaN(num))
		return '';

	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents < 10)
		cents = "0" + cents; 
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
		num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3)); 
	return (((sign)?'':'-') + num + '.' + cents);
}


/* -------------------------------------------------------------------
    Common Evauation functions
 ---------------------------------------------------------------------*/
var flag;
function com_IsLetter(c)
{
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function com_IsDigit(c)
{   
	return ((c >= "0") && (c <= "9"))
}

function com_IsLetterOrDigit (c)
{
	return (com_IsLetter(c) || com_IsDigit(c))
}

function com_isEmpty(s)
{
	if(s != null)
	s = com_Trim(s);
	return ((s == null) || (s.length == 0))
}

function com_IsInteger (s)
{   
	var i;

	// Search through string's characters one by one
	// until we find a non-numeric character.
	// When we do, return false; if we don't, return true.

	for (i = 0; i < s.length; i++)
	{   
		// Check that current character is number.
		var c = s.charAt(i);

		if (!com_IsDigit(c)) return false;
	}

	// All characters are numbers.
	return true;
}

function com_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 com_IsSSN (s)
{   
	com_Trim(s);
	s = com_StripCharsInBag(s, "- ");
	return (com_IsInteger(s) && s.length == 9)
}

function com_IsZIPCode (s)
{  
	com_Trim(s); 
	var digitsInZIPCode1 = 5
	var digitsInZIPCode2 = 9

	return (com_IsInteger(s) && 
		((s.length == digitsInZIPCode1) ||  (s.length == digitsInZIPCode2)))
}

function com_IsWhitespace (s)
{   
	var i;
	var whitespace = " \t\n\r";
	// Is s empty?
	if (com_isEmpty(s)) return true;

	// Search through string's characters one by one
	// until we find a non-whitespace character.
	// When we do, return false; if we don't, return true.

	for (i = 0; i < s.length; i++)
	{   
		// Check that current character isn't whitespace.
		var c = s.charAt(i);

		if (whitespace.indexOf(c) == -1) return false;
	}

	// All characters are whitespace.
	return true;
}  

function com_IsEmail (s)
{     
	// is s whitespace?
	s = com_Trim(s);

	if (com_IsWhitespace(s)) return false;

	// there must be >= 1 character before @, so we
	// start looking at character position 1 
	// (i.e. second character)
	var i = 1;
	var sLength = s.length;

	// look for @
	while ((i < sLength) && (s.charAt(i) != "@"))
	{ i++
	}

	if ((i >= sLength) || (s.charAt(i) != "@")) return false;
	else i += 2;

	// look for .
	while ((i < sLength) && (s.charAt(i) != "."))
	{ i++
	}

	// there must be at least one character after the .
	if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
	else return true;
}

function com_isPhoneNumber(s) {
    phoneRegex = /^\d{3}-\d{3}-\d{4}$/;

	if( !s.match( phoneRegex ) ) {
        return false;
    }
    return true;
}

function com_LTrim(str)
{
	var whitespace = new String(" \t\n\r");
	var s = new String(str);

	if (whitespace.indexOf(s.charAt(0)) != -1) {
		var j=0, i = s.length;
		while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
			j++;
		s = s.substring(j, i);
	}
	return s;
}

function com_RTrim(str)
{
	var whitespace = new String(" \t\n\r");
	var s = new String(str);

	if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {

		var i = s.length - 1;
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
			i--;
		s = s.substring(0, i+1);
	}
	return s;
}

function com_Trim(str)
{
	return com_RTrim(com_LTrim(str));
}  

function com_IsValidDate(mm, dd, yyyy) //mm/dd/yyyy format
{	
	var dateString = mm + "/" + dd + "/" + yyyy;
	if (!com_IsInteger(yyyy))
		return false;
	if(dateString.length < 10)
		return false;
	return verifyDate(dateString);    
}

function com_IsValidStandardDate(dateString) //mm/dd/yyyy format
{	
	if(dateString.length < 10)
		return false;
	return verifyDate(dateString);    
}

// function for validating date
function verifyDate(InputDate)
{
 	
	var currentDate = new Date();
	var currentYear = currentDate.getFullYear();
	var leapYear = false;
	
	if(InputDate.indexOf("/") <0)
	{
		return false;
	}

	var InputMonth = InputDate.substring(0,InputDate.indexOf("/"));
	InputMonth	   = parseInt(InputMonth, 10);
	//alert("InputMonth = " + InputMonth);
	
	if(InputMonth >12 || InputMonth < 1)
	{
	 	return false;
	}
	var temp = InputDate.substring(InputDate.indexOf("/") + 1);
	var InputDD = parseInt(temp.substring(0,temp.indexOf("/")),10);
	//alert("InputDD = " + InputDD);

	if(InputDD >31 || InputDD<1)
	{
	 	return false;
	}
	
	if(InputMonth== 4 || InputMonth== 6 ||InputMonth== 9 ||InputMonth==11 )
    {
		if(InputDD > 30)
		{
			 return false;
		}
	}			

	var InputYear = parseInt(temp.substring(temp.indexOf("/")+1) , 10);
	//alert("InputYear = " + InputYear);

	/*
	if(InputYear < currentYear)
	{
	 	return false;
	}*/
	
	if(InputYear < 1900)
	{
		return false;
	}
	if(((InputYear % 4 == 0) && ( (!(InputYear % 100 == 0)) || (InputYear % 400 == 0))))
	{
	 	leapYear = true;
	}
	
	if(leapYear != true)
	{
	 	if(InputMonth=='2')
		{
		 	if(InputDD > 28)
          	{
          	 	 	return false;
          	}
		}
	}else
	{
	 	 if(InputMonth=='2')
		 {
		 	if(InputDD > 29)
          	{
          	 	 	return false;
          	}
		}
	}
	
	return true;
}

function checkDOB(mm, dd, yyyy) {
	var flag = false;
	var today = new Date(); // today
	var age = today.getFullYear() - yyyy;
	if (age == 18) {
		
		if (dd <= today.getDate()) {
			//alert("day <=");
			var birthday = true;
		}

		var currentMonth = today.getMonth() + 1;
		//alert("crt mnt " + today.getMonth());
		if (mm < currentMonth) {
			var birthmonth = true;
			birthday = true;
			//alert("mm <");
		} else if (mm == currentMonth) {
			birthmonth = true;
			//alert("mm =");
		}
			
		if ( birthday == true && birthmonth == true ) {
			//alert("rt true");
			return true;
		} else {
			//alert("Sorry, you're not eligible to apply for a membership at this time.\nYou must be 18 yrs or older to legally qualify.\nPlease check your date of birth.");
			//flag = true;
			//form.applicant_birth_month.focus();
			return false;
		}
	} else if (age < 18 || age > 100) {
		return false;
	}
	return true;
}

function isPositiveNumber( num )
{
    for(var index = 0; index < num.length; index++)
	if( (num.charAt(index) != ".") && ((num.charAt(index) < "0") || (num.charAt(index) > "9")) )
	    return false;

    return true;
}

function invalidMsg()
{
	alert("Invalid number format. Please remove any commas or alphabetic characters in the amount (only 2 decimal places allowed).");
}

function checkAmount(obj)
{
	var amount = obj.value;
	//if(0 == amount.length)
	//    return false;

	// make sure the number is good
	if(!isPositiveNumber(amount))	
	    return false;

	// make sure there are only 2 decimal places (and 1 decimal point -drs 1/21/02)
	loc = amount.indexOf(".");

	if( (-1 != loc) && (loc < amount.length - 3) || (loc != amount.lastIndexOf(".")) )
		return false;

	if (loc == 0)
		obj.value = "1.00";

	if (amount >= "0" && amount < "1")
		obj.value = "1.00";

    return true;
}

function submitForm(form, action, page)
{
    if (action == 'next') {

		// first name
		if(com_isEmpty(form.firstname.value))
		{
			alert("Please enter First Name");
			form.firstname.focus();
			return false;
		}
		// last name
		if(com_isEmpty(form.lastname.value))
		{
			alert("Please enter Last Name");
			form.lastname.focus();
			return false;
		}
		// company name
		if(com_isEmpty(form.companyname.value))
		{
			alert("Please enter Company Name");
			form.companyname.focus();
			return false;
		}
		// check email
        if(com_isEmpty(form.email.value))   
        {          
            alert("Please enter Email Address");
            form.email.focus();   
            return false;         
        }
        if( !com_IsEmail(form.email.value) && form.email.value.length > 0)      
        { 
            alert("Email entered is invalid");
            form.email.select();   
            form.email.focus();   
            return false;
        }   
		// phone
		if(com_isEmpty(form.phone.value))
		{
			alert("Please enter your Phone Number");
			form.phone.focus();
			return false;
		}
        if(!com_isPhoneNumber(form.phone.value) && form.phone.value.length != 12)
	    {
			alert("Phone Number is invalid (XXX-XXX-XXXX)");
			form.phone.focus();
			return false;

		}
		// fax
		if(!com_isEmpty(form.fax.value)) {
			if(!com_isPhoneNumber(form.fax.value) && form.fax.value.length != 12)
			{
				alert("Fax Number is invalid (XXX-XXX-XXXX)");
				form.fax.focus();
				return false;
			}
		}
		// city
		if(com_isEmpty(form.city.value))
		{
			alert("Please enter City");
			form.city.focus();
			return false;
		}

		// state
		if(com_isEmpty(form.state.value))
		{
			alert("Please enter State");
			form.state.focus();
			return false;
		}

    }

	form.page_action.value = action;
	form.submit();

}