/*
filedrag.js - HTML5 File Drag & Drop demonstration
Featured on SitePoint.com
Developed by Craig Buckler (@craigbuckler) of OptimalWorks.net
*/
var tstart;
var times = 0;
var inProgress = false;
var ext;
(function() {
    var progress;
    // getElementById
    function $id(id) {
        return document.getElementById(id);
    }


    // output information
    function Output(msg) {
        //	var m = $id("messages");
        //	m.innerHTML = msg + m.innerHTML;
    }


    // file drag hover
    function FileDragHover(e) {
        e.stopPropagation();
        e.preventDefault();

    }


    // file selection
    function FileSelectHandler(e) {
        // cancel event and hover styling

        // fetch FileList object
        if (e.target.files.length >= 1)
            var files = e.target.files;
        else
            var files = e.dataTransfer.files;

        // process all File objects
        for (var i = 0, f; f = files[i]; i++) {
            ParseFile(f);
            UploadFile(f);
        }

    }


    // output file information
    function ParseFile(file) {

        Output(
            "<p>File information: <strong>" + file.name +
            "</strong> type: <strong>" + file.type +
            "</strong> size: <strong>" + file.size +
            "</strong> bytes</p>"
        );

        // display an image
        if (file.type.indexOf("image") == 0) {
            var reader = new FileReader();
            reader.onload = function(e) {
                Output(
                    "<p><strong>" + file.name + ":</strong><br />" +
                    '<img src="' + e.target.result + '" /></p>'
                );
            }
            reader.readAsDataURL(file);
        }

        // display text
        if (file.type.indexOf("text") == 0) {
            var reader = new FileReader();
            reader.onload = function(e) {
                Output(
                    "<p><strong>" + file.name + ":</strong></p><pre>" +
                    e.target.result.replace(/</g, "&lt;").replace(/>/g, "&gt;") +
                    "</pre>"
                );
            }
            reader.readAsText(file);
        }

    }


    // upload JPEG files
    function UploadFile(file) {
        // following line is not necessary: prevents running on SitePoint servers
        ga('send', 'event', "File", "start upload file", file.name);
        if (inProgress) {
            return false;
        } else {
            inProgress = true;
        }
        var xhr = new XMLHttpRequest();
        var flnm = file.name;
        var fakename = file.name;
        var allowed_file = ["docx","doc","txt","rtf"];
        var cx = flnm.split(".");
        ext = cx[cx.length-1];
        console.log(ext);
        console.log(allowed_file.indexOf(ext));
        if (allowed_file.indexOf(ext) == -1) {
            console.log("extensi tidak diijinkan");
            alert("Extensi file tidak didukung. Extensi file yang didukung adalah .docx, .doc, .txt, dan .rtf");
            return false;
        }
        console.log("file size", file.size);
        if (file.size > 15000000) {
            alert("Ukuran file maksimum 15Mb.");
            return false;
        }
          if (xhr.upload) {
            $id("loader").style.display = "block";
            // create progress bar
            var o = $id("progressnum");
            o.innerHTML = "";
            if (fakename.length > 40) fakename = fakename.substr(0, 40) + "...";
            $id("filedetail").textContent = "upload " + fakename;
            if ($id("filename")) $id("filename").textContent = fakename;

            // progress bar
            xhr.upload.addEventListener(
              "progress",
              function (e) {
                var pc = parseInt((e.loaded / e.total) * 100);
                o.textContent = pc;
              },
              false
            );

            // file received/failed
            xhr.onreadystatechange = function (e) {
              if (xhr.readyState == 4) {
                inProgress = false;
                if (times != 1 && $id("#docpage")) {
                  setresponse(xhr.responseText);
                  tstart = Date.now();
                  if ($("#docpage").css("display") == "none")
                    $("#docpage").fadeIn(3000);
                  pulldata();
                  $("#loader").hide("slow");
                  $("#filedetail").text("");
                  window.location.href = "#docpage";
                  times = 1;
                } else {
                  var key = document.getElementById("key").value;
                  var ns = xhr.responseText;
                  console.log("response text is", ns);
                  tstart = Date.now();
                  ga("send", "event", "File", "upload file finish", file.name);
                  if (ns == "Please Login!") {
                    ga("send", "event", "File", "login reminder", file.name);
                    $("#popup-login").modal("show");
                  } else {
                    window.location.href =
                      homeUrl +
                      "kbbi-online/file?key=" +
                      key +
                      "&ext=" +
                      ext +
                      "&ns=" +
                      ns +
                      "&ds=" +
                      tstart +
                      "#docpage";
                  }
                }
                xhr = null;
              }
            };

            // start upload
            $("#warningGradientOuterBarG").show();
            let add_referral = referral ? "&referral=1" : "";
            xhr.open(
              "POST",
              $id("upload").action + "&file_name=" + file.name + add_referral,
              true
            );
            console.log("upload file name is ", file.name);
            xhr.setRequestHeader("X_FILENAME", file.name);
            xhr.send(file);
          }

    }


    // initialize
    function Init() {

        var fileselect = $id("fileselect"),
            filedrag = $id("fileselect");

        // file select
        fileselect.addEventListener("change", FileSelectHandler, false);

        // is XHR2 available?
        var xhr = new XMLHttpRequest();
        if (xhr.upload) {

            // file drop
            filedrag.addEventListener("dragover", FileDragHover, false);
            filedrag.addEventListener("dragleave", FileDragHover, false);
            filedrag.addEventListener("drop", FileSelectHandler, false);

            // remove submit button
        }

    }

    // call initialization file
    if (window.File && window.FileList && window.FileReader) {
        Init();
    }


})();