var _currentInputMode = 'K';
var _sBgColorSelected = "#FFF6D3";
var _sBgColorUnSelected = "#FFFFF7";
var _dragStartCell;
var _dragEndCell;
var _dragStart = 0;
var _dragEnd = 0;
var _isDragging = false;
var _isCartModified = false;
$(document).ready(function () {
// Prompt user before leaving the page if cart is modified.
window.onbeforeunload = function () {
if (_isCartModified) {
return (ORDER_ENTRY_PAGE_UNLOAD_ERROR);
}
}
window.setInterval(AutoSaveHandler, 60000); // this has to run for every 15 mins only when cart is //modified
$('.btnAddToCart').click(buttonSaveHandler);
$('.buttonNumberPad').click(buttonNumberPadHandler);
$('.buttonKeyboard').click(buttonKeyboardHandler);
// NumberPad related
$('.calcbutton').click(buttonNumberPadCalcHandler);
$('.calcbuttonClear').click(buttonNumberPadCalcClearHandler);
$('.calcbuttonEnter').click(buttonNumberPadCalcEnterHandler);
$('#dialogNumberPad').css('overflow', 'hidden');
$("#dialogNumberPad").dialog(
{
autoOpen: false,
modal: false,
resizable: false,
width: 225,
close: function (event, ui) {
setInputTypeKeyboard();
}
}
);
$("#divWkTable").on("mouseup", mouseupHandlerDivWkTable);
$(".wktableinputbox").on("change", wkchangeHandler);
$(".wktableinputbox").keydown(function (event) {
debugger;
// Allow: backspace, delete, tab, escape, and enter
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
event.preventDefault();
}
}
});
// Disable paste to avoid junk input by paste
$('input.wktableinputbox').bind('paste', function (e) {
e.preventDefault();
});
$(".calcText").keydown(function (event) {
// Allow: backspace, delete, tab, escape, and enter
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
if (event.keyCode == 13) {
buttonNumberPadCalcEnterHandler();
}
return;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
event.preventDefault();
}
}
});
setAddToCartText();
setTotalLabelsVisibility();
setFocusToFirstWorksheetInput();
});
function setTotalLabelsVisibility() {
var partCategoryID = parseInt($("#__PartCategoryID").val(), 10);
if (isNaN(partCategoryID)) partCategoryID = 0;
if (partCategoryID != 11001 && partCategoryID != 11004) {
$(".lblSubjectMath").hide();
$(".lblTotalValueMath").hide();
$(".lblSubjectFrench").hide();
$(".lblTotalValueFrench").hide();
$(".lblSubjectSuffix").hide();
}
var maxWkAllowedCheck = parseInt($("#__MaxWkAllowedCheck").val(), 10);
if (maxWkAllowedCheck == 0) {
$(".lblMaxWkAllowedCaption").hide();
}
}
function setFocusToFirstWorksheetInput() {
$(".wktableinputbox").first().focus();
}
function nodeClickWK(partCategoryID) {
location.href = "order-wk.aspx?categoryid=" + partCategoryID + "&inputmode=" + _currentInputMode;
}
function wkchangeHandler(event) {
//console.log("wkchangeHandler");
//console.log($(this).attr('id'));
calculateSubTotal(this.parentElement.parentElement);
calculateTotal();
}
function buttonNumberPadHandler() {
setInputTypeMouse();
}
function buttonKeyboardHandler() {
setInputTypeKeyboard();
}
function setInputTypeMouse() {
_currentInputMode = 'M';
setInputTypeA();
attachTableMouseEvents();
$('.buttonNumberPad').hide();
$("#dialogNumberPad").dialog("open");
}
function setInputTypeKeyboard() {
_currentInputMode = 'K';
$('.buttonNumberPad').show();
$("#dialogNumberPad").dialog("close");
$("#tblData td").removeClass('selected');
detachTableMouseEvent();
setInputTypeA();
}
function attachTableMouseEvents() {
$("#tblData td").on("mouseup", mouseupHandler);
$("#tblData td").on("mousedown", mousedownHandler);
//$(window).on("mouseup", mouseupHandler);
}
function detachTableMouseEvent() {
//$("#tblData").off();
$("#tblData td").off("mouseup", mouseupHandler);
$("#tblData td").off("mousedown", mousedownHandler);
$("#tblData td").not('.wktablefirstcol').not('.wktablecolsubtotal').not('.wktablecolsubtotalfifthrow').not('.wktableheaderlevelcol').not('.wktableheadercol').not('.wktableheadersubtotalcol').off("mousemove", mousemoveHandler);
//$(window).off("mouseup", mouseupHandler);
}
function mousedownHandler(e) {
var allCells = $("#tblData td");
_dragStart = allCells.index($(this));
_dragStartCell = this;
//console.log("mousedown - _dragStart: " + _dragStart.toString());
_isDragging = true;
if (typeof e.preventDefault != 'undefined') { e.preventDefault(); }
document.documentElement.onselectstart = function () { return false; };
$("#tblData td").not('.wktablefirstcol').not('.wktablecolsubtotal').not('.wktablecolsubtotalfifthrow').not('.wktableheaderlevelcol').not('.wktableheadercol').not('.wktableheadersubtotalcol').on("mousemove", mousemoveHandler);
}
function mousemoveHandler(e) {
if (_isDragging) {
var allCells = $("#tblData td");
_dragEnd = allCells.index($(this));
_dragEndCell = this;
selectRange();
}
}
function mouseupHandler(e) {
var allCells = $("#tblData td");
_dragEnd = allCells.index($(this));
_dragEndCell = this;
_isDragging = false;
if (_dragEnd != 0) {
selectRange();
}
document.documentElement.onselectstart = function () { return true; };
$("#tblData td").not('.wktablefirstcol').not('.wktablecolsubtotal').not('.wktablecolsubtotalfifthrow').not('.wktableheaderlevelcol').not('.wktableheadercol').not('.wktableheadersubtotalcol').off("mousemove", mousemoveHandler);
}
function mouseupHandlerDivWkTable(e) {
e.stopPropagation();
if (_isDragging) {
_isDragging = false;
selectRange();
}
}
function selectRange() {
//console.log("selectRange...");
$("#tblData td").removeClass('selected');
if (typeof _dragStartCell != 'undefined' && typeof _dragEndCell != 'undefined') {
//console.log(_dragEndCell);
var rowIndexStart = _dragStartCell.parentElement.rowIndex;
var rowIndexEnd = _dragEndCell.parentElement.rowIndex;
var colIndexStart = _dragStartCell.cellIndex;
var colIndexEnd = _dragEndCell.cellIndex;
var rowFilterGt = -1;
var rowFilterLt = -1;
if (rowIndexStart > rowIndexEnd) {
if (rowIndexEnd - 1 < 0) {
rowFilterGt = 0;
rowFilterLt = (rowIndexStart - rowIndexEnd);
}
else {
rowFilterGt = rowIndexEnd - 1;
rowFilterLt = (rowIndexStart - rowIndexEnd) + 1;
}
}
else {
rowFilterGt = rowIndexStart - 1;
rowFilterLt = (rowIndexEnd - rowIndexStart) + 1;
}
var colFilterGt = -1;
var colFilterLt = -1;
if (colIndexStart > colIndexEnd) {
if (colIndexEnd - 1 < 0) {
colFilterGt = 0;
colFilterLt = (colIndexStart - colIndexEnd);
}
else {
colFilterGt = colIndexEnd - 1;
colFilterLt = (colIndexStart - colIndexEnd) + 1;
}
}
else {
colFilterGt = colIndexStart - 1;
colFilterLt = (colIndexEnd - colIndexStart) + 1;
}
var rowFilter = "#tblData tr:gt(" + rowFilterGt.toString() + "):lt(" + rowFilterLt.toString() + ")";
var colFilter = "td:gt(" + colFilterGt.toString() + "):lt(" + colFilterLt.toString() + ")";
$(rowFilter).each(function (index) {
$(this).children(colFilter).not('.wktablefirstcol').not('.wktablecolsubtotal').not('.wktablecolsubtotalfifthrow').not('.wktableheaderlevelcol').not('.wktableheadercol').not('.wktableheadersubtotalcol').addClass('selected');
});
}
}
function setInputTypeA() {
var rowCount = $('#tblData tr').not('.wktableheaderrow').not('.wktableheaderrow').length;
//alert(rowCount);
if (rowCount > 0) {
if (_currentInputMode == 'K') {
$(".wktabledivqty").each(function (index) {
//console.log(index + ": " + $(this).attr('id') + " = " + $(this).text());
var txtID = $(this).attr('id').replace('divQty', '#txtQty');
var divVal = $.trim($(this).text());
if ($.isNumeric(divVal)) {
$(txtID).val(divVal)
}
$(this).hide();
$(txtID).css('display', 'block');
});
}
else {
$(".wktableinputbox").each(function (index) {
//console.log(index + ": " + $(this).attr('id') + " = " + $(this).val());
var divID = $(this).attr('id').replace('txtQty', '#divQty');
var txtVal = $.trim($(this).val());
if ($.isNumeric(txtVal)) {
$(divID).text(txtVal)
}
$(this).hide();
$(divID).css('display', 'block');
});
}
}
}
function buttonNumberPadCalcHandler() {
var sNumber = $('#txtKeyPad').val().replace(' ', '');
if (sNumber.length == 0 || $.isNumeric(sNumber)) {
if (sNumber.length < 5) {
sNumber += $(this).val();
$('#txtKeyPad').val(sNumber);
}
}
}
function buttonNumberPadCalcClearHandler() {
$('#txtKeyPad').val('')
}
function buttonNumberPadCalcEnterHandler() {
// Get the value entered in the txt box
var num = $('#txtKeyPad').val();
setWkTableCellValues(num);
}
function setWkTableCellValues(num) {
var wkValue = parseInt(num, 10);
//<td class="wktabledatafifthcol" id="tdQtyWK-EM-7A-041"><div class="wktabledivqty" id="divQtyWK-EM-7A-041" style="display:none"> </div><input type="text" id="txtQtyWK-EM-7A-041" name="txtQtyWK-EM-7A-041" class="wktableinputbox" value="" maxlength="5" size="1" style="display:block" /></td>
if ($.isNumeric(wkValue)) {
var txtVal = wkValue > 0 ? wkValue.toString() : "";
var rowArray = [];
$("#tblData td.selected").each(function (index) {
$(this).children(".wktabledivqty").text(txtVal);
$(this).children(".wktableinputbox").val(txtVal);
// Add row to array
var trId = $(this.parentElement).attr('id');
if ($.inArray("#" + trId, rowArray) == -1) {
rowArray.push("#" + trId);
}
});
var subTotal = 0;
$.each(rowArray, function (index, value) {
var tr = $(value);
calculateSubTotal(tr);
});
calculateTotal();
}
}
function calculateSubTotal(tr) {
var subTotal = 0;
var qty = 0;
$(tr).children("td").not('.wktablefirstcol').not('.wktablecolsubtotal').not('.wktablecolsubtotalfifthrow').not('.wktableheaderlevelcol').not('.wktableheadercol').not('.wktableheadersubtotalcol').each(function (index) {
var wkValue = parseInt($(this).children(".wktableinputbox").val(), 10);
subTotal += wkValue || 0;
});
$(tr).children("td.wktablecolsubtotalfifthrow, td.wktablecolsubtotal").children("label").text(subTotal > 0 ? subTotal.toString() : "");
return subTotal;
}
function calculateTotal() {
var total = 0;
var subTotal = 0;
$('#tblData tr').not('.wktableheaderrow').not('.wktableheaderrow').each(function (index) {
subTotal = parseInt($(this).children("td.wktablecolsubtotalfifthrow, td.wktablecolsubtotal").children("label").text(), 10);
if (!isNaN(subTotal)) {
total += subTotal;
}
});
setTotalText(total);
_isCartModified = true;
return total;
}
function setTotalText(total) {
if (!isNaN(total)) {
$("#__WkTotal").val(total.toString());
// VJ: Commented this line
//$(".lblTotalValue").text(total > 0 ? total.toString() : "");
// VJ: Added all the following lines
var partCategoryID = parseInt($("#__PartCategoryID").val(), 10);
if (isNaN(partCategoryID)) partCategoryID = 0;
if (partCategoryID != 11001 && partCategoryID != 11004) {
$(".lblTotalValue").text(total > 0 ? total.toString() : "");
}
else {
var totalSubject2 = parseInt($("#__WkTotalSubject2").val(), 10);
if (isNaN(totalSubject2)) totalSubject2 = 0;
var totalMathFrench = total + totalSubject2;
if (partCategoryID == 11001) {
$(".lblTotalValueMath").text(total > 0 ? total.toString() : "");
}
else {
$(".lblTotalValueFrench").text(total > 0 ? total.toString() : "");
}
$(".lblTotalValue").text(totalMathFrench > 0 ? totalMathFrench.toString() : "");
}
}
}
function setAddToCartText() {
var wkTotal = parseInt($("#__WkTotal").val(), 10);
if (isNaN(wkTotal)) wkTotal = 0;
if (wkTotal > 0) {
$(".btnAddToCart").text(ORDER_ENTRY_SAVE_CHANGES);
}
else {
$(".btnAddToCart").text(ORDER_ENTRY_ADD_TO_CART);
}
}
function validateWkTotal() {
var bReturnValue = true;
var maxWkAllowedCheck = parseInt($("#__MaxWkAllowedCheck").val(), 10);
if (maxWkAllowedCheck != 0) {
var wkLimitDetails = getWkLimitDetails();
if (wkLimitDetails.maxWkAllowedGrace >= 0) {
if (wkLimitDetails.wkTotal > wkLimitDetails.maxWkAllowedGrace) {
alert(ORDER_ENTRY_WK_COUNT_ERROR1);
bReturnValue = false;
}
}
}
return bReturnValue;
}
function getWkLimitDetails() {
var wkTotal = parseInt($("#__WkTotal").val(), 10);
if (isNaN(wkTotal)) wkTotal = 0;
var wkTotalSubject2 = parseInt($("#__WkTotalSubject2").val(), 10);
if (isNaN(wkTotalSubject2)) wkTotalSubject2 = 0;
var maxWkAllowed = parseInt($("#__MaxWkAllowed").val(), 10);
if (isNaN(maxWkAllowed)) maxWkAllowed = 0;
var maxWkAllowedGrace = parseInt($("#__MaxWkAllowedGrace").val(), 10);
if (isNaN(maxWkAllowedGrace)) maxWkAllowedGrace = 0;
var wkLimitDetails = {
maxWkAllowed: maxWkAllowed,
maxWkAllowedGrace: maxWkAllowedGrace,
wkTotal: wkTotal + wkTotalSubject2
}
return wkLimitDetails;
}
function buttonSaveHandler() {
//alert("buttonSaveHandler...");
var isWkTotalValid = validateWkTotal();
if (!isWkTotalValid) {
return;
}
var arCartItems = new Array();
$(".wktableinputbox").each(function (index) {
//console.log(index + ": " + $(this).attr('id') + " = " + $(this).val());
var partID = $(this).attr('id').replace('txtQty', '');
var partNumber = $(this).attr('name').replace('txtQty', '');
var txtVal = $.trim($(this).val());
if ($.isNumeric(txtVal)) {
var qty = parseInt(txtVal, 10)
if (qty > 0) {
arCartItems.push({
"PartID": partID,
"Qty": qty
});
}
}
});
var partCategoryID = parseInt($("#__PartCategoryID").val(), 10);
if (isNaN(partCategoryID)) partCategoryID = 0;
if (arCartItems.length > 0) {
var params = {
partCategoryID: partCategoryID,
lstCartItem: arCartItems
};
var beforeSaveCartItemCount = parseInt($(".headerCartItemCount").val(), 10);
callWebService('SaveCartItems', params, false, true, ajaxFailureHandlerCartSave, function (data) {
var msg = "";
if (data == null) {
alert(ORDER_ENTRY_SAVE_FAIL);
}
else {
alert(beforeSaveCartItemCount == 0 ? ORDER_ENTRY_SAVE_CART_DURATION_ALERT : ORDER_ENTRY_SAVE_SUCCESS);
_isCartModified = false;
$("#__WkTotalLastSaved").val($("#__WkTotal").val())
$(".headerCartItemCount").val(data.ItemCount);
setAddToCartText();
}
});
}
else {
var wkTotalLastSaved = parseInt($("#__WkTotalLastSaved").val(), 10);
if (isNaN(wkTotalLastSaved)) wkTotalLastSaved = 0;
if (wkTotalLastSaved > 0) {
if (partCategoryID > 0) {
var params = {
partCategoryID: $("#__PartCategoryID").val()
};
callWebService('DeleteCartItemsByPartCategory', params, false, true, ajaxFailureHandlerCartSave, function (data) {
var msg = "";
if (data == null) {
alert(ORDER_ENTRY_SAVE_FAIL);
}
else {
alert(ORDER_ENTRY_SAVE_SUCCESS);
_isCartModified = false;
$("#__WkTotalLastSaved").val($("#__WkTotal").val())
$(".headerCartItemCount").val(data.ItemCount);
setAddToCartText();
}
});
}
}
else {
alert(ORDER_ENTRY_SHOPPING_CART_EMPTY);
}
}
}
ajaxFailureHandlerCartSave = function (xhr, status, error) {
if (xhr != null) {
var r = jQuery.parseJSON(xhr.responseText);
var n = r.Message.localeCompare("Thread was being aborted.");
_isCartModified = false;
if (n != 0)
alert(r.Message);
else
alert("Session expired, your un-saved work will not be saved, Please re-login.");
window.location.assign("login.aspx")
}
}
function AutoSaveHandler() {
alert("AutoSaveHandler...");
var isWkTotalValid = validateWkTotal();
if (!isWkTotalValid) {
return;
}
var arCartItems = new Array();
$(".wktableinputbox").each(function (index) {
//console.log(index + ": " + $(this).attr('id') + " = " + $(this).val());
var partID = $(this).attr('id').replace('txtQty', '');
var partNumber = $(this).attr('name').replace('txtQty', '');
var txtVal = $.trim($(this).val());
if ($.isNumeric(txtVal)) {
var qty = parseInt(txtVal, 10)
if (qty > 0) {
arCartItems.push({
"PartID": partID,
"Qty": qty
});
}
}
});
var partCategoryID = parseInt($("#__PartCategoryID").val(), 10);
if (isNaN(partCategoryID)) partCategoryID = 0;
if (arCartItems.length > 0) {
var params = {
partCategoryID: partCategoryID,
lstCartItem: arCartItems
};
var beforeSaveCartItemCount = parseInt($(".headerCartItemCount").val(), 10);
callWebService('SaveCartItems', params, false, true, ajaxFailureHandlerCartSave, function (data) {
var msg = "";
if (data == null) {
alert(ORDER_ENTRY_SAVE_FAIL);
}
else {
//alert(beforeSaveCartItemCount == 0 ? ORDER_ENTRY_SAVE_CART_DURATION_ALERT : ORDER_ENTRY_SAVE_SUCCESS);
if (beforeSaveCartItemCount == 0) {
alert(ORDER_ENTRY_SAVE_CART_DURATION_ALERT);
}
var currentDate = new Date();
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var year = currentDate.getFullYear();
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
if (minutes < 10)
minutes = "0" + minutes
$(".btnautosavetimestamp").text("Last auto-saved: " + day + "/" + month + "/" + year + " " + hours + ":" + minutes);
_isCartModified = false;
$("#__WkTotalLastSaved").val($("#__WkTotal").val())
$(".headerCartItemCount").val(data.ItemCount);
setAddToCartText();
}
});
}
else {
var wkTotalLastSaved = parseInt($("#__WkTotalLastSaved").val(), 10);
if (isNaN(wkTotalLastSaved)) wkTotalLastSaved = 0;
if (wkTotalLastSaved > 0) {
if (partCategoryID > 0) {
var params = {
partCategoryID: $("#__PartCategoryID").val()
};
callWebService('DeleteCartItemsByPartCategory', params, false, true, ajaxFailureHandlerCartSave, function (data) {
var msg = "";
if (data == null) {
alert(ORDER_ENTRY_SAVE_FAIL);
}
else {
// alert(ORDER_ENTRY_SAVE_SUCCESS);
_isCartModified = false;
$("#__WkTotalLastSaved").val($("#__WkTotal").val())
$(".headerCartItemCount").val(data.ItemCount);
setAddToCartText();
}
});
}
}
else {
alert(ORDER_ENTRY_SHOPPING_CART_EMPTY);
}
}
}
ajaxFailureHandlerCartSave = function (xhr, status, error) {
if (xhr != null) {
var r = jQuery.parseJSON(xhr.responseText);
var n = r.Message.localeCompare("Thread was being aborted.");
_isCartModified = false;
if (n != 0)
alert(r.Message);
else
alert("Session expired, your un-saved work will not be saved, Please re-login.");
window.location.assign("login.aspx")
}
}