| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Mail Enable/Bin/NETWebMail/Mondo/lang/sys/Forms/ |
Upload File : |
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="AddressBook.aspx.vb" Inherits="MailEnable.Clients.WebMail.Mondo.AddressBook" %>
<%@ Register TagPrefix="uc1" TagName="uscStyleHeader" Src="../../Controls/uscStyleHeader.ascx" %>
<%@ Register TagPrefix="uc1" TagName="ScriptsInclude" Src="../../Controls/ScriptsInclude.ascx" %>
<%@ Register TagPrefix="uc2" TagName="uscLanguageTokenMondo" Src="../../Controls/uscLanguageToken.ascx" %>
<uc2:uscLanguageTokenMondo id="uscToken" runat="server"></uc2:uscLanguageTokenMondo>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><%=uscToken.GetText("[ME_TXT-AddressBookPageTitle]")%></title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<uc1:uscstyleheader id="UscStyleHeader1" runat="server"></uc1:uscstyleheader>
<uc1:ScriptsInclude id="ScriptsInclude" runat="server" Flags="EXPIRE"></uc1:ScriptsInclude>
<script type="text/javascript">
<!--
var gBrowserType = GetBrowserType();
var oAlertDialog = null;
var gSelectedIM;
var gSelectedCols = [];
var ROW_CLASS_SELECTED = 'dataTable_listRow_selected';
var ROW_CLASS_UNSELECTED = 'dataTable_listRow_unselected';
var TABLE_CLASS_SELECTED = 'dataTable_listTable_selected';
var ARROW_CLASS_BLANK = 'tableHead_bttn_arrow';
var ARROW_CLASS_UP_SELECTED = 'tableHead_bttn_arrow_up_selected';
var ARROW_CLASS_DOWN_SELECTED = 'tableHead_bttn_arrow_down_selected';
var COL_CLASS_TICKBOX = 'dataTable_tickbox';
var COL_CLASS_GROUP = 'dataTable_icon';
var COL_CLASS_GROUP_NAME = 'dataTable_groupName';
var COL_CLASS_ICON_GROUP = 'dataTable_icon_group'
var COL_CLASS_FULLNAME = 'dataTable_name';
var COL_CLASS_EMAIL = 'dataTable_email';
var COL_CLASS_TEXT = 'dataTable_text';
var COL_CLASS_LAST = 'dataTable_noWidth';
var SEARCH_CLASS_INITIAL = 'popupWin_search_form_initial';
var SEARCH_CLASS_NORMAL = 'popupWin_search_form_normal';
var DATA_TABLE_HEAD_CLASS = 'dataTable2_table_head';
var DATA_TABLE_CLASS = 'dataTable_table';
var SOURCE_CONTACTS = 0;
var SOURCE_GLOBAL_ADDRESS_LIST = 1;
var SORT_ORDER_ASC = "Asc";
var SORT_ORDER_DESC = "Desc";
var gSortOrder = "Asc";
var CurrentFolder = 'Contacts';
var gABrowcount = 0;
var g_opt={};
g_opt['ME_VALIDATIONTOKEN'] = '<% =Session.item("ME_VALIDATIONTOKEN") %>';
var SkinRoot = '<%=Session("skin")%>';
var gView = '<%=GetView()%>';
var gNumSelectedCol = 0;
var MIN_WINDOW_WIDTH = 570;
var MIN_WINDOW_HEIGHT = 550;
window.onresize = browserResize;
function browserResize()
{
// set data table height
var html_height = document.body.parentNode.clientHeight;
var min_table_height = 150;
var bottom_panel_height = 323; // 310 being top/bottom objects within the popupWin
if (gView == 'Mobile') {
bottom_panel_height = 250;
}
var table_height = html_height - bottom_panel_height;
// resize the Contacts table according to the minimum required dimensions
if (table_height > min_table_height) {
document.getElementById("table_div").style.height = table_height + "px";
} else {
document.getElementById("table_div").style.height = min_table_height + "px";
}
}
function PageLoad()
{
oAlertDialog = new MessageDialog("Alert");
oWaitDialog = new ProgressDialog("WaitDialog");
gSelectedIM = new SelectedItemsManager();
// restrict the window size to be no smaller than the MIN_WINDOW_WIDTH and MIN_WINDOW_HEIGHT
if (getWindowWidth() < MIN_WINDOW_WIDTH || getWindowHeight() < MIN_WINDOW_HEIGHT) {
// resize window so it's big enough to view all the contents
window.resizeTo(MIN_WINDOW_WIDTH, MIN_WINDOW_HEIGHT);
}
LoadCurAddresses(); // load the current addresses from the parent form (compose page).
GetData(GetCurrentSource());
browserResize();
}
$(document).ready(function() {
AdjustTable();
});
function AdjustTable()
{
var colCount = $('#firstTr>td').length; //get total number of column
var m = 0;
var brow = 'mozilla';
jQuery.each(jQuery.browser, function(i, val) {
if (val == true) {
brow = i.toString();
}
});
$('.tableHeader').each(function(i) {
if (m < colCount) {
if (brow == 'mozilla') {
$(this).css('width', $('#table_div td:eq(' + m + ')').innerWidth() - 4); //calculates width of Header tds (FF needs -4 padding)
}
else if (brow == 'msie') {
$(this).css('width', $('#table_div td:eq(' + m + ')').width());
}
else if (brow == 'safari') {
$(this).css('width', $('#table_div td:eq(' + m + ')').width());
}
else {
$(this).css('width', $('#table_div td:eq(' + m + ')').innerWidth() - 4); //(Opera needs -4 padding)
}
}
m++;
});
}
//function to support scrolling of title and first column
function FnScroll()
{
$('#divHeader').scrollLeft($('#table_div').scrollLeft());
$('#firstcol').scrollTop($('#table_div').scrollTop());
}
function HideCol(ColNum)
{
// first column index is 1
if (!ColNum) return;
// hide the column for both the header & content tables
$('table.' + DATA_TABLE_HEAD_CLASS + ' td:nth-child(' + ColNum + ')').hide();
$('table.' + DATA_TABLE_CLASS + ' td:nth-child(' + ColNum + ')').hide();
}
function ShowCol(ColNum)
{
// first column index is 1
if (!ColNum || ColNum == undefined) return;
// show the column for both the header & content tables
$('table.' + DATA_TABLE_HEAD_CLASS + ' td:nth-child(' + ColNum + ')').show();
$('table.' + DATA_TABLE_CLASS + ' td:nth-child(' + ColNum + ')').show();
}
function GetLastVisibleHeaderColNum() {
var iNumCols = $('table.' + DATA_TABLE_HEAD_CLASS + ' td').length;
var td = null;
for (var i = iNumCols; i > 1; i--) {
td = $('table.' + DATA_TABLE_HEAD_CLASS + ' tr').children('td').eq(i);
if (td.css('display') && (td.css('display') != 'none')) {
return i;
}
}
return -1;
}
function GetLastVisibleBodyColNum()
{
var tdCollection = $('table.' + DATA_TABLE_CLASS + ' tr:first table td');
var iNumCols = tdCollection.length;
var td = null;
for (var i = iNumCols - 1; i > 1; i--) {
td = tdCollection.eq(i);
if (td.css('display') && (td.css('display') != 'none'))
{
return i;
}
}
return -1;
}
function SetHeaderColClasses() {
var iLastCol = GetLastVisibleHeaderColNum();
var sClassName = '';
var iNumCols = $('table.' + DATA_TABLE_HEAD_CLASS + ' tr td').length;
var tdHead = null;
for (var i = 3; i < iNumCols; i++) {
if (i == iLastCol) {
sClassName = COL_CLASS_LAST;
}
else {
if (i == (iNumCols - 2)) {
sClassName = COL_CLASS_EMAIL;
}
else {
sClassName = COL_CLASS_TEXT;
}
}
$('table.' + DATA_TABLE_HEAD_CLASS + ' tr').children('td').eq(i).attr('class', sClassName);
}
}
function SetBodyColClasses() {
var iLastCol = GetLastVisibleBodyColNum();
var sClassName = '';
var iNumCols = $('table.' + DATA_TABLE_CLASS + ' tr:first table td').length;
var tdHead = null;
for (var i = 3; i < iNumCols; i++) {
if (i == iLastCol) {
sClassName = COL_CLASS_LAST;
}
else {
if (i == (iNumCols - 2)) {
sClassName = COL_CLASS_EMAIL;
}
else {
sClassName = COL_CLASS_TEXT;
}
}
// set the style for each table cell (in each row)
if (gABrowcount < 500)
{
$('table.' + DATA_TABLE_CLASS + ' tr tr').find('td:nth-child(' + (i + 1) + ')').attr('class', sClassName);
}
}
}
function SetColClasses() {
SetHeaderColClasses();
SetBodyColClasses();
}
function ShowAllColumns() {
var iNumCols = $('table.' + DATA_TABLE_HEAD_CLASS + ' td').length;
for (var i = 3; i <= iNumCols; i++) // start from the 3rd column (first 2 columns are always visible)
{
ShowCol(i);
}
}
function ShowWait(sMessage) {
if (sMessage == undefined)
{
sMessage = t_('[ME_TXT-Pleasewait]') + '...';
}
if (oWaitDialog) // the dialog would not have been created until after PageLoad()
{
oWaitDialog.Show({ Message: sMessage });
}
}
function HideWait() {
if (oWaitDialog) // the dialog would not have been created until after PageLoad()
{
oWaitDialog.Hide();
}
}
function NeedDataFetch(ColName) {
var bExists = false;
// see if column name already exists in our array of visible columns
for (var i = 0; i < gSelectedCols.length; i++) {
if (gSelectedCols[i] == ColName)
bExists = true;
}
if (bExists)
return false; // don't need to fetch new data
else
return true; // need to fetch because it's a new column
}
function ToggleDropDownSelect(SelectedDiv, ColNum)
{
var sColName = "";
var tickCount = 0;
dropDown_ToggleTickByID(SelectedDiv.id);
tickCount = dropDown_GetTickCount("dropDown_viewOptions");
if (tickCount == 0)
{
// no columns selected so we'll bail
dropDown_ToggleTickByID(SelectedDiv.id); // toggle back to previous tick state
ShowAlert(t_("[ME_TXT-Error]"), t_("[ME_TXT-YouNeedToSelectAtLeast1Column]"), true);
return;
}
if (SelectedDiv.firstChild.className == DROPDOWN_BLANK_CLASS)
{
HideCol(ColNum);
SetColClasses();
}
else {
// if the column does not current exist then we need to go fetch the data
// for it from the server via an ajax request.
ShowCol(ColNum);
// fetch the new data if selected column was not in the original fetch
sColName = SelectedDiv.id;
if (NeedDataFetch(sColName)) {
GetData(GetCurrentSource());
}
else {
SetColClasses();
}
}
}
function GetCurrentSource()
{
var ddSource = document.getElementById('ddSource');
if (ddSource) {
return ddSource.options[ddSource.selectedIndex].value;
}
return -1; // default
}
function GetNumSelectedCols() {
var num = 0;
var ddViewOptions = document.getElementById("dropDown_viewOptions");
var oListItem;
var oItems;
var sColNames = "";
if (ddViewOptions) {
oItems = ddViewOptions.getElementsByTagName("div");
// loop through our divs
for (var i = 0; i < oItems.length; i++) {
oListItem = oItems[i].firstChild;
// see if it is a ticked one
if (oListItem.className.indexOf(DROPDOWN_TICK_CLASS) != -1)
{
num++;
}
}
}
return num;
}
function GetSelectedColumnNames() {
// Returns a string of selected column names (i.e. has tick next to the name)
// from the View Options drop down menu.
var ddViewOptions = document.getElementById("dropDown_viewOptions");
var oListItem;
var oItems;
var sColNames = "";
if (ddViewOptions) {
oItems = ddViewOptions.getElementsByTagName("div");
gSelectedCols = [];
// loop through our divs
for (var i = 0; i < oItems.length; i++) {
oListItem = oItems[i].firstChild;
// see if it is a ticked one
if (oListItem.className.indexOf(DROPDOWN_TICK_CLASS) != -1)
{
sColNames += oListItem.parentNode.id;
gSelectedCols.push(oListItem.parentNode.id);
if (i < oItems.length - 1) sColNames += ",";
}
}
if (sColNames.charAt(sColNames.length - 1) == ',') {
sColNames = sColNames.substring(0, sColNames.length - 1);
}
}
return sColNames;
}
function GetSortColName() {
var iNumCols = $('table.' + DATA_TABLE_HEAD_CLASS + ' td').length;
var sArrowClass = "";
// loop through the columns (cells in the table header), starting from the 3rd column
for (var i = 2; i < iNumCols; i++)
{
// get the arrow style (up/down)
sArrowClass = $('table.' + DATA_TABLE_HEAD_CLASS + ' tr').children('td').eq(i).children('div').children(':eq(1)').attr('class');
if (sArrowClass == ARROW_CLASS_UP_SELECTED || sArrowClass == ARROW_CLASS_DOWN_SELECTED)
{
return $('table.' + DATA_TABLE_HEAD_CLASS + ' tr').children('td').eq(i).attr('id');
}
}
return "Email"; // return a default value
}
function GetSortColOrder() {
var iNumCols = $('table.' + DATA_TABLE_HEAD_CLASS + ' td').length;
var sArrowClass = "";
// loop through the columns (cells in the table header)
for (var i = 2; i < iNumCols; i++) {
// get the arrow style
sArrowClass = $('table.' + DATA_TABLE_HEAD_CLASS + ' tr').children('td').eq(i).children('div').children(':eq(1)').attr('class');
if (sArrowClass == ARROW_CLASS_UP_SELECTED) {
gSortOrder = SORT_ORDER_ASC;
}
if (sArrowClass == ARROW_CLASS_DOWN_SELECTED) {
gSortOrder = SORT_ORDER_DESC;
}
}
return gSortOrder; // must be the group column header that was clicked
}
function LoadCurAddresses() {
var sAddrTo = "<%=ParseRequestArgument("AddressesTo")%>";
var sAddrCc = "<%=ParseRequestArgument("AddressesCc")%>";
var sAddrBcc = "<%=ParseRequestArgument("AddressesBcc")%>";
var CCRow = document.getElementById('CCRow');
var BCCRow = document.getElementById('BCCRow');
var CCFieldProvided = "<%=ParseRequestArgument("FieldCc")%>" != "";
var BCCFieldProvided = "<%=ParseRequestArgument("FieldBcc")%>" != "";
CCRow.style.display = (CCFieldProvided ? '' : 'none');
BCCRow.style.display = (BCCFieldProvided ? '' : 'none');
try {
document.getElementById('contacts_to').value = sAddrTo;
document.getElementById('contacts_cc').value = sAddrCc;
document.getElementById('contacts_bcc').value = sAddrBcc;
} catch (err) { }
}
function GetData(Source, Filter, SortColName)
{
if (Source == SOURCE_GLOBAL_ADDRESS_LIST) {
ListAddressbook(SOURCE_GLOBAL_ADDRESS_LIST, Filter, SortColName);
}
else {
ListAddressbook(SOURCE_CONTACTS, Filter, SortColName);
}
}
function GetDataString(Filter, SortColName)
{
var sData = "";
var sSelectedColumns = GetSelectedColumnNames();
// append the selected column names
sData += "Columns=" + sSelectedColumns;
// append the sort data
if (SortColName && SortColName.length > 0)
sData += "&SortField=" + SortColName + "&SortOrder=" + GetSortColOrder();
else
sData += "&SortField=" + GetSortColName() + "&SortOrder=" + GetSortColOrder();
if (Filter) {
sData += "&Filter=" + Filter;
}
return sData;
}
function ListAddressbook(Source, Filter, SortColName)
{
var sData = GetDataString(Filter, SortColName);
sData += '&Source=' + Source;
sData += '&View=' + gView;
sData += '&Folder=' + JSEscapeStr(encodeURIComponent(CurrentFolder));
ClearList();
ShowWait();
window.setTimeout(function() { ServerRequest('LIST-ADDRESSBOOK', sData, true, ""); }, 1000);
}
function SourceChange(DdSource)
{
CurrentFolder = DdSource.options[DdSource.selectedIndex].value;
iSource = 0;
<% If gDirectoryEnabled %>
if (DdSource.selectedIndex == 1) iSource = 1;
<% End If %>
ListAddressbook(iSource);
}
function ShowAlert(Title, Message, IsWarning)
{
if (oAlertDialog != null)
{
oAlertDialog.Alert(Title, Message, IsWarning);
}
else
{
alert(Message);
}
}
function ServerRequest(Command, Data, UseCallback, FrameName)
{
return LIBAjax_ServerRequest(Command, Data, UseCallback, FrameName);
}
function ProcessXMLResult(ResponseXML, FrameName)
{
var BaseNode = ResponseXML.getElementsByTagName("BASEELEMENT")[0];
if (BaseNode == null) {
ShowAlert("Server failure!", "Server failure!", true);
return false;
}
var oSchema = BaseNode.attributes.getNamedItem('SCHEMA');
var oMethod = BaseNode.attributes.getNamedItem('METHOD');
if (oSchema) {
sSchema = GetXMLValue(oSchema);
}
if (oMethod) {
sMethod = GetXMLValue(oMethod);
}
if (sSchema == 'RESULT') {
if (sMethod == 'LIST-ADDRESSBOOK') {
ProcessContactEntries(BaseNode);
gSelectedIM.Clear();
}
HideWait();
}
return true;
}
function ProcessContactEntries(BaseNode)
{
var sContactID, sFullName, sNickname, sEmail, sBusiness, sPhoneM;
var iItemsArraySize = 0;
var XMLNode, XMLNodeAttributes;
var bIsGroup = false;
var oTable, oTBody;
oTable = document.getElementById('tblContacts');
if (!oTable) return;
try
{
oTBody = oTable.getElementsByTagName("TBODY")[0];
}
catch (ex) { }
if (!oTBody)
{
oTBody = document.createElement("TBODY");
oTable.appendChild(oTBody);
}
var _this = this;
ShowAllColumns(); // so we can populate all the available columns
var errCode = 0;
if (BaseNode.getElementsByTagName('ERROR_VALUE'))
{
errCode = GetXMLValue(BaseNode.getElementsByTagName('ERROR_VALUE')[0]);
if (errCode == 3)
{
var ErrorMessage = t_('[ME_TXT-AddressBookRecordSetTooLarge]');
var tr = oTBody.appendChild(document.createElement('tr'));
var td = tr.appendChild(document.createElement('td'));
td.className = 'dataTable_errorMessage';
td.appendChild(document.createTextNode(ErrorMessage));
}
}
if (!errCode)
{
if (BaseNode.getElementsByTagName('ELEMENT'))
{
iItemsArraySize = BaseNode.getElementsByTagName('ELEMENT').length;
gABrowcount = iItemsArraySize;
}
for (var i = 0; i < iItemsArraySize; i++) {
XMLNode = BaseNode.childNodes[i];
XMLNodeAttributes = XMLNode.attributes;
sContactID = GetXMLValue(XMLNodeAttributes.getNamedItem('ID'));
ObjectType = GetXMLValue(XMLNode.getElementsByTagName('TYPE')[0]);
if (ObjectType == 20) {
bIsGroup = true;
}
else {
bIsGroup = false;
}
sFullName = GetXMLValue(XMLNode.getElementsByTagName("FULLNAME")[0]);
sNickname = GetXMLValue(XMLNode.getElementsByTagName("NICKNAME")[0]);
sEmail = GetXMLValue(XMLNode.getElementsByTagName("EMAIL")[0]);
sBusiness = GetXMLValue(XMLNode.getElementsByTagName("BUSINESS")[0]);
sPhoneM = GetXMLValue(XMLNode.getElementsByTagName("PHONEM")[0]);
// create new row for the contact
var oRow = document.createElement('TR');
var oRowTD = document.createElement('TD');
var oTbl = document.createElement('TABLE');
var oTblRow = document.createElement('TR');
var oTblBody = document.createElement('TBODY');
oRow.id = sContactID;
oTbl.border = 0;
oTbl.cellSpacing = 0;
oTbl.cellPadding = 0;
if ((i % 2) != 0) {
oTbl.className = ROW_TABLE_CLASS_BORDERED;
}
else {
oTbl.className = ROW_TABLE_CLASS_NORMAL;
}
// the select checkbox
var oTD = document.createElement('TD');
oTD.className = COL_CLASS_TICKBOX;
var oChk = document.createElement('INPUT');
var sChkID = 'chk_' + sContactID;
oChk.id = sChkID;
oChk.type = 'CHECKBOX';
oChk.onclick = function(ev) {
ev = ev || window.event;
var target = ev.target || ev.srcElement;
target.checked = !target.checked;
};
var sKeyCol = sEmail;
if (gView == 'Mobile') {
sKeyCol = sPhoneM;
}
oRow.onclick = new Function("RowClick('" + sChkID.replace(/\'/g, "\\'") + "', '" + sContactID.replace(/\'/g, "\\'") + "', '" + sKeyCol.replace(/\'/g, "\\'") + "');");
oTD.appendChild(oChk);
oTblRow.appendChild(oTD);
// group icon
oTD = document.createElement('TD');
oTD.className = COL_CLASS_GROUP;
if (bIsGroup) {
var oGrpDiv = document.createElement('DIV');
oGrpDiv.className = COL_CLASS_ICON_GROUP;
oTD.title = "Group";
oTD.appendChild(oGrpDiv);
}
oTblRow.appendChild(oTD);
// full name
oTD = document.createElement('TD');
if (bIsGroup)
oTD.className = COL_CLASS_GROUP_NAME;
else
oTD.className = COL_CLASS_FULLNAME;
oTD.appendChild(document.createTextNode(sFullName));
oTD.title = sFullName;
oTblRow.appendChild(oTD);
// nickname
oTD = document.createElement('TD');
oTD.className = COL_CLASS_TEXT;
oTD.appendChild(document.createTextNode(sNickname));
oTD.title = sNickname;
oTblRow.appendChild(oTD);
// email address
oTD = document.createElement('TD');
oTD.className = COL_CLASS_EMAIL;
if (bIsGroup)
oTD.appendChild(document.createTextNode("(Various)"));
else
oTD.appendChild(document.createTextNode(sEmail));
oTD.title = sEmail;
oTblRow.appendChild(oTD);
// business
oTD = document.createElement('TD');
oTD.className = COL_CLASS_TEXT;
oTD.appendChild(document.createTextNode(sBusiness));
oTD.title = sBusiness;
oTblRow.appendChild(oTD);
// phoneM
oTD = document.createElement('TD');
oTD.className = COL_CLASS_LAST;
oTD.appendChild(document.createTextNode(sPhoneM));
oTD.title = sBusiness;
oTblRow.appendChild(oTD);
// now add the row to our table
oTblBody.appendChild(oTblRow);
oTbl.appendChild(oTblBody);
oRowTD.appendChild(oTbl);
oRow.appendChild(oRowTD);
// append the new table row to our existing table
oTBody.appendChild(oRow);
}
}
ShowHideColumns();
SetColClasses();
gNumSelectedCol = GetNumSelectedCols();
}
function ShowHideColumns()
{
//
// we'll loop through the drop down list (View Options) and inspect
// the selected (ticked) and hide the relevant columns
//
var ddViewOptions = document.getElementById("dropDown_viewOptions");
var oListItem;
var oItems;
var sColNames = "";
if (ddViewOptions) {
oItems = ddViewOptions.getElementsByTagName("div");
// loop through our divs
var numCols = oItems.length;
var lastColIndex = 0;
var index = 0;
for (var i = 0; i < numCols; i++) {
index = i + 3; // plus 3 because our 1st column index is 1 (and we don't hide the first 2 columns)
oListItem = oItems[i].firstChild;
if (oListItem.className == DROPDOWN_BLANK_CLASS)
{
// hide the column
HideCol(index);
}
else {
lastColIndex = index - 1;
}
}
}
}
function ClearList() {
// remove any existing rows from our table using jQuery
$('table.' + DATA_TABLE_CLASS + '').find("tr").remove();
}
function SetSelectAllCheckbox(Chkbox) {
if (Chkbox.checked) {
SelectAllRows(true);
}
else {
// need to clear any previously selected addresses
gSelectedIM.Clear();
SelectAllRows(false);
}
}
function SelectAllRows(Selected)
{
var sItemID, sEmail;
var iKeyColumn = 4; // get Email value (4th column)
if (gView == 'Mobile') {
iKeyColumn = 6; // mobile is 6th
}
// loop through each row in our contacts table (but only select the row of the immediate table;
// ignoring rows in the sub table)
$('table.' + DATA_TABLE_CLASS + ' > tbody > tr').each(function() // this way is faster than using '.children'
//$('table.' + DATA_TABLE_CLASS).children('tr').each(function()
{
// set the checkbox checked status
$(this).find('td:first table input').prop('checked', Selected);
sItemID = $(this).attr('id');
sEmail = $(this).find('td:first table tr').find('td').eq(4).text();
// also set the style for selected row...
if (Selected)
{
$(this).attr('class', ROW_CLASS_SELECTED);
// add the selected Contact ID/email to our SelectedItems
gSelectedIM.AddItem(sItemID, sEmail);
}
else
{
$(this).attr('class', ROW_CLASS_UNSELECTED);
// remove the selected Contact ID/email from our SelectedItems
gSelectedIM.RemoveItem(sItemID);
}
});
}
function RowSelect(RowID, Email, Selected) {
try {
var oRow = document.getElementById(RowID);
var oTable = oRow.getElementsByTagName("TABLE")[0];
var sRowClass = "";
var sTableClass = "";
if (Selected) {
sRowClass = ROW_CLASS_SELECTED;
// also append the selected style (background color highlight)
// on the inner table so that the mouseover will also show the
// row as highlighted.
sTableClass = oTable.className + " " + TABLE_CLASS_SELECTED;
// add Contact ID to our SelectedItems list
gSelectedIM.AddItem(RowID, Email);
}
else {
sRowClass = ROW_CLASS_UNSELECTED;
// remove the selected style (background color highlight)
var sRegExStr = " " + TABLE_CLASS_SELECTED;
sTableClass = oTable.className.replace(sRegExStr, "");
// remove Contact ID from our SelectedItems list
gSelectedIM.RemoveItem(RowID);
}
oRow.className = sRowClass;
oTable.className = sTableClass;
}
catch (ex) { }
}
function RowClick(ChkBoxID, RowID, Email) {
try {
var oChkbox = document.getElementById(ChkBoxID);
oChkbox.checked = !oChkbox.checked;
RowSelect(RowID, Email, oChkbox.checked);
return 1;
}
catch (ex) { return 0; }
}
function ToggleSortOrder()
{
if (gSortOrder == SORT_ORDER_ASC)
gSortOrder = SORT_ORDER_DESC;
else
gSortOrder = SORT_ORDER_ASC;
}
function ToggleColSort(HeaderDiv, ColNum) {
if (HeaderDiv.childNodes.length > 0) {
if (HeaderDiv.getElementsByTagName("div")[1].className == ARROW_CLASS_BLANK) {
HeaderDiv.getElementsByTagName("div")[1].className = ARROW_CLASS_UP_SELECTED;
gSortOrder = SORT_ORDER_ASC;
}
else if (HeaderDiv.getElementsByTagName("div")[1].className == ARROW_CLASS_UP_SELECTED) {
HeaderDiv.getElementsByTagName("div")[1].className = ARROW_CLASS_DOWN_SELECTED;
gSortOrder = SORT_ORDER_DESC;
}
else if (HeaderDiv.getElementsByTagName("div")[1].className == ARROW_CLASS_DOWN_SELECTED) {
HeaderDiv.getElementsByTagName("div")[1].className = ARROW_CLASS_UP_SELECTED;
gSortOrder = SORT_ORDER_ASC;
}
}
else {
ToggleSortOrder();
}
// reset the arrow style for the other columns
var iNumCols = $('table.' + DATA_TABLE_HEAD_CLASS + ' td').length;
for (var i = 2; i < iNumCols; i++)
{
if (i != (ColNum - 1)) {
$('table.' + DATA_TABLE_HEAD_CLASS + ' tr').children('td').eq(i).children('div').children(':eq(1)').attr('class', ARROW_CLASS_BLANK);
}
}
var sSearchStr = "";
if (gSearchStrInputed)
sSearchStr = document.getElementById('txtSearch').value;
// now fetch all the contacts again in the sort order specified
GetData(GetCurrentSource(), sSearchStr, HeaderDiv.parentNode.id);
}
function GetSelectedEmails()
{
// This function returns a list (semicolon separated) of email addresses
// that have been selected in the list.
var items = gSelectedIM.GetItems();
var count = 0;
var sSelectedIDs = "";
var sb = new StringBuffer();
for (var id in items) {
if (count > 0) {
sb.append(";");
}
sb.append(items[id]);
count++;
}
sSelectedIDs = sb.toString();
return sSelectedIDs;
}
function AppendAddresses(TextFieldID)
{
var oTxtField = document.getElementById(TextFieldID);
if (oTxtField) {
var sEmails = GetSelectedEmails();
if (oTxtField.value.length > 0 && sEmails.length > 0)
oTxtField.value += ";";
oTxtField.value += sEmails;
}
}
function ClearSearch()
{
var oSearchField = document.getElementById('txtSearch');
var PrevSearch = oSearchField.value;
if (oSearchField)
{
oSearchField.value = "";
}
if (PrevSearch)
{
// after clearing search term, need to execute the empty search to clear back to the full list
DoSearch();
}
}
function CloseWindow() {
window.close();
}
function Finish() {
// performs any required action when the user has clicked on the OK button
if (window.opener)
{
var fieldTo = '<%=ParseRequestArgument("FieldTo")%>';
var fieldCc = '<%=ParseRequestArgument("FieldCc")%>';
var fieldBcc = '<%=ParseRequestArgument("FieldBcc")%>';
if (fieldTo != '') {
var oFieldTo = window.opener.document.getElementById(fieldTo);
if (oFieldTo) {
var sAddrTo = document.getElementById('contacts_to').value;
oFieldTo.value = sAddrTo;
}
}
if (fieldCc != '') {
var oFieldCc = window.opener.document.getElementById(fieldCc);
if (oFieldCc) {
var sAddrCc = document.getElementById('contacts_cc').value;
oFieldCc.value = sAddrCc;
}
}
if (fieldBcc != '') {
var oFieldBcc = window.opener.document.getElementById(fieldBcc);
if (oFieldBcc) {
var sAddrBcc = document.getElementById('contacts_bcc').value;
oFieldBcc.value = sAddrBcc;
}
}
}
CloseWindow();
}
var gSearchStrInputed = false;
function ClearSearchField() {
SetFieldValue("txtSearch", "");
}
function SetSearchFieldInputClass(Enabled) {
// clear the search text field and set applicable style for the input string
var txtField = document.getElementById("txtSearch");
if (txtField) {
if (Enabled)
txtField.parentNode.className = SEARCH_CLASS_NORMAL;
else
txtField.parentNode.className = SEARCH_CLASS_INITIAL;
}
}
function txtSearchClick() {
// handles the click event on the search text field
if (!gSearchStrInputed) {
gSearchStrInputed = true;
if (!HasFocus("txtSearch")) {
ClearSearchField();
SetFieldFocus("txtSearch");
SetSearchFieldInputClass(true);
}
}
return true;
}
function PerformSearch(EventObj) {
if (IsEnterKey(EventObj) == true) {
DoSearch();
}
return true;
}
function SearchFieldChanged() {
gSearchStrInputed = true;
}
function SearchBtnClicked() {
if (!gSearchStrInputed) {
ClearSearchField();
SetSearchFieldInputClass(true);
SetFieldFocus("txtSearch");
return true;
}
else {
// otherwise perform the search if we have focus on the text field
DoSearch();
}
}
function DoSearch() {
// clear our selected items list
gSelectedIM.Clear();
SetSelectAllCheckbox(false);
var sSearchStr = document.getElementById('txtSearch').value;
GetData(GetCurrentSource(), sSearchStr);
}
// -->
</script>
<!--[if lte IE 7]>
<style type="text/css">
.bttn_dropDown_right {float:left;}
.bttn_right {float:left;}
.dataTable_table thead td {margin:0;padding-top:3px;padding-bottom:3px;}
.dataTable_table {margin:0;padding-top:0px;padding-bottom:0px;}
.dataTable_listTable {margin:0;padding-top:0px;padding-bottom:0px;}
.dataTable_listTable_bordered {margin:0;padding-top:0px;padding-bottom:0px;}
.dataTable_listTable input {margin:0;padding:0;height:14px;}
.dataTable_listTable_bordered input {margin:0;padding-top:0px;padding-bottom:0px;height:14px;}
</style>
<![endif]-->
<!--[if IE 8]>
<style type="text/css">
.dropDown_shell_right {position:absolute;top:0px;right:64px !important;width:170px;}
</style>
<![endif]-->
<!--[if IE]>
<style type="text/css">
.bttn_dropDown2_shell {width:70px;}
.bttn_dropDown2_left {width:45px;text-align:center;}
#dropDown_viewOptions {width:120px;}
#dropDown_viewOptions ul {width:100%;}
#dropDown_viewOptions li {width:100%;}
</style>
<![endif]-->
</head>
<body onload="PageLoad()" style="overflow-x:hidden;">
<form id="frmAB" runat="server">
<table class="popupWin_shell_table" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="popupWin_shad_topLeft"><div class="popupWin_shad_topLeft_div"></div></td>
<td class="popupWin_shad_top"> </td>
<td class="popupWin_shad_topRight"> </td>
</tr>
<tr>
<td class="popupWin_shad_left"> </td>
<td class="popupWin_shad_body">
<table class="popupWin_table" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="popupWin_topLeft"> </td>
<td class="popupWin_top">
<table class="popupWin_topBar_table" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="popupWin_topBar_table_left">
<div class="popupWin_top_div" onselectstart="return false;">
<h1><%=uscToken.GetText("[ME_TXT-AddressBook]")%></h1>
</div>
</td>
<td class="popupWin_topBar_table_right"><div class="popupWin_bttn_close" onclick="CloseWindow()" title="<%=uscToken.GetText("[ME_TXT-Close]")%>" ></div></td>
</tr>
</table>
</td>
<td class="popupWin_topRight"> </td>
</tr>
<tr>
<td class="popupWin_left"> </td>
<td class="popupWin_body">
<!-- Content -->
<div class="popupWin_body_shell">
<table class="popupWin_body_table" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<asp:dropdownlist id="dlFolder" Runat="server" name="ddFolder" onchange="SourceChange(this);"></asp:dropdownlist>
</td>
</tr>
<tr>
<td>
<div class="popupWin_search_table_shell">
<table class="popupWin_search_table" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="popupWin_search_table_left">
<div class="popupWin_search_field_shell">
<div class="popupWin_search_field_left"></div>
<div class="popupWin_search_field_body">
<div class="search_bttn" title="Search" onclick="SearchBtnClicked();"></div>
<div class="popupWin_search_form_initial"><input id="txtSearch" type="text" value="<%=uscToken.GetText("[ME_TXT-EnterSearchHere]")%>..." onclick="txtSearchClick()" onkeypress="return PerformSearch(event);" onchange="SearchFieldChanged();"/></div>
<div class="search_close_bttn" onclick="ClearSearch();"></div>
</div>
<div class="popupWin_search_field_right"></div>
</div>
</td>
<td class="popupWin_search_table_right">
<div class="bttn_dropDown2_shell" id="toolbar_primary_bttn_right_js" onclick="dropDown_toggleDisplay('dropDown_view')" style="float:right;">
<div class="bttn_dropDown2_shell_inner">
<div class="bttn_dropDown2_left" onselectstart="return false;"><%=uscToken.GetText("[ME_TXT-View]")%></div>
<div class="bttn_dropDown2_right"></div>
</div>
</div>
<div class="clear_div"></div>
<!-- Drop down menu: View Options... -->
<div class="dropDown_shell_right checklist addressBook" id="dropDown_view" onmouseover="dropDown_over('dropDown_view')" onmouseout="dropDown_out(event, 'dropDown_view')">
<div id="dropDown_viewOptions">
<ul>
<div id="FullName" class="dropDown_item" onclick="ToggleDropDownSelect(this, 3);"><li class="dropDown_icon_tick"><%=uscToken.GetText("[ME_TXT-FullName]")%></li></div>
<div id="Nickname" class="dropDown_item" onclick="ToggleDropDownSelect(this, 4);"><li class="dropDown_icon_blank"><%=uscToken.GetText("[ME_TXT-Nickname]")%></li></div>
<div id="Email" class="dropDown_item" onclick="ToggleDropDownSelect(this, 5);"><li class="dropDown_icon_tick"><%=uscToken.GetText("[ME_TXT-Email]")%></li></div>
<div id="Business" class="dropDown_item" onclick="ToggleDropDownSelect(this, 6);"><li class="dropDown_icon_blank"><%=uscToken.GetText("[ME_TXT-Business]")%></li></div>
<div id="PhoneM" class="dropDown_item" onclick="ToggleDropDownSelect(this, 7);"><li class="<%=IIf(GetView()="Mobile","dropDown_icon_tick","dropDown_icon_blank") %>"><%=uscToken.GetText("[ME_TXT-Phone(M)]")%></li></div>
</ul>
</div>
<div class="dropDown_shell_pointer"></div>
</div>
</td>
</tr>
</table><!-- popupWin_search_table -->
</div><!-- popupWin_search_table_shell -->
</td>
</tr>
<tr>
<td>
<div class="dataTable2_shell">
<div class="dataTable_table_head_shell">
<table class="dataTable_table_head" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<div class="dataTable_table_head_shell_inner" id="divHeader">
<table class="dataTable2_table_head" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="dataTable_tickbox head"><input id="contacts_tickbox" type="checkbox" value="" title="<%=uscToken.GetText("[ME_TXT-Select/DeselectAll]")%>" onclick="SetSelectAllCheckbox(this);"/></td>
<td class="dataTable_icon" id="ContactGroup"><div class="dataTable_icon_group_head" title="<%=uscToken.GetText("[ME_TXT-SortBy]")%> [ME_TXT-Group]" onclick="ToggleColSort(this, 2)"></div></td>
<td class="dataTable_name" id="FullName" title="<%=uscToken.GetText("[ME_TXT-SortByFullName]")%>">
<div class="tableHead_bttn_shell" onclick="ToggleColSort(this, 3)">
<div class="tableHead_bttn_txt"><%=uscToken.GetText("[ME_TXT-FullName]")%></div>
<div class="tableHead_bttn_arrow_up_selected"></div>
</div>
</td>
<td class="dataTable_name" id="Nickname" title="<%=uscToken.GetText("[ME_TXT-SortByNickname]")%>">
<div class="tableHead_bttn_shell" onclick="ToggleColSort(this, 4)">
<div class="tableHead_bttn_txt"><%=uscToken.GetText("[ME_TXT-Nickname]")%></div>
<div class="tableHead_bttn_arrow"></div>
</div>
</td>
<td class="dataTable_name" id="Email" title="<%=uscToken.GetText("[ME_TXT-SortByEmailAddress]")%>">
<div class="tableHead_bttn_shell" onclick="ToggleColSort(this, 5)">
<div class="tableHead_bttn_txt"><%=uscToken.GetText("[ME_TXT-EmailAddress]")%></div>
<div class="tableHead_bttn_arrow"></div>
</div>
</td>
<td class="dataTable_noWidth" id="Business" title="<%=uscToken.GetText("[ME_TXT-SortBy]")%> [ME_TXT-Business]">
<div class="tableHead_bttn_shell" onclick="ToggleColSort(this, 6)">
<div class="tableHead_bttn_txt"><%=uscToken.GetText("[ME_TXT-Business]")%></div>
<div class="tableHead_bttn_arrow"></div>
</div>
</td>
<td class="dataTable_noWidth" id="Td1" title="<%=uscToken.GetText("[ME_TXT-SortBy]")%> [ME_TXT-Phone(M)]">
<div class="tableHead_bttn_shell" onclick="ToggleColSort(this, 6)">
<div class="tableHead_bttn_txt"><%=uscToken.GetText("[ME_TXT-Phone(M)]")%></div>
<div class="tableHead_bttn_arrow"></div>
</div>
</td>
</tr>
</table>
</div><!-- dataTable_table_head_shell_inner -->
</td>
<td class="dataTable_table_head_right"></td>
</tr>
</table>
</div><!-- dataTable_table_head_shell -->
<!-- Contacts data table -->
<div class="dataTable_body_shell" id="table_div" onscroll="FnScroll()" >
<div class="dataTable_shell_inner">
<table class="dataTable_table" id="tblContacts" border="0" cellspacing="0" cellpadding="0">
<tbody></tbody>
</table><!-- dataTable_table -->
</div>
</div><!-- dataTable_table_body_shell -->
</div><!-- dataTable_shell -->
</td>
</tr>
<tr>
<td>
<table class="popupContacts_input_table" cellpadding="0" cellspace="0" border="0">
<tr>
<td class="popupContacts_input_table_left">
<div class="bttn_float_left" onclick="AppendAddresses('contacts_to')">
<div class="bttn_left"><div class="compose_bttn_txt"><%=uscToken.GetText("[ME_TXT-To]")%> ></div></div>
<div class="bttn_right"></div>
</div>
</td>
<td><input id="contacts_to" class="textfield" type="text"/></td>
</tr>
<tr id="CCRow">
<td>
<div class="bttn_float_left" onclick="AppendAddresses('contacts_cc')">
<div class="bttn_left"><div class="compose_bttn_txt"><%=uscToken.GetText("[ME_TXT-CC]")%> ></div></div>
<div class="bttn_right"></div>
</div>
</td>
<td><input id="contacts_cc" class="textfield" type="text"/></td>
</tr>
<tr id="BCCRow">
<td>
<div class="bttn_float_left" onclick="AppendAddresses('contacts_bcc')">
<div class="bttn_left"><div class="compose_bttn_txt"><%=uscToken.GetText("[ME_TXT-Bcc]")%> ></div></div>
<div class="bttn_right"></div>
</div>
</td>
<td><input id="contacts_bcc" class="textfield" type="text"/></td>
</tr>
</table><!-- dataTable_input_table -->
</td>
</tr>
<tr>
<td>
<div class="popupWin_foot_bttns noPadding">
<div class="bttn_float_right" onclick="CloseWindow();">
<div class="bttn_left" onselectstart="return false;"><div class="compose_bttn_okCancel"><%=uscToken.GetText("[ME_TXT-Cancel]")%></div></div>
<div class="bttn_right"></div>
</div>
<div class="bttn_float_right" onclick="Finish();">
<div class="bttn_left" onselectstart="return false;"><div class="compose_bttn_okCancel"><%=uscToken.GetText("[ME_TXT-OK]")%></div></div>
<div class="bttn_right"></div>
</div>
</div>
</td>
</tr>
</table><!-- popupWin_body_table -->
</div>
</td>
<td class="popupWin_right"> </td>
</tr>
<tr>
<td class="popupWin_botLeft"><div class="popupWin_botLeft_div"></div></td>
<td class="popupWin_bot"> </td>
<td class="popupWin_botRight"> </td>
</tr>
</table><!-- popupWin_table -->
</td>
<td class="popupWin_shad_right"> </td>
</tr>
<tr>
<td class="popupWin_shad_botLeft"><div class="popupWin_shad_botLeft_div"></div></td>
<td class="popupWin_shad_bot"> </td>
<td class="popupWin_shad_botRight"> </td>
</tr>
</table><!-- popupWin_shell_table -->
</form>
</body>
</html>