
function checkSubmit(form){
    var spec = form.spectrum.value;
    var integerRegExp = /^[\+\-]?\d+$/;
	var floatRegExp=/^[\+\-]?(\d+(\.\d*)?|\.?\d+)$/;
    var emailRegExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;	
    if(spec == "" && form.spec_on_server.value == ""){
        alert('Please provide spectrum files.');
        form.spectrum.focus();
        return false;        
    }
    
	var email = form.email.value;
	if(!emailRegExp.test(email)){
		alert('Empty or invalid email address');
		form.email.focus();
		return false;
	}  
    
    if(tool == "MSALIGN"){
	    var minmms = parseFloat(form.minmodmass.value);
	    var maxmms = parseFloat(form.maxmodmass.value);
	    if(minmms< -200 || maxmms > 200 || minmms > maxmms){
	       alert('Mass Modification should be between -200 and 200.');
	       form.minmodmass.focus();
	       return false;
	    }
	}
	if(tool == "PEPNOVO"){
    	var instrument = form.instrument.value;
    	if(instrument != 'ESI-ION-TRAP'){
    		alert('Instrument must be ESI-ION-TRAP in PepNovo search');
    		return false;
    	}
	}	
    var pmtolStr = form.PM_tolerance.value;
    if (floatRegExp.test(pmtolStr)){
		var pmtol = parseFloat(pmtolStr);
		if(pmtol < 0 || pmtol > 2.5){
			alert('Parent Mass Tolerance should be between 0 and 2.5.');
			form.PM_tolerance.focus();
			return false;
		}
    }
    else{
		alert('Parent Mass Tolerance should be real number.');
		form.PM_tolerance.focus();
		return false;
	}
    var itolStr=form.Ion_tolerance.value;
    if (!floatRegExp.test(itolStr)){
        alert('Ion Tolerance should be real number.');
        form.Ion_tolerance.focus();
        return false;
    }
    else{
		var itol = parseFloat(itolStr);
		if(itol <= 0 || itol > 1){
			alert('Ion Tolerance should be positive and less than 1');
			form.Ion_tolerance.focus();
			return false;
		}
	}
    var modsStr=form.mods.value;
    if (!integerRegExp.test(modsStr)){
        alert('Mods should be integral.');
        form.mods.focus();
        return false;
    }
    else{
		var m = parseInt(modsStr);
		if(m < 1 || m > 3){
			alert('Modes should be between 1 and 3.');
			form.mods.focus();
			return false;
		}
	}	
    var db = form.DB.value;
    if((tool == "INSPECT" || tool == "MSALIGN") && db == "None"){
    	var otherFiles = form.sequence_file.value;
    	if(otherFiles == "" && form.seq_on_server.value == ""){
    		alert('Please provide sequence files or specify a sequence database.');
    		form.db.focus();
    		return false;
    	}
    }

    if(tool == "PEPNOVO"){
	    var pepnrsol = form.pepnrsol.value;
	    var msg = null;
	    if(!integerRegExp.test(pepnrsol))
	    	msg = 'Number of desired solutions should be integral.';
	    else{
	    	var v = parseInt(pepnrsol);
	    	if(v < 0 || v > 2000)
	    		msg = 'Number of desired solutions should be between 1 and 2000.';
	    }
	    if(msg != null){
	    	alert(msg);
	        form.pepnrsol.focus();
	        return false;	    	
	    }
	}
	return true;
}
