// $Id$

$(function() {
    var timeout;

    // Member logout
    $('#member-logout').click(function() {
        return confirm('Do you really want to logout?');
    });

    // Form button rollover
    $('.btn-generic').mouseover(function() {
        $(this).css({
            'color':'#FFFFFF',
            'background-position':'0 -024px'
        });
    });
    $('.btn-generic').mouseout(function() {
        $(this).css({
            'color':'#000000',
            'background-position':'0 0'
        });
    });

    // Text-field focus
    $('.text-field').focus(function() {
        $(this).css({
            'border-color':'#0080C0'
        });
    }).blur(function() {
        $(this).css({
            'border-color':'#969696'
        });
    });

    // Form submits
    $('#frm-header-login').submit(function() {
        return frmHeaderLogin();
    });
    $('#frm-book-our-studio').submit(function() {
        return frmBookOurStudio();
    });
    $('#frm-become-a-member').submit(function() {
        return frmBecomeAMember();
    });
});

// Process "book our studio" form
function frmBookOurStudio() {
    var formError = false;
    var reqFields = new Array(
        'hirer',
        'invoice-name',
        'invoice-address',
        'invoice-city',
        'postcode',
        'first-name',
        'last-name',
        'email'
    );

    clearErrorFields(reqFields);

    for (var i = 0; i < reqFields.length; i++) {
        if ($('#' + reqFields[i]).val() == '') {
            $('#' + reqFields[i]).addClass('field-error');
            $('#' + reqFields[i]).after(getReqFieldErrorMsg());
            formError = true;
        }
    }

    return !formError;
}

// Check field values for header login
function frmHeaderLogin() {
    if (($('#header-login-username').val() == '') && ($('#header-login-passwd').val() == '')) {
        return false;
    } else {
        return true;
    }
}

// Process "become a member" form
function frmBecomeAMember() {
    var formError = false;
    var reqFields = new Array(
        'username',
        'passwd',
        'first-name',
        'last-name',
        'email'
    );
    var reUsername = /^[a-zA-Z0-9\-\_\.]+$/;
    var passwdMin = 6;

    clearErrorFields(reqFields);

    for (var i = 0; i < reqFields.length; i++) {
        if ($('#' + reqFields[i]).val() == '') {
            $('#' + reqFields[i]).addClass('field-error');
            $('#' + reqFields[i]).after(getReqFieldErrorMsg());
            formError = true;
        } else {
            if (reqFields[i] == 'username') {
                // Check for valid chars for username
                if (!reUsername.test($('#' + reqFields[i]).val())) {
                    alert("Your username contains invalid characters.\nCharacters permitted are: 'a-z A-Z 0-9 - _ +'");
                    $('#' + reqFields[i]).addClass('field-error');
                    $('#' + reqFields[i]).after(getReqFieldErrorMsg('invalid'));
                    formError = true;
                }
            } else if (reqFields[i] == 'passwd') {
                // Check password length (min: 6 chars)
                var passwdLen = $('#' + reqFields[i]).val().length;

                if (passwdLen < passwdMin) {
                    alert("Your password is too short.\nMinimum length required is 6 characters.");
                    $('#' + reqFields[i]).addClass('field-error');
                    $('#' + reqFields[i]).after(getReqFieldErrorMsg('invalid'));
                    formError = true;
                }
            }
        }
    }

    return !formError;
}

// Clear error field status for forms
function clearErrorFields(fields) {
    for (var i = 0; i < fields.length; i++) {
        $('#' + fields[i]).removeClass('field-error');
    }

    $('.req-field-errormsg').remove();
}

// Required field error msg
function getReqFieldErrorMsg(str) {
    if ((str == undefined) || (str == '')) {
        str = 'required';
    }

    var html = '<span class="req-field-errormsg"><img src="_images/icons/bullet_error.png" alt="" /> ' + str + '</span>';
    return html;
}
