﻿/* Shared */
function Ajax_FailedCallback(error, context, operation) {
    alert("Ajax failed: " + error.get_message());
}

/* Add To Basket */
function AddProductToBasket(a, i) {
    var plitc = eval(a);

    if (plitc && plitc[i]) {
        var productNodes = new Array();
        productNodes[0] = GetAddToBasketProductNode(plitc[i]);
        DoAddProductsToBasket(productNodes);
    }
} // end AddProductToBasket

function AddProductsToBasket(a) {
    var plitc = eval(a);
   
    if (plitc && plitc.length > 0) {
        var productNodes = new Array();
        for (var i = 0; i < plitc.length; i++) {
            productNodes[i] = GetAddToBasketProductNode(plitc[i]);
        }

        DoAddProductsToBasket(productNodes);
    } // end if
} // end AddProductsToBasket

function DoAddProductsToBasket(productNodes) {
    if (!gBasketGuid)
        return;
        
    var req = "<AddToOrderRequest o='" + gBasketGuid + "'>";

    for (var i = 0; i < productNodes.length; i++) {
        req += productNodes[i];
    } // end for

    req += "</AddToOrderRequest>";

    PortalX.Modules.Daarbak.Resources.Services.Order.AddToOrder(req, AddToOrder_SucceededCallback, Ajax_FailedCallback);
}

function GetAddToBasketProductNode(p) {
    var result = '';
    
    var values = p.split(';');

    if (values.length == 7) {
        var qeid = values[4];
        var qe = document.getElementById(qeid);

        if (qe) {
            var q = qe.value;

            if (q && q != '') {
                result = "<Product vt='" + values[0] + "' c='" + values[1] + "' p='" + values[2] + "' u='" + values[3] + "' q='" + q + "' qe='" + values[4] + "' ie='" + values[5] + "' ee='" + values[6] + "' />";
            }
        }
        else {
            alert('Unable to find ' + qeid);
        }
    }
    else {
        alert('Wrong length of data!"');
    }

    return result;
}

function AddToOrder_SucceededCallback(result, eventArgs) {
    var ec = 0;

    for (var i = 0; i < result.length; i++)
    {
        var qe = document.getElementById(result[i].QtyControlId);

        var ie = document.getElementById(result[i].ImgControlId);
        if (ie)
            ie.style.display = 'none';

        var ee = document.getElementById(result[i].ErrorImgControlId);
        if (ee)
            ee.style.display = 'none';

        if (result[i].ErrorMsg != '') {
            ec++;

            if (ee) {
                ee.style.display = '';
                ee.title = result[i].ErrorMsg;
            }
            else {
                alert(result[i].ErrorMsg);
            }
        }
        else {
            if (qe)
                qe.value = '';

            if (ie)
                ie.style.display = '';
        }
    }

    if (ec > 0 && ee) {
        alert('Bemærk! Det var ikke alle de valgte varer, der kunne lægges i kurven.\r\nBrug de(t) røde udråbstegn for en nærmere beskrivelse!');
    }
    
    if (typeof ShowBasketSummary_Refresh == 'function') {
        ShowBasketSummary_Refresh();
    }
} // end AddToOrder_SucceededCallback

/* Basket Summary */
var ShowBasketSummary_Refresh_Queue = new Array();
var ShowBasketSummary_Refresh_Queue_TimerId = 0;
var ShowBasketSummary_Refresh_Running = false;

function ShowBasketSummary_Refresh() {
    ShowBasketSummary_Refresh_Queue.push('ShowBasketSummary_DoCall()');
    ShowBasketSummary_Dequeue();
} // end ShowBasketSummary_Refresh

function ShowBasketSummary_DoCall() {
    if (gBasketGuid && ShowBasketSummary_AmountControlId && ShowBasketSummary_TotalPriceControlId) {

        var lp = document.getElementById("ShowBasketSummary_LoadingPanel");

        if (lp) {
            lp.style.display = '';
        }

        var req = "<RefreshBasketSummaryRequest b='" + gBasketGuid + "' a='" + ShowBasketSummary_AmountControlId + "' t='" + ShowBasketSummary_TotalPriceControlId + "' />";

        PortalX.Modules.Daarbak.Resources.Services.Order.RefreshBasketSummary(req, RefreshBasketSummary_SucceededCallback, Ajax_FailedCallback);
    }
}

function ShowBasketSummary_Dequeue() {
    if (ShowBasketSummary_Refresh_Running) {
        
        if (ShowBasketSummary_Refresh_Queue_TimerId != 0)
            clearTimeout(ShowBasketSummary_Refresh_Queue_TimerId);

        ShowBasketSummary_Refresh_Queue_TimerId = setTimeout("ShowBasketSummary_Dequeue()", 500);
    }
    else if (ShowBasketSummary_Refresh_Queue.length > 0) {
        ShowBasketSummary_Refresh_Running = true;
        eval(ShowBasketSummary_Refresh_Queue.shift());
    }
}

function RefreshBasketSummary_SucceededCallback(result, eventArgs) {
    var lp = document.getElementById("ShowBasketSummary_LoadingPanel");
    if (lp) {
        lp.style.display = 'none';
    } 

    var a = document.getElementById(result.AmountControlId);
    if (a) {
        a.innerHTML = result.AmountValue;
    }

    var t = document.getElementById(result.TotalPriceControlId);
    if (t) {
        t.innerHTML = result.TotalPriceValue;
    }

    ShowBasketSummary_Refresh_Running = false;
} // end RefreshBasketSummary_SucceededCallback

function RefreshBasketSummary_FailedCallback(error, eventArgs) {
    ShowBasketSummary_Refresh_Running = false; 
}

/* PNA */
function GetPna_SucceededCallback(result, eventArgs)
{
    for (var i = 0; i < result.length; i++)
    {
        var elm = document.getElementById(result[i].ControlId);
        if (elm) elm.innerHTML = result[i].ControlHtml;

        if (result[i].TaxIconControlId != '')
        {
            var telm = document.getElementById(result[i].TaxIconControlId);
            if (telm)
            {
                telm.src = result[i].TaxIconImageUrl;
                telm.title = result[i].TaxIconToolTip;
            } // end if
        } // end if
    } // end for
} // end GetPna_SucceededCallback

/* Favourite */
function AddFavourite(c, p, ae, re) {
    var request = GetFavouriteRequestXml(c, p, ae, re);
    
    if (request && request != '')
        PortalX.Modules.Daarbak.Resources.Services.Catalog.AddFavourite(request, Favourite_SucceededCallback, Ajax_FailedCallback);
}

function RemoveFavourite(c, p, ae, re) {
    var request = GetFavouriteRequestXml(c, p, ae, re);

    if (request && request != '')
        PortalX.Modules.Daarbak.Resources.Services.Catalog.RemoveFavourite(request, Favourite_SucceededCallback, Ajax_FailedCallback);
}

function GetFavouriteRequestXml(c, p, ae, re) {
    var request = '';

    if (gUserGuid) {
        request += "<FavouriteRequest u='" + gUserGuid + "'>";

        request += "<Product ";
        request += "c='" + c + "' ";
        request += "p='" + p + "' ";
        request += "ae='" + ae + "' ";
        request += "re='" + re + "' ";
        request += "/>";

        request += "</FavouriteRequest>";
    } // end if
    
    return request;
}

function Favourite_SucceededCallback(result, eventArgs) {

    if (result) {
        var hideElm = document.getElementById(result.HideControlId);
        if (hideElm)
            hideElm.style.display = 'none';

        var showElm = document.getElementById(result.ShowControlId);
        if (showElm)
            showElm.style.display = '';
    }
}

function ProductComment_OpenWindow(c, p, ace, rce) {
    var dialogUrl = '/Pages/dan/ShowUrlInPopupWindow.aspx?type=DaarbakProductComment&cguid=' + c + '&pid=' + p + '&ace=' + ace + '&rce=' + rce + '&cc=ProductComment_Changed';
    openWin(dialogUrl, '400', '400');
}

function ProductComment_Changed(comment, ace, rce) {
    var acelm = document.getElementById(ace);
    var rcelm = document.getElementById(rce);

    var acelmdisplay = (comment == '' ? '' : 'none');
    var rcelmdisplay = (comment == '' ? 'none' : '');

    if (acelm)
        acelm.style.display = acelmdisplay;

    if (rcelm)
    {
        rcelm.style.display = rcelmdisplay;    
        rcelm.setAttribute('title', comment);
    } // end if
}
