﻿//簡易クロスブラウザライブラリ
//参考：『入門Ajax』SoftBankCreative発行

var flgDbg = 0;

//動作可能ブラウザ判定
function chkAjaBrowser()
{
	var a,ua = navigator.userAgent;
	this.bw= {
		safari	:((a=ua.split('AppleWebKit/')[1])?a.split('(')[0]:0)>=124,
		konqueror	:((a=ua.split('Konqueror/')[1])?a.split(';')[0]:0)>=3.3,
		mozes	:((a=ua.split('Gecko/')[1])?a.split(" ")[0]:0)>=20011128,
		opera	:(!!window.opera) && ((typeof XMLHttpRequest)=='function'),
		msie	:(!!window.ActiveXObject)?(!!createHttpRequest()):false
	}
	return (this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie)
}

//XMLHttpRequestオブジェクト生成
function createHttpRequest()
{
	if(window.ActiveXObject){
		//WinIE e4,e5,e6用
		try{
			DebugMsg("XMLHttpRequest：Msxml2.XMLHTTP")
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				DebugMsg("XMLHttpRequest：Microsoft.XMLHTTP")
				return new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				DebugMsg("XMLHttpRequest：null")
				return null;
			}
		}
	} else if(window.XMLHttpRequest){
		//WinIE以外のAjaxブラウザ
		DebugMsg("XMLHttpRequest：XMLHttpRequest")
		return new XMLHttpRequest();
	} else {
		//上記以外
		DebugMsg("XMLHttpRequest：null")
		return null;
	}
}

//送受信関数
function sendRequest(callback,data,method,url,async,sload,user,password)
{
	DebugMsg("Start sendRequest")

	//XMLHttpRequestオブジェクト生成
	var oj = createHttpRequest();
	if (oj == null) return null;

	//強制ロードの設定
	var sload = (!!sendRequest.arguments[5])?sload:false;
	if (sload || method.toUpperCase() == 'GET') url += "?";
	if (sload) url=url+"t="+(new Date()).getTime();

	//ブラウザ判定
	var bwoj = new chkAjaBrowser();
	var opera = bwoj.bw.opera;
	var safari = bwoj.bw.safari;
	var konqueror = bwoj.bw.konqueror;
	var mozes = bwoj.bw.mozes;

	//受信処理
	if (opera || safari || mozes){
		DebugMsg("受信処理：opera || safari || mozes")
		oj.onload = function(){callback(oj);}
	} else {
		DebugMsg("受信処理：opera || safari || mozes　以外")
		oj.onreadystatechange = function()
		{
			if (oj.readyState == 4){
				callback(oj);
			}
		}
	}

	//URLエンコード
	data = uriEncode(data)
	if (method.toUpperCase() == 'GET'){
		url += data
	}

	//openメソッド
	oj.open(method,url,async,user,password);

	//ヘッダ application/x-www-form-urlencodeセット
	setEncHeader(oj)

	//デバッグ
	DebugMsg("////jslb_ajaxxx.js//// \n data:" + data + "\n method:" + method + "\n url:" + url + "\n async:" + async);

	//sendメソッド
	oj.send(data);

	//URIエンコードヘッダセット
	function setEncHeader(oj){
		var contentTypeUrlenc = 'application/x-www-form-urlencoded;charset=UTF-8';
		if (!window.opera){
			oj.setRequestHeader('Content-Type',contentTypeUrlenc);
		} else {
			if ((typeof oj.setRequestHeader) == 'function'){
				oj.setRequestHeader('Content-Type',contentTypeUrlenc);
			}
		}

		return oj
	}

	//URLエンコード
	function uriEncode(data){
		if(data != ""){
			//&と=で一旦分解しencode
			var encdata = '';
			var datas = data.split('&');
			for (i=1;i<datas.Length;i++)
			{
				var dataq = datas[i].split('=');
				encdata += '&' + encodeURIComponent(dataq[0])+'='+encodeURIComponent(dataq[1]);
			}
		} else {
			encdata="";
		}
		return encdata;
	}

	return oj
}

function DebugMsg(strMsg)
{
	if (flgDbg == 1){
		alert(strMsg)
	}
}

//////////
/////ここから独自関数

//本日日付取得
function getDate(){
	var dd,gy,gm,gd;

	dd = new Date();
	gy = new String(dd.getYear());
	gm = new String(dd.getMonth()+1);
	gd = new String(dd.getDate());
	gm = '00' + gm;
	gd = '00' + gd;
	if (gy<1900){
		gy = String(dd.getYear() + 1900);
	}
	dd = gy + gm.substring(gm.length-2,gm.length) + gd.substring(gd.length-2,gd.length);
	return dd;
}

//本日日付時間取得
function getTime(){
	var dd,gy,gm,gd;

	dd = new Date();
	gy = new String(dd.getFullYear());
	gm = new String(dd.getMonth()+1);
	gd = new String(dd.getDate());
	gth = new String(dd.getHours());
	gm = '00' + gm;
	gd = '00' + gd;
	gth = '00' + gth
	dd = gy + gm.substring(gm.length-2,gm.length) + gd.substring(gd.length-2,gd.length) + gth.substring(gth.length-2,gth.length);
	return dd;
}

//初期設定
function getInit(src){
	sendRequest(on_loadedXML,'','GET',src,true,true)
}

//初期設定ファイル取得後イベント
function on_loadedXML(oj)
{
	var strDate = "";
	var dd;
	dd = getDate();

	//レスポンスを取得
	var res = oj.responseXML

	//タグを配列にセット
	var item = res.getElementsByTagName("item")
	var date = res.getElementsByTagName("date")
	var msg = res.getElementsByTagName("msg")
	var img = res.getElementsByTagName("img")
	var title = res.getElementsByTagName("title")
	var altmsg = res.getElementsByTagName("altmsg")

	//20060208 一番上を常に最新とみなす
	i = 0;

//	//同日または過去直近の設定を利用する
//	for (i=0;i<item.length;i++)
//	{
//		if (dd>=date[i].firstChild.nodeValue){
//			strDate = date[i].firstChild.nodeValue
//			break;
//		}
//		//alert('【' + i + '】' + date[i].firstChild.nodeValue)
//	}
//	//alert('【' + strDate + '】' + imgName)

	//メッセージ設定
	//sendRequest(on_loadedMsg,'','GET',msg[i].firstChild.nodeValue,true,true)
	document.getElementById("OPMsg").innerHTML=msg[i].firstChild.nodeValue

	//タイトル設定
	document.getElementById("OPTitle").innerHTML = makeTitleHTML(title[i].firstChild.nodeValue,altmsg[i].firstChild.nodeValue,img[i].firstChild.nodeValue,date[i].firstChild.nodeValue)

	//イメージ設定
	chgImg(img[i].firstChild.nodeValue);

	//リンク作成
	document.getElementById("OPLink").innerHTML=makeLinkHTML(res,i)
}

//メッセージファイル取得後イベント
function on_loadedMsg(oj)
{
	//alert("on_loaded3")
	//レスポンスを取得
	var res = decodeURIComponent(oj.responseText)
	//var res = oj.responseText
	//レスポンスされた文字列をDIVへ出力
	document.getElementById("OPMsg").innerHTML=res
}

//リンクHTML作成
function makeLinkHTML(res,num)
{
	var strHTML;
	//タグを配列にセット
	var item = res.getElementsByTagName("item")
	var altmsg = res.getElementsByTagName("altmsg")
	var msg = res.getElementsByTagName("msg")
	var img = res.getElementsByTagName("img")
	var title = res.getElementsByTagName("title")
	var date = res.getElementsByTagName("date")

	strHTML="";

	for (i=num+1;i<item.length;i++)
	{
		//strHTML = strHTML + "<a href=javascript:chgImg('" + img[i].firstChild.nodeValue + "') title='" + altmsg[i].firstChild.nodeValue + "'>" + title[i].firstChild.nodeValue + "</a><br>"
		strHTML = strHTML + makeTitleHTML(title[i].firstChild.nodeValue,altmsg[i].firstChild.nodeValue,img[i].firstChild.nodeValue,date[i].firstChild.nodeValue)
	}

	return strHTML
}

//タイトルリンク作成
function makeTitleHTML(strTitle,strAlt,strSrc,strDate)
{
	var strHTML;
	strHTML = "<a href=javascript:chgImg('" + strSrc + "') title='" + strAlt + "'>" + strTitle + '【' + chgDateWithSlash(strDate) + '】' + "</a><br>"
	return strHTML
}

//イメージ設定
function chgImg(imgfile)
{
	document.Form01.OPImg.src = imgfile;
}

//日付変換
function chgDateWithSlash(strDate)
{
	var rtnValue;
	if (strDate != ''){
		rtnValue = strDate.substring(0,4) + '/' + strDate.substring(4,6) + '/' + strDate.substring(6,8);
	} else {
		rtnValue = '';
	}

	return rtnValue;
}
