
// Parses a String into an Array containing the month, day and year.
// param: date string in MM/DD/YYYY format
// return: an Array with [1] = month, [2] = day, [3] = year
// return: null if not a valid date.
function parseDate (dateStr) {
 
  var date_array = dateStr.split('/');
      var day = date_array[0];
 
      // Attention! Javascript consider months in the range 0 - 11
      var month = date_array[1];
	 
 
      var year = date_array[2];
 
 
 
 
//alert(dateStr);
	// Parse in mm/dd/yyyy format
	// month: 0 followed by 1-9 or 1 followed by 0, 1, 2
	// day: 3 followed by 0 or 1, 0 followed by 1-9, or 1,2 followed by any digit
	// year: 4 digits
	 
	var re = /^(0[1-9]|1[012])\/(3[01]|0[1-9]|[12]\d)\/(\d{4})$/;
	

	if (re.test (dateStr) == true) {
		dateArray = re.exec (dateStr);
		// alert (dateArray[1] + "|" + dateArray[2] + "|" + dateArray[3]);
		return dateArray;
	} else {
		return null;
	}
}

function encParseDate (dateStr) {

	// Parse in mm/dd/yyyy format
	// month: 0 followed by 1-9 or 1 followed by 0, 1, 2
	// day: 3 followed by 0 or 1, 0 followed by 1-9, or 1,2 followed by any digit
	// year: 4 digits
	var re = /^(0[1-9]|1[012])\/(3[01]|0[1-9]|[12]\d)\/(\d{4})$/;
	if (re.test (dateStr) == true) {
		dateArray = re.exec (dateStr);
		return dateArray;
	} else {
		return null;
	}
}


// Returns true if earlierDate is earlier than 'laterDate'
function compareDates (earlierDate, laterDate) {
 
	if (earlierDate != null && laterDate != null) {
var arr1 = [];
var arr2 = [];


		//var arr1 = parseDate (earlierDate);
		//var arr2 = parseDate (laterDate);
		
		  arr1 = parseDate (earlierDate);
		  arr2 = parseDate (laterDate);
		 
		
		//alert(arr2[3]);
		//alert(arr2[2]);
		if (arr1 == null || arr2 == null) {
			return false;
		}
 
		var y1 = arr1[3];
		var y2 = arr2[3];
 
 

		if (y1 > y2) {
			// Year 1 is greater than Year 2
			// alert ('later date');
			return false;
		} else if (y1 == y2) {
			// Year is the same; Compare months.
			var m1 = arr1 [1];
			var m2 = arr2 [1];
			if (m1 > m2) {
				// alert ('month');
				return false;
			} else if (m1 == m2) {
				// Months are the same; compare dates
				var d1 = arr1 [2];
				var d2 = arr2 [2];
				if (d1 > d2) {
					// alert ('day');
					return false;
				} else {
					return true;
				}
			} else {
				return true;
			}
		} else {
			return true;
		}
	}
}

// returns true if given date is valid
function isValidDate (dateStr) {
	var arr1 = parseDate (dateStr);
	if (arr1 != null && validateDate (arr1 [2], arr1 [1], arr1 [3])) {
			return true;
	}
	return false;
}

function validateDateStr (formName, fieldName, errMsg, allowEmpty) {

	var dateVal = getFieldValue (formName, fieldName);

	if (dateVal.length == 0) {
		if (allowEmpty) {
			return true;
		} else {
			alert ('Please enter a Date');
			setFocusTo (formName, fieldName);
			return false;
		}
	}

	if (dateVal.length > 0) {
		if (parseDate (dateVal) == null) {
			alert (errMsg);
			setFocusTo (formName, fieldName);
			return false;
		}
	} else {
		return false;
	}

	return true;
}

// function to get the 21 year old date so as to compare with DOB
function GetOldDate(){
		var d= new Date();
		d.setDate(d.getDate()-((21*365)+5)); // adding 5 for one extraday of leapyear		
		var oldDate="";
		oldDate=(d.getMonth()+1);
		if(oldDate<10)
			oldDate="0"+oldDate;
		date=d.getDate();
		
		date=date.toString();
		
		
		
		if(date.length==1)
			date="0"+date;
		oldDate+="/"+ date;
		oldDate+="/"+ d.getFullYear();			
		return oldDate;		
		
}

function ValidateDOB()
{
	var pos;
	
	n = navigator;
	na = n.appVersion;
	nua = n.userAgent;
	
	// skipping the validation for Safari browser and enabling it in PHP.
	pos=nua.indexOf( 'Safari' );
	if ( pos>0 )
		return true;
		
			
	date=document.getElementById("date").value;
	month=document.getElementById("month").value;
	year=document.getElementById("year").value;
	var msg="";
	// month values 
	
	if(month.length<=0){
		msg+="\n - The Month is required.";		
	}else if(month.length==1){
		month="0"+month;
	}
	// date values
	if(date.length<=0){
		msg+="\n - The Day is required.";
	}else if(date.length==1){
		date="0"+date;
	}
	if(year.length<=0){
		msg+="\n - The Year is required.";
	}
	if(msg.length>0){
		alert("Please verify the following."+msg);
		return false;
	}else{
		DOB=month+"/"+date+"/"+year;
		olddate=GetOldDate().toString();
		// convert to string
		//olddate = olddate.toString();
		//alert(olddate);
		//alert(DOB);
		if(compareDates(DOB,olddate)){
			return true;	
		}else{
			alert("You Must be at least 21 Years Old to Enter this Site");
			return false;	
		}
	}
}


