

//==========================================================
//           Javascript Library [ functions.js ]
//     Copyright (C) 2001 - 2002  mother inc. / System Department.
//
//=========================================: Mother Inc. :==
//
// [変更履歴] ----------------------------------------------
// 2001.10.17(v1.0)
//  ・Javascriptライブラリ作成
// 2001.11.29(v1.2)
//  ・getHeightLAYER / getTopLAYERにて、IE4.0でおきる不具合修正
//  ・checkExistLAYERにて、Mac版IE4.5でおきる不具合修正
// 2002.1.24(v1.3)
//	・findLAYERを追加。入れ子レイヤーに対応した:「／」で区切ること
// 2002.5.24(v1.4)
//	・setObjectを追加。
// 2002.6.24(v1.5)
//	・setObject関数のアルゴリズムを変更
///
// [著作権について] ----------------------------------------
// この製品は、日本国著作権法および国際条約に保護されています。
// この製品の全部または一部を無断で複製したり、改造・改変したり、
// 無断で複製物を頒布すると、著作権の侵害となりますのでご注意ください。
//


//----------------------------------------------------------
//レイヤーオブジェクト取得関数( findLAYER )
// [ 引数 ] LayerName : レイヤーのID名
// [戻り値] なし
//----------------------------------------------------------
function findLAYER( LayerName ){
	var arrayLayer = new Array();
	var obj = document;
	var i = 0;
	arrayLayer = LayerName.split("/");
	
	LayerName = arrayLayer[arrayLayer.length - 1]
	if(document.getElementById){
		// Netscape6 & Internet Explorer5.x
		obj = obj.getElementById(LayerName)
	}else{
		if( document.all ){
			// Internet Explorer4.x
			obj = obj.all(LayerName);
		}
	}

	if( document.layers ){
		obj = searchLayer_Netscape( document.layers , LayerName );
	}
	return obj;
}

function searchLayer_Netscape( l , LayerName ){
	for(var i=0;i<l.length;i++){
		if( l[i].name == LayerName ){
			return l[i] ;
		}else if( l[i].document.layers.length != 0 ){
			var s = searchLayer_Netscape( l[i].document.layers , LayerName );
			if( s ) return s ;
		}
	}
	return null ;
}
//----------------------------------------------------------
//レイヤー相対座標移動関数( moveByLAYER )
// [ 引数 ] LayerName : レイヤーのID名
//          offsetX   : レイヤーのX座標移動量
//          offsetY   : レイヤーのY座標移動量
// [戻り値] なし
//----------------------------------------------------------
function moveByLAYER( LayerName, offsetX, offsetY ){
	var obj=findLAYER(LayerName);
	if(document.getElementById){
		// Netscape6 & Internet Explorer5.x
		var obj = obj.style
		obj.left = ( parseInt(obj.left) + offsetX ) + 'px'
		obj.top  = ( parseInt(obj.top)  + offsetY ) + 'px'
	}else{
		if( document.all ){
			// Internet Explorer4.x
			obj.style.pixelLeft += offsetX;
			obj.style.pixelTop  += offsetY;
		}
	}
	if( document.layers ){
		// Netscape Communicator 4.x
		obj.moveBy( offsetX, offsetY );
	}
}

//----------------------------------------------------------
//レイヤー絶対座標移動関数( moveToLAYER )
// [ 引数 ] LayerName : レイヤーのID名
//          offsetX   : レイヤーのX座標移動量
//          offsetY   : レイヤーのY座標移動量
// [戻り値] なし
//----------------------------------------------------------
function moveToLAYER( LayerName, offsetX, offsetY ){
	var obj=findLAYER(LayerName);
	if(document.getElementById){
		// Netscape6 & Internet Explorer5.x
		var obj = obj.style
		obj.left = offsetX  + 'px'
		obj.top  = offsetY  + 'px'
	}else{
		if( document.all ){
			// Internet Explorer4.x
			obj.style.pixelLeft = offsetX;
			obj.style.pixelTop  = offsetY;
		}
	}
	if( document.layers ){
		// Netscape Communicator 4.x
		obj.moveTo( offsetX, offsetY );
	}
}

//----------------------------------------------------------
//レイヤー表示・非表示関数( ShowHideLAYER )
// [ 引数 ] LayerName : レイヤーのID名
//          Attr      : 表示・非表示属性(show:表示 hide:非表示)
// [戻り値] なし
//----------------------------------------------------------
function ShowHideLAYER( LayerName, Attr ){
	var obj=findLAYER(LayerName);
	if( Attr == 'hide' ){
		// レイヤーの非表示
		if( document.getElementById || document.all ){
			obj.style.visibility = 'hidden';
		}else if( document.layers ) obj.visibility = 'hide';
	}else{
		if( Attr == 'show' ){
			// レイヤーの表示
			if( document.getElementById || document.all ){
				obj.style.visibility = 'visible';
			}else if( document.layers ) obj.visibility = 'show';
		}else{
			if( document.getElementById || document.all ){
				obj.style.visibility = Attr;
			}else if( document.layers ) obj.visibility = Attr;
		}
	}
}

//----------------------------------------------------------
//レイヤー表示・非表示状態取得( getShowHideLAYER )
// [ 引数 ] LayerName : レイヤーのID名
// [戻り値] 状態( true : 表示 / false : 非表示 )
//----------------------------------------------------------
function getShowHideLAYER( LayerName, Attr ){
	var pty = '';
	var retFlag = false;
	var obj=findLAYER(LayerName);

	if( document.getElementById || document.all ){
		pty = obj.style.visibility;
	}else if( document.layers ) pty = obj.visibility;
	
	if( pty == 'visible' || pty == 'show' ){
		retFlag = true;
	}
	
	return retFlag;
}


//----------------------------------------------------------
//レイヤーの高さ取得( getHeightLAYER )
// [ 引数 ] LayerName : レイヤーのID名
// [戻り値] レイヤーの高さ
//----------------------------------------------------------
function getHeightLAYER( LayerName ){
	var h = 0;
	var obj=findLAYER(LayerName);
	if( document.getElementById || document.all ){
		h = obj.offsetHeight;
	}else if( document.layers ) h = obj.clip.height;

	return h;
}

//----------------------------------------------------------
//レイヤーの幅取得( getWidthLAYER )
// [ 引数 ] LayerName : レイヤーのID名
// [戻り値] レイヤーの幅
//----------------------------------------------------------
function getWidthLAYER( LayerName ){
	var w = 0;
	var obj=findLAYER(LayerName);
	if( document.getElementById || document.all){
		w = obj.offsetWidth;
	}else if( document.layers ) w = obj.clip.width;
	return w;
}

//----------------------------------------------------------
//レイヤーのY座標取得( getTopLAYER )
// [ 引数 ] LayerName : レイヤーのID名
// [戻り値] レイヤーのY座標
//----------------------------------------------------------
function getTopLAYER( LayerName ){
	var y = 0;
	var obj=findLAYER(LayerName);
	if( document.getElementById  ){
		// Netscape6 & Internet Explorer5.x
		y = parseInt(obj.style.top);
	}else{
		if( document.all    ){
			// Internet Explorer4.x
			y = obj.style.pixelTop;
		}
	}
	// Netscape Communicator 4.x
	if( document.layers ) y = obj.top;
	return y;
}

//----------------------------------------------------------
//レイヤーのX座標取得( getLeftLAYER )
// [ 引数 ] LayerName : レイヤーのID名
// [戻り値] レイヤーのX座標
//----------------------------------------------------------
function getLeftLAYER( LayerName ){
	var x = 0;
	var obj=findLAYER(LayerName);
	if( document.getElementById  ){
		// Netscape6 & Internet Explorer5.x
		x = parseInt(obj.style.left);
	}else{
		if( document.all    ){
			// Internet Explorer4.x
			x = obj.style.pixelLeft;
		}
	}
	// Netscape Communicator 4.x
	if( document.layers ) x = obj.left;
	return x;
}

//----------------------------------------------------------
//レイヤーのz-index値変更( setzIndexLAYER )
// [ 引数 ] LayerName : レイヤーのID名
//          zIndex    : z-index値(0が最背面となる)
// [戻り値] レイヤーのz-index値
//----------------------------------------------------------
function setZIndexLAYER( LayerName,zIndex ){
	var y = 0;
	var obj=findLAYER(LayerName);

	if( document.getElementById || document.all ){
		obj.style.zIndex = zIndex;
	}else if( document.layers ) document.layers[LayerName].zIndex = zIndex;

	return y;
}


//----------------------------------------------------------
//ウインドウのサイズ取得( getSize )
// [ 引数 ] Attr : 取得プロパティ( width : 横幅 height:縦幅 )
// [戻り値] ウインドウのサイズ
//----------------------------------------------------------
function getSize( Attr ){
	var size=0;

	if( Attr == 'width' ){
		if( window.innerWidth ){
			size = window.innerWidth;
		}else{
			size = document.body.clientWidth;
		}
	}else{
		if( Attr == 'height' ){
			if( window.innerHeight ){
				size = window.innerHeight;
			}else{
				size = document.body.clientHeight;
			}
		}
	}
	return size;
}

//----------------------------------------------------------
//レイヤーの有無チェック ( checkExistLAYER )
// [ 引数 ] LayerName : レイヤーのID名
// [戻り値] レイヤーの有無状況(true : あり / false :　なし )
//----------------------------------------------------------
function checkExistLAYER( LayerName ){
	var checkFlag = false;
	var uAgent  = navigator.userAgent.toUpperCase();
	var obj=findLAYER(LayerName);
	var arrayLayer = new Array();

	if( document.getElementById ){
		if( obj != null ){
			checkFlag = true;
		}
	}else{
		if( document.all ){
			if( uAgent.indexOf("MAC") >= 0 ){
				arrayLayer = LayerName.split("/");
				LayerName = arrayLayer[arrayLayer.length - 1]
				if( document[LayerName] ){
					checkFlag = true;
				}
			}else{
				if( obj ){
					checkFlag = true;
				}
			}
		}
	}
	if( document.layers ){
		if( obj ){
			checkFlag = true;
		}
	}
	return checkFlag;
}

//----------------------------------------------------------
//表示領域の左上座標[X座標]( getScrollLeft )
// [ 引数 ] なし
// [戻り値] X座標
//----------------------------------------------------------
function getScrollLeft(){
	var left=0;

	if( document.all ){
		left = document.body.scrollLeft;
	}else{
		left = window.pageXOffset;
	}
	return left;
}

//----------------------------------------------------------
//表示領域の左上座標[Y座標]( getScrollTop )
// [ 引数 ] なし
// [戻り値] Y座標
//----------------------------------------------------------
function getScrollTop(){
	var top=0;

	if( document.all){
		top = document.body.scrollTop;
	}else{
		top = window.pageYOffset;
	}
	return top;
}

//----------------------------------------------------------
//Cookieを保持する( setCookie )
// [ 引数 ] cookieID     : クッキーID
//          cookieValue  : クッキーの文字列
//          cookieExpire : クッキー保持期間
//          cookiePath   : クッキー保持パス
// [ 引数 ] 結果(true : 成功 / false : 失敗 )
//----------------------------------------------------------
function setCookie( cookieID, cookieValue, cookieExpire, cookiePath ){

	var retFlag = false;
	var expireDateNow;
	var strCookie;
	
	strCookie = '';
	if( cookieID != null ){
		strCookie = cookieID + "=" + escape(cookieValue) + ";"
		if( cookieExpire != null ){
			cookieExpire = eval( cookieExpire );
			expireDateNow = new Date();
			expireDateNow.setDate( expireDateNow.getDate() + ( cookieExpire * 60 * 60 * 24 ) );
			strExpire = expireDate.toGMTString();
			strCookie += "expires=" + strExpire + ";";
		}
		if( cookiePath != null && cookiePath != "" ){
			strCookie = "path" + cookiePath + ";";
		}
		
		document.cookie = strCookie;
		retFlag = true;
	}
	return retFlag;
}

//----------------------------------------------------------
//Cookieを取得する( getCookie )
// [ 引数 ] cookieID     : クッキーID
// [ 引数 ] クッキー文字列
//----------------------------------------------------------
function getCookie( cookieID ){
	var strCookie = '';
	var st = 0, ed = 0;
	var retString = '';
	
	if( document.cookie != '' && cookieID != null ){
		cookieID += "=";
		strCookie = document.cookie + ";";
		
		st = strCookie.indexOf( cookieID );
		if( st != -1 ){
			ed = strCookie.indexOf(";" , st );
			retString = unescape( strCookie.substring( st + cookieID.length, ed ) );
		}
	}
	return retString;
}

//----------------------------------------------------------
//フォームオブジェクトにデータをセットする( setObject
// [ 引数 ] Form        : フォームオブジェクト
//          tagName     : データセットをするオブジェクトの名前
//          strValue    : 入力する値
//----------------------------------------------------------
function setObject( frm, tagName, strValue )
{
	var j=0;
	var objElements = frm.elements[tagName];
	var strDefValue = objElements.value;
	var typObject   = objElements.type;

	if( typObject == 'select_one' || typObject == 'select-multiple' ){
		for( j=0; j<objElements.length; j++ ){
			if( objElements.options[j].value == strValue ){
				objElements.selectedIndex = j;
			}
		}
	}
	if( typObject == 'checkbox' || typObject == 'radio' ){
		if( strDefValue == strValue ){
			objElements.checked = true;
		}
	}
		
	if( typObject == 'text' || typObject == 'textarea' ){
		objElements.value = strValue;
	}
}

