//---------------------------------------------------
//  initial_check
//---------------------------------------------------
function initial_check(cgi)
{
    if ( cgi.indexOf("norm.cgi") > -1 ) {
        check_norm_form_Affymetrix();
        check_norm_form_TwoColors();
	return;
    }
    if ( cgi.indexOf("prep.cgi") > -1 ) {
        check_prep_form_();
	return;
    }
    if ( cgi.indexOf("cluster.cgi") > -1 ) {
        check_cluster_form_Hierarchical();
        check_cluster_form_NonHierarchical();
        return;
    }
    if ( cgi.indexOf("t-rex.cgi") > -1 ) {
        check_t_rex_form_TwoClasses();
        check_t_rex_form_MultiClasses();
        check_t_rex_form_Correlation();
        check_t_rex_form_Survival();
	return;
    }
   if ( cgi.indexOf("prophet.cgi") > -1 ) {
        check_prophet_form_Train();
        check_prophet_form_Predict();
	return;
    }
   if ( cgi.indexOf("ete.cgi") > -1 ) {
        check_ete_form();
	return;
    }
}

//---------------------------------------------------
//          N O R M A L I Z A T I O N
//---------------------------------------------------

function check_norm_form_Affymetrix()
{
}

function validate_norm_form_Affymetrix()
{
    if ( (isEmpty(norm_form_Affymetrix.gene_expression_file.value) == true) && (isEmpty(norm_form_Affymetrix.gene_expression_file_ref.value) == true) && (isEmpty(norm_form_Affymetrix.gene_expression_file_textarea.value) == true) ) {
	alert("'Affymetrix array files' is empty, please, fill in this text box !"); norm_form_Affymetrix.gene_expression_file.focus();return false;
    }
    return true;
}

function check_norm_form_TwoColors()
{
}

function validate_norm_form_TwoColors()
{
    if ( (isEmpty(norm_form_TwoColors.gene_expression_file.value) == true) && (isEmpty(norm_form_TwoColors.gene_expression_file_ref.value) == true) && (isEmpty(norm_form_TwoColors.gene_expression_file_textarea.value) == true) ) {
	alert("'Array files' is empty, please, fill in this text box !"); norm_form_TwoColors.gene_expression_file.focus();return false;
    }
    return true;
}


//---------------------------------------------------
//            P R E P R O C E S S I N G 
//---------------------------------------------------

function check_prep_form_()
{
    var prep_form = document.getElementById("prep_form");

    prep_form.logbase.disabled = (prep_form.log.checked) ? false : true;  
    prep_form.max_distance.disabled = (prep_form.remove_replicates.checked) ? false : true;  
    prep_form.merge_replicates_mode[0].disabled = (prep_form.merge_replicates.checked) ? false : true;  
    prep_form.merge_replicates_mode[1].disabled = (prep_form.merge_replicates.checked) ? false : true;  
    prep_form.filter_missing_perc.disabled = (prep_form.filter_missing.checked) ? false : true;  
    prep_form.impute_missing_mode[0].disabled = (prep_form.impute_missing.checked) ? false : true;  
    prep_form.impute_missing_mode[1].disabled = (prep_form.impute_missing.checked) ? false : true;  
    prep_form.impute_missing_mode[2].disabled = (prep_form.impute_missing.checked) ? false : true;  
    prep_form.impute_missing_mode[3].disabled = (prep_form.impute_missing.checked) ? false : true;  
    for (i = 0; i < prep_form.impute_missing_mode.length; i++) {
        if (prep_form.impute_missing_mode[i].checked) {
            value = prep_form.impute_missing_mode[i].value;
            //alert(value + ", " + prep_form.impute_missing.checked);
	    if ( (value == 'knn') && (prep_form.impute_missing.checked) ) {
		prep_form.kvalue.disabled = false;
	    } else {
		prep_form.kvalue.disabled = true;
	    }
	    break;
	}
    }
    prep_form.filter_flat_root_threshold.disabled = (prep_form.filter_flat_root.checked) ? false : true;  
    prep_form.filter_flat_dev_threshold.disabled = (prep_form.filter_flat_dev.checked) ? false : true;  
}

function validate_prep_form()
{
    var prep_form = document.getElementById("prep_form");

    if ( (isEmpty(prep_form.gene_expression_file.value) == true) && (isEmpty(prep_form.gene_expression_file_ref.value) == true) && (isEmpty(prep_form.gene_expression_file_textarea.value) == true) ) {
	alert("'Gene expression file' is empty, please, fill in this text box !"); prep_form.gene_expression_file.focus(); return false;
    }
//    if ( (prep_form.log.checked) || (prep_form.remove_replicates.checked) ) { 
//    } else {
//	return false;
//    }
    return true;
}


//---------------------------------------------------
//            C L U S T E R I N G
//---------------------------------------------------

function check_cluster_form_Hierarchical()
{
}

function validate_cluster_form_Hierarchical()
{
    var cluster_form_Hierarchical = document.getElementById("cluster_form_Hierarchical");

    if ( (isEmpty(cluster_form_Hierarchical.gene_expression_file.value) == true) && (isEmpty(cluster_form_Hierarchical.gene_expression_file_ref.value) == true) && (isEmpty(cluster_form_Hierarchical.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene expression file' !!!"); cluster_form_Hierarchical.gene_expression_file.focus();return false;
    }
    if ( (cluster_form_Hierarchical.genes.checked == false) &&  (cluster_form_Hierarchical.conditions.checked == false) ) {
	alert("No clustering was selected, please, select 'genes' or/and 'conditions'"); return false;
    }
    return true;
}

//---------------------------------------------------

function check_cluster_form_NonHierarchical()
{
    var cluster_form_NonHierarchical = document.getElementById("cluster_form_NonHierarchical");

    if (cluster_form_NonHierarchical.cluster_method.value == "kmeans") {
        cluster_form_NonHierarchical.number_of_clusters.disabled = false;
    } else {
        cluster_form_NonHierarchical.number_of_clusters.disabled = true;
    }
}

function validate_cluster_form_NonHierarchical()
{
    var cluster_form_NonHierarchical = document.getElementById("cluster_form_NonHierarchical");

    if ( (isEmpty(cluster_form_NonHierarchical.gene_expression_file.value) == true) && (isEmpty(cluster_form_NonHierarchical.gene_expression_file_ref.value) == true) && (isEmpty(cluster_form_NonHierarchical.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene expression file' !!!"); cluster_form_NonHierarchical.gene_expression_file.focus();return false;
    }
    if ( (cluster_form_NonHierarchical.genes.checked == false) &&  (cluster_form_NonHierarchical.conditions.checked == false) ) {
	alert("No clustering was selected, please, select 'genes' or/and 'conditions'"); return false;
    }
    if ( (cluster_form_NonHierarchical.cluster_method.value == "kmeans") && 
         ( (isEmpty(cluster_form_NonHierarchical.number_of_clusters.value)) || (cluster_form_NonHierarchical.number_of_clusters.value < 2) ) ) {
	alert("K-value not valid, please, select a k-value bigger than 1"); return false;
    }
    return true;
}

//---------------------------------------------------
//                 T _ R E X
//---------------------------------------------------

function check_t_rex_form_TwoClasses()
{
    var i, value;
    var t_rex_form_TwoClasses = document.getElementById("t_rex_form_TwoClasses");

    for (i = 0; i < t_rex_form_TwoClasses.test.length; i++) {
        if (t_rex_form_TwoClasses.test[i].checked) {
            value = t_rex_form_TwoClasses.test[i].value;
            //alert(value + ", " + prep_form.impute_missing.checked);
	    if ( value == 'cleartwo' ) {
		t_rex_form_TwoClasses.signlevel.disabled = false;
	    } else {
		t_rex_form_TwoClasses.signlevel.disabled = true;
	    }
	    break;
	}
    }
}

function validate_t_rex_form_TwoClasses()
{
    var i;
    var test = 0;
    var t_rex_form_TwoClasses = document.getElementById("t_rex_form_TwoClasses");

    if ( (isEmpty(t_rex_form_TwoClasses.gene_expression_file.value) == true) && (isEmpty(t_rex_form_TwoClasses.gene_expression_file_ref.value) == true) && (isEmpty(t_rex_form_TwoClasses.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene expression file' !!!"); t_rex_form_TwoClasses.gene_expression_file.focus();return false;
    }

    for (i = 0; i < t_rex_form_TwoClasses.test.length; i++) {
        if (t_rex_form_TwoClasses.test[i].checked) {
            test = 1;
            break;
        }
    }
    if ( test == 0 ) {
	alert("No test was selected, please, select one of them."); return false;
    }

    for (i = 0; i < t_rex_form_TwoClasses.test.length; i++) {
        if (t_rex_form_TwoClasses.test[i].checked) {
            value = t_rex_form_TwoClasses.test[i].value;
            //alert(value + ", " + prep_form.impute_missing.checked);
	    if ( value == 'cleartwo' ) {
	        if ( isEmpty(t_rex_form_TwoClasses.signlevel.value) == true ) {
	            alert("You have selected 'CLEAR' test, but the 'Significance level' is empty. Please, enter a valid value !!!"); t_rex_form_TwoClasses.signlevel.focus();return false;
                }
	    }
	    break;
	}
    }

    if ( (isEmpty(t_rex_form_TwoClasses.rows.value) == true) || (t_rex_form_TwoClasses.rows.value <= 0) ) {
	alert("The value of the field 'Rows' is not valid, please, enter a valid one !!"); t_rex_form_TwoClasses.rows.focus();return false;
    }

    return true;
}

//---------------------------------------------------

function check_t_rex_form_MultiClasses()
{
    var i, value;
    var t_rex_form_MultiClasses = document.getElementById("t_rex_form_MultiClasses");

    //alert("check_t_rex_form_MultiClasses: length = (" + t_rex_form_MultiClasses.test.length + ")");

    for (i = 0; i < t_rex_form_MultiClasses.test.length; i++) {
        //alert("check_t_rex_form_MultiClasses: checked = (" + i + ", " + t_rex_form_MultiClasses.test[i].checked + ")");
        if (t_rex_form_MultiClasses.test[i].checked) {
            value = t_rex_form_MultiClasses.test[i].value;
 	    //alert("check_t_rex_form_MultiClasses: value = (" + i + ", " + value + ")");
	    if ( value == 'clearmulti' ) {
		t_rex_form_MultiClasses.signlevel.disabled = false;
	    } else {
		t_rex_form_MultiClasses.signlevel.disabled = true;
	    }
	    break;
	}
    }
}

function validate_t_rex_form_MultiClasses()
{
    var i;
    var test = 0;
    var t_rex_form_MultiClasses = document.getElementById("t_rex_form_MultiClasses");

    if ( (isEmpty(t_rex_form_MultiClasses.gene_expression_file.value) == true) && (isEmpty(t_rex_form_MultiClasses.gene_expression_file_ref.value) == true) && (isEmpty(t_rex_form_MultiClasses.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene expression file' !!!"); t_rex_form_MultiClasses.gene_expression_file.focus();return false;
    }

    for (i = 0; i < t_rex_form_MultiClasses.test.length; i++) {
        if (t_rex_form_MultiClasses.test[i].checked) {
            test = 1;
            break;
        }
    }
    if ( test == 0 ) {
	alert("No test was selected, please, select one of them."); return false;
    }

    for (i = 0; i < t_rex_form_MultiClasses.test.length; i++) {
        if (t_rex_form_MultiClasses.test[i].checked) {
            value = t_rex_form_MultiClasses.test[i].value;
            //alert(value + ", " + prep_form.impute_missing.checked);
	    if ( value == 'clearmulti' ) {
	        if ( isEmpty(t_rex_form_MultiClasses.signlevel.value) == true ) {
	            alert("You have selected 'CLEAR' test, but the 'Significance level' is empty. Please, enter a valid value !!!"); t_rex_form_MultiClasses.signlevel.focus();return false;
                }
	    }
	    break;
	}
    }

    if ( (isEmpty(t_rex_form_MultiClasses.rows.value) == true) || (t_rex_form_MultiClasses.rows.value <= 0) ) {
	alert("The value of the field 'Rows' is not valid, please, enter a valid one !!"); t_rex_form_MultiClasses.rows.focus();return false;
    }

    return true;
}

//---------------------------------------------------

function check_t_rex_form_Correlation()
{
}

function validate_t_rex_form_Correlation()
{
    var i;
    var test = 0;
    var t_rex_form_Correlation = document.getElementById("t_rex_form_Correlation");

    if ( (isEmpty(t_rex_form_Correlation.gene_expression_file.value) == true) && (isEmpty(t_rex_form_Correlation.gene_expression_file_ref.value) == true) && (isEmpty(t_rex_form_Correlation.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene expression file' !!!"); t_rex_form_Correlation.gene_expression_file.focus();return false;
    }

    for (i = 0; i < t_rex_form_Correlation.test.length; i++) {
        if (t_rex_form_Correlation.test[i].checked) {
            test = 1;
            break;
        }
    }
    if ( test == 0 ) {
	alert("No test was selected, please, select one of them."); return false;
    }

    if ( (isEmpty(t_rex_form_Correlation.rows.value) == true) || (t_rex_form_Correlation.rows.value <= 0) ) {
	alert("The value of the field 'Rows' is not valid, please, enter a valid one !!"); t_rex_form_Correlation.rows.focus();return false;
    }

    return true;
}

//---------------------------------------------------

function check_t_rex_form_Survival()
{
}

function validate_t_rex_form_Survival()
{
    var i;
    var test = 0;
    var t_rex_form_Survival = document.getElementById("t_rex_form_Survival");

    if ( (isEmpty(t_rex_form_Survival.gene_expression_file.value) == true) && (isEmpty(t_rex_form_Survival.gene_expression_file_ref.value) == true) && (isEmpty(t_rex_form_Survival.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene expression file' !!!"); t_rex_form_Survival.gene_expression_file.focus();return false;
    }

    if ( t_rex_form_Survival.test.checked ) {
      test = 1;
    }

/*
    for (i = 0; i < t_rex_form_Survival.test.length; i++) {
        if (t_rex_form_Survival.test[i].checked) {
            test = 1;
            break;
        }
    }
*/

    if ( test == 0 ) {
	alert("No test was selected, please, select one of them."); return false;
    }

    if ( (isEmpty(t_rex_form_Survival.rows.value) == true) || (t_rex_form_Survival.rows.value <= 0) ) {
	alert("The value of the field 'Rows' is not valid, please, enter a valid one !!"); t_rex_form_Survival.rows.focus();return false;
    }

    return true;
}


//---------------------------------------------------
//                P R O P H E T
//---------------------------------------------------

function check_prophet_form_Train()
{
    var i, value;
    var prophet_form_Train = document.getElementById("prophet_form_Train");

    for (i = 0; i < prophet_form_Train.genes_mode.length; i++) {
        if (prophet_form_Train.genes_mode[i].checked) {
            value = prophet_form_Train.genes_mode[i].value;
            //alert(value + ", " + prep_form.impute_missing.checked);
	    if ( value == 'custom' ) {
		prophet_form_Train.number.disabled = false;
	    } else {
		prophet_form_Train.number.disabled = true;
	    }
	    break;
	}
    }
}

function validate_prophet_form_Train()
{
    var i;
    var test = 0;
    var prophet_form_Train = document.getElementById("prophet_form_Train");

    if ( (isEmpty(prophet_form_Train.gene_expression_file.value) == true) && (isEmpty(prophet_form_Train.gene_expression_file_ref.value) == true) && (isEmpty(prophet_form_Train.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene expression file' !!!"); prophet_form_Train.gene_expression_file.focus();return false;
    }

    for (i = 0; i < prophet_form_Train.genes_mode.length; i++) {
        if (prophet_form_Train.genes_mode[i].checked) {
            test = 1;
            break;
        }
    }
    if ( test == 0 ) {
	alert("No 'Number of genes to use in training' was selected, please, select one of them."); return false;
    }
    for (i = 0; i < prophet_form_Train.genes_mode.length; i++) {
        if (prophet_form_Train.genes_mode[i].checked) {
            value = prophet_form_Train.genes_mode[i].value;
	    if ( value == 'custom' ) {
	        if ( isEmpty(prophet_form_Train.number.value) == true ) {
	            alert("You have selected 'custom', but the number of genes to use is empty. Please, enter valid values !!!"); prophet_form_Train.number.focus();return false;
                }
	    }
	    break;
	}
    }

    test = 0;
    for (i = 0; i < prophet_form_Train.gene_selection.length; i++) {
        if (prophet_form_Train.gene_selection[i].checked) {
            test = 1;
            break;
        }
    }
    if ( test == 0 ) {
	alert("No 'Gene selection' was selected, please, select one of them."); return false;
    }


    if ( (prophet_form_Train.svm.checked == false ) && 
         (prophet_form_Train.knn.checked == false ) && 
         (prophet_form_Train.dlda.checked == false) && 
         (prophet_form_Train.pamr.checked == false) && 
         (prophet_form_Train.som.checked == false )    ) {
	alert("No 'Algorithm' was selected, please, select one of them."); return false;
    }

    return true;
}

//---------------------------------------------------

function check_prophet_form_Predict()
{
    var i, value;
    var prophet_form_Predict = document.getElementById("prophet_form_Predict");
}

function validate_prophet_form_Predict()
{
    var i;
    var test = 0;
    var prophet_form_Predict = document.getElementById("prophet_form_Predict");

    if ( (isEmpty(prophet_form_Predict.gene_expression_file.value) == true) && (isEmpty(prophet_form_Predict.gene_expression_file_ref.value) == true) && (isEmpty(prophet_form_Predict.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene expression file' !!!"); prophet_form_Predict.gene_expression_file.focus();return false;
    }

    return true;
}

//---------------------------------------------------
//                   E T E
//---------------------------------------------------

function check_ete_form()
{
}

function validate_ete_form()
{
    var ete_form = document.getElementById("ete_form");

    if ( (isEmpty(ete_form.gene_clusters_file.value) == true) && (isEmpty(ete_form.gene_clusters_file_ref.value) == true) && (isEmpty(ete_form.gene_expression_file_textarea.value) == true) ) {
	alert("Empty field : 'Gene clusters file' !!!"); ete_form.gene_clusters_file.focus();return false;
    }

    return true;
}

//---------------------------------------------------
//---------------------------------------------------
