﻿var VersaAnalyteIDs = new Array();
var VersaAnalyteNames = new Array();
var ProductType = 'VMAP';
var SpecieID = -1;
var ProdCodeID = -1;
var Key = '';
var Qty = '';
var Catno = '';
var CatnoPrefix = '';
var AnalyteMinimum;
var AnalyteLimit;
var Currency = '';
var CategoryID = -1;
var HasAnalytes = false;
var AnalytePrefix = '';

if (!Array.indexOf) {
    Array.prototype.indexOf = function (obj) {
        for (var i = 0; i < this.length; i++) {
            if (this[i] == obj) {
                return i;
            }
        }
        return -1;
    }
}

function InitializeOrderingTool(catno, key) {

    CatnoPrefix = catno;
    Key = key;

    if (!CatnoPrefix) {
        $('#FMAPCustomization').hide();
        $('#AnalyteListing').hide();
        $('#OrderSummary').hide();
    }
    else if (CatnoPrefix.substring(0, 5) == 'VMAPH') {
        AnalytePrefix = 'VMAPH';
        $('#PanelsDropDown').val('');
        CatnoPrefix = 'VMAPH';
        AnalyteMinimum = 0;
        AnalyteLimit = 10;
        $('#FMAPCustomization').hide();
        $('#AnalyteListing').show();
        $('.Notes').show();
        ProdCodeID = 38924;
        GetAnalytes(false);
    }
    else {
        ProductType = 'FCST';
        HasAnalytes = true;
        if (CatnoPrefix.substring(0, 4) == "FCST") {
            AnalytePrefix = 'FCST';
            AnalyteMinimum = 0;
            AnalyteLimit = 10;
            CategoryID = 175;
            $('#AnalyteTitle').text('SELECT UP TO ' + AnalyteLimit + ' ANALYTES');
        }
        else if (CatnoPrefix.substring(0, 7) == "VMAPMAG") {
            AnalytePrefix = 'VMAPMAG';
            AnalyteMinimum = 0;
            AnalyteLimit = 25;
            CategoryID = 194;
            $('#AnalyteTitle').text('SELECT ANALYTES');
        }
        else if (CatnoPrefix.substring(0, 4) == "ARZC") {
            AnalytePrefix = 'ARZC';
            AnalyteMinimum = 3;
            CategoryID = 193;
            AnalyteLimit = 8;
            $('#AnalyteTitle').text('SELECT UP TO ' + AnalyteLimit + ' ANALYTES');
        }
        
        $('#FMAPCustomization').show();
        GetSpecies();
        $('#AnalyteListing').hide();
        $('.Notes').hide();
    }

    CheckGeoLocation();

    if (Key != '') {
        EditOrder();
    }

    LoadTitleCopy();

}

function LoadTitleCopy() {
    RNDSystems.OrderingTool.LoadTitleCopyCatnoPrefix(CatnoPrefix, LoadTitleCopy_callback);
}

function LoadTitleCopy_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        $('#OrderingToolTitle').html($(x).find('Title').text());
        $('#OrderingToolCopy').html($(x).find('Value').text());
    }
}

function CheckGeoLocation() {
    RNDSystems.OrderingTool.CheckGeoLocation(CheckGeoLocation_callback);
}

function CheckGeoLocation_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        Currency = x;
        if (x != 'USA') {
            $('#AddToCartLink').hide();
            $('#USASaveButton').hide();
            $('#NonUSASaveButton').show();
        }
    }
}

function GetSpecies() {
    $('#AnalyteListing').hide();
    RNDSystems.OrderingTool.GetSpeciesByCategory(CategoryID, GetSpecies_callback);
}

function GetSpecies_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        $('#SpeciesDropDown').html(x);
        InitFCST();
    }
}

function GetPanels(reset) {
    if (reset)
        Reset(false);
    $('#AnalyteListing').hide();
    SpecieID = $('#SpeciesDropDown').val();
    if (SpecieID != '') {
        RNDSystems.OrderingTool.GetPanelsByCategory(SpecieID, CategoryID, GetPanels_callback);
    }
    else {
        $('#PanelsDropDown').html('<option value="">--SELECT--</option>');
    }
}

function GetPanels_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        $('#PanelsDropDown').html(x);
        if (ProdCodeID != -1) {
            $('#PanelsDropDown').val(ProdCodeID);
            GetAnalytes(false);
        }
        else
            $('#AnalyteListing').hide();
    }
}

function GetAnalytes(reset) {
    if (reset)
        Reset(false);
    if ($('#PanelsDropDown').val() != '') {
        ProdCodeID = $('#PanelsDropDown').val();
    }
    if (ProdCodeID == -1)
        $('#AnalyteListing').hide();
    else
        RNDSystems.OrderingTool.GetAnalytes(ProdCodeID, GetAnalytes_callback);
}

function GetAnalytes_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        $('#AnalyteListing').show();
        $('#AnalyteList').html(x);
        UpdateSelectedAnalytesDisplay();
    }
}

function AnalyteClick(VersaAnalyteID, VersaAnalyteName) {

    var x = VersaAnalyteIDs.indexOf(VersaAnalyteID);

    if (x >= 0) {
        VersaAnalyteIDs.splice(x, 1);
        VersaAnalyteNames.splice(x, 1);
        RNDSystems.OrderingTool.CheckIncomp(VersaAnalyteID, ClearIncomp_callback);
    }
    else {
        if (VersaAnalyteIDs.length < AnalyteLimit) {
            VersaAnalyteIDs.push(VersaAnalyteID);
            VersaAnalyteNames.push(VersaAnalyteName);
            RNDSystems.OrderingTool.CheckIncomp(VersaAnalyteID, SetIncomp_callback);
        }
        else {
            $('#VersaAnalyteID' + VersaAnalyteID).attr('checked', false);
            alert('You may only select ' + AnalyteLimit + ' analytes.');
        }
    }

    UpdateSelectedAnalytesDisplay();

}

function SetIncomp_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        $(x).find('IncompAnalyte').each(function () {
            var versaAnalyteIncompID = $(this).find('VersaAnalyteIncompID').text();
            var note = $(this).find('Note').text();
            $('#VersaAnalyteID' + versaAnalyteIncompID).attr('disabled', 'true');
            $('#AnalyteName' + versaAnalyteIncompID).attr('style', 'color: gray;');
            $('#NoteText').append("<div id='Note" + versaAnalyteIncompID + "'>" + note + "</div>");
        });
    }
}

function ShowNoteOverlay(NoteID) {
    if ($('#VersaAnalyteID' + NoteID).attr('disabled')) {
        var left = $('#AnalyteName' + NoteID).width() + 20;
        $('#NoteOverlay' + NoteID).css('left', left + 'px');
        $('#NoteOverlay' + NoteID).show();
    }
}

function HideNoteOverlay(NoteID) {
    $('#NoteOverlay' + NoteID).hide();
}

function ClearIncomp_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        $(x).find('IncompAnalyte').each(function () {
            var versaAnalyteIncompID = $(this).find('VersaAnalyteIncompID').text();
            $('#VersaAnalyteID' + versaAnalyteIncompID).removeAttr('disabled');
            $('#AnalyteName' + versaAnalyteIncompID).attr('style', 'color: black;');
            $('#Note' + versaAnalyteIncompID).remove();
        });
    }
}

function UpdateSelectedAnalytesDisplay() {
    if (ProductType == 'FCST') {
        if ($('select option[value=\'' + ProdCodeID + '\']').attr('productcode'))
            CatnoPrefix = $('select option[value=\'' + ProdCodeID + '\']').attr('productcode');
    }
    $('#CatalogNum').empty();
    $('#Price').empty();
    $('#AnalytesSelected').empty();
    if (VersaAnalyteIDs.length > 0) {
        var numAnalytes = VersaAnalyteIDs.length;
        if (numAnalytes < 10)
            numAnalytes = '0' + numAnalytes;
        Catno = CatnoPrefix + '-' + numAnalytes;
        if (numAnalytes >= AnalyteMinimum) {
            $('#CatalogNum').text(Catno);
            GetPrice();
        }
        else {
            $('#CatalogNum').text('');
            $('#Price').text('');
        }
    }
    for (var i = 0; i < VersaAnalyteIDs.length; i++) {
        $('#AnalytesSelected').append('<li>' + $('#AnalyteName' + VersaAnalyteIDs[i]).text() + '</li>');
        $('#VersaAnalyteID' + VersaAnalyteIDs[i]).attr('checked', true);
    }
}

function GetPrice() {
    RNDSystems.OrderingTool.GetPrice(Catno, Currency, GetPrice_callback);
}

function GetPrice_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        $('#Price').text(x);
    }
}

function AddToCart() {
    var NN = 1;
    var CC = $('#CatalogNum').text();
    var AL = VersaAnalyteNames.join('|');
    var K = Key;
    //alert('http://ecom.rndsystemstest.com/index.php?action=wwwaddtocart&wwwqty=' + NN + '&wwwcatno=' + CC + '&wwwanalyte=' + AL + '&wwwkey=' + K);
    location.href = 'http://ecom.rndsystems.com/index.php?action=wwwaddtocart&wwwqty=' + NN + '&wwwcatno=' + CC + '&wwwanalyte=' + AL + '&wwwkey=' + K;
}

function RetrieveSavedOrder() {
    var email = $('#Email').val();
    var referenceNumber = $('#ReferenceNumber').val();
    RNDSystems.OrderingTool.RetrieveSavedOrder(email, referenceNumber, RetrieveSavedOrder_callback);
}

function RetrieveSavedOrder_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        if ($(x).find('Order').attr('ProductType')) {
            Reset(false);
            var catno = $(x).find('Order').attr('CatalogNumber');
            $('#CatalogNum').text($(x).find('Order').attr('CatalogNumber'));
            $('#Price').text($(x).find('Order').attr('Price'));
            ProductType = $(x).find('Order').attr('ProductType');

            InitializeOrderingTool(catno, '');

            setTimeout(function () {
                $(x).find('Analyte').each(function () {
                    var analyteID = parseInt($(this).attr('AnalyteID'));
                    var analyteName = $('#AnalyteName' + analyteID).text();
                    AnalyteClick(analyteID, analyteName);
                });
            }, 1000);

            tb_remove();

        }
        else {
            $('#RetrieveText').append('<br />No matches were found. Please try again.<br /><br />');
        }
    }
}

function EditOrder() {
    Qty = getQuerystring("wwwqty");
    Catno = getQuerystring("wwwcatno");
    var analyteNames = getQuerystring("wwwanalyte");
    $('#CatalogNum').text(Catno);
    $('#Price').text('');

    var versaAnalyteNames = new Array();
    versaAnalyteNames = analyteNames.split('|');

    RNDSystems.OrderingTool.EditOrderByAnalytePrefix(versaAnalyteNames, AnalytePrefix, Catno, EditOrder_callback);

}

function EditOrder_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        if (ProductType == 'FCST') {
            SpecieID = $(x).find('Order').attr('SpecieID');
            ProdCodeID = $(x).find('Order').attr('ProdCodeID');
            $('#SpeciesDropDown').val(SpecieID);
            GetPanels(false);
        }
        setTimeout(function () {
            $(x).find('Analyte').each(function () {
                var analyteID = parseInt($(this).attr('AnalyteID'));
                var analyteName = $('#AnalyteName' + analyteID).text();
                AnalyteClick(analyteID, analyteName);
            });
        }, 1000);
    }
}

function InitFCST() {
    RNDSystems.OrderingTool.InitFCST(CatnoPrefix, InitFCST_callback);
}

function InitFCST_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        SpecieID = $(x).find('Order').attr('SpecieID');
        ProdCodeID = $(x).find('Order').attr('ProdCodeID');
        $('#SpeciesDropDown').val(SpecieID);
        GetPanels(false);
    }
}

function EditOrderSelectAnalytes() {
    for (var i = 0; i <= VersaAnalyteIDs.length; i++) {
        var analyteID = VersaAnalyteIDs[i];
        var analyteName = $('#AnalyteName' + analyteID).text();
    }
}

function SaveOrder() {
    var numAnalytes = VersaAnalyteIDs.length;
    if (numAnalytes >= AnalyteMinimum) {
        var quantity = '1';
        var catalogNumber = $('#CatalogNum').text();
        var price = $('#Price').text();
        var email = $('#Email').val();
        var analytesSelected = $('#AnalytesSelected').html();
        $('#EmailAddress').html(email);
        //RNDSystems.OrderingTool.SaveOrder(email, catalogNumber, quantity, price, VersaAnalyteIDs, ProductType, SpecieID, ProdCodeID, analytesSelected, SaveOrder_callback);
        RNDSystems.OrderingTool.SaveOrderCustomEmail(email, catalogNumber, quantity, price, VersaAnalyteIDs, ProductType, SpecieID, ProdCodeID, analytesSelected, SaveOrder_callback);
    }
    else {
        alert('You must select at least ' + AnalyteMinimum + ' analytes to save your order.');
    }
}

function SaveOrder_callback(res) {
    if (res.error && res.error.Message != 'Unknown')
        alert(res.error.Message)
    else {
        var x = res.value;
        $('#ReferenceNumber').html(x);
        $('#OrderSummarySave').hide();
        $('#ThankYou').show();
        Reset(false);
    }
}

function Reset(resetDropdowns) {
    $('#CatalogNum').empty();
    $('#Price').empty();
    $('#AnalytesSelected').empty();
    $('.AnalyteCheckbox').attr('checked', false);
    $('.AnalyteCheckbox').removeAttr('disabled');
    $('.AnalyteName').attr('style', 'color: black;');
    $('#NoteText').empty();
    var VersaAnalyteIDsLength = VersaAnalyteIDs.length;
    VersaAnalyteIDs.splice(0, VersaAnalyteIDsLength);
    var VersaAnalyteNamesLength = VersaAnalyteNames.length;
    VersaAnalyteNames.splice(0, VersaAnalyteNamesLength);
    ProdCodeID = -1;
    if (resetDropdowns && ProductType == 'FCST') {
        $('#SpeciesDropDown').val('');
        GetPanels(false);
    }
}
