﻿FLR.Register = function() {

    /* Private */

    /* Properties */

    var cmp = {};






    /* Methods */

    var init = function() {

        // Register/Login
        $('#registerLoginNav .register').click(function() {

            // Show correct content
            $('#register').show();
            $('#login').hide();

            // Correct tab colouring
            $(this).css({ backgroundPosition: '0 0' });
            $('#registerLoginNav .login').css({ backgroundPosition: '-245px 0' });

            return false;

        });

        initForm();

    };


    var initForm = function() {

        // Hide Roles on init
        $('#registerForm-role select option').hide();


        // Submit registration password form
        var submitRegistration = function() {

            cmp.registerForm.validate({

                success: function(d) {

                    cmp.registerForm.submit({

                        url: '/handlers/candidates.aspx/register',
                        data: {
                            uploadedCV: $('#uploadedCV').val().replace(/\\/g, '\\\\')
                        },
                        success: function(d) {

                        $('#registerForm').html('<p>Thanks for registering! Your login details will be sent to your email account. <p>You can manage or edit your preferences and alerts in the <a href="candidateaccount.aspx">My Account</a> section at any time.</p>');

                        },
                        failure: function(d) {

                            cmp.registerForm.error(d.errors);
                        }
                    });

                },
                failure: function(d) {

                    cmp.registerForm.error(d.errors);

                }
            });



        };
        
         // Submit forgot password form
        var submitForgotten = function() {
        
            if (cmp.loginFormRegister.field('email').val() === '' || cmp.loginFormRegister.field('email').val() === 'Email Address') {
                return;
            }

        
            cmp.loginFormRegister.submit({
                   
                url: '/handlers/candidates.aspx/forgot',
                success: function(d) {

                    cmp.loginFormRegister.error("Password reminder sent");
                },
                failure: function(d) {
                
                    cmp.loginFormRegister.error(d.errors[0].message);
                }
           });
        
        };

        cmp.registerForm = new TVI.Form({

            ID: 'registerForm',
            errorsEl: '.errors',
            buttons: [{

                selector: '.submit',
                enter: true,
                handler: submitRegistration

            }],
                load: {
                    meta: true,
                    success: function() {
                        cmp.registerForm.el.find('SELECT').each(function() {
                            if ($(this).attr('multiple')) {
                                $(this).find('option').eq(0).remove();
                            }                            
                        });
                        $('#registerForm-sector SELECT').change(function() {
                                
                            // Get the selected option
                            var selectedOption = $(this).val();
                            $('#registerForm-role select').html("<option>Loading...</option>");
                            TVI.ajax({

                                url: '/handlers/general.aspx/getRoles',
                                data: {
                                    'sectorID': selectedOption
                                },
                                success: function(d) {
                                    var template = '{for s in rows}<option value="${s.id}">${s.name}</option>{/for}';
                                    $('#registerForm-role select').html(template.process(d));

                                }
                            });
                        });
                        
                        $('#registerForm-minRate').hide();

                        $('#registerForm-jobType').change(function() {
                            $('#registerForm-minRate').hide();
                            if (cmp.registerForm.field('jobType').val().indexOf('temp') >= 0) {
                                $('#registerForm-minRate').show();
                            }
                        });
                    }
                }

            });


            // Submit registration page login form
            var submitLoginRegister = function() {
                if (cmp.loginFormRegister.field('email').val() === '') {
                    return;
                }

                cmp.loginFormRegister.submit({

                    url: '/handlers/candidates.aspx/login',

                    success: function(d) {

                        window.location = "/candidateAccount.aspx";

                    },
                    failure: function(d) {

                        cmp.loginFormRegister.error(d.errors);
                    }

                });

            };

            cmp.loginFormRegister = new TVI.Form({

                ID: 'loginFormRegister',
                errorsEl: '.errors',
                buttons: [{

                    selector: '.submit',
                    enter: true,
                    handler: submitLoginRegister
                    },{ 
                
                    selector: '.forgotPassword',
                    handler: submitForgotten
                    
                    }]

                });

            };

            /* Public */

            TVI.apply(cmp, {

            /* Properties */

            /* Methods */

        });


        TVI.ready(init);

        return cmp;

    } ();
