﻿//Ham nay kiem tra xem ngay thang co hop le hay khong
function isDateValid(vDay, vMonth, vYear)
{
	  var vDateTime, cDay, cDate
	  vDateTime = vMonth+"/"+vDay+"/"+vYear
	  cDate = new Date(vDateTime)
	  cDay = cDate.getDate()
	  if ( parseInt(cDay) == parseInt(vDay) )
	  {
		return true;
	  }
	  else
	  {
		return false;
	  }
}

//Ham nay tim so ngay trong mot thang , tham so i la thang , y la nam
function DaysInMonth(i,y) {
   if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
      return(31);
   } else if(i == 4 || i == 6 || i == 9 || i == 11) {
      return(30);
   } else if(y%4 == 0) {
      return(29);
   }
   return(28);
}

// Ham nay tham so truyen vao phai la ngay Viet Nam va chuyen doi qua ngay English
function English_Date(strVNDate)
 {    
    var temp=strVNDate.split("/");
    var ngay = temp[0];
    var thang = temp[1];
    var nam = temp[2];
    var dateEN = thang + "/" + ngay + "/" + nam;
    return dateEN;
 }

//Ham nay kiem tra xem mot chuoi co phai la so hay khong
function isNum(str) {
	var valid = "0123456789";
	var temp;
	for (var i = 0; i < str.length; i++) {
		temp = "" + str.substring(i, i + 1);
		if (valid.indexOf(temp) == "-1") 
			return false;
	}
	return true;
}

//Ham nay kiem tra xem mot chuoi co phai la ngay thang hay khong
//Tham so truyen vao la kieu ngay Viet Nam
function isDate(strVNDate)
{
 if (strVNDate.length > 10) return false;
 else
 {  
    var temp=strVNDate.split("/")
    if ( temp.length != 3 ) return false;
    else
    {
      var ngay = temp[0];
      var thang = temp[1];
      var nam = temp[2];
      if ( (!isNum(ngay))||(!isNum(thang))||(!isNum(nam)) ) 
         return false;
      else
      {
		 if      (ngay=='01') ngay=1
		 else if (ngay=='02') ngay=2
		 else if (ngay=='03') ngay=3
		 else if (ngay=='04') ngay=4
		 else if (ngay=='05') ngay=5
		 else if (ngay=='06') ngay=6
		 else if (ngay=='07') ngay=7
		 else if (ngay=='08') ngay=8
		 else if (ngay=='09') ngay=9
		 else    ngay = parseInt(temp[0]);

		 if      (thang=='01') thang=1
		 else if (thang=='02') thang=2
		 else if (thang=='03') thang=3
		 else if (thang=='04') thang=4
		 else if (thang=='05') thang=5
		 else if (thang=='06') thang=6
		 else if (thang=='07') thang=7
		 else if (thang=='08') thang=8
		 else if (thang=='09') thang=9
		 else    thang = parseInt(temp[1]);

         nam = parseInt(temp[2]);
         if ( (ngay<=0)||(ngay>=32)||(thang<=0)||(thang>=13) ) 
            return false;
         else
         {
           if (nam.toString().length != 4)
           {
             window.alert('Vui lòng nhập năm với 4 ký tự\n và không có số 0 đầu tiên !!!');
             return false;
           }
           else
           {
             if ( !isDateValid(ngay,thang,nam) ) return false;
             else return true;
           }
         }   
      }
    }
 }
}

//Ham tru hai ngay (dung de so sanh 2 ngay)
//Hai tham so ngay truyen vao la ngay VietNam
function TruNgay(strNgay1,strNgay2)
{
 var vNgay1 = new Date(English_Date(strNgay1));
 var vNgay2 = new Date(English_Date(strNgay2));
 return(vNgay1-vNgay2);
}

//
function y2k(number) { return (number < 1000) ? number + 1900 : number; }
var reason = '';

function isValidDate (myDate,sep) {
// checks if date passed is in valid dd/mm/yyyy format

    if (myDate.length == 10) {
        if (myDate.substring(2,3) == sep && myDate.substring(5,6) == sep) {
            var date  = myDate.substring(0,2);
            var month = myDate.substring(3,5);
            var year  = myDate.substring(6,10);

            var test = new Date(year,month-1,date);

            if (year == y2k(test.getYear()) && (month-1 == test.getMonth()) && (date == test.getDate())) {
                reason = '';
                return true;
            }
            else {
                reason = ' giá trị ngày không đúng ';
                return false;
            }
        }
        else {
            reason = ' giá trị phân các ngày không đúng ';
            return false;
        }
    }
    else {
        reason = ' chiều dài ngày không đúng ';
        return false;
    }
}

//
function makeArray() {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}

//
var accumulate    = new makeArray(0, 31, 59, 90,120,151,181,212,243,273,304,334);
var accumulateLY  = new makeArray(0, 31, 60, 91,121,152,182,213,244,274,305,335);
function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}
//
function pad(number,length) {
    var str = '' + number;
    while (str.length < length)
        str = '0' + str;
    return str;
}

function getJulianDay(year,month,day) {
    if (LeapYear(year))
		return pad(day + accumulateLY[month],3);
    else
        return pad(day + accumulate[month],3);
}

function yy_to_ccyy(yy) {
    // convert year in yy format to ccyy format
    return (yy < 70) ? '20' + pad(yy,2) : '19' + yy;
}

function YYMMDD_YYYYDDD(myDate) {	
	var year = yy_to_ccyy(myDate.substring(0,2) - 0);
	var month = myDate.substring(2,4) - 0;
	var day = myDate.substring(4,6) - 0;
	return julianDate = '' + year + getJulianDay(year,month,day);
}
