/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//■ファイル名    ：ORUFFunc
//■処理内容      ：ORUF用関数パッケージ
//■開発着手日    ：2007.05.03
//■更新内容      ：
//■備考          ：commonuseful.jsをORUF用にアレンジ。
//                ：ORUF実行ファイルを読み込む前に、必ずこれを最初に読み込むこと。
//                ：
//                ：
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
//--------------------------------------------------//
// オブジェクトの明示的宣言                         //
//  ※あくまでも、明示的でこの宣言は無意味。        //
//--------------------------------------------------//
// ORUFオブジェクト
var ORUF = new Object();
// TAG[ ORUF_UFunc ] //
// TAG[ ORUF_Event ] //
// TAG[ ORUF_String ] //
// TAG[ ORUF_List ] //
// TAG[ ORUF_Array ] //
// TAG[ ORUF_Date ] //
// TAG[ ORUF_Cookie ] //
// TAG[ ORUF_HTTP ] //
// TAG[ ORUF_StartUp ] //
// TAG[ ORUF_Func ] //
// TAG[ ORUF_Create ] //
// TAG[ ORUF_Status ] //
// TAG[ ORUF_Define ] //



// TAG[ ORUF_UFunc ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：使える関数オブジェクト（一時保存用）
//■処理内容      ：使える関数を一時定義
//■更新内容      ：
//■備考          ：一時的な保存場所として使う。
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.UFunc = {
	parent : ORUF,
	//                                                  //
	// Y方向の絶対位置の取得                            //
	//                                                  //
	getOffsetY : function( ARG_Obj, ARG_FLAG_All ){
		var objParent = ARG_Obj;
		var OffsetY   = objParent.offsetTop;
		if( navigator.appName.charAt( 0 ) == "N" && ARG_Obj.firstChild ){
			var i = 0;
			var FLAG_bMinus = false;
			for( i = 0; i < ARG_Obj.childNodes.length; i++ ){
				if( ARG_Obj.childNodes[ i ].style && ( ORUF.UFunc.getCurrentStyle( ARG_Obj.childNodes[ i ], "position" ) == "absolute" || ORUF.UFunc.getCurrentStyle( ARG_Obj.childNodes[ i ], "display" ) == "inline" || ARG_Obj.childNodes[ i ].tagName == "IMG" ) ){
					if( ARG_Obj.childNodes[ i ].tagName == "IMG" ){
						OffsetY -= ARG_Obj.childNodes[ i ].offsetHeight;
						FLAG_bMinus = true;
						break;
					}
				}else{
					break;
				}
			}
			if( FLAG_bMinus ){
				OffsetY += ARG_Obj.offsetHeight;
			}
		}
		while( objParent.offsetParent && ( ORUF.UFunc.getCurrentStyle( objParent.offsetParent, "position" ) != "relative" || ARG_FLAG_All ) ){
			objParent  = objParent.offsetParent;
			OffsetY   += objParent.offsetTop;
		}
		return OffsetY;
	},

	//                                                  //
	// X方向の絶対位置の取得                            //
	//                                                  //
	getOffsetX : function( ARG_Obj, ARG_FLAG_All ){
		var objParent = ARG_Obj;
		var OffsetX   = objParent.offsetLeft;
		while( objParent.offsetParent && ( ORUF.UFunc.getCurrentStyle( objParent.offsetParent, "position" ) != "relative" || ARG_FLAG_All ) ){
			objParent  = objParent.offsetParent;
			OffsetX   += objParent.offsetLeft;
		}
		return OffsetX;
	},
	//                                                  //
	// オブジェクトのプロトタイプコピー                 //
	//                                                  //
	copyPrototype : function( ARG_objTarget, ARG_objMaterial, ARG_FLAG_bDefine ){
		ARG_FLAG_bDefine = ORUF.UFunc.Argumenter( ARG_FLAG_bDefine, "boolean", true );
		var pptMaterial;
		var TEMP_objMaterial;
		if( ARG_FLAG_bDefine ){
			TEMP_objMaterial = new ARG_objMaterial();
			for( pptMaterial in TEMP_objMaterial ){
				ARG_objTarget.prototype[ pptMaterial ] = TEMP_objMaterial[ pptMaterial ];
			}
		}else{
			TEMP_objMaterial = ARG_objMaterial;
			for( pptMaterial in TEMP_objMaterial ){
				ARG_objTarget[ pptMaterial ] = TEMP_objMaterial[ pptMaterial ];
			}
		}
	},
	
	//                                                  //
	// デフォルト共通関数宣言                           //
	//                                                  //
	defaultFunction : function( ARG_obj ){
		ARG_obj.copyProperty = objORUFFunc.copyProperty;
	},

	//                                                  //
	// 引数の初期設定                                   //
	//                                                  //
	Argumenter : function( ARG_Value, ARG_SetType, ARG_Default ){
		if( ARG_Value != undefined && ARG_Value != null ){
			return ARG_Value;
		}else{
			switch( ARG_SetType + "" ){
				case "function" :
					if( objUFunc.checkVariable( ARG_Default ) ){
						return ARG_Default;
					}else{
						return function(){};
					}
					break;
				case "numeric" :
					if( objUFunc.checkVariable( ARG_Default ) ){
						return ARG_Default;
					}else{
						return 0;
					}
					break;
				case "boolean" :
					if( objUFunc.checkVariable( ARG_Default ) ){
						return ARG_Default;
					}else{
						return false;
					}
					break;
				default :
					if( objUFunc.checkVariable( ARG_Default ) ){
						return ARG_Default;
					}else{
						return "";
					}
					break;
			}
		}
	},

	//                                                  //
	// 変数の状態確認                                   //
	//                                                  //
	checkVariable : function( ARG_Variable, ARG_checkLevel ){
		if( ARG_checkLevel == undefined || ARG_checkLevel == null ){
			ARG_checkLevel = 2;
		}
		switch( ARG_checkLevel + "" ){
			case "1" :
				if( ARG_Variable != undefined ){
					return true;
				}
				break;
			case "2" :
				if( ARG_Variable != undefined && ARG_Variable != null ){
					return true;
				}
				break;
			case "3" :
				if( ARG_Variable != undefined && ARG_Variable != null && ARG_Variable != "" ){
					return true;
				}
				break;
			case "4" :
				if( ARG_Variable != undefined && ARG_Variable != null && ARG_Variable != 0 ){
					return true;
				}
				break;
			case "5" :
			default  :
				if( ARG_Variable != undefined && ARG_Variable != null && ARG_Variable != "" && ARG_Variable != 0 ){
					return true;
				}
				break;
		}
		return false;
	},

	//                                                  //
	// オブジェクトのアトリビュートの状態確認           //
	//                                                  //
	checkAttr : function( ARG_obj, ARG_attrName, ARG_checkLevel ){
		ARG_checkLevel = objUFunc.Argumenter( ARG_checkLevel, "numeric", 2 );
		switch( ARG_checkLevel + "" ){
			case "1" :
				if( ARG_obj.getAttribute( ARG_attrName ) != undefined ){
					return true;
				}
				break;
			case "2" :
				if( ARG_obj.getAttribute( ARG_attrName ) != undefined && ARG_obj.getAttribute( ARG_attrName ) != null ){
					return true;
				}
				break;
			case "3" :
				if( ARG_obj.getAttribute( ARG_attrName ) != undefined && ARG_obj.getAttribute( ARG_attrName ) != null && ARG_obj.getAttribute( ARG_attrName ) != "" ){
					return true;
				}
				break;
			case "4" :
				if( ARG_obj.getAttribute( ARG_attrName ) != undefined && ARG_obj.getAttribute( ARG_attrName ) != null && ARG_obj.getAttribute( ARG_attrName ) != 0 ){
					return true;
				}
				break;
			case "5" :
			default  :
				if( ARG_obj.getAttribute( ARG_attrName ) != undefined && ARG_obj.getAttribute( ARG_attrName ) != null && ARG_obj.getAttribute( ARG_attrName ) != "" && ARG_obj.getAttribute( ARG_attrName ) != 0 ){
					return true;
				}
				break;
		}
		return false;
	},

	//                                                  //
	// オブジェクトのアトリビュートの自動設定           //
	//                                                  //
	setAttrAuto : function( ARG_obj, ARG_attrName, ARG_attrData, ARG_SetType, ARG_checkLevel ){
		var AttrData     = null;
		ARG_checkLevel = objUFunc.Argumenter( ARG_checkLevel, "numeric", 2 );
		if( this.checkAttr( ARG_obj, ARG_attrName, ARG_checkLevel ) ){
			AttrData = ARG_obj.getAttribute( ARG_attrName );
			eval( "ARG_obj." + ARG_attrName + " = AttrData" );
			if( !this.checkValueType( AttrData, ARG_SetType ) ){
				eval( "ARG_obj." + ARG_attrName + " = ARG_attrData" );
			}
			return true;
		}else{
			eval( "ARG_obj." + ARG_attrName + " = ARG_attrData" );
			return false;
		}
	},
	
	//                                                  //
	// オブジェクトのアトリビュートの取得               //
	//                                                  //
	getAttr : function( ARG_obj, ARG_attrName, ARG_attrData, ARG_SetType, ARG_checkLevel ){
		var AttrData   = null;
		var returnData = null;
		ARG_checkLevel = objUFunc.Argumenter( ARG_checkLevel, "numeric", 2 );
		if( this.checkAttr( ARG_obj, ARG_attrName, ARG_checkLevel ) ){
			AttrData   = ARG_obj.getAttribute( ARG_attrName );
			returnData = AttrData;
			if( !this.checkValueType( AttrData, ARG_SetType ) ){
				returnData = ARG_attrData;
			}
		}else{
			returnData = ARG_attrData;
		}
		return returnData;
	},

	//                                                  //
	// 値のタイプチェック                               //
	//                                                  //
	checkValueType : function( ARG_Data, ARG_CheckType ){
		var FLAG_bRegular = false;
		switch( ARG_CheckType + "" ){
			case "numeric" :
				if( !isNaN( ARG_Data ) ){
					FLAG_bRegular = true;
				}
				break;
			case "yesno" :
				if( objList.Find( "yes,no", ARG_Data ) ){
					FLAG_bRegular = true;
				}
				break;
			case "all" :
			default :
				FLAG_bRegular = true;
				break;
		}
		return FLAG_bRegular;
	},

	//                                                  //
	// 値の自動設定                                     //
	//                                                  //
	setAuto : function( ARG_Object, ARG_Property, ARG_DefaultValue, ARG_CheckType, ARG_checkLevel ){
		var ValueData = eval( "ARG_Object." + ARG_Property );
		ARG_checkLevel = objUFunc.Argumenter( ARG_checkLevel, "numeric", 2 );
		if( this.checkVariable( ValueData, ARG_checkLevel ) && this.checkValueType( ValueData, ARG_CheckType ) ){
			return true;
		}else{
			eval( "ARG_Object." + ARG_Property + " = ARG_DefaultValue" );
			return false;
		}
	},

	//                                                  //
	// マウスのエリア内存在決定                         //
	//                                                  //
	IsMouseAreaOver : function( ARG_objBox, ARG_objMouse, ARG_ExtraSpaceX, ARG_ExtraSpaceY ){
		ARG_ExtraSpaceX = objUFunc.Argumenter( ARG_ExtraSpaceX, "numeric", 0 );
		ARG_ExtraSpaceY = objUFunc.Argumenter( ARG_ExtraSpaceY, "numeric", 0 );
		if( ARG_objBox.offsetX - ARG_ExtraSpaceX <= ARG_objMouse.clientX && ARG_objMouse.clientX <= ARG_objBox.offsetX + ARG_objBox.offsetWidth + ARG_ExtraSpaceX ){
			if( ARG_objBox.offsetY - ARG_ExtraSpaceY <= ARG_objMouse.clientY && ARG_objMouse.clientY <= ARG_objBox.offsetY + ARG_objBox.offsetHeight + ARG_ExtraSpaceY ){
				return true;
			}
		}
		return false;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getWindowWidth
	//■処理内容      ：ウインドウ幅の取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getWindowWidth : function(){
		if( window.innerWidth ){
			return window.innerWidth;
		}else{
			return document.documentElement.offsetWidth;
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getWindowHeight
	//■処理内容      ：ウインドウ高さの取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getWindowHeight : function(){
		if( window.innerHeight ){
			return window.innerHeight;
		}else{
			return document.documentElement.offsetHeight - 4;
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getCurrentStyle
	//■処理内容      ：現在のスタイル取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getCurrentStyle : function( ARG_obj, ARG_style ){
		if( ARG_obj.currentStyle ){
			ARG_style = ORUF.String.camelize( ARG_style );
			return ARG_obj.currentStyle[ ARG_style ];
		}else if( document.defaultView ){
			ARG_style = ORUF.String.deCamelize( ARG_style );
			return document.defaultView.getComputedStyle( ARG_obj, null ).getPropertyValue( ARG_style );
		}else{
			ARG_style = ORUF.UFunc.camelize( ARG_style );
			return ARG_obj.style[ ARG_style ];
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：removeFindChars
	//■処理内容      ：見つけた文字を削除
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	removeFindChars : function( ARG_BaseString, ARG_RemoveString, ARG_Type ){
		var iFind         = 0;
		var RemovedString = ARG_BaseString;
		ARG_Type          = ORUF.UFunc.Argumenter( ARG_Type, "all", "one" );
		var FLAG_bOne     = ARG_Type.toLowerCase() == "one" ? true : false;
		iFind = RemovedString.indexOf( ARG_RemoveString );
		while( iFind != -1 ){
			RemovedString = this.removeChars( RemovedString, iFind, ARG_RemoveString.length )
			if( FLAG_bOne ){
				break;
			}
			iFind = RemovedString.indexOf( ARG_RemoveString );
		}
		return RemovedString;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：removeChars
	//■処理内容      ：見つけた文字を削除
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	removeChars : function( ARG_BaseString, ARG_iStart, ARG_iLen ){
		var BeforeString = "";
		var AfterString  = "";
		if( ARG_iStart != 0 ){
			BeforeString = ARG_BaseString.substring( 0, ARG_iStart );
		}
		if( ARG_iStart + ARG_iLen != ARG_BaseString.length ){
			AfterString = ARG_BaseString.substring( ARG_iStart + ARG_iLen, ARG_BaseString.length );
		}
		return BeforeString + "" + AfterString;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：IsArray
	//■処理内容      ：配列かどうか確認する
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	IsArray : function( ARG_Object ){
		return ( ( typeof ARG_Object == "object" ) && ( ARG_Object.constructor == Array ) )
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：removeElement
	//■処理内容      ：要素の削除
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	removeElement : function( ARG_obj ){
		ARG_obj.parentNode.removeChild( ARG_obj );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：removeElementAll
	//■処理内容      ：要素の削除（要素内も含む）
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	removeElementAll : function( ARG_obj, ARG_objForm ){
		while( ARG_obj.firstChild ){
			ORUF.UFunc.removeElementAll( ARG_obj.firstChild, ARG_objForm );
		}
		if( ARG_objForm && !ORUF.IE && ARG_obj.tagName && ORUF.List.Find( "input,select,textarea,button", ARG_obj.tagName.toLowerCase() ) ){
			ARG_objForm[ ARG_obj.name ] = null;
		}
		this.removeElement( ARG_obj );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getRandomRange
	//■処理内容      ：指定範囲内からランダム値の取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getRandomRange : function( ARG_iStart, ARG_iEnd ){
		return Math.floor( ( ARG_iEnd - ARG_iStart + 1 ) * Math.random() + ARG_iStart );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：convNumeric
	//■処理内容      ：数値へ変換する
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：整数のみ
	//                ：
	─────────────────────────────────────────────────*/
	convNumeric : function( ARG_iNumeric ){
		var i           = 0;
		var iLength     = 0;
		var iNumeric    = 0;
		var FLAG_bMinus = false;
		ARG_iNumeric   += "";
		if( ARG_iNumeric.indexOf( "-" ) != -1 ){
			FLAG_bMinus = true;
			ARG_iNumeric = ARG_iNumeric.substring( 1, ARG_iNumeric.length );
		}
		iLength    = ARG_iNumeric.length;
		if( ARG_iNumeric.match( /^\d+$/ ) ){
			for( i = 0; i < iLength - 1; i++ ){
				iNumeric += ( ARG_iNumeric.charCodeAt( i ) - 48 ) * Math.pow( 10, iLength - i - 1 );
			}
			iNumeric += ARG_iNumeric.charCodeAt( iLength - 1 ) - 48;
		}
		if( FLAG_bMinus ){
			iNumeric = 0 - iNumeric;
		}
		return iNumeric;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：findSelectOption
	//■処理内容      ：SELECTタグで選択しているものを探す
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	findSelectOption : function( ARG_objSelect, ARG_FindString, ARG_iPosition, ARG_iDefault ){
		var i = 0;
		ARG_iPosition = ORUF.UFunc.Argumenter( ARG_iPosition, "numeric", 0 );
		ARG_iDefault  = ORUF.UFunc.Argumenter( ARG_iDefault,  "numeric", 0 );
		if( ARG_objSelect.length ){
			for( i = ARG_iPosition; i < ARG_objSelect.length; i++ ){
				if( ARG_objSelect[ i ].value + "" === ARG_FindString + "" ){
					return i;
				}
			}
		}else{
			alert( "検索できないSELECTBOXです" );
		}
		return ARG_iDefault;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：findChecked
	//■処理内容      ：チェックボタンで選択している値を返す
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	findChecked : function( ARG_objInput ){
		var i       = 0;
		var aryTemp = new Array();
		for( i = 0; i < ARG_objInput.length; i++ ){
			if( ARG_objInput[ i ].checked ){
				aryTemp[ aryTemp.length ] = ARG_objInput[ i ].value;
			}
		}
		return aryTemp.join( "," );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：scroll2Object_Realtime
	//■処理内容      ：指定したオブジェクトへリアルタイムスクロールで移動
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	scroll4Object_Realtime : function( ARG_objTarget, ARG_iLoop ){
		ARG_iLoop = ORUF.UFunc.Argumenter( ARG_iLoop, "numeric", 10 );
		if( ORUF.Itv_scroll4Object ){
			clearInterval( ORUF.Itv_scroll4Object );
		}
		ARG_objTarget.FLAG_bScroll    = true;
		ARG_objTarget.FLAG_bScrollEnd = false;
		ARG_objTarget.iLoop           = ARG_iLoop;
		ARG_objTarget.findScroll      = ORUF.Func.findScroll;
		ARG_objTarget.objScroll       = ARG_objTarget.findScroll();
		if( ARG_objTarget.objScroll.tagName.toLowerCase() == "html" ){
			ARG_objTarget.restScroll      = ORUF.UFunc.getOffsetY( ARG_objTarget ) - document.body.scrollTop;
		}else{
			ARG_objTarget.restScroll      = ORUF.UFunc.getOffsetY( ARG_objTarget ) - ARG_objTarget.objScroll.scrollTop;
		}
		ARG_objTarget.iPace           = ARG_objTarget.restScroll / ARG_objTarget.iLoop;
		var func_Scroll = function(){
			if( ARG_objTarget.FLAG_bScroll ){
				if( ARG_objTarget.objScroll.tagName.toLowerCase() == "html" ){
					window.scrollBy( 0, ARG_objTarget.iPace );
				}else{
					ARG_objTarget.objScroll.scrollTop += ARG_objTarget.iPace;
				}
				ARG_objTarget.restScroll -= ARG_objTarget.iPace;
				ARG_objTarget.iLoop--;
				if( ARG_objTarget.iLoop <= 0 || Math.abs( ARG_objTarget.restScroll ) < Math.abs( ARG_objTarget.iPace ) ){
					if( ARG_objTarget.objScroll.tagName.toLowerCase() == "html" ){
						window.scrollBy( 0, ARG_objTarget.restScroll );
					}else{
						ARG_objTarget.objScroll.scrollTop += ARG_objTarget.restScroll;
					}
					ARG_objTarget.FLAG_bScroll = false;
				}
			}
			if( !ARG_objTarget.FLAG_bScroll ){
				ARG_objTarget.FLAG_bScrollEnd = false;
				clearInterval( ORUF.Itv_scroll4Object );
			}
		}
		ORUF.Itv_scroll4Object = setInterval( func_Scroll, 30 );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：createUniqueCode
	//■処理内容      ：ユニークコードの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	createUniqueCode : function(){
		var dtNow = new Date();
		return ORUF.Date.DateFormat( dtNow, "yyyymmdd" ) + "" + ORUF.Date.TimeFormat( dtNow, "HHmmssl" ) + "" + ORUF.UFunc.getRandomRange( 0, 9999 );
	}
}

// TAG[ ORUF_Event ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：イベント関数オブジェクト
//■処理内容      ：イベント関連の関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.Event = {
	parent    : ORUF,
	strAlways : new Object(),
	/*─────────────────────────────────────────────────
	//■関数名        ：addListener
	//■処理内容      ：イベントの処理追加
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	addListener : function( ARG_Caller, ARG_EventType, ARG_Function, ARG_Element, ARG_FLAG_KeepObject, ARG_bFLAG_Always ){
		var objAlways        = null;
		var sEventType       = ARG_EventType.toLowerCase();
		var TEMP_objFunction = null;
		// どのオブジェクトを基準に呼び出すか
		var Element   = ARG_Caller;
		if( ORUF.UFunc.checkVariable( ARG_Element, 2 ) ){
			Element = ARG_Element;
		}
		// （未指定含み、）指定のオブジェクトから呼び出すようにする
		if( ARG_FLAG_KeepObject ){
			// 呼び出し元のオブジェクトも取得できるようにする場合
			var WrappedFunction = function( e ){
				return ARG_Function.call( Element, e, ARG_Caller );
			}
		}else{
			var WrappedFunction = function( e ){
				return ARG_Function.call( Element, e );
			}
		}
		// 実行がキャンセルされても常に実行されるようにしたいイベントの記録
		if( ARG_bFLAG_Always ){
			if( !this.strAlways[ sEventType ] ){
				this.strAlways[ sEventType ] = new Array();
			}
			objAlways = this.strAlways[ sEventType ];
			objAlways[ objAlways.length ] = WrappedFunction;
		}
		/*
		// 実際のイベント記録（ただし、呼び出し順を同じにする処理を行う）
		if( ARG_Caller.aryFunctionPack   &&   ARG_Caller.aryFunctionPack[ sEventType ] ){
			// 専用配列へイベントリスナーの登録
			ARG_Caller.aryFunctionPack[ sEventType ].push( WrappedFunction );
		}else if( ARG_Caller.objFunctionPack   &&   ARG_Caller.objFunctionPack[ sEventType ] ){
			// イベントリスナーを１つ登録済みの場合、イベントリスナーを削除して、配列で順番をそろえる
			TEMP_objFunction = ARG_Caller.objFunctionPack[ sEventType ];
			this.removeListener( ARG_Caller, sEventType, TEMP_objFunction );
			if( !ARG_Caller.aryFunctionPack ){
				ARG_Caller.aryFunctionPack = new Object();
			}
			ARG_Caller.aryFunctionPack[ sEventType ]      = new Array();
			ARG_Caller.aryFunctionPack[ sEventType ].push( TEMP_objFunction );
			ARG_Caller.aryFunctionPack[ sEventType ].push( WrappedFunction );
			ARG_Caller.objFunctionPack[ sEventType ]      = null;
			if( !ARG_Caller.objNewCallEvent ){
				ARG_Caller.objNewCallEvent               = new Object();
			}
			ARG_Caller.objNewCallEvent[ sEventType ] = new this.defineCallEvent( sEventType );
			this.addEvent( ARG_Caller, sEventType, ARG_Caller.objNewCallEvent[ sEventType ], false );
		}else{
			*/
			// イベントリスナーで記録
			this.addEvent( ARG_Caller, sEventType, WrappedFunction, false );
		/*
			if( !ARG_Caller.objFunctionPack ){
				ARG_Caller.objFunctionPack = new Object();
			}
			ARG_Caller.objFunctionPack[ sEventType ] = WrappedFunction;
		}
		*/
		return WrappedFunction;
	},
	
	/*─────────────────────────────────────────────────
	//■関数名        ：addEvent
	//■処理内容      ：イベントの処理追加
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	addEvent : function(){
		if( window.addEventListener ){
			return function( ARG_Element, ARG_EventType, ARG_Function, ARG_Capture ){
				ARG_Element.addEventListener( ARG_EventType, ARG_Function, ( ARG_Capture ) );
			};
		}else if( window.attachEvent ){
			return function( ARG_Element, ARG_EventType, ARG_Function ){
				ARG_Element.attachEvent( "on" + ARG_EventType, ARG_Function );
			};
		}else{
			return function(){};
		}
	}(),
	/*─────────────────────────────────────────────────
	//■関数名        ：removeListener
	//■処理内容      ：イベントの処理削除
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	removeListener : function( ARG_Caller, ARG_EventType, ARG_Function, ARG_Element ){
		var i           = 0;
		var aryFunction = null;
		var sEventType  = ARG_EventType.toLowerCase();
		// 実行がキャンセルされても常に実行されるようにしたいイベントの削除
		// ARG_bFLAG_Always
		/*
		// 実際のイベント削除（ただし、呼び出し順を同じにする処理があるため、特別処理）
		if( ARG_Caller.aryFunctionPack   &&   ARG_Caller.aryFunctionPack[ sEventType ] ){
			aryFunction = ARG_Caller.aryFunctionPack[ sEventType ];
			for(   i = aryFunction.length - 1;   -1 < i;   i--   ){
				if( aryFunction[ i ] == ARG_Function ){
					ORUF.Array.del( aryFunction, i );
					break;
				}
			}
			if( aryFunction.length == 0 ){
				this.removeEvent( ARG_Caller, sEventType, ARG_Caller.objNewCallEvent, false );
				ARG_Caller.aryFunctionPack[ sEventType ] = null;
			}
		}else{
		*/
			// イベントリスナーで削除
			this.removeEvent( ARG_Caller, sEventType, ARG_Function, false );
		/*
			if( ARG_Caller.objFunctionPack   &&   ARG_Caller.objFunctionPack[ sEventType ] ){
				ARG_Caller.objFunctionPack[ sEventType ] = null;
			}
		}
		*/
		//return WrappedFunction;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：removeEvent
	//■処理内容      ：イベントの処理削除
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	removeEvent : function(){
		if( window.removeEventListener ){
			return function( ARG_Element, ARG_EventType, ARG_Function, ARG_Capture ){
				ARG_Element.removeEventListener( ARG_EventType, ARG_Function, ( ARG_Capture ) );
			};
		}else if( window.detachEvent ){
			return function( ARG_Element, ARG_EventType, ARG_Function ){
				ARG_Element.detachEvent( "on" + ARG_EventType, ARG_Function );
			};
		}else{
			return function(){};
		}
	}(),
	/*─────────────────────────────────────────────────
	//■関数名        ：Cancel
	//■処理内容      ：イベントのキャンセル
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	Cancel : function( e ){
		if( window.removeEventListener ){
			e.preventDefault();  // デフォルトのアクションをキャンセル //
			e.stopPropagation(); // このイベントが階層を上って伝播するのを防ぐ //
		}else if( window.detachEvent ){
			e.returnValue  = false; // デフォルトのアクションをキャンセル //
			e.cancelBubble = true;  // このイベントが階層を上って伝播するのを防ぐ //
		}else{
			return false;
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：Always
	//■処理内容      ：常に発生
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■this          ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	Always : function( ARG_sEventType ){
		var i         = 0;
		if( this.strAlways[ ARG_sEventType ] ){
			var objAlways = this.strAlways[ ARG_sEventType ];
			for( i = 0; i < objAlways.length; i++ ){
				objAlways[ i ]();
			}
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：defineCallEvent
	//■処理内容      ：イベント呼び出し関数オブジェクト作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■this          ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	defineCallEvent : function( ARG_sEventType ){
		var sEventType  = ARG_sEventType;
		var newFunction = function(){
			var i           = 0;
			var aryFunction = this.aryFunctionPack[ sEventType ];
			for( i = 0; i < aryFunction.length; i++ ){
				aryFunction[ i ]();
			}
		};
		return newFunction;
	}
	
}
ORUF.Event.add = ORUF.Event.addListener;


// TAG[ ORUF_String ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：文字列関数オブジェクト
//■処理内容      ：文字列関連関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.String = {
	parent : ORUF,
	/*─────────────────────────────────────────────────
	//■関数名        ：camelize
	//■処理内容      ：ハイフン＋小文字を大文字にする
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：background-image → backgroundImage
	//                ：
	─────────────────────────────────────────────────*/
	camelize : function( ARG_sString ){
		return ARG_sString.replace( /-([a-z])/g, function( $0, $1 ){ return $1.toUpperCase(); } );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：deCamelize
	//■処理内容      ：大文字をハイフン＋小文字にする
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：backgroundImage → background-image
	//                ：
	─────────────────────────────────────────────────*/
	deCamelize : function( ARG_sString ){
		return ARG_sString.replace( /[A-Z]/g, function( $0 ){ return "-" + $0.toLowerCase(); } );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：deCamelize
	//■処理内容      ：大文字をハイフン＋小文字にする
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：backgroundImage → background-image
	//                ：
	─────────────────────────────────────────────────*/
	getRegularString : function( ARG_sString, ARG_sType ){
		switch( ARG_sType.toLowerCase() ){
			case "url" :
				return ARG_sString.replace( /(.*)(http\:[\w\.\~\-\/\?\&\=\@\;\##\:\%]+)(.*)/g, function( $0, $1, $2, $3 ){ return $2; } );
				break;
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getJustFitCut
	//■処理内容      ：文字列をちょうど合うようにカットする
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■this          ：ORUF.String
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getJustFitCut : function( ARG_sString, ARG_HTML_Element, ARG_sLastString, ARG_iSpace ){
		var iMaxLoop   = 300;
		var iMaxWidth  = ARG_HTML_Element.offsetWidth - ARG_iSpace;
		var sCutString = ARG_sString;
		if( !this.HTML_String ){
			this.HTML_StringDiv                       = document.createElement( "div" );
			this.HTML_StringDiv.style.position        = "absolute";
			this.HTML_StringDiv.style.top             = "0px";
			this.HTML_StringDiv.style.left            = "0px";
			this.HTML_StringDiv.style.width           = "100%";
			this.HTML_StringDiv.style.marginLeft      = "-9999px";
			this.HTML_String = document.createElement( "span" );
			this.HTML_StringDiv.appendChild( this.HTML_String );
			document.body.appendChild( this.HTML_StringDiv );
		}
		this.HTML_StringDiv.style.display = "block";
		this.HTML_String.style.fontSize   = ORUF.UFunc.getCurrentStyle( ARG_HTML_Element, "fontSize" );
		this.HTML_String.style.fontFamily = ORUF.UFunc.getCurrentStyle( ARG_HTML_Element, "fontFamily" );
		this.HTML_String.style.padding    = ORUF.UFunc.getCurrentStyle( ARG_HTML_Element, "padding" );
		this.HTML_String.innerHTML        = sCutString;
		
		while( iMaxWidth < this.HTML_String.offsetWidth ){
			iMaxLoop--;
			sCutString = sCutString.substring( 0, sCutString.length - 1 );
			this.HTML_String.innerHTML = sCutString + ARG_sLastString;
			if( iMaxLoop === 0 ){
				break;
			}
		}
		this.HTML_StringDiv.style.display = "none";
		return sCutString + ( iMaxLoop < 300 ? ARG_sLastString : "" );
	}
}

// TAG[ ORUF_List ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：リスト関数オブジェクト
//■処理内容      ：リスト関連関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.List = {
	parent : ORUF,
	//                                                  //
	// ListGetAt                                        //
	//                                                  //
	GetAt : function( ARG_List, ARG_n, ARG_p ){
		ARG_p = objUFunc.Argumenter( ARG_p, "", "," );
		var i = 0;
		var j = 0;
		var n = 0;
		while( ARG_n != n && i != -1){
			i = ARG_List.indexOf( ARG_p, i ) + ARG_p.length;
			if( i != -1 ){
				n++
			}
		}
		j = ARG_List.indexOf( ARG_p, i );
		if( j == -1 ){
			j = ARG_List.length;
		}
		return ARG_List.substring( i, j - 1 );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：Find
	//■処理内容      ：リストから文字列があるか
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	Find : function( ARG_List, ARG_String, ARG_p ){
		var aryTEMP = new Array();
		ARG_p   = objUFunc.Argumenter( ARG_p, "", "," );
		aryTEMP = ARG_List.split( ARG_p );
		return objArray.Find( aryTEMP, ARG_String );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：Add
	//■処理内容      ：リスト同士を結合する
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	Add : function( ARG_List, ARG_lstAdd, ARG_FLAG_bNoDupli, ARG_p ){
		var lstJoin       = ARG_List + "," + ARG_lstAdd;
		ARG_FLAG_bNoDupli = objUFunc.Argumenter( ARG_FLAG_bNoDupli, "boolean", false );
		ARG_p             = objUFunc.Argumenter( ARG_p, "", "," );
		if( ARG_FLAG_bNoDupli ){
			lstJoin           = this.removeDupli( lstJoin, ARG_p );
		}
		return lstJoin;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：removeDupli
	//■処理内容      ：重複排除
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	removeDupli : function( ARG_List, ARG_p ){
		var aryTEMP = new Array();
		var aryList = new Array();
		var iTEMP   = 0;
		var i       = 0;
		var j       = 0;
		ARG_p       = objUFunc.Argumenter( ARG_p, "", "," );
		aryTEMP     = ARG_List.split( ARG_p );
		iTEMP       = aryTEMP.length;
		for( i = 0; i < iTEMP; i++ ){
			if( !ORUF.Array.Find( aryList, aryTEMP[ i ] ) ){
				aryList.push( aryTEMP[ i ] );
			}
		}
		return aryList.join( ARG_p );
	}
	
}

// TAG[ ORUF_Array ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：配列関数オブジェクト
//■処理内容      ：配列関連関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.Array = {
	parent : ORUF,
	//                                                  //
	// Find                                             //
	//                                                  //
	Find : function( ARG_ary, ARG_string, ARG_Attr, ARG_iStart ){
		var i        = 0;
		ARG_iStart   = ORUF.UFunc.Argumenter( ARG_iStart, "numeric", 0 );
		var TMP_nAry = ARG_ary.length;
		for( i = ARG_iStart; i < TMP_nAry; i++ ){
			if( ARG_Attr ){ // ARG_Attr で、複数の[.]を利用することを考えて、evalを利用する。
				if( eval( "ARG_ary[ i ]." + ARG_Attr + " == ARG_string" ) ){
					return i + 1;
				}
			}else{
				if( ARG_ary[ i ] == ARG_string ){
					return i + 1;
				}
			}
		}
		return 0;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：del
	//■処理内容      ：削除
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	del : function( ARG_Array, ARG_iDel ){
		var i = 0;
		for( i = ARG_iDel; i < ARG_Array.length - 1; i++ ){
			ARG_Array[ i ] = ARG_Array[ i + 1 ];
		}
		ARG_Array.length--;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：ToList
	//■処理内容      ：リスト変換
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	ToList : function( ARG_Array, ARG_Attr, ARG_FLAG_bDontNull ){
		var i      = 0;
		var aryNew = new Array();
		for( i = 0; i < ARG_Array.length; i++ ){
			if( ARG_FLAG_bDontNull && eval( "ARG_Array[ i ]." + ARG_Attr ) ){
				aryNew[ aryNew.length ] = eval( "ARG_Array[ i ]." + ARG_Attr );
			}
		}
		return aryNew.join( "," );
	}

}

// TAG[ ORUF_Date ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：日付関数オブジェクト
//■処理内容      ：日付関連関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.Date = {
	parent : ORUF,
	Second : 1000,
	Minute : this.Second * 60,
	Hour   : this.Minute * 60,
	Hour9  : this.Hour   * 9,
	Day    : this.Hour   * 24,
	//                                                  //
	// 日付フォマット変数                               //
	//                                                  //
	aryMonthString      : new Array( "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ),
	aryWeekDayString    : new Array( "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ),
	aryWeekDayJPString  : new Array( "日", "月", "火", "水", "木", "金", "土" ),
	
	//                                                  //
	// 日付オブジェクト作成                             //
	//                                                  //
	getDateObject : function( ARG_Date ){
		var Date     = new Object();
		Date.time    = ARG_Date.getTime();
		Date.year    = ARG_Date.getYear();
		if( Date.year < 1900 ){
			Date.year  = Date.year + 1900;
		}
		Date.date    = ARG_Date.getDate();
		Date.month   = ARG_Date.getMonth() + 1;
		Date.day     = ARG_Date.getDay();
		Date.hours   = ARG_Date.getHours();
		Date.minutes = ARG_Date.getMinutes();
		Date.seconds = ARG_Date.getSeconds();
		return Date;
	},
	
	//                                                  //
	// 英表記の月文字取得                               //
	//                                                  //
	getMonthString : function( ARG_Date ){
		return this.aryMonthString[ ARG_Date.getMonth() ];
	},
	
	//                                                  //
	// 英表記の曜日文字取得                             //
	//                                                  //
	getWeekDayString : function( ARG_Date ){
		return this.aryWeekDayString[ ARG_Date.getDay() ];
	},
	
	//                                                  //
	// 日本表記の曜日文字取得                           //
	//                                                  //
	getWeekDayJPString : function( ARG_Date ){
		return this.aryWeekDayJPString[ ARG_Date.getDay() ];
	},
	
	//                                                  //
	// 日時用ゼロパッディング                           //
	//                                                  //
	getZeroPadding : function( ARG_DateTime ){
		ARG_DateTime = "0" + ARG_DateTime;
		return ARG_DateTime.substr( ARG_DateTime.length - 2, 2 );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：createDateSpan
	//■処理内容      ：日時の期間を作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	createDateSpan : function( ARG_Date, ARG_CalendarType, ARG_Option ){
		var Day       = 24 * 60 * 60 * 1000;
		var dtNew     = new Object();
		dtNew.dtStart = new Date();
		dtNew.dtEnd   = new Date();
		switch( ARG_CalendarType.toLowerCase() ){
			case "week" :
				if( ARG_Date.getDay() + 1 < ARG_Option ){
					ARG_Option -= 7 ;
				}
				dtNew.dtStart.setTime( ARG_Date.getTime() - Day * ( ARG_Date.getDay() + ( 1 - ARG_Option ) ) );
				dtNew.dtEnd.setTime( dtNew.dtStart.getTime() + Day * 6 ); 
				break;
		}
		dtNew.dtStart.setHours( 0 );
		dtNew.dtStart.setMinutes( 0 );
		dtNew.dtStart.setSeconds( 0 );
		dtNew.dtEnd.setHours( 0 );
		dtNew.dtEnd.setMinutes( 0 );
		dtNew.dtEnd.setSeconds( 0 );
		return dtNew;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：DateFormat
	//■処理内容      ：日付のフォーマット作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	DateFormat : function( ARG_dtDate, ARG_Format, ARG_Option ){
		var Date          = new Object();
		var rDate         = ARG_Format;
		var aryMask       = new Array( "yyyy", "yy", "y", "mm", "m", "dddd", "dd", "d", "ww", "w6", "w", "jj", "jp" );
		var i             = 0;
		var FLAG_bRokki   = false;
		var FLAG_bWareki  = false;
		var FLAG_bWareki0 = false;
		if( ARG_Format.indexOf( "w6" ) != -1 ){
			FLAG_bRokki = true;
		}
		if( ARG_Format.indexOf( "jp" ) != -1 ){
			FLAG_bWareki = true;
		}
		if( ARG_Format.indexOf( "jj" ) != -1 ){
			FLAG_bWareki0 = true;
		}
		ARG_Option   = ORUF.UFunc.Argumenter( ARG_Option, "numeric", 1 );
		Date.yyyy    = ARG_dtDate.getYear();
		if( Date.yyyy < 1900 ){
			Date.yyyy  += 1900;
		}
		Date.y    = Date.yyyy % 100;
		Date.yy    = ORUF.Date.getZeroPadding( Date.y );
		Date.d     = ARG_dtDate.getDate();
		Date.dd    = ORUF.Date.getZeroPadding( Date.d );
		Date.m     = ARG_dtDate.getMonth() + 1;
		Date.mm    = ORUF.Date.getZeroPadding( Date.m );
		Date.dddd  = ORUF.Date.getWeekDayJPString( ARG_dtDate );
		Date.w     = ARG_dtDate.getDay();
		Date.ww    = parseInt( ( ( Date.d - 1 ) + ( 6 - ( ( Date.d + 1 ) - ARG_Option + 7 ) % 7 ) ) / 7 ) + 1;
		if( FLAG_bRokki ){
			qrec( Date.yyyy, Date.m, Date.d );
			Date.w6 = txt;
		}else{
			Date.w6 = 0;
		}
		if( FLAG_bWareki ){
			Date.jp = ORUF.Date.getSeireki2Wareki( ARG_dtDate );
		}else{
			Date.jp = 0;
		}
		if( FLAG_bWareki0 ){
			Date.jj = ORUF.Date.getSeireki2Wareki( ARG_dtDate, true );
		}else{
			Date.jj = 0;
		}
		for( i = 0; i < aryMask.length; i++ ){
			rDate = rDate.replace( aryMask[ i ], eval( "Date." + aryMask[ i ] ) );
		}
		return rDate + "";
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：TimeFormat
	//■処理内容      ：時間のフォーマット作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	TimeFormat : function( ARG_dtDate, ARG_Format ){
		var Time     = new Object();
		var rTime    = ARG_Format;
		var aryMask  = new Array( "HH", "hh", "mm", "m", "ss", "s", "l" );
		var i        = 0;
		Time.HH    = ARG_dtDate.getHours();
		Time.hh    = Time.HH % 12;
		Time.HH    = ORUF.Date.getZeroPadding( Time.HH );
		Time.hh    = ORUF.Date.getZeroPadding( Time.hh );
		Time.m     = ARG_dtDate.getMinutes();
		Time.mm    = ORUF.Date.getZeroPadding( Time.m );
		Time.s     = ARG_dtDate.getSeconds();
		Time.ss    = ORUF.Date.getZeroPadding( Time.s );
		Time.l     = ARG_dtDate.getMilliseconds();
		for( i = 0; i < aryMask.length; i++ ){
			rTime = rTime.replace( aryMask[ i ], eval( "Time." + aryMask[ i ] ) );
		}
		return rTime + "";
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：createDateTimeFormat
	//■処理内容      ：日時型のフォーマット作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	createDateTimeFormat : function( ARG_DateTimeString ){
		var TEMP_num     = 0;
		var TEMP_sNum    = "";
		var DateTimeNum  = "";
		var dtDate       = new Date();
		ARG_DateTimeString += "";
		while( TEMP_num = ARG_DateTimeString.match( /\d+/ ) ){
			TEMP_num  = TEMP_num + ""
			TEMP_sNum = TEMP_num;
			if( TEMP_sNum.length == 1 ){
				TEMP_sNum     = ORUF.Date.getZeroPadding( TEMP_sNum );
			}
			DateTimeNum += TEMP_sNum + "";
			ARG_DateTimeString = ORUF.UFunc.removeFindChars( ARG_DateTimeString, TEMP_num );
		}
		dtDate.setMilliseconds( 0 );
		dtDate.setDate( 1 );
		dtDate.setMonth( 0 ); // 日付が31、29などいろいろあり、そのまま月を設定すると、月が自動で前後してしまうため。
		if( DateTimeNum.length < 8 ){
			return "";
		}else if( DateTimeNum.length == 8 ){
			dtDate.setYear( ORUF.UFunc.convNumeric( DateTimeNum.substr( 0, 4 ) ) );
			dtDate.setMonth( ORUF.UFunc.convNumeric( DateTimeNum.substr( 4, 2 ) ) - 1 );
			dtDate.setDate( ORUF.UFunc.convNumeric( DateTimeNum.substr( 6, 2 ) ) );
			dtDate.setHours( 0 );
			dtDate.setMinutes( 0 );
			dtDate.setSeconds( 0 );
		}else{
			if( DateTimeNum.length == 10 ){
				DateTimeNum += "0000";
			}else if( DateTimeNum.length == 12 ){
				DateTimeNum += "00";
			}
			dtDate.setYear( ORUF.UFunc.convNumeric( DateTimeNum.substr( 0, 4 ) ) );
			dtDate.setMonth( ORUF.UFunc.convNumeric( DateTimeNum.substr( 4, 2 ) ) - 1 );
			dtDate.setDate( ORUF.UFunc.convNumeric( DateTimeNum.substr( 6, 2 ) ) );
			dtDate.setHours( ORUF.UFunc.convNumeric( DateTimeNum.substr( 8, 2 ) ) );
			dtDate.setMinutes( ORUF.UFunc.convNumeric( DateTimeNum.substr( 10, 2 ) ) );
			dtDate.setSeconds( ORUF.UFunc.convNumeric( DateTimeNum.substr( 12, 2 ) ) );
		}
		return dtDate;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：DateUnitRound
	//■処理内容      ：日付単位へ丸める
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	DateUnitRound : function( ARG_dtDate ){
		ARG_dtDate.setHours( 0 );
		ARG_dtDate.setMinutes( 0 );
		ARG_dtDate.setSeconds( 0 );
		ARG_dtDate.setMilliseconds( 0 );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：MonthUnitRound
	//■処理内容      ：月付単位へ丸める
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	MonthUnitRound : function( ARG_dtDate ){
		ARG_dtDate.setDate( 1 );
		ARG_dtDate.setHours( 0 );
		ARG_dtDate.setMinutes( 0 );
		ARG_dtDate.setSeconds( 0 );
		ARG_dtDate.setMilliseconds( 0 );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：YearUnitRound
	//■処理内容      ：年付単位へ丸める
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	YearUnitRound : function( ARG_dtDate ){
		ARG_dtDate.setDate( 1 );
		ARG_dtDate.setMonth( 1 );
		ARG_dtDate.setHours( 0 );
		ARG_dtDate.setMinutes( 0 );
		ARG_dtDate.setSeconds( 0 );
		ARG_dtDate.setMilliseconds( 0 );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：DateAdd
	//■処理内容      ：日時の加減算
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	DateAdd : function( ARG_DateUnit, ARG_iDay, ARG_dtDate, ARG_FLAG_bRegular ){
		ARG_FLAG_bRegular = ORUF.UFunc.Argumenter( ARG_FLAG_bRegular, "boolean", false );
		var FLAG_bMaxDate = false;
		var FLAG_bArrange = false;
		var iCompareDay   = 0;
		// 月末か
		if( ARG_FLAG_bRegular && ARG_dtDate.getDate() == this.DayInMonth( ARG_dtDate ) ){
			FLAG_bMaxDate = true;
			iCompareDay   = ARG_dtDate.getDate();
		}
		// 加算開始
		switch( ARG_DateUnit.toLowerCase() + "" ){
			case "4" :
			case "yyyy" :
				ARG_dtDate.setYear( ARG_dtDate.getYear() + ARG_iDay );
				FLAG_bArrange = true;
				break;
			case "q" :
				ARG_dtDate.setMonth( ARG_dtDate.getMonth() + ARG_iDay * 4 );
				FLAG_bArrange = true;
				break;
			case "3" :
			case "m" :
				ARG_dtDate.setMonth( ARG_dtDate.getMonth() + ARG_iDay );
				FLAG_bArrange = true;
				break;
			case "2" :
			case "ww" :
				ARG_dtDate.setDate( ARG_dtDate.getDate() + ARG_iDay * 7 );
				break;
			case "1" :
			case "y" :
			case "w" :
			case "d" :
				ARG_dtDate.setDate( ARG_dtDate.getDate() + ARG_iDay );
				break;
		}
		// 月末処理
		if( FLAG_bArrange && FLAG_bMaxDate && ARG_dtDate.getDate() != iCompareDay ){
			ARG_dtDate.setDate( 0 );
		}
		return ARG_dtDate.getTime();
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：DateDiff
	//■処理内容      ：日時の差し引き
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	DateDiff : function( ARG_DatePart, ARG_dtDiff, ARG_dtBase, ARG_DiffUnit ){
		var iSecond = 1000;
		var iMinute = iSecond * 60;
		var iHour   = iMinute * 60;
		var iHour9  = iHour   * 9;
		var iDay    = iHour   * 24;
		var iWeek   = iDay    * 7;
		var iDiff   = ARG_dtDiff.getTime();
		var iBase   = ARG_dtBase.getTime();
		var iDate   = 0;
		ARG_DiffUnit = ORUF.UFunc.Argumenter( ARG_DiffUnit, "all", "1" );
		switch( ARG_DiffUnit.toLowerCase() ){
			case "1" :
				
				break;
			case "s" :
				iDiff = iDiff - ( iDiff % iSecond );
				iBase = iBase - ( iBase % iSecond );
				break;
			case "n" :
				iDiff = iDiff - ( iDiff % iMinute );
				iBase = iBase - ( iBase % iMinute );
				break;
			case "h" :
				iDiff = iDiff - ( iDiff % iHour );
				iBase = iBase - ( iBase % iHour );
				break;
			case "d" :
			case "y" :
				iDiff = iDiff - ( ( iDiff + iHour9 ) % iDay );
				iBase = iBase - ( ( iBase + iHour9 ) % iDay );
				break;
			case "w" :
			case "ww" :
				iDiff = iDiff - ( iDiff % iWeek );
				iBase = iBase - ( iBase % iWeek );
				break;
			default :
				alert( "[DateDiff]存在しない単位です。" );
		}
		iDate = iBase - iDiff;
		switch( ARG_DatePart.toLowerCase() ){
			case "1" :
				
				break;
			case "s" :
				iDate = parseInt( iDate / iSecond );
				break;
			case "n" :
				iDate = parseInt( iDate / iMinute );
				break;
			case "h" :
				iDate = parseInt( iDate / iHour );
				break;
			case "d" :
			case "y" :
				iDate = parseInt( iDate / iDay );
				break;
			case "w" :
			case "ww" :
				iDate = parseInt( iDate / iWeek );
				break;
			default :
				alert( "[DateDiff]存在しない単位です。" );
		}
		return iDate;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：DayInMonth
	//■処理内容      ：月の日数を取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	DayInMonth : function( ARG_dtDate ){
		var aryDayInMonth = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
		var iYear         = ARG_dtDate.getYear();
		var iMonth        = ARG_dtDate.getMonth();
		if( iMonth == 1 && ( ( iYear % 4 == 0 && iYear % 100 != 0 ) || ( iYear % 400 == 0 && iYear % 4000 != 0 ) ) ){
			aryDayInMonth[ 1 ] = 29;
		}
		return aryDayInMonth[ iMonth ];
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：DayInYear
	//■処理内容      ：年の日数を取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	DayInYear : function( ARG_dtDate ){
		var iYear = ARG_dtDate.getYear();
		var iDay  = 337;
		if( ( iYear % 4 == 0 && iYear % 100 != 0 ) || ( iYear % 400 == 0 && iYear % 4000 != 0 ) ){
			iDay += 29;
		}else{
			iDay += 28;
		}
		return iDay;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getSeireki2Wareki
	//■処理内容      ：西暦から和暦を取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：西暦
	//■更新内容      ：
	//■備考          ：日付型
	//                ：
	─────────────────────────────────────────────────*/
	getSeireki2Wareki : function( ARG_dtDate, ARG_FLAG_bZeroPadding ){
		var iYear  = ARG_dtDate.getYear();
		var Wareki = "";
		if( iYear < 1000 ){
			iYear += 1900;
		}
		var iMonth = ARG_dtDate.getMonth() + 1;
		var iDay   = ARG_dtDate.getDate();
		var iDate  = iYear * 10000 + iMonth * 100 + iDay;
		if(       iDate <= 19120729 ){
			Wareki = "明治";
			iYear -= 1867;
		}else if( iDate <= 19261224 ){
			Wareki = "大正";
			iYear -= 1911;
		}else if( iDate <= 19890107  ){
			Wareki = "昭和";
			iYear -= 1925;
		}else{
			Wareki = "平成";
			iYear -= 1988;
		}
		if( ARG_FLAG_bZeroPadding ){
			iYear = ORUF.Date.getZeroPadding( iYear );
		}
		return Wareki + iYear;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getWareki2Seireki
	//■処理内容      ：和暦から西暦を取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：平成02
	//                ：
	─────────────────────────────────────────────────*/
	getWareki2Seireki : function( ARG_Year, ARG_FLAG_bErrorCheck ){
		var Nengo = "";
		var Year  = 0;
		if( ARG_Year.length > 2 ){
			Nengo = ARG_Year.substr( 0, 2 );
			Year  = ORUF.UFunc.convNumeric( ARG_Year.match( /[\-\d]+/ ) );
			switch( Nengo ){
				case "平成" :
					if( ARG_FLAG_bErrorCheck && Year < 1 ){
						return "平成は、1年～です。（元年は1年です）";
					}
					Year += 1988;
					break;
				case "昭和" :
					if( ARG_FLAG_bErrorCheck && ( Year < 1 || Year > 64 ) ){
						return "昭和は、1年～64年です。";
					}
					Year += 1925;
					break;
				case "大正" :
					if( ARG_FLAG_bErrorCheck && ( Year < 1 || Year > 15 ) ){
						return "大正は、1年～15年です。";
					}
					Year += 1911;
					break;
				case "明治" :
					if( ARG_FLAG_bErrorCheck && ( Year < 1 || Year > 45 ) ){
						return "明治は、1年～45年です。";
					}
					Year += 1867;
					break;
				default :
					return "存在しない和暦です。";
					break;
			}
			return Year;
		}
		return "存在しない和暦です。";
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：checkDate
	//■処理内容      ：正しい日付か確認
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：平成020911   20090911
	//                ：
	─────────────────────────────────────────────────*/
	checkDate : function( ARG_Element, ARG_Date, ARG_Title, ARG_FLAG_bNecessary ){
		var aryDate = new Array();
		var dtDate  = new Date();
		if( ARG_Date.indexOf( "/" ) != -1 ){
			aryDate = ARG_Date.split( "/" );
			if( aryDate[ 0 ] == "" || aryDate[ 1 ] == "" || aryDate[ 2 ] == "" ){
				if( ARG_FLAG_bNecessary ){
					if( ARG_Element ){
						ARG_Element.focus();
					}
					alert( ARG_Title + "は、必ず入力してください。" );
					return false;
				}else{
					return true;
				}
			}
		}else{
			if( ARG_Date.length == 8 ){
				aryDate[ 0 ] = ARG_Date.substr( 0, 4 );
				aryDate[ 1 ] = ARG_Date.substr( 4, 2 );
				aryDate[ 2 ] = ARG_Date.substr( 6, 2 );
			}else{
				alert( "処理できない日付です" );
				if( ARG_Element ){
					ARG_Element.focus();
				}
				return false;
			}
		}
		if( aryDate[ 0 ].match( /^\d+$/ ) == null ){
			// 和暦含める
			aryDate[ 0 ] = ORUF.Date.getWareki2Seireki( aryDate[ 0 ], true );
			if( isNaN( aryDate[ 0 ] ) ){
				// 数値じゃない
				alert( aryDate[ 0 ] );
				if( ARG_Element ){
					ARG_Element.focus();
				}
				return false;
				
			}
		}
		aryDate[ 0 ] = ORUF.UFunc.convNumeric( aryDate[ 0 ] );
		aryDate[ 1 ] = ORUF.UFunc.convNumeric( aryDate[ 1 ] ) - 1;
		aryDate[ 2 ] = ORUF.UFunc.convNumeric( aryDate[ 2 ] );
		
		dtDate.setMilliseconds( 0 );
		dtDate.setDate( 1 );
		dtDate.setMonth( 0 ); // 日付が31、29などいろいろあり、そのまま月を設定すると、月が自動で前後してしまうため。
		dtDate.setYear( aryDate[ 0 ] );
		dtDate.setMonth( aryDate[ 1 ] );
		dtDate.setDate( aryDate[ 2 ] );
		if( aryDate[ 0 ] != dtDate.getFullYear() || aryDate[ 1 ] != dtDate.getMonth() || aryDate[ 2 ] != dtDate.getDate() ){
			alert( ARG_Title + "へ入力した日付は存在しません。" );
			if( ARG_Element ){
				ARG_Element.focus();
			}
			return false;
		}
		return true;
	}
}

// TAG[ ORUF_Cookie ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：クッキー関数オブジェクト
//■処理内容      ：クッキー関連関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.Cookie = {
	parent : ORUF,
	//                                                  //
	// クッキー全設定                                   //
	//                                                  //
	setAllCookie : function( ARG_strName, ARG_expires ){
		ARG_expires = objUFunc.Argumenter( ARG_expires, "numeric", 30 );
		if( ARG_strName ){
			var F_TMP_Name
			var TMP_strName = eval( ARG_strName );
			var F_setCookieExpires = new Date();
			F_setCookieExpires.setTime( F_setCookieExpires.getTime() + 1000 * 60 * 60 * 24 * ARG_expires );
			for( F_TMP_Name in TMP_strName ){
				var TMP_Value = escape( eval( ARG_strName + "." + F_TMP_Name ) );
				if( F_TMP_Name.indexOf( "=" ) == -1 && TMP_Value.indexOf( "=" ) == -1 ){
					document.cookie = F_TMP_Name + "=" + TMP_Value + "; expires=" + this.getCookieDate( F_setCookieExpires ) + "; ";
				}else{
					return false;
				}
			}
			return true;
		}else{
			return false;
		}
	},

	//                                                  //
	// クッキー全取得                                   //
	//                                                  //
	getAllCookie : function( ARG_strName ){
		var F_aryCookie = document.cookie.split( "; " );
		var i = 0;
		for( i = 0; i < F_aryCookie.length; i++ ){
			if( F_aryCookie[ i ].indexOf( "=" ) != -1 && F_aryCookie[ i ].match( /^expires\=/ ) == null ){
				eval( ARG_strName + "." + unescape( F_aryCookie[ i ] ) );
			}else{
				document.cookie = "";
				return false;
			}
		}
		return true;
	},

	//                                                  //
	// クッキー全クリア                                 //
	//                                                  //
	clearAllCookie : function( ARG_strName ){
		if( ARG_strName ){
			var F_TMP_Name
			var TMP_strName = eval( ARG_strName );
			for( F_TMP_Name in TMP_strName ){
				document.cookie = F_TMP_Name + "=clear; expires=Tue, 1-Jan-1980 00:00:00; ";
			}
			return true;
		}else{
			return false;
		}
	},
	
	//                                                  //
	// クッキー設定(ORUF)                               //
	//                                                  //
	setCookie : function( ARG_strName, ARG_expires ){
		ARG_expires = objUFunc.Argumenter( ARG_expires, "numeric", 30 );
		if( ARG_strName ){
			var F_TMP_Name
			var TMP_strName = eval( ARG_strName + ".Data" );
			var F_setCookieExpires = new Date();
			F_setCookieExpires.setTime( F_setCookieExpires.getTime() + 1000 * 60 * 60 * 24 * ARG_expires );
			for( F_TMP_Name in TMP_strName ){
				var TMP_Value = escape( eval( ARG_strName + ".Data." + F_TMP_Name ) );
				if( F_TMP_Name.indexOf( "=" ) == -1 && TMP_Value.indexOf( "=" ) == -1 && objArray.Find( eval( ARG_strName + ".aryTarget" ), F_TMP_Name ) ){
					document.cookie = F_TMP_Name + "=" + TMP_Value + "; expires=" + this.getCookieDate( F_setCookieExpires ) + "; ";
				}else{
					return false;
				}
			}
			return true;
		}else{
			return false;
		}
	},
	
	//                                                  //
	// クッキー取得(ORUF)                               //
	//                                                  //
	getCookie : function( ARG_strName ){
		var F_aryCookie = document.cookie.split( "; " );
		var i = 0;
		for( i = 0; i < F_aryCookie.length; i++ ){
			if( F_aryCookie[ i ].indexOf( "=" ) != -1 && objArray.Find( eval( ARG_strName + ".aryTarget" ), F_aryCookie[ i ].split( "=" )[ 0 ] ) ){
				eval( ARG_strName + ".Data." + unescape( F_aryCookie[ i ] ) );
			}
		}
		return true;
	},

	//                                                  //
	// クッキークリア(ORUF)                             //
	//                                                  //
	clearCookie : function( ARG_strName ){
		if( ARG_strName ){
			var F_TMP_Name
			var TMP_strName = eval( ARG_strName + ".Data" );
			for( F_TMP_Name in TMP_strName ){
				if( objArray.Find( eval( ARG_strName + ".aryTarget" ), F_TMP_Name ) ){
					document.cookie = F_TMP_Name + "=clear; expires=Tue, 1-Jan-1980 00:00:00; ";
				}
			}
			return true;
		}else{
			return false;
		}
	},
	
	//                                                  //
	// クッキー用日付取得                               //
	//                                                  //
	getCookieDate : function( ARG_Date ){
		var Date = objDate.getDateObject( ARG_Date );
		return objDate.getWeekDayString( ARG_Date ) + ", " + Date.date + "-" + objDate.getMonthString( ARG_Date ) + "-" + Date.year + " " + objDate.getZeroPadding( Date.hours ) + ":" + objDate.getZeroPadding( Date.minutes ) + ":" + objDate.getZeroPadding( Date.seconds );
	}

}

// TAG[ ORUF_HTTP ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：HTTP関数オブジェクト
//■処理内容      ：HTTP関連関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.HTTP = {
	/*─────────────────────────────────────────────────
	//■関数名        ：createHttpRequest
	//■処理内容      ：HTTPリクエストの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	createHttpRequest : function(){
		if( window.ActiveXObject ){
			try{
				return new ActiveXObject( "Msxml2.XMLHTTP" );
			}catch( e ){
				try{
					return new ActiveXObject( "Microsoft.XMLHTTP" );
				}catch( e2 ){
					return null;
				}
			}
		}else if( window.XMLHttpRequest ){
			return new XMLHttpRequest();
		}else{
			return null;
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：createHttpReady
	//■処理内容      ：HTTP待機処理の作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：関数
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	createHttpReady : function( ARG_objHTTP, ARG_objCall, ARG_FuncOK, ARG_FuncNG ){
		ARG_FuncNG = objUFunc.Argumenter( ARG_FuncNG, "function" );
		return function(){
			if( ARG_objHTTP.readyState == 4 ){
				if( ARG_objHTTP.status == 200 ){
					ARG_FuncOK.call( ARG_objCall, ARG_objHTTP );
				}else{
					ARG_FuncNG.call( ARG_objCall );
				}
			}
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getEncodeURI
	//■処理内容      ：URIエンコードして取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getEncodeURI : function( ARG_Name, ARG_Value ){
		return ARG_Name + "=" + encodeURIComponent( ARG_Value );
	}
}

// TAG[ ORUF_StartUp ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：初期利用関数オブジェクト
//■処理内容      ：初期利用関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.StartUp = {
	parent : ORUF,
	//                                                  //
	// Scriptタグの作成                                 //
	//                                                  //
	newTAG_Script : function( ARG_Src ){
		var rNewTag = document.createElement( "script" );
		rNewTag.setAttribute( "src",       ARG_Src          );
		rNewTag.setAttribute( "language", "JavaScript"      );
		rNewTag.setAttribute( "type",     "text/javascript" );
		if( navigator.appVersion.indexOf("Safari") > -1 ){
			rNewTag.setAttribute( "charset",  "Shift-JIS"           );
		}
		return rNewTag;
	},

	//                                                  //
	// Scriptタグのセット                               //
	//                                                  //
	readScript : function( aryReadScript ){
		var i;
		var dgTN_Head   = document.getElementsByTagName( "head" )[ 0 ];
		var dgTN_Script = document.getElementsByTagName( "script" )[ 0 ];
		for( i = 0; i < aryReadScript.length; i++ ){
			dgTN_Head.insertBefore( objStartUp.newTAG_Script( aryReadScript[ i ] ), dgTN_Script );
		}
	},

	//                                                  //
	// Scriptタグのセット（単体）                       //
	//                                                  //
	readScriptOne : function( ARG_ReadScript ){
		var dgTN_Head   = document.getElementsByTagName( "head" )[ 0 ];
		var dgTN_Script = document.getElementsByTagName( "script" )[ 0 ];
		dgTN_Head.insertBefore( this.newTAG_Script( ARG_ReadScript ), dgTN_Script );
	},

	//                                                  //
	// Scriptタグのセット（単体）                       //
	//                                                  //
	readImageOne : function( ARG_ReadImage ){
		var objImage = new Image();
		objImage.src = ARG_ReadImage;
		return objImage;
	}

}

// TAG[ ORUF_Func ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：ORUF関数オブジェクト
//■処理内容      ：ORUF関連関数パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.Func = {
	parent : ORUF,
	//                                                  //
	// Y方向の絶対位置の取得                            //
	//                                                  //
	getOffsetY : function( ARG_FLAG_All ){
		var objParent = this;
		this.offsetY  = objParent.offsetTop;
		if( navigator.appName.charAt( 0 ) == "N" && this.firstChild ){
			var i = 0;
			var FLAG_bMinus = false;
			for( i = 0; i < this.childNodes.length; i++ ){
				if( this.childNodes[ i ].style && ( ORUF.UFunc.getCurrentStyle( this.childNodes[ i ], "position" ) == "absolute" || ORUF.UFunc.getCurrentStyle( this.childNodes[ i ], "display" ) == "inline" || this.childNodes[ i ].tagName == "IMG" ) ){
					if( this.childNodes[ i ].tagName == "IMG" ){
						this.offsetY -= this.childNodes[ i ].offsetHeight;
						FLAG_bMinus = true;
						break;
					}
				}else{
					break;
				}
			}
			if( FLAG_bMinus ){
				this.offsetY += this.offsetHeight;
			}
		}
		while( objParent.offsetParent && ( ORUF.UFunc.getCurrentStyle( objParent.offsetParent, "position" ) != "relative" || ARG_FLAG_All ) ){
			objParent     = objParent.offsetParent;
			this.offsetY += objParent.offsetTop;
		}
	},

	//                                                  //
	// X方向の絶対位置の取得                            //
	//                                                  //
	getOffsetX : function( ARG_FLAG_All ){
		var objParent = this;
		this.offsetX  = objParent.offsetLeft;
		while( objParent.offsetParent && ( ORUF.UFunc.getCurrentStyle( objParent.offsetParent, "position" ) != "relative" || ARG_FLAG_All ) ){
			objParent     = objParent.offsetParent;
			this.offsetX += objParent.offsetLeft;
		}
	},

	//                                                  //
	// オブジェクトのプロパティコピー                   //
	//                                                  //
	copyProperty : function( ARG_objMaterial ){
		var pptMaterial;
		for( pptMaterial in ARG_objMaterial ){
			this[ pptMaterial ] = ARG_objMaterial[ pptMaterial ];
		}
	},
	
	/*─────────────────────────────────────────────────
	//■関数名        ：getFunctionSorce
	//■処理内容      ：関数のソースを取得
	//■引数          ：ARG_Function  ： 関数
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getFunctionSource : function( ARG_Function ){
		var Source  = null;
		var FSource = null;
		if( objUFunc.checkVariable( ARG_Function ) ){
			FSource = ARG_Function.toString();
			if( FSource.indexOf( "function" ) < 0 ){
				Source = FSource;
			}else{
				Source = FSource.substring( FSource.indexOf( "{" ) + 2, FSource.lastIndexOf( "}" ) - 1 );
			}
		}
		if( Source && Source.indexOf( "return" ) != -1 ){
			//alert( "このページでは、DHTMLで「return」を使用しているため、このORUFは使用できません。後々対応可能ですが、現在未対応です。" );
		}
		return Source;
		
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getByte
	//■処理内容      ：文字列のバイトの取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getByte : function(){
		var String = this.value;
		var Length = String.length;
		var i       = 0;
		var Byte    = 0;
		for( i = 0; i < Length; i++ ){
			if( escape( String.charAt( i ) ).length > 4 ){
				Byte += 2;
			}else{
				Byte++;
			}
		}
		this.valueByte = Byte;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：getBrowser
	//■処理内容      ：ブラウザ情報の取得
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：成否
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	getBrowser : function(){
		this.IE      = false;
		this.Mozilla = false;
		this.Opera   = false;
		this.Safari  = false;
		if( window.opera ){
			this.Opera   = true;
		}else if( navigator.appName.charAt( 0 ) == "M" ){
			this.IE      = true;
		}else if( navigator.appName.charAt( 0 ) == "N" ){
			this.Mozilla = true;
		}else if( navigator.appVersion.indexOf( "Safari" ) > -1 ){
			this.Safari  = true;
		}
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：findScroll
	//■処理内容      ：スクロールオブジェクトの検索
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：スクロールオブジェクト
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	findScroll : function(){
		var objParent = this;
		while( objParent.offsetParent ){
			if( ORUF.UFunc.getCurrentStyle( objParent, "overflow" ) == "scroll" || ORUF.UFunc.getCurrentStyle( objParent, "overflow-x" ) == "scroll" || ORUF.UFunc.getCurrentStyle( objParent, "overflow-y" ) == "scroll"  ){
				return objParent;
			}
			objParent = objParent.offsetParent;
		}
		if( document.documentElement ){
			//return document.documentElement;
		}
		return document.body;
	}

}

// TAG[ ORUF_Create ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：ORUF生成オブジェクト
//■処理内容      ：ORUF関連生成パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.Create = {
	parent : ORUF,
	/*─────────────────────────────────────────────────
	//■関数名        ：A
	//■処理内容      ：Aタグの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	A : function( ARG_Href ){
		var rNewTag = document.createElement( "a" );
		if( ARG_Href ){
			rNewTag.href = ARG_Href;
		}
		return rNewTag;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：IMG
	//■処理内容      ：IMGタグの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	IMG : function( ARG_Src, ARG_Alt, ARG_Width, ARG_Height, ARG_Border ){
		ARG_Border = objUFunc.Argumenter( ARG_Border, "numeric", 0 );
		var rNewTag = document.createElement( "img" );
		if( ARG_Src ){
			rNewTag.src = ARG_Src;
		}
		if( ARG_Alt ){
			rNewTag.alt = ARG_Alt;
		}
		if( ARG_Width ){
			rNewTag.width = ARG_Width;
		}
		if( ARG_Height ){
			rNewTag.height = ARG_Height;
		}
		rNewTag.border = ARG_Border;
		return rNewTag;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：PNG24
	//■処理内容      ：IMGタグの作成（PNG24版）
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	PNG24 : function( ARG_Src, ARG_Alt, ARG_Width, ARG_Height ){
		var rNewTag = document.createElement( "img" );
		if( ORUF.IE ){
			rNewTag.src = "../img/shim.gif";
			rNewTag.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader( src=" + ARG_Src + " )"
		}else{
			rNewTag.src = ARG_Src;
		}
		if( ARG_Alt ){
			rNewTag.alt = ARG_Alt;
		}
		if( ARG_Width ){
			rNewTag.width = ARG_Width;
		}
		if( ARG_Height ){
			rNewTag.height = ARG_Height;
		}
		return rNewTag;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：INPUT
	//■処理内容      ：INPUTタグの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	INPUT : function( ARG_Type, ARG_Name, ARG_Value, ARG_iSize ){
		var rNewTag = null;
		var Option  = "";
		if( ORUF.IE ){
			if( ARG_Type ){
				Option += 'type="' + ARG_Type +'" ';
			}
			if( ARG_Name ){
				Option += 'name="' + ARG_Name +'" ';
			}
			rNewTag = document.createElement( "<input " + Option + "/>" );
		}else{
			rNewTag      = document.createElement( "input" );
			rNewTag.type = ARG_Type;
			rNewTag.name = ARG_Name;
		}
		if( ARG_Value ){
			rNewTag.value = ARG_Value;
		}
		if( ARG_iSize ){
			rNewTag.size = ARG_iSize;
		}
		return rNewTag;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：TEXTAREA
	//■処理内容      ：TEXTAREAタグの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	TEXTAREA : function( ARG_Name, ARG_Rows, ARG_Cols, ARG_Value ){
		var rNewTag = null;
		var Option  = "";
		if( ORUF.IE ){
			if( ARG_Name ){
				Option += 'name="' + ARG_Name +'" ';
			}
			rNewTag = document.createElement( "<textarea " + Option + "></textarea>" );
		}else{
			rNewTag      = document.createElement( "textarea" );
			rNewTag.name = ARG_Name;
		}
		if( ARG_Value ){
			rNewTag.value = ARG_Value;
		}
		if( ARG_Rows ){
			rNewTag.rows = ARG_Rows;
		}
		if( ARG_Cols ){
			rNewTag.cols = ARG_Cols;
		}
		return rNewTag;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：SELECT
	//■処理内容      ：SELECTタグの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	SELECT : function( ARG_Name ){
		var rNewTag = null;
		var Option  = "";
		if( ORUF.IE ){
			if( ARG_Name ){
				Option += 'name="' + ARG_Name +'" ';
			}
			rNewTag = document.createElement( "<select " + Option + "></select>" );
		}else{
			rNewTag      = document.createElement( "select" );
			rNewTag.name = ARG_Name;
		}
		return rNewTag;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：OPTION
	//■処理内容      ：OPTIONタグの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	OPTION : function( ARG_Disp, ARG_Value, ARG_iMaxWidth ){
		var rNewTag = null;
		var Option  = "";
		if( ORUF.IE ){
			rNewTag = document.createElement( '<option value="' + ARG_Value + '" ></option>' );
		}else{
			rNewTag       = document.createElement( "option" );
			rNewTag.value = ARG_Value;
		}
		if( ARG_iMaxWidth && ARG_Disp.length > ARG_iMaxWidth ){
			ARG_Disp = ARG_Disp.substr( 0, ARG_iMaxWidth - 1 ) + "...";
		}
		rNewTag.appendChild( document.createTextNode( ARG_Disp ) );
		return rNewTag;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：TABLE
	//■処理内容      ：TABLEタグの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	TABLE : function( ARG_iBorder, ARG_iCellSpacing, ARG_iCellPadding, ARG_WindowObject ){
		var rNewTag     = null;
		var objDocument = document;
		if( ARG_WindowObject ){
			objDocument = ARG_WindowObject.document;
		}
		if( ORUF.IE ){
			rNewTag = objDocument.createElement( '<table border="' + ARG_iBorder + '" cellspacing="' + ARG_iCellSpacing + '" cellpadding="' + ARG_iCellPadding + '" ></table>' );
		}else{
			rNewTag               = objDocument.createElement( "table" );
			rNewTag.borderWidth   = ARG_iBorder      + "px";
			rNewTag.borderSpacing = ARG_iCellSpacing + "px";
			rNewTag.cellPadding   = ARG_iCellPadding + "px";
		}
		return rNewTag;
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：HR
	//■処理内容      ：HRタグの作成
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：作成したタグ
	//■更新内容      ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	HR : function( ARG_Color ){
		var rNewTag = document.createElement( "hr" );
		if( ARG_Color ){
			rNewTag.style.color = ARG_Color;
		}
		return rNewTag;
	}
}

// TAG[ ORUF_Status ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：ステータスオブジェクト
//■処理内容      ：ステータス関連制御パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.Status = {
	parent              : ORUF,
	dtDEF_LayoutControl : new Date(),
	/*─────────────────────────────────────────────────
	//■関数名        ：setLayoutControlTime
	//■処理内容      ：レイアウト制御時間設定
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■this          ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	setLayoutControlTime : function(){
		this.dtDEF_LayoutControl = new Date();
		ORUF.Event.Always( "resize" );
	},
	/*─────────────────────────────────────────────────
	//■関数名        ：checkLayoutControl
	//■処理内容      ：レイアウト制御のチェック
	//■引数          ：  ： 
	//                ：
	//■戻り値タイプ  ：
	//■更新内容      ：
	//■this          ：
	//■備考          ：
	//                ：
	─────────────────────────────────────────────────*/
	checkLayoutControl : function( ARG_dtDEF ){
		if( this.dtDEF_LayoutControl.getTime() < ARG_dtDEF.getTime() ){
			// 変化なし //
			return false;
		}else{
			// 変化あり //
			return true;
		}
	}
}

// TAG[ ORUF_Define ] //
/*─────────────────────────────────────────────────
//■オブジェクト名：ORUF定義オブジェクト
//■処理内容      ：ORUF関連定義パッケージ
//■更新内容      ：
//■備考          ：
//                ：
//                ：
//                ：
─────────────────────────────────────────────────*/
ORUF.Define = {
	parent : ORUF,
	//                                                  //
	// デフォルトオブジェクト設定                       //
	//                                                  //
	dfnDefault : function(){
		this.getOffsetY = objORUFFunc.getOffsetY;
		this.getOffsetX = objORUFFunc.getOffsetX;
		this.offsetY    = 0;
		this.offsetX    = 0;
		this.getOffsetY();
		this.getOffsetX();
	},

	//                                                  //
	// デフォルトフォームオブジェクト設定               //
	//                                                  //
	dfnDefaultForm : function( ARG_objForm ){
		this.dfeObj     = ARG_objForm;
		this.getOffsetY = objORUFFunc.getOffsetY;
		this.getOffsetX = objORUFFunc.getOffsetX;
		this.offsetY    = 0;
		this.offsetX    = 0;
		this.getOffsetY();
		this.getOffsetX();
	}

}

//                                                  //
// 過去に利用していたオブジェクト用                 //
//                                                  //
var objUFunc      = ORUF.UFunc;
var objList       = ORUF.List;
var objArray      = ORUF.Array;
var objDate       = ORUF.Date;
var objCookie     = ORUF.Cookie;
var objStartUp    = ORUF.StartUp;
var objORUFFunc   = ORUF.Func;
var objORUFDefine = ORUF.Define;
var objDefineORUF = objORUFDefine;


ORUF.getBrowser = ORUF.Func.getBrowser;
ORUF.getBrowser();
