//大分類ID
var category_ID ;

//大分類CSV
var categories_csv_data = new Array() ;
//中分類CSV
var middle_categories_csv_data = new Array() ;
//ソリューションCSV
var solution_csv_data = new Array() ;

//中分類のチェック状態を中分類IDをキーにした無名オブジェクトで記録する
//	true :チェック状態
//	false:未チェック状態
var checkedObj = new Object() ;

if(!chkAjaBrowser()){ 
	//ライブラリが非サポートのブラウザ専用ページへ分岐
	location.href='nonajax.html'
}


//////////////////////////////////////////////////
//大分類CSVファイルの読み込みと解析
//////////////////////////////////////////////////
function read_categories_csv_file(){
	//大分類CSV	読み込みと解析
	var categories_csv_url = "categories.csv" ;
	var categories_csv_http = new JKL.ParseXML.CSVmap(categories_csv_url) ;
	var func = callback_read_categories_csv_file ;	// 呼び出し先関数を定義する
	categories_csv_http.async(func) ;	// 呼び出し先関数を指定する
	categories_csv_http.parse();			// ダウンロード〜解析〜関数呼び出しする
}

//////////////////////////////////////////////////
//大分類CSV読み込みと解析終了のコールバック関数
//////////////////////////////////////////////////
function callback_read_categories_csv_file(data){
	//解析済みデータを格納
	categories_csv_data = data ;

	//大分類サブリンク作成と表示。「使い方」はID='z'とする
	createCategoriesSubLink('z') ;

	//使い方メッセージ作成と表示
	createSolutionNaviMessage(0) ;

	//大分類リスト作成
	createCategoriesList(true) ;
}

//////////////////////////////////////////////////
//大分類リスト作成と表示。使い方画面（=初期画面）はメッセージの下に表示するが、
//大分類がクリックされた場合は表示しない。
//引数　true:表示する
//		それ以外：表示しない
//////////////////////////////////////////////////
function createCategoriesList(disp_flg){
	//チェックリスト表示領域のnodeを取得
	var list_node = document.getElementById("categories_list") ;
	//初期化
	var innerHTML = "" ;
	//チェックリストのHTMLテンプレート
	var template = '<li><a href="javascript:void(0);" onclick="javascript:category_click(\'#id#\');">#disp_str#</a></li>'

	if(disp_flg == true){
		for(var i=0;i<categories_csv_data.length;i++){
			//テンプレート埋め込みパラメータを設定
			var param = {id:categories_csv_data[i].id,disp_str:categories_csv_data[i].disp_str} ;
			//テンプレート埋め込み関数を実行
			innerHTML += simpleTemplate(template,param) ;
		}
	}

	//チェックリスト表示領域のHTMLを変更して描画更新
	list_node.innerHTML = innerHTML ;
}

//////////////////////////////////////////////////
//大分類クリックイベントハンドラ
//////////////////////////////////////////////////
function category_click(id){
	//選択された大分類のIDを保存
	category_ID = id ;
	
	//サブリンクを作成しなおす。現在表示している大分類は太字でリンク無しにする。
	createCategoriesSubLink() ;

	if(id != 'z'){
		createSolutionNaviMessage(1) ;
		createCategoriesList(false) ;

		//中分類とソリューションの表示部の初期化
		sapnavi_sub_init() ;
	}else{
		createSolutionNaviMessage(0) ;
		createCategoriesList(true) ;
		var check_list_node = document.getElementById("middle_categories_check_list") ;
		check_list_node.innerHTML = "" ;
		var link_list_node = document.getElementById("solution_navi_link_list") ;
		link_list_node.innerHTML = "" ;
	}
}

//////////////////////////////////////////////////
//中分類とソリューションCSVファイルの読み込みと解析
//////////////////////////////////////////////////
function read_middle_sol_csv_files(){
	//中分類CSV	読み込みと解析
	var middle_categories_csv_url = "middle_categories.csv" ;
	var middle_categories_csv_http = new JKL.ParseXML.CSVmap(middle_categories_csv_url) ;
	var func = callback_read_middle_csv_file ;	// 呼び出し先関数を定義する
	middle_categories_csv_http.async(func) ;	// 呼び出し先関数を指定する
	middle_categories_csv_http.parse();			// ダウンロード〜解析〜関数呼び出しする
}

//////////////////////////////////////////////////
//中分類CSV読み込みと解析終了のコールバック関数
//////////////////////////////////////////////////
function callback_read_middle_csv_file(data){

	delete middle_categories_csv_data ;
	middle_categories_csv_data = new Array() ;

	//解析済みの中分類CSVの中から、選択された大分類に属する中分類だけを格納する
	var j=0 ;
	for(var i=0;i<data.length;i++){
		//属する大分類IDを取得
		var temp=data[i].belong_id ;
		//選択した大分類IDが含まれているか？
		if(temp.indexOf(category_ID) != -1){
			//含まれているなら、表示する中分類リストとして格納する
			middle_categories_csv_data[j] = new Array() ;
			middle_categories_csv_data[j] = data[i] ;
			j++ ;
		}
	}

	//ソリューションCSV	読み込みと解析
	var solution_csv_url = "solution.csv" ;
    var solution_csv_http = new JKL.ParseXML.CSVmap(solution_csv_url) ;
    var func = callback_read_solution_csv_file ;// 呼び出し先関数を定義する
    solution_csv_http.async( func );			// 呼び出し先関数を指定する
    solution_csv_http.parse();					// ダウンロード〜解析〜関数呼び出しする
}

//////////////////////////////////////////////////
//ソリューションCSV読み込みと解析終了のコールバック関数
//////////////////////////////////////////////////
function callback_read_solution_csv_file(data){
	//解析済みデータを格納
	delete solution_csv_data ;
	solution_csv_data = new Array() ;
	solution_csv_data = data ;

	//中分類ラジオボタンリスト作成
	createMiddleCategoriesRadioList() ;
	//ソリューションページリンクリスト作成
	createSolutionNaviLinkList() ;
}

//////////////////////////////////////////////////
//中分類、ソリューション表示部の初期化
//////////////////////////////////////////////////
function sapnavi_sub_init(){
	//読み込み中の文字を表示する
	var check_list_node = document.getElementById("middle_categories_check_list") ;
	var innerHTML = '読み込み中' ;
	check_list_node.innerHTML = innerHTML ;

	//中分類CSVとソリューションCSVファイルの読み込みと解析
	read_middle_sol_csv_files() ;
}

//////////////////////////////////////////////////
//大分類サブリンク作成と表示
//////////////////////////////////////////////////
function createCategoriesSubLink(){

	//サブリンク表示領域のnodeを取得
	var sub_link_node = document.getElementById("solution_navi_sub_link") ;
	//初期化
	var innerHTML = "" ;
	//サブリンクのHTMLテンプレート
	//非選択中の項目
	var template = '<span class="rightarrowwhite"><a href="javascript:void(0);" onclick="javascript:category_click(\'#id#\');" title="#disp_str#"><font color="#ffffff">#disp_str#</font></a></span>' ;
	//選択中の項目
	var template_bold = '<span class="rightarrowwhite"><img src="/im/a.gif" width="0" height="0" border="0" alt="#"><b><font color="#ffffff">#disp_str#</font></b></span>' ;
	//非選択中で最後の項目
	var template_last = '<span class="lastitem"><a href="javascript:void(0);" onclick="javascript:category_click(\'#id#\');" title="#disp_str#"><font color="#ffffff">#disp_str#</font></a></span>' ;
	//選択中で最後の項目
	var template_last_bold = '<span class="lastitem"><img src="/im/a.gif" width="0" height="0" border="0" alt="#"><b><font color="#ffffff">#disp_str#</font></b></span>' ;

	//「使い方」サブリンク項目を作成する
	var param = {id:"z",disp_str:"使い方"} ;				//テンプレート埋め込みパラメータを設定
	if(category_ID != 'z'){									//使い方を選択中ではない？
		innerHTML += simpleTemplate(template,param) ;		//テンプレート埋め込み関数を実行
	}else{													//使い方を選択中
		innerHTML += simpleTemplate(template_bold,param) ;	//テンプレート埋め込み関数を実行
	}

	//大分類のサブリンク項目を作成する
	for(var i=0;i<categories_csv_data.length;i++){
		var param = {id:categories_csv_data[i].id,disp_str:categories_csv_data[i].disp_str} ;//テンプレート埋め込みパラメータを設定
		if(i<categories_csv_data.length -1){						//最後の項目ではない？
			if(categories_csv_data[i].id != category_ID){			//選択中の項目ではない？
				innerHTML += simpleTemplate(template,param) ;		//テンプレート埋め込み関数を実行
			}else{													//選択中の項目
				innerHTML += simpleTemplate(template_bold,param) ;	//テンプレート埋め込み関数を実行
			}
		}else{														//最後の項目
			if(categories_csv_data[i].id != category_ID){			//選択中の項目ではない？
				innerHTML += simpleTemplate(template_last,param) ;	//テンプレート埋め込み関数を実行
			}else{													//選択中の項目
				innerHTML += simpleTemplate(template_last_bold,param) ;//テンプレート埋め込み関数を実行
			}
		}
	}

	//サブリンクの表示領域のHTMLを変更して描画更新
	sub_link_node.innerHTML = innerHTML ;

}

//////////////////////////////////////////////////
//使い方メッセージの作成と表示
//引数	0:「使い方」のときのメッセージ
//		それ以外:大分類のどれかが選択されているときのメッセージ
//////////////////////////////////////////////////
function createSolutionNaviMessage(kind){
	//メッセージ表示領域のnodeを取得
	var message_node = document.getElementById("solution_navi_message") ;
	//初期化
	var innerHTML = "" ;

	if(kind == 0){
		innerHTML = '<h2 class="sap">解決策ナビゲーション・ツール</h2><noscript>JavaScriptを利用できる環境でご覧ください。</noscript><p>サンでは、SAPとの長年の協業体制により、多くの実績と経験に裏付けされたサービスやサンの革新的なテクノロジーにより仮想化、統合ID管理、ビジネス・プロセス・マネジメント等、数多くのソリューションをご提供しております。</p><p>こちらでは、お客様の直面する課題に、最適な解決策をWebサイトにてご提案致します。</p><p>『こういう課題を抱えているが、どのソリューションがその解決策になるのか』、『SAPシステムを基盤に新しいサービスを始めたいが、どの様なソリューションを導入すれば実現できるのか』など、お客様がお持ちの疑問・課題を選択頂くと、最適なソリューションをご覧頂けます。まずは、3項目からお客様の状況に最も近い項目をご選択ください。</p>' ;
	}else{
		innerHTML = '<p class="compact2"><b>該当する項目にチェックしてください。チェックをすると、右に関連情報が表示されます。</b></p>' ;
	}

	//メッセージの表示領域のHTMLを変更して描画更新
	message_node.innerHTML = innerHTML ;
}

//////////////////////////////////////////////////
//ウィンドウ表示初期化
//////////////////////////////////////////////////
function sapnavi_main_init(){

	if(navigator.userAgent.indexOf("MSIE") > -1){
	    GB_showFullScreen('sun', 'http://jp.sun.com');
	    GB_hide();
	}

	//現在選択中の大分類IDを「使い方」に初期化する
	category_ID = 'z' ;
	//読み込み中のGIFアニメを表示
	var check_list_node = document.getElementById("categories_list") ;
	var innerHTML = '読み込み中' ;
	check_list_node.innerHTML = innerHTML ;

	//大分類CSVファイルの読み込みと解析
	read_categories_csv_file() ;
}

//////////////////////////////////////////////////
//中分類ラジオボタンリスト作成
//////////////////////////////////////////////////
function createMiddleCategoriesRadioList(){
	//中分類リスト表示領域のnodeを取得
	var check_list_node = document.getElementById("middle_categories_check_list") ;
	//初期化
	var innerHTML = "" ;
	//中分類リストのHTMLテンプレート
	var template = '<p class="compact2"><input type="radio" id="#id#" name="radio" value="#id#" onClick="clicked(this)" />&nbsp;<label for="#id#">#disp_str#</label></p>'

	for(var i=0;i<middle_categories_csv_data.length;i++){
		//テンプレート埋め込みパラメータを設定
		var param = {id:middle_categories_csv_data[i].id,disp_str:middle_categories_csv_data[i].disp_str} ;
		//テンプレート埋め込み関数を実行
		innerHTML += simpleTemplate(template,param) ;
		//中分類ID毎のチェック状態を初期化
		checkedObj[middle_categories_csv_data[i].id] = false ;
	}

	//中分類リスト表示領域のHTMLを変更して描画更新
	check_list_node.innerHTML = innerHTML ;
}

//////////////////////////////////////////////////
//ソリューションページリンクリスト作成
//////////////////////////////////////////////////
function createSolutionNaviLinkList(){
	//リンクリスト表示領域のnodeを取得
	var link_list_node = document.getElementById("solution_navi_link_list") ;
	var innerHTML = "" ;//動的差し替えHTMLを初期化

	for(var i=0;i<middle_categories_csv_data.length;i++){
		//中分類IDを取得
		var middleCategoryId = middle_categories_csv_data[i].id ;
		//チェックされている中分類？
		if(checkedObj[middleCategoryId] == true){
			//中分類の表題を取得
			var middleCategoryDispStr = middle_categories_csv_data[i].disp_str ;
			//属する複数ソリューションIDを取得
			var belongSolutionIdStr = middle_categories_csv_data[i].solution_id ;
			//カンマで分解してソリューションIDを配列に格納する
			var belongSolutionIdArray = belongSolutionIdStr.split(",") ;
			innerHTML += createHTML_FromSolListTemp(middleCategoryDispStr,belongSolutionIdArray) ;
		}
	}

	//リンクリスト表示領域のHTMLを変更して描画更新
	link_list_node.innerHTML = innerHTML ;
}

//////////////////////////////////////////////////
//ソリューションページリンクリスト作成の下請け
//中分類の表題と属するソリューションID配列から、
//1つの中分類についてのソリューションリストを
//テンプレートより作成する
// middleCategoryDispStr : 中分類の表題文字列
// solutionIdArray : 属する複数のソリューションIDが格納されている配列
//////////////////////////////////////////////////
function createHTML_FromSolListTemp(middleCategoryDispStr,solutionIdArray){
	var createdHTML = "" ;//返値HTMLを初期化

	//中分類の表題部分のテンプレート
	var template1 = '<h3 class="jp-portal-title-blue">#middle_category_disp_str#</h3>' ;
	//ソリューションリスト部分のテンプレート
	var template2 = '<p class="jp-portal-item-title"><a href="#url#" onclick="return GB_showFullScreen(\'#disp_str#\',\'#url#\')"><b>#disp_str#</b></a><br />#description#</p>' ;

	var template2NONURL = '<p class="jp-portal-item-title"><b>#disp_str#</b><br />#description#</p>' ;

	//中分類の表題部分のHTMLを作成
	var param = {middle_category_disp_str:middleCategoryDispStr} ;
	createdHTML += simpleTemplate(template1,param) ;//テンプレート埋め込み

	//ソリューションリスト部分のHTMLを作成
	for(var i=0;i<solutionIdArray.length;i++){
		//ソリューションIDを取得
		var solutionId = solutionIdArray[i] ;
		for(var j=0;j<solution_csv_data.length;j++){
			//ソリューションIDが一致？
			if(solution_csv_data[j].id == solutionId){
				var disp_str	= solution_csv_data[j].disp_str ;	//表題
				var url			= solution_csv_data[j].url ;		//URL
				var description = solution_csv_data[j].description ;//説明文
				if(url !=''){
					var param = {disp_str:disp_str,url:url,description:description} ;
					createdHTML += simpleTemplate(template2,param) ;//テンプレート埋め込み
				}else{
					var param = {disp_str:disp_str,description:description} ;
					createdHTML += simpleTemplate(template2NONURL,param) ;//テンプレート埋め込み
				}
			}
		}
	}

	//作成したHTMLを返す
	return createdHTML ;
}

//////////////////////////////////////////////////
//ラジオボタンのOnClickイベントハンドラ
//////////////////////////////////////////////////
function clicked(radio_button){
	for(var i=0;i<middle_categories_csv_data.length;i++){
		//中分類ID毎のチェック状態を初期化
		checkedObj[middle_categories_csv_data[i].id] = false ;
	}

	checkedObj[radio_button.value] = true ;
	//ソリューションリストを再構築
	createSolutionNaviLinkList() ;
}
