/*---------------------------------------------------
	機能：現在日付を"YYYY/MM/DD"型にする
---------------------------------------------------*/
function JS_getStringNow() {
}


/*---------------------------------------------------
	機能：現在日付(YYYY/MM/DD)を返す
---------------------------------------------------*/
function JS_getNowDate() {
	myDate = new Date();
	var nYY;
	var nMM;
	var nDD;
	nYY =	myDate.getFullYear();
	nMM = myDate.getMonth()+1;
	nDD = myDate.getDate();
	return(nYY * 10000 + nMM * 100 + nDD);
}

/*---------------------------------------------------
	機能：現在日付(YYYY/MM/DD)を表示する
---------------------------------------------------*/
function JS_printNow() {
	myDate = new Date();
	document.write(	myDate.getFullYear() + "/" +
									(myDate.getMonth()+1)  + "/" +
									myDate.getDate() );
}

/*---------------------------------------------------
	機能：YYYYMMDDからYYYY/MM/DDのフォーマットで返す
---------------------------------------------------*/
function JS_formatDate(yyyymmdd) {
	//var nYY = Math.floor(yyyymmdd / 10000);
	//var nMM = Math.floor((yyyymmdd % 10000) / 100);
	//var nDD = Math.floor(yyyymmdd % 100);
	var nYY = JS_cutYY(yyyymmdd);
	var nMM = JS_cutMM(yyyymmdd);
	var nDD = JS_cutDD(yyyymmdd);
	return(	nYY + "/" + nMM  + "/" + nDD );
}

/*---------------------------------------------------
	機能：YYYYMMからYYYY/MMのフォーマットで返す
---------------------------------------------------*/
function JS_formatYYYYMM(yyyymm) {
	var nYY = JS_cutYY(yyyymm * 100);
	var nMM = JS_cutMM(yyyymm * 100);
	return(	nYY + "/" + nMM);
}

/*---------------------------------------------------
	機能：YYYYMMDDからYYYY年MM月DD日のフォーマットで返す
---------------------------------------------------*/
function JS_formatKanjiDate(yyyymmdd) {
	//var nYY = Math.floor(yyyymmdd / 10000);
	//var nMM = Math.floor((yyyymmdd % 10000) / 100);
	//var nDD = Math.floor(yyyymmdd % 100);
	var nYY = JS_cutYY(yyyymmdd);
	var nMM = JS_cutMM(yyyymmdd);
	var nDD = JS_cutDD(yyyymmdd);
	return(	nYY + "年" + nMM  + "月" + nDD + "日" );
}

/*---------------------------------------------------
	機能：指定日(YYYYMMDD)からＮ日前・後の日付を返す
---------------------------------------------------*/
function JS_getNnDay(nYmd, nCnt) {
	//var dYY = Math.floor(nYmd / 10000);
	//var dMM = Math.floor((nYmd % 10000) / 100);
	//var dDD = Math.floor(nYmd % 100);
	var dYY = JS_cutYY(nYmd);
	var dMM = JS_cutMM(nYmd);
	var dDD = JS_cutDD(nYmd);

  var nYY, nMM, nDD;
  var nWk, dEnd;

  dDD += nCnt;

  for (; dDD< 1; ){
      dMM -= 1;
      if (dMM < 1){
          dMM = 12;
          dYY -= 1;
      }

      if (dMM != 2){
          nWk  = Math.round(Math.abs(7.5 - dMM));
          dEnd = nWk % 2 + 30;
      } else {
          nYY = Math.floor(dYY);
          if (nYY % 4 == 0 && (nYY % 100 != 0 || nYY % 400 == 0))
              dEnd = 29;
          else
              dEnd = 28;
      }
      dDD += dEnd;
  }

  for ( ; ; ){
      if (dMM != 2){
          nWk = Math.round(Math.abs(7.5 - dMM));
          dEnd = nWk % 2 + 30;
      } else {
          nYY = Math.floor(dYY);
          if (nYY % 4 == 0 && (nYY % 100 != 0 || nYY % 400 == 0))
              dEnd = 29;
          else
              dEnd = 28;
      }
      if (dDD <= dEnd) break;

      dDD -= dEnd;
      dMM += 1;
      if (dMM > 12){
          dMM = 1;
          dYY += 1;
      }
  }

  nYY = Math.floor(dYY);
  nMM = Math.floor(dMM);
  nDD = Math.floor(dDD);

  return( (nYY * 10000) + (nMM * 100) + nDD );
}

/*---------------------------------------------------
	機能：指定日(YYYYMMDD)からＮ月前・後の日付を返す
---------------------------------------------------*/
function JS_getNnMonth(nYmd, nCnt) {
    var i, nMnthCnt, nPls, nWkDD;

    var nYY = JS_cutYY(nYmd);
    var nMM = JS_cutMM(nYmd);
    var nDD = JS_cutDD(nYmd);

    if (nCnt < 0) nPls = -1;
    else          nPls =  1;

    nMnthCnt = Math.round(Math.abs(nCnt));

/* '// 基準月にＮ月を加算する */
    for (i=0; i<nMnthCnt; i++ ) {
        nMM += nPls;
        if (nMM > 12) {
            nMM = 1;
            nYY += nPls;
        }
        if (nMM < 1) {
            nMM = 12;
            nYY += nPls;
        }
    }

/* '// 基準日の"nDD"がＮ月後の月末日を越えている場合は調整をする */
    nWkDD = JS_getEndDay( (nYY * 100) + nMM);

    if (nWkDD < nDD) nDD = nWkDD;

    return( nYY * 10000 + nMM * 100 + nDD );
}

/*---------------------------------------------------
	機能：月末日取得（日のみ）
---------------------------------------------------*/
function JS_getEndDay(nYyMm)
{
    var nYY = JS_cutYY(nYyMm * 100);
    var nMM = JS_cutMM(nYyMm * 100);
    var dMM = nMM;

    if (nMM == 2){
        if (nYY%4 == 0 && nYY%100 != 0 || nYY%400 == 0)
            nDD = 29;
        else
            nDD = 28;
    } else {
        nAbs = Math.round(Math.abs(7.5-dMM));
        nDD = (nAbs % 2) + 30;
    }

    return(nDD);
}

/*---------------------------------------------------
	機能：日付を年・月・日に分割する
---------------------------------------------------*/
function JS_cutYY(nYmd){ return( Math.floor(nYmd / 10000) ); }
function JS_cutMM(nYmd){ return( Math.floor((nYmd % 10000) / 100) ); }
function JS_cutDD(nYmd){ return( Math.floor(nYmd % 100) ); }
