﻿//***************************************************************
// ライブラリ関数 
//***************************************************************

// ------------------------------------------
// リストボックスの選択されたインデックスを返す
// どれも選択されていないときは-1を返す
// list →リストボックス
// ------------------------------------------
function GetSelectedIndex(list){
	for (i=0; i<list.options.length; i++){
		if (list.options[i].selected == true){
			return i;
		}
	}
	return -1;
}

//***************************************************************
// 汎用関数 
//***************************************************************

// ------------------------------------------
// サブウィンドウを開く
// url →開こうとしているURL
// target →ターゲットWindow
// w →開くWindowの幅
// h →開くWindowの高さ
// extra →追加の指定属性
// ------------------------------------------
function subwinOpen(url, target, w, h, extra) {
	t = window.open(url, target, 'left=30,top=10,' + 'width=' + w + ',height=' + h + ',' + extra);
	if (t == null){
		alert("Googleツールバーなどのポップアップ抑制ツールを使っている場合はその機能をOFFにしてください")
	} else {
		t.focus();
	}
}

// ------------------------------------------
// スクロールバー、リサイズ不可のWindowを開く
// ------------------------------------------
function subwinOpenNoBar(url, target, w, h, extra) {
	subwinOpen(url, target, w, h, "resizable=yes,scrollbars=yes" + extra);
}

// ------------------------------------------
//	Enterが押された時に[サブミットボタンかテキストエリア]以外では無視する。
// ------------------------------------------
function EscapeSubmit()
{
	if (event.keyCode==13 &&
		window.event.srcElement.type!='submit' &&
		window.event.srcElement.type!='textarea')
	{
		return false;
	}
}

// ------------------------------------------
// リストボックスが選択されたときにテキストボックスを反映させる
// ------------------------------------------
function synchListBoxToTextBox(listbox, textbox_id)
{
	textbox = document.getElementById(textbox_id);
	textbox.value = listbox.options[listbox.selectedIndex].value;
	onChangeForm(listbox);
	onChangeForm(textbox);
}

// ------------------------------------------
// チェックボックスのリストで縦全部のチェックをつけたり消したりする
// ------------------------------------------
isSelected = false;
function selectAll(elemName) {
	checkboxes = document.getElementsByName(elemName);
	for (i = 0; i < checkboxes.length; i++) {
		if (checkboxes[i].disabled==0) {
			checkboxes[i].checked = true ;
		}
	}
	isSelected = true;
	return isSelected;
}
function deselectAll(elemName) {
	checkboxes = document.getElementsByName(elemName);
	for (i = 0; i < checkboxes.length; i++) {
		if (checkboxes[i].disabled==0) {
			checkboxes[i].checked = false;
		}
	}
	isSelected = false;
	return isSelected;
}

// ------------------------------------------
// チェックボックスをトグルする
// selectbutton → 親だま
// elemName → 変更先のチェックボックスのName属性値【デフォルトはids】
// ------------------------------------------
function toggleSelect(selectbutton, elemName, force) {
	if (elemName == void(0)) {
		elemName = 'ids';
	}
	if (force == void(0)){
		force = selectbutton.checked;
	} 
	if (force == true) {
		selectbutton.checked = true;
		return selectAll(elemName);
	} else {
		selectbutton.checked = false ;
		return deselectAll(elemName);
	}
}

// ------------------------------------------
// 特定のHTML要素を隠したり、見せたりする
// id → そのタグのあるHTML要素が対象
// img_をプレフィックスにつけたIMGタグがあればそれも変更する
// ------------------------------------------
function toggleHideTag(id) {
	hideViewTag(id,0);
}
function hideViewTag(id,hide) {
	obj = document.getElementById(id);
	imgObj = document.getElementById('img_'+id)
	if (obj){
		if (hide == 2 || (hide == 0 && obj.style.display == 'none')){
			obj.style.display = "block";
			if (imgObj){
			    imgObj.setAttribute('src', '../img/phyzios/down.gif');
			}
		} else {
			obj.style.display = "none";
			if (imgObj){
			    imgObj.setAttribute('src', '../img/phyzios/right.gif');
			}
		}
	}
}

function toggleDiv( id )
{
    obj = document.getElementById(id);
    if( obj==null ){return;}
    if(obj.style.visibility== 'hidden'){
        obj.style.visibility = 'visible';
    }else{
        obj.style.visibility = 'hidden';
    }
}



//***************************************************************
// テキストボックスのバリデーション。Phyziosで使用する
//***************************************************************

// ------------------------------------------
// フォームが変更されたときに呼ばれる。
// 変更されたことを示すために色をつける
// ------------------------------------------
function onChangeForm(obj)
{
	obj.style.background = '#FFFF80';
}

// ------------------------------------------
// 数字しか入力させないテキストボックスのためのバリデーション
// ------------------------------------------
function checkNumber(obj,type)
{
	onChangeForm(obj);
	str = obj.value;
	var tmp;
 	if( type=='Money' || type=='Int' ){
 		tmp = str.match(/[0-9\-]+/g);
	}else{
		tmp = str.match(/[0-9\.,\+\- ]+/g);
	}
	if(tmp != str)
	{
		alert("数値を入力してください。");
		obj.value = '0';
	}
}

// ------------------------------------------
// 数字しか入力させないテキストボックスのためのバリデーション
// ------------------------------------------
function checkNumberWithAddComma(obj,type)
{
	onChangeForm(obj);
	str = obj.value;
	var tmp;
 	if( type=='Money' || type=='Int' ){
 		tmp = str.match(/[0-9,\-]+/g);
	}else{
		tmp = str.match(/[0-9\.,\+\- ]+/g);
	}
	if(tmp != str)
	{
		alert("数値を入力してください。");
		obj.value = '0';
	}
	else
	{
	    obj.value = addComma(str);
	}
}

// ------------------------------------------
// 数値にカンマを付加する
// ------------------------------------------
function addComma(src_val)
{
    var txt_num = '' + src_val;

    var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
    var curr_val = txt_num.split('.');
    curr_val[0] += '.';
    do {
      curr_val[0] = curr_val[0].replace(rxSplit, '$1,$2');
    } 
    while (rxSplit.test(curr_val[0]));
    if (curr_val.length > 1) {
      return curr_val.join('');
    }
    else {
      return curr_val[0].split('.')[0];
    }
    
}

// ------------------------------------------
// 日付しか入力させないテキストボックスのためのバリデーション
// ------------------------------------------
function checkDateTime(obj)
{
	onChangeForm(obj);
	str = obj.value;
	var tmp = str.match(/[0-9\/: ]+/g);
	if (str != "" && tmp != str)
	{
		alert('"2005/1/1"の形式で入力してください。');
		obj.value = '';
	}
}

// ------------------------------------------
// 郵便番号しか入力させないテキストボックスのためのバリデーション
// ------------------------------------------
function checkZipCode(obj)
{
	onChangeForm(obj);
	str = obj.value;
	var tmp = str.match(/[0-9\- ]+/g);
	if(tmp != str)
	{
		alert("123-4567の形式で入力してください。");
		obj.value = '';
	}
}

// ------------------------------------------
// 電話番号しか入力させないテキストボックスのためのバリデーション
// ------------------------------------------
function checkTelephone(obj)
{
	onChangeForm(obj);
	str = obj.value;
	var tmp = str.match(/[0-9\- ]+/g);
	if(tmp != str)
	{
		alert("数値と'-'を使用して入力してください。");
		obj.value = '';
	}
}



//***************************************************************
// Phyziosフレームワークサポート
//***************************************************************

// ------------------------------------------
// タブが選択されたとき
// obj → 選択されたタブ
// ------------------------------------------
function tabClicked(obj) {
	var ul = document.getElementById("link-tab");
	var list = ul.getElementsByTagName("li");
	for (var i=0; i<list.length; i++) {
		list[i].className = "plain";
	}
	selectedTabObj = obj.parentElement;
	selectedTabObj.className = "selected";
}

// ------------------------------------------
// タブヘッダのタブの文字列を変更する
// ------------------------------------------
function changeTabPageTabText(id, text) {
	if (parent.fraTab && parent.fraTab.document.getElementById(id)){
		parent.fraTab.document.getElementById(id).innerText = text;
	}
}

// ------------------------------------------
// メニューのリフレッシュ
// ------------------------------------------
function refreshHeader()
{
	parent.fraTab.location.reload();
}
function syncCode()
{
	menu = parent.parent.fraLeftFrame;
	menu.location.reload();
}

// ------------------------------------------
// 日付の選択用のポップアップを開く
// id → テキストボックスのID
// ------------------------------------------
function calendarSelect(id) {
	textbox = document.getElementById(id);
	subwinOpen("../dutil/SelectDate.aspx?textboxid="+id+"&date="+textbox.value, "calendarSelect", 300,200, "resizable=yes");
	return false;
}

// ------------------------------------------
// 日付の選択用のポップアップで選択したとき
// val → 選択日
// id  → テキストボックスのID
// ------------------------------------------
function selectCalendar(val, id){
	obj = opener.document.getElementById(id);
	obj.value = val;
	window.close();
	return false;
}

// ------------------------------------------
// エラー表示時にSmartNavigationを無効にする
// ------------------------------------------
function untiSmartNavigation() {
	var msg = document.all.item("errorSummary");
	if ( msg != null ) {
		if ( msg.innerText != "" ) {
			setTimeout("untiSmartNavigationToTop(0)",100);
		}
	}
}
function untiSmartNavigationToTop(y) {
	scroll(0,y);
}

// ------------------------------------------
// ペアレントWindowのタイトルを設定する
// title → タイトル
// ------------------------------------------
function setParentWindowTitle(title){
	parent.parent.document.title = title;
}

