// contains general check & format functions

function validDatePastDPG(src, args)
{

   var oInput = document.getElementById(src.controltovalidate);
   args.IsValid = CheckDate(args.Value);
   formatThisDate(oInput);
}

function formatThisDate(oInput)
{
  if(oInput.value == "") return;
  var iDate = formatDate(oInput.value);
  if(iDate) oInput.value = iDate;
}

function formatDate(v){
  if(v.indexOf('-') < 1){
    if(isNaN(parseInt(v))) return false;
    if(v.length < 4) return false;
    if(v.length == 8) v = v.substr(0, 2) + "-" + v.substr(2, 2) + "-" + v.substr(4, 4); 
    if(v.length == 7){
      if(parseInt(v.substr(1,2)) <= 12)
        v = v.substr(0, 1) + "-" + v.substr(1, 2) + "-" + v.substr(3, 4);
      else    
        v = v.substr(0, 2) + "-" + v.substr(2, 1) + "-" + v.substr(3, 4);
    }
    if(v.length == 6){
      if(parseInt(v.substr(0,2)) <= 31 && parseInt(v.substr(2,2)) <= 12)
        v = v.substr(0, 2) + "-" + v.substr(2, 2) + "-" + v.substr(4, 2);
      else
        v = v.substr(0, 1) + "-" + v.substr(1, 1) + "-" + v.substr(2, 4);
    }
    if(v.length == 5){
      if(parseInt(v.substr(1,2)) <= 12)
        v = v.substr(0, 1) + "-" + v.substr(1, 2) + "-" + v.substr(3, 2);
      else    
        v = v.substr(0, 2) + "-" + v.substr(2, 1) + "-" + v.substr(3, 2);
    }
    if(v.length == 4) v = v.substr(0, 1) + "-" + v.substr(1, 1) + "-" + v.substr(2, 2);
  }

  var p1  = v.indexOf('-'); 
  var p2  = v.indexOf('-', p1 + 1);
  var d, m, y;

  d = parseInt(v.substr(0,2), 10); 
  if(p1 > 0) m = parseInt(v.substr(p1 + 1, 2), 10); else m = 0;
  if(p2 > 0) y = parseInt(v.substr(p2 + 1, 4), 10); else y = 0;

//  if(isNaN(d) || d < 1) return false;
//  if(isNaN(m) || m < 1) return false;
    if(isNaN(y) || y < 1) return false;

  var d1 = d; if(d1 > 31) d1 = 31;
  var m1 = m; if(m1 > 12) m1 = 12;
  var y1 = y; 
  
  if(y1 > 2200) y1 = 2200; 
  if(y1 < 40)   y1 = 2000 + y1;
  if(y1 < 100)  y1 = 1900 + y1; 
  if(y1 < 1800) y1 = 1800;

  if(d1 > 28 && m1 == 2){
    if((y1 % 4 ==0) || ((y1 % 100 == 0) && !(y1 % 400 == 0))) d1 = 29;
    else d1 = 28;
  }
  if(d1 > 30 && (m1 == 4 || m1 == 6 || m1 == 9 || m1 == 11)) d1 = 30;

  var d2 = d1.toString();
  var m2 = m1.toString();
  var y2 = y1.toString();
  while (d2.length < 2) d2 = "0" + d2;
  while (m2.length < 2) m2 = "0" + m2;
  while (y2.length < 4) y2 = "0" + y2;
  return d2 + "-" + m2 + "-" + y2;
}
    
    
// ==============================================================================
    function CheckDate(sValue)
// ==============================================================================
    {
	var fValue = sValue.replace(/-/gi, '');

        if(isNaN(parseInt(fValue)))
        {
            // Entered value does not consist of numbers
            return false;
        }
        else
        {
            if (fValue.substr(0,4) == '0000')
            {
                var rDate = new String(fValue.replace('0000','0101'))
                var fDate = formatDate(rDate);

                if (fDate == false)
                {
                    return false;
                }
                else
                {
                    return CheckValidDate(fDate);
                }
            }
            else
            {
                var fDate = formatDate(fValue);
                return CheckValidDate(fDate);
            }
        }
        return false;
    }

function CheckValidDate(sDate)
{
	//Get day month and year
	var sDay = parseInt(sDate.substr(0,2), 10);
	var sMonth = parseInt(sDate.substr(3,2), 10) - 1;		//(month is zero based)
	var sYear = parseInt(sDate.substr(6,4), 10);

	//create a date object		
	var dDate = new Date(sYear, sMonth, sDay);
		
	//check if date isn't modified (29-2 becomes 1-3) and if date is today or in the past
	return(sDay == dDate.getDate() && sMonth == dDate.getMonth() && sYear == dDate.getFullYear() && dDate <= new Date());
}
