YAHOO.namespace("ibe");

function lookupProgressMessage(codeOrText, defaultText) {
  var resolvedMessage = UiText.get(codeOrText);
  if (resolvedMessage == codeOrText && resolvedMessage && resolvedMessage.indexOf('ProgressMessage.') == 0) {
    return defaultText;
  }
  return resolvedMessage;
}

function openProgressPanel(message, header) {
  var content = document.getElementById("progressDiv");
  content.innerHTML = '';
  var def_header = pp_def_header;
  var def_message = pp_def_message;
  var def_loading_im = pp_def_loading_im;
  var def_loading_swf = pp_def_loading_swf;
  var def_loading_swf_h = pp_def_loading_swf_h;
  var def_loading_swf_w = pp_def_loading_swf_w;
  var def_hasCloseIcon = pp_def_hasCloseIcon;

  message = message ? lookupProgressMessage(message, def_message) : def_message;
  header = header ? lookupProgressMessage(header, def_header) : def_header;

  // Initialize the temporary Panel to display while waiting for external content to load
  YAHOO.ibe.progressPanel = new YAHOO.widget.Panel("wait", {
    width: "540px",
    fixedcenter: true,
    close: def_hasCloseIcon,
    draggable: true,
    zindex:4,
    modal: true,
    visible: false
  });
  YAHOO.ibe.progressPanel.setHeader(header);

  var d_content = '<img alt="loading..." src="' + def_loading_im + '"/>';

  // Does NOT work!
  if (def_loading_swf && def_loading_swf_w && def_loading_swf_h) {
    d_content = '<iframe frameborder="0" width="' + def_loading_swf_w + '" height="' + def_loading_swf_h + '" src="' + def_loading_swf + '"></iframe>';
    //'<div id="apansson"></div>' +
    //            '<script language="javascript">flash_component(def_loading_swf, def_loading_swf_w, def_loading_swf_h, def_loading_im,undefined,"apansson");</script>';
  }

  YAHOO.ibe.progressPanel.setBody('<div class="progressInfo">' +
                                  '<div class="progressImage">' + d_content + '</div>' +
                                  '<div class="progressText">' + message + '</div>' +
                                  '</div>');
  YAHOO.ibe.progressPanel.render(document.body);
  // Show the Panel
  YAHOO.ibe.progressPanel.show();

}


/**
 * Shows the progress panel. Is used by the doSearch(..) function.
 *
 * Both arguments are optional and has defaults.
 */
function showProgressPanel(message, header) {
  // showHide('mainContentArea', false);
  openProgressPanel(message, header);
  scroll(0, 0);
}

/**
 * Hides the progress panel. It defaults to hidden.
 */
function hideProgressPanel() {
  if (YAHOO.ibe && YAHOO.ibe.progressPanel) {
    YAHOO.ibe.progressPanel.hide();
  }
  // showHide('mainContentArea', true);
}

/**
 * Use as an onClick-parameter to a submit button to use the progress panel when form is submitted.
 * A correct validation function (JavaScript) must be supplied.
 * @param The validation function for the form, e.g. "validateForm_air_search_do()".
 * @returns The result of the validation. 0 is failed validation, 1 is OK.
 */
function formProgress(validation_result, message, header) {
  if (validation_result) showProgressPanel(message, header);
  return validation_result;
}

/**
 * Displays the progress panel and then forwards to new link.
 * @param l Link to forward browser to.
 */
function linkProgress(l, message, header) {
  showProgressPanel(message, header);
  window.location = l;
}

/**
 * Does NOT Display the progress panel, then forwards to new link.
 * @param l Link to forward browser to.
 */
function linkPlain(l) {
  window.location = l;
}

function link(url, newWindow) {
  if (newWindow) {
    window.open(url, '_blank').focus();
  } else {
    linkPlain(url);
  }
}
