var addYear = 2;

/*****************************************************************
 * 初期設定
 *
*****************************************************************/
function initYmd(selY,selM,selD)
{
  // 本日日付取得
  var today = new Date();
  var ty = today.getFullYear();
  var tm = today.getMonth() + 1;
  var td = today.getDate();

  // 2年後日付取得
  today.setYear(today.getFullYear()+2);
  var ay = today.getFullYear();
  var am = today.getMonth() + 1;
  var ad = today.getDate();

  var fromYmd = dateToNum(ty,tm,td);
  var toYmd = dateToNum(ay,am,ad);

  // 年設定
  setSelY(getY(fromYmd), getY(toYmd), selY);

  // 月設定
  setSelM(getRangeFromM(fromYmd,selY), getRangeToM(toYmd,selY), selM);

  // 日設定
  setSelD(getRangeFromD(fromYmd,selY,selM), getRangeToD(toYmd,selY,selM), selD);
  
}

/*****************************************************************
 * 年月日の変更
 *
*****************************************************************/
function chgYmd()
{
  // 本日日付取得
  var today = new Date();
  var ty = today.getFullYear();
  var tm = today.getMonth() + 1;
  var td = today.getDate();

  // 2年後日付取得
  today.setYear(today.getFullYear()+2);
  var ay = today.getFullYear();
  var am = today.getMonth() + 1;
  var ad = today.getDate();

  var fromYmd = dateToNum(ty,tm,td);
  var toYmd = dateToNum(ay,am,ad);

  selY = getSelY();	// 年取得
  selM = getSelM();	// 月取得
  selD = getSelD();	// 日取得

  // 年設定
  setSelY(getY(fromYmd), getY(toYmd), selY);

  // 月設定
  setSelM(getRangeFromM(fromYmd,selY), getRangeToM(toYmd,selY), selM);

  // 日設定
  setSelD(getRangeFromD(fromYmd,selY,selM), getRangeToD(toYmd,selY,selM), selD);

  return(true);
}

/*****************************************************************
 * 年月日の変更
 *
*****************************************************************/
function chgYmd2(selY,selM,selD)
{
  // 本日日付取得
  var today = new Date();
  var ty = today.getFullYear();
  var tm = today.getMonth() + 1;
  var td = today.getDate();

  // 2年後日付取得
  today.setYear(today.getFullYear()+2);
  var ay = today.getFullYear();
  var am = today.getMonth() + 1;
  var ad = today.getDate();

  var fromYmd = dateToNum(ty,tm,td);
  var toYmd = dateToNum(ay,am,ad);

  // 年設定
  setSelY(getY(fromYmd), getY(toYmd), selY);

  // 月設定
  setSelM(getRangeFromM(fromYmd,selY), getRangeToM(toYmd,selY), selM);

  // 日設定
  setSelD(getRangeFromD(fromYmd,selY,selM), getRangeToD(toYmd,selY,selM), selD);

  return(true);
}


/*==========================================================================*/
/*====================== 共通関数群  =======================================*/
/*==========================================================================*/

/*****************************************************************
 * 日付加算
 *
 * @param ymd 年月日(8桁)
 * @return 加算した年月日(8桁)
*****************************************************************/
function addDate( ymd, add )
{
  var dd = new Date( getY(ymd), getM(ymd)-1, getD(ymd) );
  dd.setTime(dd.getTime() + add * (24 * 3600 * 1000));
  var ymdN = dateToNum( dd.getFullYear(), dd.getMonth()+1, dd.getDate() );
  return(ymdN);
}

/*****************************************************************
 * 年取得
 *
 * @param ymd 年月日(8桁)
 * @return 年
*****************************************************************/
function getY( ymd )
{
  var ymdStr = String(ymd);
  var yStr = ymdStr.substring(0,4);
  return(Number(yStr));
}

/*****************************************************************
 * 月取得
 *
 * @param ymd 年月日(8桁)
 * @return 月
*****************************************************************/
function getM( ymd )
{
  var ymdStr = String(ymd);
  var mStr = ymdStr.substring(4,6);
  return(Number(mStr));
}

/*****************************************************************
 * 日取得
 *
 * @param ymd 年月日(8桁)
 * @return 日
*****************************************************************/
function getD( ymd )
{
  var ymdStr = String(ymd);
  var dStr = ymdStr.substring(6,8);
  return(Number(dStr));
}

/*****************************************************************
 * 日付データを数値変換
 *
 * 説明：日付を8桁の数値にします。0埋めもするので絶対に8桁になります
 *       よって日付の比較時に一旦数値にする事により単純比較が可能に
 *       なります。
 *
 * @param y 年
 * @param m 月
 * @param d 日
 * @return 8桁の数値
*****************************************************************/
function dateToNum( y, m, d )
{
  var yStr = String(y);
  var mStr = String(m);
  var dStr = String(d);
  if( mStr.length == 1 ){
    mStr = "0" + mStr;
  }
  if( dStr.length == 1 ){
    dStr = "0" + dStr;
  }
  return Number(yStr + mStr + dStr);
}

/*****************************************************************
 * 閏年の判定
 *
 * @param y 年
 * @return turu:閏年 / false:閏年以外
*****************************************************************/
function isLeapYear( y )
{
  if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)){ // 閏年
    return(true);
  } else {  // 閏年以外
    return(false);
  }
}

/*****************************************************************
 * 月末日取得(閏年も対応)
 *
 * @param y 年
 * @param m 月
 * @return 月末日
*****************************************************************/
function getLastDay( y, m )
{
  if( m == 4 || m == 6 || m == 9 || m == 11 ){
    return(30);
  } else if( m == 2 ){
    if( isLeapYear( y ) ){
      return(29);
    } else {
      return(28);
    }
  } else {
    return(31);
  }
}

/*****************************************************************
 * 年アイテム設定
 *
 * @param from 開始アイテム
 * @param to 終了アイテム
 * @param sel 選択アイテム
*****************************************************************/
function setSelY( from, to, sel )
{
  var selNo = 0;
  document.SerchPlanActionForm.dpy.options.length = 0;
  for( i=from,j=0; i<=to; i++,j++ ){
    if( sel == i ) selNo = j;
    document.SerchPlanActionForm.dpy.options[j] = new Option(i);
  }

  if ( window.opera ) {// Operaなら
    document.SerchPlanActionForm.dpy.options[selNo].defaultSelected = true;
  } else {// Opera以外なら
    document.SerchPlanActionForm.dpy.selectedIndex = selNo;
  }
}

/*****************************************************************
 * 月アイテム設定
 *
 * @param from 開始アイテム
 * @param to 終了アイテム
 * @param sel 選択アイテム
*****************************************************************/
function setSelM( from, to, sel )
{
  var selNo = 0;
  document.SerchPlanActionForm.dpm.options.length = 0;
  for( i=from,j=0; i<=to; i++,j++ ){
    if( sel == i ) selNo = j;
    document.SerchPlanActionForm.dpm.options[j] = new Option(i);
  }
  if ( window.opera ) {// Operaなら
    document.SerchPlanActionForm.dpm.options[selNo].defaultSelected = true;
  } else {// Opera以外なら
    document.SerchPlanActionForm.dpm.selectedIndex = selNo;
  }
}

/*****************************************************************
 * 日アイテム設定
 *
 * @param from 開始アイテム
 * @param to 終了アイテム
 * @param sel 選択アイテム
*****************************************************************/
function setSelD( from, to, sel )
{
  var selNo = 0;
  document.SerchPlanActionForm.dpd.options.length = 0;
  for( i=from,j=0; i<=to; i++,j++ ){
    if( sel == i ) selNo = j;
    document.SerchPlanActionForm.dpd.options[j] = new Option(i);
  }
  if ( window.opera ) {// Operaなら
    document.SerchPlanActionForm.dpd.options[selNo].defaultSelected = true;
  } else {// Opera以外なら
    document.SerchPlanActionForm.dpd.selectedIndex = selNo;
  }
}

/*****************************************************************
 * 年取得
 *
 * @return 掲載開始年
*****************************************************************/
function getSelY()
{
  return(document.SerchPlanActionForm.dpy.options[document.SerchPlanActionForm.dpy.selectedIndex].text);
}

/*****************************************************************
 * 月取得
 *
 * @return 掲載開始月
*****************************************************************/
function getSelM()
{
  return(document.SerchPlanActionForm.dpm.options[document.SerchPlanActionForm.dpm.selectedIndex].text);
}

/*****************************************************************
 * 日取得
 *
 * @return 掲載開始日
*****************************************************************/
function getSelD()
{
  return(document.SerchPlanActionForm.dpd.options[document.SerchPlanActionForm.dpd.selectedIndex].text);
}

/*****************************************************************
 * 範囲の開始月を取得する
*****************************************************************/
function getRangeFromM(ymd,y)
{
  var rY = getY(ymd);
  if( rY == y ){
    return(getM(ymd));
  } else {
    return(1);
  }
}
/*****************************************************************
 * 範囲の終了月を取得する
*****************************************************************/
function getRangeToM(ymd,y)
{
  var rY = getY(ymd);
  if( rY == y ){
    return(getM(ymd));
  } else {
    return(12);
  }
}
/*****************************************************************
 * 範囲の開始日を取得する
*****************************************************************/
function getRangeFromD(ymd,y,m)
{
  var rY = getY(ymd);
  var rM = getM(ymd);
  if( rY == y && rM == m ){
    return(getD(ymd));
  } else {
    return(1);
  }
}
/*****************************************************************
 * 範囲の終了日を取得する
*****************************************************************/
function getRangeToD(ymd,y,m)
{
  var rY = getY(ymd);
  var rM = getM(ymd);
  if( rY == y && rM == m ){
    return(getD(ymd));
  } else {
    return(getLastDay( y, m ));
  }
}


