// scenarios.js:  Supporting JavaScripts for scenario windows.
// Copyright (c) 2000 Sundown Software Systems, Inc. All Rights Reserved

debugLog( "scenarios:  Loading." );
// document.domain='i-orp.com';		// Domain common with IIS1.
var _parent = null;		// Better be oprPform.html
//  n is the number of elements to process, excludes buttons at the bottom.

//  _form:  Form on the scenario screen to be processed.
// _getValues:  Get the current settings for the settable parameters for this scenario.
function _getValues( _form, n, _name )
{
   document.domain='i-orp.com';		// Domain common with IIS1.
   var _parent = window.opener;		// Better be oprPform.html
   window.name = _name;			// Name of this window.
   debugLog( "scenarios._getValues called from:  " + _parent.name  + "  " + n + " elements" );
   if( _parent.name != 'orpPform' )
   {
      alert( _parent.name + " parent window is not input form" );
      close();
      return;
   }
   for( var i8 = 0; i8 < n; i8++ )	// sans buttons
   {
       var screenObject = _form.elements[i8];
				// Returns string from orpPform element value
       var v = _parent._getInputValue( screenObject.name );

       debugLog( "scenarios._getValues:  Object type - " + screenObject.name + '   ' + screenObject.type +
              '  v = ' + v );

       if( screenObject.type == 'checkbox' && typeof( v ) == 'boolean' )
           screenObject.checked = v;
       else if( screenObject.type == 'text' )
       {                       // Text field
           if( v == '' )		// Replace blank with default
               v = _getDefault( _form.elements[i8].name );
           _form.elements[i8].value = v;
       }
       else
           debugLog( "scenarios._getValues:  Illegal object type - " + screenObject.name + '   ' + screenObject.type +
              '  v = ' + v );
   }
   debugLog( "scenarios._getValues: exiting with " + i8 + " values processed." );  
   return false;
}

// _submit:  Run the current query, out of orpPform, of course.
// _describe:  Description of the scenario being run.
function _submit( _form, n, _describe )
{
   _parent = window.opener;		// Better be oprPform.html
   debugLog( window.name + ".scenarios._submit called from  " + _parent.name );
   _parent._clearInputValue( 'spend' );	// Clear CRC indicator before transfer.
   _parent._clearInputValue( 'vdlProg' );	// Set vdl program name to default.
   for( var i9 = 0; i9 < n; i9++ )	// sans buttons
   {
       var v = _form.elements[i9];		// Input item object
       var d = _getDefault( v.name );	// String with default value
       debugLog( window.name + ".scenarios._submit:  form = " + v.value + "  default = " + d );
       if( v.value === d )		       // If value == default value, set field blank
       {
          debugLog( window.name + ".scenarios._submit:  Value has not changed.  Clear " + v.name );
          _parent._clearInputValue( v.name );
       }
       else
       {
          debugLog( window.name + ".scenarios._submit:  calling _setInputValue with " + v.name + " = " + v.value );
          _parent._setInputValue( v );
       }
   }
   _parent._runForm( _describe );
   debugLog( window.name + ".scenarios._submit exits  " );
   return false;		// Keep this form's submit from happening.
}


function _getDefault( _field )
{
//  The object _defaults contains a set of attributes and values that serve as an associative array.  The values
//  can be either a default value or a reference to another field, which contains the default.
    var _defaults = { retage:65, socseca:'retage', socseca2:'retage', pensiona:'retage', pensina2:'retage', taxratei:20,
           inflatn:3.5, returnv:10, returnr:'returnv', returni:'returnv', returnir:'returnr', estate:1000 };

// Special case because return is a JavaScript key word it cannot also be an object attribute.
   _field = _field === 'return' ? 'returnv' : _field;
   debugLog( "scenarios._getDefault:  _field = " + _field + ", type = " + typeof( _field ) );
   if( _field == 'vdlProg' )		// Special non numeric case -- vdl report generator.
   {
      debugLog( "scenarios._getDefault:  exits with retire.vdl " );
      return 'retire.vdl';
   }
   while( typeof( _field ) === 'string' )
   {
      var x = _defaults[_field];
      if( typeof( x ) === 'undefined' )
         return '';
      _field = x;
//debugLog( "scenarios._getDefault:  _field = " + _field + ", type = " + typeof( _field ) );
   }
   debugLog( "scenarios._getDefault:  exitiing with _field = " + _field + " type = " + typeof( _field ) );
   return _field;
}
