// 文字数チェック
function getLength(p_moji)
{
  var i,cnt=0;
  for(i=0; i<p_moji.length; i++){
    if (escape(p_moji.charAt(i)).length>=4&&!parseAlnumkana(p_moji.charAt(i))){
      cnt+=2;
    }
    else{
      cnt++;
    }
  }
  return cnt;
}
// 全角文字入力不可項目のbyte数ﾁｪｯｸを行う関数
function cdCheck(theObj,theMsg,theValue,theLen)
{
  var errMsg = "";
  var l_length = getLength(theValue);
  if (l_length != theValue.length){
    return false;
  }
  else if (l_length > theLen){
    return false;
  }
  return true;
}

// 全角文字入力可能項目のbyte数ﾁｪｯｸを行う関数
function charCheck(theObj,theMsg,theValue,theLen)
{
  var errMsg = "";
  var l_length = getLength(theValue);
  if (l_length > theLen){
     return false;
  }
  return true;
}

//行数とﾊﾞｲﾄ数をﾁｪｯｸする関数
function crCheck(theObj,theMsg,theValue,theCnt,theLen){
    intCnt = 0;
    for(i=0;i<theValue.length-1;i++){
        if(escape(theValue.charAt(i)) == "%0D" && escape(theValue.charAt(i+1)) == "%0A"){
            intCnt++;
        }
    }
    if(intCnt + 1 > parseInt(theCnt)){
        alert(theMsg + "の行数は" + theCnt + "行までです。");
        theObj.focus();
        return false;
    }
    if(!charCheck(theObj,theMsg,theValue,theLen))return;
    return true;
}

// 入力必須項目の入力チェック
function nullCheck(theObj,theValue)
{
  var ls_nonspace = "";

  for(i=0; i<theValue.length; i++){
    if (theValue.charAt(i) != " " && theValue.charAt(i) != "　" ){
      ls_nonspace += theValue.charAt(i);
    }
  }

  if (ls_nonspace.length == 0){
    return false;
  }
  return true;
}

// 入力内容の解析を行う関数(半角文字以外の値が含まれている場合、falseを返す)
function parseAlnumkana(theChar)
{
  return (theChar >= "a" && theChar <= "z") || (theChar >= "A" && theChar <= "Z") || (theChar >= "0" && theChar <= "9") || (theChar >= "ｦ" && theChar <= "ﾟ") ;
}

// 入力内容の解析を行う関数(数字以外の値が含まれている場合、falseを返す)
function parseIsDigit(theChar)
{
    return theChar >= "0" && theChar <= "9"
}

// 入力内容の解析を行う関数(英字以外の値が含まれている場合、falseを返す)
function parseIsAlpha(theChar)
{
    return (theChar >= "a" && theChar <= "z") || (theChar >= "A" && theChar <= "Z");
}

// 入力内容の解析を行う関数(英数字以外の値が含まれている場合、falseを返す)
function parseAlnum(theChar)
{
    return (theChar >= "a" && theChar <= "z") || (theChar >= "A" && theChar <= "Z") || (theChar >= "0" && theChar <= "9");
}


// 文字列の両サイドのスペースを取り除く
function getTrim(theValue)
{
  var ls_nonspace = "";
  var ls_chk_char;
  var l_start;
  var l_end;

  if (theValue.length > 0){
    for(index=0; index<theValue.length; index++){
      ls_chk_char = theValue.charAt(index)
      if (ls_chk_char != " " && ls_chk_char != "　" ){
        l_start = index;
        break;
      }
    }
    
    for(index=theValue.length - 1; index >= l_start; index--){
      ls_chk_char = theValue.charAt(index)
      if (ls_chk_char != " " && ls_chk_char != "　" ){
        l_end = index + 1;
        break;
      }
    }

    if (l_start != l_end){
      ls_nonspace = theValue.substring(l_start,l_end);
    }
  }
  return ls_nonspace;
}

//連続で入力されたスペースを１つの半角スペースに変換
//全角スペースを半角スペースに変換
function colsp(theVal){
    var ls_collect = "";
    var ls_past;

    for (i=0; i<theVal.length; i++){
        ls_char = theVal.charAt(i);
        if((ls_char==" " || ls_char=="　") && ls_past != " "){
            ls_collect = ls_collect + " ";
            ls_past = " ";
        }
        else if(ls_char != " " && ls_char != "　"){
            ls_collect = ls_collect + ls_char;
            ls_past = "";
        }
    }
    return ls_collect
}

//日付項目の入力チェック
function isDate(theDate){
    // 正規表現による書式チェック
    if(!theDate.match(/^\d{4}\/\d{2}\/\d{2}$/)){
        return false; 
    }
    var vYear = theDate.substr(0, 4) - 0; 
    var vMonth = theDate.substr(5, 2) - 1; // Javascriptは、0-11で表現 
    var vDay = theDate.substr(8, 2) - 0; 
    // 月,日の妥当性チェック 
    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){ 
        var vDt = new Date(vYear, vMonth, vDay); 
        if(isNaN(vDt)){ 
            return false; 
        }else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){ 
            return true;
        }else{ 
            return false;
        } 
    }else{
        return false; 
    } 
}

//文字列に含まれる文字(Char1)を任意の文字(Char2)に置き換える
function replace(theVal,Char1,Char2)
{
    return theVal.split(Char1).join(Char2);
}

//任意の日付要素を取得する
function getDT(theVal,theElm){

    if(theElm != "yyyy" && theElm != "mm" && theElm != "dd" && theElm != "hh" && theElm != "mi" && theElm != "ss"){
        alert("指定された日付フォーマットに誤りがあります");
        return false;
    }

    ls_datetime = theVal.split(" ");
    ls_date = ls_datetime[0].split("/");

    if(theElm == "yyyy"){
        li_ans = eval(ls_date[0]);
    }
    else if(theElm == "mm"){
        li_ans = eval(ls_date[1]);
    }
    else if(theElm == "dd"){
        li_ans = eval(ls_date[2]);
    }

    if(ls_datetime.length==1){
        if(theElm == "hh" || theElm == "mi" || theElm == "ss"){
            li_ans = 0;
        }
    }
    else if(ls_datetime.length==2){
        ls_time = ls_datetime[1].split(":");
        if(theElm == "hh"){
            li_ans = eval(ls_time[0]);
        }
        else if(theElm == "mi"){
            li_ans = eval(ls_time[1]);
        }
        else if(theElm == "ss"){
            li_ans = 0;
        }
    }
    return li_ans
}

//NOTAM表示画面オープン用関数
//2001/05/21　セキュリティ機能でオープンもとの画面を判別する必要があるため，引数WinCodeを追加
function f_view(WinCode,a,b,c,d)
{
  window.open( "/notam2/asp/nk0400.asp?win=" + WinCode + "&I_NotamPoint=" + escape(a) + "&I_NotamNo=" + escape(b) + "&I_CorrectNo=" + c + "&I_BranchNo=" + escape(d) + "&I_Time=" + (new Date()), "Replaced","toolbar=no,location=no,directories=no,status=no,height=630,width=860,menubar=no,scrollbars=no,resizable=no");
}

//ショートカットキー制御 (<Script>要素に"document.onkeydown = kdown"を記述)
function kdown(){
    //F11
    if(event.keyCode=="122"){
        event.keyCode="0";
        return false;
    }
    //Alt+←
    else if(event.altKey&&event.keyCode=="37"){
//      alert("戻る機能は使用できません。");
        return false;
    }
    //Ctrl+N
    else if(event.ctrlKey&&event.keyCode=="78"){
//      alert("新規ウインドウでの表示はできません。");
        return false;
    }
    //Ctrl+I
    else if(event.ctrlKey&&event.keyCode=="73"){
//      alert("お気に入りの表示はできません。");
        return false;
    }
    //Ctrl+H
    else if(event.ctrlKey&&event.keyCode=="72"){
//      alert("履歴の表示はできません。");
        return false;
    }
    //Ctrl+L
    else if(event.ctrlKey&&event.keyCode=="76"){
//      alert("ファイルの操作はできません。");
        return false;
    }
    //Ctrl+E
    else if(event.ctrlKey&&event.keyCode=="69"){
//      alert("検索はできません。");
        return false;
    }
    //Ctrl+O
    else if(event.ctrlKey&&event.keyCode=="79"){
//      alert("ファイルの操作はできません。");
        event.keyCode = "0";
        return false;
    }
    else if(event.shiftKey&&event.keyCode=="13"){
        return false;
    }
}
//ショートカットキー制御 (<body>タグに"onkeydown = 'kdown2()'"を記述)
function kdown2(){
    //Back Space
    if(event.keyCode=="8"){
        event.keyCode="0";  //キーを置き換え
        return false;
    }
}
//ショートカットキー制御 (<a>タグに"onmousedown = 'newlink()'"を記述)
function newlink(){
    //Shift+MouseClick
    if(event.shiftKey){
        alert("新規ウインドウでの表示はできません。");
        return false;
    }
}

//ショートカットキー制御 (<a>タグに"onkeydown = 'linkdown()'"を記述)
function linkdown(){
    //Shift+Enter
    if(event.shiftKey&&event.keyCode=="13"){
//      alert("新規ウインドウでの表示はできません。");
        return false;
    }
}

//テキストエリアの入力行数（行数を返す）
function RowCount(val){
    var txtval;

    if(val.length==0) return (0);

    txtval = val.split('\r\n');
    return (txtval.length);
}

//テキストエリア用TRIM（valの後ろから改行と空白を除外した文字列を返す）
function MultiLineTrim(val){
    var count;
    var ring;
    var flg = false;
    var start;
    var rval = "";
    var kari_val;

    if(val=="") return "";

    sentence = val.split("\r\n");

    if(sentence.length==1) return val;

    for(count=0; count<sentence.length; count++){
        kari_val = getTrim(sentence[count]);
        if(kari_val==""){
            if(flg == false){
                flg = true;
                start = count;
            }
        }
        else if(flg == false){
            if(rval == ""){
                rval = sentence[count];
            }
            else{
                rval = rval+"\r\n"+sentence[count];
            }
        }
        else{
            for(ring=start;ring<=count;ring++){
                if(ring==0){
                    rval = sentence[ring];
                }
                else{
                    rval = rval+"\r\n"+sentence[ring];
                }
            }
            flg = false;
        }
    }
    return rval;
}

//日付設定用関数
function setDay(obj_year, obj_month, obj_day){

    var years = parseInt(obj_year.value, 10);
    var months = parseInt(obj_month.options[obj_month.selectedIndex].value, 10);
    var lastday = monthday(years,months);
    var itemnum = obj_day.length;
    if (lastday - 1 < obj_day.selectedIndex) {
        obj_day.selectedIndex = lastday - 1;
    }
    obj_day.length = lastday;
    
    for (cnt = itemnum + 1;cnt <= lastday;cnt++) {
        obj_day.options[cnt - 1].text = cnt;
    }
}
//日数取得用関数
function monthday(years,months){
    var lastday = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    if (((years % 4 == 0) && (years % 100 != 0)) || (years % 400 == 0)){
        lastday[1] = 29;
    }
    return lastday[months - 1];
}

//配列データ削除処理( 「;」区切り)
function f_delete_array(list_item, domain_name){

    // 配列から削除
    var val = list_item.split(";").remove([domain_name],";");

    return val;
}

//配列データ追加処理( 「;」区切り)
function f_add_array(list_item, domain_name){

    // 配列に追加
    var val = list_item.split(";").merge([domain_name], ";");

    return val;
}

// 配列データの削除・追加用関数
Array.prototype.indexOf = function(value){
   var i = this.length;
   while(i){
      if(this[--i] == value) return i;
   }
   return -1;
};

Array.prototype.remove = function(value, cap){
   var i = this.length; var a;
   while(i--){
      if(value.indexOf(a = this.pop()) == -1) this.unshift(a);
   }
   return (cap)? this.join(cap) : this;
};

Array.prototype.merge = function(value, cap){
   var i = value.length;
   while(i){
      if(this.indexOf(value[--i]) == -1) this.push(value[i]);
   }
   return (cap)? this.join(cap) : this;
};

function f_reset(){
	var elems = main.elements;
	for(i = 0; i < elems.length; i++){
		elem = elems[i];
		if(elem.type == "text" || elem.type == "textarea"){
			elem.value = "";
		}else if(elem.type == "radio"){
			elem.checked = false;
		}else if(elem.type == "select-one"){
			elem.selectedIndex = 0;
		}else if(elem.type == "checkbox"){
			elem.checked = false;
		}
		
	}
}
