function showDialog(sMsg, sTitle, oIcon, bModal)
{
  Ext.Msg.show(
  {
   title:sTitle,
   msg: sMsg,
   buttons: Ext.Msg.OK,
   icon: oIcon,
   modal: bModal
  });
}


function showWarning(sMsg, sTitle)
{
  if( sTitle == null )
    sTitle = "Warning";

  showDialog(sMsg, sTitle, Ext.MessageBox.WARNING, false);
}

function showInfo(sMsg, sTitle)
{
  if( sTitle == null )
    sTitle = "Info";

  showDialog(sMsg, sTitle, Ext.MessageBox.INFO, false);

}


function showError(sMsg, sTitle)
{
  if( sTitle == null )
    sTitle = "Error";

  showDialog(sMsg, sTitle, Ext.MessageBox.ERROR, true);
}

function showMessage(sMsg, sTitle)
{
  if( sTitle == null )
    sTitle = '';

  showDialog(sMsg, sTitle, null, false);
}


function showWait(sMsg, sTitle)
{
  if( sTitle == null )
    sTitle = "Please Wait";


  return Ext.MessageBox.show({
           title: sTitle,
           msg: sMsg,
           width:300,
           closable:false,
           icon: 'dlgLoadingImg',
           modal:false,
           animate:true
  });
}

function showExtendedErrorDlg(sMsg, sExtendedMsg, sTitle)
{

  var formPanelConfig = {
    autoHeight: true,
    baseCls: 'x-plain',
    bodyStyle:'padding:5px 5px 0',
    items: [
      {
        xtype: "label",
        html: "<div class='dlgErrorImg'></div><span>" + sMsg + "</span><br><br>",
        autoHeight:true
      },
      {
        xtype:'fieldset',
        title: 'More Information',
        checkboxToggle:true,
        collapsed:true,
        autoHeight:true,
        items :[{ xtype:'label',html: sExtendedMsg}]
      }
    ]

  };
  var formPanel = new Ext.form.FormPanel(formPanelConfig);

  var win;
  var winConfig = {
    items: [formPanel],
    layout: "fit",
    plain:false,
    buttonAlign:'right',
    title: sTitle,
    width: 400,
    modal: true,
    autoHeight: true,
    defaultButton:0,
    buttons: [{text: "OK", handler:function(){win.close();}}]
  };
  win = new Ext.Window(winConfig);
  win.show();
}





function getCarouselImageTag(img, iHeight, iWidth)
{
  return "<img src='" + img + "' height='" + iHeight + "' width='" + iWidth + "' />";
}

var m_iImgCarouselIndex = 0;
function showImageCarousel2(aImages, sTitle)
{
  m_iImgCarouselIndex++;

  var el = Ext.DomHelper.append(document.body, {tag:'div', id:'divCarousel' + m_iImgCarouselIndex}, true);
  Ext.DomHelper.append(el,{tag:'ol'},false);

  var imgCarousel = new YAHOO.widget.Carousel(el.id,{isCircular: true,numVisible: 1});
  imgCarousel.render();
  var iMaxWidth = 130;
  for(var i=0; i<aImages.length; i++)
  {
    // perhaps dynamically determine the pictures size and use that instead
    var newImg = new Image();
    newImg.src = aImages[i];
    var height = newImg.height;
    var width = newImg.width;

    var sImg = getCarouselImageTag(aImages[i], height, width );

    imgCarousel.addItem(sImg);

    if( width > iMaxWidth )
      iMaxWidth = width;
  }

  // create the window
  var formPanelConfig = {
        autoHeight: true,
        baseCls: 'x-plain',
        bodyStyle:'padding:5px 5px 0',
        applyTo: el,
        items: [
          {
            xtype: "hidden",
            html: "",
            autoHeight:true
          }

        ]
      };
    var formPanel = new Ext.form.FormPanel(formPanelConfig);

    var oCarouselWin;
    var winConfig = {
      items: [formPanel],
      layout: "fit",
      plain:true,
      buttonAlign:'right',
      title: sTitle,
      width: iMaxWidth + 22,
      modal: true,
      autoHeight: true,
      defaultButton:0,
      autoDestroy: true,
      closeAction:'hide',
      buttons: [{text: "Close", handler:function(){imgCarousel.hide();oCarouselWin.hide();}}]
    };

    oCarouselWin = new Ext.Window(winConfig);

  imgCarousel.show();

  oCarouselWin.show();

}



function changePassword()
{
  var dlgChangePassword = new Ext.FormPanel(
  {
    autoHeight: true,
    bodyStyle: 'padding: 10px 10px 0 10px;',
    labelWidth2: 50,
    frame: true,
    id:'frmChangePassword',
    items: [
      {
        xtype:'textfield',
        fieldLabel:'Old Password',
        width:190,
        id:'oldPassword',
        name:'oldPassword',
        allowBlank:false,
        maxLength: 100,
        inputType:'password'
      },
      {
        xtype:'textfield',
        fieldLabel: 'New Password',
        width:190,
        id:'newPassword',
        name:'newPassword',
        allowBlank:false,
        maxLength: 100,
        inputType:'password'
      }
    ]
  });


  var win = new Ext.Window({
      layout:'fit',
      id:'winChangePassword',
      autoHeight:true,
      width: 340,
      closable: true,
      title:'Change Password',
      resizable: false,
      allowDomMove:false,
      draggable:true,
      plain: true,
      border: false,
      modal:true,
      items: [dlgChangePassword],
      buttons: [
        {text: "Change", handler:doChangeLogin}
        ]
    });

  win.show();
  Ext.getCmp('oldPassword').focus(false, 50);

  this.map = new Ext.KeyMap
    (
      "frmChangePassword",
      [
        {
          key : [10, 13],
          scope:this,
          fn : doChangeLogin
        }
      ]
  );



  function doChangeLogin()
  {
    Ext.getCmp('oldPassword').validate();
    Ext.getCmp('newPassword').validate();

    if( ! Ext.getCmp('oldPassword').isValid() )
    {
      Ext.getCmp('oldPassword').focus();
      return;
    }
    if( ! Ext.getCmp('newPassword').isValid() )
    {
      Ext.getCmp('newPassword').focus();
      return;
    }

    // do a submit here
    var callbacks = { success: pass, failure: fail,timeout: 15000};
    var postData = "meta=0&method=changepassword" +
                    "&old=" + Ext.getCmp('oldPassword').getValue() +
                    "&new=" + Ext.getCmp('newPassword').getValue();


    Ext.lib.Ajax.request('POST', m_sNavServiceURL, callbacks, postData);

    function pass(o)
    {
      obj = Ext.util.JSON.decode(o.responseText);
      if( obj.success )
      {
        showInfo("Your password has been changed.","Success");
        Ext.getCmp('winChangePassword').close();
      }
      else
      {
        displayGenericError(obj.error);
      }
    }
    function fail(o)
    {
      displayGenericError("I'm sorry, we are unable to process your request at this time.");
    }

  };

}//changePassword()



function showHelpPanel(iX,iY, sTitle, sContent, sLink)
{
  var dlgHelpPanel = new Ext.FormPanel(
  {
    frame:true,
    layout:'absolute',
    id:'frmHelpPanel',
    items:[
    {
      xtype:'label',
      x:5,
      y:60,
      text:sTitle,
      cls:'qHelpPanelText qHelpPanelTitleText'
    },
    {
      xtype: 'box',
      x:330,
      y:5,
      autoEl: {tag: 'img', src: './img/Portal logo copy.png'}
    },
    {
      xtype:'label',
      x:5,
      y:120,
      html:sContent,
      cls:'qHelpPanelText qHelpPanelDetailText'
    },
    {
      xtype:'label',
      x:5,
      y:210,
      html:"<a href='" + sLink + "' target='_blank' class='qHelpPanelText qHelpPanelLinkText'>Click here for more detailed instructions</a>"
    }
    ]
  });


  var win = new Ext.Window(
  {
    id:'winHelpPanel',
    width: 450,
    height:270,
    layout:'fit',
    plain:true,
    modal: false,
    closable:false,
    resizable:false,
    draggable:false,
    x:iX,
    y:iY,
    items: dlgHelpPanel
  });

  win.show();
}

function hideHelpPanel()
{
    var oWin = Ext.getCmp('winHelpPanel');
    if( oWin )
    {
      oWin.close();
    }

}

