﻿function XHConn() {
    var xmlhttp, bComplete = false;
    try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) {
        try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
        catch (e) {
            try { xmlhttp = new XMLHttpRequest(); }
            catch (e) { xmlhttp = false; } 
        } 
    }
    if (!xmlhttp) return null;
    this.connect = function(sURL, sMethod, sVars, fnDone) {
        if (!xmlhttp) return false;
        bComplete = false;
        sMethod = sMethod.toUpperCase();
        try {
            if (sMethod == "GET") {
                xmlhttp.open(sMethod, sURL + "?" + sVars, true);
                sVars = "";
            }
            else {
                xmlhttp.open(sMethod, sURL, true);
                xmlhttp.setRequestHeader("Method", "POST " + sURL + " HTTP/1.1");
                xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
            }
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && !bComplete) {
                    bComplete = true;
                    fnDone(xmlhttp);
                } 
            };
            xmlhttp.send(sVars);
        }
        catch (z) { return false; }
        return true;
    };
    return this;
}

// doAJAXCall : Generic AJAX Handler, used with XHConn
// Author : Bryce Christensen (www.esonica.com)
// PageURL : the server side page we are calling
// ReqType : either POST or GET, typically POST
// PostStr : parameter passed in a query string format 'param1=foo&param2=bar'
// FunctionName : the JS function that will handle the response

var doAJAXCall = function(PageURL, ReqType, PostStr, FunctionName) {

    // create the new object for doing the XMLHTTP Request
    var myConn = new XHConn();

    // check if the browser supports it
    if (myConn) {

        // XMLHTTPRequest is supported by the browser, continue with the request
        myConn.connect('' + PageURL + '', '' + ReqType + '', '' + PostStr + '', FunctionName);
    }
    else {
        // Not support by this browser, alert the user
        alert("XMLHTTP not available. Try a newer/better browser, this application will not work!");
    }
}

// launched from button click 
var getMessage = function() {

    // build up the post string when passing variables to the server side page
    var PostStr = "";

    // use the generic function to make the request
    doAJAXCall('/cust/serversidetest.asp', 'POST', '', showMessageResponse);
}

// The function for handling the response from the server
var showMessageResponse = function(oXML) {
    // get the response text, into a variable
    var response = oXML.responseText;
    // update the Div to show the result from the server
    document.getElementById("responseDiv").innerHTML = response;
};

var updateLevAddress = function(value) {
    //alert(value);
    if (!isNaN(value) && value != "0") {
        var PostStr = "id=" + value;
        doAJAXCall('/cust/ajax/updatelevaddress.asp', 'GET', PostStr, updateLevAddressResponse);
    } else if (value == "new") {
        location.href = "/cust/account.asp?f=info&f2=levaddress"
    }
}

var updateLevAddressResponse = function(oXML) {
    var response = oXML.responseText;
    document.getElementById("levaddress").innerHTML = response;
};


var getProjectsByCustomerId = function (currentProject) {
    var customerdropdown = document.getElementById("sel_companies");
    var value = customerdropdown.value;
    if (!isNaN(value) && value != "0") {
        var PostStr = "companyid=" + value + "&currentproject=" + escape(currentProject);
        doAJAXCall('/cust/ajax/getProjectsByCustomer.asp', 'POST', PostStr, getProjectsByCustomerIdResponse);
    }
}

var getReferencesByCustomerId = function (currentRef) {
    var customerdropdown = document.getElementById("sel_companies");
    if (customerdropdown.selectedIndex > 0) {        
        var value = customerdropdown.value;
        var PostStr = "companyid=" + value + "&currentRef=" + currentRef;
        doAJAXCall('/cust/ajax/getReferencesByCustomer.asp', 'POST', PostStr, getReferencesByCustomerIdResponse);
    } else {
        $('#div_custref').hide('fast', function () { });
        document.getElementById("sel_custref").innerHTML = "";
    }
}

var getProjectsByCustomerIdResponse = function (oXML) {
    var response = oXML.responseText;
    document.getElementById("change_Project").innerHTML = response;
    //document.getElementById("om_cust_project").value = "";
};

var getReferencesByCustomerIdResponse = function (oXML) {
    var response = oXML.responseText;
    document.getElementById("sel_custref").innerHTML = response;
    $('#div_custref').show('fast', function () { });
};

var amountTimer = null;
var updateAmount = function (odid, value) {
    clearTimeout(amountTimer);    
    if (!isNaN(value) && value.length > 0) {
        var PostStr = "odid=" + odid + "&amount=" + value;
        amountTimer = setTimeout("executeUpdateAmount('" + PostStr + "')", 1000);        
    }
}
function executeUpdateAmount(PostStr) {
    doAJAXCall('/cust/ajax/updateAmount.asp', 'POST', PostStr, updateAmountResponse);
}
var updateAmountResponse = function (oXML) {
    var updid = "upd_" + oXML.responseText;
    $('#' + updid).slideDown('slow', function () {
        var updhide = setTimeout("$('#" + updid + "').slideUp('slow',function(){});", 1000);
    });
};

var deleteOrderRow = function (odid, odomid, prodid) {
    var PostStr = "odid=" + odid + "&odomid=" + odomid + "&prodid=" + prodid;
    doAJAXCall('/cust/ajax/deleteOrderRow.asp', 'POST', PostStr, deleteOrderRowResponse);
}

var deleteOrderRowResponse = function (oXML) {
    var ResponseArray = oXML.responseText.split(";");
    if (ResponseArray.length > 1) {
        var btn_detail_add_button = document.getElementById("btn_detail_add_button");
        if (btn_detail_add_button != null) {
            btn_detail_add_button.style.display = "block";
            //document.location.href = "/index.asp?product=" + ResponseArray[2];
        }
        var delrow = "tr_" + ResponseArray[1];
        var row = document.getElementById(delrow);
        row.style.display = "none";
        var product_detail_cart = document.getElementById("product_detail_cart");
        if (product_detail_cart != null)
            product_detail_cart.style.display = "none";
    } else {
        var delrow = "tr_" + oXML.responseText;
        var row = document.getElementById(delrow);
        row.style.display = "none";
    }
};

var deleteOrderRowCartPage = function (odid, odomid, prodid) {
    var PostStr = "odid=" + odid + "&odomid=" + odomid + "&prodid=" + prodid;
    doAJAXCall('/cust/ajax/deleteOrderRowCartPage.asp', 'POST', PostStr, deleteOrderRowCartPageResponse);
}

var deleteOrderRowCartPageResponse = function (oXML) {
    var ResponseArray = oXML.responseText.split(";");
    var delrow = null;
    if (ResponseArray.length > 1) {
        //delrow = "tr_" + ResponseArray[1];
        updateCartTable(ResponseArray[1]);
    } else {
        delrow = "tr_" + ResponseArray[0];
        var row = document.getElementById(delrow);
        if (delrow != null) {
            row.style.display = "none";
        }
    }
};

var updateDeliveryDate = function (odid, value) {
    var datepattern = /^\d{4}\-\d{2}\-\d{2}$/;
    if (value.match(datepattern)) {
        var PostStr = "odid=" + odid + "&date=" + value;
        doAJAXCall('/cust/ajax/updateDeliveryDate.asp', 'POST', PostStr, updateDeliveryDateResponse);
    }
}

var updateDeliveryDateResponse = function (oXML) {
    var updid = "date_" + oXML.responseText;
    $('#' + updid).slideDown('slow', function () {
        var updhide = setTimeout("$('#" + updid + "').slideUp('slow',function(){});", 1000);
    });
}

var noteTimer = null;
var updateNote = function (odid, value) {
    clearTimeout(noteTimer);
    if (value.length > 0) {
        var PostStr = "odid=" + odid + "&note=" + escape(value);
        noteTimer = setTimeout("excuteNoteUpdate('" + PostStr + "')", 2000);
    }
}

function excuteNoteUpdate(PostStr) {
    doAJAXCall('/cust/ajax/updateNote.asp', 'POST', PostStr , updateNoteResponse);
}

var updateNoteResponse = function (oXML) {
    var updid = "note_" + oXML.responseText;
    $('#' + updid).slideDown('slow', function () {
        var updhide = setTimeout("$('#" + updid + "').slideUp('slow',function(){});", 1000);
    });
}

var addProduct = function (value) {
    var PostStr = "ProductId=" + value.replace("+", "plus");
    doAJAXCall('/cust/ajax/addProduct.asp', 'POST', PostStr, addProductResponse);    
}

var addProductResponse = function (oXML) {
    var ResponseArray = oXML.responseText.split(";");
    if (ResponseArray.length > 1) {
        var updid = "basketinfo_" + ResponseArray[0];
        $('#' + updid).text(ResponseArray[1]);
        $('#' + updid).show('fast', function () { });
        $('#' + updid).attr("class", "basketinfo");
        var updidbutton = "addbutton_" + ResponseArray[0];
        $('#' + updidbutton).attr("src", "/images/shop/btn_change.gif");
        var updidlink = "addlink_" + ResponseArray[0];
        $('#' + updidlink).attr("href", "/index.asp?product=" + escape(ResponseArray[0]));
        $('#' + updidlink).attr("onclick", "");
        var add_button_large = document.getElementById("btn_detail_add_button");
        if (add_button_large != null)
            add_button_large.style.display = "none";
        var product_detail_cart = document.getElementById("product_detail_cart");
        if (product_detail_cart != null)
            product_detail_cart.style.display = "block";

    }
}

var updateCartTable = function (value) {
    var PostStr = "omid=" + value;
    doAJAXCall('/cust/ajax/updateCartTable.asp', 'POST', PostStr, updateCartTableResponse);
}

var updateCartTableResponse = function (oXML) {
    var tbl_basket = document.getElementById("tbl_basket");
    if (tbl_basket != null) {
        $('#tbl_basket').html(oXML.responseText);
        //tbl_basket.innerHTML = oXML.responseText;
    }
}

var updateCartTableStatic = function (value) {
    var PostStr = "omid=" + value;
    doAJAXCall('/cust/ajax/updateCartTableStatic.asp', 'POST', PostStr, updateCartTableStaticResponse);
}

var updateCartTableStaticResponse = function (oXML) {
    var tbl_basket = document.getElementById("tbl_basket");
    if (tbl_basket != null) {
        $('#tbl_basket').html(oXML.responseText);
        //tbl_basket.innerHTML = oXML.responseText;
    }
}

var updateLastOrderTable = function (value, companyid) {
    var tbl_basket = document.getElementById("div_lastorder");
    if (tbl_basket != null) {
        tbl_basket.innerHTML = "<img src='/images/ajax-loader.gif' alt='Laddar...' />";
    }
    var PostStr = "step=" + value + "&companyid=" + companyid;
    doAJAXCall('/cust/ajax/updateLastOrderTable.asp', 'POST', PostStr, updateLastOrderTableResponse);
}

var updateLastOrderTableResponse = function (oXML) {
    var tbl_basket = document.getElementById("div_lastorder");
    if (tbl_basket != null) {
        tbl_basket.innerHTML = "";
        tbl_basket.innerHTML = oXML.responseText;
    }
}

function updateProductDetailCart (productid, batch, unit) {
    var PostStr = "productid=" + productid.replace("+", "plus") + "&batch=" + batch + "&unit=" + unit;
    doAJAXCall('/cust/ajax/updateCartTableProductDetail.asp', 'POST', PostStr, updateProductDetailCartResponse);
}

var updateProductDetailCartResponse = function (oXML){
    var product_detail_cart = document.getElementById("product_detail_cart");
    if (product_detail_cart != null) {
        product_detail_cart.innerHTML = oXML.responseText;
    }
}

function updateBatchArticleText(omid) {
    var PostStr = "omid=" + omid;
    doAJAXCall('/cust/ajax/updateBatchArticleText.asp', 'POST', PostStr, updateBatchArticleTextResponse);
}

var updateBatchArticleTextResponse = function (oXML) {
    var batchtext = document.getElementById("batchtext");
    if (batchtext != null) {
        batchtext.innerHTML = oXML.responseText;
    }
}
/*
var getDeliveryAddressesByUser = function (value) {
if (!isNaN(value) && value != "0") {
var PostStr = "userid=" + value;
doAJAXCall('/cust/ajax/getDeliveryAddressesByUser.asp', 'POST', PostStr, getDeliveryAddressesByUserResponse);
}
}

var getDeliveryAddressesByUserResponse = function (oXML) {
var response = oXML.responseText;
document.getElementById("change_Project").innerHTML = response;
};
*/

