/*以下、個別データ画面の表示オブジェクト*/
var _ =function(){
	var constructorF = function(){
		var _this = this;

		var currentIndex = -1;
		var currentRowid = -1;
		var aryEnableRowid = [];
		var myColTbl;
		var myTableInfo;

		var loadTbl = function(){
			_tableData._loadSingle( disp , {
				db_id : _this.dbId,
				table_id : _this.tblId
			} );
		};


		var _switch;
		var init = function( objSwitch ){
			//原則、objSwitchを指定して実行する。
			//objSwitchにはメンバとして、
			//rowid,index,modeを設定する。
			//modeがud,vwの場合は、他の引数で指定されたデータを表示する。
			//データ指定は、rowidを優先する。

			//vwの場合は該当のrowidが存在しない場合、indexで表示する。
			//indexの算定は、Join表のrowidから非join表のrowidが合致するデータを抽出し、
			//これをjoin表のrowid順に並べたもの、のindexと見なす。
			//一切、該当行が無い場合、エラーメッセージを表示し、検索一覧画面に差し戻す。
			//indexが範囲を超えた場合、0とする。
			//該当のデータをもって、個別データ画面を表示する。

			//udの場合、該当のrowidが存在しない場合、エラーメッセージを表示し、検索一覧画面に差し戻す。
			//該当のrowidが存在する場合、そのデータを持って、更新画面を表示する。

			//addの場合、該当のrowidが存在する場合、コピー呼び出しであると判断し、
			//該当のrowidのデータを初期値として、新規追加画面を表示する。
			//rowidが存在しない場合、単純な新規追加と見なし、各値なしで新規追加画面を表示する。

			//尚、objSwitchが無効である場合、あるいは一部欠損している場合、
			//modeは"vw"として補う。
			//rowidは-1として補う。
			//indexは0として補う。
			if( ! objSwitch ){
				objSwitch = {
				}
			};
			if( ! objSwitch.hasOwnProperty( "mode" ) || _U.find( objSwitch.mode , [ "vw" , "ud" , "add" ] ) == -1 ){
				objSwitch.mode = "vw";
			};
			if( ! objSwitch.hasOwnProperty( "rowid" ) ){
				objSwitch.rowid = -1;
			};
			if( ! objSwitch.hasOwnProperty( "index" ) ){
				objSwitch.index = 0;
			};
			_switch = objSwitch;

			//ｼｽﾃﾑ表から定義情報の取得
			_sysData._loadChain([
				"tbl",
				"col",
				"uq",
				"rlt",
				"opt"
			] , { db_id : _this.dbId } , loadTbl )

		};
		this.init = init;
		var changeNext = function( isNext ){
				var rowid = currentRowid;
				var index = currentIndex;
				if( isNext ){
					index ++;
					if( index == aryEnableRowid.length )index = 0;
				}else{
					index --;
					if( index == -1 )index = aryEnableRowid.length - 1;
				};
				rowid = aryEnableRowid[ index ];

				_disp.dipsCtrl( _disp.id.DtV , {
					mode:"vw",
					rowid:rowid,
					index:index
				} );
		};
		var returnToDtVw = function(){
			_disp.dipsCtrl( _disp.id.DtV , {
				mode:"vw",
				rowid:currentRowid
			} );
		};

		var doProc = function( mode ){
			var req = {
				db_id : _this.dbId,
				table_id : _this.tblId
			};
			if( mode != "i" ){
				req.row_id = currentRowid;
			};
			if( mode != "d" ){

//				req.col = [];
//				req.value = [];
				for( var i = 0 ; _U.isIdx( i , myColTbl ) ; i++ ){
					var colInfo = myColTbl[ i ];
					var colId = colInfo.id;
					var value = getValue( colId , true );
//					req.col.push( colId );
//					req.value.push( value );
					req["col["+i+"]"] = colId;
					req["value["+i+"]"] = value;
				};
			};
			var reqUrl;
			if( mode == "i" ){
				reqUrl = _urlMap.action.ins;
			}else if( mode == "d" ){
				reqUrl = _urlMap.action.del;
			}else if( mode == "u" ){
				reqUrl = _urlMap.action.upd;
			};
			_disp.request( "php/" + reqUrl , req , function( obj ){ showFinMsg( obj , mode ); } );
		};
		var showFinMsg = function( obj , mode ){
			var strMode = "PROCESS : ";
			if( mode == "i" ){
				strMode += "INSERT";
			}else if( mode == "d" ){
				strMode += "DELETE";
			}else if( mode == "u" ){
				strMode += "UPDATE";
			};

			_disp.showMessageEz( "cmmn_10" , [ strMode ] , function(){
				//削除以外のエラー(警告)の時は、画面遷移しない。恐らく一意制約違反なので。
				if( obj.mode == "W" && mode != "d" ){
					return;
				};
				//削除の場合のエラー時は気にしない。恐らく、既にデータが無いエラーなので。

				//残りは正常動作と見なすので、
				if( mode == "d"){
					returnToDtVw();
				} else if( mode == "i" ){
					_disp.dipsCtrl( _disp.id.LstV , { mode : "lv"} );
				} else if( mode == "u" ){
					returnToDtVw();
				};
			} );
		};
		var eventFuncs ={
			tableWrapOnScroll : function(){
				var scT = this.scrollTop;
				elmTblTopRight.style.top = scT + "px";
			},
			btnAddCanselOnClick : function(){
				if( _switch.rowid != -1 ){
					returnToDtVw();
				}else{
					_disp.dipsCtrl( _disp.id.LstV , { mode : "lv"} );
				};
			},
			btnUdCanselOnClick : function(){
				returnToDtVw();
			},
			btnEditOnClick : function(){
				_disp.dipsCtrl( _disp.id.DtV , {
					mode:"ud",
					rowid:currentRowid
				} );
			},
			btnPrevOnClick : function(){
				changeNext( false );
			},
			btnNextOnClick : function(){
				changeNext( true );
			},
			btnLinkOnClick : function(){
				var targTbl = this.dataset.targtbl;
				var targCols = this.dataset.targcols.split(",");
				var myCols = this.dataset.mycols.split(",");

				var aryC = [];
				for( var i = 0 ; _U.isIdx( i , targCols ) ; i++ ){
					var myColValue = getValue( myCols[ i ] );

					aryC.push({
						col_table:targTbl,
						col_relats:"",
						column_id:targCols[ i ],
						Not:false,
						Criteria:[myColValue],
						Mode:1
					});
				};

				_disp.tblId = targTbl;
				var req = {
					db_id : _this.dbId,
					table_id : targTbl,
					Criteria :aryC
				};
				_tableData._setReq( req );
				_disp.dipsCtrl( _disp.id.LstV , { mode : "lv"} );
			},
			btnCopyOnClick : function(){
				_disp.showMessageEz( "dv_v_1" , [] , function(){
					_disp.dipsCtrl( _disp.id.DtV , {
						mode:"add",
						rowid:currentRowid
					} );
				} );

			},
			btnDeleteOnClick : function(){
				_disp.showMessageEz( "dv_v_0" , [] , function(){ doProc("d") ;} );
			},
			btnInsertOnClick : function(){
				_disp.showMessageEz( "dv_a_0" , [] , function(){ doProc("i") ;} );
			},
			btnUpdateOnClick : function(){
				_disp.showMessageEz( "dv_e_0" , [] , function(){ doProc("u") ;} );
			}
		};

		var getElmKinds ={
			"name":"name",
			"valueDV":"valueDV",
			"value":"value",
			"remarks":"remarks",
			"links":"links"
		}
		var getElm = function( tr , kind ){
			var ret = null;
			var idx = -1;
			switch( kind ){
				case getElmKinds.name:
					idx = 0;
					break;
				case getElmKinds.valueDV:
					idx = 1;
					break;
				case getElmKinds.value:
					idx = 2;
					break;
				case getElmKinds.remarks:
					idx = 3;
					break;
				case getElmKinds.links:
					idx = 4;
					break;
			};
			if( idx >= 0 ){
				ret = _D.fEC( tr.children[ idx ] );
			};
			return ret;
		};
		var getValue = function( colid , isUndv ){
			var tr = _D.g( "dtvw_tr_col_" + colid );

			var ret;
			if( isUndv ){
				ret = _D.fEC( getElm( tr , getElmKinds.value ) ).getMyValue();
			}else{
				ret = _D.fEC( getElm( tr , getElmKinds.valueDV ) ).dataset.value;
			};
			return ret;
		};
		var nodeDef ={
			pkColsInner:{attr:{
				tagname:"span",
				className:"_dtvw_span_pk_cols_inner_"
			}},
			mainInner :{attr:{
				tagname:"div",
				className:"_vh_sc_hddn_ _dtvw_"
			},children:[
				{attr:{
					tagname:"h1",
					className:"_titles_ _dtvw_h1_"
				},children:[
					{attr:{
						tagname:"div",
						id:"dtvw_div_table_name"
					},children:[
						{attr:{
							tagname:"span",
							innerHTML :"Data View - ",
							className:"_dtvw_mode_dv_"
						}},
						{attr:{
							tagname:"span",
							innerHTML :"Data Edit - ",
							className:"_dtvw_mode_ud_"
						}},
						{attr:{
							tagname:"span",
							innerHTML :"add Record - ",
							className:"_dtvw_mode_add_"
						}},
						{attr:{
							tagname:"span",
							id:"dtvw_span_table_name",
							innerHTML :""
						}},
						{attr:{
							tagname:"span",
							id:"dtvw_span_pk_cols",
							innerHTML :""
						}}
					]},




					{attr:{
						tagname:"span",
						className:"_dtvw_span_btn_wrap_"
					},children:[
						{attr:{
							tagname:"input",
							type :"button",
							id:"dtvw_btn_delete",
							value:"delete",
							onclick: eventFuncs.btnDeleteOnClick,
							className:"_btn_in_title_ _dtvw_mode_dv_ _btn_y_"
						}},
						{attr:{
							tagname:"span",
							className:"_dtvw_span_btn_wrap_"
						},children:[
							{attr:{
								tagname:"input",
								type :"button",
								id:"dtvw_btn_edit_mode",
								value:"edit mode",
								onclick: eventFuncs.btnEditOnClick,
								className:"_btn_in_title_ _dtvw_mode_dv_"
							}},
							{attr:{
								tagname:"input",
								type :"button",
								id:"dtvw_btn_copy",
								value:"copy",
								onclick: eventFuncs.btnCopyOnClick,
								className:"_btn_in_title_ _dtvw_mode_dv_"
							}}
						]},
						{attr:{
							tagname:"input",
							type :"button",
							id:"dtvw_btn_update",
							value:"update",
							onclick: eventFuncs.btnUpdateOnClick,
							className:"_btn_in_title_ _dtvw_mode_ud_ _btn_y_"
						}},
						{attr:{
							tagname:"input",
							type :"button",
							id:"dtvw_btn_ud_cancel",
							value:"cancel",
							onclick: eventFuncs.btnUdCanselOnClick,
							className:"_btn_in_title_ _dtvw_mode_ud_"
						}},
						{attr:{
							tagname:"input",
							type :"button",
							id:"dtvw_btn_insert",
							value:"insert",
							onclick: eventFuncs.btnInsertOnClick,
							className:"_btn_in_title_ _dtvw_mode_add_ _btn_y_"
						}},
						{attr:{
							tagname:"input",
							type :"button",
							id:"dtvw_btn_add_cancel",
							value:"cancel",
							onclick: eventFuncs.btnAddCanselOnClick,
							className:"_btn_in_title_ _dtvw_mode_add_"
						}}
					]}
					
				]},
				{attr:{
					tagname:"div",
					className:"_dtvw_div_top_area_ _dtvw_mode_dv_"
				},children:[
					{attr:{
						tagname:"div",
						id:"dtvw_div_row_count"
					},children:[
						{attr:{
							tagname:"span",
							innerHTML:"",
							id:"dtvw_span_row_count"
						}},
						{attr:{
							tagname:"span",
							innerHTML:"records"
						}}
					]},

					{attr:{
						tagname:"span",
						className:"_dtvw_span_top_area_wrap_"
					},children:[
						{attr:{
							tagname:"input",
							type :"button",
							id:"dtvw_btn_prev",
							value:"prev",
							onclick: eventFuncs.btnPrevOnClick,
						}},
						{attr:{
							tagname:"input",
							type :"button",
							id:"dtvw_btn_next",
							onclick: eventFuncs.btnNextOnClick,
							value:"next"
						}}
					]}
				]},
				{attr:{
					tagname:"div",
					className:"_dtvw_table_area_"
				},children:[
					{attr:{
						tagname:"div",
						id:"dtvw_div_table_scroll",
						className:"_vh_sc_auto_ _dtvw_table_area_inner_",
						onscroll: eventFuncs.tableWrapOnScroll
					},children:[

						{attr:{
							tagname:"table",
							id:"dtvw_tbl_top_right"
						},children:[
							{attr:{
								tagname:"tbody",
								id:"dtvw_tbody_top_right"
							},children:[
								{attr:{
									tagname:"tr",
									id:"dtvw_tr_top"
								},children:[
									{attr:{
										tagname:"th",
										className:"_thead_g_"
									},children:[
										{attr:{
											tagname:"span",
											id:"dtvw_th_col_name",
											innerHTML : "Column Name",
											className:"_dtvw_head_inner_"
										}}
									]},
									{attr:{
										tagname:"th",
										className:"_thead_g_ _dtvw_mode_dv_"
									},children:[
										{attr:{
											tagname:"span",
											id:"dtvw_th_col_value_dv",
											innerHTML : "Value",
											className:"_dtvw_head_inner_"
										}}
									]},
									{attr:{
										tagname:"th",
										className:"_thead_g_ _dtvw_mode_undv_"
									},children:[
										{attr:{
											tagname:"span",
											id:"dtvw_th_col_value_undv",
											innerHTML : "Value",
											className:"_dtvw_head_inner_"
										}}
									]},
									{attr:{
										tagname:"th",
										className:"_thead_g_"
									},children:[
										{attr:{
											tagname:"span",
											id:"dtvw_th_remarks",
											innerHTML : "Remarks",
											className:"_dtvw_head_inner_"
										}}
									]},
									{attr:{
										tagname:"th",
										className:"_thead_g_ _dtvw_mode_dv_"
									},children:[
										{attr:{
											tagname:"span",
											id:"dtvw_th_links",
											innerHTML : "Links",
											className:"_dtvw_head_inner_"
										}}
									]}
								]}
							]}
						]},
						{attr:{
							tagname:"table",
							id:"dtvw_tbl_body_right"
						},children:[
							{attr:{
								tagname:"tbody",
								id:"dtvw_tbody_body_right"
							},children:[
								
							]}
						]}
					]}
				]}
			]},
			tr:{attr:{
				tagname:"tr",
				className:"_dtvw_tr_body_"
			},children:[
				{attr:{
					tagname:"th"
				},children:[
					{attr:{
						tagname:"span",
						className:"_dtvw_body_inner_ _dtvw_span_col_name_"
					}}
				]},
				{attr:{
					tagname:"td",
					className:"_dtvw_mode_dv_"
				},children:[
					{attr:{
						tagname:"span",
						className:"_dtvw_body_inner_ _dtvw_span_value_dv_"
					}}
				]},
				{attr:{
					tagname:"td",
					className:"_dtvw_mode_undv_"
				},children:[
					{attr:{
						tagname:"span",
						className:"_dtvw_body_inner_ _dtvw_span_value_undv_"
					}}
				]},
				{attr:{
					tagname:"td",
					className:""
				},children:[
					{attr:{
						tagname:"span",
						className:"_dtvw_body_inner_ _dtvw_span_remarks_"
					}}
				]},
				{attr:{
					tagname:"td",
					className:"_dtvw_mode_dv_"
				},children:[
					{attr:{
						tagname:"span",
						className:"_dtvw_body_inner_ _dtvw_span_links_"
					}}
				]}
			]}

		};



		var disp = function( ){
			currentRowid = -1;
			currentIndex = -1;

			var main = _D.g("main");
			//ここまででエラーがあった場合は既に画面通知済みのはず。

			main.innerHTML = "";
			mainInner = _D.aCAndCN( main , nodeDef.mainInner );

			var mode = _switch.mode;
			var rowid = _switch.rowid;
			var index = _switch.index;

			mainInner.dataset.mode = mode;

			//マスタ情報取得
			var tblTbl = _sysData._getData( "tbl" );
			myTableInfo = _sysData._tblFind( tblTbl , [{key:"id",value:_this.tblId }] , true )[0];
			myColTbl =  _sysData._tblFind( _sysData._getData( "col" ) , [{key:"tableId",value:_this.tblId }] );
			var uqTbl = _sysData._tblFind( _sysData._getData( "uq" , _sysData._getMode.asWTable  ) , [{key:"Table",value:_this.tblId }] );

			//画面部品としての各テーブルを取得
			elmTblTopRight = _D.g("dtvw_tbl_top_right");
			elmTblBodyRight = _D.g("dtvw_tbl_body_right");
			var tbodyBody = _D.fEC( elmTblBodyRight );

			//画面タイトル部への表名の反映
			var mainTName = myTableInfo.name;

			_D.g("dtvw_span_table_name").innerHTML = _U.htmlEscape( mainTName );

			var objTableData = _tableData._getSingleTableData( _this.tblId );
			var aryHead = objTableData.head;
			var aryData = objTableData.table;
			var objTableData4Rowid ={};
			aryEnableRowid = [];

			if( _switch.mode == "vw" || rowid != -1 ){

				//何度も両配列をループする事になるので、サイズの大きいobjTableDataは,
				//rowidをキーとするオブジェクトに変換する。
				for( var i = 0 ; _U.isIdx( i , aryData ) ; i ++ ){
					var aryWkRow = aryData[ i ];
					objTableData4Rowid[ aryWkRow[ aryWkRow.length - 1 ] ] = aryWkRow;
				};


				if( _switch.mode == "vw" ){
					var objTableDataJ = _tableData._getJoinedTableData();
					var aryJoinData = objTableDataJ.table;
					
					//objTableDataJとobjTableDataをマッチアップする。
					for( var i = 0 ; _U.isIdx( i , aryJoinData ) ; i ++ ){
						var joinedRow = aryJoinData[ i ]
						var joinedRowid = joinedRow[ joinedRow.length - 1 ];

						if( objTableData4Rowid.hasOwnProperty( joinedRowid ) ){
							aryEnableRowid.push( joinedRowid );
						};

					};
				};
			};


			//対象列の取得
			var targRow = null;
			if( rowid != -1 && objTableData4Rowid.hasOwnProperty( rowid ) ){
				currentRowid = rowid;
				targRow = objTableData4Rowid[ rowid ];
			};
			if( ! targRow && aryEnableRowid.length != 0 ){
				if( _U.isIdx( index , aryEnableRowid ) ){
					currentIndex = index;
				}else{
					currentIndex = 0;
				};
				currentRowid = aryEnableRowid[ currentIndex ];
				targRow = objTableData4Rowid[ aryEnableRowid[ currentIndex ] ];
			};
			//対象列が取得出来ない場合の、addモード以外、またはrowidが指定されている場合
			if( ! targRow && ( _switch.mode != "add" || rowid != -1 )){
				var funcAfterMsg = null;
				//vmモードの場合、件数が0件でなければ遷移しない。
				if( aryEnableRowid.length == 0 ){
					funcAfterMsg = function(){
						_disp.dipsCtrl( _disp.id.LstV , { mode : "lv"} );
					};
				};
				//メッセージ表示
				_disp.showMessageEz( "dv_c_W0" , [] , funcAfterMsg );
			};

			//rowidをそのまま見つけた場合。currentIndexを算出する。
			//これは、next,prevで利用する。尚、next,prevではcurrentIndexのみを利用する点に注意する。
			if( _switch.mode == "vw" && currentIndex == -1 ){
				currentIndex = _U.find( currentRowid , aryEnableRowid );

				//件数の反映
			};
			if( _switch.mode == "vw" ){
				_D.g("dtvw_span_row_count").innerHTML = ( currentIndex + 1 )  + " / " + aryEnableRowid.length;
			};

			var aryPkColid =[];
			var aryPkColtype =[];
			//列をループし、PK情報を取得する。
			for( var i = 0 ; _U.isIdx( i , myColTbl ) ; i ++ ){
				if( myColTbl[ i ].pk == 1 ){
					aryPkColid.push( myColTbl[ i ].id );
					aryPkColtype.push( myColTbl[ i ].type );
				};
			};

			var objUqColid = {};
			//uqTblをループし、ユニーク列情報を取得する。
			for( var i = 0 ; _U.isIdx( i , uqTbl ) ; i ++ ){
				var uqInfo = uqTbl[ i ];
				for( var j = 0 ; _U.isIdx( j , uqInfo._children ) ; j ++ ){
					var uqCol = uqInfo._children[ j ].col;
					objUqColid[ uqCol ] = uqCol;
				};
			};

			var objRow = {};
			if( targRow ){
				//targRowがそのままでは利用し難いので、colidをキーとするオブジェクトに変換する。
				for( var i = 0 ; _U.isIdx( i , aryHead ) ; i ++ ){
					if( i == targRow.length ){
						break;
					};
					objRow[ aryHead[i] ] = targRow[ i ];
				};


				var spanPkCols = _D.g("dtvw_span_pk_cols");
				if( aryPkColid.length > 0 ){
					spanPkCols.innerHTML = "-";
				};
				//PK列の値をタイトル部に反映させる。
				for( var i = 0 ; _U.isIdx( i , aryPkColid ) ; i ++ ){
					var value = _tableData._dataConv4HtmlStr( objRow[ aryPkColid[ i ] ] , aryPkColtype[ i ] );
					var spanPkColsInner = _D.aCAndCN( spanPkCols , nodeDef.pkColsInner );
					spanPkColsInner.innerHTML =_U.htmlEscape( value );
					if( i != aryPkColid.length - 1 ){
						spanPkColsInner.innerHTML += ",";
					};
				};
			};

			//列をループし、tbodyに反映する。
			for( var i = 0 ; _U.isIdx( i , myColTbl ) ; i ++ ){
				var colInfo = myColTbl[i];
				var colId = colInfo.id;
				var colName = colInfo.name;
				var colType = colInfo.type;

				var classBGC = "";

				if( _U.find( colId , aryPkColid ) != -1 ){
					classBGC = "_tbody_w_r_";
				}else if( objUqColid.hasOwnProperty( colId ) ){
					classBGC = "_tbody_w_y_";
				};
				


				var colValue = objRow[ colId ];


				var cmnParts = _cmnParts.getParts( colId , colValue );

				var tr = _D.aCAndCN( tbodyBody , nodeDef.tr );
				tr.className +=" " + classBGC;
				tr.id = "dtvw_tr_col_" + colId;

				getElm( tr , getElmKinds.name ).innerHTML = _U.htmlEscape( colName );
				_D.aC( getElm( tr , getElmKinds.valueDV ) , cmnParts.spanElm );
				_D.aC( getElm( tr , getElmKinds.value ) , cmnParts.inputElm );
				for( var j = 0 ; _U.isIdx( j , cmnParts.relatsSubTables ) ; j ++ ){
					_D.aC( getElm( tr , getElmKinds.value ) , cmnParts.relatsSubTables[ j ] );
				};
				for( var j = 0 ; _U.isIdx( j , cmnParts.remarks ) ; j ++ ){
					_D.aC( getElm( tr , getElmKinds.remarks ) , cmnParts.remarks[ j ] );
				};
				for( var j = 0 ; _U.isIdx( j , cmnParts.btns ) ; j ++ ){
					_D.aC( getElm( tr , getElmKinds.links ) , cmnParts.btns[ j ] );
					cmnParts.btns[ j ].onclick = eventFuncs.btnLinkOnClick;
				};

			};

			//value列の幅をヘッダに反映させる。
			var bodyFirstTr = _D.fEC( tbodyBody );
			if( bodyFirstTr ){
				var headTr = _D.g("dtvw_tr_top");
				var bodyValueTd = _D.par( getElm( bodyFirstTr , getElmKinds.value ) );
				var bodyValuedvTd = _D.par( getElm( bodyFirstTr , getElmKinds.valueDV ) );
				var headValue = getElm( headTr , getElmKinds.value );
				var headValuedv = getElm( headTr , getElmKinds.valueDV );
				headValue.style.width = ( bodyValueTd.clientWidth - 2 ) +"px";
				headValuedv.style.width = ( bodyValuedvTd.clientWidth - 2 ) +"px";

				//同時に、value列body部の幅を改めて指定。
				_D.css.del( "span._dtvw_span_value_undv_" );
				_D.css.add( "span._dtvw_span_value_undv_{width:" + ( bodyValueTd.clientWidth - 2 ) + "px;}" );

			};

			elmTblTopRight.style.width = elmTblTopRight.cilientWidth +"px";
			elmTblBodyRight.style.width = elmTblBodyRight.cilientWidth +"px";

		};
		this.reload = function(){
			init( _switch );
		};
	};

	constructorF.prototype = _protoEachDisp;
	_eachDisp.DtV = new constructorF();
}();
delete _;
