var jsdom = require("jsdom");
var fs = require("fs");

var parsehtml = function(file, callback) {
    // var html = fs.readFileSync(file).toString();

    fs.readFile(file, (err, data) => {
        if (err) throw err;
        var html = data.toString();
        jsdom.env({
            html: html,
            scripts: ["./public/scripts/externe/jquery-3.1.1.min.js"],
            done: function(errors, window) {
                var $, anchors, itemdoubleclick, results, allTags, bookmarks;
                $ = window.$;
                itemdoubleclick = "";
                allTags = [];
                bookmarks = [];
                results = {};

                anchors = $("dl").find("a");
                anchors.each(function(i, e) {
                    var add_date, name, bookmark, tags, url;
                    url = $(e).attr("href");
                    name = $(e).text();
                    add_date = $(e).attr("add_date");
                    tags = new Array();
                    $(e).parents("dl").each(function(ii, ee) {
                        var folder, tag;
                        folder = $(ee).prev();
                        tag = folder.text().replace(/(^\s*)|(\s*$)/g, '').replace(/\s+/g, ' ');
                        if (tag != "Bookmarks" && tag != "书签栏") {
                            if (allTags.indexOf(tag) == -1) {
                                allTags.push(tag);
                            }
                            return tags.push(tag);
                        }
                    });
                    bookmark = {
                        url: url,
                        name: name,
                        add_date: add_date,
                        tags: tags
                    };
                    return bookmarks.push(bookmark);
                });
                if (typeof callback === "function") {
                    results.tags = allTags;
                    results.bookmarks = bookmarks;
                    return callback(results);
                } else {
                    return console.warn("Callback isn't a function.");
                }
            }
        });
    });
};

module.exports = parsehtml;
