// wstock.net 2005/04/05 2005/04/19
// Copyright WSTOCK.NET
// =============  定義港股美股下載用到的公用函數 ============================


//  滬深節假日定義
 var mSSHoliday=new Array();
 var mSSHoliStr=new Array();
 var i=-1;

 i++;mSSHoliday[i]=new Date(2012,0,2);mSSHoliStr[i]="元旦";
 i++;mSSHoliday[i]=new Date(2012,0,3);mSSHoliStr[i]="元旦";

 i++;mSSHoliday[i]=new Date(2012,0,23);mSSHoliStr[i]="春節長假，春節愉快";
 i++;mSSHoliday[i]=new Date(2012,0,24);mSSHoliStr[i]="春節長假，春節愉快";
 i++;mSSHoliday[i]=new Date(2012,0,25);mSSHoliStr[i]="春節長假，春節愉快";
 i++;mSSHoliday[i]=new Date(2012,0,26);mSSHoliStr[i]="春節長假，春節愉快";
 i++;mSSHoliday[i]=new Date(2012,0,27);mSSHoliStr[i]="春節長假，春節愉快";

 i++;mSSHoliday[i]=new Date(2012,3,2);mSSHoliStr[i]="清明節";
 i++;mSSHoliday[i]=new Date(2012,3,3);mSSHoliStr[i]="清明節";
 i++;mSSHoliday[i]=new Date(2012,3,4);mSSHoliStr[i]="清明節";

 i++;mSSHoliday[i]=new Date(2012,3,30);mSSHoliStr[i]="五一節換休";
 i++;mSSHoliday[i]=new Date(2012,4,1);mSSHoliStr[i]="五一節";

 i++;mSSHoliday[i]=new Date(2012,5,24);mSSHoliStr[i]="端午節";

 i++;mSSHoliday[i]=new Date(2012,9,1);mSSHoliStr[i]="國慶節長假";
 i++;mSSHoliday[i]=new Date(2012,9,2);mSSHoliStr[i]="國慶節長假";
 i++;mSSHoliday[i]=new Date(2012,9,3);mSSHoliStr[i]="國慶節長假";
 i++;mSSHoliday[i]=new Date(2012,9,4);mSSHoliStr[i]="國慶節長假";
 i++;mSSHoliday[i]=new Date(2012,9,5);mSSHoliStr[i]="國慶節長假";


//  港股節假日定義
 var mHKHoliday=new Array();
 var mHKHoliStr=new Array();
 var i=-1;

 i++;mHKHoliday[i]=new Date(2011,11,26);mHKHoliStr[i]="聖誕節補假";
 i++;mHKHoliday[i]=new Date(2011,11,27);mHKHoliStr[i]="聖誕節補假";

 i++;mHKHoliday[i]=new Date(2012,0,2);mHKHoliStr[i]="元旦";

 i++;mHKHoliday[i]=new Date(2012,0,23);mHKHoliStr[i]="農曆年初一";
 i++;mHKHoliday[i]=new Date(2012,0,24);mHKHoliStr[i]="農曆年初二";
 i++;mHKHoliday[i]=new Date(2012,0,25);mHKHoliStr[i]="農曆年初三";

 i++;mHKHoliday[i]=new Date(2012,3,4);mHKHoliStr[i]="清明節";

 i++;mHKHoliday[i]=new Date(2012,3,6);mHKHoliStr[i]="耶穌受難日";
 i++;mHKHoliday[i]=new Date(2012,3,9);mHKHoliStr[i]="複活節星期一";

 i++;mHKHoliday[i]=new Date(2012,4,1);mHKHoliStr[i]="五一勞動節";
 i++;mHKHoliday[i]=new Date(2012,6,2);mHKHoliStr[i]="香港特區成立紀念日";
 i++;mHKHoliday[i]=new Date(2012,9,1);mHKHoliStr[i]="中秋節翌日";
 i++;mHKHoliday[i]=new Date(2012,9,2);mHKHoliStr[i]="國慶節";
 i++;mHKHoliday[i]=new Date(2012,9,23);mHKHoliStr[i]="重陽節";

 i++;mHKHoliday[i]=new Date(2012,11,25);mHKHoliStr[i]="聖誕節";
 i++;mHKHoliday[i]=new Date(2012,11,26);mHKHoliStr[i]="聖誕節補假";


//  台灣節假日定義
 var mTWHoliday=new Array();
 var mTWHoliStr=new Array();
 var i=-1;


 i++;mTWHoliday[i]=new Date(2012,0,19);mTWHoliStr[i]="春節長假";
 i++;mTWHoliday[i]=new Date(2012,0,20);mTWHoliStr[i]="春節長假";
 i++;mTWHoliday[i]=new Date(2012,0,23);mTWHoliStr[i]="春節長假";
 i++;mTWHoliday[i]=new Date(2012,0,24);mTWHoliStr[i]="春節長假";
 i++;mTWHoliday[i]=new Date(2012,0,25);mTWHoliStr[i]="春節長假";
 i++;mTWHoliday[i]=new Date(2012,0,26);mTWHoliStr[i]="春節長假";
 i++;mTWHoliday[i]=new Date(2012,0,27);mTWHoliStr[i]="春節長假";

 i++;mTWHoliday[i]=new Date(2012,1,27);mTWHoliStr[i]="休市";
 i++;mTWHoliday[i]=new Date(2012,1,28);mTWHoliStr[i]="休市";
 i++;mTWHoliday[i]=new Date(2012,3,4);mTWHoliStr[i]="兒童節";

 i++;mTWHoliday[i]=new Date(2012,4,1);mTWHoliStr[i]="五一勞動節";

 i++;mTWHoliday[i]=new Date(2012,9,10);mTWHoliStr[i]="1010休市";
 i++;mTWHoliday[i]=new Date(2012,11,31);mTWHoliStr[i]="迎元旦，休市";



//  新加坡節假日定義
 var mSGHoliday=new Array();
 var mSGHoliStr=new Array();
 var i=-1;

 i++;mSGHoliday[i]=new Date(2011,11,26);mSGHoliStr[i]="聖誕節補假";

 i++;mSGHoliday[i]=new Date(2012,0,2);mSGHoliStr[i]="元旦";
 i++;mSGHoliday[i]=new Date(2012,0,23);mSGHoliStr[i]="春節";
 i++;mSGHoliday[i]=new Date(2012,0,24);mSGHoliStr[i]="春節";
 i++;mSGHoliday[i]=new Date(2012,3,6);mSGHoliStr[i]="耶穌受難日";
 i++;mSGHoliday[i]=new Date(2012,4,1);mSGHoliStr[i]="五一勞動節";
 i++;mSGHoliday[i]=new Date(2012,4,5);mSGHoliStr[i]="衛塞節";
 i++;mSGHoliday[i]=new Date(2012,7,9);mSGHoliStr[i]="新加坡國慶日";
 i++;mSGHoliday[i]=new Date(2012,7,20);mSGHoliStr[i]="開齋節翌日";
 i++;mSGHoliday[i]=new Date(2012,9,26);mSGHoliStr[i]="哈芝節";
 i++;mSGHoliday[i]=new Date(2012,10,13);mSGHoliStr[i]="屠妖節";
 i++;mSGHoliday[i]=new Date(2012,11,25);mSGHoliStr[i]="聖誕節";


// 美股節假日定義
 var mUSHoliday=new Array();
 var mUSHoliStr=new Array();
 var i=-1;

 i++;mUSHoliday[i]=new Date(2011,10,24);mUSHoliStr[i]="感恩節";
 i++;mUSHoliday[i]=new Date(2011,11,26);mUSHoliStr[i]="聖誕節補假";

 i++;mUSHoliday[i]=new Date(2012,0,2);mUSHoliStr[i]="元旦";
 i++;mUSHoliday[i]=new Date(2012,0,16);mUSHoliStr[i]="馬丁.路德.金紀念日";
 i++;mUSHoliday[i]=new Date(2012,1,20);mUSHoliStr[i]="華盛頓紀念日";
 i++;mUSHoliday[i]=new Date(2012,3,6);mUSHoliStr[i]="耶穌受難日";
 i++;mUSHoliday[i]=new Date(2012,4,28);mUSHoliStr[i]="美國陣亡戰士紀念日";
 i++;mUSHoliday[i]=new Date(2012,7-1,4);mUSHoliStr[i]="美國獨立日";
 i++;mUSHoliday[i]=new Date(2012,8,3);mUSHoliStr[i]="美國勞工日";
 i++;mUSHoliday[i]=new Date(2012,10,22);mUSHoliStr[i]="感恩節";
 i++;mUSHoliday[i]=new Date(2012,11,25);mUSHoliStr[i]="聖誕節";



// 加拿大TSX節假日定義
 var mTSXHoliday=new Array();
 var mTSXHoliStr=new Array();
 var i=-1;

 i++;mTSXHoliday[i]=new Date(2011,11,26);mTSXHoliStr[i]="聖誕節";
 i++;mTSXHoliday[i]=new Date(2011,11,27);mTSXHoliStr[i]="節禮日（贈禮節,BOXING DAY）";

 i++;mTSXHoliday[i]=new Date(2012,0,2);mTSXHoliStr[i]="元旦";
 i++;mTSXHoliday[i]=new Date(2012,1,20);mTSXHoliStr[i]="加拿大家庭日";
 i++;mTSXHoliday[i]=new Date(2012,3,6);mTSXHoliStr[i]="耶穌受難日";
 i++;mTSXHoliday[i]=new Date(2012,4,21);mTSXHoliStr[i]="加拿大 維多利亞日";
 i++;mTSXHoliday[i]=new Date(2012,6,2);mTSXHoliStr[i]="加拿大日";
 i++;mTSXHoliday[i]=new Date(2012,7,6);mTSXHoliStr[i]="加拿大 市政日";
 i++;mTSXHoliday[i]=new Date(2012,8,3);mTSXHoliStr[i]="勞動節";
 i++;mTSXHoliday[i]=new Date(2012,9,8);mTSXHoliStr[i]="感恩節";
 i++;mTSXHoliday[i]=new Date(2012,11,25);mTSXHoliStr[i]="聖誕節";
 i++;mTSXHoliday[i]=new Date(2012,11,26);mTSXHoliStr[i]="節禮日（贈禮節,BOXING DAY）";



// 倫敦LD節假日定義
 var mLDHoliday=new Array();
 var mLDHoliStr=new Array();
 var i=-1;

 i++;mLDHoliday[i]=new Date(2011,11,26);mLDHoliStr[i]="聖誕節";
 i++;mLDHoliday[i]=new Date(2011,11,27);mLDHoliStr[i]="贈禮節";

 i++;mLDHoliday[i]=new Date(2012,0,2);mLDHoliStr[i]="元旦";
 i++;mLDHoliday[i]=new Date(2012,3,6);mLDHoliStr[i]="複活節前星期五";
 i++;mLDHoliday[i]=new Date(2012,3,9);mLDHoliStr[i]="複活節";
 i++;mLDHoliday[i]=new Date(2012,4,7);mLDHoliStr[i]="5月第一周的周一 五月銀行假日(Early Monday)";
 i++;mLDHoliday[i]=new Date(2012,5,4);mLDHoliStr[i]="5月最終周的周一 春季銀行假日 (Spring Bank Holiday)";
 i++;mLDHoliday[i]=new Date(2012,5,5);mLDHoliStr[i]="女王登基60周年";
 i++;mLDHoliday[i]=new Date(2012,7,27);mLDHoliStr[i]="8月最終周的周一 夏季銀行假日 (Summer Bank Holiday)";
 i++;mLDHoliday[i]=new Date(2012,11,24);mLDHoliStr[i]="聖誕節";
 i++;mLDHoliday[i]=new Date(2012,11,25);mLDHoliStr[i]="聖誕節";
 i++;mLDHoliday[i]=new Date(2012,11,26);mLDHoliStr[i]="贈禮節";


// 澳大利亞ASX節假日定義
 var mASXHoliday=new Array();
 var mASXHoliStr=new Array();
 var i=-1;

 i++;mASXHoliday[i]=new Date(2011,11,26);mASXHoliStr[i]="聖誕節";
 i++;mASXHoliday[i]=new Date(2011,11,27);mASXHoliStr[i]="聖誕節補假";

 i++;mASXHoliday[i]=new Date(2012,0,2);mASXHoliStr[i]="元旦";
 i++;mASXHoliday[i]=new Date(2012,0,26);mASXHoliStr[i]="澳大利亞日";
 i++;mASXHoliday[i]=new Date(2012,3,6);mASXHoliStr[i]="複活節前周五（Good Friday）";
 i++;mASXHoliday[i]=new Date(2012,3,9);mASXHoliStr[i]="複活節";
 i++;mASXHoliday[i]=new Date(2012,3,25);mASXHoliStr[i]="澳新 軍團日假期 （ANZAC Day Holiday ）";
 i++;mASXHoliday[i]=new Date(2012,5,11);mASXHoliStr[i]="女王生日（Queen's Birthday ）";
 i++;mASXHoliday[i]=new Date(2012,11,25);mASXHoliStr[i]="聖誕節";
 i++;mASXHoliday[i]=new Date(2012,11,26);mASXHoliStr[i]="聖誕節補假";



// 判斷港股節假日
// wstock.net 2005/04/05
// 是假日，返回數組中的索引值；不是假日，返回-1
function funIsHKHoliday(vDate) {
	var i;

	for (i=0;i<mHKHoliday.length;i++) {
		if (vDate.getTime() == mHKHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mHKHoliday[i].getTime() ) {return i}
	}

	return -1;
}

// 判斷台灣節假日
// wstock.net 2005/04/05
// 是假日，返回數組中的索引值；不是假日，返回-1
function funIsTWHoliday(vDate) {
	var i;

	for (i=0;i<mTWHoliday.length;i++) {
		if (vDate.getTime() == mTWHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mTWHoliday[i].getTime() ) {return i}
	}

	return -1;
}


// 判斷新加坡節假日
// wstock.net 2005/04/05
// 是假日，返回數組中的索引值；不是假日，返回-1
function funIsSGHoliday(vDate) {
	var i;

	for (i=0;i<mSGHoliday.length;i++) {
		if (vDate.getTime() == mSGHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mSGHoliday[i].getTime() ) {return i}
	}

	return -1;
}

// 判斷澳大利亞節假日
// wstock.net 2010/05/13
// 是假日，返回數組中的索引值；不是假日，返回-1
function funIsASXHoliday(vDate) {
	var i;

	for (i=0;i<mASXHoliday.length;i++) {
		if (vDate.getTime() == mASXHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mASXHoliday[i].getTime() ) {return i}
	}

	return -1;
}


// 判斷美股節假日
// wstock.net 2005/04/05
// 是假日，返回數組中的索引值；不是假日，返回-1
function funIsUSHoliday(vDate) {
	var i;

	for (i=0;i<mUSHoliday.length;i++) {
		// 7200000 是為了避免夏令時影響加上去的
		if ( vDate.getTime() == mUSHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mUSHoliday[i].getTime() ) {return i}
	}

	return -1;
}



// 判斷加拿大TSX節假日
// wstock.net 2005/04/05 2008/07/12
// 是假日，返回數組中的索引值；不是假日，返回-1
function funIsTSXHoliday(vDate) {
	var i;

	for (i=0;i<mTSXHoliday.length;i++) {
		// 7200000 是為了避免夏令時影響加上去的
		if ( vDate.getTime() == mTSXHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mTSXHoliday[i].getTime() ) {return i}
	}

	return -1;
}

// 判斷倫敦LD節假日
// wstock.net 2005/04/05 2008/07/12  2010/05/02
// 是假日，返回數組中的索引值；不是假日，返回-1
function funIsLDHoliday(vDate) {
	var i;

	for (i=0;i<mLDHoliday.length;i++) {
		// 7200000 是為了避免夏令時影響加上去的
		if ( vDate.getTime() == mLDHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mLDHoliday[i].getTime() ) {return i}
	}

	return -1;
}



// 判斷滬深節假日
// wstock.net 2005/04/05
// 是假日，返回數組中的索引值；不是假日，返回-1
function funIsSSHoliday(vDate) {
	var i;

	for (i=0;i<mSSHoliday.length;i++) {
		if (vDate.getTime() == mSSHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mSSHoliday[i].getTime() ) {return i}
	}

	return -1;
}

function funMarquee(){
	var tDesc;
	var tMarket;
	var i; 
	var j;

	tDesc = "";
	if ( M_MARQUEE_MARKET == "SSHK" ) {
		i = funIsSSHoliday(M_SHSZ_DATE);		j = funIsHKHoliday(M_HK_DATE);
		if ( i != -1 && j !=-1 ) { tMarket = "亞洲指數"; tDesc = tDesc + "<BR>滬深港股停牌，" + mSSHoliStr[i];
		} else {
			if ( i != -1 ) { tMarket = "港股市場"; tDesc = tDesc + "<BR>滬深市場休市，" + mSSHoliStr[i];}
			if ( j != -1 ) { tMarket = "滬深市場"; tDesc = tDesc + "<BR>港股市場休市，" + mHKHoliStr[j];}
			if ( i == -1 && j == -1) { tMarket = "滬深港股"; }
		}
	} else {
		i = funIsUSHoliday(M_US_DATE); 
		if ( i != -1 ) { tMarket = "美股指數"; tDesc = tDesc + "<BR>美股市場休市，" + mUSHoliStr[i];
		} else { tMarket = "美股市場"; }
	}

	document.write("<B>" + tMarket + "數據已上傳<BR>");
	document.write("上傳時間：" + M_MARQUEE_DATE + tDesc + "</B>");
	return;
}

// 返回日期加減天後的日期
// vDate：日期對象；vDay：為數字，如1天，-1天等
// 返回值：日期形式的串
// wstock.net 2005/04/04
function funGetDatePlusDay(vDate,vDay) {
	var tStep=86400000;
	var tD;

//	tStep=tStep*vDay;
//	tStep=vDate.getTime()+tStep;
//	tD = vDate;
//	tD.setTime(tStep);	// setTime 與 時區有關

	tStep = tStep*vDay + vDate.valueOf();	// vDate.valueOf()也與時區有關，但日期加減 其實與時區無關，因為始終是本地時間
						// 問題的根本是美國夏令時導致的，2008年美國夏令時開始於3月9日，導致3月9日零點變成了3月8日23:00

	tStep = tStep + 7200000;		// 加上兩個小時，避免夏令時的影響
	tD = new Date(tStep);

	return tD;
}


// 得到雙月雙日的表現形式，如1月5日表示為"0105"
// wstock.net 2005/04/05
function funGetMonthDay2(vDate) {
	var tStr=new String();
	var i;

	i=vDate.getMonth()+1;
	if (i<10) {tStr = "0" + i} else {tStr=i}
	i=vDate.getDate();
	if (i<10) {tStr += "0" + i} else {tStr = "" + tStr + i + ""}
	return tStr;
}

// 得到雙日的表現形式，如5日表示為"05"
// wstock.net 2005/04/05
function funGetDay2(vDate) {
	var tStr=new String();
	var i;

	i=vDate.getDate();
	if (i<10) {tStr = "0" + i} else {tStr = i}
	return tStr;
}

// 得到上月雙月的表現形式，如5月表示為"05"
// wstock.net 2005/04/05
function funGetLastMonth2(vDate) {
	var tStr=new String();
	var i;

	i=vDate.getMonth();
	if (i==0) i=12;
	if (i<10) {tStr = "0" + i} else {tStr = i}
	return tStr;
}

