﻿var XML_INFO		= "./xml/TOPICS_NEWS.xml";	//XMLファイル
var OLDEST_PERIOD	= 180;						//最長掲載期間(約半年)
var LATEST_PERIOD	= 14;						//最新表示期間(２週間)
//XML⇒オブジェクトデータ変換
var XmlToObj = function(xml, op, lp){//num>0の場合は指定された数のデータ,それ以外は全データ
	this.curDate = new Date();	//実行時点での日付情報
	this.xmlfile		= xml;	//XMLファイル
	this.oldest_period	= op;	//最長掲載期間
	this.latest_period	= lp;	//最新表示期間
	this.arrObj	= new Object();	//XMLパース結果
	this.objNum	= 0;			//データ数
	this.GetDiffDays = function(cur,tmp){return Math.floor((cur - tmp)/(1000*60*60*24));}//日単位の差分を確認
	this.MaxPeriod   = function(cur,tmp){return (this.oldest_period < this.GetDiffDays(cur,tmp)) ? true : false;}//掲載期間の超過を確認
	this.NewPeriod   = function(cur,tmp){return (this.latest_period < this.GetDiffDays(cur,tmp)) ? false : true;}//最新期間の超過を確認
	//XMLパース(XMLからオブジェクトデータへ変換)
	this.xml2obj = function(getNum){
	    var DEF_UNKNOWN	= "unknown";
		var numObj	= 0;//データ数(初期値0)
		var http	= new JKL.ParseXML(this.xmlfile);
		var data	= http.parse();
		var arrXml	= data['topics']['topic'];//<topics>直下の<topic>配列
		if(arrXml.length == undefined){arrXml = new Array(arrXml);}//配列が１つの場合の対処
		for(idx in arrXml){
			var tmpTopic = arrXml[idx];//一行単位で取り出し
			if(tmpTopic['no']==undefined || !(tmpTopic['no'].length>0)){continue;}
			//if(!(tmpTopic['no'].length>0)){continue;}
			var tmpNo = "topic" + tmpTopic['no'];
			if(tmpTopic['display'] != "on"){continue;}//"off"の場合はスキップ
			var arrDate = tmpTopic['date'].split("/");//日付："yyyy/mm/dd"形式
			if(arrDate.length != 3){continue;}
			var xmlDate = new Date(eval(arrDate[0]), eval(arrDate[1]) - 1, eval(arrDate[2]));
			if(this.MaxPeriod(this.curDate.getTime(),xmlDate.getTime())){continue;}//掲載期間を過ぎたものは除外
			//投稿日付
			var tmpDate    = tmpTopic['date'];
			//新着
			var tmpLatest  = this.NewPeriod(this.curDate.getTime(),xmlDate.getTime());
			//見出し
			var tmpCaption = (tmpTopic['caption'] != "#") ? tmpTopic['caption'] : DEF_UNKNOWN;
			//詳細
			var tmpArticle = (tmpTopic['article'] != "#") ? tmpTopic['article'] : "";
			//画像
			var tmpImgPath = (tmpTopic['imagefile' ] != "#") ? tmpTopic['imagefile' ] : "";
			var tmpImgName = (tmpTopic['imagetitle'] != "#") ? tmpTopic['imagetitle'] : ((tmpTopic['imagefile'] != "#") ? DEF_UNKNOWN : "");
			//リンク
			var tmpLinkUrl = (tmpTopic['linkurl'  ] != "#") ? tmpTopic['linkurl'  ] : "";
			var tmpLinkTtl = (tmpTopic['linktitle'] != "#") ? tmpTopic['linktitle'] : ((tmpTopic['linkurl'] != "#") ? DEF_UNKNOWN : "");
			//詳細情報有無
			var tmpExtra   = ((tmpArticle.length>0)||(tmpImgName.length>0)||(tmpLinkTtl.length>0)) ? "extra" : "";
			//オブジェクトデータ
			this.arrObj[tmpNo] = {
				extra		: tmpExtra,
				date		: tmpDate,
				latest		: tmpLatest,
				caption		: tmpCaption,
				article		: tmpArticle,
				image		: tmpImgName,
				path		: tmpImgPath,
				linktitle	: tmpLinkTtl,
				linkurl		: tmpLinkUrl
			};
			++this.objNum;
			if(getNum>0){
				if(!(this.objNum<getNum)){break;}//指定数に達したら終了
			}
		}
	};
};

