/*
   Copyright© 2004 by OCLC Online Computer Library Center, Inc.               
   OCLC proprietary information: the enclosed materials contain proprietary   
   information of OCLC Online Computer Library Center, Inc. and shall not be  
   disclosed in whole or in any part to any third party or used by any person 
   for any purpose, without written consent of OCLC, Inc.                     
   Duplication of any portion of these materials shall include this legend.   
                                                                              
   File:          select.js                                          
   Description:   Select Object Scripts.                                  
   Language(s):   JavaScript 1.3; HTML 4.0                                
   Revisions:     See Source Code Library.                                    
*/


/**
 * Add an Option to a Select Element.
 *
 * @param Select  select   Select element.
 * @param String  name     Option name.
 * @param String  value    Option value.
 * @param boolean selected Option selected indicator.
 * @param String  defaultValue; will override the selected value from array if matched
 */
function addSelectOption( select, name, value, selected, defaultValue )
{
	var realSelected = selected;	
	if (defaultValue != '') {
   		if (defaultValue == value) {
   			realSelected = true;
   		} else {
   			realSelected = false;
   		}
	}
	i = select.options.length;
	select.options[i]                 = new Option();
	select.options[i].text            = name;
	select.options[i].value           = value;
	select.options[i].selected        = realSelected;
	select.options[i].defaultSelected = realSelected;
}


/**
 * Delete all Options from a Select Element.
 *
 * @param Select select Select element.
 */
function deleteSelectOptions( select )
{
   select.options.length = 0;
}


/**
 * Set the Option List for a Select Element.
 *
 * @param Select select Select element.
 * @param Array  list   Multidimensional Array of Options {Name, Value, Selected}.
 *                      The list can be defined like this:
 *                      var myList = new Array( new Array( "Name_1", "Value_1", true ) 
 *                                              new Array( "Name_2", "Value_2", false ) );
 * @param String  defaultValue; will override the selected value from array if matched
 */
function setSelectOptions( select, list, defaultValue )
{
   // Delete Options.
   deleteSelectOptions( select );

   // If List, Add Options.
   if( list != null )
   {
      for( i = 0; i < list.length; i++ )
      {
         addSelectOption( select, list[i][0], list[i][1], list[i][2], defaultValue );
      }
   }
}


/**
 * Set & Filter the Option List for a Select Element.
 *
 * @param Select select Select element.
 * @param Array  list   Multidimensional Array of Options {Name, Value, Selected}.
 *                      The list can be defined like this:
 *                      var myList = new Array( new Array( "Name_1", "Value_1", true ) 
 *                                              new Array( "Name_2", "Value_2", false ) );
 * @param RegExp re     Regular Expression Object.
 */
function setFilteredSelectOptions( select, list, re, defaultState )
{
   // If List, Filter by Regular Expression Pattern.
   if( list != null )
   {
      var filteredList = new Array();
      for( i = 0; i < list.length; i++ )
      {
         if( re.test( list[i] ) || list[i][1].length == 0 )
         {
            filteredList[filteredList.length] = list[i];
         }
      }
   }
   
   // Load Select Element with Filtered List.
   setSelectOptions( select, filteredList, defaultState );
}
