function checkForm ( form ){
        var inputSeqText = form.inputSeqText.value;
        var inputSeqFile = form.inputSeqFile.value;
        var score = parseFloat(form.score.value);
        var P= parseFloat(form.P.value);
        var P_adj= parseFloat(form.P_adj.value);
        var print_par= form.print_par;
        var A= form.A.value;
        var T= parseInt(form.T.value);

        if(inputSeqText.length==0 && inputSeqFile.length==0){
            alert("Please give an input sequence");
            return false;
        }      
        if(inputSeqText.length >0 && inputSeqFile.length>0){
            alert("You are trying to give sequences both as a file and as a text in the textbox. Please give the sequences by using only one input format");
	    return false;
        }
        if(inputSeqText.length >0){
            // checking file lize
            if(inputSeqText.length > 40000000){
                alert("LOCP doesn\'t support analysis of files larger than 40\'000\'000 chars.");
                return false;
            }
            if(print_par == "html" && inputSeqText.length > 5000000){
                alert("LOCP doesn\'t support \"html\" output for files longer than 5\'000\'000 chars. Please use \"text\" output.");
                return false;
            }

            if( !CheckArrow(inputSeqText)){
                alert("Input sequence does not contain > characters. Please use FASTA format");
                return false;
            }
            if( !CheckChars(inputSeqText,A)){
                return false;
            }
        }
        //file input is not checked
        if(isNaN(score) || score<0){
        	alert("Score threshold should be a non-negative number");
			return false;
		}
        if(isNaN(P) || P<0 || P>1){
        	alert("P-value threshold should be a number between 0 and 1");
			return false;
		}
        if(isNaN(P_adj) || P_adj<0 || P_adj>1){
        	alert("P_adj-value threshold should be a number between 0 and 1");
			return false;
		}
        if( isNaN(T) || T<0){
        	alert("Minimum contig length whould be a non-negative integer");
			return false;
		}  
        return true;
}

function CheckArrow ( text ) {
        for (var i = 0; i < text.length; i++) {
            var character = text.substr(i,1);
            if (character == ">") { return true; } 
        }
        return false;
}
function CheckChars (gene_input,A) {
        var leagal1_regexp;
        if(A == "dna"){
           leagal1_regexp = /[ACGTRYKMSWBDHVN \t\n\r\m]/gi;
        }
        else{
           leagal1_regexp = /[ABCDEFGHIKLMNOPQRSTUVWYZX \t\n\r\m]/gi;
        }
        var leagal2_regexp = /^>.*$/gi;

        var input_rows = gene_input.split("\n");
        for (var i = 0; i < (input_rows.length); i++) {   
            var row = input_rows[i];
            if (row.search(leagal2_regexp) == -1) {
                for (var j = 0; j < row.length; j++) {
                    var character = row.substr(j,1); 
                    if (character.search(leagal1_regexp) == -1) {
                        var message= "Invalid character on line " + (i+1)+ " column "+ (j+1) +": "+ character+"\n";
                        if(A == "dna"){
                            message+= "Please use FASTA coding and IUPAC characters for DNA sequences.";
                        }else{
                            message+= "Please use FASTA coding and IUPAC characters for PROTEIN sequences.";
                        }
                        alert(message);
                        return false;
                    }
                }
            }
        }
        return true;
}

function setDefaultValues( form){
	form.score.value= 0;
	form.P.value= 1;
	form.P_adj.value=0.05;
	form.mgap.value= 5;
	form.print_par.value= "html";
	form.sort_par.value= "begin_i";
        form.A.value="prot";
        form.T.value= 50;
        form.C.checked= false;
}

function setDefaultValuesMeta( form){
	form.score.value= 0;
	form.P.value= 1;
	form.P_adj.value=1;
	form.mgap.value= 5;
	form.print_par.value= "html";
	form.sort_par.value= "P";
        form.A.value="dna";
        form.T.value= 50;
        form.C.checked= true;
}

function clearForm( form){
	form.inputSeqText.value= "";
	form.inputSeqFile.value="";
}

