﻿// Name: CheckoutDialog.js
// Version: 1.0.0.0
// FileVersion: 1.0.0.0
// -----------------------------------------------------------------------
//  Copyright (C) Peter Bredenberg System. All rights reserved.
// -----------------------------------------------------------------------

var checkoutItems = 0;

// Show the dialog window
function showCheckoutDialog(items) {
    closeAllDialogs();
    positionModalBackground(true);
    centerCheckoutDialog(true, items);
}

// Close the dialog window
function closeCheckoutDialog() {
    var checkOutDialog = $get('CheckoutDialog')
    checkOutDialog.style.display = 'none';
    hideModalBackground();
}

// Center the dialog window
function centerCheckoutDialog(show, items) {
    checkoutItems = items;
    var checkOutDialog = $get('CheckoutDialog');
    var width = 0, height = 0;
    var dlgHeight = 380 + (items * 20);

    if (navigator.appName.indexOf("Microsoft") != -1) {
        width = document.documentElement.clientWidth;
        height = document.documentElement.clientHeight;
    }
    else {
        width = window.innerWidth;
        height = window.innerHeight;
    }

    var left = (width - 800) / 2; if (left < 0) left = 0;
    var top = (height - dlgHeight) / 2; if (top < 0) top = 0; if (top > 110) top = 110;

    checkOutDialog.style.left = parseInt(left) + 'px';
    checkOutDialog.style.top = parseInt(top) + 'px';

    if (show) {
        checkOutDialog.style.display = 'block';
    }
}

// Delete shopping cart item
var sumTextBox;
var orderRow;
function deleteShoppingCartItem(id, row, sum) {
    sumTextBox = sum;
    orderRow = row
    Onyx.Web.Services.OnyxWebService.DeleteShoppingCartItem(id, OnDeleteItemComplete, OnError, OnTimeOut);
}

function OnDeleteItemComplete(result) {
    var row = $get(orderRow);
    var canClose = getShoppingCartItemsCount(row.parentNode.parentNode.parentNode) == 2;

    row.parentNode.parentNode.parentNode.removeChild(row.parentNode.parentNode);
    $get(sumTextBox).innerHTML = result;

    Onyx.Web.Services.OnyxWebService.GetShoppingCart(updateShoppingCart, showUnexpectedErrorMsg, showUnexpectedErrorMsg);

    if (canClose)
        closeCheckoutDialog();
}

//  Get number of shopping cart items
function getShoppingCartItemsCount(node) {
    var counter = 0;
    for (var i = 0; i < node.childNodes.length; i++) {
        var childNode = node.childNodes[i];
        if (childNode.nodeType == 1) {
            counter += 1;
        }
    }
    return counter;
}

// Delete order
function deleteOrder() {
    Onyx.Web.Services.OnyxWebService.DeleteOrder(OnDeleteOrderComplete, OnError, OnTimeOut);
}

function OnDeleteOrderComplete(result) {
    closeCheckoutDialog();
    Onyx.Web.Services.OnyxWebService.GetShoppingCart(updateShoppingCart, OnError, OnTimeOut);
}

// Update shopping cart item
var rowSumLabel;
var sumLabel;
function updateShoppingCartItem(id, items, rowSum, sum) {
    rowSumLabel = $get(rowSum);
    sumLabel = $get(sum);

    var isValid = true;
    itemsValue = $get(items).value.trim();
    itemsValue = itemsValue.replace(',', '.');
    if ((itemsValue == '.') || (itemsValue == '0')) isValid = false;

    var isNumber = new RegExp(/^\d*\.?\d*$/);
    if (!itemsValue.match(isNumber) || !isValid)
        alert('Värde i fältet antal är inte ett gilitigt tal!');
    else
        Onyx.Web.Services.OnyxWebService.UpdateShoppingCartItem(id, itemsValue, OnUpdateItemComplete, OnError, OnTimeOut);
}

function OnUpdateItemComplete(result) {
    rowSumLabel.innerHTML = result[0];
    sumLabel.innerHTML = 'Totalt exkl. moms&nbsp;&nbsp;&nbsp;' + result[1];
    Onyx.Web.Services.OnyxWebService.GetShoppingCart(updateShoppingCart, OnError, OnTimeOut);
}

// Check items input
function checkItemsInput(e) {
    var allowedKeys = '|8|9|27|46|188|37|39|';
    var allow = false;

    var keynum = (window.event != null) ? event.keyCode : e.keyCode;
    allow = ((keynum >= 48 && keynum <= 57) || (keynum >= 96 && keynum <= 105));
    Sys.Debug.trace(keynum);

    if (!allow)
        allow = (allowedKeys.indexOf('|' + keynum + '|') >= 0);

    return allow;
}

// Send order
function sendOrder(message) {
    disableCtrls($get('CheckoutTable').childNodes);

    var div = $get('ProcessOrder');
    div.style.display = 'block';
    div.disabled = false;

    Onyx.Web.Services.OnyxWebService.CommitOrder($get(message).value, OnSendOrderComplete, OnSendOrderError, OnTimeOut);
}

function OnSendOrderComplete(result) {
    Onyx.Web.Services.OnyxWebService.GetShoppingCart(updateShoppingCart, OnError, OnTimeOut);
    $get('OrderInProcess').style.display = 'none';
    $get('OrderCompleted').style.display = 'block';
}

function OnSendOrderError(result) {
    alert(result.get_message());
    closeCheckoutDialog();
}

function processCheckoutKeypress(ctrl, e) {
    var keynum = (window.event != null) ? event.keyCode : e.keyCode;
    if (keynum == 13 || keynum == 32)
        ctrl.click();
    if (keynum == 27)
        closeCheckoutDialog();

}

// Notify ScriptManager that this is the end of the script
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

