// Copyright (c) 2003, 2004 Four J's Development Tools.
// All Rights Reserved.
// Note that the modification of this file is not supported.
// For customizing with your own javascript and cascading style sheets
// please read the product documentation.
//
// $Id: wrappers.js,v 1.109.2.2 2007/10/29 16:56:53 ff Exp $
/****************************************************************************/
function gFieldManager() {
var _currentField;
function OnCurrentField( w, set ) {
if ( set ) {
_currentField = w;
g_eventManager.PreCommit().fieldValue = function(req) { if ( w.GetValue() != w.state.value ) req.data[w.id] = w.GetValue(); return true; };
} else {
_currentField = undefined;
delete g_eventManager.PreCommit().fieldValue;
}
}
this.DiscardChanges = function() {
delete g_eventManager.PreCommit().fieldValue;
_currentField && _currentField.value( _currentField.state.value );
}
this.AppendWrapper = gNoop;
g_wrapperManager.listenUpdate.Item('currentField').Add(OnCurrentField);
}
gRegisterGroup( gFieldManager, 'field' );
function gSmartFieldManager() {
var _managedType = { 'char':true, 'varchar':true, 'string':true, 'integer':true, 'smallint':true, 'float':true, 'smallfloat':true, 'decimal':true, 'text':true };
var _intermediateTrigger = g_wrapperManager.Item('gIntermediateTrigger').state;
g_wrapperManager.listenCreate.Item( 'gIntermediateTrigger' ).Add( function(w) { _intermediateTrigger = w.state; this.Remove(); } );
var _modifiedFieldList = [], _fieldOrderList = {}, _lastIndex = 0, _currentField, _asCurrentField, _eventSink = g_eventManager.EventSink();
function addModifiedFields(request) {
for ( var name in _modifiedFieldList ) {
var w = _modifiedFieldList[name], v = w.GetValue();
if ( v !== w.state.value )
request.data[name] = v;
}
_modifiedFieldList = [];
}
this.DiscardChanges = function() {
delete g_eventManager.PreCommit().SendCurrentFocus;
for ( var id in _modifiedFieldList )
_modifiedFieldList[id].value( _modifiedFieldList[id].state.value );
_modifiedFieldList = [];
}
function ChangeCurrentField( field ) {
if ( field != _currentField ) {
if ( _currentField )
_currentField.Apply( 'currentField', false );
_currentField = field;
_currentField.Apply( 'currentField', true );
}
if ( _currentField ) {
_modifiedFieldList[_currentField.id] = _currentField;
g_eventManager.PreCommit().fields = addModifiedFields;
//gSetTimeout( _currentField.Focus , 1 ); // ensure that the current event is finished before doing _currentField.Focus
}
}
function ResetCurrentField() {
ChangeCurrentField( _asCurrentField );
return true;
}
function ShouldTrig( f, t ) {
var ts = t.state;
if ( ts.beforeField || ts.beforeRow )
return true;
var fs = f.state;
if ( fs.afterField || fs.afterRow || !_managedType[fs.type] || fs.include || ts.picture || fs.picture || ( ( fs.verify || fs.onChange ) && fs.value !== f.GetValue()) || fs.onRowChange )
return true;
return false;
}
function CheckStepTo( it, to ) {
if ( _intermediateTrigger && _intermediateTrigger.value  ) {
if ( it.state.tabIndex == undefined || to.state.tabIndex == undefined )
return false;
if ( to.state.tabIndex > it.state.tabIndex ) {
for ( var it1; it != to && ( it1 = _fieldOrderList[ it.state.tabIndex + 1 ] ); it = it1 )
if ( ShouldTrig( it, it1 ) )
return false;
} else {
return false;
}
return it == to;
} else
return !ShouldTrig( it, to );
}
function FieldChanging( w ) {
g_eventManager.PreCommit().SendCurrentFocus = function( requset ) {  requset.data['Focus'] = w.id; }
if ( _currentField && CheckStepTo( _currentField, w ) )
ChangeCurrentField( w );
else
_eventSink.Commit({});
}
function FindNextField( from, backward ) {
for ( var offset = backward ? -1 : 1, i = from.state.tabIndex + offset; _fieldOrderList[i] && !_fieldOrderList[i].state.enable; i += offset );
return _fieldOrderList[i];
}
function handleNextField( backward ) {
var field = FindNextField( _currentField, backward );
if ( field )
FieldChanging( field );
else
_eventSink.Key( backward ? 'Shift-Tab' : 'Tab' );
return true;
}
function Update( call, data ) {
switch ( call ) {
case 'currentField':
if ( data ) {
_asCurrentField = this;
ChangeCurrentField( _asCurrentField );
g_eventManager.PostCommit().resetCurrent = ResetCurrentField;
} else {
delete g_eventManager.PostCommit().resetCurrent;
_currentField.Apply( 'currentField', false );
_asCurrentField = _currentField = undefined;
}
return;
case 'tabIndex':
delete _fieldOrderList[this.state.tabIndex];
_fieldOrderList[data] = this;
break;
}
return gDetourCall();
}
this.AppendWrapper = function( wrapper ) {
if ( wrapper.state.tabIndex > 0 )
_fieldOrderList[wrapper.state.tabIndex] = wrapper;
wrapper.eventSink.Focus = FieldChanging;
wrapper.eventSink.Next = handleNextField;
gDetour( wrapper, 'Update', Update );
}
}
gRegisterGroup( gSmartFieldManager, 'field' );
function gActionGroup( groupManager ) {
var _currentAction;
this.AppendWrapper = function( w ) {
if ( w.state.currentAction )
this.SetCurrentAction( w );
gDetour( w.eventSink, 'Action', function( name ) {
name == 'cancel' && groupManager.Item('field').DiscardChanges();
return gDetourCall();
}	);
}
this.SetCurrentAction = function( w ) {
if ( _currentAction )
_currentAction.Update( 'currentAction', false );
w.Update( 'currentAction', true );
_currentAction = w;
}
this.UnsetCurrentAction = function() {
_currentAction.Update( 'currentAction', false );
_currentAction = undefined;
}
}
gRegisterGroup( gActionGroup, 'action' );
/****************************************************************************/
function gSmartTableManager( groupManager ) {
this.AppendWrapper = function( w ) {
var _currentRow;
function SetCurrentRow( row ) {
g_eventManager.PreCommit().UpdateSelectedRow = function( request ) {
if ( ! (w.info.selectorName in request.data) )
request.data[w.info.selectorName] = row;
}
g_eventManager.PostCommit().ResetSelectedRow = function() { w.Apply( 'currentRow', _currentRow ); };
w.Apply( 'currentRow', row );
return false;
}
gDetour( w, 'Update', function( call, data ) {
switch (call) {
case 'currentRow':
delete g_eventManager.PostCommit().ResetSelectedRow;
_currentRow = data;
break;
}
gDetourCall();
} );
gDetour( w.eventSink, 'Select', function( name, value ) {
if ( !w.state.beforeRow && !w.state.afterRow )
return SetCurrentRow( value );
return gDetourCall();
} );
gDetour( w.eventSink, 'Key', function( key ) {
var s = w.state;
if ( !s.beforeRow && !s.afterRow )
switch ( key ) {
case 'DOWN':
if ( s.currentRow + 1 < s.pageSize && s.offset + s.currentRow + 1 < s.size )
return SetCurrentRow( s.currentRow + 1 );
break;
case 'UP':
if ( s.currentRow > 0 )
return SetCurrentRow( s.currentRow - 1 );
break;
}
return gDetourCall();
} );
}
}
function gTableManager( groupManager ) {
this.AppendWrapper = gNoop;
}
gRegisterGroup( gSmartTableManager, 'table' );
/****************************************************************************/
gFOCUS_EVENT = 'mousedown';
/****************************************************************************/
gCurrentField = {};
gCurrentField.Set = function( w ) {
if ( gCurrentField.w )
gCurrentField.w.Update( 'currentField', false );
w.Update( 'currentField', true );
gCurrentField.w = w;
}
gCurrentField.Unset = function() {
gCurrentField.w.Update( 'currentField', false );
gCurrentField.w = undefined;
}
/****************************************************************************/
//gNumAlignBehavior.NumTypes = {'integer':true,'interval':true,'smallint':true,'float':true,'smallfloat':true,'decimal':true,'money':true};
function gNumAlignBehavior( w ) {
w.numAlign = function( set ) {
gSetClass( w.elt, 'gNumAlign', set );
}
gDetour( w, 'currentField', function( set ) {
gDetourCall();
w.elt.style.textAlign = set ? w.state.numAlign ? 'right':'left' : '';
} );
}
gAutonextBehavior.HandleAutonext = function( event ) {
if ( gIsCharByUnicode(event.keyCode) && this.elt.value.length == this.elt.maxLength )
this.eventSink.Next();
}
function gAutonextBehavior( w ) {
gDetour( w, 'autoNext', function( set ) {
gDetourCall();
gSetEvent.call( w, w.elt, 'keyup', gAutonextBehavior.HandleAutonext, set );
} );
}
gTypeCheckBehabior.Chars = { 'integer':'0123456789-', 'decimal':'0123456789-.,', 'float':'0123456789-.,Ee' }
gTypeCheckBehabior.Check = function( event ) {
event.charCode && gTypeCheckBehabior.Chars[this.state.type] && gTypeCheckBehabior.Chars[this.state.type].indexOf(String.fromCharCode(event.charCode)) == -1 && gEventHandled( event );
}
function gTypeCheckBehabior( w ) {
gDetour( w, 'type', function( type ) {
gDetourCall();
gSetEvent.call( w, w.elt, 'keypress', gTypeCheckBehabior.Check, type != undefined );
} );
}
gDefaultFieldBehavior.AppendElement = function( e ) {
this.elt = e;
}
gDefaultFieldBehavior.Finalize = function() {
gRemoveEvents(this.elt);
this.elt = undefined;
}
gDefaultFieldBehavior.value = function( value ) {
this.elt.value = value;
}
gDefaultFieldBehavior.enable = function( set ) {
this.elt.disabled = !set;
gSetEvent.call( this, this.elt, gFOCUS_EVENT, this.HandleFocus, set && !this.state.currentField );
}
gDefaultFieldBehavior.maxLength = function( len ) {
if ( len != undefined )
this.elt.maxLength = len;
else
this.elt.removeAttribute( 'maxLength', true );
}
gDefaultFieldBehavior.comment = function( text ) {
this.elt.title = text;
}
gDefaultFieldBehavior.shift = function( shift ) {
gSetClass( this.elt, 'gShiftUp', shift == 'up' );
gSetClass( this.elt, 'gShiftDown', shift == 'down' );
}
gDefaultFieldBehavior.justify = function( pos ) {
gSetClass( this.elt, 'gJustifyLeft', pos == 'left' );
gSetClass( this.elt, 'gJustifyRight', pos == 'right' );
gSetClass( this.elt, 'gJustifyCenter', pos == 'center' );
}
gDefaultFieldBehavior.setStyle = function( styleName ) {
gSetClass( this.elt, styleName, true );
}
gDefaultFieldBehavior.unsetStyle = function( styleName ) {
gSetClass( this.elt, styleName, false );
}
gDefaultFieldBehavior.notNull = function( set ) {
gSetClass( this.elt, 'gNotNull', set );
}
gDefaultFieldBehavior.required = function( set ) {
gSetClass( this.elt, 'gRequired', set );
}
gDefaultFieldBehavior.currentField = function( set ) {
gSetClass( this.elt, 'gCurrentField', set );
gSetEvent.call( this, this.elt, gFOCUS_EVENT, this.HandleFocus, !set && this.state.enable );
if ( set )
this.Focus();
else
this.Blur();
g_keyManager.Set.call( this, set, this.HandleTab, 9 );
g_keyManager.Set.call( this, set, this.HandleEnter, 13 );
g_keyManager.Set.call( this, set, this.HandleNav, 38, 40 );
}
gDefaultFieldBehavior.GetValue = function() {
var val = this.elt.value;
if ( this.state.shift )
switch ( this.state.shift ) {
case 'up'   : return val.toUpperCase();
case 'down' : return val.toLowerCase();
}
return val;
}
gDefaultFieldBehavior.Focus = function() {
gSafeFocus(this.elt);
}
gDefaultFieldBehavior.Blur = function() {
gSafeBlur(this.elt);
}
function TranslateKey( key, shift, ctrl, alt ) {
return (ctrl?'CONTROL-':'') + (shift?'SHIFT-':'') + (alt?'ALT-':'') + { '9':'TAB', '33':'PRIOR', '34':'NEXT', '38':'UP', '40':'DOWN', '35':'END', '36':'HOME', '37':'LEFT', '39':'RIGHT' }[key];
}
gDefaultFieldBehavior.HandleNav = function( key, shift, ctrl, alt ) {
this.eventSink.Key( TranslateKey( key, shift, ctrl, alt ) );
}
gDefaultFieldBehavior.HandleFocus = function( ev ) {
this.eventSink.Focus(this);
}
gDefaultFieldBehavior.HandleEnter = function() {
this.eventSink.Action('accept');
}
gDefaultFieldBehavior.HandleTab = function( key, shift ) {
this.eventSink.Next(shift);
}
gDefaultFieldBehavior.type = function( type ) {
var typeToClass = {
'char':'gTypeChar', 'varchar':'gTypeVarchar', 'string':'gTypeString',
'date':'gTypeDate', 'datetime':'gTypeDatetime', 'interval':'gTypeInterval',
'integer':'gTypeInteger', 'smallint':'gTypeSmallint', 'float':'gTypeFloat', 'smallfloat':'gTypeSmallfloat', 'decimal':'gTypeDecimal', 'money':'gTypeMoney',
'byte':'gTypeByte', 'text':'gTypeText', 'datetime year to second':'gDatetimeYearToSecond', 'hour to fraction':'gHourToFraction'
};
this.state.type && typeToClass[this.state.type] && gRemoveClass( this.elt, typeToClass[this.state.type] );
type &&	typeToClass[type] && gAddClass( this.elt, typeToClass[type] );
}
function gDefaultFieldBehavior( w ) {
gMergeObjects( w, gDefaultFieldBehavior )
}
/****************************************************************************/
function NewApplicationWrapper( w ) {
w.url = function( value ) {
window.open( value, '_blank' );
}
}
gRegisterWrapper( NewApplicationWrapper, undefined, 'newApplication' );
/****************************************************************************/
gRegisterWrapper( undefined, gBY_ELEMENT_ID, 'gIntermediateTrigger', gElementId, function( w, e, s ) { s.value = e.value; } );
/****************************************************************************/
gInitFieldWrapper.tr = {
gShiftUp:{ shift:'up' }, gShiftDown:{ shift:'down' },
gJustifyLeft:{ justify:'left' }, gJustifyCenter:{ justify:'center' }, gJustifyRight:{ justify:'right' },
gTypeChar:{ type:'char' }, gTypeVarchar:{ type:'varchar' }, gTypeString:{ type:'string' },
gTypeDate:{ type:'date' }, gTypeDatetime:{ type:'datetime' }, gTypeInterval:{ type:'interval' },
gTypeInteger:{ type:'integer' }, gTypeSmallint:{ type:'smallint' }, gTypeFloat:{ type:'float' }, gTypeSmallfloat:{ type:'smallfloat' }, gTypeDecimal:{ type:'decimal' }, gTypeMoney:{ type:'money' },
gTypeByte:{ type:'byte' }, gTypeText:{ type:'text' },
gCurrentField:{ currentField:true },
gNumAlign:{ numAlign:true },
gNoEntry:{noEntry:true}, gNotNull:{notNull:true}, gRequired:{required:true}, gAutoNext:{autoNext:true}, gVerify:{verify:true},
gInclude:{include:true}, gJustify:{justift:true}, gAfterField:{afterField:true}, gBeforeField:{beforeField:true}, gOnChange:{onChange:true},
gBeforeRow:{beforeRow:true},	gAfterRow:{afterRow:true},
gWantTabs:{wantTabs:true}, gWantReturns:{wantReturns:true},
gQuery:{query:true},
gCenturyC:{century:'C'}, gCenturyF:{century:'F'}, gCenturyP:{century:'P'}, gCenturyR:{century:'R'}
};
function gInitFieldWrapper( w, e, s ) {
s.value = e.value;
gTranslate( s, e.className.split(' '), gInitFieldWrapper.tr );
var nextElt = gNextSibling(e);
if (nextElt && nextElt.name == 'gPicture' )
s.picture = nextElt.value;
if ( e.tabIndex > 0 )
s.tabIndex = e.tabIndex;
s.enable = !e.disabled;
if ( s.currentField )
gCurrentField.w = w;
}
function gEditWrapper( w ) {
gDefaultFieldBehavior(w);
w.Focus = function() {
gSafeFocus(w.elt);
gSafeSelect(w.elt);
}
w.Blur = function() {
gUnSelectField(w.elt);
gSafeBlur(w.elt);
}
}
gRegisterWrapper( gEditWrapper, gBY_ELEMENT_CLASS, 'gEdit', gElementName, gInitFieldWrapper, 'field' );
gRegisterWrapper( gEditWrapper, gBY_ELEMENT_CLASS, 'gTextEdit', gElementName, gInitFieldWrapper, 'field' );
gRegisterWrapper( gEditWrapper, gBY_ELEMENT_CLASS, 'gDateEdit', gElementName, gInitFieldWrapper, 'field' );
gRegisterWrapper( gEditWrapper, gBY_ELEMENT_CLASS, 'gButtonEdit', gElementName, gInitFieldWrapper, 'field' );
/****************************************************************************/
function gComboboxWrapper( w ) {
gDefaultFieldBehavior(w);
w.Focus = gNoop;
}
gRegisterWrapper( gComboboxWrapper, gBY_ELEMENT_CLASS, 'gComboBox', gElementName, gInitFieldWrapper, 'field' );
gRegisterWrapper( gComboboxWrapper, gBY_ELEMENT_CLASS, 'gCheckBox', gElementName, gInitFieldWrapper, 'field' );
/****************************************************************************/
function gInitLabelWrapper( w, e, s ) {
s.value = gStringReplacer( { '<br>':'\n', '<BR>':'\n', '&amp;':'&', '&lt;':'<', '&gt;':'>', '&quot;':'"' } )( e.innerHTML );
}
function gLabelWrapper( w ) {
w.justify = gDefaultFieldBehavior.justify;
w.comment = gDefaultFieldBehavior.comment;
w.setStyle = gDefaultFieldBehavior.setStyle;
w.unsetStyle = gDefaultFieldBehavior.unsetStyle;
w.value = function( value ) {
if ( value != '' )
w.elt.innerHTML = gStringReplace( value, { '\n':'<br>', '&':'&amp;', '<':'&lt;', '>':'&gt;', '"':'&quot;' } );
else
w.elt.innerHTML = '&nbsp;';
}
w.AppendElement = function( e ) {
w.elt = e;
}
}
gRegisterWrapper( gLabelWrapper, gBY_ELEMENT_CLASS, 'gLabel', gElementId, gInitLabelWrapper );
/****************************************************************************/
gInitImageWrapper.tr = { gStretchX:{stretchX:true}, gStretchY:{stretchY:true}, gAutoScale:{autoScale:true} }
function gInitImageWrapper( w, e, s ) {
s.value = e.src;
gTranslate( s, e.className.split(' '), gInitImageWrapper.tr );
}
function gImageWrapper( w ) {
w.justify = gDefaultFieldBehavior.justify;
w.comment = gDefaultFieldBehavior.comment;
w.setStyle = gDefaultFieldBehavior.setStyle;
w.unsetStyle = gDefaultFieldBehavior.unsetStyle;
w.value = function( value ) {
if ( value == '' ) {
w.elt.style.visibility = 'hidden';
w.elt.removeAttribute( 'src', true );
} else {
w.elt.style.visibility = '';
w.elt.src = value;
}
}
w.AppendElement = function( e ) {
w.elt = e;
}
}
gRegisterWrapper( gImageWrapper, gBY_ELEMENT_CLASS, 'gImage', gElementId, gInitImageWrapper );
/****************************************************************************/
function gInitActionWrapper( w, e, s ) {
s.enable = !e.disabled;
if ( gHasClass( e.parentNode, 'gCurrentAction' ) )
s.currentAction = true;
}
function gActionWrapper( w ) {
w.eltList = [];
w.currentAction = function( set ) {
for ( var i in w.eltList )
gSetClass( w.eltList[i], 'currentAction', set );
}
w.enable = function( set ) {
for ( var i in w.eltList ) {
w.eltList[i].disabled = !set;
gSetEvent( w.eltList[i], 'click', gOnClick, set );
}
}
function gOnClick( event ) {
if ( w.eventSink.Action( event.target.name ) )
gEventHandled( event );
}
w.Finalize = function() {
for ( var it in w.eltList )
gRemoveEvents( w.eltList[it] );
}
w.AppendElement = function( e ) {
for ( var i in w.eltList )
w.eltList[i].parentNode || delete w.eltList[i];
w.eltList.push(e);
}
}
gRegisterWrapper( gActionWrapper, gBY_ELEMENT_CLASS, 'gAction', function(e) { return 'action_' + e.name }, gInitActionWrapper, 'action' );
/****************************************************************************/
function gInitMatrixSelectorWrapper( w, e, s ) {
if ( !w.state ) {
w.info.selectorName = e.name;
s.activeCellCount = 0;
}
if ( e.checked )
s.currentCell = e.value;
e.disabled || s.activeCellCount++;
}
function gMatrixSelectorWrapper( w ) {
var _eltList = [];
w.activeCellCount = function( activeCellCount ) {
for ( var it in _eltList ) {
var set = ( it < activeCellCount );
_eltList[it].disabled = !set;
gSetEvent( _eltList[it], 'click', OnClick, set );
}
}
w.currentCell = function( cell ) {
if ( w.state.currentCell != undefined ) {
_eltList[w.state.currentCell].checked = false;
}
if ( cell != undefined ) {
_eltList[cell].checked = true;
}
}
function OnClick( event ) {
if ( w.eventSink.Select( event.target.name, event.target.value ) )
gEventHandled( event );
}
w.AppendElement = function( e ) {
_eltList[Number(e.value)] = e;
}
w.Finalize = function() {
for ( var it in _eltList )
gRemoveEvents( _eltList[it] );
}
}
gRegisterWrapper( gMatrixSelectorWrapper, gBY_ELEMENT_CLASS, 'gMatrixSelect', gElementName, gInitMatrixSelectorWrapper );
/****************************************************************************/
/****************************************************************************/
function gInitTableHeaderWrapper( w, e, s ) {
s.hidden = gHasClass( e, 'gHidden' );
s.sorted = (gHasClass( e, 'gSortAsc' ) && 'asc') || (gHasClass( e, 'gSortDesc' ) && 'desc') || undefined;
s.enable = !e.disabled;
}
function gTableHeaderWrapper( w ) {
w.enable = function( set ) {
w.elt.disabled = !set;
gSetEvent( w.elt, 'click', gOnClick, set );
}
w.sorted = function( direction ) {
gSetClass( w.elt, 'ascSort', direction == 'asc' );
gSetClass( w.elt, 'descSort', direction == 'desc' );
}
function gOnClick( event ) {
if ( w.eventSink.Misc( w.elt.name, w.elt.value ) )
gEventHandled( event );
}
w.AppendElement = function( e ) {
w.elt = e;
}
w.Finalize = function() {
gRemoveEvents( w.elt );
}
}
gRegisterWrapper( gTableHeaderWrapper, gBY_ELEMENT_CLASS, 'gTableHeader', gElementName, gInitTableHeaderWrapper );
/****************************************************************************/
function gInfoElement( elt, name ) {
for ( ; elt && elt.name != name; elt = gNextSibling(elt) );
if ( elt ) return Number(elt.value);
}
function gInitTableWrapper( w, e, s ) {
s.beforeRow = gHasClass( gFirstChild(e.tBodies[0].rows[0].cells[0]), 'gBeforeRow' );
s.afterRow = gHasClass( gFirstChild(e.tBodies[0].rows[0].cells[0]), 'gAfterRow' );
s.enabledSelection = !gFirstChild(e.tBodies[0].rows[0].cells[0]).disabled;
w.info.selectorName = gFirstChild(e.tBodies[0].rows[0].cells[0]).name;
for ( var rows = e.tBodies[0].rows, row = 0, len = rows.length; row < len; row++ )
if ( gFirstChild(rows[row].cells[0]).checked ) {
s.currentRow = row;
break;
}
s.enabledScroll = gHasClass( e, 'gEnabledScroll' );
s.size = gInfoElement( e, 'gSize' );
s.pageSize = gInfoElement( e, 'gPageSize' );
s.offset = gInfoElement( e, 'gOffset' );
}
function gTableWrapper( w ) {
var _scrollBar = new gScrollable(w);
w.enabledSelection = function( set ) {
gForEach( w.elt.tBodies[0].rows, function(e) {
gFirstChild(gFirstChild(e)).disabled = !set;
gSetEvent( gFirstChild(gFirstChild(e)), 'click', OnClick, set );
} );
}
w.currentRow = function( row ) {
if ( w.state.currentRow != undefined ) {
var elt = gFirstChild(gFirstChild(w.elt.tBodies[0].rows[w.state.currentRow]));
elt.checked = false;
gAddEvent( elt, 'click', OnClick );
}
if ( row != undefined ) {
var elt = gFirstChild(gFirstChild(w.elt.tBodies[0].rows[row]));
elt.checked = true;
gRemoveEvent( elt, 'click', OnClick );
}
}
w.AppendElement = function( e ) {
_scrollBar.Create(e);
w.elt = e;
}
function OnClick( event ) {
if ( w.eventSink.Select( event.target.name, event.target.value ) )
gEventHandled( event );
}
w.Finalize = function() {
gForEach( w.elt.tBodies[0].rows, function(e) { gRemoveEvent( gFirstChild(gFirstChild(e)), 'click', OnClick ); } );
}
}
gRegisterWrapper( gTableWrapper, gBY_ELEMENT_CLASS, 'gTable', gElementId, gInitTableWrapper, 'table' );
/****************************************************************************/
function gInitScrollgridWrapper( w, e, s ) {
s.enabledScroll = gHasClass( e, 'gEnabledScroll' );
s.size = gInfoElement( e, 'gSize' );
s.pageSize = gInfoElement( e, 'gPageSize' );
s.offset = gInfoElement( e, 'gOffset' );
}
function gScrollgridWrapper( w ) {
var _scrollBar = new gScrollable(w);
w.AppendElement = function( e ) {
_scrollBar.Create(e);
}
}
gRegisterWrapper( gScrollgridWrapper, gBY_ELEMENT_CLASS, 'gScrollGrid', gElementId, gInitScrollgridWrapper );
/****************************************************************************/
function gPanelWrapper( w ) {
w.AppendElement = function( e ) {
w.elt = e;
}
w.Remove = function() {
gRemoveElement( w.elt );
}
}
gRegisterWrapper( gPanelWrapper, gBY_ELEMENT_CLASS, 'gMenu', function(e) { return 'panel' } );
gRegisterWrapper( gPanelWrapper, gBY_ELEMENT_CLASS, 'gDialog', function(e) { return 'panel' } );
/****************************************************************************/
function gInitMessageWrapper( w, e, s ) {
s.text = gStringReplacer( { '<br>':'\n', '<BR>':'\n', '&amp;':'&', '&lt;':'<', '&gt;':'>', '&quot;':'"' } )( e.innerHTML );
}
function gMessageWrapper( w ) {
w.text = function( text ) {
w.elt.innerHTML = gStringReplace( text, { '\n':'<br>', '&':'&amp;', '<':'&lt;', '>':'&gt;', '"':'&quot;' } );
}
w.AppendElement = function( e ) {
w.elt = e;
}
w.Create = function( id ) {
w.elt = gIdToElement('gDialogForm').appendChild( gCreateElement('P', { id:id, className:id } ) );
}
w.Remove = function() {
gRemoveElement( w.elt );
}
}
gRegisterWrapper( gMessageWrapper, gBY_ELEMENT_CLASS, 'gMessage', gElementId, gInitMessageWrapper );
gRegisterWrapper( gMessageWrapper, gBY_ELEMENT_CLASS, 'gError', gElementId, gInitMessageWrapper );
/****************************************************************************/
function gScrollable( wrapper ) {
var up, dn, pgup, pgdn;
wrapper.enabledScroll = function( set ) {
up.style.display = set ? '' : 'none';
dn.style.display = set ? '' : 'none';
pgup.style.display = set ? '' : 'none';
pgdn.style.display = set ? '' : 'none';
}
function Move( value ) {
wrapper.eventSink.Offset( gMinMax( wrapper.state.offset + value, 0, wrapper.state.size - wrapper.state.pageSize ) );
}
function onUp() {
Move(-1);
}
function onDn() {
Move(1);
}
function onPgUp() {
Move(-wrapper.state.pageSize);
}
function onPgDn() {
Move(wrapper.state.pageSize);
}
function AppendButton( e, text ) {
return e.appendChild( gCreateElement('INPUT', { type:'button', value:text } ) );
}
this.Create = function( elt ) {
var div = gCreateElement( 'SPAN', { className:'navPanel' } );
gInsertAfter( div, elt );
up = AppendButton( div, 'up' );
dn = AppendButton( div, 'dn' );
pgup = AppendButton( div, 'pgup' );
pgdn = AppendButton( div, 'pgdn' );
gAddEvent( up, 'click', onUp );
gAddEvent( dn, 'click', onDn );
gAddEvent( pgup, 'click', onPgUp );
gAddEvent( pgdn, 'click', onPgDn );
gDetour( wrapper, 'Finalize', function() {
gRemoveEvent( up, 'click', onUp );
gRemoveEvent( dn, 'click', onDn );
gRemoveEvent( pgup, 'click', onPgUp );
gRemoveEvent( pgdn, 'click', onPgDn );
gDetourCall();
} );
}
}
/****************************************************************************/
function gInitIdleWrapper( w, e, s ) {
s.delay = e.value;
}
function gIdleWrapper( w ) {
var _timer = undefined;
function ClearTimeout() {
if ( _timer ) {
gClearTimeout( _timer );
_timer = undefined;
}
}
function ResetTimeout() {
ClearTimeout();
_timer = gSetTimeout( function() {
ResetTimeout();
w.eventSink.Misc( 'Idle', 'TRUE' );
}, w.state.delay * 1000 );
}
function UnIdleEvent(set) {
gSetEvent( document.body, 'mousemove', ResetTimeout, set );
gSetEvent( document.body, 'keydown', ResetTimeout, set );
}
w.Remove = function() {
UnIdleEvent( false );
ClearTimeout();
}
w.delay = function( delay ) {
UnIdleEvent( true );
ResetTimeout();
}
}
gRegisterWrapper( gIdleWrapper, gBY_ELEMENT_ID, 'gIdleAction', function() { return 'Idle' }, gInitIdleWrapper );
/****************************************************************************/
