
//==========================================================

//           Javascript Library [ functions.js ]

//     Copyright (C) 2001 mother inc. / System Department.

//

//           Programing by Y.TAKIMOTO

//=========================================: Mother Inc. :==

//

//----------------------------------------------------------

// 2001.10.17(v1.0)

//  ・Javascriptライブラリ作成

// 2001.11.29(v.1.2)

//  ・getHeightLAYER / getTopLAYERにて、IE4.0でおきる不具合修正

//  ・checkExistLAYERにて、Mac版IE4.5でおきる不具合修正

// 2002.01.20(v.1.3)

//	・入れ子レイヤーに対応

//----------------------------------------------------------

//レイヤーオブジェクト取得関数( getObjLAYER )

// [ 引数 ] LayerName     : レイヤーのID名

//          ParentLayerObj   : 親レイヤーオブジェクト

// [戻り値] レイヤーオブジェクト

//----------------------------------------------------------
function getObjLAYER ( LayerName, ParentLayerObj ){
	var targetLayer;
	var pos;
	var i;
	
	if( !ParentLayerObj ) {
		ParentLayerObj = document;
	}
	if( ( pos = LayerName.indexOf("?") ) > 0 && parent.frames.length ) {
		ParentLayerObj = parent.frames[LayerName.substring( pos + 1)].document;
		LayerName = LayerName.substring( 0, pos );
	}
	if( !(targetLayer = ParentLayerObj[LayerName]) && ParentLayerObj.all ) {
		targetLayer = ParentLayerObj.all[LayerName];
	}
	for( i=0; !targetLayer && i<ParentLayerObj.forms.length; i++ ) {
		targetLayer = ParentLayerObj.forms[i][LayerName];
	}
	for( i=0; !targetLayer && ParentLayerObj.layers && i < ParentLayerObj.layers.length; i++ ) {
		targetLayer = getObjLAYER( LayerName, ParentLayerObj.layers[i].document );
	}
	
	if( !targetLayer && document.getElementById ) {
		targetLayer = document.getElementById( LayerName );
	}
	
	return targetLayer;
}


//----------------------------------------------------------

//レイヤー相対座標移動関数( moveByLAYER )

// [ 引数 ] LayerName : レイヤーのID名

//          offsetX   : レイヤーのX座標移動量

//          offsetY   : レイヤーのY座標移動量

// [戻り値] なし

//----------------------------------------------------------

function moveByLAYER( LayerName, offsetX, offsetY ){

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );

	if(document.getElementById){

		// Netscape6 & Internet Explorer5.x

		var obj = layerObj.style

		obj.left = ( parseInt(obj.left) + offsetX ) + 'px'

		obj.top  = ( parseInt(obj.top)  + offsetY ) + 'px'

	}else{

		if( document.all ){

			// Internet Explorer4.x

			layerObj.style.pixelLeft += offsetX;

			layerObj.style.pixelTop  += offsetY;

		}

	}

	if( document.layers ){

		// Netscape Communicator 4.x

		layerObj.moveBy( offsetX, offsetY );

	}

}



//----------------------------------------------------------

//レイヤー絶対座標移動関数( moveToLAYER )

// [ 引数 ] LayerName : レイヤーのID名

//          offsetX   : レイヤーのX座標移動量

//          offsetY   : レイヤーのY座標移動量

// [戻り値] なし

//----------------------------------------------------------

function moveToLAYER( LayerName, offsetX, offsetY ){

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );

	if(document.getElementById){

		// Netscape6 & Internet Explorer5.x

		var oj = layerObj.style

		oj.left = offsetX  + 'px'

		oj.top  = offsetY  + 'px'

	}else{

		if( document.all ){

			// Internet Explorer4.x

			layerObj.style.pixelLeft = offsetX;

			layerObj.style.pixelTop  = offsetY;

		}

	}

	if( document.layers ){

		// Netscape Communicator 4.x

		layerObj.moveTo( offsetX, offsetY );

	}

}



//----------------------------------------------------------

//レイヤー表示・非表示関数( ShowHideLAYER )

// [ 引数 ] LayerName : レイヤーのID名

//          Attr      : 表示・非表示属性(show:表示 hide:非表示)

// [戻り値] なし

//----------------------------------------------------------

function ShowHideLAYER( LayerName, Attr ){

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );

	if( Attr == 'hide' ){

		// レイヤーの非表示

		if( document.getElementById  ){

			// Netscape6 & Internet Explorer5.x

			layerObj.style.visibility = 'hidden';

		}else{

			if( document.all    ){

				// Internet Explorer4.x

				layerObj.style.visibility = 'hidden';

			}

		}

		// Netscape Communicator 4.x

		if( document.layers ) layerObj.visibility = 'hide';

	}else{

		if( Attr == 'show' ){

			// レイヤーの表示

			if( document.getElementById  ){

				// Netscape6 & Internet Explorer5.x

				layerObj.style.visibility = 'visible';

			} else {

				if(document.all     ){

					// Internet Explorer4.x

					layerObj.style.visibility = 'visible';

				}

			}

			// Netscape Communicator 4.x

			if( document.layers ) layerObj.visibility = 'show';

		}else{

			if( document.getElementById  ){

				// Netscape6 & Internet Explorer5.x

				layerObj.style.visibility = Attr;

			} else {

				if(document.all     ){

					// Internet Explorer4.x

					layerObj.style.visibility = Attr;

				}

			}

			// Netscape Communicator 4.x

			if( document.layers ) layerObj.visibility = Attr;

		}

	}

}



//----------------------------------------------------------

//レイヤー表示・非表示状態取得( getShowHideLAYER )

// [ 引数 ] LayerName : レイヤーのID名

// [戻り値] 状態( true : 表示 / false : 非表示 )

//----------------------------------------------------------

function getShowHideLAYER( LayerName ){

	var pty = '';

	var retFlag = false;

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );
	

	if( document.getElementById  ){

		// Netscape6 & Internet Explorer5.x

		pty = layerObj.style.visibility;

	}else{

		if( document.all    ){

			// Internet Explorer4.x

			pty = layerObj.style.visibility;

		}

	}

	// Netscape Communicator 4.x

	if( document.layers ) pty = layerObj.visibility;

	

	if( pty == 'visible' || pty == 'show' ){

		retFlag = true;

	}

	

	return retFlag;

}





//----------------------------------------------------------

//レイヤーの高さ取得( getHeightLAYER )

// [ 引数 ] LayerName : レイヤーのID名

// [戻り値] レイヤーの高さ

//----------------------------------------------------------

function getHeightLAYER( LayerName ){

	var h = 0;

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );
	
	if( document.getElementById  ){

		// Netscape6 & Internet Explorer5.x

		h = layerObj.offsetHeight;

	}else{

		if( document.all    ){

			// Internet Explorer4.x

			h = layerObj.offsetHeight;

		}

	}

	// Netscape Communicator 4.x

	if( document.layers ) h = layerObj.clip.height;

	return h;

}



//----------------------------------------------------------

//レイヤーの幅取得( getHeightLAYER )

// [ 引数 ] LayerName : レイヤーのID名

// [戻り値] レイヤーの幅

//----------------------------------------------------------

function getWidthLAYER( LayerName ){

	var w = 0;

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );

	if( document.getElementById  ){

		// Netscape6 & Internet Explorer5.x

		w = layerObj.offsetWidth;

	}else{

		if( document.all    ){

			// Internet Explorer4.x

			w = layerObj.offsetWidth;

		}

	}

	// Netscape Communicator 4.x

	if( document.layers ) w = layerObj.clip.width;

	return w;

}



//----------------------------------------------------------

//レイヤーのY座標取得( getTopLAYER )

// [ 引数 ] LayerName : レイヤーのID名

// [戻り値] レイヤーのY座標

//----------------------------------------------------------

function getTopLAYER( LayerName ){

	var y = 0;

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );

	if( document.getElementById  ){

		// Netscape6 & Internet Explorer5.x

		y = parseInt(layerObj.style.top);

	}else{

		if( document.all    ){

			// Internet Explorer4.x

			y = layerObj.style.pixelTop;

		}

	}

	// Netscape Communicator 4.x

	if( document.layers ) y = layerObj.top;

	return y;

}



//----------------------------------------------------------

//レイヤーのX座標取得( getLeftLAYER )

// [ 引数 ] LayerName : レイヤーのID名

// [戻り値] レイヤーのX座標

//----------------------------------------------------------

function getLeftLAYER( LayerName ){

	var x = 0;

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );

	if( document.getElementById  ){

		// Netscape6 & Internet Explorer5.x

		x = parseInt(layerObj.style.left);

	}else{

		if( document.all    ){

			// Internet Explorer4.x

			x = layerObj.style.pixelLeft;

		}

	}

	// Netscape Communicator 4.x

	if( document.layers ) x = layerObj.left;

	return x;

}



//----------------------------------------------------------

//レイヤーのz-index値変更( setzIndexLAYER )

// [ 引数 ] LayerName : レイヤーのID名

//          zIndex    : z-index値(0が最背面となる)

// [戻り値] レイヤーのz-index値

//----------------------------------------------------------

function setZIndexLAYER( LayerName,zIndex ){

	var y = 0;

	var layerObj;
	
	layerObj = getObjLAYER ( LayerName );

	if( document.getElementById  ){

		// Netscape6 & Internet Explorer5.x

		layerObj.style.zIndex = zIndex;

	}else{

		if( document.all    ){

			// Internet Explorer4.x

			layerObj.style.zIndex = zIndex;

		}

	}

	// Netscape Communicator 4.x

	if( document.layers ) layerObj.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 layerObj;
	
	layerObj = getObjLAYER ( LayerName );

	if( document.getElementById ){

		var obj = layerObj;

		if( obj != null ){

			checkFlag = true;

		}

	}else{

		if( document.all ){

			if( uAgent.indexOf("MAC") >= 0 ){

				if( layerObj ){

					checkFlag = true;

				}

			}else{

				if( layerObj ){

					checkFlag = true;

				}

			}

		}

	}

	if( document.layers ){

		if( layerObj ){

			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;

}


