function loadAddBookmarkForm()
{
  ajaxUpdate( 'add_bookmark_form', '/addBookmark.dobbb', '', onFormLoadSuccess, null, 'get' );
}
function loadCopyBookmarkForm( urlId, userId )
{
  ajaxUpdate( 'add_bookmark_form', '/addBookmark.dobbb', 'urlId=' + urlId + '&userId=' + userId, onFormLoadSuccess, null, 'get' );
}
function onFormLoadSuccess()
{
  showBox( 'add_bookmark_form', 'addBut', 'true' );
}
function validateAddBookmark()
{
  if( !validateString( 'url', 'URL', 1, 1000 ) )
  {
    return false;
  }
  return validateString( 'bmname', 'Bookmark Name', 1, 2000 );
}
function toggleActionButtons( newDisabled )
{
  var button = document.getElementById( 'saveBookmarkButtonId' );
  if( button )
  {
    button.disabled = newDisabled;
  }
  var button2 = document.getElementById( 'saveAndAddAnotherBookmarkButtonId' );
  if( button2 )
  {
    button2.disabled = newDisabled;
  }
}
var gAddtype;
function addBookmark( addtype )
{
  gAddtype = addtype;
  var params = marshallParams( document.forms['addform'] );
  if( !validateAddBookmark() )
  {
    return false;
  }
  toggleActionButtons( true );
  ajaxRequest( '/addBookmark.dobbb', params, onAddSuccess, onAddFailure );
  return true;
}
function onAddFailure( request )
{
  alert( getStatusText(request) );
  toggleActionButtons( false );
}
function onAddSuccess( request )
{
  toggleActionButtons( false );
  var result;
  try
  {
    result = eval( request.responseText );
  }
  catch( e )
  {
    hideContextMenu();
    setSessionTimeoutReceipt();
    return;
  }
  reportAjaxSuccessInline( result.message );
  if( gAddtype == 'one' )
  {
    hideContextMenu();
  }
  $('addform').reset();
  runAddCallbacks();
}
//hooks to allow pages to take an action when adds happen (eg., AJAX calls to update tag cloud)
addCallbacks = [];
function addAddCallback( callback )
{
  addCallbacks[addCallbacks.length] = callback;
}
function runAddCallbacks()
{
  for(var i = 0;i<addCallbacks.length;i++)
  {
    addCallbacks[i]();
  }
}
