GFI
English Deutsch Français Italiano Nederlands Español
Forums  Register  Login  My Profile  Inbox  Address Book  My Subscription  My Forums 

Member List  Search  FAQ  Ticket List  Log Out

 

Tip: How to integrate MailArchiver with OWA 2003

 
Logged in as: Guest
Users viewing this topic: none
  Printable Version
All Forums >> [Messaging] >> GFI MailArchiver for Exchange >> Tip: How to integrate MailArchiver with OWA 2003 Page: [1] 2   next >   >>
Login
Message << Older Topic   Newer Topic >>
Tip: How to integrate MailArchiver with OWA 2003 - 16.Mar.2006 10:13:03 AM   
frederic

 

Posts: 23
Joined: 14.Mar.2006
Status: offline
I have finally managed to get MailArchiver integrated into Outlook Web Access 2003! I will post instructions on how to do it later. In the meantime, here are some screenshots (notice the new "Archive" icons in the left OWA navigation bar):



Post #: 1
RE: Tip: How to integrate MailArchiver with OWA 2003 - 17.Mar.2006 4:14:52 AM   
thesheriff

 

Posts: 55
Joined: 20.Oct.2005
From: Leicester
Status: offline
Thats looking pretty cool.

How would I integrate the Mail Archiver web page in full outlook 2003?

Cheers

Dom

(in reply to frederic)
Post #: 2
RE: Tip: How to integrate MailArchiver with OWA 2003 - 17.Mar.2006 2:10:24 PM   
RGagne

 

Posts: 59
Joined: 21.Jun.2005
From: Memphis, TN
Status: offline
That is pretty nifty.  Integration into the full blown client would be a nice feature as well.

(in reply to thesheriff)
Post #: 3
RE: Tip: How to integrate MailArchiver with OWA 2003 - 17.Mar.2006 2:23:06 PM   
RGagne

 

Posts: 59
Joined: 21.Jun.2005
From: Memphis, TN
Status: offline
Ha!  It is kinda possible to 'intergrate' the Mail Archiver into the full blown client.  Simply create a new folder in the navigation pane, right click and select properties, go to the 'Homepage' tab, set the homepage to the location of the Mail Archiver, and then check the 'Show home page by default for this folder' option.  Voila!  Instant access to the archive from Outlook!

(in reply to frederic)
Post #: 4
RE: Tip: How to integrate MailArchiver with OWA 2003 - 23.Mar.2006 10:36:42 AM   
BenN

 

Posts: 15
Joined: 20.Jan.2006
Status: offline
can't wait for you to post how you did it. I certainly don't want to try to do this from scratch if someone else has done it.

(in reply to RGagne)
Post #: 5
RE: Tip: How to integrate MailArchiver with OWA 2003 - 24.Mar.2006 4:28:31 AM   
frederic

 

Posts: 23
Joined: 14.Mar.2006
Status: offline
INSTALL:
1.  Logon to your Exchange server computer
2.  Locate the Exchange server 2003 installation directory (usually "C:\Program Files\Exchsrvr")
3.  Locate the folder "exchweb\<version>\controls"
4.  Make a backup copy of the existing file "vw_Navbar.js"
5.  Make changes to "vw_Navbar.js" as listed below
6.  Copy your custom icons to "exchweb\img"
7.  Do an "iisreset" from the command line (note: this will kick out all OWA users)
8.  Clear your local browser cache

UNINSTALL:
1.  Logon to your Exchange server computer
2.  Locate the Exchange server 2003 installation directory (usually "C:\Program Files\Exchsrvr"
3.  Locate the folder "exchweb\<version>\controls"
4.  Replace the existing file with the backup copy of "vw_Navbar.js" you made previously
5.  Do an "iisreset" from the command line (note: this will kick out all OWA users)
6.  Clear your local browser cache

/*
'------------------------------------------------------------------------------
'
' NAME:         vw_Navbar.js
' VERSION:      1.01 - 16/03/2006 Compatible with all releases of Exchange 2003
'               1.00 - 03/23/2004 Initial release for OWA RTM _only_
'
' DESCRIPTION:  This modification adds a new tab to the OWA 2003 rich client UI
'               navigation bar.
'
' NOTE:         This Exchange 2003 OWA tweak is unsupported by Microsoft. If
'               you are running into problems you might need to revert back to
'               to the backup done before applying this tweak.
'
' Copyright (c) 2006 Frederic Guigand
'               2004 Siegfried Weber [link=http://playground.doesntexist.org/]http://playground.doesntexist.org/[/link]
'
'------------------------------------------------------------------------------
*/
/*-----------------------------------------------------------------------------
' ##########
' # STEP 1 #
' ##########
' At the beginning of vw_Navbar.js, locate the g_rgBigLinks variable
' declaration, and add "idCustom" in the desired postion, as below:
*/
// #####################################################################################
//var g_rgBigLinks = new Array("idInbox","idCalendar","idContacts","idTasks","idPubFold","idRules","idOptions","idLogOff");
 var g_rgBigLinks = new Array("idInbox","idCalendar","idContacts","idTasks","idPubFold","idRules","idOptions","idCustom","idLogOff");
// #####################################################################################
/*-----------------------------------------------------------------------------
' ##########
' # STEP 2 #
' ##########
' locate the window.onload() function, and just before the closing }
' insert a call to CUSTOMupdateShortcuts, as below:
*/
// #####################################################################################
CUSTOMupdateShortcuts();
// #####################################################################################
/*-----------------------------------------------------------------------------
' ##########
' # STEP 3 #
' ##########
' Locate the function showBigLinks (almost at the end) and modify the if statement
*/
// #####################################################################################
//      if (oBL)
//              oBL.parentElement.style.display = fShow ? "" : "none";
 if (oBL != null && "undefined" != typeof(oBL))
 {
  if (oBL.parentElement != null && "undefined" != typeof(oBL.parentElement))
   oBL.parentElement.style.display = fShow ? "" : "none";
 }
// #####################################################################################
/*-----------------------------------------------------------------------------
' ##########
' # STEP 4 #
' ##########
' Append the CUSTOM... functions below, at the end of vw_Navbar.js
*/
// #####################################################################################
function CUSTOMupdateShortcuts()
{
// Point this url to your custom URL
var sNewQuery = "/MailArchiver";
CUSTOMinsertBefore("idOptions", "aQLOptions", "idCustom", "Archive", "/exchweb/img/Archive-lg.gif", "/exchweb/img/icon-archive.gif", sNewQuery);
}
/* #####################################################################################
  Function:   CUSTOMinsertBefore
  Purpose:    Add a new tab to the OWA 2003 navigation bar quick links section
  Parameters:
              beforeNBID == ID of element before insert should happen
              beforeAID  == <a> element before insert should happen
     szID       == ID (must be unique)
     szText     == Text to display (max 11 chars)
     szImage    == URL to large image (24x24)
     szImageQL  == URL to small image (16x16)
     szRef      == URL to navigate to
  ##################################################################################### */
function CUSTOMinsertBefore(beforeNBID, beforeAID, szID, szText, szImage, szImageQL, szRef)
{
var navBeforeTD = g_winDocAll.item(beforeNBID);
// If the navigation pane is not displayed just leave
if(null == navBeforeTD)
 return;
// Find the containing row and table
var navBeforeTR = navBeforeTD.parentNode;
var navTable = navBeforeTR.parentNode;

// Create the new navigation pane button bar row. This is the big row containing a 24 x 24 image and the text of the navigation pane item
var NewTR = document.createElement("TR");
NewTR.className = "trQuickLinks";
NewTR.style.display = navBeforeTR.style.display;
var NewTD = document.createElement("TD");
NewTD.id = szID;
NewTD.className = "nbLabel";
NewTD.valign = "top";
NewTD.noWrap = true;
var NewA = document.createElement("A");
NewA.className = "nbHref nbHrefEx";
NewA.href = szRef;
   // Use "_blank" if you want the link to open a new window, "viewer" otherwise
   NewA.target = "viewer";
// NewA.target = "_blank";
   
var NewImg = document.createElement("IMG");
NewImg.className = "nbImage";
NewImg.align = "absmiddle";
NewImg.style.width = "24px";
NewImg.style.height = "24px";
NewImg.src = szImage;
var NewText = document.createTextNode(szText);
// Tie the elements together
NewA.appendChild(NewImg);
NewA.appendChild(NewText);
NewTD.appendChild(NewA);
NewTR.appendChild(NewTD);
// And add the new row
navTable.insertBefore(NewTR, navBeforeTR);
// Find the insertion point in the quick link navigation list
var qlBeforeA = g_winDocAll.item(beforeAID);
var qlBeforeTD = qlBeforeA.parentNode;
var qlBeforeTR = qlBeforeTD.parentNode;
// Add a quick link cell. This is the one line at the bottom of the navigation pane only visible if the navigation pane button bar is not expanded
NewTD = document.createElement("TD");
NewA = document.createElement("A");
NewA.className = "aQL";
NewA.href = szRef;
   // Use "_blank" if you want the link to open a new window, "viewer" otherwise
   NewA.target = "viewer";
// NewA.target = "_blank";
   
NewImg = document.createElement("IMG");
NewImg.className = "imgQL";
NewImg.align = "absmiddle";
NewImg.style.width = "16px";
NewImg.style.height = "16px";
NewImg.src = szImageQL;
NewImg.alt = "Go to " + szText;
// Tie the elements together 
NewTD.appendChild(NewA);
NewA.appendChild(NewImg);
// And insert the quick link cell
qlBeforeTR.insertBefore(NewTD, qlBeforeTD);
if (null != g_rgBigLinks)
{
 try
 {
  g_rgBigLinks.push(szID);
 }
 catch (e) {}
}
}
// #####################################################################################

(in reply to BenN)
Post #: 6
RE: Tip: How to integrate MailArchiver with OWA 2003 - 24.Mar.2006 4:33:11 AM   
frederic

 

Posts: 23
Joined: 14.Mar.2006
Status: offline
The icons I use:

Archive-lg.gif (24x24):


icon-archive.gif (16x16):


And the original 32x32 icon I used to make the others:


Maybe GFI can come up with their own icons...

(in reply to frederic)
Post #: 7
RE: Tip: How to integrate MailArchiver with OWA 2003 - 24.Mar.2006 4:37:23 AM   
frederic

 

Posts: 23
Joined: 14.Mar.2006
Status: offline
The Cascading Style Sheet for MailArchiver has not changed with the new version (20060315). I have made some changes to it, to make it better match the OWA 2003 Default (Blue) colours. Replace Styles.css in GFI\MailArchiver\ASPNET\Styles\ with the code below. As always, don't forget to make a backup first.

/*
   GFI MailArchiver stylesheet
   modified to match OWA 2003 Default (blue) color theme
   by Frederic Guigand, 16/03/2006
   (C:\Program Files\GFI\MailArchiver\ASPNET\Styles\Styles.css)
*/
a { text-decoration:none; }
a:link {
color:#000066;
text-decoration:none;
}
a:visited {
color:#000066;
text-decoration:none;
}
a:active {
color:#CC0000;
text-decoration:none;
}
a:hover {
color:#CC0000;
text-decoration:none;
}

BODY
{
padding-right: 0px;
padding-left: 0px;
padding-bottom: 0px;
margin: 0px;
padding-top: 0px;
   font: 1em Arial;
   /* ADDED */
   background-color:white;
}
/* Tables (eg: list of emails) */
.bodyTable
{
padding-right: 14px;
padding-left: 14px;
padding-bottom: 14px;
width: 100%;
padding-top: 14px;
background-color: gainsboro;
}

.bodyCell {
   padding-top: 15px;
   padding-left: 6px;
   padding-right: 6px;
   vertical-align: top;
}
.contentTable {
width: 100%;
border-top: 1px solid #ffffff;
border-left: 1px solid #000000;
border-right: 1px solid #000000;
border-bottom: 1px solid #000000;
background-color: white;
}
.contentTableShort {
width: 100%;
background-color: white;
}
.adminBorder {
border: 1px solid #000000;
}
.tablesTD {  
  font-family: Arial, Helvetica, sans-serif; 
  font-size: 11px; 
  font-style: normal; 
  line-height: 100%; 
  text-align: left; 
  padding-right: 5px;
  background-color: #ffffff;
}
.tablesTABLE {
  font-family: Arial, Helvetica, sans-serif; 
  border: solid 2px #f2f2f2;
  padding: 1px;
}

.contentCell {
   vertical-align:top;
   padding-top: 15px;
   padding-left: 8px;
   padding-right: 8px;
}
.normal {
   font-family: Arial, Helvetica, sans-serif;
   font-size: 0.7em;
   font-weight: normal;
   line-height: 1.2em
}
h1 {
font-weight: bold;
font-size: 10pt;
}
.SmallMargin {
margin-top: 0px;
margin-bottom: 10px;
}
/* Top bar Log off button */
.tabInactiveRight
{
border-right: #ffffff 1px solid;
padding-right: 5px;
padding-left: 5px;
font-weight: bold;
font-size: 11px;
color: #ffffff;
font-family: Arial, Verdana;
height: 20px;
text-align: right;
   /*
   background-color:#000000;
   */
   background-color:#2557AD; 
}
.tabInactiveRight a:link, .tabInactiveRight a:visited
{
/* color: #FFFFFF; */
color: #A2C2EE;
text-decoration: none;
}
.tabInactiveRight a:active, .tabInactiveRight a:hover
{
/* color: #F2F2F2; */
color: #FFFFFF;
text-decoration: none;
}
/* Top bar active tab */
.tabInactive {
   height: 20px;
   padding-left: 5px; 
   padding-right: 5px;
   color: #FFFFFF; 
   font-family: Arial, Verdana; 
   font-size: 11px; 
   font-weight:bold; 
   border-right: solid 1px #FFFFFF;
   /*
   background-color:#000000;
   */
   background-color:#2557AD; 
}
.tabInactive a:link, .tabInactive a:visited
{
color: #FFFFFF;
text-decoration: none;
}
.tabInactive a:active, .tabInactive a:hover
{
/* color: #F2F2F2; */
color: #C3DAF9;
text-decoration: none;
}
/* Top bar active tab */
.tabActive {
   height: 20px;
   padding-left: 5px;
   padding-right: 5px;
   color: #FFFFFF; 
   font-family: Arial, Verdana;
   font-size: 11px;
   font-weight:bold;
   border-right: solid 1px #FFFFFF;
   /* background-color:#CC0000; */
/* background-color:#A2C2EE; */
background-color:#C3DAF9;
}
.tabActive a:link, .tabActive a:visited
{
/* color: #FFFFFF; */
color: #000000;
text-decoration: none;
}
.tabActive a:active, .tabActive a:hover
{
/* color: #FFFFFF; */
color: #2557AD;
text-decoration: none;
}
/* Top toolbar background */
.tabToolbar {
   padding-left: 15px; 
   /* background-color:#000000; */
   background-color:#2557AD; 
}
.adminTabActive {
font-family: Arial, Helvetica, sans-serif;
font-size: 0.7em;
font-weight: bold;
color: #696969;
border-left: 1px solid #000000;
background-color: #ffffff;
text-align: center;
padding-top: 3px;
padding-right: 10px;
padding-bottom: 3px;
padding-left: 10px;
}
.adminTabInactive {
   font-size: 0.7em;
border-left: 1px solid #000000;
border-bottom: 1px solid #000000;
background-color: #F2F2F2;
text-align: center;
padding-top: 3px;
padding-right: 10px;
padding-bottom: 3px;
padding-left: 10px;
}
.adminTabActiveLeft {
font-family: Arial, Helvetica, sans-serif;
font-size: 0.7em;
font-weight: bold;
color: #696969;
background-color: #ffffff;
text-align: center;
padding-top: 3px;
padding-right: 10px;
padding-bottom: 3px;
padding-left: 10px;
}
.adminTabInactiveLeft {
    font-size: 0.7em;
border-bottom: 1px solid #000000;
background-color: #F2F2F2;
text-align: center;
padding-top: 3px;
padding-right: 10px;
padding-bottom: 3px;
padding-left: 10px;
}
.adminTabInactive a:link, .adminTabInactiveLeft a:link {
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
color: #000000;
text-decoration: none;
}
.adminTabInactive a:visited, .adminTabInactiveLeft a:visited {
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
color: #000000;
text-decoration: none;
}
.adminTabInactive a:active, .adminTabInactiveLeft a:active {
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
color: #000000;
text-decoration: none;
}
.adminTabInactive a:hover, .adminTabInactiveLeft a:hover {
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
color: #696969;
text-decoration: none;
}
.adminTabActive a:link, .adminTabActive a:visited, .adminTabActiveLeft a:link, .adminTabActiveLeft a:visited  {
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
color: #000000;
text-decoration: none;
}
.standardText {
font-family: Arial, Helvetica, sans-serif;
font-size: 0.9em;
color: #000000;
}
INPUT, SELECT, H3, .smallText {
font-family:Arial, Helvetica, sans-serif;
font-size:11px;
font-weight:normal;
line-height: 150%;
margin:0px;
}
.bodyText {
background-color:#FFFFFF;
color:#000000;
margin:0px;
font-family:Arial, Helvetica, Sans-Serif;
font-size:10pt;
text-align: justify;
line-height: 130%;
padding-left:15px;
padding-right:15px;
}
.gridFirstItem {
font-size: 11px;
font-family: Arial, Helvetica, sans-serif;
background-color: white;
padding-right: 5px;
border: solid 2px #f2f2f2;
}
.gridItem {
font-size: 11px;
font-family: Arial, Helvetica, sans-serif;
background-color: white;
padding-right: 5px;
border: solid 2px #f2f2f2;
}
.gridLastItem {
font-size: 11px;
font-family: Arial, Helvetica, sans-serif;
background-color: white;
padding-right: 5px;
border: solid 2px #f2f2f2;
}
.gridHeader {
font-weight: bold;
font-size: 11px;
font-family: Arial, Helvetica, sans-serif;
background-color: #f2f2f2;
padding-right: 5px;
border: solid 2px #f2f2f2;
}
.gridHeader a:active {
color: #000000;
text-decoration: none;
}
.gridHeader a:link {
color: #000000;
text-decoration: none;
}
.gridHeader a:visited {
color: #000000;
text-decoration: none;
}
.gridHeader a:hover {
color: #000000;
text-decoration: none;
}
td {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
color: #000000;
}
pre {
   font-size: 1em;
}
.disabledField
{
}
.toolbarGrad
{
font-weight: bold;
color: black;
font-family: Verdana;
background-color: #99ccff;
}
.DottedBlack {
height:1px;
background-image:url(../images/horline.gif);
width:100%;
margin:0px;
}
.toolbarHeader {
   background-color:#000000; 
   height: 20px; padding-left: 5px; 
   padding-right: 5px; 
   color: #FFFFFF; 
   font-family: Arial, Verdana;
   font-size: 11px;
   font-weight:bold;
}
.toolbarItem
{
color: black;
font-family: Arial, Verdana;
background-color: #f2f2f2;
padding:3px;
width: 100%;
}
.toolbarEdit {
background-color: #ffffff;
}
.treeview {
background-color:#f2f2f2;
}
.toolbarBlue
{
border-right: #ffffff thin groove;
padding-right: 2px;
border-top: #ffffff thin groove;
padding-left: 2px;
padding-bottom: 2px;
margin: 0px;
border-left: #ffffff thin groove;
padding-top: 2px;
border-bottom: #ffffff thin groove;
background-color: #99ccff;
}
.internetHeaders
{
font-family: Monospace;
}
/* Language selection drop down list */
.toolbarDropdown
{
color: white;
   /* background-color: black; */
   background-color: #2557AD;
}


< Message edited by frederic -- 24.Mar.2006 6:10:28 AM >

(in reply to frederic)
Post #: 8
RE: Tip: How to integrate MailArchiver with OWA 2003 - 26.Mar.2006 3:46:30 PM   
BenN

 

Posts: 15
Joined: 20.Jan.2006
Status: offline
this is awesome Frederic. i can't wait to try this out!

(in reply to frederic)
Post #: 9
RE: Tip: How to integrate MailArchiver with OWA 2003 - 28.Mar.2006 5:28:46 AM   
rishishah

 

Posts: 61
Joined: 19.Jun.2005
From: UK
Status: offline
Does this change have to be made on the front-end server, back-end server or both? Thanks.

(in reply to BenN)
Post #: 10
RE: Tip: How to integrate MailArchiver with OWA 2003 - 29.Mar.2006 11:00:02 AM   
RGagne

 

Posts: 59
Joined: 21.Jun.2005
From: Memphis, TN
Status: offline
This doesn't seem to work correctly.  I have tried to implement this in our test network but I keep receiving script errors when OWA loads.  OWA still loads just fine but the new navigation items for the Archive are not present.  The error message says that it expected an object at line 64 which is right after where I inserted the CUSTOMupdateShortcuts line.  Not sure what's missing yet... I have been trying different ways of entering the MailArchiver URL in the CUSTOMupdateShortcuts function thinking that the problem is there.  Has anyone else managed to get this to work?

(in reply to rishishah)
Post #: 11
RE: Tip: How to integrate MailArchiver with OWA 2003 - 29.Mar.2006 11:44:08 AM   
RGagne

 

Posts: 59
Joined: 21.Jun.2005
From: Memphis, TN
Status: offline
Aha!, found the problem... I hate debuggin code.  Anyways, works now.

(in reply to RGagne)
Post #: 12
RE: Tip: How to integrate MailArchiver with OWA 2003 - 30.Mar.2006 3:31:05 PM   
shawner47

 

Posts: 4
Joined: 30.Mar.2006
Status: offline
Has anyone else been able to get this to work?  Would it be too much to ask that someone who has gotten it to work post their vw_navbar.js file for those of us with no programming experience to have a peek :) 

TIA!

Shawn

< Message edited by shawner47 -- 30.Mar.2006 3:32:18 PM >

(in reply to RGagne)
Post #: 13
RE: Tip: How to integrate MailArchiver with OWA 2003 - 3.Apr.2006 3:41:00 AM   
frederic

 

Posts: 23
Joined: 14.Mar.2006
Status: offline
quote:

Has anyone else been able to get this to work?  Would it be too much to ask that someone who has gotten it to work post their vw_navbar.js file for those of us with no programming experience to have a peek :)


You need to follow the instructions carefully when editing the file. Here's mine anyway. Note that I am running Exchange 2003 SP3, and the file used by OWA is in C:\Program Files\Exchsrvr\exchweb\6.5.7638.1\controls\
/*
'------------------------------------------------------------------------------
'
' NAME:         vw_Navbar.js
' VERSION:      1.01 - 16/03/2006 Compatible with all releases of Exchaage 2003
'               1.00 - 03/23/2004 Initial release for OWA RTM _only_
'
' DESCRIPTION:  This modification adds a new tab to the OWA 2003 rich client UI
'               navigation bar.
'
' NOTE:         This Exchange 2003 OWA tweak is unsupported by Microsoft. If
'               you are running into problems you might need to revert back to
'               to the backup done before applying this tweak.
'
' Copyright (c) 2006 Frederic Guigand
'               2004 Siegfried Weber [link=http://playground.doesntexist.org/]http://playground.doesntexist.org/[/link]
'
'------------------------------------------------------------------------------
*/
//Copyright (c) 2000-2003 Microsoft Corporation. All rights reserved.
var g_winDocAll = window.document.all;var g_HTTPDelItems = null;var g_iAddCount=0;var g_iTabTopOffset = 38;var g_fHasGottenFolders = false;var g_rgAuthDomains = new Array();var g_nFlybarHeight = 25;var g_nFontHeight = 13;var g_idFlyPopup = -1;var CTL_E_PERMISSIONDENIED = (1^0x800a0046)-1;var FACILITY_WIN32_ERROR_ACCESS_DENIED = (1^0x80070005)+1;var g_wndReminder = null;var g_ctlReminder = null;var g_ctlTaskRem = null;var g_nEnableNewMail = 0;var g_nNewMailNewVal = 0;var m_fTasks = false;var m_fAppts = false;var g_fUpdTask = false;var g_fUpdAppt = false;var g_fCCM = false;var g_szDnIco = "expand.gif";var g_szUpIco = "collapse.gif";var g_iExp = 1;var g_iCol = -1;var g_fCMImgs = true;var g_rgFlyItms = new Array();var g_iFlyTr = 0;var REM_TYPE_APPT = "appt";var REM_TYPE_TASK = "task";var CONST_IPM_APPT = "IPM.Appointment";var CONST_IPM_TASK = "IPM.Task";var m_rgszXML = new Array(2);
// #####################################################################################
//var g_rgBigLinks = new Array("idInbox","idCalendar","idContacts","idTasks","idPubFold","idRules","idOptions","idLogOff");
 var g_rgBigLinks = new Array("idInbox","idCalendar","idContacts","idTasks","idPubFold","idRules","idOptions","idCustom","idLogOff");
// #####################################################################################
var g_fDXInstalled = true;var g_szErrReq = "";var g_fUseTime2 = true;var MAX_REM_DELAY = 60000;var g_idTaskRmTmr = -1;var g_idCalRmTmr = -1;var CONST_B_SOUND = 0x1;var CONST_B_CALENDAR = 0x4;var CONST_B_TASKS = 0x8;g_szrgErrors = new Array();g_szrgErrors[900] = L_ErrComm;g_szrgErrors[401] = L_ErrLogon;g_szrgErrors[404] = L_ErrItmNotFound;g_szrgErrors[405] = L_ErrDupFoldName;g_szrgErrors[403] = L_ErrAccDenied;g_szrgErrors[412] = L_ErrPrecond;g_szrgErrors[500] = L_ErrIntSvr;g_szrgErrors[501] = L_ErrIntSvr;g_szrgErrors[502] = L_ErrGateway;g_szrgErrors[503] = L_ErrSvcNotAvail;g_szrgErrors[1001] = L_ErrBadChar;var g_ctlNotify = null;var g_oSound = null;var g_oPopup = null;var m_rgRequestQueue = null;
function objTree_OnFolderOperationComplete()
{if (event != null && event.contentType == 1)
{try
{if (event.rgParams != false) 
parent.viewer.RefreshMessageList(null, event.rgParams);}
catch(e) {}
}
if (event != null && event.command == "EXPAND")
syncViewWithTree();}
function objTree_onError()
{f_HandleError(event.statusCode);}
function objTree_onReady()
{if (g_iAddCount == 0)
{g_iAddCount++;if (g_fIsPublic)
{objTree.addHierarchy(window.location, true, g_fPublicRoot ? L_PubFoldDN : null);}
else
{objTree.addHierarchy(g_sBase, true, g_sUserDisp, false);if ("1" == g_bShowSF)
{g_iAddCount++;objTree.addHierarchy(g_sBase+g_sFinderUrl, true, L_SavedSearch, true);}
showTree();}
}
syncViewWithTree();treeProgress.style.display = "none";}
function objTree_onSelectFolder()
{event.cancelBubble = true;event.returnValue = false;if (event)
Navigate(event.url + "?Cmd=contents"+((event.isDeletedItems)?"&allowShowDeleted=1":""));}
function objTree_OnLoginTimeout()
{showLogonPage(g_szVirtualRoot, g_sBase, true);}
function syncViewWithTree()
{try
{var sUrl = parent.viewer.document.location.protocol + "//" + parent.viewer.document.location.host + parent.viewer.document.location.pathname;objTree.selectNode(sUrl, false, false);}
catch(e){}
}
function window.onload()
{if (!g_sBase) return(false);try
{var iHeight = Math.round(screen.availHeight * 0.75);if (iHeight < 550)
iHeight = 550;parent.g_iNewWindowHeight = iHeight;} catch (e) {}
if (!g_fIsPublic)
{g_ctlReminder = g_winDocAll['objReminder'];g_ctlTaskRem = g_winDocAll['objTaskRem'];g_ctlNotify = g_winDocAll['objNotify'];if ((null != g_ctlReminder) && (CONST_B_CALENDAR == (g_bmpEnableReminders & CONST_B_CALENDAR))
&& (g_idCalRmTmr == -1))
g_idCalRmTmr = window.setTimeout(ldRem, MAX_REM_DELAY);if ((null != g_ctlTaskRem) && (CONST_B_TASKS == (g_bmpEnableReminders & CONST_B_TASKS))
&& (g_idTaskRmTmr == -1))
g_idTaskRmTmr = window.setTimeout(ldTaskRem, MAX_REM_DELAY);g_nNewMailNewVal = parseInt(g_szEnableNewMail, 10);window.setTimeout(ldNot, 60000);new flyItm(g_iFlyTr,treeCont,objTree,100);if ("1" == g_bShowFolders)
{g_iAddCount++;if ("1" == g_bShowSF)
g_iAddCount++;objTree.addBehavior("/exchweb/6.5.7638.1/controls/ctrl_tree.htc");}
else
{treeCont.style.posHeight = 0;}
}
else
{objTree.addBehavior("/exchweb/6.5.7638.1/controls/ctrl_tree_pf.htc");}
g_nFontHeight = g_winDocAll.idFontSize.offsetHeight;try
{window.createPopup();}
catch(e)
{g_fCMImgs = false;}
saveSize.size =window.document.body.clientWidth;
// #####################################################################################
CUSTOMupdateShortcuts();
// #####################################################################################
}
function window.onresize()
{if (!g_fIsPublic && saveSize.size != window.document.body.clientWidth)
{if (null != saveSize.iID)
clearTimeout(saveSize.iID);saveSize.size = window.document.body.clientWidth;saveSize.iID = window.setTimeout(saveSize, 2000);}
}
function saveSize()
{setProp(window.document.body.clientWidth, "webclientnavbarwidth");saveSize.iID = null;}
saveSize.size = 0;saveSize.iID = null;
function onViewLoad()
{if (g_idCalRmTmr >= 0)
{window.clearTimeout(g_idCalRmTmr);ldRem();g_idCalRmTmr = -1;}
if (g_idTaskRmTmr >= 0)
{window.clearTimeout(g_idTaskRmTmr);ldTaskRem();g_idTaskRmTmr = -1;}
syncViewWithTree();}
function nbLinkNav(sUrl, sCmd)
{if (null == sUrl)
return;var sNavUrl = sUrl;if (null != sCmd)
sNavUrl += "?cmd=" + sCmd;Navigate(sNavUrl);try
{if (!objTree.selectNode(sUrl, false))
objTree.clearSelection();}
catch(e)
{}
}
function Navigate(url, trgt)
{cmHide();if (event)
{event.cancelBubble = true;event.returnValue = false;}
if (trgt && null != trgt)
{window.open(url,trgt);}
else if (parent != null && url != null)
{if (parent.viewer != null)
{try
{if (url == parent.viewer.location)
{parent.viewer.externalRefresh();}
else
{parent.viewer.location = url;}
}
catch(e)
{parent.viewer.location = url;}
}
}
}
function DoRenameCommand()
{var objFolder = objTree.selectedNode;var szName = objFolder.displayname;var szURL = objFolder.url;var szNewName = prompt(L_RenCurFolder, szName);if (szNewName != null)
{if (szNewName.length > 255)
szNewName = szNewName.slice(0, 255);objTree.renameFolder(szURL, szNewName);}
}
function DoMoveCopyCommand()
{var szDialog = (g_fIsPublic ? "./":g_sBase) + "?Cmd=dialog&template=dlg_movecopy&ver=6.5.7638.1" + "&theme="+g_thid;var szNewFolderDialog = (g_fIsPublic ? "./":g_sBase)+ "?Cmd=dialog&template=dlg_newfolder&ver=6.5.7638.1" + "&theme="+g_thid;var rgParams = new Array();rgParams["g_OpenerTreeCtrl"] = objTree;rgParams["g_CurrentFolderNode"] = objTree.selectedNode;rgParams["g_Location"] = g_sBase;rgParams["g_VirtualRoot"] = g_szVirtualRoot;rgParams["g_NewFolderDialogPath"] = szNewFolderDialog;rgParams["g_fPublic"] = g_fIsPublic;var nFontSize = g_nFontHeight - 2;rgParams["fontSize"] = nFontSize;var nWidth = 50 + 20 * nFontSize;var nHeight = 220 + 12 * nFontSize;var hWin = showDlg(MODAL, szDialog, rgParams, nWidth, nHeight)
}
function DoNewFolderCommand()
{if (!f_Authenticate(objTree.selectedNode.contentHref))
return(false);var szNewFolderDialog = (g_fIsPublic ? "./":g_sBase) + "?Cmd=dialog&template=dlg_newfolder&ver=6.5.7638.1" + "&theme="+g_thid;var rgParams = new Array();rgParams["g_OpenerTreeCtrl"] = objTree;rgParams["g_CurrentFolderNode"] = objTree.selectedNode;rgParams["g_Location"] = g_sBase;rgParams["g_VirtualRoot"] = g_szVirtualRoot;rgParams["g_fPublic"] = g_fIsPublic;var nFontSize = g_nFontHeight - 2;var nWidth = 50 + 20 * nFontSize;var nHeight = 220 + 14 * nFontSize;var hWin = showDlg(MODAL, szNewFolderDialog, rgParams, nWidth, nHeight);}
function f_Authenticate(szURL)
{var szServerName = f_getServerName(szURL);var bretval = true;var szDocumentDomain = window.document.domain;if (szDocumentDomain.toLowerCase() != szServerName.toLowerCase())
{if (null == g_rgAuthDomains[szServerName])
{try
{var objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");objXMLHTTP.open( "OPTIONS", szURL,false);objXMLHTTP.setRequestHeader("Accept-Language", g_szAcceptLang);objXMLHTTP.send();if (200 != objXMLHTTP.status)
{f_HandleError(objXMLHTTP.status);bretval = false;}
else
{g_rgAuthDomains[szServerName] = "";bretval = true;}
}
catch(e)
{f_HandleError(403);bretval = false;}
}
else
{bretval = true;}
}
return(bretval);}
function f_getServerName(szURL)
{f_getServerName.re.lastIndex=0;var rgVals = f_getServerName.re.exec(szURL);return(rgVals[1]);}
f_getServerName.re = new RegExp("^https?://([^/]+)","i")
function f_HandleError(num)
{if (440 == num)
showLogonPage(g_szVirtualRoot, g_sBase, true);else if (g_szrgErrors[num])
alert(g_szrgErrors[num]);else if(num == CTL_E_PERMISSIONDENIED || num == FACILITY_WIN32_ERROR_ACCESS_DENIED)
alert(L_XDomAccDenied)
else
alert(L_Unk + "\r\n" + num);window.document.body.style.cursor = "auto";return;}
function window.document.oncontextmenu()
{var oRetVal = event.returnValue;if (null != oRetVal)
{if ("object" == typeof(oRetVal))
{cmShow.oFolder = oRetVal;cmShow.x = event.clientX;cmShow.y = event.clientY + 12;if (!g_fCCM)
{idTreeMenu.onreadystatechange = cmShow;idTreeMenu.addBehavior("/exchweb/6.5.7638.1/controls/ctrl_ctxtmenu.htc");}
else
{cmShow();}
}
}
}
function cmShow()
{if ( "complete" == idTreeMenu.readyState && cmShow.oFolder != null)
{idTreeMenu.onreadystatechange = null;var iSfId = 0;if (cmShow.oFolder.sfId)
iSfId = parseInt(cmShow.oFolder.sfId, 10);var fSpcFldr = iSfId > 0;var fSF = (cmShow.oFolder.searchFolder == "1");var fDelItems = cmShow.oFolder.id == (g_sBase + g_sDelItems + "/");var fJunkItems = cmShow.oFolder.id == (g_sBase + g_sJunkItems + "/");idTreeMenu.clearAll();idTreeMenu.add( L_CMRfrsh, "idRfrsh", g_fCMImgs?"refresh.gif":null,16,16);idTreeMenu.add( L_CMOpen, "idOpn", g_fCMImgs?"openfolder.gif":null,16,16);idTreeMenu.add( L_CMNewWin, "idNewWin");if (fDelItems)
idTreeMenu.add( L_CMEmpty, "idEmptyDel", g_fCMImgs?"deleted.gif":null,16,16);if (fJunkItems)
idTreeMenu.add( L_CMEmptyJunk, "idEmptyJunk", g_fCMImgs?"deleted.gif":null,16,16);if (!fSF && !fDelItems && !fJunkItems)
{if (!fSpcFldr)
{idTreeMenu.addDivider();idTreeMenu.add( L_CMMvCp, "idMvCp", g_fCMImgs?"copyto.gif":null,16,16);}
idTreeMenu.addDivider();if (!fSpcFldr)
{idTreeMenu.add( L_CMDel, "idDel", g_fCMImgs?"delete.gif":null,16,16);idTreeMenu.add( L_CMRnm, "idRnm", g_fCMImgs?"rename.gif":null,16,16);}
idTreeMenu.add( L_CMNew, "idNew", g_fCMImgs?"newfldr.gif":null,16,16);}
g_fCCM = true;idTreeMenu.show(cmShow.x, cmShow.y);}
}
cmShow.oFolder = null;cmShow.x = 0;cmShow.y = 0;
function cmHide()
{try
{idTreeMenu.hide();}
catch(e){}
}
function cmAction()
{idTreeMenu.hide();switch (event.szCmd)
{case "idDel":
var node = objTree.selectedNode;var szName = node.displayname;var szURL = node.url;if (confirm(L_AskDel))
objTree.deleteFolder(szURL);break;case "idRnm":
DoRenameCommand();break;case "idMvCp":
DoMoveCopyCommand();break;case "idNew":
DoNewFolderCommand();break;case "idRfrsh":
var objFolder = objTree.selectedNode;if (null != objFolder)
objTree.refreshFolder(objFolder.url);break;case "idOpn":
var node = objTree.selectedNode;if(node)
Navigate(node.url + "?Cmd=contents" +((node.isDeletedItems)?"&allowShowDeleted=1":"") );break;case "idNewWin":
var node = objTree.selectedNode;var szURL = node.url + "?Cmd=contents" +((node.isDeletedItems)?"&allowShowDeleted=1":"");var windowName = new String(Math.round(Math.random() * 100000));var hWin = window.open(szURL,windowName,"toolbar=1,location=1,directories=1,status=1,menubar=1,scrollbars=1,resizable=1");break;case "idEmptyDel":
if (confirm(L_AskEmptyDel))
{evt_EmptyItems.folder = g_sDelItems;var szURL = g_sBase + g_sDelItems + "/?Cmd=emptydeleteditems&sessid=" + g_szSessionId;g_HTTPDelItems = new ActiveXObject("Microsoft.xmlhttp");g_HTTPDelItems.onreadystatechange = evt_EmptyItems;g_HTTPDelItems.open("GET", szURL, true);g_HTTPDelItems.setRequestHeader("Accept-Language", g_szAcceptLang);g_HTTPDelItems.send();}
break;case "idEmptyJunk":
if (confirm(L_AskEmptyJunk))
{evt_EmptyItems.folder = g_sJunkItems;var szURL = g_sBase + g_sJunkItems + "/?Cmd=emptyjunkemail&sessid=" + g_szSessionId;g_HTTPDelItems = new ActiveXObject("Microsoft.xmlhttp");g_HTTPDelItems.onreadystatechange = evt_EmptyItems;g_HTTPDelItems.open("GET", szURL, true);g_HTTPDelItems.setRequestHeader("Accept-Language", g_szAcceptLang);g_HTTPDelItems.send();}
break;}
}
function evt_EmptyItems()
{var sFldr = "";if (evt_EmptyItems.folder != null)
sFldr = evt_EmptyItems.folder;if (g_HTTPDelItems && g_HTTPDelItems.readystate == 4)
{if (g_HTTPDelItems.status < 300)
{var nErrno = g_HTTPDelItems.responseXML.selectSingleNode("result/errorcode");if (null != nErrno && 0 != nErrno.text)
{if (null != g_HTTPDelItems.responseXML.selectSingleNode("result/errortext"))
alert(g_HTTPDelItems.responseXML.selectSingleNode("result/errortext").text);else
alert(nErrno.text+" "+L_Unk);}
else if (parent != null)
{if (0 == parent.viewer.location.href.indexOf(g_sBase + g_sDelItems))
parent.viewer.location = g_sBase + g_sDelItems + "/?Cmd=contents&allowShowDeleted=1";else if (0 == parent.viewer.location.href.indexOf(g_sBase + g_sJunkItems))
parent.viewer.location = g_sBase + g_sJunkItems + "/?Cmd=contents&allowShowDeleted=1";}
}
else
{alert("Error " + g_HTTPDelItems.status + ": " + g_HTTPDelItems.statusText);}
}
objTree.refreshFolder(g_sBase + sFldr + "/");}
var m_szItemType;
function fIsDlg()
{if ((null != g_wndReminder) && (!g_wndReminder.closed))
{var x = g_wndReminder.dialogLeft;if (0 > window.screenLeft)
{g_wndReminder.close();g_wndReminder=null;return false;}
else
{return true;}
}
else
{return false;}
}
function ShowReminders()
{var i = 0;var fRc = false;var rgParams= new Array();try
{if (fIsDlg())
{if (g_bmpEnableReminders >=(CONST_B_TASKS | CONST_B_CALENDAR))
{if (m_fTasks == true && m_fAppts == true)
resetReminders(false);else
return;}
g_wndReminder.updateData(m_rgszXML);fRc = true;}
if (true === fRc)
return;}
catch(e)
{g_wndReminder = null;}
if (g_bmpEnableReminders >=(CONST_B_TASKS | CONST_B_CALENDAR))
{if (m_fTasks == true && m_fAppts == true)
resetReminders(false);else
return;}
var f_sound = (CONST_B_SOUND == (g_bmpEnableReminders & CONST_B_SOUND));rgParams["rg_xmlData"]= m_rgszXML;rgParams["callback"] = onSnooze;rgParams["Sound"] = f_sound
rgParams["WavFile"] = g_szReminderWav;rgParams["Snooze"] = Snooze;rgParams["Dismiss"] = Dismiss;rgParams["type"] = m_szItemType;rgParams["Count"] = UpdRnmdrCount;rgParams["DayStart"] = g_lDayStart;var nWidth = 110 + 30 * g_nFontHeight;var nHeight = 210 + 9 * g_nFontHeight;g_wndReminder = showDlg(MODELESS, g_sBase+ "?Cmd=dialog&template=dlg_reminders&ver=6.5.7638.1" + "&theme="+g_thid, rgParams,nWidth,nHeight);}
function UpdateReminder()
{resetReminders(true);ShowReminders();}
function closeReminder()
{idReminder.style.display = 'none';if (g_wndReminder && (!g_wndReminder.closed))
{try
{g_wndReminder.close();}
catch(e)
{}
}
g_wndReminder = null;}
function resetReminders(fValue)
{m_fAppts = fValue;m_fTasks = fValue;}
function onReminders()
{if (0 == event.count)
{if ((0 == (g_bmpEnableReminders & CONST_B_TASKS)) || (0 == (g_bmpEnableReminders & CONST_B_CALENDAR)))
{closeReminder();return;}
else if ( (g_bmpEnableReminders >=(CONST_B_TASKS | CONST_B_CALENDAR)))
{if ( ((event.type == REM_TYPE_TASK) && (m_fAppts == true) && (m_rgszXML[REM_TYPE_APPT] == "" )) ||
((event.type == REM_TYPE_APPT) && (m_fTasks == true) && (m_rgszXML[REM_TYPE_TASK] == "" )))
{resetReminders(false);closeReminder();return;}
}
}
m_szItemType = event.type;if (g_bmpEnableReminders >=(CONST_B_TASKS | CONST_B_CALENDAR))
{if (m_szItemType == REM_TYPE_APPT)
{m_fAppts = true;if (0 != event.count)
m_rgszXML[REM_TYPE_APPT] = event.szXml;else
m_rgszXML[REM_TYPE_APPT] = "";}
if (m_szItemType == REM_TYPE_TASK)
{m_fTasks = true;if (0 != event.count)
m_rgszXML[REM_TYPE_TASK] = event.szXml;else
m_rgszXML[REM_TYPE_TASK] = "";}
}
else
{if (m_szItemType == REM_TYPE_APPT)
{m_rgszXML[REM_TYPE_APPT] = event.szXml;m_rgszXML[REM_TYPE_TASK] = "";}
if (m_szItemType == REM_TYPE_TASK)
{m_rgszXML[REM_TYPE_TASK] = event.szXml;m_rgszXML[REM_TYPE_APPT] = "";}
}
window.setTimeout(ShowReminders, 1000);}
function UpdRnmdrCount(iCnt)
{if (null != iCnt && iCnt <= 0)
{remText.innerText = "";idReminder.style.display = 'none';}
else
{idReminder.style.display = '';remText.innerText = remText.fmtStr.replace(/\%1/gi,iCnt);}
}
function onSnooze()
{window.setTimeout( cb_onSnooze, 100 );}
function cb_onSnooze()
{if ((g_ctlReminder) && (CONST_B_CALENDAR == (g_bmpEnableReminders & CONST_B_CALENDAR)) && (g_fUpdAppt))
g_ctlReminder.poll();if ((g_ctlTaskRem) && (CONST_B_TASKS == (g_bmpEnableReminders & CONST_B_TASKS)) && (g_fUpdTask))
window.setTimeout(poll_Tasks, 100);}
function poll_Tasks()
{g_ctlTaskRem.poll();}
function poll_Appts()
{g_ctlReminder.poll();}
function Snooze(rgItems, iMinutes, fnCallback)
{if (null == rgItems || rgItems.length == 0)
return;var rgRequestQueue= new Array();var iRequestCount = 0;var oRequestData = null;var re = /\/[^/]*$/;
var szProp;var szApptURL = "";var szTaskURL = "";var xmlTask = "";var xmlAppt = "";var dtRNT = null;var dtReminder = null;var iMinFromNow = 0;var iMinOffset = 0;g_fUpdTask = false;g_fUpdAppt = false;if (0 > iMinutes) 
{dtReminder = new Date();dtReminder.setMinutes( dtReminder.getMinutes() + -iMinutes );iMinFromNow = toISOTimeString(dtReminder);szProp = 'remindernexttime';}
else 
{iMinOffset = iMinutes * 60;szProp = 'reminderoffset';}
xmlAppt = '<?xml version="1.0"?\><a:propertyupdate xmlns:a="DAV:"><a:set><a:prop>' +
'<d:' + szProp + ' xmlns:d="urn:schemas:calendar:">';if (0 > iMinutes)
xmlAppt += iMinFromNow + '</d:' + szProp + '>';else
xmlAppt += iMinOffset + '</d:' + szProp + '>';xmlAppt += '</a:prop></a:set><a:target>';xmlTask = '<?xml version="1.0"?\><a:propertyupdate xmlns:a="DAV:"><a:set><a:prop>' +
'<d:remindernexttime xmlns:d="'">http://schemas.microsoft.com/mapi/">'+ iMinFromNow + '</d:remindernexttime>' +
'</a:prop></a:set><a:target>';var i;var k = 0;var l = 0;for ( i = 0;i < rgItems.length;i++ )
{if (rgItems[i].messageclass == CONST_IPM_APPT && szApptURL == "")
szApptURL = rgItems[i].apptURL.replace( re, "" );if (rgItems[i].messageclass == CONST_IPM_TASK && szTaskURL == "")
szTaskURL = rgItems[i].apptURL.replace( re, "" );var szTemp = rgItems[i].apptURL.replace( re, "" );if ((rgItems[i].messageclass == CONST_IPM_APPT) && (szTemp === szApptURL))
{xmlAppt += '<a:href>' + rgItems[i].apptURL + '</a:href>';k++;}
else if ((rgItems[i].messageclass == CONST_IPM_TASK) && (szTemp === szTaskURL ))
{xmlTask += '<a:href>' + rgItems[i].apptURL + '</a:href>';l++;}
}
if (k > 0)
{g_fUpdAppt = true;xmlAppt += '</a:target></a:propertyupdate>';oRequestData = new RequestData();oRequestData.url = szApptURL;oRequestData.xml = xmlAppt;rgRequestQueue[iRequestCount++] = oRequestData;}
if (l > 0)
{g_fUpdTask = true;xmlTask += '</a:target></a:propertyupdate>';oRequestData = new RequestData();oRequestData.url = szTaskURL;oRequestData.xml = xmlTask;rgRequestQueue[iRequestCount++] = oRequestData;}
var bRet = mf_Request(rgRequestQueue, fnCallback);return bRet;}
function Dismiss(rgItems, fnCallback)
{if (null == rgItems || rgItems.length == 0)
return;var re = /\/[^/]*$/;
var rgRequestQueue= new Array();var iRequestCount = 0;var i = 0;var oRequestData = null;var szApptURL = "";var szTaskURL = "";var xmlSAppt = "";var xmlRAppt = "";var xmlRSTask = "";var szTemp= "";var rgTodo = new Array();var j = 0;var k = 0;var l = 0;g_fUpdTask = false;g_fUpdAppt = false;xmlSAppt = '<?xml version="1.0"?\><a:propertyupdate xmlns:a="DAV:"><a:remove><a:prop>' +
'<d:reminderoffset xmlns:d="urn:schemas:calendar:" />' +
'</a:prop></a:remove><a:target>';xmlRAppt = '<?xml version="1.0"?\><a:propertyupdate xmlns:a="DAV:"><a:set><a:prop>' +
'<d:remindernexttime xmlns:d="urn:schemas:calendar:">4501-01-01T00:00:00.000Z</d:remindernexttime>' +
'</a:prop></a:set><a:target>';xmlRSTask = '<?xml version="1.0"?\><a:propertyupdate xmlns:a="DAV:"><a:set><a:prop>' +
'</a:prop><a:prop><e:reminderset xmlns:e="0'">http://schemas.microsoft.com/mapi/">0</e:reminderset>' +
'</a:prop><a:prop><f:resetreminder  xmlns:f="1'">http://schemas.microsoft.com/exchange/tasks/">1</f:resetreminder>' +
'</a:prop></a:set><a:target>';for (i = 0;i < rgItems.length;i++)
{if (rgItems[i].messageclass == CONST_IPM_APPT && szApptURL == "")
szApptURL = rgItems[i].apptURL.replace( re, "" );else if (rgItems[i].messageclass == CONST_IPM_TASK && szTaskURL == "")
szTaskURL = rgItems[i].apptURL.replace( re, "" );if (("0" != rgItems[i].type) && (rgItems[i].messageclass == CONST_IPM_APPT))
{szTemp = rgItems[i].apptURL.replace( re, "" );if (szTemp === szApptURL)
{xmlRAppt += '<a:href>'+rgItems[i].apptURL + '</a:href>';k++;}
}
else 
{rgTodo[j++] = rgItems[i];}
}
if (k > 0)
{g_fUpdAppt = true;xmlRAppt += '</a:target></a:propertyupdate>';oRequestData = new RequestData();oRequestData.url = szApptURL;oRequestData.xml = xmlRAppt;rgRequestQueue[iRequestCount++] = oRequestData;}
k = 0;l = 0;if (null != rgTodo && rgTodo.length) 
{rgItems = rgTodo;for (i = 0;i < rgItems.length;i++)
{if (rgItems[i].messageclass == CONST_IPM_APPT && szApptURL == "")
szApptURL = rgItems[i].apptURL.replace( re, "" );else if (rgItems[i].messageclass == CONST_IPM_TASK && szTaskURL == "")
szTaskURL = rgItems[i].apptURL.replace( re, "" );szTemp = rgItems[i].apptURL.replace( re, "" );if ((rgItems[i].messageclass == CONST_IPM_APPT) && (szTemp === szApptURL))
{xmlSAppt += '<a:href>'+rgItems[i].apptURL + '</a:href>';k++;}
else if ((rgItems[i].messageclass == CONST_IPM_TASK) && (szTemp === szTaskURL))
{xmlRSTask += '<a:href>'+rgItems[i].apptURL + '</a:href>';l++;}
}
}
if (0 < k)
{g_fUpdAppt = true;xmlSAppt += '</a:target></a:propertyupdate>';oRequestData = new RequestData();oRequestData.url =szApptURL;oRequestData.xml = xmlSAppt;rgRequestQueue[iRequestCount++] = oRequestData;}
if (0 < l)
{g_fUpdTask = true;xmlRSTask += '</a:target></a:propertyupdate>';oRequestData = new RequestData();oRequestData.url = szTaskURL;oRequestData.xml = xmlRSTask;rgRequestQueue[iRequestCount++] = oRequestData;}
var bRet = mf_Request(rgRequestQueue, fnCallback);return bRet;}
function RequestData()
{this.pending = true;this.result = false;this.url = null;this.xml = null;}
function mf_Request(rgRequestQueue, fnCallback)
{var objContext = null;var oRequest = null;var oXmlHttp = null;try
{for (var iRequestIndex = 0;iRequestIndex < rgRequestQueue.length;iRequestIndex++)
{objContext = new Object();objContext.requestIndex = iRequestIndex;objContext.callback = fnCallback;oRequest = new requestFactory(rgRequestQueue[iRequestIndex].url, "BPROPPATCH", objContext, mfcb_Request);oXmlHttp = oRequest.xmlhttp;oXmlHttp.setRequestHeader("Accept-Language", g_szAcceptLang);oXmlHttp.setRequestHeader("Content-Type","text/xml");oXmlHttp.setRequestHeader("Translate","f");oXmlHttp.setRequestHeader("Brief","t" );oXmlHttp.send(rgRequestQueue[iRequestIndex].xml);}
}
catch(e)
{return (false);}
m_rgRequestQueue = rgRequestQueue;return (true);}
function mfcb_Request(oRequest)
{var fSuccess = true;var fResult = true;var objContext = oRequest.context;var iRequestIndex = objContext.requestIndex;var oXmlHttp = oRequest.xmlhttp;var iStatus = oXmlHttp.status;if ( iStatus < 200 || iStatus == 207 || iStatus >= 300)
{switch(iStatus)
{case 207:
var rgStatus = oXmlHttp.responseXML.selectNodes("a:multistatus/a:response[a:status $ge$ 'HTTP/1.1 4']");if (rgStatus.length)
{for (var i = 0 ;i < rgStatus.length;i++)
{if (rgStatus[i].text.indexOf("507") != -1)
{fSuccess = false;g_szErrReq = L_RemQuotaMax;break;}
}
}
break;case 404: 
fSuccess = true;break;case 507:
fSuccess = false;g_szErrReq = L_RemQuotaMax;break;default:
fSuccess = false;}
}
m_rgRequestQueue[iRequestIndex].pending = false;m_rgRequestQueue[iRequestIndex].result = fSuccess;for (iRequestIndex = 0;iRequestIndex < m_rgRequestQueue.length;iRequestIndex++)
{if (m_rgRequestQueue[iRequestIndex].pending)
return;fResult = fResult && m_rgRequestQueue[iRequestIndex].result;}
m_rgRequestQueue = null;try
{var fnCallback = objContext.callback;fnCallback(fResult, g_szErrReq);g_szErrReq = "";}
catch(e) {}
}
function toISOTimeString(dtDate)
{var sTime = dtDate.getUTCFullYear() + "-00-00T00:00:00Z";var i = dtDate.getUTCMonth()+1;sTime = sTime.substr(0,(10 > i) ? 6 : 5) + i + sTime.substr(7);i = dtDate.getUTCDate();sTime = sTime.substr(0,(10 > i) ? 9 : 8) + i + sTime.substr(10);i = dtDate.getUTCHours();sTime = sTime.substr(0,(10 > i) ? 12 : 11) + i + sTime.substr(13);i = dtDate.getUTCMinutes();sTime = sTime.substr(0,(10 > i) ? 15 : 14) + i + sTime.substr(16);return sTime;}
function resetMailPoll()
{if (g_ctlNotify!= null && parent != null)
{if (parent.viewer != null)
{if (g_ctlNotify.folder +"/?Cmd=contents" == parent.viewer.location)
g_ctlNotify.resetPoll();}
}
}
function onNewMail()
{if (2 <= g_nEnableNewMail)
PlaySound();if (0 == (1 & g_nEnableNewMail))
return;var obj = g_winDocAll['idNewMail'];if (null != obj)
{obj.style.display="";AnimateNotify();}
if (0 < g_iAddCount)
objTree.updateFolderCount( g_ctlNotify.folder+"/" );}
function PlaySound()
{if (null == g_oSound)
g_oSound = window.document.all['idSound'];if (g_fDXInstalled)
{try
{g_oSound.src = g_szVirtualRoot + "/img/notify.wav";g_oSound.beginElement();return;}
catch(e)
{g_fDXInstalled = false;}
}
var oSnd = document.createElement("BGSOUND");oSnd.id = "idSound";oSnd.src = g_szNewMailWav;oSnd.LOOP=1;g_oSound = document.body.insertBefore( oSnd, null );g_oSound.src = g_oSound.src;}
function flyInit()
{flyMove.curH = 0;if (window.document.dir === "rtl")
flyMove.curX = 0;else
flyMove.curX = window.screen.availWidth - flyMove.flyWidth;flyMove.curY = window.screen.availHeight;}
function flyMove()
{flyMove.curH += 2;flyMove.curY -= 2;showPU(g_oPopup, flyMove.curX, flyMove.curY, flyMove.flyWidth, flyMove.curH);if (flyMove.curH >= flyMove.flyHeight)
{window.clearInterval(g_idFlyPopup);g_idFlyPopup = -1;window.setTimeout('closePopup()', 15000);}
}
flyMove.curH = 0;flyMove.curY = 0;flyMove.curX = 0;flyMove.flyHeight = 126;flyMove.flyWidth = 130;
function AnimateNotify()
{if (null == g_oPopup)
return;var oPopupBody = g_oPopup.document.body;var szFont = window.document.body.currentStyle.fontFamily;var szHTML = "<TABLE height=100% width=100% cellpadding=4 cellspacing=0 style=\"font-family:"+szFont+";font-size:100%;\">"+
"<TR style=\"background-image:url("+g_szImagePath+"newitem.gif);background-repeat:no-repeat;background-position:99% 99%\">"+
"<TD align=middle >"+L_NewMail+"</TD></TR></TABLE>";oPopupBody.innerHTML = szHTML;oPopupBody.style.fontSize = document.body.currentStyle.fontSize;oPopupBody.style.cursor="hand";oPopupBody.style.color = "black";oPopupBody.style.borderWidth='3px';oPopupBody.style.borderStyle='window-inset';oPopupBody.style.borderColor='activeborder';oPopupBody.style.backgroundImage="url("+g_szThemesPath+"nin-bg.gif)";oPopupBody.style.backgroundRepeat="no-repeat";oPopupBody.style.backgroundPosition="center center";oPopupBody.style.backgroundColor="#8D9FB7";oPopupBody.onclick = ShowInbox;flyInit();if (g_idFlyPopup == -1)
g_idFlyPopup = window.setInterval(flyMove,10);}
function closePopup()
{if (null != g_oPopup)
g_oPopup.hide();}
function ShowInbox()
{window.top.focus();nbLinkNav(g_ctlNotify.folder + "/", "contents");if (-1 != g_idFlyPopup)
{window.clearInterval(g_idFlyPopup);g_idFlyPopup = -1
}
closePopup();var obj = g_winDocAll['idNewMail'];if (null != obj)
obj.style.display="none";}
function newOptions(iRem, iNot)
{var f_OnOld = (g_bmpEnableReminders >= (CONST_B_TASKS | CONST_B_CALENDAR));var f_OldTask = (CONST_B_TASKS == (g_bmpEnableReminders & CONST_B_TASKS));var f_OldAppt = (CONST_B_CALENDAR == (g_bmpEnableReminders & CONST_B_CALENDAR));var f_LdRem = null;var f_LdTask = null;var ldFirst = null;if (g_bmpEnableReminders != iRem)
{g_bmpEnableReminders = iRem;f_LdRem = (CONST_B_CALENDAR == (g_bmpEnableReminders & CONST_B_CALENDAR));f_LdTask = (CONST_B_TASKS == (g_bmpEnableReminders & CONST_B_TASKS));}
var f_OnNew = (g_bmpEnableReminders >=(CONST_B_TASKS | CONST_B_CALENDAR));if (f_OnOld && f_OnNew)
return;if (f_OnOld && !f_OnNew)
{if ((f_LdTask == false) && (f_LdTask != f_OldTask))
ldTaskRem();if ((f_LdRem == false) && (f_LdRem != f_OldAppt))
ldRem();if ((f_OldAppt == true) && (f_LdRem == f_OldAppt))
g_ctlReminder.poll();if ((f_OldTask == true) && (f_LdTask == f_OldTask))
g_ctlTaskRem.poll();}
if (!f_OnOld && f_OnNew)
{resetReminders(false)
if ((f_OldAppt == true) && (f_LdRem == f_OldAppt))
g_ctlReminder.poll();else 
ldRem();if ((f_OldTask == true) && (f_LdTask == f_OldTask))
g_ctlTaskRem.poll();else
ldTaskRem();}
if (!(f_OnOld || f_OnNew))
{if (f_LdRem != null)
ldRem();if (f_LdTask != null)
ldTaskRem();}
if( g_nEnableNewMail != iNot )
{g_nNewMailNewVal = iNot ;ldNot();}
}
ldRem.loaded = false;
function ldRem()
{if (g_idCalRmTmr >= 0)
{window.clearTimeout(g_idCalRmTmr);g_idCalRmTmr = -1;}
if (null == g_ctlReminder)
return;if (ldRem.loaded)
{udRem();}
else if (CONST_B_CALENDAR == (g_bmpEnableReminders & CONST_B_CALENDAR))
{g_ctlReminder.onreadystatechange = udRem;g_ctlReminder.addBehavior("/exchweb/6.5.7638.1/controls/ctrl_reminder.htc");}
}
function udRem()
{if ("complete" == g_ctlReminder.readyState)
{g_ctlReminder.onreadystatechange = null;ldRem.loaded = true;closeReminder();if (CONST_B_CALENDAR == (g_bmpEnableReminders & CONST_B_CALENDAR))
{g_ctlReminder.onchange = onReminders;g_ctlReminder.enable = true;g_ctlReminder.type = REM_TYPE_APPT;}
else
{g_ctlReminder.enable=false;}
}
}
ldTaskRem.loaded = false;
function ldTaskRem(fLoad)
{if (g_idTaskRmTmr >= 0)
{window.clearTimeout(g_idTaskRmTmr);g_idTaskRmTmr = -1;}
if (null == g_ctlTaskRem)
return;if (ldTaskRem.loaded)
{udTaskRem();}
else if (CONST_B_TASKS == (g_bmpEnableReminders & CONST_B_TASKS))
{g_ctlTaskRem.onreadystatechange = udTaskRem;g_ctlTaskRem.addBehavior("/exchweb/6.5.7638.1/controls/ctrl_reminder.htc");}
}
function udTaskRem()
{if ("complete" == g_ctlTaskRem.readyState)
{g_ctlTaskRem.onreadystatechange = null;ldTaskRem.loaded = true;closeReminder();if (CONST_B_TASKS == (g_bmpEnableReminders & CONST_B_TASKS))
{g_ctlTaskRem.onchange = onReminders;g_ctlTaskRem.enable = true;g_ctlTaskRem.type = REM_TYPE_TASK;}
else
{g_ctlTaskRem.enable=false;}
}
}
ldNot.loaded = false;
function ldNot()
{if (null == g_ctlNotify)
return;if (ldNot.loaded)
{udNot();}
else if (0 != g_nNewMailNewVal)
{if (null != g_winDocAll.idSound)
{g_fUseTime2 = (getBrowserVer() >= 5.5);idSound.addBehavior(g_fUseTime2 ? "#default#time2" : "#default#time");idSound.begin = "indefinite";}
g_ctlNotify.onreadystatechange = udNot;g_ctlNotify.addBehavior("/exchweb/6.5.7638.1/controls/ctrl_notify.htc");}
}
function udNot()
{if ("complete" == g_ctlNotify.readyState)
{g_ctlNotify.onreadystatechange = null;ldNot.loaded = true;if (0 == g_nNewMailNewVal)
{g_ctlNotify.enable = false;}
else
{try
{g_oPopup = window.createPopup();}
catch(e){}
if (0 == g_nEnableNewMail)
{g_ctlNotify.enable = true;g_ctlNotify.onchange = onNewMail;}
}
g_nEnableNewMail = g_nNewMailNewVal;}
}
function onopened(szFolder)
{var szInbox = "";if (g_szInboxFolder.length)
{szInbox = g_szInboxFolder.substr(1);if (szFolder === szInbox)
{closePopup();var obj = g_winDocAll['idNewMail'];if (null != obj)
obj.style.display="none";}
}
return szInbox;}
function tglTree()
{cmHide();if (event)
{event.cancelBubble = true;event.returnValue = false;}
if ("1" == g_bShowFolders)
hideTree();else
showTree();}
function showTree()
{if (g_iAddCount == 0)
{treeProgress.style.display = "";objTree.addBehavior("/exchweb/6.5.7638.1/controls/ctrl_tree.htc");}
else
{idTglTH.src = g_szImagePath + g_szUpIco;g_rgFlyItms[g_iFlyTr].expand();g_bShowFolders = "1";idUdTree.style.display = "";setProp(g_bShowFolders, "webclientshowhierarchy");syncViewWithTree();}
}
function hideTree()
{idTglTH.src = g_szImagePath + g_szDnIco;g_rgFlyItms[g_iFlyTr].collapse();g_bShowFolders = "0";idUdTree.style.display = "none";setProp(g_bShowFolders, "webclientshowhierarchy");}
function flyMvDv(iID)
{var oItm = g_rgFlyItms[iID];oItm.oTR.style.posHeight += oItm.dir*oItm.step;oItm.oDiv.runtimeStyle.filter = "alpha(opacity="+(100*(oItm.oTR.style.posHeight/oItm.size))+")";
if (0 >= oItm.oTR.style.posHeight || oItm.size <= oItm.oTR.style.posHeight)
{window.clearInterval(oItm.iTgl);oItm.iTgl = null;if (g_iCol == oItm.dir) oItm.oTR.style.display= 'none';oItm.oDiv.style.overflow = 'auto';}
}
function flyItm(iID, oTR, oDiv, iSize)
{this.oTR = oTR;this.oDiv = oDiv;this.size = iSize;this.step = iSize/15;
this.expand = flyExp;this.collapse = flyCol;this.toggle = flyTgl;this.iTgl = null;this.iID = iID;g_rgFlyItms[iID] = this;}
function flyExp()
{this.toggle(g_iExp);}
function flyCol()
{this.toggle(g_iCol);}
function flyTgl(iDir)
{this.dir = iDir;this.oDiv.style.overflow = 'hidden';if (this.dir == g_iExp)
this.oTR.style.display = '';if (this.iTgl == null)
this.iTgl = window.setInterval("flyMvDv("+this.iID+")",15);}
function tglQL()
{if (event)
{event.cancelBubble = true;event.returnValue = false;}
if (g_bShowQL)
{g_bShowQL = 0;hideQL();}
else
{g_bShowQL = 1;showQL();}
setProp(g_bShowQL, "quicklinks");}
function showQL()
{g_winDocAll.imgHideQL.style.display = g_winDocAll.trQuickLinks.style.display = "";g_winDocAll.imgShowQL.style.display = "none";showBigLinks(false);}
function hideQL()
{g_winDocAll.imgShowQL.style.display = "";g_winDocAll.trQuickLinks.style.display = g_winDocAll.imgHideQL.style.display = "none";showBigLinks(true);}
function showBigLinks(fShow)
{for(var i=0;i < g_rgBigLinks.length;++i)
{var oBL = g_winDocAll[g_rgBigLinks[i]];
// #####################################################################################
//      if (oBL)
//              oBL.parentElement.style.display = fShow ? "" : "none";
 if (oBL != null && "undefined" != typeof(oBL))
 {
  if (oBL.parentElement != null && "undefined" != typeof(oBL.parentElement))
   oBL.parentElement.style.display = fShow ? "" : "none";
 }
// #####################################################################################
}
}
function setProp(sVal, sProp)
{var szXML = "<?xml version=\"1.0\" ?>" +
"<D:propertyupdate xmlns:D=\"DAV:\" xmlns:a=\"http://schemas.microsoft.com/exchange/\">" +
"<D:set><D:prop><a:" + sProp + ">" + sVal + "</a:" + sProp + "></D:prop></D:set>" +
"</D:propertyupdate>";var oXMLReq= new ActiveXObject("Microsoft.XMLHTTP");oXMLReq.open("PROPPATCH", g_sBase, true);oXMLReq.setRequestHeader("Accept-Language", g_szAcceptLang);oXMLReq.setRequestHeader("Content-Type","text/xml");oXMLReq.setRequestHeader("Depth", "0");oXMLReq.send(szXML);}
function udTree()
{if (event)
{event.cancelBubble = true;event.returnValue = false;}
if (g_iAddCount < 1)
return;objTree.refreshFolder(g_sBase);objTree.refreshFolder(g_sBase+g_sFinderUrl);}
// #####################################################################################
function CUSTOMupdateShortcuts()
{
// Point this url to your custom site
var sNewQuery = "/MailArchiver";
CUSTOMinsertBefore("idOptions", "aQLOptions", "idCustom", "Archive", "/exchweb/img/Archive-lg.gif", "/exchweb/img/icon-archive.gif", sNewQuery);
}
/* #####################################################################################
  Function:   CUSTOMinsertBefore
  Purpose:    Add a new tab to the OWA 2003 navigation bar quick links section
  Parameters:
              beforeNBID == ID of element before insert should happen
              beforeAID  == <a> element before insert should happen
     szID       == ID (must be unique)
     szText     == Text to display (max 11 chars)
     szImage    == URL to large image (24x24)
     szImageQL  == URL to small image (16x16)
     szRef      == URL to navigate to
  ##################################################################################### */
function CUSTOMinsertBefore(beforeNBID, beforeAID, szID, szText, szImage, szImageQL, szRef)
{
var navBeforeTD = g_winDocAll.item(beforeNBID);
// If the navigation pane is not displayed just leave
if(null == navBeforeTD)
 return;
// Find the containing row and table
var navBeforeTR = navBeforeTD.parentNode;
var navTable = navBeforeTR.parentNode;

// Create the new navigation pane button bar row. This is the big row containing a 24 x 24 image and the text of the navigation pane item
var NewTR = document.createElement("TR");
NewTR.className = "trQuickLinks";
NewTR.style.display = navBeforeTR.style.display;
var NewTD = document.createElement("TD");
NewTD.id = szID;
NewTD.className = "nbLabel";
NewTD.valign = "top";
NewTD.noWrap = true;
var NewA = document.createElement("A");
NewA.className = "nbHref nbHrefEx";
NewA.href = szRef;
   // Use "_blank" if you want the link to open a new window, "viewer" otherwise
   NewA.target = "viewer";
// NewA.target = "_blank";
   
var NewImg = document.createElement("IMG");
NewImg.className = "nbImage";
NewImg.align = "absmiddle";
NewImg.style.width = "24px";
NewImg.style.height = "24px";
NewImg.src = szImage;
var NewText = document.createTextNode(szText);
// Tie the elements together
NewA.appendChild(NewImg);
NewA.appendChild(NewText);
NewTD.appendChild(NewA);
NewTR.appendChild(NewTD);
// And add the new row
navTable.insertBefore(NewTR, navBeforeTR);
// Find the insertion point in the quick link navigation list
var qlBeforeA = g_winDocAll.item(beforeAID);
var qlBeforeTD = qlBeforeA.parentNode;
var qlBeforeTR = qlBeforeTD.parentNode;
// Add a quick link cell. This is the one line at the bottom of the navigation pane only visible if the navigation pane button bar is not expanded
NewTD = document.createElement("TD");
NewA = document.createElement("A");
NewA.className = "aQL";
NewA.href = szRef;
   // Use "_blank" if you want the link to open a new window, "viewer" otherwise
NewA.target = "viewer";
// NewA.target = "_blank";
   
NewImg = document.createElement("IMG");
NewImg.className = "imgQL";
NewImg.align = "absmiddle";
NewImg.style.width = "16px";
NewImg.style.height = "16px";
NewImg.src = szImageQL;
NewImg.alt = "Go to " + szText;
// Tie the elements together 
NewTD.appendChild(NewA);
NewA.appendChild(NewImg);
// And insert the quick link cell
qlBeforeTR.insertBefore(NewTD, qlBeforeTD);
if (null != g_rgBigLinks)
{
 try
 {
  g_rgBigLinks.push(szID);
 }
 catch (e) {}
}
}
// #####################################################################################


(in reply to shawner47)
Post #: 14
RE: Tip: How to integrate MailArchiver with OWA 2003 - 3.Apr.2006 11:52:31 AM   
shawner47

 

Posts: 4
Joined: 30.Mar.2006
Status: offline
frededric-
Thank you for the response.  I must say that I had tried several times following the instructions given but for some reason, I could not get it to work.  The new tab would not sahow up and when I would try to click on any of the other tabs (Contacts, Calendar, etc) it would do nothing.  I want to compare your version to mine to see where I might have gone wrong.  Thank you again!

Shawn

(in reply to frederic)
Post #: 15
Page:   [1] 2   next >   >>
All Forums >> [Messaging] >> GFI MailArchiver for Exchange >> Tip: How to integrate MailArchiver with OWA 2003 Page: [1] 2   next >   >>
Jump to:





New Messages No New Messages
Hot Topic w/ New Messages Hot Topic w/o New Messages
Locked w/ New Messages Locked w/o New Messages
 Post New Thread
 Reply to Message
 Post New Poll
 Submit Vote
 Delete My Own Post
 Delete My Own Thread
 Rate Posts


   © 2008. All rights reserved. GFI Software Home Products Download Trials Support Ordering Site Map About Us Contact us
GFI solutions: Exchange anti spam filter - exchange anti virus - isa server - network vulnerability scanner - event log management - USB security software - exchange archiving - fax server software