//
// requires prototype.js to work 
//

var MAX_QUERY_FIELDS = 10; // Note: same variable as in views.py - keep consistent!

var probe_field_counter = 0;
var ep_field_counter = 0;

//
// add a search form line for probe search
//

function add_probe_search_field(id){
	if (probe_field_counter >= MAX_QUERY_FIELDS-1) {
		id.disabled=true;
        	new Insertion.Before(id,'<p id="probe_max_message">You may combine up to '+MAX_QUERY_FIELDS+' query lines.</p>');
	}
	else {
		probe_field_counter++;
		fieldname = "probe_searchfield" + probe_field_counter
		new Insertion.Before(id,'<p id="probe_searchfield_'+probe_field_counter+'">\
		<select name="probe_logic_'+probe_field_counter+'" >\
		<option value="AND">AND</option>\
		<option value="OR">OR</option>\
		<option value="NOT">NOT</option>\
		</select>\
		<select name="probe_field_'+probe_field_counter+'" \
			id ="id_probe_field_'+probe_field_counter+'"\
			onChange="updateProbeField(\'id_query_'+probe_field_counter+'\');">\
		<option value="all_fields">All fields</option>\
		<option value="gene">Gene</option>\
		<option value="protein">Protein</option>\
		<option value="gene_or_protein">Gene OR Protein</option>\
		<option value="cancertype">Cancertype</option>\
		<option value="technique">Technique</option>\
		</select>\
		<input type="text" name="query_'+probe_field_counter+'" id="id_query_'+probe_field_counter+'" />\
		</p>')
	}
}

function remove_probe_search_field(id){
	if (probe_field_counter == MAX_QUERY_FIELDS-1) {
		$(id).disabled=false;
		Element.remove("probe_max_message");
		Element.remove("probe_searchfield_"+probe_field_counter);
		probe_field_counter--;
	}
	else if (probe_field_counter > 0) {
	  Element.remove("probe_searchfield_"+probe_field_counter);
	  probe_field_counter--;
	}
}

function updateProbeField(fieldname){
  var mySplitResult = fieldname.split("_");
  var field_number = mySplitResult[2];
  //alert(field_number);
  //alert("chosen "+$("id_probe_field_"+field_number).value);
  var chosen = $("id_probe_field_"+field_number).value;
  var url = "";
  var textfield = '<input name="query_'+field_number+'" type="text" id="id_query_'+field_number+'">';

  switch (chosen) {
  case "all_fields":
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
  case "gene":
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
  case "protein":
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
  case "gene_or_protein":
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
  case "cancertype":
    url = "/cancerDB/cancertype/list";
    break;
  case "tissue":
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
  case "technique":
    url = "/cancerDB/omics/list";
    break;
  case "omics":
    url = "/cancerDB/omics/list";
    break;
  default:
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
  }
  //alert(url);
  url += "?line="+field_number;

  new Ajax.Request(url, {
     method: 'GET',
     onSuccess: function(transport) {
      Element.replace(fieldname,'<b>'+transport.responseText+'</b>');
      updateSubcategory(field_number);
     }
  });

}

function updateSubcategory(line) {
  var chosen = $("id_query_"+line).value;

  if (chosen == 'lung'){
    url = "/cancerDB/cancersubtype/list";
    url += "?line="+line
    url += "&cancertype="+chosen

    new Ajax.Request(url, {
      method: 'GET',
      onSuccess: function(transport) {
        if (($("id_subquery_"+line))!=null) {
	  Element.replace("id_subquery_"+line,'<b>'+transport.responseText+'</b>');
        }
	else {
	  if (($("id_subquery_"+line))!=null) {
	    Element.remove("id_subquery_"+line);
	  }
	  new Insertion.After("id_query_"+line,'<b>'+transport.responseText+'</b>');
	}
      }
    });
  }
  else if (chosen == 'proteomic'){
    url = "/cancerDB/proteomics/list";
    url += "?line="+line
    url += "&omics="+chosen

    new Ajax.Request(url, {
      method: 'GET',
      onSuccess: function(transport) {
        if (($("id_subquery_"+line))!=null) {
	  Element.replace("id_subquery_"+line,'<b>'+transport.responseText+'</b>');
        }
	else {
	  if (($("id_subquery_"+line))!=null) {
	    Element.remove("id_subquery_"+line);
	  }
	  new Insertion.After("id_query_"+line,'<b>'+transport.responseText+'</b>');
	}
      }
    });
  }
  else if (chosen == 'transcriptomic'){
    url = "/cancerDB/transcriptomics/list";
    url += "?line="+line
    url += "&omics="+chosen

    new Ajax.Request(url, {
      method: 'GET',
      onSuccess: function(transport) {
        if (($("id_subquery_"+line))!=null) {
	  Element.replace("id_subquery_"+line,'<b>'+transport.responseText+'</b>');
        }
	else {
	  if (($("id_subquery_"+line))!=null) {
	    Element.remove("id_subquery_"+line);
	  }
	  new Insertion.After("id_query_"+line,'<b>'+transport.responseText+'</b>');
	}
      }
    });
  }
  else { // not lung? remove cst
    if (($("id_subquery_"+line))!=null) {
      Element.remove("id_subquery_"+line);
    }
  }
}

function updateEPField(fieldname){
  var mySplitResult = fieldname.split("_");
  var field_number = mySplitResult[2];
  //alert(field_number);
  //alert("chosen "+$("id_ep_field_"+field_number).value);
  var chosen = $("id_ep_field_"+field_number).value;
  var url = "";
  var textfield = '<input name="query_'+field_number+'" type="text" id="id_query_'+field_number+'">';

  switch (chosen) {
  case "all_fields":
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
  case "cancertype":
    url = "/cancerDB/cancertype/list";
    break;
  case "tissue":
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
//     url = "http://cancerdb/cancerDB/tissues/list";
//     break;
  case "technique":
//     url = "/cancerDB/technique/list";
    url = "/cancerDB/omics/list";
    break;
  default:
    Element.replace(fieldname,textfield);
    updateSubcategory(field_number);
    return;
  }
  //alert(fieldname);
  url += "?line="+field_number;
  //alert(url);

  new Ajax.Request(url, {
     method: 'GET',
     onSuccess: function(transport) {
      //alert(transport.responseText);
      Element.replace(fieldname,'<b>'+transport.responseText+'</b>');
      updateSubcategory(field_number);
     }
  });

}


function add_expression_profile_field(id){
	if (ep_field_counter >= MAX_QUERY_FIELDS-1) {
		id.disabled=true;
        	new Insertion.Before(id,'<p id="max_message">You may combine up to '+MAX_QUERY_FIELDS+' query lines.</p>');
	}
	else {
		ep_field_counter++;
		fieldname = "ep_searchfield" + ep_field_counter
		new Insertion.Before(id,'<p id="ep_searchfield_'+ep_field_counter+'" class="searchfield">\
		<select name="ep_logic_'+ep_field_counter+'" >\
		<option value="AND">AND</option>\
		<option value="OR">OR</option>\
		</select>\
	        </select>\
        	<select name="ep_regulation_'+ep_field_counter+'">\
	        <option value="all">All Expression Levels</option>\
	        <option value="disregulated">Disregulated</option>\
	        <option value="upregulated">Upregulated</option>\
	        <option value="downregulated">Downregulated</option>\
	        <option value="not regulated">Not Disregulated</option>\
	        <option value="not upregulated">Not Upregulated</option>\
	        <option value="not downregulated">Not Downregulated</option>\
	        </select>\
		in\
		<select name="ep_field_'+ep_field_counter+'" \
			id ="id_ep_field_'+ep_field_counter+'"\
			onChange="updateEPField(\'id_query_'+ep_field_counter+'\');">\
		<option value="all_fields">All fields</option>\
		<option value="cancertype">Cancertype</option>\
		<option value="technique">Technique</option>\
		</select>\
		<input type="text" name="query_'+ep_field_counter+'" id="id_query_'+ep_field_counter+'" />\
		seen in\
	        <select name="ep_experiments_'+ep_field_counter+'">\
	          <option value="1">1</option>\
	          <option value="2">2</option>\
	          <option value="3">3</option>\
        	  <option value="4">4</option>\
        	  <option value="5">5</option>\
        	  <option value="6">6</option>\
        	  <option value="7">7</option>\
        	  <option value="8">8</option>\
        	  <option value="9">9</option>\
        	  <option value="10">10</option>\
        	</select>\
		experiments.\
		</p>')
	}
}

function remove_expression_profile_field(id){
	if (ep_field_counter == MAX_QUERY_FIELDS-1) {
		$(id).disabled=false;
		Element.remove("max_message");
		Element.remove("ep_searchfield_"+ep_field_counter);
		ep_field_counter--;
	}
	else if (ep_field_counter > 0) {
	  Element.remove("ep_searchfield_"+ep_field_counter);
	  ep_field_counter--;
	}
}

function clear_probe_field(){
	$('id_probe_form').reset();
	for (var i=0;i<=probe_field_counter;i++) {
	    var fieldname = 'id_query_'+i;
	    var textfield = '<input name="query_'+i+'" type="text" id="id_query_'+i+'">';
	    Element.replace(fieldname,textfield);
	    updateSubcategory(i);
	}
//document.getElementById('form1').reset();" style="cursor:pointer
}

function clear_ep_field(){
	$('id_ep_form').reset();
	for (var i=0;i<=ep_field_counter;i++) {
	    var fieldname = 'id_query_'+i;
	    var textfield = '<input name="query_'+i+'" type="text" id="id_query_'+i+'">';
	    Element.replace(fieldname,textfield);
	    updateSubcategory(i);
	}
//document.getElementById('form1').reset();" style="cursor:pointer
}
