
jQuery.noConflict();
val = {
    'submission_job': {
        'name':		function(form, value) { return validateNotEmpty(value) },
        'email':	function(form, value) { return validateEMail(value) && validateNotEmpty(value) },
        'phone':	function(form, value) { return validateNotEmpty(value)&& validatePhone(value) },
        'resume':	function(form, value) { return validateNotEmpty(value)}
    },
    'submission_intern': {
        'lname':			function(form, value) { return validateNotEmpty(value) },
        'fname':			function(form, value) { return validateNotEmpty(value) },
        'email':			function(form, value) { return validateEMail(value) && validateNotEmpty(value) },
        'school':			function(form, value) { return validateNotEmpty(value) },
        'major':			function(form, value) { return validateNotEmpty(value) },
        'locationHidden':	function(form, value) { return validateCheckbox("submission_form","location","locationHidden") },
        'dept1':			function(form, value) { return validateNotEmpty(value) },
        'dept2':			function(form, value) { return validateNotEmpty(value) },
        'dept3':			function(form, value) { return validateNotEmpty(value) },
        'semester':			function(form, value) { return validateNotEmpty(value) },
        'year':				function(form, value) { return validateNotEmpty(value) },
        'creditHidden':		function(form, value) { return validateRadioButton("submission_form","credit") },
        'availability':		function(form, value) { return validateNotEmpty(value) },
        'authorised':		function(form, value) { return validateNotEmpty(value) },
        'internStart':		function(form, value) { return validateNotEmpty(value) },
        'internEnd':		function(form, value) { return validateNotEmpty(value) },
        'sname':			function(form, value) { return validateNotEmpty(value) },
        'semail':			function(form, value) { return validateEMail(value) && validateNotEmpty(value) },
        'phone':			function(form, value) { return validateNotEmpty(value)&& validatePhone(value) },
        'describe':			function(form, value) { return validateNotEmpty(value) },
        'resume':			function(form, value) { return validateNotEmpty(value)}
    }
}

function validatePhone(value) {
    return value.length == 0 || value.match(/^[2-9]\d{2}[-\/]?\d{3}[-\/]?\d{4}$/)
}

function validateEMail(value) {
    /* Regex taken from http://www.quirksmode.org/js/mailcheck.html */
    return value.length == 0 || value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)
}

function validateNotEmpty(value) {
    return value.length > 0
}

function validateRadioButton(formName,radioName) {
	var radioBtn = document.forms[formName].elements[radioName];
    for (i = 0; i < radioBtn.length; i++) {
        if (radioBtn[i].checked) return true;
    }
	return false;
}

function validateCheckbox(formName,checkName,checkNameHidden) {
	var checkBox = document.forms[formName].elements[checkName];
	var checkNameAll = "";
	var isChecked = false;
    for (i = 0; i < checkBox.length; i++) {
        if (checkBox[i].checked) {
        	checkNameAll += " | " + checkBox[i].value;
        	isChecked = true;
        }
    }
    document.forms[formName].elements[checkNameHidden].value = checkNameAll.substring(3);
	return isChecked;
}

function validate(form, rules) {
	form.find('.error,.main_error').hide()
    form.find('.invalid').removeClass('invalid')
    
    valid = true
	inputs = form.find(':input')
	for(var i = 0; i < inputs.length; i++) {
	    
	    //skip fields without validation rules
	    if(val[rules][inputs[i].name] == null) { continue }
	    
	    if(!val[rules][inputs[i].name](form, inputs[i].value)) {
	    	form.find('.' + inputs[i].name).focus()
	        form.find('.' + inputs[i].name + '_error').show()
	        jQuery(inputs[i]).addClass('invalid')
	        valid = false
	    }
	}
	
	if(!valid) {
	    form.find('.main_error').show()
	}
	return valid
}

function jobValidate() {
	if(validate(jQuery('#submission_form'), 'submission_job'))
		submitJob();
}

function submitJob() {
	document.submission_form.submit();
	return true;
}

function internValidate() {
	if(validate(jQuery('#submission_form'), 'submission_intern'))
		submitIntern();
}

function submitIntern() {
	document.submission_form.submit();
	return true;
}
