/** ------------------------------------------------------ */
/** FAQ SYSTEM COMMON JavaScript                           */
/** ------------------------------------------------------ */

/**
 * ■エレメント(オブジェクト)をIDで取得します。
 * @param id エレメント(オブジェクト)ID
 * @return エレメント(オブジェクト)
 */
function jsComGetElementById(id){
	return document.getElementById(id);
}

/**
 * ■ウインドウを開きフォーカスを与える
 */
function jsComOpenWinFocus( vUrl, vWinName ) {
	vWinName = jsComReplace(vWinName, "-", "_");
	vWinName = jsComReplace(vWinName, "/", "_");
	var win = window.open( vUrl, vWinName );
	win.focus();
}

/**
 * ■置換
 */
function jsComReplace( vValue, vBefore, vAfter ){
	var vTemp = vValue;
	vTemp = vTemp.split(vBefore);
	vTemp = vTemp.join(vAfter);
	return vTemp;
}

/**
 * ■ウインドウを閉じる。(標準)
 */
function jsComWindowClose(){
    window.close();
}

/**
 * ■ウインドウを閉じる。(強制：アラートなし)
 */
function jsComWindowCloseForce(){
    var window_opener = window.opener;
    if ( window_opener == null || window_opener.closed == true ) {
        window.opener = window;
    }
    window.close();
}

/**
 * ■フレーム親ウインドウを閉じる。(標準)
 */
function jsComPWindowClose(){
    window.parent.close();
}

/**
 * ■フレーム親ウインドウを閉じる。(強制：アラートなし)
 */
function jsComPWindowCloseForce(){
    var window_opener = window.parent.opener;
    if ( window_opener == null || window_opener.closed == true ) {
        window.parent.opener = window;
    }
    window.parent.close();
}

/**
 * ■印刷ダイアログを表示する。
 */
function jsComPrint() {
    window.print();
}

/**
 * ■オブジェクトのスタイル設定（display）
 * @param obj オブジェクト
 * @param dispmode true=表示 / false=非表示
 */
function jsComSetStyleDispById(id,dispmode){
	var obj = jsComGetElementById(id);
	if( obj != null ){
		if( dispmode ){
			jsComSetStyleDisp(obj,"block");
		} else {
			jsComSetStyleDisp(obj,"none");
		}
	}
}

/**
 * ■オブジェクトのスタイル設定（display）
 * @param obj オブジェクト
 * @param display 設定値："block" または "none"
 */
function jsComSetStyleDisp(obj,display){
	if( obj != null ){
		obj.style.display = display;
	}
}

/**
 * ■オブジェクトのスタイル設定（display）設定値の反対を返します。
 * @return 設定値："block" または "none"
 */
function jsComGetStyleDispNext(obj){
	if( obj != null ){
		if( obj.style.display == "none" ){
			return "block";
		} else {
			return "none";
		}
	}
}

/**
 * ■オブジェクトのスタイル取得（display）
 * @param obj オブジェクト
 * @return display 設定値："block" または "" または "none"
 */
function jsComGetStyleDisp(obj){
	var display = "";
	if( obj != null ){
		display = obj.style.display;
	}
	return display;
}

/**
 * ■オブジェクトのスタイル取得（display）
 * @param id オブジェクトID
 * @return display 設定値："block" または "" または "none"
 */
function jsComGetStyleDispById(id){
	var obj = jsComGetElementById(id);
	return jsComGetStyleDisp(obj);
}

/**
 * ■Enterキー が押された場合は true を返す。
 * Shiftキーが押されてる場合は false を返す。
 * ex:jsIsEnter(event);"
 * @param event
 */
function jsComIsEnter(event){
    if ( event.type == 'keydown' && event.keyCode ) {
        if ( event.keyCode == '13') {
            if ( ! event.shiftKey ) {
                return true;
            } else {
                return false;
            }
        }
    }
    return false;
}

/**
 * ■オブジェクトの画像設定（src）
 * @param obj オブジェクト
 * @param value 画像
 */
function jsComSetImgSrc(obj,value){
	if( obj != null ){
		obj.src = value;
	}
}
/**
 * ■オブジェクトの画像設定（src）
 * @param id オブジェクトID
 * @param value 画像
 */
function jsComSetImgSrcById(id,value){
	jsComSetImgSrc(jsComGetElementById(id),value);
}

/**
 * ■オブジェクトのClass設定
 * @param obj オブジェクト
 * @param value クラス名
 */
function jsComSetClass(obj,value){
	if( obj != null ){
		obj.className = value;
	}
}
/**
 * ■オブジェクトのClass設定
 * @param id オブジェクトID
 * @param value クラス名
 */
function jsComSetClassById(id,value){
	jsComSetClass(jsComGetElementById(id),value);
}

/**
 * ■カンマ区切りフォーマット
 * @param x 数値文字列
 */
function jsComFormatNumber(x) {
	if( x == null || x.length == 0 ) {
		return x;
	}
    var s = "" + x; // 確実に文字列型に変換する。
    var p = s.indexOf(".");
    if (p < 0) { // 小数点が見つからなかった時
        p = s.length; // 仮想的な小数点の位置とする
    }
    var r = s.substring(p, s.length); // 小数点の桁と小数点より右側の文字列。
    for (var i = 0; i < p; i++) { // (10 ^ i) の位について
        var c = s.substring(p - 1 - i, p - 1 - i + 1); // (10 ^ i) の位のひとつの桁の数字。例では "4", "3", "7", "5", "8", "2", "9", "3", "8", "5", "9" の順になる。
        if (c < "0" || c > "9") { // 数字以外のもの(符合など)が見つかった
            r = s.substring(0, p - i) + r; // 残りを全部付加する
            break;
        }
        if (i > 0 && i % 3 == 0) { // 3 桁ごと、ただし初回は除く
            r = "," + r; // カンマを付加する
        }
        r = c + r; // 数字を一桁追加する。
    }
    return r;
}

/**
 * ■入力エリア用アシスト文字列制御（汎用）
 * @param id オブジェクトID
 * @param assistvalue アシスト文字列
 * @param color_normal 通常文字色
 * @param color_info アシスト文字色
 * @note jsSetInputAssistFunction("idText","質問文を入力してください", "#000000", "#bbbbbb" );
 */
function jsComSetInputAssistFunction( id, assistvalue, color_normal, color_info ){
	var obj = document.getElementById(id);
	
	if( obj != null ){
		if( obj.value == null || obj.value == "" || obj.value == assistvalue ) {
			obj.style.color = color_info;
			obj.value = assistvalue;
		} else {
			obj.style.color = color_normal;
		}
		obj.onfocus = function () {
			if( this.value != null && this.value == assistvalue ){
				this.value = "";
			}
			obj.style.color = color_normal;
		};
		obj.onmousedown = function () {
			if( this.value != null && this.value == assistvalue ){
				this.value = "";
			}
			obj.style.color = color_normal;
		};
		obj.onblur = function () {
			if( this.value == null || this.value == "" ){
				obj.style.color = color_info;
				obj.value = assistvalue;
			}
		};
		
		obj.ondrop = function () {
			if (obj.style.color == color_info) {
				obj.style.color = color_normal;
				obj.value = "";
			}
		}
	}
}

/**
 * ■文字列一致検索用：語句数取得
 * @param value 検索文
 * @return 区切り文字で分けられた語句数を返す。
 */
function jsComGetWordsCount(value){
	var count = -1;
	
	//CHECK
	if( value==null || value.length==0 ){
		return count;
	}
	
	//全角スペース・半角スペース
	var wordsArray = value.split(/[　| ]/);
	if( wordsArray != null && wordsArray.length > 0 ){
		count = wordsArray.length;
	}
	return count;
}

/** ------------------------------------------------------ */
/** For Document                                           */
/** ------------------------------------------------------ */

/** ■検索文にフォーカス */
function jsComQueryFocus(){
	var obj1 = document.getElementById("idQUERY");
	if ( obj1 != null ) {
		obj1.select();
		obj1.focus();
	}
}

/** ■ＱＵＥＲＹ取得 */
function jsComGetQUERYValue(){
	var vQUERY = "";
	var obj1 = document.getElementById("idQUERY");
	if ( obj1 != null ) {
		vQUERY = obj1.value;
		if( vQUERY == INPUT_ASSIST_SEARCH0 || vQUERY == INPUT_ASSIST_SEARCH1 ) {
			vQUERY = "";
		}
	}
	return vQUERY;
}

/** ■ＰＲＯＤＵＣＴ取得 */
function jsComGetPRODValue(){
	var vPROD2 = "";
	var vPROD3 = "";
	var vPROD  = "";
	
	var obj1 = document.getElementById("idPROD2");
	if ( obj1 != null ) {
		vPROD2 = obj1.value;
	}
	var obj2 = document.getElementById("idPROD3");
	if ( obj2 != null ) {
		vPROD3 = obj2.value;
	}
	if( vPROD3 != "" && vPROD3 != "0" ){
		vPROD = vPROD3;
	} else if( vPROD2 != "" && vPROD2 != "0" ){
		vPROD = vPROD2;
	}
    return vPROD;
}

/** ■ＯＳ取得 */
function jsComGetOSValue(){
	var vOS = "";
	var obj1 = document.getElementById("idOS");
	if ( obj1 != null ) {
		vOS = obj1.value;
	}
	
	if( vOS == "0" || vOS == "" ){
		var obj2 = document.getElementById("idAFTERXP");
		if ( obj2 != null ) {
			var vcOS = obj2.checked;
			if( vcOS == true || vcOS == "on" ){
				vOS = "001";
			}
		}
	}
	return vOS;
}

/** ■ＩＳＣＯＮＣＥＰＴ取得 */
function jsComGetIsConcept(){
	var vIsConcept = "0";
	var obj1 = document.getElementById("idIsConcept1");
	if ( obj1 != null ) {
	    if ( obj1.checked ) {
	        vIsConcept = "1"; 
	    } else {
	        vIsConcept = "0"; //完全一致
	    }
	}
	return vIsConcept;
}

/** ■ＤＩＳＰ取得 */
function jsComGetDISPValue(){
	var vDISP = "10";
	var obj1 = document.getElementById("idDISP");
	if ( obj1 != null ) {
		vDISP = obj1.value;
	}
	return vDISP;
}

/** ■ＰＲＯＤＵＣＴ変更＋送信 */
function jsComProdChange(prodValue){
	var frm = document.getElementById("frmSubmit");
	if( frm != null ) {
		frm.START.value  = "0";
		frm.PGD.value  = "";
		frm.QUERY.value = jsComGetQUERYValue();
		frm.MAIN.value = "";
		frm.PROD.value = prodValue;
		frm.OS.value   = jsComGetOSValue();
		frm.DISP.value = jsComGetDISPValue();
		frm.ISCONCEPT.value = jsComGetIsConcept();
		frm.ISSEARCH.value = "0";
		frm.ISOPTOPEN.value = jsComIsOptionAreaOpen();
		frm.submit();
	}
}

/** ■ＯＳ変更（WindowsXP以降チェックボックス） */
function jsComAfterXPChange(aftXPChecked){
	if(aftXPChecked){
		document.getElementById("idOS").selectedIndex = 0;
	}
}

/** ■ＯＳ変更 */
function jsComOsChange(osValue){
	if( osValue != null && osValue.length >= 6 ) {
		document.getElementById("idAFTERXP").checked = false;
	}
}

/** ■Enterキーの場合は質問文で探す */
function jsComEnterToSearchQuery( event ) {
    if ( jsComIsEnter(event) ) {
        jsSearchQuery();
        return false;
    }
}

/** ■概要表示＋送信 */
function jsComOutline( value ) {
	var frm = document.getElementById("frmSubmit");
	if( frm != null ) {
		frm.OUTLINE.value = value;
		frm.ISSEARCH.value = "2";
		frm.submit();
	}
}

/** ■ソート＋送信 */
function jsComSort( key, order ) {
	var frm = document.getElementById("frmSubmit");
	if( frm != null ) {
		frm.START.value = 0;
		frm.ISSEARCH.value = "2";
		frm.SKEY.value = key;
		frm.ODR.value = order;
		frm.submit();
	}
}

/** ■ページ送り＋送信 */
function jsComPageSend( value ) {
	var frm = document.getElementById("frmSubmit");
	if( frm != null ) {
		frm.START.value = value;
		frm.ISSEARCH.value = "2";
		frm.submit();
	}
}

/** ■オプションエリアの表示状態取得(boolean) */
function jsComIsOptionAreaOpen(){
	var varIsOptionAreaOpen = false;
	var varDispStr = jsComGetStyleDispById("idOptionArea");
	if( varDispStr != null && varDispStr == "none" ){
		varIsOptionAreaOpen = false;
	} else {
		varIsOptionAreaOpen = true;
	}
	return varIsOptionAreaOpen;
}

/**
 * ■文字列一致検索用：語句数チェック
 * 完全一致の場合、入力された語句数をチェックします。
 * @return 語句数が６以上の場合はアラートを表示し false を返します。(コントロールフォーカス処理有り)
 *         完全一致でない場合や語句数が５未満の場合は true を返します。
 */
function jsComWordsCheck(){
	var vIsConcept = jsComGetIsConcept(); //0:完全一致
	if( vIsConcept != null && vIsConcept == "1" ){
		return true;
	}
	var vQuery = jsComGetQUERYValue();
	var count = jsComGetWordsCount(vQuery);
	
	
	//CHECK
	if( count > 5 ){
		var vMsg = "キーワードに 6 個以上の語句は指定できません。(指定数：" + count + "個）\n"
		vMsg += "5 個以下で指定してください。"
		alert(vMsg);
		var obj1 = document.getElementById("idQUERY");
		if ( obj1 != null ) {
			obj1.focus();
		}
		return false;
	}
	
	return true;
}




/** ■文字サイズ変更 */
function jsComFontSizeChange(mode){
 	var objCssLink = document.getElementById("idCssFaqFont");
 	if( objCssLink != null ){
		if( mode == 1 ){
			document.getElementById("idFontSz1img").src = "/qasearch/1007/doc/img/bt_small_on.gif";
			document.getElementById("idFontSz2img").src = "/qasearch/1007/doc/img/bt_medium_off.gif";
			document.getElementById("idFontSz3img").src = "/qasearch/1007/doc/img/bt_large_off.gif";
			objCssLink.href = "/qasearch/1007/doc/css/faq_font_1.css";
		} else if(mode==2){
			document.getElementById("idFontSz1img").src = "/qasearch/1007/doc/img/bt_small_off.gif";
			document.getElementById("idFontSz2img").src = "/qasearch/1007/doc/img/bt_medium_on.gif";
			document.getElementById("idFontSz3img").src = "/qasearch/1007/doc/img/bt_large_off.gif";
			objCssLink.href = "/qasearch/1007/doc/css/faq_font_2.css";
		} else if(mode==3){
			document.getElementById("idFontSz1img").src = "/qasearch/1007/doc/img/bt_small_off.gif";
			document.getElementById("idFontSz2img").src = "/qasearch/1007/doc/img/bt_medium_off.gif";
			document.getElementById("idFontSz3img").src = "/qasearch/1007/doc/img/bt_large_on.gif";
			objCssLink.href = "/qasearch/1007/doc/css/faq_font_3.css";
		}
	}
}

var INPUT_ASSIST_SEARCH0   = "パソコン　ウイルス　1234（情報番号）などの単語を入力し、検索ボタンを押してください。　 　　 　　 　";
var INPUT_ASSIST_SEARCH1   = "質問したい内容を文章または単語で入力し、検索ボタンを押してください。　 　　 　　 　";
var INPUT_ASSIST_ENQUETE  = "ご意見ご要望がありましたらこの枠内にご記入いただき「送信する」ボタンをクリックしてください。　 　　 　　 　";

/**
 * ■検索文エリア用入力アシスト文字列取得
 * 完全一致/あいまいの状態を判断して返します。
 */
function jsComGetQueryAssistValueByIsConcept(){
	var obj = document.getElementById('idIsConcept0');
	if( obj != null ){
		if( obj.checked == true ){
			return INPUT_ASSIST_SEARCH0;
		} else {
			return INPUT_ASSIST_SEARCH1;
		}
	} else {
		return INPUT_ASSIST_SEARCH0;
	}
	return INPUT_ASSIST_SEARCH0;
}

/**
 * ■検索文エリア用入力アシスト文字列か否かを返す。
 * trim（半角スペース/全角スペース）対応版
 */
function jsComIsAssistSearchValue(value){
	if( value != null ){
		if( value == INPUT_ASSIST_SEARCH0 || value == INPUT_ASSIST_SEARCH1 ){
			return true;
		}
	}
	return false;
}

/**
 * ■入力エリア用アシスト文字列制御（検索文エリア専用）
 * @param color_normal 通常文字色
 * @param color_info アシスト文字色
 */
function jsComSetInputAssistFunctionForQueryArea( color_normal, color_info ){
	var obj = document.getElementById("idQUERY");
	var assistvalue = jsComGetQueryAssistValueByIsConcept();
	
	if( obj != null ){
		if( obj.value == null || obj.value == "" || jsComIsAssistSearchValue(obj.value) ) {
			obj.style.color = color_info;
			obj.value = assistvalue;
		} else {
			obj.style.color = color_normal;
		}
		
		obj.onfocus = function () {
			if( this.value != null && jsComIsAssistSearchValue(obj.value) ){
				this.value = "";
			}
			obj.style.color = color_normal;
		};
		
		obj.onmousedown = function () {
			if( this.value != null && jsComIsAssistSearchValue(obj.value) ){
				this.value = "";
			}
			obj.style.color = color_normal;
		};
		
		obj.onblur = function () {
			if( this.value == null || this.value == "" ){
				obj.style.color = color_info;
				obj.value = assistvalue;
			}
		};
		
		obj.ondrop = function () {
			if (obj.style.color == color_info) {
				obj.style.color = color_normal;
				obj.value = "";
			}
		}
		
	}
}



/* ボタンとテキスト差し換え */
var imgOpen     = "/qasearch/1007/doc/img/btn_option_open_";
var imgClose    = "/qasearch/1007/doc/img/btn_option_close_";

var imgColB      = "blue"
var imgColO      = "orange"

var imgNomal        = "_n.gif"
var imgHover        = "_h.gif"

var capOpen         = "検索オプションを表示";
var capClose        = "検索オプションを非表示";

/* ImageSwap */
function srchOptChger(imgID,capID,tgtID){
	var imgOBJ = document.getElementById(imgID);
	var capOBJ = document.getElementById(capID);
	var tgtOBJ = document.getElementById(tgtID);
	var nextdisp = jsComGetStyleDispNext(tgtOBJ);
	var imgStr = document.getElementById(imgID).getAttribute('src');
	
	if( imgOBJ != null && capOBJ != null && tgtOBJ != null ){
		tgtOBJ.style.display = nextdisp;
		if( nextdisp == "none" ){
			if( imgStr.match(imgColB) ){
				imgOBJ.src = imgOpen + imgColB + imgNomal;
			}else{
				imgOBJ.src = imgOpen + imgColO + imgNomal;
			}
			imgOBJ.alt = "検索オプションを表示";
			capOBJ.innerText = "検索オプションを表示";
		}else{
			if( imgStr.match(imgColB) ){
				imgOBJ.src = imgClose + imgColB + imgNomal;
			}else{
				imgOBJ.src = imgClose + imgColO + imgNomal;
			}
			imgOBJ.alt = "検索オプションを非表示";
			capOBJ.innerText = "検索オプションを非表示";
		}
	}
}

/* RollOver */
function srchOptbtnSwpOn(imgID,tgtID){
	var imgOBJ = document.getElementById(imgID);
	var tgtOBJ = document.getElementById(tgtID);
	var opDisp = tgtOBJ.style.display;
	var imgStr = document.getElementById(imgID).getAttribute('src');

	if( tgtOBJ != null ){
		if( opDisp == "none" ){
				if( imgStr.match(imgColB) ){
					imgOBJ.src = imgOpen + imgColB + imgHover;
				}else{
					imgOBJ.src = imgOpen + imgColO + imgHover;
				}
		}else{
				if( imgStr.match(imgColB) ){
					imgOBJ.src = imgClose + imgColB + imgHover;
				}else{
					imgOBJ.src = imgClose + imgColO + imgHover;
				}
		}
	}
}


function srchOptbtnSwpOff(imgID,tgtID){
	var imgOBJ = document.getElementById(imgID);
	var tgtOBJ = document.getElementById(tgtID);
	var opDisp = tgtOBJ.style.display;
	var imgStr = document.getElementById(imgID).getAttribute('src');

	if( tgtOBJ != null ){
		if( opDisp == "none" ){
				if( imgStr.match(imgColB) ){
					imgOBJ.src = imgOpen + imgColB + imgNomal;
				}else{
					imgOBJ.src = imgOpen + imgColO + imgNomal;
				}
		}else{
				if( imgStr.match(imgColB) ){
					imgOBJ.src = imgClose + imgColB + imgNomal;
				}else{
					imgOBJ.src = imgClose + imgColO + imgNomal;
				}
		}
	}
}

