function createForm( action, params, method ) {
	if (document.getElementById) {
    	thisF = document.createElement('FORM');
		thisF.setAttribute( 'method', method );
  		thisF.setAttribute( 'action', action );
  		document.getElementsByTagName("body")[0].appendChild(thisF);
  }

  for ( inputName in params ) {
    newField( thisF, 'hidden', inputName, params[inputName] );
  }

  return thisF;

}

function submitForm( action, params, method ) {
   // alert ("params1:"+params["PB"]);
    var theForm = createForm( action, params, method );
  //  alert ("params2:"+params["PB"]);
    theForm.submit();
}
    
function newField (form, fieldType, fieldName, fieldValue) {
    
  if (document.getElementById) {
    var input = document.createElement('INPUT');
      if (document.all) { // what follows should work 
                          // with NN6 but doesn't in M14
        input.type = fieldType;
        input.name = fieldName;
        input.value = fieldValue;
      }
      else if (document.getElementById) { // so here is the
                                          // NN6 workaround
        input.setAttribute('type', fieldType);
        input.setAttribute('name', fieldName);
        input.setAttribute('value', fieldValue);
      }
    form.appendChild(input);
  }

}

function getField (form, fieldName) {
  if (!document.all)
    return form[fieldName];
  else  // IE has a bug not adding dynamically created field 
        // as named properties so we loop through the elements array 
    for (var e = 0; e < form.elements.length; e++)
      if (form.elements[e].name == fieldName)
        return form.elements[e];
  return null;
}        

function removeField (form, fieldName) {
  var field = getField (form, fieldName);
  if (field && !field.length)
    field.parentNode.removeChild(field);
}

function renameField( form, sourceFieldName, newName ) {
    if (!document.all) {
        var val = form[sourceFieldName].value;
        newField( form, 'hidden', newName, val );
        removeField( form, sourceFieldName );
    } else {
        for (var e = 0; e < form.elements.length; e++) {
            if (form.elements[e].name == sourceFieldName) {
            var val = form.elements[e].value;
            newField( form, 'hidden', newName, val );
            removeField( form, sourceFieldName );
            return form.elements[e];
            }
        }
    }
}


function setField (form, fieldName, value) {
  var field = getField (form, fieldName);
  if (field)
    removeField (form, fieldName);
  else
    newField (form, 'hidden', fieldName, value);
}

function addField (form, fieldName, value) {
  newField (form, 'hidden', fieldName, value);
}

function transferCheckboxes (form, sourceField, targetFieldName) {

    var cbObj = sourceField;
    if ( !cbObj ) { return; }
    var num = cbObj.length;
    if ( cbObj && !num && (cbObj.checked == true) ) {
        // only 1 checkbox on the page.
        addField( form, targetFieldName, cbObj.value );
    }
    else if ( num ) {
        for ( i=0; i < num; i++ ) {
            //cbObj[i].checked = value;
            if (cbObj[i].checked == true) {
                addField( form, targetFieldName, cbObj[i].value );
            }
        }
    }
}

function checkBoxSelected(cbObj) {
    var retVal = false;
    if ( !cbObj ) { return; }
    var num = cbObj.length;
    if ( cbObj && !num )
    {
        if (cbObj.checked == true) {
            retVal = true;
        }
    }
    else if ( num )
    {
        for ( i=0; i < num; i++ )
        {
            if (cbObj[i].checked == true) {
                retVal = true;
            }
              
        }
    }
    return retVal;
}