﻿$(document).ready(function () {
    orderFlowHideButtons();

    $('input[class=selectService]').live('click', function () {
        $('#selectServices').trigger('click');
    });

    $('input[name=msisdnSelection]:radio').live('click', function () {
        $('#msisdnSelection').trigger('click');
    });

    $('#customerSelectionBullet').live('click', function () {
        $('#customerSelectionBulletButton').trigger('click');
    });

    $('input[name=CustomerType]:radio').live('click', function () {
        $('#selectCustomerType').trigger('click');
    });

    $('#customerNotSameAsUser').live('click', function () {
        $('#customerNotSameAsUserButton').trigger('click');
    });

    $('input[name=newMsisdnNumber]:radio').live('click', function () {
        $('#newMsisdnSelect').trigger('click');
    });

    $('input[name=newMsisdnSecret]:checkbox').live('click', function () {
        $('#newMsisdnSecretButton').trigger('click');
    });

    $('input[name=transferMsisdnSecret]:checkbox').live('click', function () {
        $('#transferMsisdnSecretButton').trigger('click');
    });

    // ADD: Listerner to all buttons in orderFlow
    $(':button[name=orderFlowButton]').live('click', function (event) {

        // Prevent the form from submitting
        event.preventDefault();

        // Get value of button clicked
        //var sButton = $(this).val();
        var sButton = $(this).get(0).getAttributeNode('value').value;
        var sButton1 = sButton.toUpperCase();
        var sButton2 = '';
        if (sButton.indexOf(':') != -1) {
            sButton1 = sButton.substring(0, sButton.indexOf(':')).toUpperCase();
            sButton2 = sButton.substring(sButton.indexOf(':') + 1).toUpperCase();
        }

        // Select action depending on sButton1
        switch (sButton1) {
            case 'SELECTSUBSCRIPTIONID':
            case 'SELECTSUBSCRIPTION':
            case 'SELECTSERVICES':
            case 'MSISDNSELECT':
            case 'TRANSFERSELECT':
            case 'NEWCUSTOMERBUTTON':
            case 'EXISTINGCUSTOMERBUTTON':
            case 'SELECTCUSTOMERTYPE':
            case 'CUSTOMERCPRSET':
            case 'CUSTOMERCVRSET':
            case 'LOGIN':
            case 'RESENDLOGIN':
            case 'CUSTOMERSET':
            case 'CUSTOMERSELECTIONBULLET':
            case 'REFILLBUTTON':
            case 'REFILL':
            case 'PAYMENTOPTIONSELECT':
            case 'NEWMSISDNSECRET':
            case 'TRANSFERMSISDNSECRET':
                updateXmlByAjax(sButton, sButton1, sButton2);
                break;
            case 'MSISDNSEARCH':
            case 'MSISDNSEARCHGOLD':
            case 'MSISDNSEARCHPAGE':
                $('#NewOrTransferMsisdnCT').prepend('<div class="overlay"><div id="loadingOverlay" class="loadingOverlay"" style="top:70px;"></div></div>');
                updateXmlByAjax(sButton, sButton1, sButton2);
                break;
            case 'MSISDNSELECTION':
                if ($('#newMsisdn:checked').val() == 'newMsisdn') {
                    $('#NewOrTransferMsisdnCT').prepend('<div class="overlay"><div id="loadingOverlay" class="loadingOverlay"" style="top:70px;"></div></div>');
                }
                updateXmlByAjax(sButton, sButton1, sButton2);
                break;
            default:
                break;
        }

    });

    // UPDATE: Xml by ajax
    function updateXmlByAjax(sButton, sButton1, sButton2) {
        var oOptions = {
            url: 'https://www.happiimobil.dk/_orderFlow/ajax3.asp',
            async: true,
            cache: false,
            type: 'POST',
            data: { 'orderFlowButton': sButton },
            clearForm: false,
            resetForm: false,
            error: function () { updateXmlByAjaxError(sButton); },
            success: function (responseText) { updateXmlByAjaxSuccess(responseText, sButton, sButton1, sButton2); }
        };
        return $('#orderFlowForm').ajaxSubmit(oOptions);
    }

    // Handling the response from ajax if error
    function updateXmlByAjaxError(sButton) {
        $('#orderFlowForm').append('<input type="hidden" name="orderFlowButton" value="' + sButton + '" />');
        $('#orderFlowForm').submit();
    }

    // Handling the response from ajax if success
    function updateXmlByAjaxSuccess(sResponseText, sButton, sButton1, sButton2) {

        // Update the field with xml
        $('input[name=xml]').val(sResponseText);

        // Depending on button1 we do action
        switch (sButton1) {
            case 'SELECTSUBSCRIPTIONID':
                getItemByAjax(sButton, sButton1, sButton2);
                break;
            case 'SELECTSUBSCRIPTION':
                getItemByAjaxSuccess('', 'SELECTSUBSCRIPTION', 'SELECTSUBSCRIPTION', '');
                break;
            case 'SELECTSERVICES':
                getItemByAjaxSuccess('', 'SELECTSERVICES', 'SELECTSERVICES', '');
                break;
            case 'MSISDNSELECTION':
            case 'NEWMSISDN':
            case 'MSISDNSELECTION':
            case 'MSISDNSEARCH':
            case 'MSISDNSEARCHGOLD':
            case 'MSISDNSEARCHPAGE':
            case 'TRANSFERMSISDN':
            case 'CUSTOMERSELECTION':
            case 'NEWCUSTOMERBUTTON':
            case 'EXISTINGCUSTOMERBUTTON':
            case 'SELECTCUSTOMERTYPE':
            case 'CUSTOMERCPRSET':
            case 'CUSTOMERCVRSET':
            case 'RESENDLOGIN':
            case 'CUSTOMERSET':
            case 'CUSTOMERSELECTIONBULLET':
            case 'REFILL':
                getItemByAjax(sButton, sButton1, sButton2);
                break;
            case 'MSISDNSELECT':
                getItemByAjax('', 'CUSTOMERSELECTION', 'CUSTOMERSELECTION', '');
                break;
            case 'TRANSFERSELECT':
                getItemByAjax('', 'TRANSFERMSISDN', 'TRANSFERMSISDN', '');
                break;
            case 'LOGIN':
                if (sResponseText.indexOf('ResendLogin') == -1) {
                    getItemByAjax('', 'CUSTOMERSELECTIONBULLET', 'CUSTOMERSELECTIONBULLET', '');
                } else {
                    getItemByAjax('', 'RESENDLOGIN', 'RESENDLOGIN', '');
                }
                break;
            case 'REFILLBUTTON':
                getItemByAjax('', 'REFILL', 'REFILL', '');
                break;
            default:
                break;
        }
    }

    // GET: Item by ajax
    function getItemByAjax(sButton, sButton1, sButton2) {
        $.ajax({
            url: 'https://www.happiimobil.dk/_orderFlow/ajax2.asp',
            async: true,
            cache: false,
            type: 'POST',
            data: { 'order': sButton1, 'orderXml': $('input[name=xml]').val() },
            success: function (responseText) { getItemByAjaxSuccess(responseText, sButton, sButton1, sButton2); }
        });
    }

    function getItemByAjaxSuccess(sResponseText, sButton, sButton1, sButton2) {
        //console.log(sButton1);
        switch (sButton1) {
            case 'BASKET':
                $('.basket').replaceWith(sResponseText);
                break;
            case 'SELECTSUBSCRIPTIONID':
                $('#subscriptionSelectionCT').html(sResponseText);
                getItemByAjax('BASKET', 'BASKET', '');
                break;
            case 'SELECTSUBSCRIPTION':
                $('#subscriptionSelectionCT').hide();
                getItemByAjax('SERVICES', 'SERVICES', '');
                break;
            case 'SERVICES':
                $('#servicesCT').html(sResponseText);
                getItemByAjax('SHOWMSISDNSELECTION', 'SHOWMSISDNSELECTION', '');
                break;
            case 'SELECTSERVICES':
                getItemByAjax('BASKET', 'BASKET', '');
                break;
            case 'SHOWMSISDNSELECTION':
                $('#msisdnSelectionCT').html(sResponseText);
                getItemByAjax('BASKET', 'BASKET', '');
                break;
            case 'MSISDNSELECTION':
                // New or transfer?
                if ($('#newMsisdn:checked').val()) {
                    getItemByAjax('NEWMSISDN', 'NEWMSISDN', '');
                } else {
                    getItemByAjax('TRANSFERSELECT', 'TRANSFERSELECT', '');
                }
                break;
            case 'TRANSFERMSISDN':
                $('#NewOrTransferMsisdnCT').html(sResponseText);
                if (sResponseText.indexOf('failureMessage') == -1) {
                    getItemByAjax('CUSTOMERSELECTION', 'CUSTOMERSELECTION', '');
                }
                break;
            case 'NEWMSISDN':
            case 'MSISDNSELECTION':
            case 'MSISDNSEARCH':
            case 'MSISDNSEARCHGOLD':
            case 'MSISDNSEARCHPAGE':
                $('#NewOrTransferMsisdnCT').html(sResponseText);
                break;
            case 'MSISDNSELECT':
            case 'TRANSFERSELECT':
                $('#NewOrTransferMsisdnCT').html(sResponseText);
                break;
            case 'CUSTOMERSELECTION':
                $('#newOrExistingCustomerButtonCT').html(sResponseText);
                getItemByAjax('BASKET', 'BASKET', '');
                break;
            case 'NEWCUSTOMERBUTTON':
            case 'SELECTCUSTOMERTYPE':
            case 'CUSTOMERCPRSET':
            case 'CUSTOMERCVRSET':
            case 'CUSTOMERSELECTIONBULLET':
                $('#customerCT').html(sResponseText);
                $('#loginOrResendCT').empty();
                getItemByAjax('CUSTOMERSELECTION', 'CUSTOMERSELECTION', '');
                break;
            case 'EXISTINGCUSTOMERBUTTON':
                $('#loginOrResendCT').html(sResponseText);
                $('#customerCT').empty();
                getItemByAjax('CUSTOMERSELECTION', 'CUSTOMERSELECTION', '');
                break;
            case 'RESENDLOGIN':
                $('#loginOrResendCT').html(sResponseText);
                break;
            case 'CUSTOMERSET':
                if (sResponseText.indexOf('failureMessage') == -1) {
                    getItemByAjax('REFILLBUTTON', 'REFILLBUTTON', '');
                    getItemByAjax('PAYMENTOPTIONS', 'PAYMENTOPTIONS', '');
                } else {
                    $('#customerCT').html(sResponseText);
                }
                break;
            case 'REFILL':
                $('#refillCT').html(sResponseText);
                getItemByAjax('REFILLBUTTON', 'REFILLBUTTON', '');
                break;
            case 'REFILLBUTTON':
                readyForPayment();
                $('#refillButtonCT').html(sResponseText);
                break;
            case 'PAYMENTOPTIONS':
                $('#paymentOptionsCT').html(sResponseText);
                break;
            default:
                break;
        }
        orderFlowHideButtons();
    }

    // Hiding all unwanted buttons if needed
    function orderFlowHideButtons() {

        // Hide all infoTexts
        if ($('.infoText')) {
            $('.infoText').hide();
        }

        // Bind keyUp event to newMsisdnSearch
        $('#newMsisdnSearch').keyup(function (event) {
            if (event.keyCode == 13) {
                $('#msisdnSearch').click();
            }
        });

        // Bind keyUp event to customerName
        $('#customerName').keyup(function (event) {
            if (event.keyCode == 9) {
                $('#customerCpr1').focus();
            }
        })

        // Bind clickEvents on the blue I
        $('.showNumberInfo').click(function () {
            $('.showNumberInfo').next().slideToggle();
            //return false;
        });
        $('.showIccInfo').click(function () {
            $('.showIccInfo').next().slideToggle();
            return false;
        });
        $('.showNewNumberInfo').click(function () {
            $('.showNewNumberInfo').next().slideToggle();
            return false;
        });

        // Button selecting between transfer or new msisdn
        if ($('#msisdnSelection')) {
            $('#msisdnSelection').hide();
        }

        // Button selecting customertype
        if ($('#Private')) {
            $('#selectCustomerType').hide();
        }

        // Button selecting services
        if ($('#selectServices')) {
            $('#selectServices').hide();
        }

        // Button selecting a new msisdn
        if ($('#newMsisdnSelect')) {
            $('#newMsisdnSelect').hide();
        }

        // Button selecting different user
        if ($('#customerNotSameAsUserButton')) {
            $('#customerNotSameAsUserButton').hide();
        }

        // Button for selecting allready existing user in customerArea
        if ($('#customerSelectionBulletButton')) {
            $('#customerSelectionBulletButton').hide();
        }
    }


    // Function to submit a bank-payment
    if ($('form[name="netbankForm"]')) {
        $('form[name="netbankForm"]').submit();
    }

});

// Function to check ElectronicalForm
function checkElectronicalForm(value) {
    var url = "/order/electronical_form/check.asp?donor_id=" + value;
    AjaxRequest.get(
            {
                'url': url
            , 'onSuccess': function (req) { setTransferType(req.responseText); }
            , 'onError': function (req) { setTransferType(req.responseText); }
            }
        )
}

// Function to print ElectronicalForm
function setTransferType(nTransferType) {
    if (nTransferType > 0) {
        $('.secretNumber').after('<div class="electronicalForm inputCheckbox">	<input type="checkbox" value="1" name="transferMsisdnElectronical" id="transferMsisdnElectronical">	<label for="transferMsisdnElectronical">Jeg bekræfter som nuværende ejer, at happii-mobil må opsige mit abonnement hos mit nuværende teleselskab, med henblik på flytning af mit nummer til happiimobil.</label>	<div class="utSpace">&nbsp;</div></div>');
    } else {
        $('.electronicalForm').remove();
    }
}

// Function to jump to next cpr-field
function tabCPR() {
    if ($('#customerCpr1').val().length == 6) {
        $('#customerCpr2').focus();
    }
}

//Function to clear page, so we are ready for payment-step
function readyForPayment() {
    $('#subscriberSelectionCT').empty();
    $('#subscriptionSelectionCT').empty();
    $('#servicesCT').empty();
    $('#msisdnSelectionCT').empty();
    $('#NewOrTransferMsisdnCT').empty();
    $('#newOrExistingCustomerButtonCT').empty();
    $('#loginOrResendCT').empty();
    $('#customerCT').empty();
}
