/**
 *    Landlord registration
 */


$().ready(function() {

    // hide hack
    $('input[type=hidden]').hide();


    // method for username
    $.validator.addMethod('username', function(value, element, params) {
        var re = new RegExp('^[A-Za-z0-9\-\@\.\_]+$');
        return value.match(re);
    });

    // method for phone
    $.validator.addMethod('phone', function(value, element, params) {
        value = value.replace(/[^0-9]+/g, '');
        return value.match( new RegExp('^[0-9]{10,}$') );
    });

    // mask
    $('input[name=phone],input[name=mgmt_co_phone]').mask('999-999-9999? x99999');
    $('input[name=cellphone]').mask('999-999-9999');
    $('input[name=fax],input[name=mgmt_co_fax]').mask('999-999-9999');

    var theForm = $('#join-form');
    var isNew = true;

    if ($('#update-form').length) {
        theForm = $('#update-form');
        isNew = false;
    }

    // form validation
    $(theForm).validate({
        onfocusout: false,
        onkeyup: false,
        focusCleanup: true,
        focusInvalid: false,
        errorElement: 'em',

        showErrors: function(errorMap, errorList) {
            $('#submit-button-loading').remove();
            var num = this.numberOfInvalids();
            if (num) {
                var container = $('#form-errors');
                container.find('p,ul').remove();
                var ne = (num == 1) ? '1 error' : num + ' errors';
                container.append('<p>Your form contains ' + ne + ', see details below.</p>').show();
                this.defaultShowErrors();
                $('div.notice, div.info').hide();
                $('html,body').animate({scrollTop:0});
            }
        },

        rules: {
            'data[username]': {
                required: true,
                minlength: 4,
                username: true,
                remote: {
                    url: '/account/check-username',
                    async: false,
                    timeout: 20
                }
            },
            'data[password]': {
                required: true,
                minlength: 4
            },
            '_password': {
                required: true,
                minlength: 4,
                equalTo: 'input[name=data[password]]'
            },
            'data[first_name]': {
                required: true,
                minlength: 2
            },
            'data[last_name]': {
                required: true,
                minlength: 2
            },
            'data[email]': {
                required: true,
                email: true,
                remote: {
                    url: '/account/check-email',
                    async: false,
                    timeout: 20
                }
            },
            'data[phone]': {
                required: true,
                phone: true
            },
            '_agree': {
                required: true
            }
        },
        messages: {
            'data[username]': {
                required:  'Username is required',
                minlength: 'Username must be at least 4 characters long',
                username: 'Not a valid username format',
                remote: jQuery.format("&laquo;{0}&raquo; is already in use")
            },
            'data[password]': {
                required:  'Password is required',
                minlength: 'Password must be at least 4 characters long'
            },
            '_password': {
                required:  'Password confirmation is required',
                minlength: 'Password must be at least 4 characters long',
                equalTo:   'Please enter the same password as above'
            },
            'data[first_name]': {
                required: 'First Name is required',
                minlength: 'First Name is too short'
            },
            'data[last_name]': {
                required: 'Last Name is required',
                minlength: 'Last Name is too short'
            },
            'data[email]': {
                required: 'Email address is required',
                email: 'Valid  Email address is required',
                remote: jQuery.format("&laquo;{0}&raquo; is already registered")
                //remote: 'email is already registered'
            },
            'data[phone]': {
                required: 'Phone number is required',
                phone: 'Not a valid format. Please use 999-999-9999'
            },
            '_agree': {
                required: 'Please confirm that you have the right/permission to list'
            }
        }
    });

    if (!isNew) {
        $('#f-password').rules('remove', 'required');
        $('#f-password2').rules('remove', 'required');
    }

    // if second try
    if ($('#form-errors:visible').length) {
        theForm.validate().form();
    }


});
