﻿/**
* jQuery Validation
* ------------------
*
* Date:   28-09-2009 @ 12:00
* Author: Shane Simpkins
**/

function isNumeric(val) {
    var validChars = "0123456789.-";
    var _char;
    var result = true;

    if (val.length == 0)
        return true;

    for (var i = 0; i < val.length; ++i) {
        _char = val.charAt(i);
        if (validChars.indexOf(_char) == -1) {
            result = false;
            break;
        }
    }

    return result;
}

function _ValidateFields() {
    var valid = true;

    // Required Fields...
    jQuery(".req").each(function(obj) {
        var val = jQuery(this).val();
        if (val == null || val.length == 0) {
            jQuery(this).parent().parent().addClass("jQueryErrorREQ");
            valid = false;
        }
        else {
            jQuery(this).parent().parent().removeClass("jQueryErrorREQ");
        }
    });

    // Numeric Fields...
    jQuery(".num").each(function(obj) {
        if (isNumeric(jQuery(this).val()) == false) {
            jQuery(this).parent().parent().addClass("jQueryErrorNUM");
            valid = false;
        }
        else {
            jQuery(this).parent().parent().removeClass("jQueryErrorNUM");
        }
    });

    // Email Fields...
    jQuery(".email").each(function(obj) {
        var pattern = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
        if (pattern.test(jQuery(this).val()) == false) {
            jQuery(this).parent().parent().addClass("jQueryErrorEMAIL");
            valid = false;
        }
        else {
            jQuery(this).parent().parent().removeClass("jQueryErrorEMAIL");
        }
    });

    // PostCode Fields...
    jQuery(".ukpostcode").each(function(obj) {
        var postcodeRegEx = /[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i;
        if (postcodeRegEx.test(jQuery(this).val()) == false) {
            jQuery(this).parent().parent().addClass("jQueryErrorUKPOSTCODE");
            valid = false;
        }
        else {
            jQuery(this).parent().parent().removeClass("jQueryErrorUKPOSTCODE");
        }
    });

    jQuery("input:not(:checked)").each(function(obj) {
        if (jQuery(this).parent().hasClass(".chkon")) {
            jQuery(this).parent().addClass("jQueryErrorCHKON");
            valid = false;
        }
        else {
            jQuery(this).parent().removeClass("jQueryErrorCHKON");
        }
    });

    jQuery("input:checked").each(function(obj) {
        if (jQuery(this).parent().hasClass("chkoff")) {
            jQuery(this).parent().addClass("jQueryErrorCHKOFF");
            valid = false;
        }
        else {
            jQuery(this).parent().removeClass("jQueryErrorCHKOFF");
        }
    });

    jQuery(".dropfirst").each(function(obj) {
        var _this = jQuery(this);

        var selectedVal = jQuery(this).find('option').filter(':selected').text();
        var firstVal = jQuery(this).find('option').filter(':first').text();

        if (selectedVal == firstVal) {
            _this.parent().parent().addClass("jQueryErrorDROP");
            valid = false;
        }
        else {
            _this.parent().parent().removeClass("jQueryErrorDROP");
        }
    });

    if (!valid)
        alert('Sorry, but all the RED highlighted fields have been filled incorrectly. Please check the data you have entered!');
    return valid;
}

