
var xmlHttp = new XMLHttpRequest();

function callServer(element, element2) {



  var value = document.getElementById(element).value;
 
 if (element2){
 var value2 = document.getElementById(element2).value;
 } else {
 element2="";
 value2="";
 }
  
  // Only go on if there is a value 
  if (value == null) return;
 

  // Build the URL to connect to
  var url = "./scripts/queryconfig.php?type=1&field=" + escape(element) + "&value=" + value + "&field2=" + escape(element2) + "&value2=" + value2;

//window.open(url, "sdf");

  // Open a connection to the server
  xmlHttp.open("GET", url, true);

  // Setup a function for the server to run when it's done
  xmlHttp.onreadystatechange = updatePage;

  // Send the request
  xmlHttp.send(null);
  
}


function updatePage() {


 
  if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseXML;
    
   
   
   var fields = xmlHttp.responseXML.getElementsByTagName('field');
	
	for (var i=0;i<fields.length;i++)
	{
   var fname = fields[i].getAttribute('name');
   var ftype = fields[i].getAttribute('type');
   var url_prefix = fields[i].getAttribute('url_prefix');
    
   
   if (ftype == 'read-only') {
   
   		var options =  fields[i].getElementsByTagName('option');
  		var fname_div = "div2update" + fname;
  		var fname_hidden = fname;
  		
   		var value2add = ""; 
   		var value_hidden = ""; 
   		
 
   		for (var k=0;k<options.length;k++){
   
   		var val = "";
   		
   			if(options[k].hasChildNodes()){
   
   			 	val = options[k].childNodes[0].nodeValue;
    
    
    		if (url_prefix != "") {
    			value2add +=  '<a href="' + url_prefix + val + '" target="_new">' + val + '</a>   ' ;
    		} else {
				value2add += val + " ";
			}
			}
   
  			if(options.length == 1) {
   				value_hidden += val;
  			} else {
  				value_hidden += val + "|"; 
  			} 
  
   		}
   

  
   if (navigator.appName == "Microsoft Internet Explorer") {
     	document.getElementById(fname_div).innerText =  value_hidden ;  
    } else {
     	document.getElementById(fname_div).innerHTML =  value2add ;
    }
     	document.getElementById(fname_hidden).value = value_hidden;
     
     } 
     

     if (ftype == 'select')  {
   
   var options =  fields[i].getElementsByTagName('option');
   
   removeOptions(document.getElementById(fname));
   insertOption(document.getElementById(fname), "", "")

   for (var j=0;j<options.length;j++){
   
   option = options[j].childNodes[0].nodeValue;
   
   insertOption(document.getElementById(fname), option, option);
    
   }
   }
    }
  }
}





function callServer4SearchForm(subject, copula, predicate) {

var subject_element = document.getElementById(subject);
var subject_selectedIndex = subject_element.selectedIndex;
var subject_value = subject_element[subject_selectedIndex].value;
 
  // Only go on if a database field has been selected
  if (subject_value == null) return;
 

  // Build the URL to connect to
  var url = "./scripts/queryconfig4SearchForm.php?type=1&value=" + subject_value + "&predicate=" + predicate;

  // Open a connection to the server
  xmlHttp.open("GET", url, true);

  // Setup a function for the server to run when it's done
  xmlHttp.onreadystatechange = updateSearchForm;

  // Send the request
  xmlHttp.send(null);
  
}





function updateSearchForm(){

  if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseXML;
    
   
   
   var fields = xmlHttp.responseXML.getElementsByTagName('field');
	
	for (var i=0;i<fields.length;i++)
	{
   var predicate = fields[i].getAttribute('predicate');
  
   
    
   
 
   var options =  fields[i].getElementsByTagName('option');
   var value = "<select name='" + predicate + "'>";
   
   for (var j=0;j<options.length;j++){
   option = options[j].childNodes[0].nodeValue;
   
   value += "<option>" + option + "</option>"; 
   }
   
 
value += "</select>";
 
   
   

    document.getElementById(predicate).innerHTML =value ;
    
  
    
    }
  }

}




var ios = 0;
var aos = 0;

function removeOptions(theSel)
{
  var selIndex = theSel.selectedIndex;
  if (selIndex != -1) {
    for(i=theSel.length-1; i>=0; i--)
    {
     
        theSel.options[i] = null;
     
    }
   
  }
}



function insertOption(theSel, newText, newValue)
{
  if (theSel.length == 0) {
    var newOpt1 = new Option(newText, newValue);
    theSel.options[0] = newOpt1;
    theSel.selectedIndex = 0;
  } else if (theSel.selectedIndex != -1) {
    var selText = new Array();
    var selValues = new Array();
    var selIsSel = new Array();
    var newCount = -1;
    var newSelected = -1;
    var i;
    for(i=0; i<theSel.length; i++)
    {
      newCount++;
      if (newCount == theSel.selectedIndex) {
        selText[newCount] = newText;
        selValues[newCount] = newValue;
        selIsSel[newCount] = false;
        newCount++;
        newSelected = newCount;
      }
      selText[newCount] = theSel.options[i].text;
      selValues[newCount] = theSel.options[i].value;
      selIsSel[newCount] = theSel.options[i].selected;
    }
    for(i=0; i<=newCount; i++)
    {
      var newOpt = new Option(selText[i], selValues[i]);
      theSel.options[i] = newOpt;
      theSel.options[i].selected = selIsSel[i];
    }
  }
}

