  // Globals
  var gridimgpath = '../css/redmond/images';
  var serviceURL = '/RdxEngine/';
	var Frames = new Array();
	
  jQuery(document).ready(function(){
    SetupLayout();
    CreateDialogs();

    // Register Frames
		Frames[0] = LogoFrame;
		Frames[1] = OutgoingQueueFrame;
		Frames[2] = SpamQueueFrame;
		Frames[3] = CissQueueFrame;
		Frames[4] = MailDepotFrame;
		Frames[5] = MailSealerLightFrame;
		Frames[6] = UserSettingsFrame;
		Frames[7] = UserProfileFrame;
		Frames[8] = EmailAliasesFrame;

    HideAllFrames();

		// Initialize Frames
		for (x in Frames)	{
		  if (Frames[x].Name != null)
        Frames[x].InitFrame();
		}

    NavigationBar.Init();

    // Check SessionID
    Session.InitSession();

  	if (Session.IsSessionValid()) {
			Session.RequestUserProfile();
			Session.RequestDeputies();
			Session.RequestGroupPolicy();

      ShowInitialView();
  	} else {
      LogonDialog.Logon();
		}	
 
		jQuery(window).resize(HandleWindowResize);
  });

	function Logoff() {
		// Initialize Frames
		for (x in Frames)	{
		  if (Frames[x].Name != null)
        Frames[x].OnLogoff();
		}
	
    Session.DestroySession();

    HideAllFrames();
		jQuery("#MailDialog").dialog('close');
   	NavigationBar.Hide();
		
    LogonDialog.Logon();
  }
	
  function ShowInitialView() {
 		Session.RequestUserProfile();
		Session.RequestDeputies();
		Session.RequestGroupPolicy();
	
   	NavigationBar.Show();
		ShowFrame('LogoFrame');
	}

  function ShowFrame(FrameName) {
		HideAllFrames();
		
    for (x in Frames)	{
			if (Frames[x].Name == FrameName) {
        Frames[x].ShowFrame();
			}
		}
    jQuery('#' + FrameName).height(Layout.state.container.innerHeight)
	}	

  function HideAllFrames() {
    for (x in Frames)	{
		  if (Frames[x].Name != null)
        Frames[x].HideFrame();
		}
	}

	function ApplyGroupPolicy() {
	  NavigationBar.ApplyGroupPolicy();
		FilterListsFrame.ApplyGroupPolicy();
	}
	
  // ----------------------------------------------------------------------
  // GUI functions
  // ----------------------------------------------------------------------
  function CreateDialogs() {
		LogonDialog.InitDialog();
    MailViewer.InitDialog();
		RequestAliasDialog.InitDialog();
  }

