//Client Side Validation File
var isNS4 = (navigator.appName=="Netscape")?1:0;

function OnlyNum()
{
	if (!isNS4)
	{
		if (event.keyCode < 45 || event.keyCode > 57)
			event.returnValue = false;
	}
	else
	{
		if (event.which < 45 || event.which > 57)
			return false;
	}
}

function OnlyNumber()
{
	if (!isNS4)
	{
		if (event.keyCode < 48 || event.keyCode > 57)
			event.returnValue = false;
	}
	else
	{
		if (event.which < 48 || event.which > 57)
			return false;
	}
}

function OnlyPhone()
{
	if (!isNS4)
	{
		if ((event.keyCode < 47 || event.keyCode > 57) && (event.keyCode != 40) && (event.keyCode != 41) && (event.keyCode != 45))
			event.returnValue = false;
	}
	else
	{
		if ((event.which < 47 || event.which > 57) && (event.which != 40) && (event.which != 41) && (event.which != 45))
			return false;
	}
}


function IsInRange(refField,pszField)
{
	if (refField.value >= 0 && refField.value < 100 )
		return true;	
	else	
	{
		alert("Please enter proper value in " + pszField);
		refField.select();
		return false;
	}
} 

function IsMinLength(refField,pszName)
{
	refField.value = trimspace(refField.value);
	var szValue = refField.value;
	var len = szValue.length;

	if (len < 4)
	{
		alert(pszName + " should contain atleast 4 Characters");
		refField.select();
		return false;
	}
	return true;
}

function IsBlank(refField,pszName)
{
	refField.value = trimspace(refField.value);
	if (refField.value == "")
	{
		alert("Please Enter " + pszName);
		refField.focus();
		return true;
	}
	return false;
}


function DrpBlankCheck(refField,pszName)
{
	if (refField.value == "")
	{
		alert("Please Select a Value for " + pszName);
		refField.focus();
		return true;
	}
	return false;
}


function trimspace(str)
{		
	var len = str.length;
	if (len != 0)
	{
		for (var i=0;i<len;i++)
		{	
			if(str.indexOf(" ")==0)
				str=str.substring(1,len);
		}
		var strtrim = str;
		return strtrim;
	}
	else
	{
		return str;
	}
}


function ConfirmDelete()
{
	if(!confirm("Are you Sure, You want to Delete?"))
	{
		return false;
	}
	else
		return true;
}


function RadioCheck(refField, piCount, pszField)
{
	iNotMatch = 0;
	iCount = 0;
	for(iCount;iCount < piCount; iCount++)
	{
		if(refField(iCount).checked)
		{
			return true;
		}
		else
		{
			iNotMatch = iNotMatch + 1;
		}
	}
	if (iNotMatch == iCount)
	{
		alert (pszField + " should have one value selected");
		refField(0).focus();
		return false;
	}
}


function RadioListCheck(refField, piCount, pszField, pszAction)
{
	iNotMatch = 0;
	iCount = 0;
	if (piCount == 1)
	{
		refField.checked = true;
		return true;
	}
	else
	{
		for(iCount;iCount < piCount; iCount++)
		{
			if(refField(iCount).checked)
			{
				return true;
			}
			else
			{
				iNotMatch = iNotMatch + 1;
			}
		}
		if (iNotMatch == iCount)
		{
			alert ("Please Select one value from '" +  pszField + "' for '" + pszAction + "'");
			refField(0).focus();
			return false;
		}
	}
}


function getSelectedIndex(refField, piCount, pszField, pszAction)
{
	iNotMatch = 0;
	iCount = 0;
	if (piCount == 1)
	{
		refField.checked = true;
		return -1;
	}
	else
	{
		for(iCount;iCount < piCount; iCount++)
		{
			if(refField(iCount).checked)
			{
				//return true;
				return iCount;
			}
			else
			{
				iNotMatch = iNotMatch + 1;
			}
		}
		if (iNotMatch == iCount)
		{
			alert ("Please Select one value from '" +  pszField + "' for '" + pszAction + "'");
			refField(0).focus();
			//return false;
			return -2;
		}
	}
}

function getSelectedCount(refField, piCount)
{
	iNoChecked = 0;
	iCount = 0;
	if (piCount == 1)
	{
		refField.checked = true;
		iNoChecked = iNoChecked + 1;
	}
	else
	{
		for(iCount;iCount < piCount; iCount++)
		{
			if(refField(iCount).checked)
			{
				iNoChecked = iNoChecked + 1;
			}
		}
	}
	return iNoChecked;
}

function IsEmailId(refField)
{
	refField.value = trimspace(refField.value);
	if (refField.value != "")
	{
		if (!isEmail(refField.value))
		{
			alert("Please Enter valid Email address");
			refField.focus();
			return false;
		}
		else
		{
			return true;
		}//if (!isEmail(refField.value))
	}//if (refField.value != "")
	else
	{
		return true;
	}
}

function isEmail (s)
{   
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
	var k = 1; 
	var is_present=false;
    var sLength = s.length;

	//look for @ whether it is twice present in the string or not
	while(k < sLength)
	{
		if(s.charAt(k) == "@")
		{
			if(is_present == true)
			return false;
			is_present=true;
		}
		k++
	}
	// look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    //i=sLength;
	while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least two character after the .
    if ((i >= sLength - 2) || (s.charAt(i) != "."))     {
		return false;    }
    else
	{
		i+=1;
		while(i < sLength)
		{
			var c = s.charAt(i);
			if (!(((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z"))))
			{	
				if(s.charAt(i) == ".")
				{
					var j=(sLength-1)-i;
					if (i ==(sLength-1) || j< 2 )	return false;
				}
				else
					return false;
			}
			i++
		}
		return true;
	}
}


function IsZero(refField, pszField)
{	
	
		data = refField.value;
		if (data != "")
		{	
			data = trimspace(data);
			if (data == 0)// dina 16-07-2004
			{
				alert("Please enter proper value in " + pszField);
				refField.select();
				refField.focus();
				return false;
			}
			if (data != "")
			{		
				refField.value=data;				
				if(isNaN(data)==true)
				{	
					alert("Please enter only Numeric value for " + pszField);
			   		refField.select();
			   		refField.focus();
			   		return false;
				}
			}
			/*else
			{	
				refField.value="";
			}*/				 
		}						
	return true;
}


function date(refField)
{	
	var dateStr
	// To require a 4 digit year entry, use this line instead:
	
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
			
		refField.value = trimspace(refField.value);
		dateStr = refField.value
		if (dateStr !="")
		{
			var matchArray = dateStr.match(datePat); // is the format ok?
			if (matchArray == null || matchArray[2]!='/') 
			{	
			    alert ("Please enter the date in mm/dd/yyyy format.");
				refField.focus();
			    return false;
			}
			
			month = matchArray[1];
			if (month.length == 1)
			{
				month = "0" + month;
			}
			day = matchArray[3];
			if (day.length == 1)
			{
				day = "0" + day;
			}
			year = matchArray[4];
			if (year.length == 1)
			{
				year = "0" + year;
			}

			maindate = month + '/' + day + '/' + year;
			refField.value = maindate;
						
			currentDate = new Date()			
			with (currentDate) // is used to make the object stored with currentDate the defaut object for object References
			{
				SysYear  = getFullYear();
				SysMonth = getMonth();
				SysDate  = getDate();
			}			
			SysMonth =  SysMonth+ 1;	
			if (SysMonth/10 < 1)
			{
				SysMonth = '0' + SysMonth; 
			}
						
			if (year > SysYear)
			{
				alert('Year cannot be greater than current year!');
				refField.focus();
				return false;
			}	
			else
			{	
				if (year == SysYear)
				{
					if (month > SysMonth)
					{
						alert('Month cannot be greater than current month!');
						refField.focus();
						return false;
					}
					else
					{
						if (month == SysMonth)
						{
							if (day >= SysDate)
							{
								alert('Date cannot be greater than or equal to current date!');
								refField.focus();
								return false;
							}
						}
					}		
				}
			}
					
			if (month < 1 || month > 12)  // check month range
			{
				alert("Month must be between 1 and 12.");
				refField.focus();
				return false;
			}

			if (day < 1 || day > 31)
			{
				alert("Day must be between 1 and 31.");
				refField.focus();
				return false;
			}			
			
			if (year < 1900 || year > 2095)
			{
				alert("Year must be between 1900 and " + SysYear + ".");
				refField.focus();
				return false;
			}
			if ((month==4 || month==6 || month==9 || month==11) && day==31) 
			{
				alert("Month "+month+" doesn't have 31 days!");
				refField.focus();
				return false;
			}
			if (month == 2) 
			{
				// check for february 29th
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day>29 || (day==29 && !isleap))
				{
					alert("February " + year + " doesn't have " + day + " days!.");
					refField.focus();
					return false;
			    }
			}
		}						
	return true;  // date is valid
}


function checkDateToday(refField)
{	
	var dateStr
	// To require a 4 digit year entry, use this line instead:
	
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
			
		refField.value = trimspace(refField.value);
		dateStr = refField.value
		if (dateStr !="")
		{
			var matchArray = dateStr.match(datePat); // is the format ok?
			if (matchArray == null || matchArray[2]!='/') 
			{	
			    alert ("Please enter the date in mm/dd/yyyy format.");
				refField.focus();
			    return false;
			}
			
			month = matchArray[1];
			if (month.length == 1)
			{
				month = "0" + month;
			}
			day = matchArray[3];
			if (day.length == 1)
			{
				day = "0" + day;
			}
			year = matchArray[4];
			if (year.length == 1)
			{
				year = "0" + year;
			}

			maindate = month + '/' + day + '/' + year;
			refField.value = maindate;
						
			currentDate = new Date()			
			with (currentDate) // is used to make the object stored with currentDate the defaut object for object References
			{
				SysYear  = getFullYear();
				SysMonth = getMonth();
				SysDate  = getDate();
			}			
			SysMonth =  SysMonth+ 1;	
			if (SysMonth/10 < 1)
			{
				SysMonth = '0' + SysMonth; 
			}
						
			if (year > SysYear)
			{
				alert('Year cannot be greater than current year!');
				refField.focus();
				return false;
			}	
			else
			{	
				if (year == SysYear)
				{
					if (month > SysMonth)
					{
						alert('Month cannot be greater than current month!');
						refField.focus();
						return false;
					}
					else
					{
						if (month == SysMonth)
						{
							if (day > SysDate)
							{
								alert('Date cannot be greater than current date!');
								refField.focus();
								return false;
							}
						}
					}		
				}
			}
					
			if (month < 1 || month > 12)  // check month range
			{
				alert("Month must be between 1 and 12.");
				refField.focus();
				return false;
			}

			if (day < 1 || day > 31)
			{
				alert("Day must be between 1 and 31.");
				refField.focus();
				return false;
			}			
			
			if (year < 1900 || year > 2095)
			{
				alert("Year must be between 1900 and " + SysYear + ".");
				refField.focus();
				return false;
			}
			if ((month==4 || month==6 || month==9 || month==11) && day==31) 
			{
				alert("Month "+month+" doesn't have 31 days!");
				refField.focus();
				return false;
			}
			if (month == 2) 
			{
				// check for february 29th
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day>29 || (day==29 && !isleap))
				{
					alert("February " + year + " doesn't have " + day + " days!.");
					refField.focus();
					return false;
			    }
			}
		}						
	return true;  // date is valid

}

function DateCheck(refField)
{	
	if (refField.value != "")
	{

		var dateStr
		// To require a 4 digit year entry, use this line instead:
	
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
			
		refField.value = trimspace(refField.value);
		dateStr = refField.value
		if (dateStr !="")
		{
			var matchArray = dateStr.match(datePat); // is the format ok?
			if (matchArray == null || matchArray[2]!='/') 
			{	
			    alert ("Please enter the date in mm/dd/yyyy format.");
				refField.focus();
			    return false;
			}
			
			month = matchArray[1];
			if (month.length == 1)
			{
				month = "0" + month;
			}
			day = matchArray[3];
			if (day.length == 1)
			{
				day = "0" + day;
			}
			year = matchArray[4];
			if (year.length == 1)
			{
				year = "0" + year;
			}

			maindate = month + '/' + day + '/' + year;
			refField.value = maindate;
						
			currentDate = new Date()			
			with (currentDate) // is used to make the object stored with currentDate the defaut object for object References
			{
				SysYear  = getFullYear();
				SysMonth = getMonth();
				SysDate  = getDate();
			}			
			SysMonth =  SysMonth+ 1;	
			if (SysMonth/10 < 1)
			{
				SysMonth = '0' + SysMonth; 
			}
						
			/*if (year > SysYear)
			{
				alert('Year cannot be greater than current year!');
				refField.focus();
				return false;
			}	
			else
			{	
				if (year == SysYear)
				{
					if (month > SysMonth)
					{
						alert('Month cannot be greater than current month!');
						refField.focus();
						return false;
					}
					else
					{
						if (month == SysMonth)
						{
							if (day > SysDate)
							{
								alert('Date cannot be greater than current date!');
								refField.focus();
								return false;
							}
						}
					}		
				}
			}*/
					
			if (month < 1 || month > 12)  // check month range
			{
				alert("Month must be between 1 and 12.");
				refField.focus();
				return false;
			}

			if (day < 1 || day > 31)
			{
				alert("Day must be between 1 and 31.");
				refField.focus();
				return false;
			}			
			
			if (year < 1900 || year > 2095)
			{
				alert("Year must be less than 2095."); 	/* between 1900 and " + SysYear + "."); */
				refField.focus();
				return false;
			}
			if ((month==4 || month==6 || month==9 || month==11) && day==31) 
			{
				alert("Month "+month+" doesn't have 31 days!");
				refField.focus();
				return false;
			}
			if (month == 2) 
			{
				// check for february 29th
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day>29 || (day==29 && !isleap))
				{
					alert("February " + year + " doesn't have " + day + " days!.");
					refField.focus();
					return false;
			    }
			}
		}
	}
	return true;  // date is valid
}


function FormatDate(pszDate)
{
	if (pszDate != "")
	{
		arrDate = pszDate.split("/");
		iMonth = arrDate[0];
		iDay = arrDate[1];
		iYear = arrDate[2];
		if (iMonth.length == 1)
		{
			iMonth = "0" + iMonth;
		}
		
		if (iDay.length == 1)
		{
			iDay = "0" + iDay;
		}

		return iMonth + "/" + iDay + "/" + iYear;
	}
}


function CompareDates(refStartDt, refEndDt, pszStartDt, pszEndDt)
{
	stdt = refStartDt.value;
	etdt = refEndDt.value;
	
	if (Date.parse(stdt) >= Date.parse(etdt))
	{
		//if (!((fnstartdt == "") || (fnenddt == "")))
		//{ 	
			alert("Please enter the " + pszEndDt + " greater than " + pszStartDt);
		//}
		refEndDt.select();
		refEndDt.focus();
		return false;
	}
	return true;
}


function isnumber(refField, pszField)
{	
		var iFlag = 0;
		var fieldobj = refField;
		data = fieldobj.value;
		if (data != "")
		{	
			data = trimspace(data);
			val = data.split(" ");		
			if (val.length > 1)
			{	
				iFlag = 1;
			}	
			val = data.split("-0");	//4-08-2004 dinanath		
			if (val.length > 1)
			{	
				iFlag = 2;
			}
			//else //end
			//data = trimspace(data);
			val = data.split("+");		
			if (val.length > 1)
			{	
				iFlag = 2;
			}

			//Added by SA for exponent(e) test
			val = data.split("e");
			if (val.length > 1)
			{	
				iFlag = 2;
			}
			val = data.split("E");
			if (val.length > 1)
			{	
				iFlag = 2;
			}

			//data = trimspace(data);
			val = data.split(".");		
			if (val.length > 1)
			{	
				iFlag = 2;
			}
			//data = trimspace(data);
			val = data.split("-");		
			if (val.length > 1)
			{	
				iFlag = 2;
			}	
			
			if (data != "")
			{
				fieldobj.value=data;
				if(isNaN(data)==true)
				{											
					iFlag = 2;
				}
			}
			else
			{
				fieldobj.value="";
			}
		}
		
		if (iFlag == 1)
		{
			alert("Space is not allowed for '" + pszField + "'");
			fieldobj.select();
			fieldobj.focus();
			return false;
		}
		else if (iFlag == 2)
		{
			alert("Please enter only Numeric value for '" + pszField + "'");
		   	fieldobj.select();
		   	fieldobj.focus();
		   	return false;
		}
		else
			return true;
}


function IsDecimal(refField, pszField)
{	
		var iFlag = 0;
		var fieldobj = refField;
		data = fieldobj.value;
		if (data != "")
		{	
			data = trimspace(data);
			val = data.split(" ");		
			if (val.length > 1)
			{	
				iFlag = 1;
			}	
			val = data.split("-0");	//4-08-2004 dinanath		
			if (val.length > 1)
			{	
				iFlag = 2;
			}
			//else //end
			//data = trimspace(data);
			val = data.split("+");		
			if (val.length > 1)
			{	
				iFlag = 2;
			}

			//Added by SA for exponent(e) test
			val = data.split("e");
			if (val.length > 1)
			{	
				iFlag = 2;
			}
			val = data.split("E");
			if (val.length > 1)
			{	
				iFlag = 2;
			}

			//data = trimspace(data);
			val = data.split("-");		
			if (val.length > 1)
			{	
				iFlag = 2;
			}	
			
			if (data != "")
			{
				fieldobj.value=data;
				if(isNaN(data)==true)
				{											
					iFlag = 2;
				}
			}
			else
			{
				fieldobj.value="";
			}
		}
		
		if (iFlag == 1)
		{
			alert("Space is not allowed for '" + pszField + "'");
			fieldobj.select();
			fieldobj.focus();
			return false;
		}
		else if (iFlag == 2)
		{
			alert("Please enter only Decimal value for '" + pszField + "'");
		   	fieldobj.select();
		   	fieldobj.focus();
		   	return false;
		}
		else
			return true;
}


function IsDecimalNeg(refField, pszField)
{	
		var iFlag = 0;
		var fieldobj = refField;
		data = fieldobj.value;
		if (data != "")
		{	
			data = trimspace(data);
			val = data.split(" ");		
			if (val.length > 1)
			{	
				iFlag = 1;
			}	
			val = data.split("-0");	//4-08-2004 dinanath		
			if (val.length > 1)
			{	
				iFlag = 2;
			}
			//else //end
			//data = trimspace(data);
			val = data.split("+");		
			if (val.length > 1)
			{	
				iFlag = 2;
			}

			//Added by SA for exponent(e) test
			val = data.split("e");
			if (val.length > 1)
			{	
				iFlag = 2;
			}
			val = data.split("E");
			if (val.length > 1)
			{	
				iFlag = 2;
			}

			if (data != "")
			{
				fieldobj.value=data;
				if(isNaN(data)==true)
				{											
					iFlag = 2;
				}
			}
			else
			{
				fieldobj.value="";
			}
		}
		
		if (iFlag == 1)
		{
			alert("Space is not allowed for '" + pszField + "'");
			fieldobj.select();
			fieldobj.focus();
			return false;
		}
		else if (iFlag == 2)
		{
			alert("Please enter only Decimal value for '" + pszField + "'");
		   	fieldobj.select();
		   	fieldobj.focus();
		   	return false;
		}
		else
			return true;
}


function isfirst(refField, pszField)
{	
		data = refField.value;
		if (data != "")
		{	
			strfn = data.charAt(0);
			if(!isNaN(strfn)==true)
			{
				alert(pszField + " can not Start with a Numeric value");
				refField.select();
				refField.focus();
				return false;
			}
			else
			{
				return (isSpace(refField, pszField)); 
			}				 
		}
		return true;
}

function isEmpty(pszValue)
{   
	return ((pszValue == null) || (pszValue.length == 0))
}


function IsAlphaNum(refField, pszField) 
{	
    var l_ch;
    var l_value;
    var l_index = 0;

		var fieldobj = refField;
		l_value = fieldobj.value;
			if(l_value != "") 
			{
				while(l_index < l_value.length) 
				{
			        l_ch = l_value.charAt(l_index);
			        if ((l_ch < 'a' || l_ch > 'z') && (l_ch < 'A' || l_ch > 'Z') && (l_ch > '9' || l_ch < '0')) 
					{
						alert("Please enter only alpha-numeric value for " + pszField);
						fieldobj.select();
					   	fieldobj.focus();
					   	return false;
					}
			        l_index++;
				}
			    return true;
			}
	return true;
}

function isValidName(refField, pszField) 
{	
    var l_ch;
    var l_value;
    var l_index = 0;

		var fieldobj = refField;
		l_value = fieldobj.value;

          /*-------- Check for start char is Digit or not ---------------*/
		  data = refField.value;
		if (data != "")
		{	
			strfn = data.charAt(0);
			if(!isNaN(strfn)==true)
			{
				alert(pszField + " can not Start with a Numeric value");
				refField.select();
				refField.focus();
				return false;
			}
			else	
		  /*-----------------------------------*/
		    {          
				if(l_value != "") 
				{
					while(l_index < l_value.length) 
					{
						l_ch = l_value.charAt(l_index);
						if ((l_ch < 'a' || l_ch > 'z') && (l_ch < 'A' || l_ch > 'Z') && (l_ch > '9' || l_ch < '0') && (l_ch != ' ' && l_ch != '_' && l_ch != '-')) 
						{
							alert("Please enter only alpha-numeric value for " + pszField);
							fieldobj.select();
						 	fieldobj.focus();
					   		return false;
						}
						l_index++;
					}
					return true;
				}
	return true;
			}
		}
}


function alphanumCheck(refField, pszField) 
{	
    var l_ch;
    var l_value;
    var l_index = 0;

		var fieldobj = refField;
		l_value = fieldobj.value;
			if(l_value != "") 
			{
				while(l_index < l_value.length) 
				{
			        l_ch = l_value.charAt(l_index);
			        if((l_ch < 'a' || l_ch > 'z') 
						&& (l_ch < 'A' || l_ch > 'Z')) 
					{
						alert("Please enter only alphabet for " + pszField);
						fieldobj.select();
					   	fieldobj.focus();
					   	return false;
					}
			        l_index++;
				}
			    return true;
			}
	return true;
}


function isSpace(refField, pszField)
{	
	data = refField.value;
	val = data.split(" ");		

	if (val.length > 1)
	{
		alert("Space is not allowed in " + pszField);
		refField.select();
		refField.focus();
		return false;
	}
	else
		return true;
}

// Credit card validation

function mod10( cardNumber ) {
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;

	   	for( i = 0; i < cardNumber.length; ++i ) {
    		ar[i] = parseInt(cardNumber.charAt(i));
    	}
    	for( i = ar.length -2; i >= 0; i-=2 ) { 
    		ar[i] *= 2;
    		if( ar[i] > 9 ) ar[i]-=9;
    	}										
        	for( i = 0; i < ar.length; ++i ) {
        		sum += ar[i];
        	}
        	return (((sum%10)==0)?true:false);	 	
			
    }

function expired( month, year )
{
	//alert (year);
	var now = new Date();
	var now = new Date(now.getFullYear(),now.getMonth()+1,0,0,0);
	//alert(now);
	var expiresIn = new Date(year,month,0,0,0);
	//alert(expiresIn);
	if (now.getTime() <= expiresIn.getTime() ) return false;
	return true;
}

function validateCard(cardNumber,cardType,cardMonth,cardYear)
{
	if( cardNumber.length == 0 ) {			
		alert("Please enter a valid card number.");
		return false;				
	}

	for( var i = 0; i < cardNumber.length; ++i )
	{
		var c = cardNumber.charAt(i);

			if( c < '0' || c > '9' )
			{
				alert("Please enter a valid card number. Use only digits. do not use spaces or hyphens.");
				return false;
			}
	}
	var length = cardNumber.length;

	switch(cardType)
	{
		case 'a':
			if(length != 15)
			{
				alert("Please enter a valid American Express Card number.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));

			if(prefix != 34 && prefix != 37)
			{
				alert("Please enter a valid American Express Card number.");
				return;
			}
			break;

		case 'd':
			if(length != 16)
			{
				alert("Please enter a valid Discover Card number.");
				return;
			}
			var prefix = parseInt(cardNumber.substring(0,4));


			if(prefix != 6011)
			{
				alert("Please enter a valid Discover Card number.");
				return;
			}
			break;

		case 'm':
			if(length != 16)
			{
				alert("Please enter a valid MasterCard number.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));

			if(prefix < 51 || prefix > 55)
			{
				alert("Please enter a valid MasterCard Card number.");
			return;
			}
			break;

		case 'v':
			if(length != 16 && length != 13)
			{
				alert("Please enter a valid Visa Card number.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,1));

			if(prefix != 4)
			{
				alert("Please enter a valid Visa Card number.");
				return;
			}
			break;
	}

	if(!mod10(cardNumber))
	{ 
		alert("Sorry! this is not a valid credit card number.");
		return false;
	}

	if(expired(cardMonth, cardYear))
	{				
		alert("Sorry! The expiration date you have entered would make this card invalid.");
		return false;
	}
	
	return true; 
}


