fleet-contractor/Site/JobSite/JobSiteRequirements.aspx
2024-03-26 15:56:31 +08:00

688 lines
30 KiB
Plaintext

<%@ Page Title="" Language="C#" MasterPageFile="~/JobSite/JobSiteMasterPage.master" AutoEventWireup="true" CodeFile="JobSiteRequirements.aspx.cs" Inherits="JobSiteRequirements" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<link href="../css/jquery.datetimepicker.css" rel="stylesheet" />
<style type="text/css">
.dialog .dialog-func input {
width: unset;
}
.subdialog {
width: -moz-calc(100% - 24px);
width: -webkit-calc(100% - 24px);
width: calc(100% - 24px);
}
.requireinfo {
line-height: 30px;
margin-left: 10px;
}
.requireinfospan {
font-weight: 500;
margin-left: 20px;
}
.quantity {
padding: 3px 0 3px 10px;
margin-top: 5px;
margin-bottom: 5px;
/*color: gray;*/
font-weight: 500;
font-size: 16px;
/*width: 770px;*/
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
background-color: #f0f0f0;
}
.span-caption {
position: absolute;
}
.span-bar {
position: absolute;
height: 100%;
margin: 0;
vertical-align: bottom;
}
</style>
<link href="<%=GetFileUrlWithVersion("../css/spectrum.css")%>" rel="stylesheet" type="text/css" />
<script src="../js/spectrum.js?v=1" type="text/javascript"></script>
<script src="../js/jquery.datetimepicker.full.js"></script>
<script src="<%=GetFileUrlWithVersion("js/jobsiterequirement.js")%>" type="text/javascript"></script>
<script src="<%=GetFileUrlWithVersion("js/dispatchassign.js")%>" type="text/javascript"></script>
<script src="<%=GetFileUrlWithVersion("js/email.js")%>" type="text/javascript"></script>
<script>
jobsitequery = function (method, param, callback, error, nolog) {
_network.request("JobSite/JobSiteRequirements.aspx?tp=ashx", -1, method, param, callback, error, nolog);
}
var addrequirement = false;
var IsReadOnly = <%=IsReadOnly ?"true":"false"%>;
var IsRequestOnly = <%=IsRequestOnly ?"true":"false"%>;
var allroadassets;
var _sendType = 2;
var _seltype;//0.print;1.email
var _selectdispatchids;
var currentdate = "<%=CurrentDate %>";
/***************************Jobsites***************************/
_dialog.showRequirementConfirm = function (msg, title, fprint, femail, fsave, fcancel, fclose, iniframe, shownote) {
if (!fclose)
fclose = fcancel;
_dialog.showButtonDialog(msg, title, 'question', fclose, [{
value: GetTextByKey("P_JS_PRINTDISPATCHINSTRUCTIONS", 'Print Dispatch Instructions'),
func: fprint
}, {
value: GetTextByKey("P_JS_EMAILDISPATCHINSTRUCTIONS", 'Email Dispatch Instructions'),
func: femail
}, {
value: GetTextByKey("P_JS_CONTINUE", 'Continue'),
func: fsave
}], iniframe, shownote);
};
function showRequirementConfirm(msg, title, fprint, femai, fsave, fclose) {
showmaskbg(true);
_dialog.showRequirementConfirm(msg, title, function (e) {
showmaskbg(false);
if (typeof fprint === 'function') {
fprint(e);
}
}, function (e) {
showmaskbg(false);
if (typeof femai === 'function') {
femai(e);
}
}, function (e) {
showmaskbg(false);
if (typeof fsave === 'function') {
fsave(e);
}
}, function (e) {
showmaskbg(false);
if (typeof fclose === 'function') {
fclose(e);
}
});
}
function showConfirmIndialog(msg, title, fok, fcancel, shownote) {
$("#dialogmask").show();
_dialog.showConfirm(msg, title, function (e, notes) {
$("#dialogmask").hide();
if (typeof fok === 'function') {
fok(e, notes);
}
}, fcancel || function () {
$("#dialogmask").hide();
}, null, null, shownote);
}
function OnDelete(req) {
if (!req) {
return;
}
var text = $('<div style="padding-right:20px;line-height:20px;">' + GetTextByKey("P_JS_DELETETHEREQUIREMENT", "Would you like to delete the requirement?") + '<br/></div');
text.append($('<span></span>').text(GetTextByKey("P_JS_JOBSITE_COLON", "Jobsite:") + " " + req.JobSiteName));
text.append($('<span style="margin-left:10px;"></span>').text(GetTextByKey("P_JS_ASSETTYPE_COLON", "Asset Type:") + " " + req.AssetTypeName));
text.append("<br/>")
text.append($('<span></span>').text(GetTextByKey("P_JS_BEGINDATE_COLON", "Begin Date:") + " " + req.BeginDateStr));
text.append($('<span style="margin-left:10px;"></span>').text(GetTextByKey("P_JS_ENDDATE_COLON", "Begin Date:") + " " + req.EndDateStr));
var alerttile = GetTextByKey("P_JS_DELETEREQUIREMENT", "Delete Requirement");
showConfirm(text, alerttile, function (e, notes) {
var item = {
'Key': req.Id,
'Value': notes
};
var p = htmlencode(JSON.stringify(item));
jobsitequery("DeleteRequirment", p, function (data) {
OnRefresh();
}, function (err) {
showAlert(GetTextByKey("P_JS_FAILEDTODELETETHISREQUIREMENT", "Failed to delete this requirement."), alerttile);
});
}, null, true);
}
function CloseDialog(msg) {
if (msg) {
var alerttitle = GetTextByKey("P_WO_SENDEMAIL", 'Send Email');
if (msg !== 'OK') {
showAlert(msg, alerttitle);
}
else {
showAlert(GetTextByKey("P_WO_MESSAGESENT", 'Message sent'), alerttitle);
}
}
$('#dialog_requirements').hideDialog();
OnRefresh();
}
function ShowDialog(type) {
showmaskbg(true);
$('#dialog_requirements')
.attr('act', type)
.showDialogRight();
}
function OnAdd() {
execIframeFunc("init", [alljobsites], "iframerequirements");
ShowDialog("add");
}
var requireid;
function OnRefresh(keepmasg) {
var jobsites = $('#div_jobsites').dropdownVals();
var regions = $('#div_region').dropdownVals();
var lateststartdate = $.trim($('#latesdatetxt').val());
if (lateststartdate && !$('#latesdatetxt').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_THELATESTSTARTDATEISINVALID', "The latest start date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
showloading(false);
return;
}
var p = {
"LatestStartDate": lateststartdate,
"JobSites": jobsites,
"Regions": regions,
"SearchText": $.trim($('#searchinputtxt').val()),
"UnScheduledOnly": $('#chk_unscheduled').prop('checked')
};
showloading(true);
jobsitequery("GetRequirements", htmlencode(JSON.stringify(p)), function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
showRequirementList(data);
if (!keepmasg)
showloading(false);
}, function (err) {
if (!keepmasg)
showloading(false);
});
}
function showRequirementList(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
for (var j in r) {
if (j === "BeginDate")
r[j] = { DisplayValue: r["BeginDateStr"], Value: r[j] };
else if (j === "EndDate")
r[j] = { DisplayValue: r["EndDateStr"], Value: r[j] };
else if (j === "FulfilledByName")
r[j] = r[j].split(',');
}
rows.push(r);
}
grid_dt.setData(rows);
grid_dt.refresh();
}
var grid_dt;
function InitGridData() {
grid_dt = createGridView('#jobsitelist');
var list_columns = [
{ name: 'BeginDate', caption: GetTextByKey("P_JS_BEGINDATE", "Begin Date"), valueIndex: 'BeginDate', css: { 'width': 100, 'text-align': 'left' } },
{ name: 'EndDate', caption: GetTextByKey("P_JS_ENDDATE", "End Date"), valueIndex: 'EndDate', css: { 'width': 100, 'text-align': 'left' } },
{ name: 'AssetTypeName', caption: GetTextByKey("P_JS_ASSETTYPE", "Asset Type"), valueIndex: 'AssetTypeName', allowFilter: true, css: { 'width': 180, 'text-align': 'left' } },
{ name: 'Quantity', caption: GetTextByKey("P_JS_QUANTITY", "Quantity"), valueIndex: 'Quantity', css: { 'width': 80, 'text-align': 'right' } },
{ name: 'ScheduledQuantity', caption: GetTextByKey("P_JS_SCHEDULED", "Scheduled"), valueIndex: 'ScheduledQuantity', allowFilter: true, css: { 'width': 80, 'text-align': 'right' } },
{ name: 'JobSiteName', caption: GetTextByKey("P_JOBSITE", "Jobsite"), valueIndex: 'JobSiteName', allowFilter: true, css: { 'width': 200, 'text-align': 'left' } },
{ name: 'NumberOfDays', caption: GetTextByKey("P_JS_NUMBEROFDAYS", "Number of Days"), valueIndex: 'NumberOfDays', allowFilter: true, css: { 'width': 120, 'text-align': 'right' } },
{ name: 'Notes', caption: GetTextByKey("P_JS_NOTES", "Notes"), valueIndex: 'Notes', allowFilter: true, css: { 'width': 200, 'text-align': 'left' } },
{ name: 'PointOfContact', caption: GetTextByKey("P_JS_POINTOFCONTACT", "Point Of Contact"), allowFilter: true, valueIndex: 'PointOfContact', css: { 'width': 200, 'text-align': 'left' } },
{ name: 'AddedByName', caption: GetTextByKey("P_JS_CREATOR", "Creator"), valueIndex: 'AddedByName', allowFilter: true, css: { 'width': 150, 'text-align': 'left' } },
{ name: 'FulfilledByName', caption: GetTextByKey("P_JS_FULFILLEDBY", "Fulfilled By"), allowFilter: true, valueIndex: 'FulfilledByName', css: { 'width': 150, 'text-align': 'left' } },
{ name: 'ManageAssets', caption: "", alwaysshow: true, css: { 'width': 30, 'text-align': 'center' } },
{ name: 'Delete', caption: "", alwaysshow: true, css: { 'width': 30, 'text-align': 'center' } },
{ name: 'History', caption: "", alwaysshow: true, 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 = list_columns[hd].visible === false ? false : 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.allowFilter = list_columns[hd].allowFilter;
col.alwaysshow = list_columns[hd].alwaysshow;
if (col.name === "ManageAssets") {
col.sortable = false;
col.resizable = false;
col.type = GridView.ColumnTypes.Icon;
col.text = 'truck-pickup';
col.events = {
onclick: function () {
onManageAssets(this);
}
};
col.attrs = { 'title': GetTextByKey("P_JS_MANAGEASSETS", "Manage Assets") };
col.visible = !IsReadOnly && !IsRequestOnly;
}
else if (col.name === "Delete") {
col.sortable = false;
col.resizable = false;
col.type = GridView.ColumnTypes.Icon;
col.text = 'times';
col.events = {
onclick: function () {
OnDelete(this);
}
};
col.attrs = { 'title': GetTextByKey("P_JS_DELETE", 'Delete') };
col.visible = !IsReadOnly && !IsRequestOnly;
}
if (col.name === "History") {
col.sortable = false;
col.resizable = false;
col.type = GridView.ColumnTypes.Icon;
col.text = 'eye';
col.events = {
onclick: function () {
OnViewChangeHistory(this);
}
};
col.attrs = { 'title': GetTextByKey("P_MR_VIEWCHANGEHIS", 'View Change History') };
col.visible = !IsReadOnly && !IsRequestOnly;
}
columns.push(col);
}
grid_dt.canMultiSelect = false;
grid_dt.columns = columns;
grid_dt.init();
grid_dt.onRowDblClicked = function (rowindex) {
if (!IsReadOnly && !IsRequestOnly) {
var rowdata = grid_dt.source[rowindex];
if (rowdata) {
onManageAssets(rowdata);
}
}
}
}
function searchEnter(e) {
if (e.keyCode == 13) {
OnRefresh();
}
}
var alljobsites;
function getJobsitesAndRegions() {
showmaskbg(true);
jobsitequery('GetJobsitesAndRegions', '1', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_AM_ERROR", 'Error'));
return;
}
alljobsites = data.Jobsites;
$("#div_jobsites").dropdownSource(data.Jobsites);
$('#div_region').dropdownSource(data.Regions);
getRequirmentsDefault();
}, function () {
showmaskbg(false);
});
}
function onregioncompleted() {
if (!alljobsites) return;
var regions = $('#div_region').dropdownVals();
var jss = [...alljobsites];
if (regions && regions.length > 0)
jss = jss.filter(t => regions.indexOf(t.Tag3) >= 0);
var seljss = $("#div_jobsites").dropdownVals();
$("#div_jobsites").dropdownSource(jss).dropdownVals(seljss);
}
var editableSelectAssignAsset;
$(function () {
setPageTitle(GetTextByKey("P_JS_JOBSITEREQUIREMENTS", "Jobsite Requirements"), true);
$('#dialog_assignasset').dropdown([], {
search: true,
valueKey: 'Id',
textKey: 'DisplayName'
});
$('#dialog_assignasset').dropdownDisabled(false);
InitGridData();
InitAssetGridData();
InitAllAssetGridData();
InitEmailGridData();
InitAttachedAssetGridData();
getJobsitesAndRegions();
$("#div_region").css('width', 120).dropdown([], {
search: true,
multiselect: true,
allowselectall: true,
textKey: 'Value',
valueKey: 'Key'
}).on('collapsed', onregioncompleted);
$("#div_jobsites").css('width', 120).dropdown([], {
search: true,
multiselect: true,
allowselectall: true,
textKey: 'Value',
valueKey: 'Key'
});
$(window).resize(function () {
$("#jobsitelist").css("height", $(window).height() - $("#jobsitelist").offset().top - 14);
grid_dt && grid_dt.resize();
$("#allmachinelist").css("height", 500);
grid_allassetdt && grid_allassetdt.resize();
}).resize();
$('#searchinputtxt').keydown(searchEnter);
$('#dialog_managemahchine').dialog(function () {
OnRefresh();
showmaskbg(false);
})
$('#dialog_allmahchine').dialog(function () {
$('#dialogmask').hide();
})
$('#dialog_attachedassets').dialog(function () {
$('#dialog_allassetmask').hide();
$('#dialogmask').hide();
})
$('#dialog_assignment').dialog(function () {
showmaskbg(false);
$('#dialogmask').hide();
});
$('#dialog_sendmail').dialog(function () {
showmaskbg(false);
});
$('#sendmail_othertextaddress').focus(function (e) {
var left = $('#dialog_sendmail').offset().left + $('#dialog_sendmail').width() + 2;
var top = $('#dialog_sendmail').offset().top + $("#dialog_sendmail").height() - $("#div_tooltip").height() - 9;
$('#div_tooltip').css({ 'display': '', 'left': left, 'top': top });
});
if (!canExport) {
$('#spExport').hide();
}
});
function searchEnter(e) {
if (e.keyCode == 13 || e.keyCode == 9) {
OnRefresh();
}
}
function OnExport() {
var jobsites = $('#div_jobsites').dropdownVals();
var regions = $('#div_region').dropdownVals();
var lateststartdate = $.trim($('#latesdatetxt').val());
if (lateststartdate && !$('#latesdatetxt').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_THELATESTSTARTDATEISINVALID', "The latest start date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
var p = {
"LatestStartDate": lateststartdate,
"JobSites": jobsites,
"Regions": regions,
"SearchText": $.trim($('#searchinputtxt').val()),
"UnScheduledOnly": $('#chk_unscheduled').prop('checked')
};
var param = JSON.stringify(p);
window.open("../ExportToFile.aspx?type=requirements&param=" + param);
}
function getRequirmentsDefault() {
jobsitequery("GetRequirmentsDefault", '', function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey('P_JS_ERROR', 'Error'));
return;
}
if (data) {
$('#div_region').dropdownVals(data.Regions);
onregioncompleted();
$("#div_jobsites").dropdownVals(data.Jobsites);
}
OnRefresh();
}, function (err) {
showmaskbg(false);
});
}
function onSaveDefault() {
var jobsites = $('#div_jobsites').dropdownVals();
var regions = $('#div_region').dropdownVals();
var item = {
'JobSites': jobsites,
'Regions': regions
};
var alerttitle = GetTextByKey("P_JS_SAVEDEFAULT", "Save Default");
var param = JSON.stringify(item);
param = htmlencode(param);
jobsitequery("SetRequirmentsDefault", param, function (data) {
if (data !== 'OK') {
showAlert(data, alerttitle);
}
else {
showAlert(GetTextByKey("P_JS_SAVSUCCESSFULLY", 'Saved successfully.'), alerttitle);
}
}, function (err) {
});
}
function OnViewChangeHistory(req) {
if (!req) {
return;
}
window.open("DispatchChangeHistory.aspx?stype=0&id=" + req.Id);
}
function OnViewDeleteHistory() {
window.open("RequirementChangeHistory.aspx");
}
function OnPrint(assignto) {
if (!assignto)
assignto = "";
window.open("../Print.aspx?pt=2&t=" + _sendType + "&assignto=" + encodeURIComponent(assignto) + "&ids=" + JSON.stringify(_selectdispatchids));
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div id="contentctrl">
<div class="page_title" data-lgid="P_JS_JOBSITEREQUIREMENTS"></div>
<div class="search_bar">
<input type="password" autocomplete="new-password" style="display: none" />
<span data-lgid="P_JS_LATESTSTARTDATE_COLON"></span>
<input type="date" class="type-date" required min="1900-01-01" id="latesdatetxt" autocomplete="off" style="width: 90px; margin-left: 5px;" value="<%=LatestStartDate %>" />
<span data-lgid="P_JS_REGION_COLON">Region:</span>
<div id="div_region"></div>
<span data-lgid="P_JS_JOBSITES_COLON">Jobsites:</span>
<div id="div_jobsites"></div>
<input type="text" id="searchinputtxt" autocomplete="off" style="margin-left: 5px; display: none;" />
<input class="search" type="button" onclick="OnRefresh();" value="Search" data-lgid="P_CM_SEARCH" style="margin-left: 5px;" />
<input id="chk_unscheduled" type="checkbox" checked="checked" onclick="OnRefresh();" />
<label data-lgid="P_JS_UNSCHEDULEDREQUIREMENTSONLY" for="chk_unscheduled">Unscheduled Requirements Only</label>
<span class="sbutton iconsave" onclick="onSaveDefault();" style="margin-left: 20px; padding: 0px 0px 0px 7px;" data-title-lgid="P_JS_SAVEJOBSITEANDREGIONSELECTIONASDEFAULT"></span>
</div>
<div class="function_title">
<%if (!IsReadOnly)
{ %>
<span class="sbutton iconadd" onclick="OnAdd();" data-lgid="P_JS_ADD"></span>
<%} %>
<span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_JS_REFRESH"></span>
<span id="spExport" class="sbutton iconexport" onclick="OnExport();" data-lgid="P_MR_EXPORTTOEXCEL">Export to Excel</span>
<span class="sbutton iconview" onclick="OnViewDeleteHistory();" data-lgid="P_JS_VIEWDELETEDRECORDS">View Deleted Records</span>
</div>
<div id="jobsitelist"></div>
</div>
<div id="mask_bg" style="display: none;">
<div class="loading c-spin"></div>
</div>
<div class="dialog subdialog" id="dialog_requirements" style="display: none; border-bottom: 0; border-top: 0;">
<%--<div class="dialog-title"><span class="title">Add Work Order</span></div>--%>
<iframe id="iframerequirements" src="AddRequirements.aspx" style="width: 100%; height: 100%; display: block; border: none;"></iframe>
<div class="maskbg" style="display: none;"></div>
</div>
<div class="dialog" id="dialog_managemahchine" style="display: none;">
<div class="dialog-title"><span id="spTitle" class="title" data-lgid="P_JS_MANAGEASSETS"></span><em class="dialog-close"></em></div>
<div class="requireinfo">
<span class="requireinfospan" data-lgid="P_JS_JOBSITE_COLON" style="margin-left: 0px;">Jobsite:</span>
<span id="span_jobsite"></span>
<span class="requireinfospan" data-lgid="P_JS_BEGINDATE_COLON">Begin Date:</span>
<span id="span_begindate"></span>
<span class="requireinfospan" data-lgid="P_JS_ENDDATE_COLON">End Date:</span>
<span id="span_enddate"></span>
<span class="requireinfospan" data-lgid="P_JS_ASSETTYPE_COLON">Asset Type:</span>
<span id="span_assettypes"></span>
</div>
<div class="quantity">
<span data-lgid="P_JS_QUANTITY_COLON">Quantity:</span>
<span id="span_quantity"></span>
<span class="sbutton iconadd" onclick="OnMachineAdd()" data-lgid="P_UM_ADD" style="margin-left: 20px; font-weight: lighter;">Add</span>
<span class="sbutton icondelete" onclick="onDeleteDispatch()" data-lgid="P_UM_DELETE" style="font-weight: lighter;">Delete</span>
</div>
<div id="selectedmachinelist" style="height: 500px; width: 100%;"></div>
<div class="dialog-func">
<input type="button" value="Close" data-lgid="P_JS_CLOSE" class="dialog-close" tabindex="28" />
<div class="clear"></div>
</div>
<div id="dialogmask" class="maskbg" style="display: none;">
<div class="loading_icon icon c-spin"></div>
</div>
</div>
<div class="dialog" id="dialog_allmahchine" style="display: none;">
<div class="dialog-title"><span class="title" data-lgid="P_MA_SELECTASSET"></span><em class="dialog-close"></em></div>
<div id="allmachinelist" style="height: 500px; width: 100%;"></div>
<div class="dialog-func">
<input type="button" value="Close" data-lgid="P_JS_CANCEL" class="dialog-close" tabindex="28" />
<input type="button" onclick="onAddDispatch();" data-lgid="P_JS_OK" value="OK" tabindex="27" />
<div class="clear"></div>
</div>
<div id="dialog_allassetmask" class="maskbg" style="display: none;">
<div class="loading_icon icon c-spin"></div>
</div>
</div>
<div class="dialog" id="dialog_sendmail" style="display: none; width: 510px;">
<div class="dialog-title"><span class="title" data-lgid="P_JS_SENDDISPATCHREQUEST">Send Dispatch Request</span><em class="dialog-close"></em></div>
<div class="dialog-content">
<table style="line-height: 24px;">
<tr>
<td colspan="2" data-lgid="P_MV_SENDTHISTO">Who do you want to send this to? Select from existing relationships or manual entry.</td>
</tr>
<tr>
<td colspan="2">
<div id="contactlist" style="height: 168px; width: 470px; margin-left: 10px; margin-right: 10px;"></div>
</td>
</tr>
<tr style="height: 24px;">
<td colspan="2" data-lgid="P_MV_EMAILORTEXTADDRESSESTIPS">Separate multiple manually entered email or text addresses with a semi-colon (;).</td>
</tr>
<tr style="height: 24px;">
<td style="text-align: right; padding-right: 5px;"><span data-lgid="P_MV_OTHEREMAILADDRESS">Other Email Address</span>
</td>
<td>
<input type="text" id="sendmail_otheremailaddress" style="width: 350px;" autocomplete="off" /></td>
</tr>
<tr style="height: 24px; display: none;">
<td style="text-align: right; padding-right: 5px;"><span data-lgid="P_MV_OTHERTEXTADDRESS">Other Text Address</span>
</td>
<td>
<input type="text" id="sendmail_othertextaddress" style="width: 350px;" autocomplete="off" />
</td>
<%--<span id="span_hepler" class='helper pointer' title='Help'></span>--%>
</tr>
<tr style="height: 24px;">
<td style="text-align: right; padding-right: 5px;" data-lgid="P_MV_DESCRIPTION_COLON">Description:</td>
<td>
<textarea id="sendmail_desc" style="width: 350px; height: 80px; resize: none;"></textarea></td>
</tr>
</table>
</div>
<div class="dialog-func">
<input type="button" value="Cancel" data-lgid="P_MV_CANCEL" class="dialog-close" tabindex="12" />
<input type="button" onclick="onSendEmails();" value="OK" data-lgid="P_MV_OK" tabindex="11" />
<div class="clear"></div>
</div>
</div>
<div class="dialog" id="dialog_assignment" style="display: none;">
<div class="dialog-title"><span class="title" data-lgid="P_JS_DISPATCHASSIGNMENT">Dispatch Assignment</span><em class="dialog-close"></em></div>
<div class="dialog-content">
<table style="line-height: 30px; margin-left: 30px;">
<tr>
<td data-lgid="P_JS_SELECTASSETFORDISPATCH">Select Asset for Dispatch</td>
</tr>
<tr>
<td>
<div id="dialog_assignasset" style="width: 320px;" class="dropdown"></div>
</td>
</tr>
</table>
</div>
<div class="dialog-func">
<input type="button" onclick="onAssignContinue();" value="Continue" data-lgid="P_JS_CONTINUE" tabindex="12" />
<input type="button" onclick="onAssignSkip();" value="Skip" data-lgid="P_JS_SKIP" tabindex="11" />
<div class="clear"></div>
</div>
</div>
<div class="dialog" id="dialog_attachedassets" style="display: none;">
<div class="dialog-title"><span class="title" data-lgid="P_JS_ATTACHEDASSETS">Attached Assets</span><em class="dialog-close"></em></div>
<div class="dialog-content">
<div style="text-align: center; line-height: 20px; margin-bottom: 10px;">
<span id="span_attachedasset_tips1"></span>
<br />
<span id="span_attachedasset_tips2"></span>
</div>
<div id="dialog_attachedassetlist" style="height: 300px; width: 100%;"></div>
</div>
<div class="dialog-func">
<input type="button" value="Close" data-lgid="P_JS_CANCEL" class="dialog-close" tabindex="2" />
<input type="button" id="btn_addattasset" onclick="OnAddAttachedAssets();" data-lgid="P_JS_OK" value="OK" tabindex="1" />
<input type="button" id="btn_removeattasset" onclick="OnRemoveAttachedAssets();" style="display: none;" data-lgid="P_JS_REMOVE" value="Remove" tabindex="1" />
<div class="clear"></div>
</div>
</div>
</asp:Content>