﻿var _webSiteName = ''; '/bp'; '/byggplast-batprylar.se';
var LOADING_IMAGE = "<img src='App_Themes/Default/Images/ProgressIndicator.gif' title='Laddar' class='marginLeft' />";
var _retailerID = 0;
var _categoryID = 0;
var _customerID;
var _webSiteID = 13;
var _first = true;
var _articleNo;
var _sender;
var _quantity;
var _loading = false;
var _storesExists = false;
var _nodePath;
//Thease are used for checkout total amount
var _postalFee = 0;
var _pickupFee = 0;
var _sumPrice = 0;
var _shippingFee = 0;

DisableBackground();

function ExecuteAjax(paramArray, method, successCallBack, errorCallBack) {
    //Create list of parameters in the form:
    //{"paramName1":"paramValue1","paramName2":"paramValue2"}    
    var paramList = '';
    if (paramArray.length > 0) {
        for (var i = 0; i < paramArray.length; i += 2) {
            if (paramList.length > 0) paramList += ',';
            paramList += '"' + paramArray[i] + '":"' + paramArray[i + 1] + '"';
        }
    }
    //string customerID, int retailerID, string loadGrid, string searchText,int  maxCount)
    paramList = '{' + paramList + '}';

    $.ajax({
        type: "POST",
        url: "ByggplastService.svc/" + method,
        data: paramList,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successCallBack,
        error: errorCallBack
    });
}




function LoadCart(customerID, retailerID) {

    var cartGrid = document.getElementById('divAjaxCartGrid');
    ClearAjaxDivElements(false);

    var isCheckoutPage = document.getElementById("isCartGridPage") != null;
    var isCartGridPage = document.getElementById("isCartGridPage") != null;


    Loading('divAjaxCartGrid');

    ExecuteAjax(["customerID", customerID, "retailerID", retailerID, "loadGrid", isCartGridPage, "loadCheckout", isCheckoutPage], "LoadCart", OnDocumentUpdated, OnError);

}

function GetPopularArticlesByCategory(retailerID, categoryID) {
    if (_loading)
        return false;
    _loading = true;

    _categoryID = categoryID;
    Loading(_categoryID);
    ExecuteAjax(["retailerID", _retailerID, "categoryID", categoryID], "GetPopularArticlesByCategory", OnControlLoadedFromCategory, OnError);
}

// bad name not extended
function SearchExtendedArticlesFromCategory(sender, searchText, categoryID, categoryName, showRefine, isCategorySearch) {
    _categoryID = categoryID;
    
    // close if open
    if ($("#" + _categoryID).is(":visible")) {
        $("#" + _categoryID).slideUp("slow");
        //$(".slideUpDown").val() = "Visa träffarna i denna varugrupp";
        return false;
    }

    //$(".slideUpDown").val() = "Dölj träffarna i denna varugrupp";

    if (_loading)
        return false;

    if (searchText.trim().length > 2) {
        _loading = true;
        //ClearAjaxDivElements(true, true);
        //alert($get(sender.id).innerHTML);
        
        var div = document.getElementById(_categoryID);
        Loading(div.id);
        ExecuteAjax(["searchExtended", false, "retailerID", _retailerID, "searchText", searchText, "categoryID", categoryID, "maxCount", 500, "headerText", categoryName, "showRefine", showRefine, "isCategorySearch", isCategorySearch, "groupResult", true], "SearchArticles", OnControlLoadedFromCategory, OnError);
    }

    return false;
}

function LoadSectionListFromCategory(categoryID) {
    _categoryID = categoryID;
    if ($("#" + _categoryID).is(":visible")) {
        $("#" + _categoryID).slideUp("slow");
        return false;
    }

    scroll(0, 0);        
    var headerRow = $("#" + _categoryID + "Header").html();
    var resultRow = "<tr style='border: none;'><td colspan='4'><div id='" + _categoryID + "' class='categoryResult' style='display: none;' /></td></tr>";

    $("#" + _categoryID + "Header").remove();
    $(".categoryTable").prepend("<tr onmouseover='HandleOver(this);' onmouseout='HandleOut(this);' id='" + _categoryID + "Header'>" + headerRow + "</tr>" + resultRow);
       
    scroll(0, 0);
    
    //ClearAjaxDivElements(true, true);
    //scroll(0, 0);
    Loading(_categoryID);
    method = "LoadSectionList";

    //CreateBreadCrumb(_node, _categoryID);

    ExecuteAjax(["webSiteID", _webSiteID, "categoryID", _categoryID, "retailerID", _retailerID, "customerID", _customerID, "hideRefine", true], method, OnControlLoadedFromCategory, OnError);
    return false;
}

function SearchExtendedArticles(searchText, categoryID) {
    if (_loading)
        return false;
    if (searchText.trim().length > 2) {
        ClearAjaxDivElements(true, true);
        Loading('divAjaxContent');
        ExecuteAjax(["searchExtended", true, "retailerID", _retailerID, "searchText", searchText, "categoryID", categoryID, "maxCount", 500, "headerText", "Förfina din sökning med ytterligare sökord:", "showRefine", true,"groupResult", true], "SearchArticles", OnControlLoaded, OnError);
    }

    return false;
}

function SearchAllArticles(searchText, categoryID, maxCount) {

    return DoSearch(searchText, categoryID, maxCount, true, "Sök produkter:");

}

function DoSearch(searchText, categoryID, maxCount, groupResult, headerText ) {
    if (_loading)
        return false;
    if (searchText.trim().length > 2 || categoryID > 0) {
        ClearAjaxDivElements(true, true);
        //document.getElementById('divAjaxContent').innerHTML = LOADING_IMAGE;
        Loading('divAjaxContent');
        scroll(0, 0);
        ExecuteAjax(["searchExtended", false, "retailerID", _retailerID, "searchText", searchText, "categoryID", categoryID, "maxCount", maxCount, "headerText", headerText, "groupResult", groupResult, "showRefine",true], "SearchArticles", OnControlLoaded, OnError);
    }
    return false;
}

function SearchAllArticlesFromTradeMark(searchText, categoryID, maxCount) {
    var title = searchText;
    var crumb = "<a style='cursor:pointer' onclick='return SearchAllArticles2(\"" + searchText + "\"," + categoryID + "," + 500 + ");'>" + title + "</a>";
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    divBreadCrumb.innerHTML = "Du är här: " + crumb;
    return DoSearch(searchText, categoryID, maxCount, false, "Artiklar från "  + title);
}

function SearchAllArticles2(searchText, categoryID, maxCount) {

    if (_loading)
        return false;
    ClearAjaxDivElements(true, true);
    //document.getElementById('divAjaxContent').innerHTML = LOADING_IMAGE;
    Loading('divAjaxContent');
    ExecuteAjax(["searchExtended", false, "retailerID", _retailerID, "searchText", searchText, "categoryID", categoryID, "maxCount", maxCount, "headerText", "Sök produkter:", "showRefine", true,"groupResult",true], "SearchArticles", OnControlLoaded, OnError);

    var title = "Sök";
    var crumb = "<a style='cursor:pointer' onclick='return SearchAllArticles2(\"" + searchText + "\"," + categoryID + "," + 500 + ");'>" + title + "</a>";
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    divBreadCrumb.innerHTML = "Du är här: " + crumb;

    return false;
}

// Iterate through the cart and save all articles
function SaveWholeCart(customerID, retailerID, val, tableID) {

    var articleNos = "";
    var quantitys = "";

    $('#' + tableID + ' TR').each(function() {
        var tr = $(this);
        var articleNo = "";
        var quantity;
        var idx = 0;
        tr.find('TD').each(function() {
            var col = $(this);
            if (idx == 0) {
                articleNo = col.text().trim();
            }
            if (idx == 4) {
                quantity = col.find('INPUT').val();
            }
            idx++
        });
      
        if (articleNo.length > 0 && IsNumeric(quantity)) {
            articleNos += articleNo + '_';
            quantitys += quantity + '_';
        }
    });
    
    UpdateCart(articleNos, customerID, quantitys, retailerID)
    return false;
}
function AddToCart(sender, articleNo, customerID, quantity, retailerID) {
    if (_loading)
        return false;
    quantity = quantity.replace('.', ',');
    if (IsNumeric(quantity)) {

        if (_storesExists == "True" || _storesExists == "true") {
            if (_first && _retailerID == 0 && document.getElementById("hiddenCustomerHasNoArtices") != null) {

                $("#divWebShopQuestion").centerInClient();
                $("#divWebShopQuestion").show();
                _sender = sender;
                _articleNo = articleNo;
                _quantity = quantity;
                _first = false;
                return;
            }
        }
        

        _loading = true;

        var isCheckoutPage = document.getElementById("isCheckoutPage") != null;
        var isCartGridPage = document.getElementById("isCartGridPage") != null;

        $(sender).effect("transfer", { to: $("#divAjaxCart") }, 500, ExecuteAjax(["customerID", _customerID, "articleNo", articleNo, "quantity", quantity, "retailerID", retailerID, "loadGrid", isCartGridPage, "loadCheckout", isCheckoutPage], "AddToCart", OnArticleAdded, OnError), OnError);
    }
    else {
        alert("Välj antal artiklar!");
    }
}

function GoToChooseRetailer(buyInShop) {
    if (_loading)
        return false;

    $("#divWebShopQuestion").hide();
    if (buyInShop) {
        ClearAjaxDivElements(true, true);
        LoadRetailers();
        var title = "Välj butik att handla hos";
        var crumb = "<a style='cursor:pointer' onclick='return LoadRetailers();'>" + title + "</a>";
        var divBreadCrumb = document.getElementById("divBreadCrumb");
        divBreadCrumb.innerHTML = "Du är här: " + crumb;

    }
    else {
        AddToCart(_sender, _articleNo, _customerID, _quantity, _retailerID);
    }
    return false;

}
function GoToChooseRetailerPrint() {


    ClearAjaxDivElements(true, true);
    Loading("divAjaxContent");
    ExecuteAjax(["customerID", _customerID, "forPrinting", true,"regionID","-1", "searchText", 'ALL'], "ChooseRetailer", OnControlLoaded, OnError);
    var title = "Välj butik för utskrift";
    var crumb = "<a style='cursor:pointer' onclick='return GoToChooseRetailerPrint();'>" + title + "</a>";
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    divBreadCrumb.innerHTML = "Du är här: " + crumb;
    return false;
}

function ChooseRetailerByAddress(forPrinting) {

    var searchText = $("#searchTextBox").val();
    ClearAjaxDivElements(true, true);
    Loading("divAjaxContent");
    ExecuteAjax(["customerID", _customerID, "forPrinting", forPrinting, "regionID", -1, "searchText", searchText], "ChooseRetailer", OnControlLoaded, OnError);

    return false;
}
function LoadRetailersWithSorting(sortBy,forPrinting, searchText,regionID) {
    Loading("divAjaxContent");
    ExecuteAjax(["customerID", _customerID, "forPrinting", forPrinting, "regionID", regionID, "searchText", searchText, "sortBy", sortBy], "ChooseRetailer", OnControlLoaded, OnError);
    return false;
}
function ChooseRetailerByRegion(drp, forPrinting) {
    var regionID = drp.value;
    ClearAjaxDivElements(true, true);
    Loading("divAjaxContent");
    ExecuteAjax(["customerID", _customerID, "forPrinting", forPrinting, "regionID", regionID, "searchText", ""], "ChooseRetailer", OnControlLoaded, OnError);
    return false;
}
function LoadRetailers() {
    Loading("divAjaxContent");
    ExecuteAjax(["customerID",_customerID,"forPrinting",false,"regionID", -1,"searchText", "ALL"], "ChooseRetailer", OnControlLoaded, OnError);
    return false;
}
//Add the selected article to cart and go to Retailer store
function GoToRetailer(retailerID) {
    _retailerID = retailerID;
    if (_sender != null) {
        ExecuteAjax(["customerID", _customerID, "articleNo", _articleNo, "quantity", _quantity, "retailerID", _retailerID, "loadGrid", false, "loadCheckout", false], "AddToCart", null, null)
    }
    ClearAjaxDivElements(true, true);
    Loading("divAjaxContent");
    window.location.href = "http://" + window.location.host + "/Start.aspx?RetailerID=" + _retailerID;
    //window.location.href = "http://" + window.location.host + _webSiteName + "/Start.aspx?RetailerID=" + _retailerID;

    return false;
}

function ValidateAccept() {
   
   
    if ($("#chkAccept").attr('checked') == false) {
        alert("Du  måste godkänna köpvillkoren för att kunna lägga ordern.");
        return false;
    }
    else
        return true;
        

}


function ValidateAccept2() {
    if (getInternetExplorerVersion() < 1000) {
   
        if ($("#divCheckout :a").attr("disabled")) {
            if ($("#chkAccept").attr('checked') == false) {
                alert("Du  måste godkänna köpvillkoren för att kunna lägga ordern.");
                return false;
            }
            else
                return true;
        }
    }
}
function OnCheckoutAcceptChange(sender) {

    if ($(sender).attr('checked')) {

        $("#divCheckout :a").attr("disabled", false);
        $("#divCheckout :href").attr("disabled", false);
    }
    else {
        $("#divCheckout :a").attr("disabled", true);
        $("#divCheckout :href").attr("disabled", true);
    }
}
function CreateOrder(txtFirstName, txtLastName, txtAddress, txtZipCode,
                    txtCity, txtEmail, txtEmail2, txtPhone, txtDelAddress,
                    txtDelZipCode, txtDelCity, txtComments, getItems, advancePayment, txtCountry, chkSameAsInvoice) {


    if (_loading)
        return false;

    if (ValidateAccept() == false)
        return false;
    scroll(0, 0);
    if (!ValidateField(txtFirstName, "förnamn"))
        return false;
    if (!ValidateField(txtLastName, "efternamn"))
        return false;
    if (!ValidateField(txtAddress, "adress"))
        return false;
    if (!ValidateField(txtZipCode, "postnummer"))
        return false;
    if (!ValidateField(txtCity, "postort"))
        return false;
    if (!ValidateField(txtEmail, "e-post"))
        return false;

    if (txtEmail.indexOf("@") < 1 || txtEmail.indexOf(".") < 3) {
        alert("Epost-adressen är inte korrekt.");
        return false;
    }
    if (!ValidateField(txtPhone, "telefonnummer"))
        return false;
    if (txtEmail != txtEmail2) {
        alert("Epost-adresserna översstämmer inte.");
        return false;
    }
    if (!chkSameAsInvoice) {
        if (!ValidateField(txtDelAddress, "leveransadress"))
            return false;
        if (!ValidateField(txtDelZipCode, "leverans-postnummer"))
            return false;
        if (!ValidateField(txtDelCity, "leverans-postort"))
            return false;
 
    }
    else {
        if (txtDelAddress.length == 0)
            txtDelAddress = txtAddress;
        if (txtDelZipCode.length == 0)
            txtDelZipCode = txtZipCode;
        if (txtDelCity.length == 0)
            txtDelCity = txtCity;

    }
    ClearAjaxDivElements(true, true);

    //This should be a generic method
    Loading('divAjaxContent');


    ExecuteAjax(["customerID", _customerID, "retailerID", _retailerID,
   "firstName", txtFirstName, "lastName", txtLastName, "address", txtAddress,
   "zipCode", txtZipCode, "city", txtCity, "email", txtEmail, "phone", txtPhone,
   "delAddress", txtDelAddress, "delZipCode", txtDelZipCode, "delCity", txtDelCity,
   "comments", txtComments, "country", txtCountry, "shipItems", !getItems, "advancePayment", advancePayment],
   "CreateOrder", OnOrderCreated, OnError);
    return false;
}

//Used in checkout
function ToggleCheckboxes(checkBox1, checkBox2) {

    checkBox2.checked = !checkBox1.checked;
    SetCheckoutSum();
}
function ToggleAdvancePayment() {
//    if ($("#chkAdvancePayment").is(':checked')) {
//        $("#chkAdvancePayment").attr("disabled", false);
//    }
//    else {
//        $("#chkAdvancePayment").attr("disabled", true);
    //   }

    if ($("#chkAdvancePayment").is(':checked')) {
        if (badBrowser())
            $("#divAdvancePaymentInfo").show();
        else
            $("#divAdvancePaymentInfo").css("opacity", 1);
    }
    else {
        if (badBrowser())
            $("#divAdvancePaymentInfo").hide();
        else
            $("#divAdvancePaymentInfo").css("opacity", 0.4);
    }
  
    var value = SetCheckoutSum();
    $("#divPayInfo").html("Sätt in " + value + ":- på följande konto:");
  
}


//Calcs the total order value and prints it out on the page
function SetCheckoutSum() {
    var value = _sumPrice;
    //Ship items?
    if ($("#chkShipItemsStore").is(':checked')) {
    $("#chkAdvancePayment").attr("disabled", false);
        value += _shippingFee;
        //Pay in advance?
        if (!$("#chkAdvancePayment").is(':checked')) {
            value += +_postalFee;
        }
    }
    else {
        $("#chkAdvancePayment").attr("disabled", true);
        value += _pickupFee;
    }
    $("#lblTotalAmount").html("Totalt:" + value + ":-");
    return value;
}

//Order has been created
function OnOrderCreated(data) {

    if (data.d.indexOf("ERROR") > -1) {
        _loading = false;
        alert("Något gick fel:" + data.d);
        return;
    }
    if (data.d.indexOf("VALIDATION_ERROR") > -1) {
        _loading = false;
        alert("Ordern kunde inte skapas! Har nu fyllt i alla adress och personuppgifter?");
        return;
    }

    LoadCart(_customerID, _retailerID);
    OnControlLoaded(data);
}

function ValidateField(value, field) {
    if (value.length == 0) {
        alert("Du måste ange " + field + ".");
        return false;
    }
    else
        return true;
}
//Gets the cart grid, the loadQuickSearch should be loaded the first time, not when something is addeto
//cart from the quicksearch
function GetCart(customerID, retailerID, loadQuickSearch) {


    ClearAjaxDivElements(true, loadQuickSearch);
    scroll(0, 0);
    Loading("divAjaxContent");

    if (loadQuickSearch)
        ExecuteAjax(["customerID", customerID, "retailerID", retailerID, "searchText", ""], "LoadCartGridSearch", OnTopControlLoaded, OnError);

    ExecuteAjax(["customerID", customerID, "retailerID", retailerID], "LoadGridCart", OnControlLoaded, OnError);

    var title = "Inköpslistan";

    if (_retailerID > 0)
        title = "Kundvagnen";
    var crumb = "<a style='cursor:pointer' onclick='return GetCart(\"" + _customerID + "\"," + _retailerID + "," + loadQuickSearch + ");'>" + title + "</a>";
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    divBreadCrumb.innerHTML = "Du är här: " + crumb;

    return false;
}

function SearchByArticleNo(searchText) {
    if (_loading)
        return false;

    ExecuteAjax(["customerID", _customerID, "retailerID", _retailerID, "searchText", searchText], "LoadCartGridSearch", OnTopControlLoaded, OnError);
    return false;
}

function GetCheckout() {

    if (_loading)
        return false;

    ClearAjaxDivElements(true, true);
    scroll(0, 0);
    //This should be a generic method

    Loading("divAjaxContent");

//    var chkNotShipItems = document.getElementById("#chkGetItemsFromStore");
//    var shipItemsBool = true;
//    if (chkNotShipItems != null)
//        shipItemsBool = !chkNotShipItems.checked;
    ExecuteAjax(["customerID", _customerID, "retailerID", _retailerID], "GetCheckout", OnCheckoutLoaded, OnError);
    return false;
}
var _checkoutHtml;
function OnCheckoutLoaded(data) {


    document.getElementById('divAjaxContent').innerHTML = data.d[0];
    document.getElementById('txtFirstName').value = data.d[1];
    document.getElementById('txtLastName').value = data.d[2];
    document.getElementById('txtAddress').value = data.d[3];
    document.getElementById('txtZipCode').value = data.d[4];
    document.getElementById('txtCity').value = data.d[5];
    document.getElementById('txtEmail').value = data.d[6];
    document.getElementById('txtEmail2').value = data.d[6];
    document.getElementById('txtPhone').value = data.d[7];
    document.getElementById('txtDelAddress').value = data.d[8];
    document.getElementById('txtDelZipCode').value = data.d[9];
    document.getElementById('txtDelCity').value = data.d[10];
    document.getElementById('txtCountry').value = data.d[11];

    if (data.d[12] == "1" || data.d[12] == "2")
        document.getElementById('divShippingType').style.display = "none";
    if (data.d[12] != "2")
        document.getElementById('divGetfromStoreOnly').style.display = "none";


 

    if (data.d[12] == "2") // Get only
        document.getElementById('chkGetItemsFromStore').checked = true;

    //Send or choose
    if (data.d[12] == "3" || data.d[12] == "1")
    {
        document.getElementById('chkGetItemsFromStore').checked = false;
        var info;
        var freight;
        if (data.d[14].length > 0) {
            freight = "(Frakt:" + data.d[14] + ":-";
            info = freight;
            _shippingFee = parseFloat(data.d[14]);
            
        }
        
        if(data.d[13].length > 0) {
            if (parseFloat(data.d[13]) > 0) {
                info += ", Postförskottsavg:" + data.d[13] + ":-";
                 _postalFee = parseFloat(data.d[13]);
            }
        }
        info = info.trim();
        if (info.length > 0)
            info += ")";
        _sumPrice = parseFloat(data.d[16]);
        $("#divPostItemsInfo").html(info);
        if (data.d[12] == "1")
            $("#divPostItemsInfo3").html(info);
        
        if (freight.length > 0) {
            freight += ")";
            $("#divPostItemsInfo2").html(freight);
        }
        //The store allows advance payment
        if (data.d[17].length > 0) {

            $("#divBankName").html(data.d[17])
            $("#divAccount").html(data.d[18])
            $("#divAdvancePaymentContainer").show();

            if (badBrowser())
                $("#divAdvancePaymentInfo").hide();
            else
                $("#divAdvancePaymentInfo").css("opacity", 0.4);
        }
        

    }
    //Get or choose
    if (data.d[12] == "2" || data.d[12] == "3") {

        if (parseFloat(data.d[15]) > 0) {
            $("#divPickupFee").html("(Administrationsavgift för hämtning:" + data.d[15] + ":-)");
            _pickupFee = parseFloat(data.d[15]);
        }

    }
    //Calc total order sum
    SetCheckoutSum();
    
    //Disable small cart
    ToggleCart(false);
    _loading = false;

    $("#divCheckout :a").attr("disabled", true);
    $("#divCheckout :href").attr("disabled", true);

    var title = "Kassan";
    var crumb = "<a style='cursor:pointer' onclick='return GetCheckout();'>" + title + "</a>";
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    divBreadCrumb.innerHTML = "Du är här: " + crumb;
    
}


function ToggleCart(enable) {

    if (document.getElementById("hiddenCustomerHasNoArtices") != null)
        enable = false;

    $("#divAjaxCart :input").attr("disabled", !enable);
    $("#divAjaxCart :a").attr("disabled", !enable);
    $("#divAjaxCart :href").attr("disabled", !enable);
}

function UpdateCart(articleNo, customerID, quantity, retailerID) {

    if (_loading)
        return false;

    var hasMany = !IsNumeric(quantity) && quantity.indexOf('_') > 0;
    try {
        quantity = quantity.replace('.', ',');
    }
    catch (e) { }
    if (IsNumeric(quantity) || hasMany) {
        ToggleCart(false);
        var isCheckoutPage = document.getElementById("isCheckoutPage") != null;
        var isCartGridPage = document.getElementById("isCartGridPage") != null;
        ExecuteAjax(["customerID", customerID, "articleNo", articleNo, "quantity", quantity, "retailerID", retailerID, "loadGrid", isCartGridPage, "loadCheckout", isCheckoutPage], "UpdateCart", OnDocumentUpdated, OnError);
    }

}


function ClearCart() {

    if (_loading)
        return false;
    if (confirm("Ta bort alla artiklar?")) {
        ToggleCart(false);
        var isCheckoutPage = document.getElementById("isCheckoutPage") != null;
        var isCartGridPage = document.getElementById("isCartGridPage") != null;
        ExecuteAjax(["customerID", _customerID, "retailerID", _retailerID, "loadGrid", isCartGridPage, "loadCheckout", isCheckoutPage], "ClearCart", OnDocumentUpdated, OnError);
    }
}

function OnDocumentUpdated(data) {

    $("#ajaxDisable").hide();
    if (data.d[0] != null) {
        var smallCart = document.getElementById('divAjaxCart');
        if (smallCart != null) {
            smallCart.innerHTML = data.d[0];
            var cartHeight = $("#divAjaxCart").height() + "px";
            cartHeight = "3px";
            $("#divTrademark").css("top", cartHeight);
            ToggleCart(true);

        }
    }

    if (data.d[1] != null && data.d[1].length > 0) {

        var cartGrid = document.getElementById('divAjaxContent');
        if (cartGrid != null)
            cartGrid.innerHTML = data.d[1];

    }
    _loading = false;
}

// Do onthing with result
function OnOk(data) {
    _loading = false;
}

function ShakeCart() {
    $("#divAjaxCart").effect("shake", { times: 1, direction: "up" }, 300);
}

function OnError(xhr, ajaxOptions, thrownError) {
    _loading = false;
    alert("Något gick fel:" + xhr.status + " " + xhr.responseText);
}
function IsNumeric(sText) {
    var ValidChars = "0123456789.,";
    var ValidChars2 = "0123456789";
    var IsNumber = true;
    var Char;

    if (sText.length == 0)
        return false;
    try {

        if (ValidChars2.indexOf(sText.charAt(0)) == -1)
            return false;
    }
    catch (e) {return true; }
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;

}

function flickrCart() {
    $("#divAjaxCart").slideUp();
    $("#divAjaxCart").slideDown();
}

//function OnRetailerMenuClick(id) {

//    if (_loading)
//        return false;


//    var item = $("#" + id).context.activeElement;

//    try {
//        var tmpValue = item.href.split(',')[1];
//        id = tmpValue.substring(1, tmpValue.length - 2);
//    } catch (e) {
//        return false;
//    }

//    _loading = true;
//    ClearAjaxDivElements(true, true);
//    ExecuteAjax(["pageID", id, "retailerID", _retailerID], "GetRetailerPage", OnPageUpdated, OnError);
//    return false;
//}




function ClearAjaxDivElements(clearStrd, clearTop) {
    var items = $(".ajaxDiv");
    var i;
    for (i = 0; i < items.length; i++) {
        if (clearStrd == true || items[i].id != "divContentPlaceHolder")
            items[i].innerHTML = "";
    }
    if (clearTop) {
        $("#divAjaxTopContent").html("");

    }

}
var _node;
//treeview
function OnClientNodeExpanded(sender, eventArgs) {
    return OnTreeNodeClicked(sender, eventArgs);
}

function OnTreeNodeClicked(sender, eventArgs) {    
    if (_loading)
        return;
    try {
        eventArgs.set_cancel(true);

    }
    catch (x) { }
    _loading = true;
    treeCollapseAllNodes(sender);
    var node = eventArgs.get_node();
    var ul = node.get_childListElement();
    if (ul != null)
        ul.style.background = "#E8E8E8";
        
 

    scroll(0, 0);
    _node = eventArgs.get_node();

    _categoryID = _node.get_category();
    ClearAjaxDivElements(true, true);
    scroll(0, 0);
    Loading('divAjaxContent');
    var divBreadCrumb = document.getElementById("divBreadCrumb");

    var isLowest = _node._getChildren().get_count() == 0;

    if (divBreadCrumb != null) {
        CreateBreadCrumb(_node, _categoryID);
    }
   
    if (isLowest)
        ExecuteAjax(["webSiteID", _webSiteID, "categoryID", _categoryID, "customerID", _customerID], "LoadSectionList", OnSectionLoaded, OnError);
    else
        ExecuteAjax(["webSiteID", _webSiteID, "categoryID", _categoryID, "customerID", _customerID, "breadCrumb", _nodePath], "LoadAList", OnSectionLoaded, OnError);
    treeExpandAllNodes(node);

}
function treeExpandAllNodes(node) {

    while (node.get_parent() != null) {


        if (node.get_parent() == node.get_treeView())
            break;
        else
            node = node.get_parent();
    }
    node.expand();
    var nodes = node.get_nodes();

    for (var i = 0; i < nodes.get_count(); i++) {
        nodes.getItem(i).expand();
    }

}
function treeCollapseAllNodes(treeView) {
   
    var nodes = treeView.get_allNodes();

    for (var i = 0; i < nodes.length; i++) {
        if (nodes[i].get_nodes() != null) {
            nodes[i].collapse();
        }
    }
}

//treeview
function LoadSectionList(categoryID, isLowest) {
    scroll(0, 0);

    _categoryID = categoryID;
    ClearAjaxDivElements(true, true);
    scroll(0, 0);
    Loading('divAjaxContent');


    CreateBreadCrumb(_node, _categoryID);
    if (isLowest)
        ExecuteAjax(["webSiteID", _webSiteID, "categoryID", _categoryID, "customerID", _customerID, ], "LoadSectionList", OnSectionLoaded, OnError);
    else
        ExecuteAjax(["webSiteID", _webSiteID, "categoryID", _categoryID, "customerID", _customerID, "breadCrumb", _nodePath], "LoadAList", OnSectionLoaded, OnError);




  
}

function CreateBreadCrumb(node, categoryID) {
    //alert('CreateBreadCrumb');
    if (node == null)
        return;
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    var crumb = "";
    _nodePath = ''
    while (node.get_parent() != null) {

        if (node.get_category() <= categoryID) {
            var isLowest = node._getChildren().get_count() == 0;
            var path = node.get_text();
            _nodePath = path + ">" + _nodePath;
            crumb = "<a style='cursor:pointer' onclick='return LoadSectionList(" + node.get_category() + "," + isLowest + ");'>" + path + "</a> > " + crumb;
        }
        node = node.get_parent();
    }
    divBreadCrumb.innerHTML = "Du är här: " + crumb.substring(0, crumb.length - 2);
}

function SetBreadCrumb(title, link) {
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    divBreadCrumb.innerHTML = "Du är här: <a href = '" + link + "'>" + title+ "</a>";
}
function OnBreadCrumbNodeClicked(category) {

}
function OnSectionLoaded(data) {
    //SearchAllArticles("", _categoryID, 20);
    var divSection = document.getElementById('divAjaxContent');

    if (divSection != null)
        divSection.innerHTML = data.d;

    var searchBoxSections = $("#sectionSearchTextBox");

    if (searchBoxSections != null) {
        //searchBoxSections.autocomplete('AutoCompleteHandler.ashx?RetailerID=' + _retailerID);
        searchBoxSections.focus();
    }
    ToggleCart(true);
    _loading = false;
}
var _isPopup = false;
function ShowSectionImages(sender, sectionID, isPopup) {
    _isPopup = isPopup;
    var pos = $(sender).offset();
    var width = $(sender).width();
    var height = $(sender).height();
    //alert(pos.left);
    //alert(pos.top);
    //show the menu directly over the placeholder

    var item;
    if (_isPopup) {
        item = $("#divPopupSectionImages");
        item.css({ "left": (90) + "px", "top": 200 + "px" });
    }
    else {
        item = $("#divSectionImages");
        item.css({ "left": (pos.left + width) + "px", "top": (pos.top - 160) + "px" });
    }
    
    
    item.css({ "background-color": "#FFFFFF" });
    ExecuteAjax(["sectionID", sectionID], "GetSectionImages", OnSectionImagesLoaded, OnError);

}

function HideSectionImages() {
    var item;
    if (_isPopup)
        item = $("#divPopupSectionImages");
    else
        item = $("#divSectionImages");
    
    item.html('');
    item.hide();
}

function OnSectionImagesLoaded(data) {
    var item;
    if (_isPopup)
        item = $("#divPopupSectionImages");
    else
        item = $("#divSectionImages");

    item.html(data.d);
    item.show();
    item.css("border", "solid 1px #C4C4C4");
}


function OnControlLoaded(data) {
    var divSection = document.getElementById('divAjaxContent');

    if (divSection != null)
        divSection.innerHTML = data.d;

    var searchBox = document.getElementById("searchTextBoxGrid");
    if (searchBox != null) {
        $("#searchTextBoxGrid").autocomplete('/AutoCompleteHandler.ashx?RetailerID=' + _retailerID);
        $("#searchTextBoxGrid").focus();
    }
    ToggleCart(true);
    _loading = false;


}
function OnTopControlLoaded(data) {
    var divSection = document.getElementById('divAjaxTopContent');

    if (divSection != null)
        divSection.innerHTML = data.d;

    var searchBox = document.getElementById('quickSearchTextBox');
    if (searchBox != null) {
        $("#quickSearchTextBox").autocomplete('ArticleNoHandler.ashx?RetailerID=' + _retailerID);
        $("#quickSearchTextBox").focus();
    }
    _loading = false;
}

function OnControlLoadedFromCategory(data) {
    //alert("OnControlLoadedFromCategory");
    $(".categoryResult").not("#" + _categoryID).slideUp("slow");
    var div = document.getElementById(_categoryID);
    div.innerHTML = data.d;
    $("#" + _categoryID).slideDown("slow");
    ToggleCart(true);
    _loading = false;
}

function LoadPage(isRetailer, id, title) {
  
    title = title.trim();
    Loading("divAjaxContent");
    if (isRetailer)
        ExecuteAjax(["pageID", id, "retailerID", _retailerID], "GetRetailerPage", OnControlLoaded, OnError);
    else
        ExecuteAjax(["pageID", id], "GetContentPage", OnControlLoaded, OnError);

    var crumb = "<a style='cursor:pointer' onclick='return LoadPage(" + isRetailer + "," + id + ",\"" + title + "\");'>" + title + "</a>";
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    divBreadCrumb.innerHTML = "Du är här: " + crumb;
}
function ShowArticleInSection(articleNo) {
    Loading('divAjaxArticle');
    ExecuteAjax(["articleNo", articleNo, "retailerID", _retailerID, "customerID", _customerID], "GetArticle", OnArticleLoaded, OnError);
    return false;
}

function GetArticle(articleNo, notWindow) {
    //Loading('divAjax');
    ExecuteAjax(["articleNo", articleNo, "retailerID", _retailerID, "customerID", _customerID, "notWindow", notWindow], "GetArticle", OnArticlePageLoaded, OnError);
}

function GetRandomCampaigns(articleNo) {
    Loading('divAjax');
    ExecuteAjax([], "GetRandomCampaigns", OnArticlePageLoaded, OnError);
}


function GetEngineSearchPage() {
    ClearAjaxDivElements(true, true);
    scroll(0, 0);
    Loading('divAjaxTopContent');
    ExecuteAjax(["retailerID", _retailerID, "customerID", _customerID], "GetEngineSearchPage", OnTopControlLoaded, OnError);

    var title = "Marinmotorsök";
    var crumb = "<a style='cursor:pointer' onclick='return GetEngineSearchPage();'>" + title + "</a>";
    var divBreadCrumb = document.getElementById("divBreadCrumb");
    divBreadCrumb.innerHTML = "Du är här: " + crumb;

    return false;
}
function BindSectionDropDown(drpCategory) {

    ExecuteAjax(["categoryID", drpCategory.value], "GetSectionsByCategory", OnEngineSectionsLoaded, OnError);
}
function OnEngineSectionsLoaded(data) {
    var i;
    var key = 0;
    var result = data.d;
    var drpDrev = $("#ctl00_drpDrevCategory");
    var drpSections = $("#ctl00_drpSection");
    drpSections.html(""); // Clear the dropdowns
    drpDrev.html("");
    $("<option value='0'>Välj modell</option>").appendTo(drpSections);
    $("<option value='0'>Välj drev</option>").appendTo(drpDrev);
    //Add new values to section dropdown and drev-dropdown. drev are oobject with a specific category
    for (i = 0; i < result.length; i += 3) {
        if (result[i + 2] == "713302")
            $("<option value='" + result[i] + "'>" + result[i + 1] + "</option>").appendTo(drpDrev);
        else
            $("<option value='" + result[i] + "'>" + result[i + 1] + "</option>").appendTo(drpSections);
    }
    drpSections.val(0);
    drpDrev.val(0);
    _loading = false;
}
function SearchEngines(drpSection, drpOther) {
    drpOther.val(0);
    //Here we dont clear the divAjaxTopControl, it contains the dropdowns
    ClearAjaxDivElements(true, false);
    Loading('divAjaxContent');
    var sectionID = drpSection.value;
    if (sectionID != "0") {
        ExecuteAjax(["retailerID", _retailerID, "sectionID", sectionID], "GetSection", OnControlLoaded, OnError);
    }
}
function Loading(div) {
    var divAjaxArticle = document.getElementById(div);
    if (divAjaxArticle != null) {
        divAjaxArticle.style.display = "block";
        divAjaxArticle.innerHTML += LOADING_IMAGE;
    }
}

function HideArticle() {
    articleDiv.hide();
    $("#ajaxDisable").fadeOut();
    return false;
}

function OnArticleLoaded(data) {
    var divAjaxArticle = $("#divAjaxArticle");
    if (divAjaxArticle != null) {
        $("#divAjaxArticle").html(data.d);


        var windowWidth = document.documentElement.clientWidth;
        var windowHeight = document.documentElement.clientHeight;

        var popupHeight = $("#divAjaxArticle").height();
        var popupWidth = $("#divAjaxArticle").width();

        //        $("#divAjaxArticle").scrollFollow({
        //            speed: 2000,
        //            offset: 300
        //        });

        articleDiv.show();

        $("#divAjaxArticle").centerInClient();
        $("#divAjaxArticle").css("border", "solid 3px #EEEEEE");


        DisableBackground();

        $("#articleQuantityTextBox").focus();       

    }
    _loading = false;
}
function badBrowser() {
    if ($.browser.msie && parseInt($.browser.version) <= 6)
    { return true; }
    return false;
}

function OnArticlePageLoaded(data) {
    var divAjaxArticle = document.getElementById('divAjax');
    if (divAjaxArticle != null) {
        divAjaxArticle.innerHTML = data.d;
        //var item = articleDiv.show();
        //showdeadcenterdiv(800, 800, item);
    }
    _loading = false;
}


function OnArticleAdded(data) {

    if (data.d[0] != null) {
        var smallCart = document.getElementById('divAjaxCart');
        if (smallCart != null) {
            smallCart.innerHTML = data.d[0];
            var cartHeight = $("#divAjaxCart").height() + "px";
            ShakeCart();
            cartHeight = "-100px";
            //$("#divGridHeader2").css("margin-top", cartHeight , ShakeCart(), OnError);
        }
    }


    _loading = false;
}
function DisableBackground() {

    if (badBrowser() == false) {
        var windowWidth = document.documentElement.clientWidth;
        var windowHeight = document.documentElement.clientHeight;

        $("#ajaxDisable").css({
            "height": windowHeight,
            "width": windowWidth,
            "position": 'fixed',
            "_position": 'absolute',
            "opacity": 0.5,
            "z-index": 999999
        });
        $("#ajaxDisable").show();   //fadeIn("slow");
    }
}


var articleDiv = function() {
    var id2 = 'tt2';
    var top = 3;
    var left = 3;
    var maxw = 600;
    var speed = 25;
    var timer = 20;
    var endalpha = 100;
    var alpha = 0;
    var tt2, h;
    var ie = document.all ? true : false;
    return {
        show: function() {
            if (tt2 == null) {
                tt2 = $get("divAjaxArticle");
                tt2.style.opacity = 0;
                tt2.style.filter = 'alpha(opacity=0)';
            }
            tt2.style.display = 'block';
            tt2.style.visibility = 'visible';
            speed = 20;
            h = parseInt(tt2.offsetHeight) + top;
            clearInterval(tt2.timer);
            tt2.timer = setInterval(function() { articleDiv.fade(1) }, timer);
            return tt2;
        },
        pos: function(e) {

        },
        fade: function(d) {
            var a = alpha;
            if ((a != endalpha && d == 1) || (a != 0 && d == -1)) {
                var i = speed;
                if (endalpha - a < speed && d == 1) {
                    i = endalpha - a;
                } else if (alpha < speed && d == -1) {
                    i = a;
                }
                alpha = a + (i * d);
                tt2.style.opacity = alpha * .01;
                tt2.style.filter = 'alpha(opacity=' + alpha + ')';
            } else {
                clearInterval(tt2.timer);
                if (d == -1) { tt2.style.display = 'none' }
            }
        },
        hide: function() {
            speed = 30;
            if (tt2 != null) {
                clearInterval(tt2.timer);
                tt2.timer = setInterval(function() { articleDiv.fade(-1) }, timer);
            }
        }
    };
} ();


$.fn.centerInClient = function(options) {
    /// <summary>Centers the selected items in the browser window. Takes into account scroll position.
    /// Ideally the selected set should only match a single element.
    /// </summary>    
    /// <param name="fn" type="Function">Optional function called when centering is complete. Passed DOM element as parameter</param>    
    /// <param name="forceAbsolute" type="Boolean">if true forces the element to be removed from the document flow 
    ///  and attached to the body element to ensure proper absolute positioning. 
    /// Be aware that this may cause ID hierachy for CSS styles to be affected.
    /// </param>
    /// <returns type="jQuery" />
    var opt = { forceAbsolute: false,
        container: window,    // selector of element to center in
        completeHandler: null
    };
    $.extend(opt, options);

    return this.each(function(i) {
        var el = $(this);
        var jWin = $(opt.container);
        var isWin = opt.container == window;

        // force to the top of document to ENSURE that 
        // document absolute positioning is available
        if (opt.forceAbsolute) {
            if (isWin)
                el.remove().appendTo("body");
            else
                el.remove().appendTo(jWin.get(0));
        }

        // have to make absolute
        el.css("position", "absolute");

        // height is off a bit so fudge it
        var heightFudge = isWin ? 2.0 : 1.8;

        var x = (isWin ? jWin.width() : jWin.outerWidth()) / 2 - el.outerWidth() / 2;
        var y = (isWin ? jWin.height() : jWin.outerHeight()) / heightFudge - el.outerHeight() / 2;

        var newTop = y + jWin.scrollTop();
        if (newTop < 20)
            newTop = 20;
        el.css("left", x + jWin.scrollLeft());
        el.css("top", newTop);

        // if specified make callback and pass element
        if (opt.completeHandler)
            opt.completeHandler(this);
    });
}

function getInternetExplorerVersion() {
    var rv = 1000;
    // Return value assumes failure.    
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    } return rv;
}

function GetIEVersionVersion() {
    var msg = "You're not using Windows Internet Explorer.";
    var version = getInternetExplorerVersion();
    return version;


}

