﻿$(document).ready(function() {
	// XMLの読み込みを始める
	$.ajax({
		url: "news.xml",
		type: "GET",
		dataType: ($.browser.msie) ? "text" : "xml", 
		timeout: 1000,
		error: function()
		{
			/*xmlファイルの読み込みに失敗しました*/
		},
		success: XmlLoaded
	});
	
});


/* メンバ変数 */
// 開閉処理
var oldDt;
var currentDt;


// XML読み込み完了時に実行する
function XmlLoaded(data)
{
	/* XMLのパースを行う */
	var xml;
	if (typeof data == "string") {
		xml = new ActiveXObject("Microsoft.XMLDOM");
		xml.async = false;
		xml.loadXML(data);
	} else {
		xml = data;
	}
	$(xml).find("item").each(function(){
		// set NodeData
		var date = $(this).find("date").text();
		var category = $(this).find("category").text();
		var title = $(this).find("title").text();
		var summary = $(this).find("summary").text();
		
		// カテゴリ
		var categoryImageName;
		switch(category)
		{
			case "お知らせ":
				categoryImageName = "category_notice.png";
				break;
			case "セミナー":
				categoryImageName = "category_seminar.png";
				break;
			case "ショーケース":
				categoryImageName = "category_showcase.png";
				break;
			case "カンファレンス":
				categoryImageName = "category_conference.png";
				break;
			case "プレスリリース":
				categoryImageName = "category_pressrelease.png";
				break;
			defult :
				categoryImageName = "category_notice.png";
				break;
		}
		var categoryNode = "<div class='newsCategory'><img src='imgs/" + categoryImageName + "' alt='" + category + "' /></div>"
		
		// set HTML Tag
		var dateNode = "<span class='newsDate'>" + date + "</span>";
		var titleNode = "<div class='newsTitleText'>" + title + "</div>";
		
		// Append
		$("#news").append("<dt class='newsTitle'><div class='dtBorderTop'/><div class='newsTitleContent'>" + categoryNode + dateNode + titleNode + "</div><div class='dtBorderBottom' /></dt>");
		$("#news").append("<dd class='newsSummary'>" + summary + "</dt>");
	});
	
		
	/* 最初の要素を選択状態にする */
	setDefaultItem();
	
	// Click
	$(".newsTitle").click(function()
	{
		
		// 前に開いていた項目を記憶する
		oldDt = currentDt;
		
		// 選択されたDtを保持する
		currentDt = this;
	
		// クリックした次の要素を除いてスライドアップ
		$("#news .newsSummary").not($(this).next()).slideUp(300);
		
		// クリックした次の要素をスライド動作
		$(this).next().slideToggle(300, slideCallback);
	});
	
	// Hover
	$(".newsTitle").hover(
		function(){
			/* RollOver */
			// 選択中の項目でなければ正
			if(isOpen(this) == false) {
			
				/* ボーダー */
				var top = $(this).children(".dtBorderTop");
				var bottom = $(this).children(".dtBorderBottom");
				$(top).css("border-top-color","#002E73");
				$(bottom).css("border-bottom-color","#002E73");
				
				/* 矢印アイコンの変更 */
				var wrap = $(this).children(".newsTitleContent");
				$(wrap).css("background-image","url(imgs/newsHover.png)");
				
				/* 矢印アイコンの背景の変更 */
				$(this).css("background-image","url(imgs/newsTitleBackgroundOpen.png)");
				
				/* DTの背景色 */
				$(this).css("background-color","#D9E8FF");
			}
		},
		function(){
			/* RallOut */
			// 選択中の項目でなければ正
			if(isOpen(this) == false) {
			
				/* ボーダー */
				var top = $(this).children(".dtBorderTop");
				var bottom = $(this).children(".dtBorderBottom");
				$(top).css("border-top-color","#56BBD8");
				$(bottom).css("border-bottom-color","#56BBD8");
				
				/* 矢印アイコンの変更 */
				var wrap = $(this).children(".newsTitleContent");
				$(wrap).css("background-image","url(imgs/newsClose.png)");	
				
				/* 矢印アイコンの背景の変更 */
				$(this).css("background-image","url(imgs/newsTitleBackgroundClose.png)");
				
				/* DTの背景色 */
				$(this).css("background-color","#F4F4F4");
			}
		}
	);
}

// 最初の要素を選択状態にする
function setDefaultItem()
{
	// 参照の設定
	currentDt = $("#news .newsTitle:first")[0];
	var firstDt = currentDt;
	var firstDtWrap = $(firstDt).children(".newsTitleContent");
	var top = $(firstDt).children(".dtBorderTop");
	var bottom = $(firstDt).children(".dtBorderBottom");
	
	//白矢印にする
	$(firstDtWrap).css("background-image","url(imgs/newsOpen.png)");
	
	/* 矢印アイコンの背景の変更 */
	$(firstDt).css("background-image","url(imgs/newsTitleBackgroundOpen.png)");
	
	// 矢印の上下の枠線
	$(top).css("border-top-color","#002E73");
	$(bottom).css("border-bottom-color","#002E73");
	
	// TDの背景を青くする
	$(firstDt).css("background-color","#D9E8FF");
	
	// summary要素のうち一番最初のtext要素を除いて非表示にする
	$(".newsSummary").not("#news .newsSummary:first").hide();
}

// クリックした次の要素をスライド動作
function slideCallback()
{
	/* 移動 */
	// 移動対象のインデックス
	var index = $("dt").index(currentDt);
	// 移動対象
	var target = $("dt").eq(index);
	// 移動対象とTOPまでの差分
	var targetOffset = target.offset().top;
	// 最初のDT要素とTOPまでの差分
	var firstDtOffset = ($("dt").eq(0)).offset().top;
	// 移動対象の移動量
	targetOffset = targetOffset - firstDtOffset;
	// 目標値のフォーマット
	var offsetString = "+="+targetOffset+"px";
	// 移動開始
	$('#news').animate({"scrollTop": targetOffset}, 500);
	
	/* CSSの変更 */
	/* 閉じた矢印アイコンがbackground-imageの値に入っていれば正、入っていなければ負とする */
	// newsTitleContentクラス（CSSのクラス）のノードを取得する
	var wrap = $(currentDt).children(".newsTitleContent");
	// 先に取得したノードのbackground-imageを取得する
	var nowImageState = $(wrap).css("background-image");
	// background-image指定値を取得する
	var nowImageText =$(nowImageState).html();
	// background-image指定値内に「newsClose.png」の文字列が含まれているかのフラグを取得する
	var isClose = nowImageState.indexOf("newsClose.png");
	if(isClose > 0)
	{
		/* [  新しい項目を選択した場合 ]と[ 前回開いていた項目を再び開いた場合 ] */
	
		/* 矢印アイコンを変更する */
		var oldWrap = $(oldDt).children(".newsTitleContent");
		$(oldWrap).css("background-image","url(imgs/newsClose.png)");
		var wrap = $(currentDt).children(".newsTitleContent");
		$(wrap).css("background-image","url(imgs/newsOpen.png)");
		
		/* 矢印アイコンの背景を変更する */
		$(oldDt).css("background-image","url(imgs/newsTitleBackgroundClose.png)");
		$(currentDt).css("background-image","url(imgs/newsTitleBackgroundOpen.png)");
		
		/* DTの背景色を変更する*/
		$(oldDt).css("background-color","#F4F4F4");
		$(currentDt).css("background-color","#D9E8FF");
		
		/* ボーダーを変更する*/
		var top = $(oldDt).children(".dtBorderTop");
		var bottom = $(oldDt).children(".dtBorderBottom");
		$(top).css("border-top-color","#56BBD8");
		$(bottom).css("border-bottom-color","#56BBD8");
		top = $(currentDt).children(".dtBorderTop");
		bottom = $(currentDt).children(".dtBorderBottom");
		$(top).css("border-top-color","#002E73");
		$(bottom).css("border-bottom-color","#002E73");
	}
	else
	{
		/* 既に開いていた項目を閉じた場合 */
	
		/* 矢印アイコンを変更する */
		var wrap = $(currentDt).children(".newsTitleContent");
		$(wrap).css("background-image","url(imgs/newsOpen.png)");	
		var oldWrap = $(oldDt).children(".newsTitleContent");
		$(oldWrap).css("background-image","url(imgs/newsClose.png)");
		
		/* 矢印アイコンの背景を変更する*/
		$(currentDt).css("background-image","url(imgs/newsTitleBackgroundOpen.png)");
		$(oldDt).css("background-image","url(imgs/newsTitleBackgroundClose.png)");

		/* DTの背景色を変更する */
		$(currentDt).css("background-color","#D9E8FF");
		$(oldDt).css("background-color","#F4F4F4");
		
		/* ボーダーを変更する */
		var top = $(currentDt).children(".dtBorderTop");
		var bottom = $(currentDt).children(".dtBorderBottom");
		$(top).css("border-top-color","#002E73");
		$(bottom).css("border-bottom-color","#002E73");
		top = $(oldDt).children(".dtBorderTop");
		bottom = $(oldDt).children(".dtBorderBottom");
		$(top).css("border-top-color","#56BBD8");
		$(bottom).css("border-bottom-color","#56BBD8");
	}
}

// 引数に渡した項目がサマリーを開いているかフラグを受け取る
function isOpen(target)
{
	/* 閉じた矢印アイコンがbackground-imageの値に入っていれば正、入っていなければ負とする */
	// newsTitleContentクラス（CSSのクラス）のノードを取得する
	var wrap = $(target).children(".newsTitleContent");
	// 先に取得したノードのbackground-imageを取得する
	var nowImageState = $(wrap).css("background-image");
	// background-image指定値を取得する
	var nowImageText =$(nowImageState).html();
	// background-image指定値内に「newsOpen.png」の文字列が含まれているかのフラグを取得する
	var isOpen = nowImageState.indexOf("newsOpen.png");
	
	// isOpenが-1でなければ開く矢印画像が表示されてるとし正となり、-1であれば開く矢印画像は表示されていないとし負となる
	if(isOpen > 0)
	{
		// 開く矢印が表示されているので、開いていると判定し、trueを返す
		return true;
	}
	else
	{
		// 開く矢印が表示されていないので、開いていないと判定し、falseを返す
		return false;
	}
}	