/*------------------------------------------------------------------------------------------------------------------
共通JavaScriptファンクション集
browser                    :ブラウザ判定を行う
gf_pageMove                :引数のページに遷移する。
gf_delspace                :引数の半角スペースを削除する
gf_delspaces               :引数の全角スペースを削除する
$                          :document.getElementById()
gf_CheckDate               :年月の妥当性チェック
gf_Hankaku                 :半角英数字チェック(半角英数字のみの場合、trueを返し、それ以外の場合はfalseを返す)
gf_GetByte                 :バイト数を取得する
gf_DateFormatJP            :「YYYY/MM/DD」→「YYYY年MM月DD日」に変更する
gf_TimeFormat              :0埋めを行う
gf_getTextFromHttpRequest  :HttpRequestを使ってTextファイルを取得する(GET)
gf_ChanegDecoration        :リンクの下線の調整
gf_DateFormatJP2           :「yyyymmddhh24miss」を「yyyy年mm月dd日hh24時mi分」に変更する
gf_getSexagenary           :干支を取得する
gf_leap                    :潤年
---------------------------------------------------------------------------------------------------------------------*/
/* ブラウザ判定を行う */
/* quoted Prototype JavaScript framework, version 1.6.0.3 */
var browser = {
    IE:!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1)
  , Opera:navigator.userAgent.indexOf('Opera') > -1
  , WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1
  , Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1
  , MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
};
/* 引数のページに遷移する。 */
function gf_pageMove(aStr){location.href = aStr;}
/* 引数の半角スペースを削除する */
function gf_delspace(aStr){
    var ret = aStr;
    ret = ret.replace(/ /g,"");
    return ret;
}
/* 引数の全角スペースを削除する */
function gf_delspaces(aStr){
    var ret = aStr;
    ret = ret.replace(/　/g,"");
    return ret;
}
/* document.getElementById()をリターン */
function $(aId){return document.getElementById(aId);}
/* 日付の妥当性チェック */
function gf_CheckDate(aYYYY,aMM,aDD){
  var EndDay = [31,28,31,30,31,30,31,31,30,31,30,31];
  /* 閏年チェック */
  if( ((aYYYY%4) == 0 && (aYYYY%100) != 0) || (aYYYY%400) == 0 ){
    EndDay[1] = 29;
  }else{
    EndDay[1] = 28;
  }
  /* 月末チェック */
  if(aDD > EndDay[aMM-1]){return false;}
  return true;
}
/* 半角チェック */
function gf_HankakuCheck(aVal){
  if(aVal.match(/[^0-9A-Za-z]+/) == null){
    return true;
  }else{
    return false;
  }
}
/* バイト数を取得する */
function gf_GetByte(aStr){
  if(aStr.length == 0){return 0;}
  var count = 0;
  var Str = "";
  for(var i=0;i<aStr.length;i++){
    Str = aStr.charAt(i);
    Str = escape(Str);
    if( Str.length < 4 ){
      count = count + 1;
    }else{
      count = count + 2;
    }
  }
  return count;
}
/* 「yyyy/mm/dd」を「yyyy年mm月dd日」に変換 */
function gf_DateFormatJP(aDate){
  var ret = "";
  var yyyy = "";
  var mm = "";
  var dd = "";
  /* 「YYYY」を取得 */
  yyyy = aDate.substring(0,aDate.indexOf("/",0));
  /* 「YYYY」の除いたものを取得 */
  ret = aDate.substring(aDate.indexOf("/",0)+1, aDate.length);
  /*  「MM」を取得 */
  mm = ret.substring(0,ret.indexOf("/",0));
  /* 「0」埋めする */
  mm = "00" + mm.toString();
  mm = mm.substr(mm.length-2,2);
  /* 「MM」の除いたものを取得 */
  ret = ret.substring(ret.indexOf("/",0)+1, ret.length);
  /* 「DD」を取得 */
  dd = ret;
  /* 「0」埋めする */
  dd = "00" + dd.toString();
  dd = dd.substr(dd.length-2,2);
  /* 「YYYY年MM年DD年」に変換 */
  ret = yyyy + "年" + mm + "月" + dd + "日";
  return ret;
}
/* 2桁に変更する(0埋め) */
function gf_TimeFormat(aparam){
  return  (
      function(astr){
        return astr.substr(astr.length-2,2);
      }("00" + aparam.toString())
    );

}
/* TextHttpRequest */
function gf_getTextFromHttpRequest(aFileName,aFnc,async){
    var httpObj;
    var sync;
    /* 同期方法を設定(true:非同期) */
    if(async == undefined){
      sync = true;
    /* 同期方法が適切に設定されている場合 */
    }else if(typeof(async) == "boolean"){
      sync = async;
    /* 同期方法の指定がおかしい場合 */
    }else{return false;}
    /* 関数チェック */
    if(aFnc == undefined || typeof(aFnc) != "function"){return false;}
    /* IEの場合 */
    if(browser["IE"]){
    /* firefoxの場合 */
    }else if(browser["Gecko"]){
      httpObj = new XMLHttpRequest();
      /* Mozilla ブラウザのいくつかのバージョンでは、サーバから XML mime-type のヘッダが帰ってこなかった場合に、正常に動作しないことがある。
         これを何とかするためには、サーバからのヘッダが text/xml でない場合に備えて、ヘッダを上書きする
         see:https://developer.mozilla.org/ja/AJAX/Getting_Started
      httpObj.overrideMimeType("text/xml");
      */
      /* リクエストの状態が変更されたときに無名関数が呼び出される */
      httpObj.onreadystatechange = function(){
          /* 解析結果を取得する変数 */
          var retText ;
          /* リクエストの状態が完了した時 */
          if(httpObj.readyState == 4){
            /* ステータスコードを調べ200の場合ならOK、それ以外の場合はエラーとする */
            if(httpObj.status == 200){
                /* textを取得する */
                retText = httpObj.responseText;
                /* 関数にtextを入れる */
                aFnc(retText);
            }else{
                /* 関数にエラーを入れる */
                aFnc(false);
            }
          }
      }
      /* openメソッドを設定する */
      httpObj.open("GET",aFileName,sync);
      /* 引数がnullだとエラーが起きると報告されているので空で送信設定を行う
         see:http://allabout.co.jp/internet/javascript/closeup/CU20050515A/index.htm#2
      */
      httpObj.send("");
    /* safariの場合 */
    }else if(browser["WebKit"]){
     httpObj = new XMLHttpRequest();
      /* Mozilla ブラウザのいくつかのバージョンでは、サーバから XML mime-type のヘッダが帰ってこなかった場合に、正常に動作しないことがある。
         これを何とかするためには、サーバからのヘッダが text/xml でない場合に備えて、ヘッダを上書きする
         see:https://developer.mozilla.org/ja/AJAX/Getting_Started
      httpObj.overrideMimeType("text/xml");
      */
      /* リクエストの状態が変更されたときに無名関数が呼び出される */
      httpObj.onreadystatechange = function(){
          /* 解析結果を取得する変数 */
          var retText ;
          /* リクエストの状態が完了した時 */
          if(httpObj.readyState == 4){
            /* ステータスコードを調べ200の場合ならOK、それ以外の場合はエラーとする */
            if(httpObj.status == 200){
                /* textを取得する */
                retText = httpObj.responseText;
                /* 関数にtextを入れる */
                aFnc(retText);
            }else{
                /* 関数にエラーを入れる */
                aFnc(false);
            }
          }
      };
      /* openメソッドを設定する */
      httpObj.open("GET",aFileName,sync);
      /* 引数がnullだとエラーが起きると報告されているので空で送信設定を行う
         see:http://allabout.co.jp/internet/javascript/closeup/CU20050515A/index.htm#2
      */
      httpObj.send("");
    }
}
function gf_ChanegDecoration(aMode,aId){
  /* リンクを表示する */
  if(aMode == 1){
    $(aId).style.textDecoration = "underline";
  }else{
    $(aId).style.textDecoration = "none";
  }
}
/* 「yyyymmddhh24miss」を「yyyy年mm月dd日hh24時mi分」に変更する */
function gf_DateFormatJP2(aDate){
  var ret =  aDate.substr(0,4) + "年" + aDate.substr(4,2) + "月" + aDate.substr(6,2) + "日" + aDate.substr(8,2) + "時" + aDate.substr(10,2) + "分";
  return ret;
}

/* 干支を取得する */
function gf_getSexagenary(aYear){
  var sexagenary_cycle = ["申","酉","戌","亥","子","丑","寅","卯","辰","巳","午","未"];
  return sexagenary_cycle[aYear%12];
}

/* 閏年かどうか確認する */
function gf_leap(aYear){
  return aYear%4?0:aYear%100?1:aYear%400?0:1;
}
