<%@ Page Title="" Language="C#" MasterPageFile="~/IronIntelMasterPage.master" AutoEventWireup="true" CodeFile="JobsiteLimitManagement.aspx.cs" Inherits="JobsiteLimitManagement" %> <asp:Content ID="Content1" ContentPlaceHolderID="holder_head" runat="Server"> <style type="text/css"> .selectinput { width: 150px; margin-right: 10px; } .no_wrap th { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .max160 { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dialog-content table { border-collapse: collapse; width: 100%; line-height: 32px; } .dialog-content table td.label { width: 124px; text-align: right; padding-right: 10px; line-height: 24px; height: 24px; vertical-align: top; } .dialog-content table td input, .dialog-content table td textarea { border: 1px solid #a9a9a9; width: 250px; height: 18px; padding: 1px; } .dialog-content table td select { width: 254px; height: 24px; } .dialog-content table td input[type="checkbox"] { border: none; } .dialog-content table td textarea { height: 100px; max-width: 200px; } #dialog_user_randompass { width: auto; height: 16px; margin: 3px 4px 0 4px; } .ctl_button { font-family: 'CalciteWebCoreIcons'; display: block; margin: 6px auto; width: 60px; height: 22px; line-height: 21px; padding: 0; } #dialog_machinegroup { z-index: 500; width: 870px; top: 60px; left: 150px; } .inputbox { width: 500px; padding: 1px; } .group_table .main_table { table-layout: fixed; } .group_table .main_table thead tr { display: block; } .group_table .main_table tbody { height: 280px; display: block; overflow-y: auto; } .group_table .main_table th { width: 165px; } .group_table .main_table td { width: 165px; white-space: nowrap; word-break: keep-all; } .group_table .main_table td div { width: 165px; overflow: hidden; white-space: nowrap; word-break: keep-all; text-overflow: ellipsis; } .table_holder { border-collapse: collapse; height: 400px; } .table_holder thead th { text-align: left; } .table_holder tbody tr { line-height: 28px; height: 28px; } .table_holder td { vertical-align: top; } .table_holder .td_controller { vertical-align: middle; padding: 40px 8px; } .table_holder .scroller { height: 400px; overflow-y: auto; width: 410px; } .ctl_button { font-family: 'CalciteWebCoreIcons'; display: block; margin: 6px auto; width: 60px; height: 22px; line-height: 21px; padding: 0; } .machine_filter { height: 32px; line-height: 32px; } .machine_filter select { height: 23px; min-width: 100px; max-width: 300px; } .machine_filter span { margin-left: 8px; } .ybutton { width: auto; line-height: normal; margin-left: 6px; border: none; background: rgb(249, 189, 117); padding: 5px 14px; cursor: pointer; } .ybutton:hover { background: #d7690E; } .machines { /*table-layout: fixed;*/ word-break: keep-all; } .machines td { padding-right: 5px; white-space: nowrap; } .middlechk { width: auto; height: 13px; margin-top: 0px; margin-bottom: 1px; vertical-align: middle; } </style> <script> var IsDealer = <%=IsDealer ?"true":"false"%>; var IsAdmin =<%=IsAdmin ?"true":"false"%>; jobsitelimitquery = function (method, param, callback, error, nolog) { _network.request("JobSite/JobsiteLimitManagement.aspx", -1, method, param, callback, error || function (e) { showAlert(GetTextByKey("P_M3_FAILEDTOLOADDATA", 'Failed to load data: {0}').replace('{0}', e.statusText), GetTextByKey("P_M3_SCHEDULEASSETS", 'Schedule Assets')); }); } function getText(s, flag) { return (s == null) ? (flag ? '<i>null</i>' : '') : htmlencode(s, $('#span_text_holder')).replace(/ /g, ' '); } function trim_str(s) { if (s == null) return ""; else return s.replace(/(^\s*)|(\s*$)/g, ""); } /***************************jobsite limit***************************/ function OnDelete(jl) { if (!jl) { return; } var contractorid = htmlencode($.trim($('#sel_contractor').val())); showConfirm(GetTextByKey("P_M3_DOYOUWANTTODELETETHEJOBSITELIMIT", 'Do you want to delete the Jobsite limit?'), GetTextByKey("P_M3_DELETEJOBSITELIMITCONFIGURATION", 'Delete jobsite limit configuration'), function () { jobsitelimitquery("DeleteJobsiteLimit", contractorid + String.fromCharCode(170) + jl.ID, function (data) { OnRefresh(); }, function (err) { showAlert(GetTextByKey("P_M3_FAILEDTODELETETHISJOBSITELIMIT", 'Failed to delete this jobsite limit.'), GetTextByKey("P_M3_DELETEJOBSITELIMITCONFIGURATION", 'Delete jobsite limit configuration')); }); }); } function ShowDialog(type) { $('#mask_bg').show(); $('#dialog_jobsitelimit') .attr('act', type) .showDialogRight1(450); } //执行iframe中函数 var doIFrameFunc = function (v_mymethod, v_params, v_frmName) { if (document.getElementById(v_frmName)) { var fn = document.getElementById(v_frmName).contentWindow[v_mymethod]; if (fn) { if (v_params == null) return fn(); else { return fn.apply(this, v_params); } } return null; } } function CloseDialog(type) { $('#dialog_jobsitelimit').hideDialog(); OnRefresh(); } function OnAdd() { var contractorid = htmlencode($.trim($('#sel_contractor').val())); doIFrameFunc("init", [contractorid], "iframejobsitelimit"); ShowDialog("add"); } var jlid; function OnEdit() { var jl = grid_dt.source[grid_dt.selectedIndex].Values; if (!jl) { jlid = undefined; return; } jlid = jl.ID; var contractorid = htmlencode($.trim($('#sel_contractor').val())); doIFrameFunc("init", [contractorid, jl], "iframejobsitelimit"); ShowDialog("edit"); } function OnDblClick(e) { OnEdit(); } function OnRefresh() { showloading(true); var contractorid = htmlencode($.trim($('#sel_contractor').val())); var searchtxt = ""; searchtxt = htmlencode($.trim($('#searchinputtxt').val())); jobsitelimitquery("GetJobsiteLimits", contractorid + String.fromCharCode(170) + searchtxt, function (data) { showloading(false); if (typeof (data) === "string") { showAlert(data, GetTextByKey("P_M3_ERROR", 'Error')); return; } showJobsiteLimitList(data); }, function (err) { showloading(false); }); } //admin用户 获取所有contractor function getContractors() { devicerequest('GetContractors', '', function (data) { if (typeof (data) === "string") { showAlert(data, GetTextByKey("P_M3_ERROR", 'Error')); return; } if (data && data.length > 0) { var sel_search = $('#sel_contractor').empty(); for (var i = 0; i < data.length; i++) { var kv = data[i]; var op_search = $('<option></option>').val(kv.Key).text(kv.Value); sel_search.append(op_search); } } OnRefresh(); }); } //普通用户 获取可操作的contractor function GetContractorsByUser() { devicerequest('GetContractorsByUser', '', function (data) { if (typeof (data) === "string") { showAlert(data, GetTextByKey("P_M3_ERROR", 'Error')); return; } if (data && data.length > 0) { var sel_search = $('#sel_contractor').empty(); for (var i = 0; i < data.length; i++) { var kv = data[i]; var op_search = $('<option></option>').val(kv.Key).text(kv.Value); sel_search.append(op_search); } } OnRefresh(); }); } function showJobsiteLimitList(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; for (var j in r) { if (j === "Active") { r[j] = { DisplayValue: r.Active ? "Yes" : "No", Value: r[j] }; } } var fr = { Values: r }; rows.push(fr); } grid_dt.setData(rows); } var grid_dt; function InitGridData() { grid_dt = new GridView('#jobsitelimitlist'); grid_dt.lang = { all: GetTextByKey("P_GRID_ALL", "(All)"), ok: GetTextByKey("P_GRID_OK", "OK"), reset: GetTextByKey("P_GRID_RESET", "Reset") }; var list_columns = [ { name: 'ID', caption: GetTextByKey("P_M3_ID", "ID"), valueIndex: 'ID', css: { 'width': 40, 'text-align': 'left' } }, { name: 'JobSiteName', caption: GetTextByKey("P_M3_JOBSITENAME", "Jobsite Name"), valueIndex: 'JobSiteName', css: { 'width': 200, 'text-align': 'left' } }, { name: 'Active', caption: GetTextByKey("P_M3_ACTIVE", "Active"), valueIndex: 'Active', allowFilter: true, css: { 'width': 70, 'text-align': 'left' } }, { name: 'StartTime', caption: GetTextByKey("P_M3_STARTTIME", "Start Time"), valueIndex: 'StartTime', css: { 'width': 70, 'text-align': 'left' } }, { name: 'EndTime', caption: GetTextByKey("P_M3_ENDTIME", "End Time"), valueIndex: 'EndTime', css: { 'width': 70, 'text-align': 'left' } }, { name: 'MinTrucks', caption: GetTextByKey("P_M3_ACCEPTABLEMINIMUMTRUCKS", "Acceptable Minimum Trucks"), valueIndex: 'MinTrucks', css: { 'width': 170, 'text-align': 'left' } }, { name: 'MaxTrucks', caption: GetTextByKey("P_M3_ACCEPTABLEMAXIMUMTRUCKS", "Acceptable Maximum Trucks"), valueIndex: 'MaxTrucks', css: { 'width': 170, 'text-align': 'left' } }, { name: 'AssetTypeNames', caption: GetTextByKey("P_M3_ACCEPTABLEASSETTYPES", "Acceptable Asset Types"), valueIndex: 'AssetTypeNames', css: { 'width': 200, 'text-align': 'left' } }, { name: 'Notes', caption: GetTextByKey("P_M3_NOTES", "Notes"), valueIndex: 'Notes', css: { 'width': 200, 'text-align': 'left' } }, { name: 'Subscribe', caption: "", css: { 'width': 30, 'text-align': 'center' } }, { name: 'Edit', caption: "", css: { 'width': 30, 'text-align': 'center' } }, { name: 'Delete', caption: "", css: { 'width': 30, 'text-align': 'center' } } ]; var columns = []; // head for (var hd in list_columns) { var col = {}; col.name = list_columns[hd].name; col.caption = list_columns[hd].caption; col.visible = true; col.sortable = true; col.width = list_columns[hd].css.width; col.align = list_columns[hd].css["text-align"] col.allowFilter = list_columns[hd].allowFilter; col.key = list_columns[hd].valueIndex; if (col.name === "Active") { col.filterSource = [{ Value: true, DisplayValue: 'Yes' }, { Value: false, DisplayValue: 'No' }]; } else if (col.name === "Edit") { col.isurl = true; col.text = "\uf044"; col.events = { onclick: function () { OnEdit() } }; col.classFilter = function (e) { return "icon-col"; } col.attrs = { 'title': GetTextByKey("P_M3_EDIT", 'Edit') }; } else if (col.name === "Delete") { col.isurl = true; col.text = "\uf00d"; col.events = { onclick: function () { OnDelete(this); } }; col.classFilter = function (e) { return "icon-col"; }; col.attrs = { 'title': GetTextByKey("P_M3_DELETE", 'Delete') }; } else if (col.name === "Subscribe") { col.isurl = true; col.text = "\uf0e0"; col.events = { onclick: function () { OnSubscribe(this); } }; col.classFilter = function (e) { return "icon-col"; }; col.attrs = { 'title': GetTextByKey("P_M3_SUBSCRIBECONTACTS", 'Subscribe Contacts') }; } columns.push(col); } grid_dt.canMultiSelect = false; grid_dt.columns = columns; grid_dt.init(); grid_dt.rowdblclick = OnEdit; grid_dt.selectedrowchanged = function (rowindex) { var rowdata = grid_dt.source[rowindex]; if (rowdata) { curfewid = rowdata.Values.CurfewID; } } } $(function () { setPageTitle(GetTextByKey("P_OVERUNDERTRUCKINGALERTSCONFIGURATION", "Over/Under Trucking Alerts Configuration"), true); setFavoriteDisplay(true, 550); InitGridData(); InitGridAvailableContacts(); InitGridSelectedContacts(); if (IsDealer == true) { $('#span_contractor').css('display', ''); if (IsAdmin) getContractors(); else { GetContractorsByUser(); } } else OnRefresh(); $("#sel_contractor").change(function () { OnRefresh(); }); $('#dialog_subscribecontacts').dialog(function () { $('#mask_bg').hide(); }); $('#btnsubscribefilter').click(getMatchAvailableContacts); $('#chk_showallassignedcontacts').click(getMatchSelectedContacts); $('#searchinputtxt').keydown(searchEnter); $(window).resize(function () { $("#jobsitelimitlist").css("height", $(window).height() - $("#jobsitelimitlist").offset().top - 4); grid_dt && grid_dt.resize(); }).resize(); }); function searchEnter(e) { if (e.keyCode == 13 || e.keyCode == 9) { OnRefresh(); } } /************************** Subscribe Contacts********************************/ /*************************************************************************/ var allContacts; var _availableContacts = []; var _selectedContacts = []; var _showSelectedContacts = []; function OnSubscribe(jl) { if (!jl) return; $('#chk_showallassignedcontacts').prop('checked', false); $('#txt_contact_key').val(''); jlid = jl.ID; var title = GetTextByKey("P_M3_SUBSCRIBECONTACTS", "Subscribe Contacts"); $('#dialog_subscribecontacts .dialog-title span.title').html(title); $('#mask_bg').show(); $('#dialog_subscribecontacts') .css({ 'top': (document.documentElement.clientHeight - $('#dialog_subscribecontacts').height()) / 5, 'left': (document.documentElement.clientWidth - $('#dialog_subscribecontacts').width()) / 2 }).showDialog(); GetSelectedContacts(); } // 获取已选中的Contacts function GetSelectedContacts() { _selectedContacts = []; $("#subscribedialogmask").show(); jobsitelimitquery('GetSelectedContacts', jlid, function (data) { if (typeof data === "string") { showAlert(data, GetTextByKey("P_M3_SUBSCRIBECONTACTS", "Subscribe Contacts")); return; } _selectedContacts = data; queryContacts(); }, function (e) { $("#subscribedialogmask").hide(); }); } function queryContacts() { $('#btnsubscribefilter').prop('disabled', true); setTimeout(function () { $('#btnsubscribefilter').prop('disabled', false); }, 1000); _availableContacts = []; $("#subscribedialogmask").show(); jobsitelimitquery('GetContactList', '', function (data) { if (typeof data === "string") { showAlert(data, GetTextByKey("P_M3_SUBSCRIBECONTACTS", "Subscribe Contacts")); return; } allContacts = data; getMatchAvailableContacts(); $("#subscribedialogmask").hide(); }, function (e) { $("#subscribedialogmask").hide(); }); } function getMatchAvailableContacts() { getMatchSelectedContacts(); var selected = []; for (var i = 0; i < _showSelectedContacts.length; i++) { var c = _showSelectedContacts[i]; selected.push(c.IID); } var filter = $('#txt_contact_key').val().toLowerCase(); _availableContacts = []; for (var i = 0; i < allContacts.length; i++) { var c = allContacts[i]; if ((filter == "" || c.DisplayName.toLowerCase().indexOf(filter) >= 0) && $.inArray(c.IID, selected) < 0) { _availableContacts.push(c); } } showAvailableContact(_availableContacts); } function getMatchSelectedContacts() { var filter = $('#txt_contact_key').val().toLowerCase(); var showallassigned = $('#chk_showallassignedcontacts').prop('checked'); _showSelectedContacts = []; var unMatched = []; for (var i = 0; i < _selectedContacts.length; i++) { var c = _selectedContacts[i]; c.Highlight = false; if (filter == "" || c.DisplayName.toLowerCase().indexOf(filter) >= 0) { matched = true; c.Highlight = showallassigned && filter !== ""; _showSelectedContacts.push(c); } else if (showallassigned) unMatched.push(c); } for (var i in unMatched) _showSelectedContacts.push(unMatched[i]); showSelectedContact(_showSelectedContacts); } function showContacts() { showAvailableContact(_availableContacts); showSelectedContact(_showSelectedContacts); } function showAvailableContact(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; var fr = { Values: r }; rows.push(fr); } grid_dtac.setData(rows); } function showSelectedContact(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; var fr = { Values: r }; rows.push(fr); } grid_dtsc.setData(rows); } var grid_dtac; function InitGridAvailableContacts() { grid_dtac = new GridView('#availablecontacts'); grid_dtac.lang = { all: GetTextByKey("P_GRID_ALL", "(All)"), ok: GetTextByKey("P_GRID_OK", "OK"), reset: GetTextByKey("P_GRID_RESET", "Reset") }; var list_columns = [ { name: 'DisplayName', caption: GetTextByKey("P_M3_CONTACTNAME", "Contact Name"), valueIndex: 'DisplayName', css: { 'width': 240, 'text-align': 'left' } }, { name: 'ContactTypeName', caption: GetTextByKey("P_M3_CONTACTTYPE", "Contact Type"), valueIndex: 'ContactTypeName', css: { 'width': 150, 'text-align': 'left' } }, ]; var columns = []; // head for (var hd in list_columns) { var col = {}; col.name = list_columns[hd].name; col.caption = list_columns[hd].caption; col.visible = true; col.sortable = true; col.width = list_columns[hd].css.width; col.align = list_columns[hd].css["text-align"] col.key = list_columns[hd].valueIndex; columns.push(col); } grid_dtac.canMultiSelect = true; grid_dtac.columns = columns; grid_dtac.init(); grid_dtac.rowdblclick = function (rowindex) { var rowdata = grid_dtac.source[rowindex]; if (rowdata) { var contact = rowdata.Values; _availableContacts.splice(_availableContacts.indexOf(contact), 1); _selectedContacts.push(contact); _showSelectedContacts.push(contact); showContacts(); } }; grid_dtac.selectedrowchanged = function (rowindex) { var rowdata = grid_dtac.source[rowindex]; if (rowdata) { } } } var grid_dtsc; function InitGridSelectedContacts() { grid_dtsc = new GridView('#selectedcontacts'); grid_dtsc.lang = { all: GetTextByKey("P_GRID_ALL", "(All)"), ok: GetTextByKey("P_GRID_OK", "OK"), reset: GetTextByKey("P_GRID_RESET", "Reset") }; var list_columns = [ { name: 'DisplayName', caption: GetTextByKey("P_M3_CONTACTNAME", "Contact Name"), valueIndex: 'DisplayName', css: { 'width': 240, 'text-align': 'left' } }, { name: 'ContactTypeName', caption: GetTextByKey("P_M3_CONTACTTYPE", "Contact Type"), valueIndex: 'ContactTypeName', css: { 'width': 150, 'text-align': 'left' } }, ]; var columns = []; // head for (var hd in list_columns) { var col = {}; col.name = list_columns[hd].name; col.caption = list_columns[hd].caption; col.visible = true; col.sortable = true; col.width = list_columns[hd].css.width; col.align = list_columns[hd].css["text-align"] col.key = list_columns[hd].valueIndex; col.styleFilter = function (item) { if (item.Highlight) return { 'background-color': 'yellow' }; } columns.push(col); } grid_dtsc.canMultiSelect = true; grid_dtsc.columns = columns; grid_dtsc.init(); grid_dtsc.rowdblclick = function (rowindex) { var rowdata = grid_dtsc.source[rowindex]; if (rowdata) { var contact = rowdata.Values; _selectedContacts.splice(_selectedContacts.indexOf(contact), 1); _showSelectedContacts.splice(_showSelectedContacts.indexOf(contact), 1); _availableContacts.push(contact); showContacts(); } }; grid_dtsc.selectedrowchanged = function (rowindex) { var rowdata = grid_dtsc.source[rowindex]; if (rowdata) { } } } function OnContactEditorAdd() { var indexs = grid_dtac.selectedIndexes; if (indexs.length <= 0) return; for (var i = 0; i < indexs.length; i++) { var index = indexs[i]; var c = grid_dtac.source[index].Values; _availableContacts.splice(_availableContacts.indexOf(c), 1); _selectedContacts.push(c); _showSelectedContacts.push(c); } showContacts(); } function OnContactEditorAddAll() { for (var i = 0; i < _availableContacts.length; i++) { var c = _availableContacts[i]; _selectedContacts.push(c); _showSelectedContacts.push(c); } _availableContacts = []; showContacts(); } function OnContactEditorRemove() { var indexs = grid_dtsc.selectedIndexes; if (indexs.length <= 0) return; for (var i = 0; i < indexs.length; i++) { var index = indexs[i]; var c = grid_dtsc.source[index].Values; _selectedContacts.splice(_selectedContacts.indexOf(c), 1); _showSelectedContacts.splice(_showSelectedContacts.indexOf(c), 1); _availableContacts.push(c); } showContacts(); } function OnContactEditorRemoveAll() { for (var i = 0; i < _showSelectedContacts.length; i++) { var c = _showSelectedContacts[i]; _selectedContacts.splice(_selectedContacts.indexOf(c), 1); _availableContacts.push(c); } _showSelectedContacts = []; showContacts(); } function OnSaveSubscribeContacts() { var uids = []; for (var i = 0; i < _selectedContacts.length; i++) { var j = _selectedContacts[i]; uids.push(j.IID); } showloading(true); jobsitelimitquery("SaveSubscribeContacts", jlid + String.fromCharCode(170) + JSON.stringify(uids), function (data) { showloading(false); if (data !== 'OK') { showAlert(data, GetTextByKey("P_M3_SUBSCRIBECONTACTS", "Subscribe Contacts")); } else { $('#dialog_subscribecontacts').hideDialog(); OnRefresh(); } }, function (err) { console.log(err); showloading(false); showAlert(GetTextByKey("P_M3_FAILEDTOSAVESUBSCRIBECONTACTS", 'Failed to save subscribe contacts.'), GetTextByKey("P_M3_SUBSCRIBECONTACTS", "Subscribe Contacts")); }); } /**************************End Subscribe Contacts********************************/ /*****************************************************************************/ </script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="holder_content" runat="Server"> <div style="min-width: 400px;"> <div class="page_title" data-lgid="P_OVERUNDERTRUCKINGALERTSCONFIGURATION">Over/Under Trucking Alerts Configuration</div> <div class="search_bar"> <input type="password" autocomplete="new-password" style="display: none" /> <span id="span_contractor" style="display: none;"> <span data-lgid="P_M3_CONTRACTOR_COLON">Contractor:</span> <select id="sel_contractor"></select></span> <input type="text" id="searchinputtxt" autocomplete="off" /> <input class="search" type="button" onclick="OnRefresh();" value="Search" data-lgid="P_M3_SEARCH" style="margin-left: 5px;" /> </div> <div class="function_title"> <span class="sbutton iconadd" onclick="OnAdd();" data-lgid="P_M3_ADD">Add</span> <span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_M3_REFRESH">Refresh</span> </div> <div class="clear"></div> <div id="jobsitelimitlist"></div> <div id="mask_bg" style="display: none;"> <div class="loading c-spin"></div> </div> <div class="dialog" id="dialog_jobsitelimit" style="display: none; height: 100%; border-bottom: 0; border-top: 0;"> <iframe id="iframejobsitelimit" src="AddJobsiteLimit.aspx" style="width: 100%; height: 100%; display: block; border: none;"></iframe> <div class="maskbg" style="display: none;"></div> </div> <div class="dialog" id="dialog_subscribecontacts" style="display: none;"> <div id="subscribedialogmask" class="maskbg" style="display: none; z-index: 1;"> <div class="loading_icon icon c-spin"></div> </div> <div class="dialog-title"><span class="title" data-lgid="P_M3_SUBSCRIBECONTACTS">Subscribe Contacts</span><em class="dialog-close"></em></div> <div class="machine_filter"> <input type="text" id="txt_contact_key" style="margin-left: 8px; width: 280px;" tabindex="40" /> <input type="button" class="ybutton" id="btnsubscribefilter" value="Filter" data-lgid="P_M3_FILTER" tabindex="42" /> </div> <div class="div_machines"> <table class="table_holder"> <thead> <tr> <td data-lgid="P_M3_AVAILABLECONTACTS">Available Contacts</td> <td></td> <td data-lgid="P_M3_ASSIGNEDCONTACTS">Assigned Contacts <input type="checkbox" id="chk_showallassignedcontacts" title="When checked, all associated or linked items will display regardless of filter. " data-title-lgid="P_M3_SHOWALLASSIGNEDCONTACTSTITLE" /><label for="chk_showallassignedcontacts" data-lgid="P_M3_SHOWALLASSIGNED">Show All Assigned</label> </td> </tr> </thead> <tbody> <tr> <td> <div id="availablecontacts" style="height: 400px; width: 410px;"></div> </td> <td class="td_controller"> <input class="ctl_button" type="button" value="" onclick="OnContactEditorAdd();" tabindex="42" /> <input class="ctl_button" type="button" value="" onclick="OnContactEditorAddAll();" tabindex="43" /> <input class="ctl_button" type="button" value="" onclick="OnContactEditorRemove();" tabindex="44" /> <input class="ctl_button" type="button" value="" onclick="OnContactEditorRemoveAll();" tabindex="45" /> </td> <td> <div id="selectedcontacts" style="height: 400px; width: 410px;"></div> </td> </tr> </tbody> </table> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_M3_CANCEL" class="dialog-close" tabindex="47" /> <input type="button" onclick="OnSaveSubscribeContacts();" value="OK" data-lgid="P_M3_OK" tabindex="46" /> <div class="clear"></div> </div> </div> </div> </asp:Content>