
// call the Jena Tester Engine from java package and update the form
function call_engine() {

  // show a wait message
  update("<br /><br /><br /><br /><br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <strong>Please wait...</strong>");
 
  // get facts from form
  var facts =  dwr.util.getValue("facts_text");
  
  // get rules from form
  var rules = dwr.util.getValue("rules_text");
  
  // get goals from form
  var goals = dwr.util.getValue("goals_text");
  
  // get the reasoner mode
  var reasonerMode = dwr.util.getValue("engineMode");

  // set the mode for Java engine
  if(reasonerMode=="rdf_backward") reasonerMode = "backward";
  if(reasonerMode=="erdf_backward") reasonerMode = "erdf_backward";
  
  // call the tester engine...do the job   
  RemoteTester.runEngine(facts, rules, goals, reasonerMode, update);
}


// validate rules 
function validate() {
  // get rules from form
  var rules = dwr.util.getValue("rules_text");
  
  // show a wait message
  update("<br /><br /><br /><br /><br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <strong>Please wait for rule validation...</strong>");
  
  // validate rules
  RemoteTester.validateRules(rules,update);
}


// update the result textarea
function update(result) {
  document.getElementById('resultDivContent').innerHTML = result;
}

// clear the textarea with the following name
function clear_text(nameOfZone) {
  dwr.util.setValue(nameOfZone, "");
}

// set mode to erdf
function set_erdf_mode() {
  document.getElementById('validateRDF').disabled = "disabled";
  document.getElementById('examplesDiv').style.visibility = 'visible';
}

// set mode to rdf
function set_rdf_mode() {
  document.getElementById('validateRDF').disabled = "";
  document.getElementById('examplesDiv').style.visibility = 'hidden';
}

// load default examples for specified textarea (facts, rules or goals)
function loadDefaultExample() {

  // get the reasoner mode
  var reasonerMode = dwr.util.getValue("engineMode");
  var erdfExample = dwr.util.getValue("erdf_example");
  
  
  // set default example for RDF-Backward engine
  if(reasonerMode=="rdf_backward") {
    loadFactsExample("data/rdf_example.rdf");
    loadRulesExample("data/rdf_example.rules");
    loadGoalsExample("data/rdf_example.goals");
  }
  
  // set default example for ERDF-Backward engine
  if(reasonerMode=="erdf_backward") {
    if(erdfExample=="example1") {
      loadFactsExample("data/wines.erdf");
      loadRulesExample("data/wines.rules");
      loadGoalsExample("data/wines.goals");
    }
    
    if(erdfExample=="example2") {
      loadFactsExample("data/foaf.erdf");
      loadRulesExample("data/foaf.rules");
      loadGoalsExample("data/foaf.goals");
    }
  }
  
  var resultDefaultText = '<br /><p style="text-align:center;">Results are displayed here.</p><p style="text-align:center;">Push <em>Call Engine</em> button.</p>';
  document.getElementById('resultDivContent').innerHTML = resultDefaultText;
}


// load a file and display content in the facts zone (ID=facts_text, textarea)
function loadFactsExample(url) {

  if (window.XMLHttpRequest) { // Non-IE browsers
    var req = new XMLHttpRequest();
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("facts_text").value = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
    try {
      req.open("GET", url, true);
    } catch (e) {
      alert(e);
    }
  
    req.send(null);
  } 
  else if (window.ActiveXObject) { // IE
    var req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("facts_text").value = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
      req.open("GET", url, true);
      req.send();
    }
  }
}

// load a file and display content in the facts zone (ID=facts_text, textarea)
function loadRulesExample(url) {

  if (window.XMLHttpRequest) { // Non-IE browsers
    var req = new XMLHttpRequest();
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("rules_text").value = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
    try {
      req.open("GET", url, true);
    } catch (e) {
      alert(e);
    }
  
    req.send(null);
  } 
  else if (window.ActiveXObject) { // IE
    var req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("rules_text").value = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
      req.open("GET", url, true);
      req.send();
    }
  }
}

// load a file and display content in the facts zone (ID=facts_text, textarea)
function loadGoalsExample(url) {

  if (window.XMLHttpRequest) { // Non-IE browsers
    var req = new XMLHttpRequest();
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("goals_text").value = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
    try {
      req.open("GET", url, true);
    } catch (e) {
      alert(e);
    }
  
    req.send(null);
  } 
  else if (window.ActiveXObject) { // IE
    var req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("goals_text").value = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
      req.open("GET", url, true);
      req.send();
    }
  }
}

// load a file and display content in the facts zone (ID=facts_text, textarea)
function loadDocumentation(url) {

  if (window.XMLHttpRequest) { // Non-IE browsers
    var req = new XMLHttpRequest();
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("resultDivContent").innerHTML = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
    try {
      req.open("GET", url, true);
    } catch (e) {
      alert(e);
    }
  
    req.send(null);
  } 
  else if (window.ActiveXObject) { // IE
    var req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("resultDivContent").innerHTML = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
      req.open("GET", url, true);
      req.send();
    }
  }
}

// validate RDF facts
function validateRDF(url) {

  var rdfContent = document.getElementById("facts_text").value;
  var rdfParam = ("RDF="+encodeURI(rdfContent));
  var uriParam = ("&URI=");
  var param = rdfParam+"&"+uriParam;

  if (window.XMLHttpRequest) { // Non-IE browsers
    var req = new XMLHttpRequest();
   
    
    if (req.overrideMimeType) {
      // set type accordingly to anticipated content type
      req.overrideMimeType('text/xml');
      //req.overrideMimeType('text/html');
    }
    req.onreadystatechange = function(){
                                        if (req.readyState == 4) { // Complete
                                          if (req.status == 200) { // OK response
                                            document.getElementById("resultDivContent").innerHTML = req.responseText;
                                          } 
                                          else {
                                            alert('Internal error! Please contact site administrators.');
                                          }
                                        }
                                       };
    try {
      req.open("POST", url, true);
      req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      req.setRequestHeader("Content-length", param.length);
      req.setRequestHeader("Connection", "close");
      req.send(param);
    } catch (e) {
      alert(e);
    }
  

  } 
  else if (window.ActiveXObject) { // IE
    var req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      if (req.overrideMimeType) {
        // set type accordingly to anticipated content type
        req.overrideMimeType('text/xml');
        //req.overrideMimeType('text/html');
      }
      req.onreadystatechange = function(){
                                          if (req.readyState == 4) { // Complete
                                            if (req.status == 200) { // OK response
                                              document.getElementById("resultDivContent").value = req.responseText;
                                            } 
                                            else {
                                              alert('Internal error! Please contact site administrators.');
                                            }
                                          }
                                         };
      req.open("POST", url, true);
      req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      req.setRequestHeader("Content-length", param.length);
      req.setRequestHeader("Connection", "close");
      req.send(param);
    }
  }
}
