//Creo l'oggetto per le chiamate ajax

var xmlhttp = null;
var oldTopic = "";

function GetXmlHttpObject() {
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}

function callDispacher(){
    xmlhttp = GetXmlHttpObject();
    if (xmlhttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }

    var sURL = new String(document.location.href);
    var options = sURL.split("?");

    var url = "Dispatcher?" + options[1] + "&oldEl=0" + "&start=0";    

    loader();
    xmlhttp.onreadystatechange = responsecallDispacher;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
}

function responsecallDispacher(){
    if (xmlhttp.readyState == 4) {
        document.getElementById("myb").innerHTML = xmlhttp.responseText;
    }
}

function loader() {
    document.getElementById("myb").style.display = 'block';
    document.getElementById("myb").style.visibility = 'visible';
    document.getElementById("myb").innerHTML = "<center><img src='image/loading_wh.gif' alt='loader' /></center>";
}

function printPage(num,value) {
    xmlhttp = GetXmlHttpObject();
    if (xmlhttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }

    var numero = '';
    numero = num;
    var element = value;
    var url = "Dispatcher";
    url = url + "?action=pageAuth";
    url = url + "&element=" + element;
    url = url + "&start=" + numero;
}

// ADVANCED OPTIONS SCRIPT PAGE

/*
 * Presa una o più metriche restituisce gli algoritmi
 */

function getMetrAlg(){

    xmlhttp = GetXmlHttpObject();
    if (xmlhttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }

    var metrics = document.searchForm.metrics;
    var metricsName = "";
    var count = 0;

    for(i=0;i<metrics.length;i++){
        if(metrics.options[i].selected){
            metricsName = metricsName + ":" + metrics.options[i].value;
            count++;
        }
    }

    if(count==0){
        document.getElementById("metAlg").innerHTML = "<select name='malgorithms' multiple size='4' style='width:100px'></select>";
    }else{
        var url = "Dispatcher"
        url = url + "?action=metAlg";
        url = url + "&metNames=" + metricsName;

        xmlhttp.onreadystatechange = responsegetMetAlg;
        xmlhttp.open("GET", url, true);
        xmlhttp.send(null);
    }
}

function responsegetMetAlg(){
    if (xmlhttp.readyState == 4) {
        document.getElementById("metAlg").innerHTML = xmlhttp.responseText;
    }
}

function getResults(){
    var metrics = document.searchForm.metrics;
    var metalg = document.searchForm.malgorithms;
    var result = document.searchForm.mresults;
    var opt ="";   
    var req = "";    
    var select = "<select name='mresults' size='4' class='multipleSelect' ondblclick='deleteSelectedMetric()'>";
    //var testOption = "<option value='H-index:No-self-citations Standard'>H-index:No-self-citations Standard</option>";
    var check = 0;


    req = metrics.options[metrics.selectedIndex].value + ":"+metalg.options[metalg.selectedIndex].value;
    
    for(l=0;l<result.length;l++){
        if(req == result.options[l].value){
            check = 1;
        }
        opt = opt + "<option value='"+result.options[l].value+"'>" + result.options[l].value + "</option>";
    }

    if(check == 0){
        opt = opt + "<option value='"+req+"'>" + req + "</option>";
    }
    
    select = select + opt + "</select>";
    document.getElementById("res").innerHTML = select;
}

function createUrl(){
    var myf = document.searchForm;
    var year = new Date().getFullYear();
    var myRegEx = /\d{4}/;

    var act="?action=ras"
    var sfor="&sfor=";
    var topic="&topic=";
    var webS="&webS=";
    var results="&metr=";
    var topCit="&topCit="
    var topCa="&topCa="
    var elem="&element="
    var opt="&opt=";

    for(i=0;i<myf.sfor.length;i++){
        if(myf.sfor[i].checked)
            sfor = sfor + myf.sfor[i].value;
    }

    topic = topic + myf.topic.value;

    if((myf.topic.value!="") && (myf.mresults.length>0)){
        
        for(i=0;i<myf.websources.length;i++){
            if(myf.websources[i].selected)
                webS = webS + myf.websources[i].value;
        }

        for(i=0;i<myf.mresults.length;i++){
            results = results+myf.mresults[i].value + "!";
        }

        for(i=0;i<myf.topCiters.length;i++){
            if(myf.topCiters[i].selected)
                topCit = topCit + myf.topCiters[i].value;
        }

        for(i=0;i<myf.topCoAuthors.length;i++){
            if(myf.topCoAuthors[i].selected)
                topCa = topCa + myf.topCoAuthors[i].value;
        }

        for(i=0;i<myf.numOfRes.length;i++){
            if(myf.numOfRes[i].selected)
                elem = elem + myf.numOfRes[i].value;
        }

        var startD = myf.startY.value;
        var endD = myf.endY.value;

        if(myRegEx.test(endD) && endD<=year){
            opt = opt + myf.endDateVal.value +endD;
        }
        if(myRegEx.test(startD) && startD<=year){
            opt = opt + myf.startDateVal.value + startD;
        }

        for(i=0;i<myf.alsubarea.length;i++){
            if(myf.alsubarea[i].checked)
                opt = opt + myf.alsubarea[i].value;
        }

        for(i=0;i<myf.checkOptions.length;i++){
            if(myf.checkOptions[i].checked)
                opt = opt + myf.checkOptions[i].value;
        }

        location.href="resevalResults.jsp"+act+sfor+topic+webS+results+topCit+topCa+elem+opt;
    }
}

function activateRadio() {
    document.searchForm.alsubarea[1].checked = true;
}

function cBoxUnchecked(){
    var check = document.searchForm.checkOptions;
    for (i = 0; i < check.length; i++) {
        check[i].checked = false;
    }
}

function recompute(optUrl){
    xmlhttp = GetXmlHttpObject();
    if (xmlhttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }
    var url = "Dispatcher?" + optUrl;
    xmlhttp.onreadystatechange = responseRecompute;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
}

function responseRecompute(){
    if (xmlhttp.readyState == 4) {
        document.getElementById("estTime").innerHTML = xmlhttp.responseText;
    }
}

function getMetrics(sfor){

    document.getElementById("metAlg").innerHTML = "<select name='malgorithms' multiple size='4' class='multipleSelect'></select>";
    document.getElementById("res").innerHTML = "<select name='mresults' multiple size='4' class='multipleSelect'></select>";
    var myf = document.searchForm.topic.value="";

    xmlhttp = GetXmlHttpObject();
    if (xmlhttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }

    var url = "Dispatcher"
    url = url + "?action=metrics";
    url = url + "&sfor="+sfor;

    xmlhttp.onreadystatechange = responsegetMetrics;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
}

function responsegetMetrics(){
    if (xmlhttp.readyState == 4) {
        document.getElementById("selMetrics").innerHTML = xmlhttp.responseText;
    }
}

function deleteSelectedMetric(){
    var myf = document.searchForm.mresults;
    for(i=0;i<myf.length;i++){
        if(myf[i].selected){
            myf[i]=null;
        }
    }
}

/*Check if the text area is empty*/
function checked(){
    var myf = document.searchForm;
    if(myf.topic.value != ""){        
        myf.submit();
    }
}

function checked2(){
    var authors = document.contrForm.coAuthor;

    var sfor = "&sfor=author";

    var act="?action=contrib"
    var values = "&coAuthor=";

    for(i=0;i<authors.length;i++){
        if(authors[i].checked==false)
            values = values + authors[i].value+"&coAuthor=";
    }    
    location.href="resevalResults.jsp"+act+sfor+values;
}
