var products_cost = 0,
active_upg = 0,
from_ver = 0,
months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'),
TI_OVERVIEW = 0,
TI_SD = 1,
TI_CS = 2,
TI_CDB = 3,
products = new Array(),
rentalPrices;
var prod_0_in_cart_amount = 0;
var prod_1_in_cart_amount = 0;
var prod_2_in_cart_amount = 0;

function OpenWindow(pagename){
    var l = (screen.availWidth - 1024) / 2;
    var t = (screen.availHeight - 768) / 2;
    var NewWindow = window.open("/apps/preview.php?page=" + pagename, "addon_window", "WIDTH=1024 HEIGHT=768 TOP=" + t + " LEFT=" + l + " RESIZABLE SCROLLBARS DEPENDENT");
    NewWindow.focus();
}

function MM_swapImage(){ //v3.0
    var i, j = 0, x, a = MM_swapImage.arguments;
    document.MM_sr = new Array;
    for (i = 0; i < (a.length - 2); i += 3)
        if ((x = MM_findObj(a[i])) != null) {
            document.MM_sr[j++] = x;
            if (!x.oSrc)
                x.oSrc = x.src;
            x.src = a[i + 2];
        }
}

function MM_findObj(n, d){ //v4.01
    var p, i, x;
    if (!d)
        d = document;
    if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document;
        n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all)
        x = d.all[n];
    for (i = 0; !x && i < d.forms.length; i++)
        x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++)
        x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById)
        x = d.getElementById(n);
    return x;
}

function product_onchange(){
    if (tabHolder.activeTabIdx != TI_OVERVIEW) {
        var product_0_qty = document.getElementById('product_0_qty');
        var product_1_qty = document.getElementById('product_1_qty');
        var product_2_qty = document.getElementById('product_2_qty');
        var product_qty;
        if (tabHolder.activeTabIdx == TI_SD) {
            product_qty = product_0_qty;
        }
        else if (tabHolder.activeTabIdx == TI_CS) {
            product_qty = product_1_qty;
        }
        else if (tabHolder.activeTabIdx == TI_CDB) {
            product_qty = product_2_qty;
        }

        if(product_qty){
            if (parseInt(product_qty.value) == -1) {
                self.location.href = "/page/contact_us";
                return;
            }
            var frmBuyAddon = document.forms['frmBuyAddon'];
            for (i = 0; i < frmBuyAddon.elements.length; i++) {
                if (frmBuyAddon.elements[i].id.substr(0, 8) == 'kit_qty_' && tabHolder.activeTabIdx == TI_SD) {
                    if (parseInt(frmBuyAddon.elements[i].value) > parseInt(product_qty.value)) {
                        frmBuyAddon.elements[i].value = product_qty.value;
                    }
                }
            }
            if (!bRegCustomer) {
                if (product_qty.value <= 0) {
                    document.getElementById('submit_btn').disabled = true;
                }
                else {
                    document.getElementById('submit_btn').disabled = false;
                }
            }
            else {
                check_buttons();
            }
            if (active_tab == 2){
                var payment_cycle = 6
                if (document.getElementById('cdb_plan1').checked){
                    payment_cycle = 1;
                } else if (document.getElementById('cdb_plan2').checked){
                    payment_cycle = 3;
                }
                xajax_fillOptionCombo('32769-1008', active_tab, product_qty.value, payment_cycle);
            } else {
                calc_subtotal();
            }
        }
    }
}

function kit_onchange(obj){
    var product_qty = document.getElementById('product_' + (tabHolder.activeTabIdx - 1) + '_qty');
    if (parseInt(product_qty.value) < parseInt(obj.value) && (obj.id.substr(0, 8) != 'upg_kit_') && (obj.id != 'opt_qty_32769-1008')) {
        product_qty.value = obj.value;
    }
    if (product_qty.value <= 0) {
        document.getElementById('submit_btn').disabled = true;
    }
    else {
        document.getElementById('submit_btn').disabled = false;
    }
    calc_subtotal();
}

function calc_subtotal(){
    var frmBuyAddon = document.forms['frmBuyAddon'];
    var iSubTotal = 0;
    var sdKits = {
        kit_qty_8: 1, 
        kit_qty_9: 1, 
        kit_qty_10: 1
    };
    var csKits = {
        kit_qty_15: 1
    };
    var cdbKits = {
        kit_qty_14: 1, 
        kit_qty_16: 1
    };
    var cdbOptions = {
        1008: 1
    };
    for (i = 0; i < frmBuyAddon.elements.length; i++) {
        if ((frmBuyAddon.elements[i].id in sdKits || frmBuyAddon.elements[i].id == 'product_0_qty') && tabHolder.activeTabIdx == TI_SD) {
            iSubTotal += parseFloat(frmBuyAddon.elements[i].options[frmBuyAddon.elements[i].selectedIndex].id);
        }
        else if ((frmBuyAddon.elements[i].id == 'product_1_qty' || frmBuyAddon.elements[i].id in csKits) && tabHolder.activeTabIdx == TI_CS) { // CS
            iSubTotal += parseFloat(frmBuyAddon.elements[i].options[frmBuyAddon.elements[i].selectedIndex].id);
        }
        else if ((frmBuyAddon.elements[i].id == 'product_2_qty' || frmBuyAddon.elements[i].id in cdbKits || frmBuyAddon.elements[i].id.substr(frmBuyAddon.elements[i].id.length - 4, 4) in cdbOptions) && tabHolder.activeTabIdx == TI_CDB) { // CDB
            iSubTotal += parseFloat(frmBuyAddon.elements[i].options[frmBuyAddon.elements[i].selectedIndex].id);
        }
    }
    iSubTotal = Number(iSubTotal) + eval('prod_' + active_tab + '_in_cart_amount');
    showTotal(iSubTotal);
}

function showTotal(iTotal){
    var total = document.getElementById('total');
    if(total && iTotal > 0){
        total.innerHTML = '<span class="pkg_style" style="padding-top: 0px; font-size: 15px;">' + Math.floor(iTotal) + outputCents(iTotal) + '</span>';
    } else {
        total.innerHTML = '<span class="pkg_style" style="padding-top: 0px; font-size: 15px;">' + iTotal + '.00</span>';
    }
    check_buttons();
}

function check_buttons(){
    var frmBuyAddon = document.forms['frmBuyAddon'];
    var bHasProduct = false;
    if(tabHolder.activeTabIdx != TI_OVERVIEW) {
        for (i = 0; i < frmBuyAddon.elements.length; i++) {
            if ((frmBuyAddon.elements[i].value > 0) && (frmBuyAddon.elements[i].tagName == 'SELECT')) {
                if (tabHolder.activeTabIdx == TI_CS) {
                    if (frmBuyAddon.elements[i].id == "product_1_qty") {
                        bHasProduct = true;
                    }
                }
                else if (tabHolder.activeTabIdx == TI_CDB) {
                    if (frmBuyAddon.elements[i].id == "product_2_qty") {
                        bHasProduct = true;
                    }
                }
                else if (tabHolder.activeTabIdx == TI_SD) {
                    if (frmBuyAddon.elements[i].id == "product_0_qty") {
                        bHasProduct = true;
                    }
                }
            }
        }
        if (bHasProduct) {
            document.getElementById('submit_btn').disabled = false;
            if (document.getElementById('opt_qty_32769-1008') != undefined){
                document.getElementById('opt_qty_32769-1008').disabled = false;
            }
        }
        else {
            document.getElementById('submit_btn').disabled = true;
            if (document.getElementById('opt_qty_32769-1008') != undefined){
                document.getElementById('opt_qty_32769-1008').disabled = true;
            }
        }
    }
}

function reset_form(){
    resetFormControls();
}

function resetFormControls(){
    var frmBuyAddon = document.forms['frmBuyAddon'];
    for (i = 0; i < frmBuyAddon.elements.length; i++) {
        if (frmBuyAddon.elements[i].tagName == "SELECT") {
            frmBuyAddon.elements[i].selectedIndex = 0;
        }
    }
    showTotal(0);
    drawBasketAmount();
}

window.onload = function window_onload(){
    fillRentalPrices(3);
    resetFormControls();
    tabHolder.onTabActivate = function(idx){
        active_tab = idx - 1;
        product_onchange();
        var t;
        switch (idx) {
            case 0:
                t = '';
                break;
            case 1:
                t = '<span class="logo_SQL">SQL</span><span class="logo_Detective">Detective</span> or its kits.';
                break;
            case 2:
                t = '<span class="logo_Detective">Clear</span><span class="logo_SQL">SQL</span>.';
                break;
            case 3:
                t = '<span class="logo_Detective">Clear</span><span class="logo_SQL">DB Documenter</span>.';
        }
        if (t != ''){
            tabHolder.getEl('subscribe_prod_name').innerHTML = 'I want to receive future information on upgrades, updates and bug fixes for ' + t;
        }
    }
    var arrURLParams = getURLParams();
    tabHolder.largeTabIdx = 3;
    tabHolder.init({
        tabIds: ['tab_rent', 'tab_4_0', 'tab_ClearSQL', 'tab_ClearDB'],
        tabTextIds: ['rent_tab_text', 'SD_tab_text', 'CS_tab_text', 'DB_tab_text'],
        allLayers: ['LayerOverview', 'LayerSD', 'LayerSD_3', 'LayerClearSQL',
        'LayerClearSQL_3', 'LayerClearDB', 'LayerClearDB_3', 'LayerCommon',
        'LayerOverviewCaption', 'LayerOtherCaptions'],
        tabLayers: [
        ['LayerOverview', 'LayerOverviewCaption'],
        ['LayerSD', 'LayerSD_3', 'LayerCommon', 'LayerOtherCaptions'],
        ['LayerClearSQL', 'LayerClearSQL_3', 'LayerCommon', 'LayerOtherCaptions'],
        ['LayerClearDB', 'LayerClearDB_3', 'LayerCommon', 'LayerOtherCaptions']
        ],
        defActiveTabIdx: ((arrURLParams['prod_id'] != '' && arrURLParams['prod_id'] != undefined)?(Number(arrURLParams['prod_id']) + 1) : TI_OVERVIEW)
    });
    var payment_cycle = 6
    if (document.getElementById('cdb_plan1').checked){
        payment_cycle = 1;
    } else if (document.getElementById('cdb_plan2').checked){
        payment_cycle = 3;
    }
    xajax_fillOptionCombo('32769-1008', active_tab, 0, payment_cycle);
}

function outputMoney(number, delimiter){
    return outputDollars(Math.floor(number - 0) + '', delimiter);
}

function outputDollars(number, delimiter){
    var i = 0;
    if (number.length <= 3)
        return (number == '' ? '0' : number);
    else {
        var mod = number.length % 3;
        var output = (mod == 0 ? '' : (number.substring(0, mod)));
        for (i = 0; i < Math.floor(number.length / 3); i++) {
            if ((mod == 0) && (i == 0))
                output += number.substring(mod + 3 * i, mod + 3 * i + 3);
            else
                output += delimiter + number.substring(mod + 3 * i, mod + 3 * i + 3);
        }
        return (output);
    }
}

function outputCents(amount){
    amount = Math.round(((amount) - Math.floor(amount)) * 100);
    return (amount < 10 ? '.0' + amount : '.' + amount);
}

function getURLParams(){
    var tmp = new Array(); // two additional
    var tmp2 = new Array(); // arrays
    var param = new Array();

    var get = location.search; // GET query string
    if (get != '') {
        getstr = get.substr(1);
        tmp = getstr.split('&'); // split variables
        get = '';
        var param = new Array(0);
        for (var i = 0; i < tmp.length; i++) {
            tmp2 = tmp[i].split('=');
            param[tmp2[0]] = tmp2[1];
        }
    }
    return param;
}

function fnAddToBasket(){
    if(tabHolder.activeTabIdx != TI_OVERVIEW) {
        xajax_add_to_basket(xajax.getFormValues(document.frmBuyAddon), tabHolder.activeTabIdx - 1);
    }
}

function drawBasketAmount(){
    xajax_drawBasketAmount();
}

function changeRentalPeriod(obj){
    if (obj.name == 'sd_rental_plan') {
        document.getElementById('cs_plan' + obj.value).checked = true;
        document.getElementById('cdb_plan' + obj.value).checked = true;
    }
    else if (obj.name == 'cs_rental_plan') {
        document.getElementById('sd_plan' + obj.value).checked = true;
        document.getElementById('cdb_plan' + obj.value).checked = true;
    }
    else if (obj.name == 'cdb_rental_plan') {
        document.getElementById('sd_plan' + obj.value).checked = true;
        document.getElementById('cs_plan' + obj.value).checked = true;
    }
    fillRentalPrices(obj.value);
    product_onchange();
    calc_subtotal();
}

function fillRentalPrices(plan){
    var planes = new Array(1, 3, 6);
    var processedFields = {
        'product_0_qty': 	'3276900',
        'kit_qty_8': 		'32769101',
        'kit_qty_9': 		'32769102',
        'kit_qty_10': 		'3276914',
        'product_1_qty': 	'327691001',
        'product_2_qty': 	'32769-1002',
        'kit_qty_14': 	'32769-1005',
        'kit_qty_15': 	'32769-1007',
        'kit_qty_16': 	'32769-1006'
    };
    for (var field in processedFields){
        var cbx = document.getElementById(field);
        if (cbx){
            for (var i = cbx.options.length; i > 0; i--) {
                if (i > 0) {
                    cbx.remove(i - 1);
                }
            }
            var prices = rentalPrices["month" + planes[plan - 1]][processedFields[field]];
            var option = document.createElement("OPTION");
            option.value = "0";
            option.id = "0";
            option.innerHTML = "Select...";
            cbx.appendChild(option);
            for (var qty in prices){
                var option = document.createElement("OPTION");
                with(option){
                    value = qty;
                    id = prices[qty];
                    innerHTML = qty + " User(s) - $ " + prices[qty];
                    }
                cbx.appendChild(option);
            }
            var option = document.createElement("OPTION");
            option.value = -1;
            option.id = 0;
            option.innerHTML = "... others - please ask!";
            cbx.appendChild(option);
        }
    }
}
function addElement(tgt_select, option_text, option_value, id)	{
    var oOption = document.createElement("option");
    oOption.value = option_value;
    oOption.id = id;
    oOption.appendChild(document.createTextNode(option_text));
    tgt_select.appendChild(oOption);
}
function fillCombo(obj_id, data){
    var obj = document.getElementById(obj_id);
    var selected = obj.value;
    for (var i = 0; i <= obj.length; i++) {
        obj.remove(1);
    }
    for (var key in data) {
        addElement(obj, key + ' Instance(s) - $ ' + Math.floor(data[key]) + outputCents(data[key]), key, data[key]);
    }
    obj.selectedIndex = 0;
    obj.disabled = false;
}
