// File    : GeorgiaScript.js
// Author  : Akshay
// Date    : 3/14/2004
// Purpose : Javascript related code


function doShowMaps()
{	
	document.getElementById('divShowMapBtn').style.display='none';
	document.getElementById('divHideMapBtn').style.display='block';
	document.getElementById('divMaps').style.display='block';	
	
	//document.all.divShowMapBtn.style.display='none';
	//document.all.divHideMapBtn.style.display='block';
	//document.all.divMaps.style.display='block';	
}
/////////////////////////////////////////////////////////////////////////////////////////
function doHideMaps()
{	
	document.getElementById('divShowMapBtn').style.display='block';
	document.getElementById('divHideMapBtn').style.display='none';
	document.getElementById('divMaps').style.display='none';	
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function FriendMail(){
	var CurrentURL = self.document.location;
	var sSource = " "
	var re = new RegExp(sSource, "gi")
	var stringToReplace = document.title
	var stringReplacement = "%20"
	var newStr = stringToReplace.replace(re,stringReplacement)	
	
	if (stringToReplace == "Send this page to a friend" || stringToReplace == "E-mail Sent"){
		alert("This page cannot be sent to a friend")
	}
	else{
		document.location.href="http://www.gadnr.org/friendmail/friendMail.asp?URL="+CurrentURL+"&title="+newStr
	}
}

function checkBlank(){

	var sString = document.FormName.SearchString.value

	if (sString == ""){
		alert("You must enter some text to search.");
		return false;
	}
	return true;
}


function ParkTypeMessage()
{
	/*if (parktype.value == "T")  if cottage, display temporary message */
	if (document.Form1.DDListPropertyType.options[document.Form1.DDListPropertyType.selectedIndex].value == 'T') /* if cottage, display temporary message */ 
	{
		alert("Cottage reservations for Buck Creek, Cowan Lake, Dillon, Hocking Hills, Lake Hope, Mohican, Pike Lake and Pymantuning state parks will be available through this site starting February, 16 2004. Until then call 1-800-At-A-Park or visit www.atapark.com. For Cottage reservations at Deer Creek State Park call 1-877-678-3337 or visit www.visitdearcreek.com.  For all other 	State Park Cottages call 1-800-At-A-Park or visit www.atapark.com."); 
		return false;
	}
return true;
}


/*   validateCCNumber() - checks that a credit card number is a valid credit
 *                        card number, and that the card is not expired.
 *
 *   Parameters: cardNumberField - a text field where cc number has been swiped or entered manually
 *               expMonthField - a text field where the exp month has been entered
 *               expYearField - a text field where the exp year has been entered
 *
 *   Returns: boolean value - true for valid card, false for invalid card
 *
 *   Comments: Visa card numbers begin with 4, MasterCard with 5, Discover with 6.
 *             MasterCard and Discover numbers must be 16 digits in length. Visa cards
 *             must be either 13 or 16 digits in length. 
 */

function validateCreditCard(cardNumberField, expMonthField, expYearField)
{
	cardNumber = cardNumberField.value;
	expYear = expYearField.value;
	expMonth = expMonthField.value;
	
	firstChar = cardNumber.charAt(0);
	if (! (firstChar == '4' || firstChar == '5' || firstChar == '3' || firstChar == '6') )
		{
			alert("Please specify a valid card number."); 
			cardNumberField.focus(); 
			return false;
		}

	
	if(cardNumber.charAt(0) == '4' && (!(cardNumber.length == 13 || cardNumber.length == 16))){
		alert("Invalid card number specified.");
		
		ccStr = "";
		cardNumberField.value = "";
		expMonthField.value = "";
		expYearField.value = "";
		cardNumberField.focus();
		
		return false;
	}
	
	if((cardNumber.charAt(0) == '5') && (cardNumber.length != 16)){ //|| cardNumber.charAt(0) == '6'
		alert("Invalid card number specified.");
		
		ccStr = "";
		cardNumberField.value = "";
		expMonthField.value = "";
		expYearField.value = "";
		cardNumberField.focus();
		
		return false;
	}
	
	if(!luhnCheck(cardNumber)){
	//return true;////////////////////////For testing only
		alert("Please specify a valid card number.");
		
		ccStr = "";
		cardNumberField.value = "";
		expMonthField.value = "";
		expYearField.value = "";
		cardNumberField.focus();
		
		return false;
	}	
	
	// Check the credit card expiration date
	
	today = new Date();
	
	if (expYear.length <= 2)
	{
		if(expYear > 96) expYear = "19" + expYear;
		else if(expYear < 21) expYear = "20" + expYear;
	}
	
	if((expYear.length != 4) || (expYear < today.getYear())){
		alert("Please specify a valid expiration year." );
		
		expYearField.value = "";
		expYearField.focus();
		
		return false;
	}
	
	// Year is okay. Check the month.
	
	else{ 

	//	alert(expMonth);
		
		if(expMonth.length != 2){
			alert("Please specify a valid expiration month.");
			
			expMonthField.value = "";
			expMonthField.focus();
		
			return false;
		}
		else if (! (expMonth.charAt(0) == '0' || expMonth.charAt(0) == '1') )
		{
			alert("Please specify a valid expiration month.");
			
			expMonthField.value = "";
			expMonthField.focus();
		
			return false;
			
		}
		else if (expMonth.charAt(0) == '0')
			{
				if (expMonth.charAt(1) < '1' || expMonth.charAt(1) > '9')
					{
						alert("Please specify a valid expiration month.");
						expMonthField.value = "";
						expMonthField.focus();
						return false;
					}
			}
		else if (expMonth.charAt(0) == '1')
			{
				if (expMonth.charAt(1) < '0' || expMonth.charAt(1) > '2')
					{
						alert("Please specify a valid expiration month.");
						expMonthField.value = "";
						expMonthField.focus();
						return false;
					}
			}
		else if(expMonth.charAt(0) == '0'){
			expMonth = expMonth.charAt(1);
		}
		
		if(expYear == today.getYear() && expMonth <= (today.getMonth() ) ){//+ 1
			
			alert("Please specify a valid expiration month.");
			
			expMonthField.value = "";
			expMonthField.focus();
		
			return false;
		}
	}
	
	return true;
}			



/*   luhnCheck() - checks that a credit card number is a valid credit
 *                 card number using the Luhn algorithm.
 *
 *   Parameters: String cardNumber - a credit card number
 *               
 *   Returns: boolean value - true for valid number, false for invalid number
 *
 *   Comments: Called by validateCCNumber()
 */
 
function luhnCheck(s) {

  var i, n, c, r, t;

  // First, reverse the string and remove any non-numeric characters.

  r = "";
  for (i = 0; i < s.length; i++) {
    c = parseInt(s.charAt(i), 10);
    if (c >= 0 && c <= 9)
      r = c + r;
  }

  // Check for a bad string.

  if (r.length <= 1)
    return false;

  // Now run through each single digit to create a new string. Even digits
  // are multiplied by two, odd digits are left alone.

  t = "";
  for (i = 0; i < r.length; i++) {
    c = parseInt(r.charAt(i), 10);
    if (i % 2 != 0)
      c *= 2;
    t = t + c;
  }

  // Finally, add up all the single digits in this string.

  n = 0;
  for (i = 0; i < t.length; i++) {
    c = parseInt(t.charAt(i), 10);
    n = n + c;
  }

  // If the resulting sum is an even multiple of ten (but not zero), the
  // card number is good.

  if (n != 0 && n % 10 == 0)
    return true;
  else
    return false;
}
