//グローバルナビゲーション名前空間割り当て
Ext.namespace("buyersnet.globalnavigation");

/**
 * グローバルナビゲーション操作ユーティリティクラス
 * 
 * グローバルナビゲーションのタブを操作するのに必要なメソッドを提供します
 */
buyersnet.globalnavigation = function(){

    return {

		/**
		 * 初期表示されるタブのID
		 */
		initPrentMenuId : "",

		/**
		 * グローバルナビ-絞込み検索
		 * このファンクションが呼び出されると、グローバルナビに設定されている絞り込み条件がサーバへ送信されます
		 * 
		 * @return false
		 */
		doGlobalNaviSearch : function(){
			// ページ上のボタンをクリックする
			Ext.get("doCurrentPage-GlobalNaviSearch").dom.click();
			return false;
		},

		/**
		 * グローバルナビ-ログアウト処理
		 * このファンクションが呼び出されると、ログアウトボダンの押下と同様の処理が動作します。
		 * 
		 * @return false
		 */
		doLogout : function(){
			// ページ上のボタンをクリックする
			Ext.get("doLogout-GlobalNavigation").dom.click();
			return false;
		},
	
		/**
		 * 親メニュータブに紐付く子メニュータブの表示
		 * 親のメニューに紐付いている子メニュータブを、表示領域に表示します。
		 * その際選択された親メニューはリンクの下線を切り、(imgタグがあれば)イメージを選択済みイメージへ変更し
		 * フォーカスを外します。
		 * 
		 * @param {String} parentTabId 親メニューのタブID名
		 * @return false
		 */
		changeChildTabDisplay : function(parentTabId){
			if (document.getElementById("globalNaviTabPrentMenuArea") == null) {
				//メニューがない場合は処理なし
				return;
			}
			//選択された親メニューのリンク(下線)復活
			var parentAreaANodes = document.getElementById("globalNaviTabPrentMenuArea").getElementsByTagName("a");
			for(i=0;i<parentAreaANodes.length;i++){
				parentAreaANodes[i].setAttribute("style","");
			}
		
			//リンク(下線)切り
			var selectASource = document.getElementById(parentTabId);
			if(selectASource != null){
				selectASource.setAttribute("style","text-decoration:none");
			}
		
			//すべての親メニューのイメージを未選択へ
			var parentAreaImgNodes = document.getElementById("globalNaviTabPrentMenuArea").getElementsByTagName("img");
			for(i=0;i<parentAreaImgNodes.length;i++){
				if(parentAreaImgNodes[i].src.indexOf("_on.gif",0) != -1){
					parentAreaImgNodes[i].src = parentAreaImgNodes[i].src.replace("_on.gif",".gif");
				}
			}
		
			//選択された親メニューのイメージ選択
			var selectImageSorce = document.getElementById(parentTabId+"Img");
			if(selectImageSorce != null){
				document.getElementById(parentTabId+"Img").src = selectImageSorce.src.replace(".gif","_on.gif");
			}
		
		
			//フォーカス外し
			if (document.getElementById(parentTabId) != null) {
				document.getElementById(parentTabId).blur();
			}		
			
			//すべての子メニューの非表示
			var childAreaSpanNodes = document.getElementById("globalNaviTabChildMenuArea").getElementsByTagName("span");
			
			for(i=0;i<childAreaSpanNodes.length;i++){
				childAreaSpanNodes[i].style.display ="none";
			}
		
			//選択された親メニューに関連する子メニューの表示
			if (document.getElementById(parentTabId + "Span") != null) {
				document.getElementById(parentTabId + "Span").style.display = "";
				var selectChildAreaSpanNodes = document.getElementById(parentTabId + "Span").getElementsByTagName("span");
				//孫メニューSpanの中のSpanも表示する
				for(i=0;i<selectChildAreaSpanNodes.length;i++){
					selectChildAreaSpanNodes[i].style.display = "";
				}
			}
		
		},

		/**
		 * Buyerグローバルナビでの絞込みボタン押下時の処理 
		 * DOMツリーより値をコピーしてからSubmitします。
		 * @param {String} parentTabId 親タブのID
		 */
		onBuyerGNaviClick : function(){
			
			var buyerGNaviCondtion = Ext.get("buyerGNaviCondtion");

			if(buyerGNaviCondtion != null){
				buyerGNaviCondtion.dom.value = Ext.get("buyerGNaviCondtionNative").dom.value;
			}

			var options =  Ext.get("buyerGNaviCondtionTypeNative").query("option");
			for (var i = 0; i < options.length; i ++) {
				if(options[i].selected == true){
					var buyerGNaviCondtionType = Ext.get("buyerGNaviCondtionType");
					if(buyerGNaviCondtionType != null){
						buyerGNaviCondtionType.dom.value = options[i].value;
					}								
				}
			}

			Ext.get("doCurrentPage-BuyerGNaviCondtion").dom.click();
			return false;
		},
		
		/**
		 * 親タブの初期選択状態を設定します。
		 * windows.onloadのタイミングで、親タブが選択された状態にします
		 * 
		 * @param {String} parentTabId 親タブのID
		 */
		initTabOnLoad : function(){
			
			if(buyersnet.globalnavigation.initPrentMenuId != ""){
				//すべての親メニューのイメージを未選択へ
				var parentAreaImgNodes = document.getElementById("globalNaviTabPrentMenuArea").getElementsByTagName("img");
				for(i=0;i<parentAreaImgNodes.length;i++){
					if(parentAreaImgNodes[i].src.indexOf(".gif",0) != -1){
						imgtmp = new Image();
						imgtmp.src = parentAreaImgNodes[i].src.replace(".gif","_on.gif");
					}
				}
				buyersnet.globalnavigation.changeChildTabDisplay(buyersnet.globalnavigation.initPrentMenuId);
			}
			
		},
		
		/**
		 * Buyerグローバルナビの値受け渡し用のメソッド
		 * 
		 * @param {String} parentTabId 親タブのID
		 */
		initBuyerGNaviElements : function(){
			var buyerGNaviCondtion = Ext.get("buyerGNaviCondtion");
			if(buyerGNaviCondtion != null && buyerGNaviCondtion.dom.value != ""){
				Ext.get("buyerGNaviCondtionNative").dom.value = buyerGNaviCondtion.dom.value;
			}
			

			var buyerGNaviCondtionType = Ext.get("buyerGNaviCondtionType");
			if(buyerGNaviCondtionType != null && buyerGNaviCondtionType.dom.value != ""){
				var buyerGNaviCondtionTypeNative = Ext.get("buyerGNaviCondtionTypeNative");
				var options =  buyerGNaviCondtionTypeNative.query("option");
				for (var i = 0; i < options.length; i ++) {
					if(options[i].value == buyerGNaviCondtionType.dom.value){
						options[i].selected = true;
					}else{
						options[i].selected = false;
					}
				}
			}
		},

		/**
		 * 左カラム(GlobalNavigationProductTop)のランキングリストボックス
		 * 変更時、対応するランキングコードの値を渡し、
		 * ランキング取得ボタンを押下する
		 * 
		 * @param {String} rankCode ランキングコード
		 */
		changeRank : function(rankCode){
			document.getElementById("rankCode").value = rankCode;
			document.getElementById("rankingCode").value = rankCode;
			document.getElementById("doRank").click();
		},
		
        loadImage : function(){                        
		
			return false;
		}
	};
}();

Ext.onReady(buyersnet.globalnavigation.initTabOnLoad);
Ext.onReady(buyersnet.globalnavigation.initBuyerGNaviElements);
