//-- Validate Date and run ChangeMade function.
function ChangeMadeDate(field,Item) {	
	ChangeMade(Item);	//-- Run ChangeMade function on form.
	text = field.value
	DateValidate(field);
}

//-- Validate Date mask after entry or to validate page (no return alert messages).
function CheckDateMask(text) {	
if ((text == "") || (text == null))
	return true;
if(text.search(/\d{2}\/\d{2}\/\d{4}/)==-1)
	return false;
if (text.length == 10) {
	month = text.charAt(0) + text.charAt(1);
	//remove leading zeros on the day
	if (text.charAt(3) == 0)
		day = text.charAt(4);
	else
		day=text.charAt(3) + text.charAt(4);
	year=text.charAt(6) + text.charAt(7) + text.charAt(8) + text.charAt(9);
	// Validate Year
	if (year <= 1900)
		return false;
	if (year >= 2050)
		return false;
	// Validate Month
	if (ChkMonthDays(month,day,year))
		return true;
	else
		return false;
	}
}

function DateMask(field,event) {
var sDate = field.value

var key,keychar;	// Obtain the last key user selected.
if(window.event)
  key = window.event.keyCode;
else if (event.which)
  key = event.which;
else
  return true;

//Check for special characters like backspace then check for the numbers
if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27))
  return true;

keychar = String.fromCharCode(key);
if (("0123456789/").indexOf(keychar) == -1) {
  alert("Field accepts numbers only");
  return false;
  }
else {
  //Check position of a slash character.
  if ((("/").indexOf(keychar) != -1) && ((sDate.length <2) || (sDate.length ==3) || (sDate.length ==4) || (sDate.length >5)))
    return false;

  switch (sDate.length) {
    case 2:
      // If user adds a slash, do not automatically add one.
      if (("/").indexOf(keychar) == -1)
        field.value = field.value + '/';
      return true;
      break;
    case 5:
      // If user adds a slash, do not automatically add one.
      if (("/").indexOf(keychar) == -1)
        field.value = field.value + '/';
      return true;
      break;
    default:
      return true;
      break;
    }
  }
}
function DateValidate(field,DateRange) {
var sDate= field.value;
if (sDate.length == 0)
  return true;

if (sDate.length == 8) {
	year = sDate.charAt(6) + sDate.charAt(7);
	if (year <= 50)
		year = '20' + year	;
	else
		year = '19' + year;
	month = sDate.charAt(0) + sDate.charAt(1);
	day = sDate.charAt(3) + sDate.charAt(4);
	fulldate = month + '/' + day + '/' + year;
	field.value = fulldate;
	sDate = fulldate;
	}
if (sDate.length == 10) {
	//Obtain Month, Day (remove leading zeros on the dayif less then 10) and Year.
	month = sDate.charAt(0) + sDate.charAt(1);
	if (sDate.charAt(3) == 0)
		day = sDate.charAt(4);
	else
		day=sDate.charAt(3) + sDate.charAt(4);
	year=sDate.charAt(6) + sDate.charAt(7) + sDate.charAt(8) + sDate.charAt(9);

	Date_Today = new Date()
	if (year>Date_Today.getFullYear() +2)  {
		alert('This is an invalid year');
		setTimeout(function(){field.focus();field.select();} ,10);
		return false;
		}
	if (year<1990 && DateRange != 'L')  {
		alert('This is an invalid year');
		setTimeout(function(){field.focus();field.select();} ,10);
		return false;
		}
	if (ChkMonthDays(month,day,year)) {
		if (DateRange == 'L') {
			dDateCompare = new Date(sDate);
			if (dDateCompare < Date_Today)
				return true;
			else {
				alert('This date can not be greater than todays date');
// BEST OPTION FOR SETTING FOCUS
				setTimeout(function(){field.focus();field.select();} ,10);
				return false;
				}
			}
		if (DateRange == 'G') {
			dDateCompare = new Date(sDate);
			if (dDateCompare > Date_Today)
				return true;
			else {
				alert('This date can not be less than todays date.');
				setTimeout(function(){field.focus();} ,10);
				return false;
				}
			}
		}
	else {
		alert("This date is invalid. Proper Date Format is mm/dd/yyyy.");
		setTimeout(function(){if(field)field.focus();field.select();},10)
		return false;
		}
	}
else {
	alert("This date is invalid. Proper Date Format is mm/dd/yyyy.");
	field.focus();
	return false;
	}			
}

// Validating the Date Selected
function ChkMonthDays(MonIndex,SelDay,SelYear) {
if(MonIndex==4 || MonIndex==6 || MonIndex==9 || MonIndex==11) {
	if(parseInt(SelDay)>30 || parseInt(SelDay)==0)
		return false;
	else
		return true;
	} 
if (MonIndex==1 || MonIndex==3 || MonIndex==5 || MonIndex==7 || MonIndex==8 || MonIndex==10 || MonIndex==12) {
	if(parseInt(SelDay)>31 || parseInt(SelDay)<1)
		return false;
	else
		return true;
	}
if(MonIndex==2)	//For Feb.
	{
	if((parseInt(SelYear) % 4)!=0) {
		if(parseInt(SelDay)>28)
			return false;
		else
			return true;
		}
	else if((parseInt(SelYear) % 400)==0) {
		if(parseInt(SelDay)>29)
			return false;
		else
			return true;
		}
	else if((parseInt(SelYear) % 100)==0) {
		if(parseInt(SelDay)>28)
			return false;
		else
			return true;
		}
	else {
		if(parseInt(SelDay)>29)
			return false;
		else
			return true;
		}
	}
if (MonIndex>=13)
	return false;
}
