var integersOnly = /[0-9]/g;
var integersNegOnly = /[0-9\-]/g;
var decimalsOnly = /[0-9\.]/g;
var timeOnly = /[0-9:]/g;
var dateOnly = /[0-9\/]/g;
var alphaOnly = /[A-Za-z]/g;
var alphaNumericOnly = /[A-Za-z0-9]/g;
var vouchersOnly = /[A-Za-z0-9\-]/g;
var discsOnly = /[A-Za-z0-9]/g;
var passwordOnly = /[A-Za-z0-9]/g;
var textOnly = /[A-Za-z0-9_,'' \-]/g;
var namesOnly = /[A-Za-z0-9_'' \-]/g;
var urlOnly = /[A-Za-z0-9_:?&\.\-\/]/g;
var linkTextOnly = /[A-Za-z0-9 ]/g;
var telOnly = /[0-9 +]/g;
var descOnly = /[a-zA-Z0-9 ,!""''&_\.\-\\\/]/g;
var emailOnly = /[A-Za-z0-9@_\-\.]/g;

function restrictCharacters(myfield, e, restrictionType) {
    if (!e) var e = window.event
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    var character = String.fromCharCode(code);

    // if they pressed esc... remove focus from field...
    if (code==27) { this.blur(); return false; }

    // ignore if they are press other keys
    // strange because code: 39 is the down key AND ' key...
    // and DEL also equals .
    if (!e.ctrlKey && code!=9 && code!=8 && code!=36 && code!=37 && code!=38 && (code!=39 || (code==39 && character=="'")) && code!=40) {
        if (character.match(restrictionType)) {
            return true;
        } else {
            return false;
        }

    }
}

function spaced(str)
{
    var newStr = str;

    while (newStr.search(/  /) > -1)
        newStr = newStr.replace(/  /g," ");

    if (newStr.charAt(0) == " ")
        newStr = newStr.substr(1,newStr.length-1);

    if (newStr.charAt(newStr.length-1) == " ")
        newStr = newStr.substr(0,newStr.length-1);

    return newStr;
}

function notNullCheck(str)
{
    if ((str) && (str.length > 0))
        return true;
    else
        return false;
}

function basicEmailCheck(str)
{
    if (str.search(/[^0-9a-zA-Z@_\-\.]/) == -1)
    {
        if ((str.match(/@/g)) && ((str.match(/@/g)).length == 1))
        {
            if ((str.match(/\./g)) && ((str.match(/\./g)).length > 0))
                return true;
        }
    }

    return false;
}

function passwordCheck(str)
{
    if (str.search(/[^0-9a-zA-Z]/) == -1)
        return true;
    else
        return false;
}

function basicNameCheck(str)
{
    if (str.search(/[^a-zA-Z ''\-]/) == -1)
        return true;
    else
        return false;
}

function basicAddressCheck(str)
{
    if (str.search(/[^0-9a-zA-Z ''\-]/) == -1)
        return true;
    else
        return false;
}

function basicTelephoneCheck(str)
{
    if (str.search(/[^0-9 +]/) == -1)
        return true;
    else
        return false;
}

function basicPostcodeCheck(str)
{
    if ((str.search(/[^0-9a-zA-Z ]/) == -1) && (str.length >= 6) && (str.length < 10))
        return true;
    else
        return false;
}

function basicDesCheck(str)
{
    if (str.search(/[^a-zA-Z\.]/) == -1)
        return true;
    else
        return false;
}

function register()
{

    if ((document.getElementById("reg_des").value == '') || ((document.getElementById("reg_des").value != '') && (basicDesCheck(document.getElementById("reg_des").value))))
    {
        if (notNullCheck(document.getElementById("reg_fname").value))
        {
            if (basicNameCheck(document.getElementById("reg_fname").value))
            {
                if (notNullCheck(document.getElementById("reg_sname").value))
                {
                    if (basicNameCheck(document.getElementById("reg_sname").value))
                    {
                        if (notNullCheck(document.getElementById("reg_email").value))
                        {
                            if (basicEmailCheck(document.getElementById("reg_email").value))
                            {
                                if (notNullCheck(document.getElementById("reg_pword").value = spaced(document.getElementById("reg_pword").value)))
                                {
                                    if (passwordCheck(document.getElementById("reg_pword").value))
                                    {
                                        if (document.getElementById("reg_pword").value == document.getElementById("reg_pwordChk").value)
                                        {
                                            if (document.getElementById("tandc").checked)
                                            {
                                                if (notNullCheck(document.getElementById("reg_add1").value))
                                                {
                                                    if (basicAddressCheck(document.getElementById("reg_add1").value))
                                                    {
                                                        if ((document.getElementById("reg_add2").value == '') || ((document.getElementById("reg_add2").value != '') && (basicAddressCheck(document.getElementById("reg_add2").value))))
                                                        {
                                                            if ((document.getElementById("reg_add3").value == '') || ((document.getElementById("reg_add3").value != '') && (basicAddressCheck(document.getElementById("reg_add3").value))))
                                                            {
                                                                if (notNullCheck(document.getElementById("reg_add4").value))
                                                                {
                                                                    if (basicAddressCheck(document.getElementById("reg_add4").value))
                                                                    {
                                                                        if ((document.getElementById("reg_add5").value == '') || ((document.getElementById("reg_add5").value != '') && (basicAddressCheck(document.getElementById("reg_add5").value))))
                                                                        {
                                                                            if (notNullCheck(document.getElementById("reg_add6").value))
                                                                            {
                                                                                if (basicPostcodeCheck(document.getElementById("reg_add6").value))
                                                                                {
                                                                                    if ((document.getElementById("reg_phone").value == '') || ((document.getElementById("reg_phone").value != '') && (basicTelephoneCheck(document.getElementById("reg_phone").value))))
                                                                                    {
                                                                                        document.getElementById("reg_form").submit();
                                                                                    }
                                                                                    else
                                                                                        alert('Telephone number must be must numbers only, no spaces');
                                                                                }
                                                                                else
                                                                                    alert('Postcode must be letters, numbers and space only');
                                                                            }
                                                                            else
                                                                                alert('Please enter your postcode');
                                                                        }
                                                                        else
                                                                            alert('Address fields must be letters, numbers, dash and spaces only');
                                                                    }
                                                                    else
                                                                        alert('Address fields must be letters, numbers, dash and spaces only');
                                                                }
                                                                else
                                                                    alert('Please enter your town or city');
                                                            }
                                                            else
                                                                alert('Address fields must be letters, numbers, dash and spaces only');
                                                        }
                                                        else
                                                            alert('Address fields must be letters, numbers, dash and spaces only');
                                                    }
                                                    else
                                                        alert('Address fields must be letters, numbers, dash and spaces only');
                                                }
                                                else
                                                    alert('Please enter the house number and street of your address');
                                            }
                                            else
                                                alert ('Please read our terms & conditions and tick the checkbox if you agree');
                                        }
                                        else
                                            alert('Your passwords do not match');
                                    }
                                    else
                                        alert('Password must be letters and numbers only, no spaces');
                                }
                                else
                                    alert('Please enter a password');
                            }
                            else
                                alert('Please provide a valid e-mail address');
                        }
                        else
                            alert('Please enter an e-mail address');
                    }
                    else
                        alert('Surname must be letters, apostrophe, dash and spaces only');
                }
                else
                    alert('Please enter your surname');
            }
            else
                alert('Firstname must be letters, apostrophe, dash and spaces only');
        }
        else
            alert('Please enter your firstname');
    }
    else
        alert('Please enter a valid salutation or leave blank');
}

function editAccount()
{
    if ((document.getElementById("edacc_des").value == '') || ((document.getElementById("edacc_des").value != '') && (basicDesCheck(document.getElementById("edacc_des").value))))
    {
        if (notNullCheck(document.getElementById("edacc_fname").value))
        {
            if (basicNameCheck(document.getElementById("edacc_fname").value))
            {
                if (notNullCheck(document.getElementById("edacc_sname").value))
                {
                    if (basicNameCheck(document.getElementById("edacc_sname").value))
                    {
                        if (notNullCheck(document.getElementById("edacc_email").value))
                        {
                            if (basicEmailCheck(document.getElementById("edacc_email").value))
                            {
                                if (notNullCheck(document.getElementById("edacc_old_pword").value = spaced(document.getElementById("edacc_old_pword").value)))
                                {
                                    if (passwordCheck(document.getElementById("edacc_old_pword").value))
                                    {
                                        if ((document.getElementById("edacc_new_pword").value == '') || ((document.getElementById("edacc_new_pword").value != '') && (document.getElementById("edacc_new_pword").value == document.getElementById("edacc_new_pwordChk").value)))
                                        {
                                            if ((document.getElementById("edacc_new_pword").value == '') || ((document.getElementById("edacc_new_pword").value != '') && (passwordCheck(document.getElementById("edacc_new_pword").value))))
                                            {
                                                if (document.getElementById("tandc").checked)
                                                {
                                                    if (notNullCheck(document.getElementById("edacc_add1").value))
                                                    {
                                                        if (basicAddressCheck(document.getElementById("edacc_add1").value))
                                                        {
                                                            if ((document.getElementById("edacc_add2").value == '') || ((document.getElementById("edacc_add2").value != '') && (basicAddressCheck(document.getElementById("edacc_add2").value))))
                                                            {
                                                                if ((document.getElementById("edacc_add3").value == '') || ((document.getElementById("edacc_add3").value != '') && (basicAddressCheck(document.getElementById("edacc_add3").value))))
                                                                {
                                                                    if (notNullCheck(document.getElementById("edacc_add4").value))
                                                                    {
                                                                        if (basicAddressCheck(document.getElementById("edacc_add4").value))
                                                                        {
                                                                            if ((document.getElementById("edacc_add5").value == '') || ((document.getElementById("edacc_add5").value != '') && (basicAddressCheck(document.getElementById("edacc_add5").value))))
                                                                            {
                                                                                if (notNullCheck(document.getElementById("edacc_add6").value))
                                                                                {
                                                                                    if (basicPostcodeCheck(document.getElementById("edacc_add6").value))
                                                                                    {
                                                                                        if ((document.getElementById("edacc_phone").value == '') || ((document.getElementById("edacc_phone").value != '') && (basicTelephoneCheck(document.getElementById("edacc_phone").value))))
                                                                                        {
                                                                                            document.getElementById("edacc_form").submit();
                                                                                        }
                                                                                        else
                                                                                            alert('Telephone number must be must numbers only, no spaces');
                                                                                    }
                                                                                    else
                                                                                        alert('Postcode must be letters, numbers and space only');
                                                                                }
                                                                                else
                                                                                    alert('Please enter your postcode');
                                                                            }
                                                                            else
                                                                                alert('Address fields must be letters, numbers, dash and spaces only');
                                                                        }
                                                                        else
                                                                            alert('Address fields must be letters, numbers, dash and spaces only');
                                                                    }
                                                                    else
                                                                        alert('Please enter your town or city');
                                                                }
                                                                else
                                                                    alert('Address fields must be letters, numbers, dash and spaces only');
                                                            }
                                                            else
                                                                alert('Address fields must be letters, numbers, dash and spaces only');
                                                        }
                                                        else
                                                            alert('Address fields must be letters, numbers, dash and spaces only');
                                                    }
                                                    else
                                                        alert('Please enter the house number and street of your address');
                                                }
                                                else
                                                    alert ('Please read our terms & conditions and tick the checkbox if you agree');
                                            }
                                            else
                                                alert('New password must be letters and numbers only, no spaces');
                                        }
                                        else
                                            alert('Your new passwords do not match');
                                    }
                                    else
                                        alert('Password must be letters and numbers only, no spaces');
                                }
                                else
                                    alert('Please enter a password');
                            }
                            else
                                alert('Please provide a valid e-mail address');
                        }
                        else
                            alert('Please enter an e-mail address');
                    }
                    else
                        alert('Surname must be letters, apostrophe, dash and spaces only');
                }
                else
                    alert('Please enter your surname');
            }
            else
                alert('Firstname must be letters, apostrophe, dash and spaces only');
        }
        else
            alert('Please enter your firstname');
    }
    else
        alert('Please enter a valid salutation or leave blank');
}

function login()
{
    if (notNullCheck(document.getElementById("login_email").value))
    {
        if (basicEmailCheck(document.getElementById("login_email").value))
        {
            if (notNullCheck(document.getElementById("login_pword").value = spaced(document.getElementById("login_pword").value)))
            {
                if (passwordCheck(document.getElementById("login_pword").value))
                {
                    document.getElementById("login_form").submit();
                }
                else
                    alert('Password must be letters and numbers only');
            }
            else
                alert('Please enter your password or click "forgotten password"');
        }
        else
            alert('Please enter a valid e-mail address');
    }
    else
        alert('Please enter your e-mail address');
}

function login2()
{
    if (notNullCheck(document.getElementById("login_email").value))
    {
        if (basicEmailCheck(document.getElementById("login_email").value))
        {
            document.getElementById("login_form").submit();
        }
        else
            alert('Please enter a valid e-mail address');
    }
    else
        alert('Please enter your e-mail address');
}

function changePassword()
{
    if (document.getElementById("new_pword").value != '')
    {
        if (document.getElementById("new_pwordChk").value != '')
        {
            if (passwordCheck(document.getElementById("new_pword").value))
            {
                if (document.getElementById("new_pword").value == document.getElementById("new_pwordChk").value)
                {
                    document.getElementById("nwpwrd_form1").submit();
                }
                else
                    alert('Your new passwords do not match');
            }
            else
                alert('Password must be letters and numbers only, no spaces');
        }
        else
            alert('Please confirm your new password');
    }
    else
        alert('Please enter a new password');
}