/********************************************************************************
　※日付、イメージファイル、コメント表示用JSファイル（日にちでローテーション）
　１、データファイル形式（月ごとにファイルを分ける）：
　　　ファイル名：1.txt,2.txt....12.txt
　　　改行コード：LF
　　　区切り文字：<>
　　　値：dd<>イメージファイル名<>代替文字（alt）<>幅（width）<>高さ（height）<>コメント<>吹き出し
　　　　例：13<>1.gif<>これはテストです。<>吹き出しコメント
　２、呼び方：
　　　<script type="text/javascript" src="headerview.js"></script>
********************************************************************************/

/************** 初期定義 *************/
var csvFiledir = "http://www.justblog.jp/home/common/headerdate/csv/"; // csvファイルの格納フォルダ
var imgFilePath = "http://www.justblog.jp/home/common/headerdate/img/"; // imgファイルの格納フォルダ
var targetDivTag = "Jheaderview";

////////////////////////////////////////////////////////////////////////////////////
/* 指定休日（ファイル名<>月,何週,曜日） */
var HolydayArr = new Array(
	"seijin<>1,2,1",    //成人の日　1月　第2月曜日
	"haha<>5,2,7",  //母の日　5月　第2日曜日
	"chichi<>6,3,7",  //父の日　6月　第3日曜日
	"umi<>7,3,1",  //海の日　7月　第3月曜日
	"keiro<>9,3,1",  //敬老の日　9月　第3月曜日
	"mago<>10,3,7"  //孫の日　10月　第3日曜日
);

/* 日付関連 */
var DayOfTheWeek = new Array(7,1,2,3,4,5,6);
var jpWday = new Array("日","月","火","水","木","金","土");
var returnDate = new Date();
var year = returnDate.getYear();
if (year < 2000) year += 1900;
var month = returnDate.getMonth() + 1;
var date = returnDate.getDate();
var day = returnDate.getDay();
var wday = jpWday[day];
var viewMonth = month;
var viewDate = date;
if (month < 10) { month = "0" + month; }
if (date < 10) { date = "0" + date; }

/* 指定休日 */
returnDate.setDate(1);
var startDayOfTheWeek = returnDate.getDay();
var toDayOfTheWeek = parseInt((viewDate -1)/ 7);
if ( startDayOfTheWeek != 1 ) { toDayOfTheWeek++; }
if ( DayOfTheWeek[startDayOfTheWeek] > DayOfTheWeek[day] ) { toDayOfTheWeek++; }
var Holyday = viewMonth + "," + toDayOfTheWeek + "," + day; // 月,何週,曜日

var HFlag =  0;
var Hfile = '';
var HolydayArrItem;
for (var line = 0; line < HolydayArr.length; line ++) {
	HolydayArrItem = HolydayArr[line].split("<>");
	if ( Holyday == HolydayArrItem[1] ) {
		HFlag = 1;
		Hfile = HolydayArrItem[0];
		break;
	}
}

// CSVファイル名の取得(ファイル名：月.txt)
var csvFilePath = csvFiledir + viewMonth + ".txt";
var remakeCompareDate = date;

var Obj;
var display;
var imgdir;

// 実行する
var onLoadSetting = JcreateListener( "load" );
onLoadSetting.call( window, JloadHeaderData );
document.write("<div id=" + targetDivTag + "></div>");

// イベント設定（OnLoad）をブラウザ非依存にする
function JcreateListener( ev ) {
	var ev2 = ev;
	if (this.attachEvent) {
		ev2 = "on" + ev;
		return function( handler ) { this.attachEvent(ev2, handler); }
	} else if ( this.addEventListener )    {
		return function( handler ) { this.addEventListener(ev2, handler, true); }
	} else {
		return function( handler ){ return false; }
	}        
}

/* 処理部 */
function JloadHeaderData(  ) {
	imgdir = imgFilePath;
	display = document.getElementById( targetDivTag );
	Obj = JcreateXMLHttpRequest( JdisplayData );
	if ( Obj ) {
		Obj.open( "GET", csvFilePath, true );
		Obj.send( null );
	}
}

/* HTTP通信用 */
function JcreateXMLHttpRequest( callback ) {
	var XMLhttpObject = null;
	try {
		XMLhttpObject = new XMLHttpRequest();
	} catch(e) {
		try {
			XMLhttpObject = new ActiveXObject( "Msxml2.XMLHTTP" );
		} catch(e) {
			try {
				XMLhttpObject = new ActiveXObject( "Microsoft.XMLHTTP" );
			} catch(e) {
				return null;
			}
		}
	}
	if (XMLhttpObject) XMLhttpObject.onreadystatechange = callback;
	return XMLhttpObject;
}

/* 読み込みファイルの表示処理 */
function JdisplayData() {
	if (( Obj.readyState == 4 ) && ( Obj.status == 200 )) {
		display.innerHTML = JmakedisplayData( Obj.responseText );
		enableTooltips();
	}
}

/* 読み込みファイルの解析及び整形処理 */
function JmakedisplayData( Data ) {
	var LF = String.fromCharCode( 10 );
	lineData = Data.split( LF );
	var flag = 0;
	for ( var i=0; i<lineData.length; i++ ) {
		viewItem = lineData[i].split("<>");

		var fileCompareDate = viewItem[0];
		var filename = viewItem[1];
		var comment = viewItem[2];
		var hukidasi = viewItem[3];

		/* 指定休日はイメージファイルを置き換える */
		if ( HFlag ) {
			filename = Hfile + '.gif';
			alt = Hfile;
		}

		var resultText;
		if ( remakeCompareDate == fileCompareDate ) {
			resultText = '<div id="HeaderDate" style="background-image: url(';
			resultText += imgdir + filename;
			resultText += ')">';
			resultText += '<table cellpadding="0" cellspacing="0" id="#HeaderDateTable">';
			resultText += '<tr>';
			resultText += '<td id="HeaderDateTD01">';
			resultText += '<span class="middlenavi">' + year;
			resultText += '<span style="color:#ff9900">年</span></span>';
			resultText += '<span class="large">' + viewMonth + '</span>';
			resultText += '<span style="color:#ff9900">月</span></span>';
			resultText += '<span class="large">' + viewDate + '</span>';
			resultText += '<span style="color:#ff9900">日</span></span>';
			resultText += '<span class="middle">（' + wday + '）</span>';
			resultText += '</td>';
			resultText += '</tr>';
			resultText += '<tr>';
			resultText += '<td id="HeaderDateTD02">';

			resultText += '<table align="center" cellpadding="0" cellspacing="0">';
			resultText += '<tr>';
			resultText += '<td class="middlenavi"><a href="#" title="' + hukidasi + '" class="tooltips">' + comment + '</a></td>';
			resultText += '</tr>';
			resultText += '</table>';

			resultText += '</td>';
			resultText += '</tr>';
			resultText += '</table>';
			resultText += '</div>';
			flag = 1;
		}
		if ( flag ) break;
	}

//alert(resultText);
	return resultText;
}

/********************************************************************************/


/*javascript for Bubble Tooltips by Alessandro Fulciniti
- http://pro.html.it - http://web-graphics.com */

function enableTooltips(id){
    var links,i,h;
    if(!document.getElementById || !document.getElementsByTagName) return;

    h=document.createElement("span");
    h.id="btc";
    h.setAttribute("id","btc");
    h.style.position="absolute";
    document.getElementsByTagName("body")[0].appendChild(h);
    if(id==null) links=document.getElementsByTagName("a");
    else links=document.getElementById(id).getElementsByTagName("a");
    for(i=0;i<links.length;i++){
        var cls = links[i].getAttribute('class') || links[i].getAttribute('className');
        if(cls != null) {
            if(cls.match("tooltips")) {
                Prepare(links[i]);
            }
        }
    }
}

function Prepare(el){
var tooltip,t,b,s,l;
t=el.getAttribute("title");
if(t==null || t.length==0) t="link:";
el.removeAttribute("title");
tooltip=CreateEl("span","tooltip");
s=CreateEl("span","top");
s.appendChild(document.createTextNode(t));
tooltip.appendChild(s);
b=CreateEl("b","bottom");
tooltip.appendChild(b);
setOpacity(tooltip);
el.tooltip=tooltip;
el.onmouseover=showTooltip;
el.onmouseout=hideTooltip;
el.onmousemove=Locate;
}

function showTooltip(e){
document.getElementById("btc").appendChild(this.tooltip);
Locate(e);
}

function hideTooltip(e){
var d=document.getElementById("btc");
if(d.childNodes.length>0) d.removeChild(d.firstChild);
}

function setOpacity(el){
el.style.filter="alpha(opacity:95)";
el.style.KHTMLOpacity="0.95";
el.style.MozOpacity="0.95";
el.style.opacity="0.95";
}

function CreateEl(t,c){
var x=document.createElement(t);
x.className=c;
x.style.display="block";
return(x);
}

function Locate(e){
var posx=0,posy=0;
if(e==null) e=window.event;
if(e.pageX || e.pageY){
    posx=e.pageX; posy=e.pageY;
    }
else if(e.clientX || e.clientY){
    if(document.documentElement.scrollTop){
        posx=e.clientX+document.documentElement.scrollLeft;
        posy=e.clientY+document.documentElement.scrollTop;
        }
    else{
        posx=e.clientX+document.body.scrollLeft;
        posy=e.clientY+document.body.scrollTop;
        }
    }
document.getElementById("btc").style.top=(posy+10)+"px";
document.getElementById("btc").style.left=(posx-20)+"px";
}