/******************************************************************************
 *   *********  ****      *****    | @author    T&S
 *      **      *  **    *     *   | @filetype  Javascript
 *      **      * **     **        | @name      JsUtility.js
 *      **      **         ***     | @date      2011/1/13
 *      **     ** *  **      ***   | @copyright (c)T&S
 *      **     *   ***   *     *   | ------------------------------------------
 *      **     *    **   **    *   | Javascript共通関数
 *      **      **** *    *****    |
 ******************************************************************************/
//-------------------------------------------------------------
// BASE
//-------------------------------------------------------------
/**
 * [description]
 * trim関数を実装。Stringクラスのprototypeに追加
 */
String.prototype.trim = function() {
    //return this.replace(/^[ ]+|[ ]+|(\r)+|(\n)*(\t)*$/g, '');
	return this.replace(/^\s+|\s+$/g, "");
}

/**
 * [description]
 * 全角を半角に、半角を全角にする関数
 */
// 変換文字の定義
half = "0123456789";
half += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
half += "abcdefghijklmnopqrstuvwxyz";
half += "-+_@., ";
half += "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョー";
halfArr = new Array("ヴ","ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ");

full = "０１２３４５６７８９";
full += "ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ";
full += "ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ";
full += "－＋＿＠．，　";
full += "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｯｬｭｮｰ";
fullArr = new Array("ｳﾞ","ｶﾞ","ｷﾞ","ｸﾞ","ｹﾞ","ｺﾞ","ｻﾞ","ｼﾞ","ｽﾞ","ｾﾞ","ｿﾞ","ﾀﾞ","ﾁﾞ","ﾂﾞ","ﾃﾞ","ﾄﾞ","ﾊﾞ","ﾋﾞ","ﾌﾞ","ﾍﾞ","ﾎﾞ","ﾊﾟ","ﾋﾟ","ﾌﾟ","ﾍﾟ","ﾎﾟ");

/**
 * [description]
 * 全角を半角に変換
 */
 function chgMessHalf(str){
	resultStr = "";
	//半角カナ用
	for(i=0; i<halfArr.length; i++){
		reg = new RegExp(fullArr[i],"g");
		str = str.replace(reg, halfArr[i]);
	}

	for(i=0; i<str.length; i++){
		oneStr = str.charAt(i);
		num = full.indexOf(oneStr,0);
		oneStr = num >= 0 ? half.charAt(num) : oneStr;
		resultStr += oneStr;
	}

	return resultStr;
}

/**
 * [description]
 * 半角を全角に変換
 */
function chgMessFull(str){
	resultStr = "";
	//半角カナ用
	for(i=0; i<fullArr.length; i++){
		reg = new RegExp(halfArr[i],"g");
		str = str.replace(reg, fullArr[i]);
	}

	for(i=0; i<str.length; i++){
		oneStr = str.charAt(i);
		num = half.indexOf(oneStr,0);
		oneStr = num >= 0 ? full.charAt(num) : oneStr;
		resultStr += oneStr;
	}

	return resultStr;
}
/**
 * [description]
 * 疑似スリープ処理
 * @name sleep_busy
 * @param wait スリープ時間（ミリ秒）
 */
function sleep_busy(wait) {
	var start = (new Date()).getTime();
	while (true) {
		if ((new Date()).getTime() >= start + wait * 1) break;
	}
}
/**
 * [description]
 * scriptタグを生成し、headタグ内に追加する（ファイル指定）
 * @name setScriptDOM
 * @param file 呼び出すjavascriptファイル名
 */
function setScriptDOM(file)
{
	// scriptタグを出力する
	var script_object = DOC.createElement("script");
	// src Attributeを追加
	script_object.setAttribute('src',file);
	// type Attributeを追加
	script_object.setAttribute('type',"text/javascript");
	// headオブジェクトを取得
	var head_object = DOC.getElementsByTagName("head")[0];
	// head内に子要素としてscriptタグを追加する
	head_object.appendChild(script_object);
}
/* [関数名] getInputLength
* [機　能] 入力文字数をリアルタイム表示
* [説　明] 半角も全角も1文字としてカウント。改行はノーカウント。
* [引　数]
* @param frm フォームオブジェクト
* @param str 文字列
* [返り値] なし
*/
function getInputLengthToForm(frm,str){
   var len=str.length; /* 入力された文字列の長さ */
   var cnt=x=y=0;
   for(i=0; ;cnt++){
       /* 改行のがいくつあるカウント */
       x=str.indexOf("\n",y);
        if(x==-1) break;
        y=x+2;
   }
   /* 改行はカウントせず、文字数のみ表示 */
   document.getElementById.value = len-(cnt*2);
}
/* [関数名] getInputLength
* [機　能] 入力文字数をリアルタイム表示
* [説　明] 半角も全角も1文字としてカウント。改行はノーカウント。
* [引　数]
* @param frm フォームオブジェクト
* @param str 文字列
* [返り値] なし
*/
function getInputLengthToHtml(id,str){
   var len=str.length; /* 入力された文字列の長さ */
   var cnt=x=y=0;
   for(i=0; ;cnt++){
       /* 改行のがいくつあるカウント */
       x=str.indexOf("\n",y);
        if(x==-1) break;
        y=x+2;
   }
   /* 改行はカウントせず、文字数のみ表示 */
   document.getElementById(id).value = len-(cnt*2);
}

/* [関数名] addBookmark
* [機　能] お気に入り登録処理
* [引　数] タイトルと登録URL
*/
function addBookmark(title,url) {
	if (window.sidebar) {
		window.sidebar.addPanel(title, url,"");
	} else if( document.all ) {
		window.external.AddFavorite( url, title);
	} else if( window.opera && window.print ) {
		return true;
	}
}
/**
 * [description]
 * 連想配列の数を取得する（Array型でも可能）
 * @name getArrayCount
 * @param array 連想配列
 */
function getArrayCount(array)
{
	var i = 0;
	for(var j in array)
	{
		i++;
	}
	return i;
}


//-------------------------------------------------------------
// AJAX
//-------------------------------------------------------------
/**
 * [description]
 * jQueryの$.ajaxを使用してAJAX通信を行う
 * @name useAjaxByjQuery
 * @param sync true or false 同期/非同期
 * @param url APIへのURL
 * @param method GET/POST
 * @param datatype xml/json
 * @param data APIに引き渡したい値
 * @param timeout タイムアウト値
 * @param success 成功時のコールバック関数
 * @param error 失敗時のコールバック関数
 * @param complete 完了時のコールバック関数
 */
function useAjaxByjQuery(sync,url,method,datatype,data,timeout,success,error,complete)
{
	var array = new Array();
	// async
	if(sync == ""){
		array["async"] = false;
	}else{
		array["async"] = sync;
	}
	// url
	if(url == ""){
		jAlert("パラメータの値が不正です(ERRPUR)","Ajaxエラー");
		return false;
	}else{
		array["url"] = url;
	}
	// method
	if(method == ""){
		array["method"] = "GET";
	}else{
		array["method"] = method;
	}
	// dataType
	if(datatype == ""){
		jAlert("パラメータの値が不正です(ERRPDA)","Ajaxエラー");
		return false;
	}else{
		array["dataType"] = datatype;
	}
	// data
	if(data != ""){
		array["data"] = data;
	}
	// timeout
	if(timeout != ""){
		array["timeout"] = AJAX_TIMEOUT_MSECOND;
	}else{
		array["timeout"] = timeout;
	}
	// success
	if(success != ""){
		array["success"] = success;
	}
	// error
	if(error != ""){
		array["error"] = error;
	}
	// complete
	if(complete != ""){
		array["complete"] = complete;
	}
	// AJAX通信実行
	var responseData = $.ajax(array);

	// データの返却
	return responseData;
}

//-------------------------------------------------------------
// WINDOW
//-------------------------------------------------------------
/**
 * [description]
 * 別ウィンドウをオープンする
 */
function openwin(url)
{
	window.open(url);
	return;
}
/**
 * [description]
 * ウィンドウをポップアップ表示する
 * @name PopupWindow
 * @param pUrl ページURL
 */
function PopupWindow(pUrl) {
	var mWinName = 'myPop';
	var mOption = 'width=1000, height=1000, location=no, menubar=no, toolbar=no, scrollbars=yes, resizable=yes';
	window.open(pUrl, mWinName, mOption);
}
/**
 * [description]
 * ウィンドウサイズを取得する
 */
function getWindowClientSize()
{
	// 結果を初期化
	var result={"width":0,"height":0};

	// ブラウザによって取得の仕方が異なるため判別処理を施し
	// 処理を切り替える
	if(window.self && self.innerWidth)
	{
		result.width=self.innerWidth;
		result.height=self.innerHeight;
	}
	else if(DOC.documentElement && DOC.documentElement.clientHeight)
	{
		result.width=DOC.documentElement.clientWidth;
		result.height=DOC.documentElement.clientHeight;
	}
	else
	{
		result.width=DOC.body.clientWidth;
		result.height=DOC.body.clientHeight;
	}
	return result;
}
//-------------------------------------------------------------
// CONTENT
//-------------------------------------------------------------
/**
 * [description]
 * 指定IDにコンテンツを格納する
 * @name innerHtmlContent
 * @param id
 * @param content
 */
function innerHtmlContent(id,content)
{
	DOC.getElementById.innerHTML = content;
}
/**
 * [description]
 * オブジェクトの左位置を取得
 * @name getLeft
 * @param oj 対象オブジェクト
 */
function getLeft(oj){
    var px = 0;
    while(oj){
        px += oj.offsetLeft;
        oj = oj.offsetParent;
    }
    return px;
}

/**
 * [description]
 * オブジェクトの上位置を取得
 * @name getTop
 * @param oj 対象オブジェクト
 */
function getTop(oj){
    var px = 0;
    while(oj){
        px += oj.offsetTop;
        oj = oj.offsetParent;
    }
    return px;
}
/**
 * [description]
 * エンターが押された際に指定IDにフォーカスをあてる
 * @name changeFocusEnter
 * @param e イベント
 * @param focusid フォーカスさせたいID
 */
function changeFocusEnter(e,focusid){

	if (e.keyCode == 13){
		if(focusid.substr(0,1) != "#" && focusid.substr(0,1) != ".")
		{
			DOC.getElementById(focusid).focus();
		}else{
			$(focusid).focus();
		}
	}
	else
	{
		return;
	}
}
/**
 * 空の場合に空白で出力する
 * @name printNormal
 */
function printNormal(str)
{

	if(str == undefined || str == "")
	{
		str = "&nbsp;";
	}
	return str;
}
//-------------------------------------------------------------
// COOKIE
//-------------------------------------------------------------
/**
 * [description]
 * クッキーに値を設定する
 * @name setCookie
 * @param key クッキーに保存する際のキー
 * @param val クッキーに保存するキーと対となる値
 */
function setCookie(key,val){
	// クッキーの有効期限
	var nowtime = new Date().getTime();
	var clear_time = new Date(nowtime + (60 * 60 * 24 * 1000 * COOKIE_PERIOD_DAY));
	var expires = clear_time.toGMTString();

    tmp = key+"="+escape(val)+";";
    tmp += "expires=" + expires;
    DOC.cookie = tmp;
}


/**
 * [description]
 * クッキーから値を取得する
 * @name getCookie
 * @param key 取得したい値のキー
 */
function getCookie(key){
    tmp = DOC.cookie+";";
    tmp1 = tmp.indexOf(key,0);
    if(tmp1 != -1){
        tmp = tmp.substring(tmp1,tmp.length);
        start = tmp.indexOf("=",0);
        end = tmp.indexOf(";",start);
        return(unescape(tmp.substring(start+1,end)));
    }
    return("");
}


//-------------------------------------------------------------
//header フォント小中大ボタン処理
//-------------------------------------------------------------
$(function(){
	$("#header-font a").click(function () {
		$clickType = $(this).attr("id");

		switch ($clickType){
			case "header-font-s":
				break;
			case "header-font-m":
				break;
			case "header-font-l":
				break;

		}
		// リンク無効化
		return false;
	})
});


