jQuery(function ($) {


function validate() {
    var flds = [
        {'n':'fn', 'l':'first name'},
        {'n':'ln', 'l':'last name'},
        {'n':'em', 'l':'email'},
        {'n':'zp', 'l':'zip'},
        {'n':'ph', 'l':'phone'}
    ];

    var error = [];
    
    var error_str = '';

    if ($('#subjects-text').val() == '- Select -') {
        error_str += "Please select a subject.\n\n";
    }

    for (var i in flds) {
        var n = flds[i]['n'];
        var e = $('#'+n);
        if (e.length) {
            var val = e.val();
            if (!val) {
                error.push(flds[i]['l']);
            } else {
                switch(n) {
                    case 'em': if (!isEmail(val)) error.push(flds[i]['l']);break;
                    case 'zp': if (!isZip(val)) error.push(flds[i]['l']);break;
                    case 'ph': if (!isPhone(val)) error.push(flds[i]['l']);break;
                }
            }
        }
    }


    if (error.length) {
        error_str += 'Please enter valid '+error.join(", ")+'.';
    }

    if ($('#agree')[0].checked == false) {
        if (error.length) {
            error_str += '\n\n';
        }
        error_str += 'Please agree to receive offers from MBADegrees.com and their partners in accordance with their privacy policy & terms and conditions.';
    }

    if (error_str) {
        alert(error_str);
        return false
    }
	
    return true;
}

function isEmail(s) {
    if (!isNaN(s.split('@')[0])) {
        return false;
    }
    return s.search(/^[^@]+@[^@]+.[a-z]{2,}$/i) !== -1;
}

function isPhone(s) {
    return s.search(/^\d{3}\-\d{3}\-\d{4}$/) !== -1;
}

function isZip(s) {
    return s.search(/(^\d{5}$)|(^\d{5}-\d{4}$)/) !== -1;
}

function setSubject() {
        var select_val = $("#subjects option:selected").text();
        $('#subjects-text').val(select_val);
}

$(document).ready(function(){
    $('#subjects').change(function(){
      setSubject();
    });
    $('#offer-form').submit(function(){
        if (validate()) {
            return true;
        }

        return false;
    });
});

});
