﻿/// <reference path="lib/jquery-1.4.4-vsdoc.js" />

$(function () {

    // reset current step, firefox sometimes remember old value
    $('#CurrentStep').val(1);

    initOrderPanel();

    /*
    Tabs - Online order/Call
    -----------------------------------------------------------*/
    var btnCallOrder = $('#btnCallOrder');
    var btnOnlineOrder = $('#btnOnlineOrder');
    var callOrderContent = $('#callOrderContent');
    var onlineOrderContent = $('#onlineOrderWrapper');

    btnCallOrder.click(function () {
        btnOnlineOrder.removeClass('order-tab-current');
        onlineOrderContent.hide();
        callOrderContent.show();
        btnCallOrder.addClass('order-tab-current');
        return false;
    });

    btnOnlineOrder.click(function () {
        btnCallOrder.removeClass('order-tab-current');
        callOrderContent.hide();
        onlineOrderContent.show();
        btnOnlineOrder.addClass('order-tab-current');
        return false;
    });

    //callOrderContent.hide();
});

function initSearchButton() {

    var btnZip = $('#zipSubmit');

    /*btnZip.click(function () {

    });*/

    $('#Panel1_Zip').change(function () {
        $('#CurrentStep').val(1);
    });


}


/*
Radiobuttons - Småsäck, bulk eller storsäck
-----------------------------------------------------------*/

/* set on doc ready */
function initRadiobuttons() {

    var rbWrapper = $('.rb-wrapper');

    // set pressed states at init
    rbWrapper.find('input[type="radio"]:checked').each(function () {
        var id = $(this).attr('id');
        rbWrapper.find('label[for=' + id + ']').addClass('checked');
    });

    /* onchange */
    rbWrapper.find('input[type="radio"]').change(function () {
        /*  set pressed states */
        var thisRadio = $(this);
        var id = thisRadio.attr('id');
        var labels = thisRadio.parent().parent().find('label').removeClass('checked');
        if (thisRadio.is(':checked')) {
            labels.filter('label[for=' + id + ']').addClass('checked');
        }

        /* update CurrentStep if needed. Prevents errors if users steps backwards */
        var elemCurrentStep = $('#CurrentStep');
        var currentStep = elemCurrentStep.val();
        if (currentStep > 2 && thisRadio.attr('name') == 'Panel1.packageType') elemCurrentStep.val(2);
        else if (currentStep > 3 && thisRadio.attr('name') == 'Panel1.productType') elemCurrentStep.val(3);

        /* submit form */
        $('#orderForm').submit();

    });
    
    // Tooltip on hover
    //
    $('#orderForm').submit(function(){
        // hide qtip on submit, otherwise it will get stuck
        $('#packageTypeWrapper').qtip("hide");

        // don't submit form if no amount is filled in 
        var amount = parseFloat($('#productAmount').val().replace(',', '.')).toFixed(1);
        amount = (amount == "NaN") ? 0 : amount;

        if (amount <= 0 && $('#CurrentStep').val() > 3) {
            alert("Ange antal");
            return false;
        }

    });
}

function initAmountCalc() {

    /*
    Price calculations
    -----------------------------------------------------------*/
    var timeoutRef;
    $('#productAmount, #campaignCode').keydown(function (e) {
        clearTimeout(timeoutRef); // clear the timeout hook if any

        var inp = $(this); // cache this input box

        var onChange = function (lastKeyPressCode) {

            // get values
            var articleId = parseInt($('#SelectedArticleID').val());
            var zipcode = parseInt($('#Panel1_Zip').val());
            var moms = $('#Moms').val();
            var campaignCode = $('#campaignCode').val();
            var amount = parseFloat($('#productAmount').val().replace(',', '.')).toFixed(1);
            amount = (amount == "NaN") ? 1 : amount;
            if (campaignCode === "" || campaignCode === 'undefined') campaignCode = null;

            $.getJSON('Order/GetShipping', { articleid: articleId, amount: amount, zip: zipcode, moms: moms, campaigncode: campaignCode }, function (response) {
                if (response.hasOwnProperty("d")) {
                    response = response.d
                }
                if (response != 'undefined') {

                    // inject html
                    var shipping = response;

                    // calculate sum
                    $.getJSON('Order/GetPrice', { articleid: articleId, amount: amount, zip: zipcode, moms: moms, campaignCode: campaignCode }, function (response) {
                        if (response.hasOwnProperty("d")) {
                            response = response.d
                        }
                        if (response != 'undefined') {

                            // get elements
                            var elemSum = $('#sumText');
                            var elemShipping = $('#shippingText');
                            var elemPrice = $('#Price');
                            // calculate sum
                            //var price = response;
                            var sum = amount * response + shipping;
                            elemShipping.text(shipping + ':-');
                            elemSum.text(sum + ':-');
                            elemPrice.text(response + ':-');
                        }
                    });
                }
            });
        }

        timeoutRef = setTimeout(function () { onChange(e.keyCode); }, 1200);

    });
}


/*function initPanels() {
    
// use cool easing if exists, otherwise go by built-in swing
var easing = (typeof ($.easing.easeInOutQuart) == "function") ? easing : "swing";

if ($('#CurrentStep').val() == 5) {
$('#onlineOrderContent').animate({
left: "-978px"
}, "slow", "easeInOutQuart");
}
}*/


/*
Calendar
--------------------------------------------*/
function initCalendar() {
    $(".datePicker").datepicker({
        dayNames: ['Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag'],
        dayNamesShort: ['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör'],
        dayNamesMin: ['Sö', 'Må', 'Ti', 'On', 'To', 'Fr', 'Lö'],
        monthNames: ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],
        monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
        showAnim: 'drop',
        dateFormat: 'yy-mm-dd',
        minDate: "+14D",
        showWeek: true,
        firstDay: 1,
        weekHeader: 'V',
        onSelect: function (dateText, inst) {
            var moms = $('#Moms').val();
            $.getJSON('Order/GetLateDeliveryPrice', { date: dateText, moms: moms }, function (response) {
                if (response.hasOwnProperty("d")) {
                    response = response.d
                }
                if (response != 'undefined') {

                    var date = new Date(dateText);

                    // for IE, we need the date format yy/mm/dd
                    if (isNaN(date)) {
                        date = new Date(dateText.replace('-', '/'));
                    }

                    var week = $.datepicker.iso8601Week(date);
                    $('#selectedWeek').text('Levereras någon gång under vecka: ' + week + ' (' + response + ':-/pall)');
                }
            });

        }
    });
}

/*
Init Modal Windows
--------------------------------------------*/
function initModalWindows() {
    /* Modal boxes */
    $("a.js-dialog").colorbox({
        opacity: 0.6,
        close: false,
        innerWidth: '585px'
    });

    // show errors in modal if any - Usability fix
    showErrorsInModal();
}

/*
Close Active Modal Window
--------------------------------------------*/
function closeActiveModal(response, a, b) {
    if (response.indexOf('user-wrapper') > 0) {
        $('#login-panel').html(response);
        $.colorbox.close();
    }

    //Fix JM 3/6-11 kunde inte öppna modal igen efter man var klar med ett fönster.
    initModalWindows();
}

/*
Close Active Modal Window
--------------------------------------------*/
function initTooltips() {
    
    // remove old qtips that has stuck
    $('.qtip').remove();

    $('#packageTypeWrapper, li.pall, li.storsack').qtip({
        content: '<ul><li>En pall Standardpellets innehåller 52 säckar á 16kg totalt 832kg.</li>' +
                 '<li>En pall Diamantpellets innehåller 52 säckar á 15kg totalt 780kg.</li>' +
                 '<li>En storsäck innehåller 500kg pellets.</li></ul>',
        position: {
            corner: {
                target: 'topMiddle',
                tooltip: 'bottomMiddle'
            }
        },
        style: {
            tip: 'bottomMiddle',
            name: 'dark',
            width: {
                min: 270
            }
        },
        hide: {
            delay: 70,
            effect: {
                type: 'fade',
                length: 200
            }
        },
        show: {
            fixed: true,
            delay: 0
            /*effect: {
                type: 'fade',
                length: 50
            }*/
        }

    });

    $('label.btn-diamantpellets').qtip({
        content: '<p>OBS! När du byter från standardpellets till diamantpellets MÅSTE din anläggning justeras. Låt en kunnig installatör optimera din anläggning.</p>',
        position: {
            corner: {
                target: 'topMiddle',
                tooltip: 'bottomMiddle'
            }
        },
        style: {
            tip: 'bottomMiddle',
            name: 'dark',
            width: {
                min: 270
            }
        },
        hide: {
            delay: 70,
            effect: {
                type: 'fade',
                length: 200
            }
        },
        show: {
            fixed: true,
            delay: 0
            /*effect: {
                type: 'fade',
                length: 100
            }*/
        }

    });

}

/*
Init Order Panel
Needs to be run at form submit 'onSuccess'
--------------------------------------------*/
function initOrderPanel() {
    
    // prevent orders from being placed multiple times
    $('#lastSubmit').click(function () {

        $(this).addClass('hidden').after('<p class="right"><b class="blackF">Skickar...</b></p>');
        //$(this).attr('disabled', 'disabled');
    });

    initRadiobuttons();
    initAmountCalc();
    //initPanels();
    initCalendar();
    initModalWindows();
    initSearchButton();
    initTooltips();

    //$.validator.unobtrusive.adapters.addBool("mandatory", "required");
}


/*
Show errors in modal
--------------------------------------------*/
var showErrorsInModal = function () {
    var errorsWrapper = $('.validation-summary-errors');
    if (errorsWrapper.length > 0) {
        $.colorbox({
            html: errorsWrapper,
            close: false
            //opacity: 0.4
        });
    }
}

