function validateCheck()
{
	var DiningDay = document.checkrate.DiningDay;
	var DiningMonth = document.checkrate.DiningMonth;
	var DiningYear = document.checkrate.DiningYear;

	if (DiningDay.selectedIndex == 0)
	{
		alert('Please select the Day of your Dining Date.');
		return false;
	}

	if (DiningMonth.selectedIndex == 0)
	{
		alert('Please select the Month of your Dining Date.');
		return false;
	}

	if (DiningYear.selectedIndex == 0)
	{
		alert('Please select the Year of your Dining Date.');
		return false;
	}

	if (((DiningDay[DiningDay.selectedIndex].value > 29) && (DiningMonth[DiningMonth.selectedIndex].value == 2) && ((DiningYear[DiningYear.selectedIndex].value % 4) == 0)) || ((DiningDay[DiningDay.selectedIndex].value > 28) && (DiningMonth[DiningMonth.selectedIndex].value == 2) && ((DiningYear[DiningYear.selectedIndex].value % 4) > 0)) || ((DiningDay[DiningDay.selectedIndex].value > 30) && ((DiningMonth[DiningMonth.selectedIndex].value == 4) || (DiningMonth[DiningMonth.selectedIndex].value == 6) || (DiningMonth[DiningMonth.selectedIndex].value == 9) || (DiningMonth[DiningMonth.selectedIndex].value == 11))))
	{
		alert('Please select a valid Dining Date.');
		return false;
	}
	
	var today = new Date();
	var vdate = '';
	var vtoday = '';

	vtoday += today.getYear();
    vtoday += (today.getMonth() + 1);
    vtoday += (today.getDate() + 1);
	
	if (DiningMonth[DiningMonth.selectedIndex].value != 0 && DiningDay[DiningDay.selectedIndex].value != 0 && DiningYear[DiningYear.selectedIndex].value != 0) {
		vdate = DiningYear[DiningYear.selectedIndex].value + DiningMonth[DiningMonth.selectedIndex].value + DiningDay[DiningDay.selectedIndex].value;
		if (parseInt(vdate) < parseInt(vtoday)) {
			alert('Please select a Dining Date one(1) days from today.');
			return false;
		}
	}

	if ((document.checkrate.NumOfAdult.value == '') || (document.checkrate.NumOfAdult.value == 0) || (isNaN(document.checkrate.NumOfAdult.value) == true))
	{
		alert('Please enter the number of persons.');
		return false;
	}
	
	if ((document.checkrate.ResID.value == '') || (document.checkrate.ResID.value == 0))
	{
		alert('Please select the Restaurant.');
		return false;
	}
	
	return true;
}


function doContinueReserve(PostURL)
{
	if (!validateCheck())
		return false;
	document.checkrate.action = PostURL;
	document.checkrate.submit();
}


function displayinfo(infoid)
{
	window.open("hotel-reserve-roominfo.asp?infoid=" + infoid, "RoomInfo", config="width=600,height=360,scrollbars=1,resizable=0");
}


function extractDigits(mixedString) {
   var digitsOnly = '';
   var thisDigit = '';
   for (var i = 0; i < mixedString.length; i++) {
      thisDigit = mixedString.charAt(i);
      if (thisDigit >= '0' && thisDigit <= '9')
         digitsOnly = digitsOnly + thisDigit;
   }
   return digitsOnly;
}


function checkMod10(ccNumber) {
   var translateMap = '0246813579';
   var digitSum = 0;
   var translateFlag = ((ccNumber.length % 2) == 0);
   for (var i = 0; i < ccNumber.length; i++) {
       digitSum += parseInt(translateFlag ?
            translateMap.charAt(ccNumber.charAt(i)) :
            ccNumber.charAt(i) , 10)
      translateFlag = !translateFlag;
   }
   return (digitSum % 10) == 0;
}
 

function validCardType(ccNumber) {
   var cardLengths = new Array (
         'v', 13, 'v', 16, 'm', 16,
         'a', 15, 'c', 14, 'd', 16);
   var cardDigits = new Array (
         'v', '4', 'm', '51', 'm', '52', 'm', '53' ,
         'm', '54', 'm', '55', 'a', '34', 'a', '37',
         'c', '300', 'c', '301', 'c', '302', 'c', '303',
         'c', '304', 'c', '305', 'c', '36', 'c', '38',
         'd', '6011');
   var validCard = false;
   var correctLength = false;
   var cardType = '' ;
   for (var i = 0; i < cardDigits.length - 1; i += 2) {
      if (cardDigits[i + 1] == ccNumber.substr(0, cardDigits[i + 1].length)) {
         validCard = true;
         cardType = cardDigits[i];
         break;
      }
   }
   if (validCard) {
      var cardLen = ccNumber.length;
      for (var i = 0; i < cardLengths.length - 1; i += 2) {
         if ((cardType == cardLengths[i]) && (cardLen == cardLengths[i + 1])) {
            correctLength = true;
            break;
         }
      }
      validCard = correctLength;
   }
   return validCard;
}
 

function validateCollectInfo()
{
	if (document.reserveform.Surname.value == '')
	{
		alert('Please enter your Surname');
		return false;
	}

	if (document.reserveform.GivenName.value == '')
	{
		alert('Please enter your Given Name');
		return false;
	}

	if (document.reserveform.TelephoneNumber.value == '')
	{
		alert('Please enter your Telephone Number');
		return false;
	}

	if (document.reserveform.MobilePhone.value == '')
	{
		alert('Please enter your Mobile Phone Number');
		return false;
	}

	if (document.reserveform.EmailAddress.value == '')
	{
		alert('Please enter your e-mail address.');
		return false;
	}
	else if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.reserveform.EmailAddress.value)))
	{
		alert("Invalid e-mail address! Please re-enter.")
		return false;
	}

	if (document.reserveform.AddressLine1.value == '')
	{
		alert('Please enter your Street Address');
		return false;
	}

	if (document.reserveform.AddressCity.value == '')
	{
		alert('Please enter your City');
		return false;
	}

	if (document.reserveform.AddressState.value == '')
	{
		alert('Please enter your State');
		return false;
	}
	
	if (document.reserveform.AddressZip.value == '')
	{
		alert('Please enter your Postal/Zip Code');
		return false;
	}

	if (document.reserveform.AddressCountry.value == '')
	{
		alert('Please enter your Country');
		return false;
	}

	if (document.reserveform.ccType.value == '')
	{
		alert('Please select the type of your credit card');
		return false;
	}

	if (document.reserveform.ccNumber.value == '')
	{
		//alert('Please enter your Credit Card Number');
		//return false;
	}

	var ccDigits = extractDigits(document.reserveform.ccNumber.value);
	if (!checkMod10(ccDigits) && !validCardType(ccDigits))
	{
      		//alert('Invalid credit card number');
		//return false;
	}

	if (document.reserveform.ccExpMonth.value == '')
	{
		alert('Please enter the Credit Card Expiration Month');
		return false;
	}

	if (document.reserveform.ccExpYear.value == '')
	{
		alert('Please enter the Credit Card Expiration Year');
		return false;
	}

	if (document.reserveform.ccNameOnCard.value == '')
	{
		alert('Please enter the name printed on the credit card');
		return false;
	}

	return true;
}


function doReserve()
{
	if (!validateCollectInfo())
		return false;
	document.reserveform.action = 'restaurant-reserve-process.asp';
	document.reserveform.submit();
}


