/*------------------------------------------------------------
 タカムラ WineHouse 出荷日表示 Script // 2009-08-21 by H.Fuka
------------------------------------------------------------*/

/* 日単位の加減算 */
function calcDate(year, month, day, addDays) {
    var dt = new Date(year, month - 1, day);
    var baseSec = dt.getTime();
    var addSec = addDays * 86400000;//日数 * 1日のミリ秒数
    var targetSec = baseSec + addSec;
    dt.setTime(targetSec);
    return dt;
}

/* 出荷日の取得 */
function getSyukkabi() {

	/* 通常は次のルールで出荷日を計算する */
	// 9:00:59 以前
	// 		日 → ＋１日（月）
	// 		月 → ＋１日（火）
	// 		火 → ＋１日（水）
	// 		水 → ＋１日（木）
	// 		木 → ＋１日（金）
	// 		金 → ＋０日（金）
	// 		土 → ＋２日（月）
	// 9:01:00 以降
	// 		日 → ＋２日（火）
	// 		月 → ＋２日（水）
	// 		火 → ＋２日（木）
	// 		水 → ＋２日（金）
	// 		木 → ＋１日（金）
	// 		金 → ＋３日（月）
	// 		土 → ＋２日（月）

	/* 上のルールを変換したのがこれ */
	var limitSec = (09 * (60 * 60)) + (00 * 60) + 59; //時刻判定用 09:00:59
	var DayByWeek   = new Array('日', '月', '火', '水', '木', '金', '土');
	var addDayEarly = new Array(1, 1, 1, 1, 1, 0, 2); //判定時刻前の曜日別加算日数
	var addDayLate  = new Array(2, 2, 2, 2, 1, 3, 2); //判定時刻移行の曜日別加算日数

	var stDate = new Array();
	var enDate = new Array();
	var toDate = new Array();

	/* 長期休暇用指定 ここから ※最低限ダミーで１つ作っておく事（念のため）※ */
	stDate[0] = '2000/01/01 00:00:00';
	enDate[0] = '2000/01/01 00:00:01';
	toDate[0] = '2000/01/01';

	//11月分
	//※11/24　ＡＭ9：01　〜　11/25　ＡＭ9：00　の注文分　　⇒　11/26出荷（土曜日出荷）
	stDate[1] = '2011/11/24 09:00:01';
	enDate[1] = '2011/11/25 09:00:00';
	toDate[1] = '2011/11/26';

	//12月分
	//※12/01　ＡＭ9：01　〜　12/02　ＡＭ9：00　の注文分　　⇒　12/03出荷（土曜日出荷）
	stDate[2] = '2011/12/01 09:00:01';
	enDate[2] = '2011/12/02 09:00:00';
	toDate[2] = '2011/12/03';

	//※12/08　ＡＭ9：01　〜　12/09　ＡＭ9：00　の注文分　　⇒　12/10出荷（土曜日出荷）
	stDate[3] = '2011/12/08 09:00:01';
	enDate[3] = '2011/12/09 09:00:00';
	toDate[3] = '2011/12/10';

	//※12/15　ＡＭ9：01　〜　12/16　ＡＭ9：00　の注文分　　⇒　12/17出荷（土曜日出荷）
	stDate[4] = '2011/12/15 09:00:01';
	enDate[4] = '2011/12/16 09:00:00';
	toDate[4] = '2011/12/17';

	//※12/22　ＡＭ9：01　〜　12/23　ＡＭ9：00　の注文分　　⇒　12/24出荷（土曜日出荷）
	stDate[5] = '2011/12/22 09:00:01';
	enDate[5] = '2011/12/23 09:00:00';
	toDate[5] = '2011/12/24';

	//※12/29　ＡＭ9：01　〜　《2012年》1/4　ＡＭ9：00　の注文分　　⇒　《2012年》1/5出荷
	stDate[6] = '2011/12/29 09:00:01';
	enDate[6] = '2012/01/04 09:00:00';
	toDate[6] = '2012/01/05';
	//

	//1月分
	//※1/05　ＡＭ9：01　〜　1/06　ＡＭ9：00　の注文分　　⇒　1/07出荷（土曜日出荷）
	stDate[7] = '2012/01/05 09:00:01';
	enDate[7] = '2012/01/06 09:00:00';
	toDate[7] = '2012/01/07';

	//※1/06　ＡＭ9：01　〜　1/09　ＡＭ9：00　の注文分　　⇒　1/10出荷
	stDate[8] = '2012/01/06 09:00:01';
	enDate[8] = '2012/01/09 09:00:00';
	toDate[8] = '2012/01/10';

	//※1/12　ＡＭ9：01　〜　1/13　ＡＭ9：00　の注文分　　⇒　1/14出荷（土曜日出荷）
	stDate[9] = '2012/01/12 09:00:01';
	enDate[9] = '2012/01/13 09:00:00';
	toDate[9] = '2012/01/14';

	//※1/19　ＡＭ9：01　〜　1/20　ＡＭ9：00　の注文分　　⇒　1/21出荷（土曜日出荷）
	stDate[10] = '2012/01/19 09:00:01';
	enDate[10] = '2012/01/20 09:00:00';
	toDate[10] = '2012/01/21';

	//※1/26　ＡＭ9：01　〜　1/27　ＡＭ9：00　の注文分　　⇒　1/28出荷（土曜日出荷）
	stDate[11] = '2012/01/26 09:00:01';
	enDate[11] = '2012/01/27 09:00:00';
	toDate[11] = '2012/01/28';
	//


	/* 長期休暇用指定 ここまで */

	/* ---------- Main Logic ---------- */

	//現在の日時を求める
	var nowDate = new Date();
	//テスト用設定（指定した日時でテストする為）
	//nowDate.setTime(Date.parse('2007/08/17 09:00:59'));
	var syukkaDate = new Date();

	/* 長期休暇判定 */
	var sDate = new Date();
	var eDate = new Date();
	var flgSet = '';
	for( var i = 0; i <= (stDate.length -1); i++){
		sDate.setTime(Date.parse(stDate[i]));
		eDate.setTime(Date.parse(enDate[i]));
		if ((nowDate.getTime() >= sDate.getTime()) && (nowDate.getTime() <= eDate.getTime())) {
			flgSet = 'Hit';
			syukkaDate.setTime(Date.parse(toDate[i]));
			i = stDate.length; //強制Exit from For
		}
	} //End For

	if (flgSet != 'Hit') {
		//長期休暇にHitしなかったら、通常ルールで出荷日を計算
		var addDays;
		var nowSec = (nowDate.getHours() * (60 * 60)) + (nowDate.getMinutes() * 60) + nowDate.getSeconds()
		if (nowSec > limitSec) {
    		//判定時刻以降
			addDays = addDayLate[nowDate.getDay()];
		} else {
    		//判定時刻前
			addDays = addDayEarly[nowDate.getDay()];
		}
		syukkaDate = calcDate(nowDate.getFullYear(), nowDate.getMonth() + 1, nowDate.getDate(), addDays);
	}

	return syukkaDate.getFullYear() + '年 ' + (syukkaDate.getMonth() + 1) + '月 ' + syukkaDate.getDate() + '日(' + DayByWeek[syukkaDate.getDay()] + ')';

} // End Function

