//
// begining of xlsx to json coversion
//

var jsonContent = [];
var bibAuthors = "";
var bit1stAuthorLN = "";
var url = "./content/CitationSheet3.xlsx";
var xmlHttpRequest = new XMLHttpRequest();



var load_excel_citation = function (cb) {
    xmlHttpRequest.open("GET", url, true);
    xmlHttpRequest.responseType = "arraybuffer";
    xmlHttpRequest.onload = function (e) {
        var arraybuffer = xmlHttpRequest.response;
    
        // convert data to binary string //
        var data = new Uint8Array(arraybuffer);
        var arr = new Array();
        for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
        var bstr = arr.join("");
    
        // Call XLSX //
        var workbook = XLSX.read(bstr, {
            type: "binary"
        });
    
        // DO SOMETHING WITH workbook HERE //
        var first_sheet_name = workbook.SheetNames[0];
        // Get worksheet //
        var worksheet = workbook.Sheets[first_sheet_name];
    
        var jsonOutput = XLSX.utils.sheet_to_json(worksheet);
        // console.log(jsonOutput);
    
        for (i = 0; i < jsonOutput.length; i++) {
            var authors;
            if (jsonOutput[i].Authors != undefined) {
                authors = jsonOutput[i].Authors.replace("and ", "").trim().split(",");
            }
            var bibAuthors;
            var item = {
                "item": {
                    "title": "",
                    "project": "",
                    "authors": [],
                    "imageLink": "",
                    "keywords": "",
                    "journal": {
                        "name": "journal",
                        "volume": "",
                        "year": "",
                        "pages": ""
                    },
                    "conference": {
                        "name": "",
                        "place": "",
                        "date": ""
                    },
                    "DOI": "",
                    "publisher": "",
                    "type": "",
                    "project": "",
                    "reviewed": "",
                    "open": ""
    
                },
                "links": {
                    "pdf": "",
                    "url": "",
                    "demo": ""
                },
                "bibtex": ""
            }
    
    
            bibAuthors = "";
            bit1stAuthorLN = "";
            for (j = 0; j < authors.length; j++) {
                var author = {
                    "firstName": "",
                    "lastName": ""
                }
                if (authors[j].trim().split(" ").length == 1) {
                    author["firstName"] = authors[j].trim().split(".")[0];
                    author["lastName"] = authors[j].trim().split(".")[1];
                    item["item"].authors.push(author);
                    bibAuthors += authors[j].trim().split(".")[1] + ", " + authors[j].trim().split(".")[0] + " and ";
                } else if (authors[j].trim().split(" ").length == 2) {
                    author["firstName"] = authors[j].trim().split(" ")[0];
                    author["lastName"] = authors[j].trim().split(" ")[1];
                    item["item"].authors.push(author);
                    bibAuthors += authors[j].trim().split(" ")[1] + ", " + authors[j].trim().split(" ")[0] + " and ";
                } else if (authors[j].trim().split(" ").length == 3) {
                    author["firstName"] = authors[j].trim().split(" ")[0];
                    author["lastName"] = authors[j].trim().split(" ")[2];
                    item["item"].authors.push(author);
                    bibAuthors += authors[j].trim().split(" ")[2] + ", " + authors[j].trim().split(" ")[0] + " and ";
                }
    
            }
    
            if (jsonOutput[i].Keywords != undefined) {
                item["item"].keywords = jsonOutput[i].Keywords.split(",");
            } else {
                item["item"].keywords = jsonOutput[i].Keywords;
            }
    
            if (authors[0].split(" ").length == 3) {
                bit1stAuthorLN = authors[0].split(" ")[2];
            } else if (authors[0].split(" ").length == 2) {
                bit1stAuthorLN = authors[0].split(" ")[1];
            } else if (authors[0].split(" ").length == 1) {
                bit1stAuthorLN = authors[0].split(" ")[0];
            }
    
            item["item"].title = jsonOutput[i].Titel;
            item["item"].project = jsonOutput[i].Project;
            item["item"].imageLink = jsonOutput[i]["Path to demo image"]
            item["item"].journal.name = jsonOutput[i].Journal;
            item["item"].journal.volume = jsonOutput[i].Volume;
            item["item"].journal.year = jsonOutput[i].Year;
    
            item["item"].journal.pages = jsonOutput[i].Pages;
            item["item"].conference.name = jsonOutput[i].Conference;
            item["item"].conference.place = jsonOutput[i]["City and Country"]
            item["item"].conference.date = jsonOutput[i].Date;
            item["item"].publisher = jsonOutput[i].Publisher;
            item["item"].type = jsonOutput[i]["Type of Work"];
            item["item"].project = jsonOutput[i].Project;
            item["item"].reviewed = jsonOutput[i]["Peer-Reviewed"];
            item["item"].open = jsonOutput[i]["Open Access"];
            item["item"].DOI = jsonOutput[i].DOI;
            item["links"].pdf = jsonOutput[i].PDF_Link;
            item["links"].url = jsonOutput[i].URL;
            item["links"].demo = jsonOutput[i].Demo;
    
    
            var month = "";
            if (jsonOutput[i].Date != undefined) {
                month = jsonOutput[i].Date.split(",")[0].trim();
            }
    
    
            //// BibTex /////////////////////
            item["bibtex"] = "@article{" + bit1stAuthorLN + jsonOutput[i].Year + "," +
                "title={" + jsonOutput[i].Titel +
                "},author={" + bibAuthors.trim().substring(0, bibAuthors.trim().lastIndexOf(" ")) +
                "},journal={" + jsonOutput[i].Journal +
                "},volume={" + jsonOutput[i].Volume +
                "},month={" + month +
                "},pages={" + jsonOutput[i].Pages +
                "},year={" + jsonOutput[i].Year +
                "},DOI ={" + jsonOutput[i].DOI +
                "},url ={" + jsonOutput[i].URL +
                "}}"
    
            jsonContent.push(item);
            if (i == jsonOutput.length - 1) {
                cb() // callback
            }
        }
        // console.log(jsonContent);
        
    }
    xmlHttpRequest.send();
    
}

// get paper from the Sabo result
load_excel_citation(function () {
    stuff_paper = jsonContent;
    var new_row = document.getElementById("cont_paper")
    new_row.innerHTML = "";
    var arrayLength = stuff_paper.length;
    for (var i = 0; i < arrayLength; i++) {

        if (Math.abs(arrayLength - i) <= max_paper_list) {
            addpaper(stuff_paper[i]);
        }
        //Do something
    }
})