//////////////////////////////////////////////////////////////////////
//                                                                  //
// ヘッドラインニュース ＦＲＯＭ ＮｅｗｓＭＬ 表示ＡＪＡＸ          //
//                                                                  //
// 　　　　　　　　　　　　　　　　　株式会社ユニゾンシステムズ     //
//                                                                  //
//                                                                  //
// Copyright (C) 2007. Unixon Systems Co.,Ltd. All Rights Reserved. //
//                                                                  //
//////////////////////////////////////////////////////////////////////


	var newsIndexUrl = "/pc/auto/news/index.html";

	var headlineNewsMoveStep      =   30;	// ニュース移動量（ｐｘ）
	var headlineNewsMoveStepTimer =   30;	// ニュース移動時のタイマー（ｍｓｅｃ）
	var headlineNewsMoveZeroTimer = 4000;	// 正位置での停止時間（ｍｓｅｃ）
	var headlineNewsMoveNextTimer = 1000;	// 次のニュース出現までの停止時間（ｍｓｅｃ）
	var headlineNewsReloadTimer   = 300000;	// ニュースデータを再取得する時間（ｍｓｅｃ）

	var headlineNewsMlFile = null;
	var headlineNewsPos = null;
	var headlineNewsPosStart;
	var headlineNewsPosFinish;
	var nowNewsElement;
	var headlineNews = null;
	var newsIndex = 0;
	var headlineNewsLoadedNow = false;
	var headlineNewsLoadTime = 0;


	////////////////////////////////////////////
	// 公開関数：「ＮＥＷＳヘッドライン」表示 //
	////////////////////////////////////////////
	function showHeadlineNews(newsMlFile)
	{
		if (headlineNewsMlFile == null){
			headlineNewsMlFile = newsMlFile;
		}

		if (headlineNewsPos == null){
			if (headlineNewsLoadedNow == true){
				// 非同期読み込み完了
				headlineNewsLoadedNow = false;
			}
			else
			if (headlineNews == null){
				// データ読み込み
				getHeadlineNews();
				newsIndex = 0;
				return;
			}

			nowNewsElement = document.getElementById('newsMessageText');
			nowNewsElement.innerHTML = headlineNews[newsIndex];

			headlineNewsPosStart  = getHeadLineElementWidth(document.getElementById('divHeadlineArea'));
			headlineNewsPosFinish = 0 - getHeadLineElementWidth(nowNewsElement);
			headlineNewsPosStart  = Math.floor(headlineNewsPosStart / headlineNewsMoveStep) * headlineNewsMoveStep + headlineNewsMoveStep;
			headlineNewsPos = headlineNewsPosStart;
		}

		headlineNewsPos = headlineNewsPos - headlineNewsMoveStep;
		nowNewsElement.style.left = headlineNewsPos + "px";

		if (headlineNewsPos < headlineNewsPosFinish){
			headlineNewsPos = null;
			newsIndex = newsIndex + 1;
			if (newsIndex >= headlineNews.length){
				// 最後まで達した
				now = (new Date()).getTime();
				if (now - headlineNewsLoadTime >= headlineNewsReloadTimer){
					// データ再取得
					headlineNews = null;
				}
				else{
					// 巻き戻し
					newsIndex = 0;
				}
			}
			setTimeout("onHeadlineNewsTimerEvent()", headlineNewsMoveNextTimer);
		}
		else
		if (headlineNewsPos == 0){
			setTimeout("onHeadlineNewsTimerEvent()", headlineNewsMoveZeroTimer);
		}
		else{
			setTimeout("onHeadlineNewsTimerEvent()", headlineNewsMoveStepTimer);
		}
	}

	function getHeadlineNews()
	{
		if (headlineNewsMlFile.substr(headlineNewsMlFile.length-3, 3) == "csv")
				getHeadlineNewsCSV();
		else	getHeadlineNewsXML();
	}

	function getHeadlineNewsCSV()
	{
		headlineNewsLoadedNow = false;

		var http = new JKL.ParseXML.CSV( headlineNewsMlFile + "?cache=" + ((new Date()).getTime()) );

		var func = function ( data ) {
			// 非同期データ取得メソッド

			headlineNews = new Array();

			var nCnt = 0;
			for (i = 0; i < data.length; i++){
				// ＩＤ,ＵＲＬ,内容,日時
				newsText = data[i][3] + "&nbsp;" + data[i][2];

				headlineNews[nCnt++] = "<a href='" + data[i][1] + "'>" + newsText + "</a>";
			}

			if (nCnt == 0){
				headlineNews[0] = "ニュースはありません";
			}

			headlineNewsLoadedNow = true;
			setTimeout("onHeadlineNewsTimerEvent()", headlineNewsMoveNextTimer);
		}

		http.async(func);
		http.parse();

		headlineNewsLoadTime = (new Date()).getTime();
	}

	function getHeadlineNewsXML()
	{
		headlineNewsLoadedNow = false;

		var http = new JKL.ParseXML.DOM( headlineNewsMlFile + "?cache=" + ((new Date()).getTime()) );

		var func = function ( XMLdata ) {
			// 非同期データ取得メソッド

			headlineNews = new Array();

			if (XMLdata == null || typeof(XMLdata) == "undefined"){
				// データ取得エラー
				headlineNews[0] = "";
				return;
			}
			
			// ＮｅｗｓＭＬからヘッドラインニュースを取得します
			var newsMl = parseNewsMlFile(XMLdata);

			var nCnt = 0;
			for (var i=0; i < newsMl.length; i++){

				var newsText = "";
				if (newsMl[i].date != null && newsMl[i].date != ""){
					// 日付
					newsText += newsMl[i].date.substr(4,2) + "/" + newsMl[i].date.substr(6,2) + "&nbsp;";
				}
				newsText += newsMl[i].title;

				headlineNews[nCnt++] = "<a href='" + newsIndexUrl + "#" + newsMl[i].id + "'>" + newsText + "</a>";
			}
			if (nCnt == 0){
				headlineNews[0] = "ニュースはありません";
			}

			headlineNewsLoadedNow = true;
			setTimeout("onHeadlineNewsTimerEvent()", headlineNewsMoveNextTimer);
		}

		http.async(func);
		http.parse();

		headlineNewsLoadTime = (new Date()).getTime();
	}


	function onHeadlineNewsTimerEvent()
	{
		showHeadlineNews();
	}

	var _bro = (window.opera?4:(window.external?3:(window.controllers?1:(document.layers?2:0)))); 
	var _ie5 = (navigator.appName.indexOf('Microsoft Internet Explorer')>=0 && document.getElementById)?1:0; 

	function getHeadLineElementWidth (ele){
		if (typeof(ele.offsetWidth) != "undefined" && ele.offsetWidth != 0) return ele.offsetWidth;
		if (_bro==1||_bro==4) return ele.offsetWidth;  
		if (_bro==2) return ele.clip.width;
		if (_bro==3) return _ie5 ? ele.offsetWidth : ele.style.pixelWidth;
		return 0;
	}

	// ＮｅｗｓＭＬファイル（ＸＭＬ）のパース
	function parseNewsMlFile(XMLdata, removePastSec, nowDate)
	{
		if (removePastSec && removePastSec != null && removePastSec != 0){
			// 掲載期間切れのチェックあり
			if (!nowDate || nowDate==null){
				nowDate = new Date();
			}
		}

		var newsData = new Array();

		var NewsItem = findXmlElement(XMLdata, "NewsData");
		//var NewsItem = XMLdata.getElementsByTagName("NewsItem");
		for (var i=0; i < NewsItem.length; i++){
			var itemId    = findXmlFirstElement(NewsItem[i], "NewsId");
			var firstCre  = findXmlFirstElement(NewsItem[i], "FirstDt");
			var dateLine  = findXmlFirstElement(NewsItem[i], "HanUpdate");
			var roleTitle = findXmlFirstElement(NewsItem[i], "Title");
			var roleMain  = findXmlFirstElement(NewsItem[i], "Cont");
			var rolePhoto = findXmlFirstElement(NewsItem[i], "PictFileNm");
			var roleVideoB= findXmlFirstElement(NewsItem[i], "WM56K");
			var roleVideoN= findXmlFirstElement(NewsItem[i], "WM300K");

			var id     = "";
			var first  = "";
			var date   = "";
			var title  = "";
			var honbun = "";
			var photo  = "";
			var video  = "";

			if (itemId != null){
				// ＩＤ
				if (itemId && itemId.childNodes && itemId.childNodes.length > 0){
					id = itemId.childNodes[0].nodeValue;
				}
			}
			if (firstCre != null){
				// 初回作成日付
				if (firstCre && firstCre.childNodes && firstCre.childNodes.length > 0){
					first = firstCre.childNodes[0].nodeValue;
				}
			}
			if (dateLine != null){
				// 日付
				if (dateLine && dateLine.childNodes && dateLine.childNodes.length > 0){
					date = dateLine.childNodes[0].nodeValue;
				}
			}
			if (roleTitle != null){
				// タイトル
				if (roleTitle && roleTitle.childNodes && roleTitle.childNodes.length > 0){
					title = roleTitle.childNodes[0].nodeValue;
				}
			}	
			if (roleMain != null){
				// 本文
				if (roleMain && roleMain.childNodes && roleMain.childNodes.length > 0){
					honbun = roleMain.childNodes[0].nodeValue;
					honbun = honbun.replace(/\n/g, "<br>")
				}
			}	
			if (rolePhoto != null){
				// 添付：ＰＨＯＴＯ
				if (rolePhoto && rolePhoto.childNodes && rolePhoto.childNodes.length > 0){
					honbun = rolePhoto.childNodes[0].nodeValue;
				}
			}
			if (roleVideoN != null){
				// 添付：ＶＩＤＥＯ（ナローバンド優先）
				if (roleVideoN && roleVideoN.childNodes && roleVideoN.childNodes.length > 0){
					video = roleVideoN.childNodes[0].nodeValue;
				}
			}
			else
			if (roleVideoB != null){
				// 添付：ＶＩＤＥＯ（ベースバンド）
				if (roleVideoB && roleVideoB.childNodes && roleVideoB.childNodes.length > 0){
					video = roleVideoN.childNodes[0].nodeValue;
				}
			}

			if (id != "" && title != ""){
				var obj = new Object();
				obj.id     = id;		// ＩＤ
				obj.date   = date;		// 日付
				obj.title  = title;		// タイトル
				obj.honbun = honbun;	// 本文
				obj.photo  = photo;		// 写真
				obj.video  = video;		// 動画
				newsData.push(obj);
			}
		}

		return newsData;
	}
