
function formui_doesFieldExist( form, fieldName )

{
   return ( form.elements[fieldName] || false );
}

function formui_setFocusToFirstField( form )

{
   for ( var i = 0 ; i < form.elements.length ; ++i )
   {
      var elem = form.elements[i];
      if (   
            ( elem.type == 'checkbox'        )||
            ( elem.type == 'radio'           )||
            ( elem.type == 'select-one'      )||
            ( elem.type == 'select-multiple' )||
            ( elem.type == 'text'            )||
            ( elem.type == 'textarea'        )
         )
      {
         if ( !elem.disabled )
         {
            elem.focus();
            return true;
         }
      }
   }
   return false;
}

function formui_getSelectedCheckboxValuesList( form, checkboxNamePrefix, delimiter )

{
   return formui_getCheckboxValuesList( form, checkboxNamePrefix, delimiter, true );
}

function formui_getUnSelectedCheckboxValuesList( form, checkboxNamePrefix, delimiter )

{
   return formui_getCheckboxValuesList( form, checkboxNamePrefix, delimiter, false );
}

function formui_getCheckboxValuesList( form, checkboxNamePrefix, delimiter, isChecked )

{
   var index = 0;
   var dsvList = dsvlist_createCustom( delimiter ? delimiter : ",", "" );

   do
   {
      var checkbox = form.elements[checkboxNamePrefix+index];

      if ( checkbox && ( checkbox.checked == isChecked ) )
      {
         dsvList.addValue( checkbox.value );
      }

      ++index;
   }
   while ( checkbox );

   return dsvList.toString() ;
}

function formui_setCheckboxesFor( form, checkboxNamePrefix, isChecked )

{
   var index = 0;

   do
   {
      var checkbox = form.elements[checkboxNamePrefix+index];

      if ( checkbox )
      {
         checkbox.checked = isChecked;
      }

      ++index;
   }
   while ( checkbox );
}

function formui_setShadowedFieldValue( form, fieldName, displayFieldName, itemValue, itemText )

{
   form.elements[fieldName].value        = itemValue;
   form.elements[displayFieldName].value = itemText; 
}

function formui_AddToCSVList( elemObj, itemValue )

{
   var csvList = dsvlist_createCSVList( elemObj.value );

   csvList.addValues( itemValue );

   elemObj.value = csvList.toString();
}

function formui_containsOption( selectObj, isDynamic, itemValue )

{
   var options = selectObj.options;

   
   for ( var i = 0 ; i < options.length ; ++i )
   {
      if ( options[i].value == itemValue )
      {
         return true;
      }
   }

   return false;
}

function formui_addOption( selectObj, isDynamic, itemValue, itemText )

{
   
   if ( !formui_containsOption( selectObj, isDynamic, itemValue ) )
   {
      var size = selectObj.options.length;

      if ( isDynamic )
      {
         
         
         
         
         
         
         var dynamicMarker = new Option( selectObj.options[size-1].text, selectObj.options[size-1].value );

         
         selectObj.options[size-1] = new Option( itemText, itemValue );

         
         selectObj.options[size] = dynamicMarker;
      }
      else
      {
         selectObj.options[size] = new Option( itemText, itemValue );
      }
      return true;
   }

   return false;
}

function formui_removeSelectedOptions( selectObj, isDynamic )

{
   var isChanged = false;
   var isMore;

   do
   {
      var size = formui_getOptionListSize( selectObj, isDynamic );

      isMore = false;
      for ( var i = 0 ; i < size ; ++i )
      {
         if ( selectObj.options[i].selected )
         {
            selectObj.options[i] = null;
            isMore = true;
            isChanged = true;
            break;
         }
      }
   }
   while ( isMore );

   return isChanged;
}

function formui_selectAllOptions( selectObj, isDynamic )

{
   var size = formui_getOptionListSize( selectObj, isDynamic );

   for ( var i = 0 ; i < size ; ++i )
   {
      selectObj.options[i].selected = true;
   }

   if ( isDynamic )
   {
      
      selectObj.options[size].selected = false;
   }
}

function formui_getOptionListSize( selectObj, isDynamic )

{
   if ( isDynamic )
   {
      
      return selectObj.options.length - 1;
   }
   else
   {
      return selectObj.options.length;
   }
}

function formui_addShadowedOption( form, fieldName, displayFieldName, itemValue, itemText )

{
   var selectObj = form.elements[displayFieldName];
   
   if ( formui_addOption( selectObj, true, itemValue, itemText ) )
   {
      var dsvList = dsvlist_create( form.elements[fieldName].value );

      dsvList.addValue( itemValue );
      form.elements[fieldName].value = dsvList.toString();
   }
}

function formui_removeSelectedShadowedOptions( form, fieldName, displayFieldName )

{
   var selectObj = form.elements[displayFieldName];

   if ( formui_removeSelectedOptions( selectObj, true ) )
   {
      var size = formui_getOptionListSize( selectObj, true );

      if ( size == 0 )
      {
         form.elements[fieldName].value = "";
      }
      else
      {
         var dsvList = dsvlist_create( "" );

         for ( var i = 0 ; i < size ; ++i )
         {
            dsvList.addValue( selectObj.options[i].value );
         }

         form.elements[fieldName].value = dsvList.toString();
      }
   }
}

