//==============================================================================
// ページ遷移処理
//------------------------------------------------------------------------------
// ・ページ遷移を行う
//------------------------------------------------------------------------------
// form     <form>のname
// con      コントローラ名
// act      アクション名
// prm      パラメータ
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function callpage(form, con, act, prm) {
  form = document.forms[form];
  form.commoncon.value = con;
  form.commonact.value = act;
  form.commonprm.value = prm;
  form.submit();
}

//==============================================================================
// ページ遷移処理(WindowOpen)
//------------------------------------------------------------------------------
// ・新しいウィンドウを開いてページ遷移を行う
//------------------------------------------------------------------------------
// form     <form>のname
// con      コントローラ名
// act      アクション名
// prm      パラメータ
// wnm      新しくオープンするウィンドウ名
// opt      window.openのオプション
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function callnewpage(form, con, act, prm, wnm, opt) {
  if (opt == undefined) {
    var wndId = window.open('', wnm);
  } else {
    var wndId = window.open('', wnm, opt);
  }
  form = document.forms[form];
  tagt = form.target;
  form.target = wnm;
  form.commoncon.value = con;
  form.commonact.value = act;
  form.commonprm.value = prm;
  form.submit();
  form.target = tagt;
  return wndId;
}

//==============================================================================
// ページ遷移処理
//------------------------------------------------------------------------------
// ・一覧ページの次ページ前ページなどの遷移
//------------------------------------------------------------------------------
// form     <form>のname
// con      コントローラ名
// act      アクション名
// prm      ページ
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function callpagelist(form, con, act, prm) {
  form = document.forms[form];
  form.commoncon.value = con;
  form.commonact.value = act;
  form.commonprm.value = "";
  form.commonpage.value = prm;
  form.submit();
}

//==============================================================================
// ページ遷移処理
//------------------------------------------------------------------------------
// ・HTMLページ遷移を行う
//------------------------------------------------------------------------------
// url      遷移先URL
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function goto(url) {
  location.href = url;
}

//==============================================================================
// POST送信処理
//------------------------------------------------------------------------------
// ・POST送信を行う
//------------------------------------------------------------------------------
// form     <form>のname
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function doPost(form) {
  form = document.forms[form];
  form.submit();
}

//==============================================================================
// データ取得
//------------------------------------------------------------------------------
// ・指定されたオブジェクト名のvalue値を取得
//------------------------------------------------------------------------------
// id       オブジェクト名
//------------------------------------------------------------------------------
// return   value値
//==============================================================================
function getValue(id) {
  return document.getElementById(id).value;
}

//==============================================================================
// テキスト取得
//------------------------------------------------------------------------------
// ・指定されたオブジェクト名のinnerHTML値を取得
//------------------------------------------------------------------------------
// id       オブジェクト名
//------------------------------------------------------------------------------
// return   innerHTML値
//==============================================================================
function getText(id) {
  return document.getElementById(id).innerHTML;
}

//==============================================================================
// プルダウン内容の取得
//------------------------------------------------------------------------------
// ・プルダウンリストの指定されたインデックスのテキストを取得
//------------------------------------------------------------------------------
// id       オブジェクト名
// idx      リストインデックス
//------------------------------------------------------------------------------
// return   プルダウンテキスト
//==============================================================================
function getListItem(id, idx) {
  var obj = document.getElementById(id);
  return obj.options[idx].text;
}

//==============================================================================
// 選択リストインデックス取得
//------------------------------------------------------------------------------
// ・プルダウンリストの選択されているリストインデックスを取得
//------------------------------------------------------------------------------
// id       オブジェクト名
//------------------------------------------------------------------------------
// return   選択リストインデックス
//==============================================================================
function getListIndex(id) {
  var obj = document.getElementById(id);
  return obj.selectedIndex;
}

//==============================================================================
// 選択リスト取得
//------------------------------------------------------------------------------
// ・プルダウンリストの選択されているテキストを取得
//------------------------------------------------------------------------------
// id       オブジェクト名
//------------------------------------------------------------------------------
// return   選択テキスト
//==============================================================================
function getSelectItem(id) {
  var obj = document.getElementById(id);
  var idx = obj.selectedIndex;
  return obj.options[idx].text;
}

//==============================================================================
// 選択リスト取得
//------------------------------------------------------------------------------
// ・プルダウンリストの選択されているvalue値を取得
//------------------------------------------------------------------------------
// id       オブジェクト名
//------------------------------------------------------------------------------
// return   value値
//==============================================================================
function getSelectValue(id) {
  var obj = document.getElementById(id);
  var idx = obj.selectedIndex;
  return obj.options[idx].value;
}

//==============================================================================
// ラジオボタンのデータ取得
//------------------------------------------------------------------------------
// ・指定されたラジオボタン名のvalue値を取得
//------------------------------------------------------------------------------
// name     ラジオボタン名
//------------------------------------------------------------------------------
// return   value値
//==============================================================================
function getRadioValue(name) {
  var obj = document.getElementsByTagName('input');
  var cnt = obj.length;
  var val = '';

  for (i=0; i < cnt; i++) {
    if (obj[i].name == name) {
      val = obj[i].checked?obj[i].value:val;
    }
  }
  return val;
}

//==============================================================================
// ラジオボタンの選択
//------------------------------------------------------------------------------
// ・指定されたvalue値のラジオボタンを選択状態にする
//------------------------------------------------------------------------------
// name     ラジオボタン名
// val      選択するラジオボタンのvalue値
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setRadioChecked(name, val) {
  var obj = document.getElementsByTagName('input');
  var cnt = obj.length;

  for (i=0; i < cnt; i++) {
    if (obj[i].name == name) {
      obj[i].checked = obj[i].value==val?true:false;
    }
  }
}

//==============================================================================
// チェックボックスの選択
//------------------------------------------------------------------------------
// ・指定されたチェックボックスをチェックする
//------------------------------------------------------------------------------
// id       チェックボックス名
// flg      0:未選択, 1:チェック
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setChecked(id, flg) {
  return document.getElementById(id).checked = flg==1?true:false;
}

//==============================================================================
// テキストデータ設定
//------------------------------------------------------------------------------
// ・指定されたオブジェクトのvalue値を設定する
//------------------------------------------------------------------------------
// id       オブジェクト名
// val      設定するテキスト
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setValue(id, val) {
  document.getElementById(id).value = val;
}

//==============================================================================
// オブジェクト入力可/不可制御
//------------------------------------------------------------------------------
// ・指定されたオブジェクトを入力可/不可にする
//------------------------------------------------------------------------------
// id       オブジェクト名
// flg      0:入力不可、1:入力可
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setEnable(id, flg) {
  var obj = document.getElementById(id);
  if (flg == 0) {
    obj.disabled = 'true';
  } else {
    obj.disabled = '';
  }
}

//==============================================================================
// 読み取り専用/読み書き可制御
//------------------------------------------------------------------------------
// ・指定されたオブジェクトを読み取り専用/読み書き可にする
//------------------------------------------------------------------------------
// id       オブジェクト名
// flg      0:読み書き可、1:読み取り専用
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setReadOnly(id, flg) {
  var obj = document.getElementById(id);
  if (flg == 0) {
    obj.readOnly = 'readonly';
  } else {
    obj.readOnly = '';
  }
}

//==============================================================================
// 背景色変更
//------------------------------------------------------------------------------
// ・指定されたオブジェクトの背景色を変更する
//------------------------------------------------------------------------------
// id       オブジェクト名
// color    色
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setBgColor(id, color) {
  var obj = document.getElementById(id);
  obj.style.background = color;
}

//==============================================================================
// オブジェクト表示制御
//------------------------------------------------------------------------------
// ・指定されたオブジェクトを非表示にする
//------------------------------------------------------------------------------
// id       オブジェクト名
// flg      0:非表示、1:表示
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setVisible(id, flg) {
  var obj = document.getElementById(id);
  if (flg == 1) {
    obj.style.visibility = 'visible';
    obj.style.display = 'block';
  } else {
    obj.style.visibility = 'hidden';
    obj.style.display = 'none';
  }
}

//==============================================================================
// オブジェクトグループ表示制御
//------------------------------------------------------------------------------
// ・指定されたオブジェクトグループを非表示にする
//------------------------------------------------------------------------------
// tag      タグ名
// id       オブジェクト名（前方一致）
// flg      0:非表示、1:表示
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setVisibleGroup(tag, id, flg) {
  var obj = document.getElementsByTagName(tag);
  var cnt = obj.length;
  var len = id.length;
  for (var i=0; i < cnt; i++) {
    var nam = obj[i].id;
    if (nam.substr(0, len) == id) {
      if (flg == 1) {
        setVisible(nam, 1);
      } else {
        setVisible(nam, 0);
      }
    }
  }
}

//==============================================================================
// プルダウンリスト動的変更
//------------------------------------------------------------------------------
// ・プルダウンリストを動的に変更する
// ・リストはcsv形式で設定します
// ・よって、カンマを含むリストデータは設定できません
// ・csvデータ形式は「1行目value,1行目text,2行目value,2行目text,…」
//------------------------------------------------------------------------------
// id       オブジェクト名
// csv      リスト設定csvデータ
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function setListItem(id, csv) {
  // プルダウンオブジェクトの取得
  var obj = document.getElementById(id);
  // プルダウンの初期化
  while ((obj.options.length > 0) || (obj.options[0] != null)) {
    obj.options[0] = null;
  }
  // csvをカンマで分割して配列に格納
  var dat = new Array();
  dat = csv.split(',');
  // エラーチェック
  if (dat.length == 1) {
    return;
  }
  // プルダウンリストの設定
  for (var i=0; i<dat.length/2; i++) {
    obj.options[i] = new Option(dat[i*2+1], dat[i*2]);
  }
}

//==============================================================================
// 条件による値の取得
//------------------------------------------------------------------------------
// ・条件による値を取得します
//------------------------------------------------------------------------------
// exp      条件式
// rtnTrue  expがTrueの場合に返す値
// rtnFalse expがFalseの場合に返す値
//------------------------------------------------------------------------------
// return   取得した値
//==============================================================================
function iif(exp, rtnTrue, rtnFalse) {
  return exp ? rtnTrue : rtnFalse ;
}

//==============================================================================
// 選択リスト設定
//------------------------------------------------------------------------------
// ・プルダウンリストに指定した値を選択する
//------------------------------------------------------------------------------
// id       オブジェクト名
// val      選択する値
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function selectListItem(id, val) {
  var obj = document.getElementById(id);
  if (obj.type != "select-one") {
    return;
  }

  for (var i=0; i<obj.options.length; i++) {
    if(obj.options[i].value == val) {
      obj.selectedIndex = i;
      return;
    }
  }
}

//==============================================================================
// 文字列の長さを取得
//------------------------------------------------------------------------------
// ・文字数を返す
//------------------------------------------------------------------------------
// psStr    文字列
//------------------------------------------------------------------------------
// return   文字数
//==============================================================================
function len(psStr) {
  return psStr.length;
}

//==============================================================================
// 文字列の一部を取得
//------------------------------------------------------------------------------
// ・左からpnLen文字分の文字を返す
//------------------------------------------------------------------------------
// psStr    文字列
// pnLen    文字数
//------------------------------------------------------------------------------
// return   取得した文字列
//==============================================================================
function left(psStr, pnLen) {
  return psStr.substr(0, pnLen);
}

//==============================================================================
// 数値型に変換
//------------------------------------------------------------------------------
// ・渡された値を数値型に変換する
//------------------------------------------------------------------------------
// dat      変換前
//------------------------------------------------------------------------------
// return   変換後（数値型）
//==============================================================================
function cNum(dat) {
  var rtn = dat;
  rtn-=0;
  return rtn;
}

//==============================================================================
// 文字型に変換
//------------------------------------------------------------------------------
// ・渡された値を文字型に変換する
//------------------------------------------------------------------------------
// dat      変換前
//------------------------------------------------------------------------------
// return   変換後（文字型）
//==============================================================================
function cStr(dat) {
  var rtn = dat;
  rtn+='';
  return rtn;
}

//==============================================================================
// ゼロパディング
//------------------------------------------------------------------------------
// ・数値が指定した桁数になるまで数値の先頭をゼロで埋める
//------------------------------------------------------------------------------
// num      数値
// max      桁数
//------------------------------------------------------------------------------
// return   ゼロ埋め後の数値
//==============================================================================
function doZeroPad(num,max) {
  var tmp=''+num;
  while(tmp.length<max){
    tmp='0'+tmp;
  }
  return tmp;
}

//==============================================================================
// ゼロサプレス
//------------------------------------------------------------------------------
// ・頭の 0 を全て除去する
//------------------------------------------------------------------------------
// num      数値
//------------------------------------------------------------------------------
// return   処理結果
//==============================================================================
function doZeroSup(num) {
  var flg = 0;
  var tmp = cStr(num);
  for (var i=0; i<tmp.length; i++) {
    if (tmp.substr(i, 1)!='0') {
      tmp = tmp.substr(i, tmp.length-i);
      flg = 1;
      break;
    }
  }
  if (flg==0 && tmp.length>0) {
    tmp = '0';
  }
  return tmp;
}

//==============================================================================
// 文字列を左から取得
//------------------------------------------------------------------------------
// ・文字列を左から取得する
//------------------------------------------------------------------------------
// str      文字数
// len      取得する文字数
//------------------------------------------------------------------------------
// return   取得した文字列
//==============================================================================
function left(str, len) {
  get = len;
  max = str.length;
  if (get>max) get=max;
  return str.substring(0, get);
}

//==============================================================================
// 文字列を右から取得
//------------------------------------------------------------------------------
// ・文字列を右から取得する
//------------------------------------------------------------------------------
// str      文字数
// len      取得する文字数
//------------------------------------------------------------------------------
// return   取得した文字列
//==============================================================================
function right(str, len) {
  get = len;
  max = str.length;
  if (get>max) get=max;
  return str.substring(max-get, max);
}

//==============================================================================
// 現在日時の取得
//------------------------------------------------------------------------------
// ・現在日時をYYYY/MM/DD HH:NN:SS形式で返す
//------------------------------------------------------------------------------
// なし
//------------------------------------------------------------------------------
// return   現在日時
//==============================================================================
function now() {
  dt = new Date();
  yy = dt.getYear();
  if (yy < 2000) yy+=1900;
  return yy+'/'+(right('0'+(dt.getMonth()+1),2))
           +'/'+(right('0'+(dt.getDate()),2))
           +' '+(right('0'+(dt.getHours()),2))
           +':'+(right('0'+(dt.getMinutes()),2))
           +':'+(right('0'+(dt.getSeconds()),2));
}

//==============================================================================
// OnOffイメージの変更
//------------------------------------------------------------------------------
//・指定されたイメージオブジェクトの画像をxxxOn/xxxOffで切り替える
//  On時にカーソルをpointerに変更する
//------------------------------------------------------------------------------
// imageObj  イメージオブジェクト
//------------------------------------------------------------------------------
// return    none
//==============================================================================
function changeOnOffImageButton(imageObj){
  var imageSource = imageObj.src;
  var imageSourceDirectory = imageSource.substring(0, imageSource.lastIndexOf("/") + 1);
  var imageName = imageSource.substring(imageSource.lastIndexOf("/") + 1, imageSource.lastIndexOf("."));
  var imageNameExtension = imageSource.substring(imageSource.lastIndexOf("."), imageSource.length);

  if(imageName.match(/(On?|\/)$/) == null){
    imageObj.src = imageSourceDirectory + imageName.substring(0,imageName.lastIndexOf('Off')) + "On" + imageNameExtension;
    imageObj.style.cursor = "pointer";
  }else{
    imageObj.src = imageSourceDirectory + imageName.substring(0,imageName.lastIndexOf('On')) + "Off" + imageNameExtension;
    imageObj.style.cursor = "none";
  }
}

//==============================================================================
// アラートを表示し、OKの場合にページ遷移を行う
//------------------------------------------------------------------------------
// ・ページ遷移を行う
//------------------------------------------------------------------------------
// form     <form>のname
// con      コントローラ名
// act      アクション名
// prm      パラメータ
// msg      表示メッセージ
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function confirmCallpage(form, con, act, prm, msg) {
  if (confirm(msg) == true) {
    callpage(form, con, act, prm);
  }
}

//==============================================================================
// 削除用コールページ
//------------------------------------------------------------------------------
// ・ページ遷移を行う
//------------------------------------------------------------------------------
// id       チェックボックスのID
// form     <form>のname
// con      コントローラ名
// act      アクション名
// prm      パラメータ
// msg      表示メッセージ
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function deleteCallpage(id, form, con, act, prm, msg) {
  var form = document.forms[form];
  var errFlg = true;
  var cnt = form.elements[id].length;
  if ( cnt ) {
    for(i=0; i < cnt ; i++) {
      if (form.elements[id+'['+i+']'].checked) {
        errFlg = false;
        break;
      }
    }
  } else {
      if (form.elements[id+'[0]'].checked) {
        errFlg = false;
      }
  }
  if (errFlg) {
    alert('削除する行に選択チェックを付けてください。');
    return;
  }
  confirmCallpage('_FORM', con, act, '', 'チェックした行を削除しますか？');
}

//==============================================================================
// チェックボックスの一括切り替え（ON/OFF）
//------------------------------------------------------------------------------
// form     <form>のname
// chkid     ON/OFFの切り替え元になるチェックボックス名
// targetid  ON/OFFの切り替え対象のチェックボックス
//------------------------------------------------------------------------------
// return   なし
//==============================================================================
function allCheck(form, chkid, targetid) {
  form = document.forms[form];
  var check = document.getElementById(chkid).checked;
  var cnt = form.elements[targetid].length;
  if ( cnt ) {
    for(i=0; i<cnt ; i++) {
      form.elements[targetid+'['+i+']'].checked = check;
    }
  } else {
      form.elements[targetid].checked = check;
  }
}


