﻿$(function() {

    /* Login layer
    ****************************/
    function initLoginLayer() {
        $('#registerLink').click(function() {
            $.rcn.ui.login.hide();
            $.rcn.ui.createUser.show();
        });

        $('a.#loginbutton').click(function() {
            if ($('div.#loginArea').validate().form()) {
                var username = $('input.#loginusername').val();
                var password = $('input.#loginpassword').val();
                $('div.#loginWorking').show();
                $('div.#loginArea').hide();
                $.rcn.membership.login(username, password,
                    function() {
                        if ($.rcn.ui.login.afterLogin)
                            $.rcn.ui.login.afterLogin();
                        $('div.#loginLayer').jqmHide();
                    },
                    function() {
                        $('div.#loginWorking').hide();
                        $('div.#loginArea').show();
                        loginFailure();
                    }
                );
            }
        });

        $('a.#createUser').click(function() {
            if ($('div.#createUserArea').validate().form()) {
                var username = $('input.#registerUsername').val();
                var password = $('input.#registerPassword').val();
                var acceptNewsLetter = $('input.#acceptNewsLetter').is(':checked');
                $('div.#registerWorking').show();
                $('div.#createUserArea').hide();
                $.rcn.membership.createUser(
                    username,
                    password,
                    acceptNewsLetter,
                    function(messages) {
                        createUserHandler(messages);
                    },
                    function(err) {
                        $('div.#registerWorking').hide();
                        $('div.#createUserArea').show();
                        if (err)
                            $('#registerError').text(err);
                        else
                            createUserServerError();
                    }
                );
            }
        });

        $('a.#btnFetchPersonal').click(function() {
            var civicno = $.trim($('input.#registerCivicNo').val());
            if (civicno.length > 0 && $.validator.methods.civicNumber(civicno)) {
                $('div.#fetchPersonalWorking').show();
                $('div.#fetchPersonalArea').hide();
                $.rcn.customer.lookupPersonalData(
                    civicno,
                    function(info) {
                        $('div.#fetchPersonalWorking').hide();
                        $('div.#fetchPersonalArea').show();

                        if (info.Errors.length > 0) {
                            fetchPersonalInfoHandler(info);
                        }
                        else {
                            $('input.#registerFirstName').val(info.FirstName);
                            $('input.#registerLastName').val(info.LastName);
                            $('input.#registerStreet').val(info.Street);
                            $('input.#registerZipCode').val(info.ZipCode);
                            $('input.#registerCity').val(info.City);
                        }
                    },
                    function(err) {
                        $('div.#fetchPersonalWorking').hide();
                        $('div.#fetchPersonalArea').show();
                    });
            }
        });

        $('a.#btnRegisterCustomer').click(function() {
            if ($('div.#moreInfoContent').validate().form()) {
                $('div.#registerCustomerWorking').show();
                $('div.#moreInfoContent').hide();
                var customer =
                {
                    "civicNumber": $('input.#registerCivicNo').val(),
                    "firstName": $('input.#registerFirstName').val(),
                    "lastName": $('input.#registerLastName').val(),
                    "street": $('input.#registerStreet').val(),
                    "zipCode": $('input.#registerZipCode').val(),
                    "city": $('input.#registerCity').val(),
                    "coAddress": $('input.#registerCO').val(),
                    "mobilePhone": $('input.#registerMobilePhone').val(),
                    "gender": $('input[name=registerGender]:radio:checked').val(),
                    "postalDeliveryNotification": $('input[name=registerPostalDeliveryNotification]:radio:checked').val(),
                    "marketingchannel": $('input[name=registerOfferSms]:radio:checked').val(),
                    "acceptTerms": $('input.#registerAcceptTerms').is(':checked')
                };
                $.rcn.customer.create(
                    customer,
                    function(messages) {
                        createCustomerHandler(messages);
                    },
                    function(err) {
                        $('div.#registerCustomerWorking').hide();
                        $('div.#moreInfoContent').show();
                        createCustomerServerError();
                    });
            }
        });
    }

    /* Sitetoolbar
    ****************************/
    $('a.#showCreateUser').click(function() {
        $.rcn.ui.createUser.show();
    });
    
    $.rcn.bind($.rcn.events.loggedIn, function() {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(initToolbar);
        $('input[id$=loginTrigger]').click();
    });
    $.rcn.bind($.rcn.events.loggedOut, function() {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(initToolbar);
        __doPostBack('updateSiteToolbar', '');
    });

    function initToolbar() {
        $('a.#showlogin').click(function() {
            $.rcn.ui.login.show();
        });
        initBasket();
        Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(initToolbar);
    }

    initLoginLayer();
    initToolbar();
});
