/* ================================================== */
/* 社会保険診療報酬支払基金　共通javascript           */
/* common.js                                          */
/* 【注意】必ずjquery-1.4.2.min.js 及び               */
/*         jquery.flatheights.jsの後に実行すること    */
/*                                                    */
/* 来歴---------------------------------------------- */
/* 2010/09/16　新規作成                               */
/*                                                    */
/* ================================================== */

/* 初期処理：特殊環境判定変数定義 */
var inputLocalFlag    = false;				// 特殊環境か否か(boolean)
var inputLocalHeader  = '';					// 特殊環境閲覧時の変数の先頭に付加する文言(char)
var inputLocalDirName = '基金ホームページ';	// ローカル環境閲覧時基準フォルダ名(char)
var inputCheckDirName = 'zdyhbs';			// 確認環境閲覧時基準フォルダ名(char)
var inputIntraDomainName = 'honmu';			// イントラ環境時のドメイン名(char)
var inputIntraDomainDirName = 'ssk';		// イントラ環境時の基準フォルダ名(char)
var inputInvalidityGoogleFlag = false;		// Googleカスタム検索を無効にするか否か(boolean)
var inputSSLHeader    = 'http://www.ssk.or.jp';		// SSLページ表示時のリンク設定用変数(char)

// ブラウザがIEでなければURIをエンコード処理
if(!$.browser.msie){
	inputLocalDirName = encodeURI(inputLocalDirName);
}


/* ローカル環境判定 */
// ローカル環境閲覧時判定
if(window.location.protocol == 'file:'){
	inputLocalFlag = true;
	inputInvalidityGoogleFlag = true;
	var tmpURL        = location.href.split(inputLocalDirName);
	if(tmpURL.length > 1 && inputLocalDirName != ''){
		var tmpSlashValue = tmpURL[1].split('/');
		for(i=1;i<tmpSlashValue.length;i++){
			if(i == 1){
				inputLocalHeader = '.' + inputLocalHeader;
			}else{
				inputLocalHeader = './.' + inputLocalHeader;
			}
		}
	}else{
		alert('ローカル環境閲覧時基準フォルダ名が正しく設定されていません');
	}
}


/* 確認環境判定 */
// 確認環境閲覧時判定
if(location.href.indexOf(inputCheckDirName,0) > -1 && window.location.protocol != 'file:'){

	inputLocalFlag = true;
	var tmpURL        = location.href.split(inputCheckDirName);
	var tmpSlashValue = tmpURL[1].split('/');
	for(i=1;i<tmpSlashValue.length;i++){
		if(i == 1){
			inputLocalHeader = '.' + inputLocalHeader;
		}else{
			inputLocalHeader = './.' + inputLocalHeader;
		}
	}

	inputLocalDirName = inputCheckDirName;

}


/* イントラ環境判定 */
if(window.location.protocol != 'file:'){
	var tmpLocationURL = location.href.split("/");
	if(tmpLocationURL[2] == inputIntraDomainName){
		inputLocalFlag = true;
		inputInvalidityGoogleFlag = true;
		var tmpURL        = location.href.split(inputIntraDomainDirName);
		var tmpSlashValue = tmpURL[1].split('/');
		for(i=1;i<tmpSlashValue.length;i++){
			if(i == 1){
				inputLocalHeader = '.' + inputLocalHeader;
			}else{
				inputLocalHeader = './.' + inputLocalHeader;
			}
		}

		inputLocalDirName = inputIntraDomainName;

	}
}


/* イントラ環境判定 */
var tmpLocationURL = location.href;
if(tmpLocationURL.indexOf("https") > -1){
	inputInvalidityGoogleFlag = true;
}


/* 初期処理：処理変数定義 */
var inputNaviXML            = inputLocalHeader + '/xml/navigation.xml';		// ナビゲーション定義XMLファイルの格納場所(char)
var inputAccessRankingXML   = inputLocalHeader + '/xml/access-ranking.xml';	// アクセスランキング定義XMLファイルの格納場所(char)
var inputNaviID             = '#navi';						// ナビゲーション表示場所(jQuery上)(char)
var inputAccessRankingID    = '#navi_ranking';				// アクセスランキング表示場所(jQuery上)(char)
var inputAccessRankingPlace = 'navi_ranking';				// アクセスランキング表示場所(HTML上)(char)
var tmpImageObj             = '';							// キャッシュ用イメージオブジェクト(object)


/* 初期処理：onload時処理定義 返り値：なし */
$(document).ready(function(){

	/* ナビゲーションXML読込処理 */
	if(!inputLocalFlag){
		// XMLのURLに乱数付加しキャッシュ防止
		var date              = new Date();
		inputNaviXML          = inputNaviXML + '?' + date.getTime();
		inputAccessRankingXML = inputAccessRankingXML + '?' + date.getTime();
	}
	getNaviXML(inputNaviXML,displayNavigation);

	/* Googleカスタム検索有効化処理 */
	if(!inputInvalidityGoogleFlag){
		$("form#cse-search-box p#header_search").after('<script type="text/javascript" src="http://www.google.com/cse/brand?form=cse-search-box&lang=ja"></script>');
	}

});


/* 表示処理：onload時処理終了後に行う表示処理 返り値：なし */
function InitialProcessing(){

	// flatHeights制御
	$('.horizontal-list > li').flatHeights();
	$('.twin-list > li').flatHeights();

	// カレント表示の変数定義
	// 表示フラグ定義
	var tmpGlobalOpenFlag = false;		// グローバルナビカレント表示済み判定フラグ(boolean)
	var tmpLocalOpenFlag  = false;		// ローカルナビカレント表示済み判定フラグ(boolean)
	var tmpSubOpenFlag    = false;		// サブナビカレント表示済み判定フラグ(boolean)

	// 非ローカル環境時
	if(!inputLocalFlag){
		var inputLocationURL      = location.href;					// 現在開いているページのURL(char)
		var tmpLocationCategory   = inputLocationURL.split("/");	// URLを"/"で区切った時の一時格納用配列変数(char)
		var inputLocation2ndCategory = tmpLocationCategory[3];		// 現在開いているページの2階層のカテゴリ or ページ名(char)
		if(tmpLocationCategory.length > 4){
			var inputLocation3rdCategory = tmpLocationCategory[4];	// 現在開いているページの3階層のカテゴリ or ページ名(char)
		}
	// ローカル環境時
	}else{
		var inputLocationURL      = location.href.split(inputLocalDirName);	// 現在開いているページのURL(char)
		var tmpLocationCategory   = inputLocationURL[1].split("/");	// URLを"/"で区切った時の一時格納用配列変数(char)
		var inputLocation2ndCategory = tmpLocationCategory[1];		// 現在開いているページの2階層のカテゴリ or ページ名(char)
		if(tmpLocationCategory.length > 2){
			var inputLocation3rdCategory = tmpLocationCategory[2];	// 現在開いているページの3階層のカテゴリ or ページ名(char)
		}
	}

	// グローバルナビのカレント表示
	if(inputLocation2ndCategory != "" && inputLocation2ndCategory != undefined && inputLocation2ndCategory.indexOf("index.html") < 0){
		$("ul#navi_global li p a.navi_global_switch").each(function(){
			if($(this).attr("id").indexOf(inputLocation2ndCategory,0) >= 0){
				displayToggleGlobalnavi(this,1);
				tmpGlobalOpenFlag = true;
				return;
			}
		});
	}

	// ローカルナビのカレント表示
	if(inputLocation3rdCategory != "" && inputLocation3rdCategory != undefined && inputLocation3rdCategory.indexOf("index.html") < 0){
		$("ul#navi_global ul.navi_global_local li a").each(function(){
			if($(this).attr("href").indexOf(inputLocation3rdCategory,0) >= 0 && !tmpLocalOpenFlag){
				$(this).parent("li").each(function(){
					$(this).attr("class","hilight");
					tmpLocalOpenFlag = true;
					return;
				});
			}
		});
	}

	// サブナビのカレント表示
	if(inputLocation3rdCategory != undefined && inputLocation2ndCategory.indexOf("index.html") < 0){
		$("ul#navi_sub li a").each(function(){
			if($(this).attr("href").indexOf(inputLocation2ndCategory,0) >= 0 && !tmpGlobalOpenFlag && !tmpSubOpenFlag){
				$(this).parent("li").each(function(){
					$(this).attr("class","hilight");
					tmpSubOpenFlag = true;
					return;
				});
			}
		});
	}

	// IE6の画像キャッシュ設定
	if($.browser.msie && $.browser.version == 6) {
		try{
			document.execCommand('BackgroundImageCache', false, true);
		}catch(e){
			
		}
	}

	// 画像のプリロード
	var tmpPreloadImageObj = new Array();	// プリロード用画像データ格納配列変数(object)
	var tmpImageCnt = 0;					// プリロード格納した画像の枚数(int)
	var tmpImageOthername = '';				// プリロードする画像ファイル名一時格納変数(char)
	$("ul#navi_global img").each(function(){
		tmpPreloadImageObj[tmpImageCnt] = new Image();
		tmpPreloadImageObj[tmpImageCnt].src = $(this).attr("src");
		tmpImageCnt++;
		if($(this).attr("src").indexOf("open.png", 0) > -1){
			tmpImageOthername = inputLocalHeader + $(this).attr("src").replace("open.png", "close.png");
			tmpPreloadImageObj[tmpImageCnt] = new Image();
			tmpPreloadImageObj[tmpImageCnt].src = tmpImageOthername;
			tmpImageCnt++;
		}else{
			tmpImageOthername = inputLocalHeader + $(this).attr("src").replace("close.png", "open.png");
			tmpPreloadImageObj[tmpImageCnt] = new Image();
			tmpPreloadImageObj[tmpImageCnt].src = tmpImageOthername;
			tmpImageCnt++;
		}
	});

	// 複数項目テーブルのストライプ表示
	displayRowTableStripe();

	// ローカルナビ押下時
	$("a.navi_global_switch").click(function(){displayToggleGlobalnavi(this,1);});

}


/* 入力処理：ナビゲーション用XMLファイル取得　返り値：なし */
function getNaviXML(getXMLURL,getFunction){
	$.ajax({
		type: "GET",
		url: getXMLURL,
		dataType: "xml",
		error: function(XMLHttpRequest, textStatus, errorThrown){
			try{
				var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
				xmlDoc.async = true;
				xmlDoc.onreadystatechange = function() {
					getFunction(xmlDoc);
				}
				xmlDoc.load(getXMLURL);
			}catch(e){
					//alert("xml load error");
			}
		},
		success: getFunction
	});
}


/* 表示処理:ナビゲーションの表示　返り値：なし */
function displayNavigation(getXMLData){

	// 変数定義
	// 非ローカル環境時
	if(!inputLocalFlag){
		var inputLocationURL      = location.href;					// 現在開いているページのURL(char)
		var tmpLocationCategory   = inputLocationURL.split("/");	// URLを"/"で区切った時の一時格納用配列変数(char)
		var inputLocation2ndCategory = tmpLocationCategory[3];		// 現在開いているページの2階層のカテゴリ or ページ名(char)
		if(tmpLocationCategory.length > 4){
			var inputLocation3rdCategory = tmpLocationCategory[4];	// 現在開いているページの3階層のカテゴリ or ページ名(char)
		}
	// ローカル環境時
	}else{
		var inputLocationURL      = location.href.split(inputLocalDirName);	// 現在開いているページのURL(char)
		var tmpLocationCategory   = inputLocationURL[1].split("/");	// URLを"/"で区切った時の一時格納用配列変数(char)
		var inputLocation2ndCategory = tmpLocationCategory[1];		// 現在開いているページの2階層のカテゴリ or ページ名(char)
		if(tmpLocationCategory.length > 2){
			var inputLocation3rdCategory = tmpLocationCategory[2];	// 現在開いているページの3階層のカテゴリ or ページ名(char)
		}
	}
	var displayGlobalNaviCount = 0;		// グローバルナビ表示数(int)
	var displayLocalNaviCount  = 0;		// ローカルナビ表示数(int)
	var displaySubNaviCount    = 0;		// サブナビ表示数(int)
	var displayUserNaviCount   = 0;		// ユーザー別ナビ表示数(int)
	var tmpTailNodeFlag        = false;	// 現在のノードがXMLの最後尾を示すフラグ(boolean)
	var tmpInsertData          = '';	// データ蓄積用一時変数(char)
	var tmpTopSpecialData      = '';	// トップページ用ボタンリンク表示用一時変数(char)
	var tmpGlobalNaviData      = '';	// グローバルナビ表示用一時変数(char)
	var tmpSubNaviData         = '';	// サブナビ表示用一時変数(char)
	var tmpUserNaviData        = '';	// ユーザー別ナビ表示用一時変数(char)
	var tmpSpecialData         = '';	// ボタンリンク表示用一時変数(char)
	var tmpAccessRankingData   = '';	// アクセスランキング表示用一時変数(char)
	var tmpZoomData            = '';	// ズームサイト表示用一時変数(char)
	var outputInsertData       = '';	// 最終的に出力する表示するデータ(char)
	var tmpSSLFlag             = false;	// 現在のページがSSLか否かを示すフラグ(boolean)

	// 表示領域初期化
	$(inputNaviID).empty();

	// SSL判定
	if(tmpLocationCategory[0].indexOf("https") > -1){
		tmpSSLFlag = true;
	}else if(inputLocalHeader){
		inputSSLHeader = inputLocalHeader;
	}else{
		tmpSSLFlag = false;
		inputSSLHeader ='';
	}

	/* トップページボタンリンク表示処理 */
	if(inputLocation2ndCategory == '' || inputLocation2ndCategory == 'index.html'){
		$(getXMLData).find("top-special").each(function(){
			tmpInsertData = '';
			// ボタンリンクの表示
			tmpInsertData += '<p class="' + $(this).find("class").text() + '"><a href="' + inputSSLHeader + $(this).find("url").text() + '"><img src="' + inputLocalHeader + $(this).find("image").text() + '" alt="' + $(this).find("title").text() + '" width="' + $(this).find("image-width").text() + '" height="' + $(this).find("image-height").text() + '"></a></p>';
			tmpTopSpecialData += tmpInsertData;
		});
	}


	/* グローバルナビゲーション表示処理 */
	$(getXMLData).find("global").each(function(){

		displayLocalNaviCount = 0;
		tmpInsertData         = '';

		// グローバルナビの表示
		tmpInsertData += '<li>';
		tmpInsertData += '<p><img src="' + inputLocalHeader + $(this).find("image").text() + '" alt="' + $(this).find("title").text() + '" width="213" height="36"><a id="' + $(this).find("html-id").text() + '" class="navi_global_switch"><img src="' + inputLocalHeader + '/images/spacer.gif" width="32" height="34" alt="ローカルナビ表示・非表示切り替え"></a><a class="navi_global_index" href="' + inputSSLHeader + $(this).find("url").text() + '"><img src="' + inputLocalHeader + '/images/spacer.gif" width="181" height="34" alt="' + $(this).find("title").text() + '"></a></p>';

		// ローカルナビの表示
		$(this).nextAll().each(function(){
			if($(this).is("local")){
				if(displayLocalNaviCount == 0){
					tmpInsertData += '<ul class="navi_global_local">';
				}

				tmpInsertData += '<li>';
				tmpInsertData += '<a href="' + inputSSLHeader + $(this).find("url").text() + '">' + $(this).find("title").text() + '</a>';
				tmpInsertData += '</li>';
				displayLocalNaviCount++;

				// 現在の<local />がXML上最後尾かチェック
				if($(this).nextAll().length == 0){
					tmpTailNodeFlag = true;
				}

			}else{

				if(displayLocalNaviCount != 0){
					tmpInsertData += '</ul></li>';
				}else{
					tmpInsertData += '</li>';
				}

				return false;
			}
		});

		tmpGlobalNaviData += tmpInsertData;
		displayGlobalNaviCount++;

		// 最後尾のグローバルナビの場合の処理
		if($(getXMLData).find("global").length == displayGlobalNaviCount){
			tmpGlobalNaviData = '<ul id="navi_global">' + tmpGlobalNaviData;

			if(tmpTailNodeFlag){
				if(displayLocalNaviCount != 0){
					tmpGlobalNaviData += '</ul></li>';
				}else{
					tmpGlobalNaviData += '</li>';
				}
			}

			tmpGlobalNaviData += '</ul>';
		}

	});


	/* サブナビゲーション表示処理 */
	$(getXMLData).find("sub").each(function(){

		tmpInsertData = '';

		// サブナビの表示
		tmpInsertData += '<li>';
		tmpInsertData += '<a href="' + inputSSLHeader + $(this).find("url").text() + '">' + $(this).find("title").text() + '</a>';
		tmpInsertData += '</li>';

		tmpSubNaviData += tmpInsertData;
		displaySubNaviCount++;

		// 最後尾のサブナビの場合の処理
		if($(getXMLData).find("sub").length == displaySubNaviCount){
			tmpSubNaviData = '<ul id="navi_sub">' + tmpSubNaviData + '</ul>';
		}

	});


	/* ユーザー別ナビゲーション表示処理 */
	$(getXMLData).find("user").each(function(){

		tmpInsertData = '';

		// ユーザー別ナビの表示
		tmpInsertData += '<li class="' + $(this).find("class").text() + '">';
		tmpInsertData += '<a href="' + inputSSLHeader + $(this).find("url").text() + '">' + $(this).find("title").text() + '</a>';
		tmpInsertData += '</li>';

		tmpUserNaviData += tmpInsertData;
		displayUserNaviCount++;

		// 最後尾のユーザー別ナビの場合の処理
		if($(getXMLData).find("user").length == displayUserNaviCount){
			tmpUserNaviData = '<ul id="navi_user">' + tmpUserNaviData + '</ul>';
		}

	});


	/* ボタンリンク表示処理 */
	$(getXMLData).find("special").each(function(){

		tmpInsertData = '';

		// ボタンリンクの表示
		tmpInsertData += '<p class="' + $(this).find("class").text() + '"><a href="' + inputSSLHeader + $(this).find("url").text() + '"><img src="' + inputLocalHeader + $(this).find("image").text() + '" alt="' + $(this).find("title").text() + '" width="' + $(this).find("image-width").text() + '" height="' + $(this).find("image-height").text() + '"></a></p>';
		tmpSpecialData += tmpInsertData;

	});


	/* アクセスランキング表示エリア定義 */
	tmpAccessRankingData = '<div id="' + inputAccessRankingPlace + '"></div>'


	/* ZoomSight起動ボタン表示処理 */
	$(getXMLData).find("zoomsight").each(function(){

		tmpInsertData = '';

		// ZoomSight起動ボタンの表示
		tmpInsertData += '<p id="navi-zoomsight"><a href="' + inputSSLHeader + $(this).find("url").text() + '"><img src="' + inputLocalHeader + $(this).find("image").text() + '" alt="' + $(this).find("title").text() + '" width="' + $(this).find("image-width").text() + '" height="' + $(this).find("image-height").text() + '"></a><br>音声読み上げ・文字拡大<br><a href="' + inputSSLHeader + $(this).find("url").text()  + '" class="link">使い方を見る</a></p>';
		tmpZoomData += tmpInsertData;

	});


	//データの統合
	if(tmpTopSpecialData == ''){
		outputInsertData = tmpGlobalNaviData + tmpSubNaviData + tmpUserNaviData + tmpSpecialData + tmpAccessRankingData + tmpZoomData;
	}else{
		outputInsertData = tmpTopSpecialData + tmpGlobalNaviData + tmpSubNaviData + tmpAccessRankingData + tmpZoomData;
	}

	// データの出力
	$(inputNaviID).append(outputInsertData);

	// アクセスランキング表示処理開始
	getNaviXML(inputAccessRankingXML,displayAccessRanking);


}


/* 表示処理:アクセスランキングの表示　返り値：なし */
function displayAccessRanking(getXMLData){

	// 変数定義
	var displayMax                = 0;		// アクセスランキングを表示する最大数(int)
	var displayAccessRankingCount = 0;		// アクセスランキング表示数(int)
	var tmpTailNodeFlag           = false;	// 現在のノードがXMLの最後尾を示すフラグ(boolean)
	var tmpInsertData             = '';		// データ蓄積用一時変数(char)
	var outputInsertData          = '';		// 最終的に出力する表示するデータ(char)

	/* 表示設定読込処理 */
	$(getXMLData).find("setting").each(function(){

		displayMax = parseInt($(this).find("display").text());

	});

	// ヘッダ部分定義
	outputInsertData += '<p><img src="' + inputLocalHeader + '/images/common_navi_title_access-ranking.png" alt="アクセスランキング" width="144" height="15"></p>';
	outputInsertData += '<ul>';

	/* アクセスランキング表示処理 */
	$(getXMLData).find("ranking").each(function(){

		displayAccessRankingCount++;

		if(displayAccessRankingCount <= displayMax){
			tmpInsertData += '<li>';
			tmpInsertData += '<span>' + displayAccessRankingCount + '</span><a href="' + inputSSLHeader + $(this).find("url").text() + '">' + $(this).find("title").text() + '</a>'
			tmpInsertData += '</li>';
		}

	});

	//データの統合
	outputInsertData = outputInsertData + tmpInsertData + '</ul>';

	// データの出力
	$(inputAccessRankingID).append(outputInsertData);

	// 初期表示処理開始
	InitialProcessing();

}


/* 表示処理:ローカルナビの開閉　返り値：なし */
function displayToggleGlobalnavi(clickPlace,speed){		// speed の 0 = 一瞬, 1 = fast, 2 = normal, 3 = slow

	// "speed"の値を解釈
	var slideSpeed = "";
	switch (speed){
		case 0:
			slideSpeed = 0;
			break;
		case 1:
			slideSpeed = "fast";
			break;
		case 2:
			slideSpeed = "normal";
			break;
		case 3:
			slideSpeed = "slow";
			break;
	}

	// 全てのローカルナビを閉じる
	$(clickPlace).parent("p").parent("li").siblings("li").children("ul").slideUp(slideSpeed);
	// 開いているボタンの色を変える
	if($("ul#navi_global img[src$='open.png']").length != 0){
		var tmpSrc = $("img[src$='open.png']").attr("src").replace("open.png", "close.png");
		$("ul#navi_global img[src$='open.png']").attr("src", tmpSrc);
	}

	// 押下したボタンの色を変える	
	if($(clickPlace).parent("p").next("ul").css("display") == 'none'){
		$(clickPlace).prev("img").attr("src",inputLocalHeader + "/images/common_" + $(clickPlace).attr("id")+"_open.png");
	}else{
		$(clickPlace).prev("img").attr("src",inputLocalHeader + "/images/common_" + $(clickPlace).attr("id")+"_close.png");
	}

	// ローカルナビを開く
	$(clickPlace).parent("p").next("ul").slideToggle(slideSpeed);

}


/* 表示処理:新着情報マークの表示　返り値：出力するHTMLデータ(char) */
function displayNewIcon(year,month,day){

		// 変数定義
		var inputDispPeriod = 7;				// 新着情報マークを表示する期間（日）(int)
		var inputNowDateObj = new Date();		// アクセスした日のdata型オブジェクト(object)
		var inputPublicDate = new Date(year + '/' + month + '/' + day);	// 新着情報を掲載した日のdata型オブジェクト(object)
		var tmpPublicPeriod = (inputNowDateObj - inputPublicDate) / (1000 * 60 * 60 * 24);	// アクセスした日と掲載した日の差(int)
		var outputDisp      = '';				// 出力するデータ(char)

		// 新着情報マーク表示処理
		if(tmpPublicPeriod <= inputDispPeriod){
			outputDisp = '<img src="' + inputLocalHeader + '/images/contents_icon_new.png" width="29" height="15" class="new" alt="新着">';
		}

		return outputDisp;

}


/* 表示処理:複数項目テーブルのストライプ表示　返り値：なし */
function displayRowTableStripe(){

		// 変数定義
		var tmpTrCount = 0;		// 処理を行った<tr>のカウント(int)

		$("table.list-row").each(function(){
			tmpTrCount = 0;
			$(this).find("tr").each(function(){
				// 0行目（<th>タグの行）は何もしない
				if(tmpTrCount == 0){
					
				// 奇数行目はclassに"odd"を指定
				}else if(tmpTrCount % 2 == 1){
					$(this).addClass("odd");
				
				// 偶数行目はclassに"even"を指定
				}else{
					$(this).addClass("even");
				}
				tmpTrCount++;
			});
		});

}
