/**
 * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
 *
 * @author Double Bastion LLC
 *
 * @license GNU AGPL version 3 or any later version
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
 *
 * You should have received a copy of the GNU Affero General Public
 * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

$(document).ready(function() {

  var userid = "<?php p($userId); ?>";
  var readtxtfile = [];
  var readhtmlfile = [];
  var readjpg = [];
  var readpng = [];

  // Adjust the path, so that the uploaded pdf files can be previewed while Nextcloud is served on a subdomain or on a subdirectory, by Nginx or by Apache
  var locHref = window.location.href;
  var pathSplit = locHref.split('/');
  var firstPathEl = '';
  if (pathSplit.length == 7) { firstPathEl = '/' + pathSplit[3]; }

  // Check the available balance
  $("#checkbalance").on("click", function(event) {

     $('#checkbalance').addClass('icon-loading');

     var getbalanceUrl = OC.generateUrl("/apps/pax_fax/user/getbalance");

     $.ajax({
          url: getbalanceUrl + '/' + userid,
          type: "POST",
          data: {userid: userid},
          cache: false,
          processData: false,
          contentType: false,
          success: function(phaxiobalance) {
                 var balanceindlrs = phaxiobalance / 100;
                 var balanceproc = "$ " + balanceindlrs.toFixed(2);
                 $('#currentbalance').text(balanceproc);

                 $('#checkbalance').removeClass('icon-loading');
          }
     });
  });

  // Select the Caller ID
  $("#selectcalleridbttn").on("click", function(event) {

     $('#selectcalleridbttn').addClass('icon-loading');

     var getfaxnumbersUrl = OC.generateUrl("/apps/pax_fax/user/getfaxnumbers");
     var selectednmbr = null;

     $.ajax({
          url: getfaxnumbersUrl + '/' + userid,
          type: "POST",
          data: {userid: userid},
          cache: false,
          processData: false,
          contentType: false,
          success: function(phaxionmbrs) {

                    $('#currentfaxnmbrs').empty();
                    $('#currentfaxnmbrs').append("<option value='' selected='selected' disabled class='optselectfxnb'>Choose an ID</option>");
                    $('#currentfaxnmbrs').append("<option value='' class='optselectfxnb'></option>");

                    $.each(phaxionmbrs, function(key, indfxnmb) {
                           $('#currentfaxnmbrs').append("<option value='"+indfxnmb+"' class='optselectfxnb'>"+indfxnmb+"</option>");
                    });

                    $('#selectcalleridbttn').removeClass('icon-loading');

          }
     });
  });

  // Clean the Pax_Fax/temp_files directory
  var cleanflUrl = OC.generateUrl("/apps/pax_fax/user/cleantempdir");

  $.ajax({
          url: cleanflUrl + '/' + userid,
          type: "POST",
          data: {userid: userid},
          cache: false,
          processData: false,
          contentType: false
  });

  var n = 1;
  var uploadedtofax = [];

  // Upload files to be faxed
  $("#uploadfileforfax").change(function(e){

     OC.msg.startAction("#pf_upload_msg", t("pax_fax", "Uploading ..."));
     $('#faxdocpreview').addClass('icon-loading');
     $('#filestotsize').show();

     var userid = "<?php p($userId); ?>";
     var baseUrl = OC.generateUrl("/apps/pax_fax/user/uploadfile");

     var formData = new FormData();
     formData.append('uploadfileforfax', $('#uploadfileforfax')[0].files[0]);

     var currentflsize = $('#uploadfileforfax')[0].files[0].size;

     var fileup = $('#uploadfileforfax').val();
     var fileuptrim = fileup.split('\\').pop();

     if ($.inArray(fileuptrim, uploadedtofax) != -1) {
         var duplicatescheck = 1;
     } else var duplicatescheck = 0;

     var extension = fileup.replace(/^.*\./, '');

     if (extension == fileup) {
         extension = "";
     } else {
         extension = extension.toLowerCase();
     }

     var validExtensions = ["pdf", "doc", "docx", "tif", "tiff", "jpg", "jpeg", "odt", "txt", "html", "png"];

     if ($.inArray(extension, validExtensions) != -1) {

       if (duplicatescheck == 0) {

         if (currentflsize < 20971520) {

            if (n < 21) {

               uploadedtofax.push(fileuptrim);

               $.ajax({
                 url: baseUrl + '/' + userid,
                 type: "POST",
                 data: formData,
                 cache: false,
                 processData: false,
                 contentType: false,
                 success: function(totalflsize) {

                   $('#filessizetext').text(totalflsize);

                   // Check if the total file size is over 20 MB
                   var rectotfilesz = parseFloat(totalflsize.replace(" MB", ""));

                   if (rectotfilesz > 20.00) {
                       $('#filestotsize').css('color', '#ba3555');
                       alert("Error ! You can't send files having a total size of more than 20 MB in one fax call ! Please consider removing files so that the total files size would drop to or below 20 MB");
                       $('#submitfax').attr("disabled", true);
                   } else {
                       $('#submitfax').attr("disabled", false);
                       $('#filestotsize').css('color', '#1eb16a');
                     }


                   $('#fileuploadednm').append("<div class='indgenflcls'><div id='"+n+"indfilediv' class='indivflcls'>" + n + ") " + fileuptrim + "</div><div class='indupfldl'>X</div></div>");
                   n++;

                   // Preview the file when you click on its name
                   $("div:visible[id*='indfilediv']").each(function() {
                        $(this).on("click", function(eventclck) {
                           var faxfilenameinit = $(this).text();
                           var faxfilenamesec = faxfilenameinit.substring(faxfilenameinit.indexOf(" ") + 1);
                           var faxfilename = faxfilenamesec.replace("X","");
                           var baseUrl = firstPathEl+"/remote.php/webdav/Pax_Fax/temp_files/"+faxfilename;
                           var extenlst = faxfilename.replace(/^.*\./, '');

                           if (extenlst == faxfilename) {
                               extenlst = "";
                           } else {
                               extenlst = extenlst.toLowerCase();
                           }

                           if (extenlst == 'pdf') {
                                  var viewerclick = OC.generateUrl('/apps/files_pdfviewer/?file={file}', {file: baseUrl});
                                  var $iframe = $('<iframe id="docclickview" style="width:100%;height:100%;display:block;position:absolute;top:0;left:0;z-index:1041;" src="' + viewerclick + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals"></iframe>');
                                  $("#faxdocpreview").empty();
                                  $("#faxdocpreview").append($iframe);
                           } else if (extenlst == 'txt') {
                                  $("#faxdocpreview").empty();
                                  $("#faxdocpreview").append(readtxtfile[faxfilename]);
                           } else if (extenlst == 'html') {
                                  $("#faxdocpreview").empty();
                                  $("#faxdocpreview").append(readhtmlfile[faxfilename]);
                           } else if (extenlst == 'jpg' || extenlst == 'jpeg') {
                                  $("#faxdocpreview").empty();
                                  $("#faxdocpreview").append('<img style="width:100%;height:100%" id="uploadedjpg" src="#" />');
                                  $("#uploadedjpg").attr('src', readjpg[faxfilename]);
                           } else if (extenlst == 'png') {
                                  $("#faxdocpreview").empty();
                                  $("#faxdocpreview").append('<img style="width:100%;height:100%" id="uploadedpng" src="#" />');
                                  $("#uploadedpng").attr('src', readpng[faxfilename]);
                           } else if (extenlst == 'odt') {
                                  $("#faxdocpreview").empty();
                                  function odfInit() {
                                     var odfelement = document.getElementById("faxdocpreview");
                                     odfcanvas = new odf.OdfCanvas(odfelement);
                                     odfcanvas.load(baseUrl);
                                  }
                                  window.setTimeout(odfInit, 0);
                           } else if (extenlst == 'tif' || extenlst == 'tiff') {
                                  var tiffile = '/remote.php/webdav/Pax_Fax/temp_files/'+faxfilename;
                                  var xhr = new XMLHttpRequest();
                                  xhr.responseType = 'arraybuffer';
                                  xhr.open('GET', tiffile);
                                  xhr.onload = function (evnt) {
                                      var tiff = new Tiff({buffer: xhr.response});
                                      var tifcanvas = tiff.toCanvas();
                                      $("#faxdocpreview").empty();
                                      $("#faxdocpreview").append(tifcanvas);
                                  };
                                  xhr.send();
                           }

                           $("#faxdocpreview").show();
                           $("#faxfoldersview").hide();
                        });
                   });

                   // Remove uploaded files
                   $('[class*="indupfldl"]').last().click(function() {

                           var userid = "<?php p($userId); ?>";
                           var baseUrl = OC.generateUrl("/apps/pax_fax/user/removeupfile");

                           var removedfilenameinit = $(this).closest('[class*="indgenflcls"]').find('[class*="indivflcls"]').text();

                           var removedfilesplit = removedfilenameinit.split(") ");
                           var removedflnb = parseInt(removedfilesplit[0]);

                           $(this).closest('[class*="indgenflcls"]').find('[class*="indivflcls"]').hide();
                           $(this).hide();

                           var removedfilename = removedfilenameinit.substring(removedfilenameinit.indexOf(" ") + 1);

                           uploadedtofax = $.grep(uploadedtofax, function(value) {
                                           return value != removedfilename;
                           });

                           $.ajax({
                                   url: baseUrl + '/' + userid,
                                   type: "POST",
                                   data: {removedfilename: removedfilename},
                                   success: function(totalflsize) {

                                      $('#filessizetext').text(totalflsize);

                                      // Check file size
                                      var rectotfilesz = parseFloat(totalflsize.replace(" MB", ""));

                                      if (rectotfilesz > 20.00) {
                                          $('#filestotsize').css('color', '#ba3555');
                                             alert("Error ! You can't send files having a total size of more than 20 MB in one fax call ! Please consider removing files so that the total files size would drop to or below 20 MB");
                                          $('#submitfax').attr("disabled", true);
                                      } else {
                                          $('#submitfax').attr("disabled", false);
                                          $('#filestotsize').css('color', '#1eb16a');
                                        }

                                      // Rewrite order numbers for files that follow
                                      --n;
                                      $("div:visible[id*='indfilediv']").each(function() {

                                          var getdivtext =  $(this).text();
                                          var splitdivtext = getdivtext.split(") ");
                                          var currentnbvalue = parseInt(splitdivtext[0]);
                                          var newnbvalue = currentnbvalue - 1;

                                          if (currentnbvalue > removedflnb) {
                                              var replacedstr = newnbvalue + ") " + splitdivtext[1];
                                              $(this).text(replacedstr);
                                          }
                                      });

                                      $("div:visible[id*='indflpicked']").each(function() {

                                          var getdivtext =  $(this).text();
                                          var splitdivtext = getdivtext.split(") ");
                                          var currentnbvalue = parseInt(splitdivtext[0]);
                                          var newnbvalue = currentnbvalue - 1;

                                          if (currentnbvalue > removedflnb) {
                                              var replacedstr = newnbvalue + ") " + splitdivtext[1];
                                              $(this).text(replacedstr);
                                          }
                                      });

                                   },
                                   error: function() {
                                          alert('Error !');
                                   }
                           });

                           $('#faxdocpreview').removeClass('icon-loading');
                           $("#faxdocpreview").empty();
                   });

                   // Preview the uploaded file
                   var faxfilename = e.target.files[0].name;
                   var baseUrl = firstPathEl+"/remote.php/webdav/Pax_Fax/temp_files/"+faxfilename;

                   if (extension == 'pdf') {
                              var viewer = OC.generateUrl('/apps/files_pdfviewer/?file={file}', {file: baseUrl});
                              var $iframe = $('<iframe id="docviewer" style="width:100%;height:100%;display:block;position:absolute;top:0;left:0;z-index:1041;" src="' + viewer + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals"></iframe>');
                              $("#faxdocpreview").empty();
                              $("#faxdocpreview").append($iframe);
                   } else if (extension == 'txt') {
                              var reader = new FileReader();
                              reader.readAsText(e.target.files[0]);
                              reader.onload = function(e) {
                                  readtxtfile[faxfilename] = e.target.result.replace(/(?:\r\n|\r|\n)/g, '<br>');
                                  $("#faxdocpreview").empty();
                                  $("#faxdocpreview").append(readtxtfile[faxfilename]);
                              };
                   } else if (extension == 'html') {
                              var reader = new FileReader();
                              reader.readAsText(e.target.files[0]);
                              reader.onload = function(e) {
                                  readhtmlfile[faxfilename] = e.target.result.replace(/(?:\r\n|\r|\n)/g, '<br>');
                                  $("#faxdocpreview").empty();
                                  $("#faxdocpreview").append(readhtmlfile[faxfilename]);
                              };
                   } else if (extension == 'jpg' || extension == 'jpeg') {
                              $("#faxdocpreview").empty();
                              $("#faxdocpreview").append('<img style="width:100%;height:100%" id="uploadedjpg" src="#" />');

                              var reader = new FileReader();
                              reader.onload = function (e) {
                                  readjpg[faxfilename] = e.target.result;
                                  $("#uploadedjpg").attr('src', readjpg[faxfilename]);
                              }
                              reader.readAsDataURL(e.target.files[0]);
                   } else if (extension == 'png') {
                              $("#faxdocpreview").empty();
                              $("#faxdocpreview").append('<img style="width:100%;height:100%" id="uploadedpng" src="#" />');

                              var reader = new FileReader();
                              reader.onload = function (e) {
                                  readpng[faxfilename] = e.target.result;
                                  $("#uploadedpng").attr('src', readpng[faxfilename]);
                              }
                              reader.readAsDataURL(e.target.files[0]);
                   } else if (extension == 'odt') {
                              $("#faxdocpreview").empty();
                              function odfInit() {
                                 var odfelement = document.getElementById("faxdocpreview");
                                 odfcanvas = new odf.OdfCanvas(odfelement);
                                 odfcanvas.load(baseUrl);
                              }
                              window.setTimeout(odfInit, 0);
                   } else if (extension == 'tif' || extension == 'tiff') {
                              var tiffile = '/remote.php/webdav/Pax_Fax/temp_files/'+faxfilename;
                              var xhr = new XMLHttpRequest();
                              xhr.responseType = 'arraybuffer';
                              xhr.open('GET', tiffile);
                              xhr.onload = function (e) {
                                  var tiff = new Tiff({buffer: xhr.response});
                                  var tifcanvas = tiff.toCanvas();
                                  $("#faxdocpreview").empty();
                                  $("#faxdocpreview").append(tifcanvas);
                              };
                              xhr.send();
                   }

                   $("#faxdocpreview").show();
                   $('#pf_upload_msg').hide();
                   $('#faxdocpreview').removeClass('icon-loading');
                   $("#faxfoldersview").hide();
                 },
                 error: function(data){
                     alert('Error!');
                 }
               });

            } else {
                  alert("Error ! You can't send as fax more than 20 files in one fax call !");
                  $('#pf_upload_msg').hide();
                  $('#faxdocpreview').removeClass('icon-loading');
              }
         } else {
              alert("Error ! You can't send files having a total size of more than 20 MB in one fax call !");
              $('#pf_upload_msg').hide();
              $('#faxdocpreview').removeClass('icon-loading');
           }
       } else {
            alert("Error ! There is already a file named '"+fileuptrim+"' in the 'Pax_Fax/temp_files' folder !");
            $('#pf_upload_msg').hide();
            $('#faxdocpreview').removeClass('icon-loading');
         }

     } else {
          alert('The file type is not supported ! Supported formats are: pdf, doc, docx, tiff/tif, jpeg/jpg, odt, txt, html, png.');
          $('#pf_upload_msg').hide();
          $('#faxdocpreview').removeClass('icon-loading');
       }
  });


  // Pick file to fax, from Nextcloud
  var faxfilename = null;

  $("#choosefilen").on("click", function(evn) {

                OC.dialogs.filepicker(
                        t('settings', "Select a file to send as fax."),
                        function (path) {

                              OC.msg.startAction("#pf_choose_msg", t("pax_fax", "Please wait ..."));
                              $('#faxdocpreview').addClass('icon-loading');
                              $('#filestotsize').show();

                              var userid = "<?php p($userId); ?>";
                              var baseUrl = OC.generateUrl("/apps/pax_fax/user/pickfile");

                              faxfilename = path.split('/').pop();

                              if ($.inArray(faxfilename, uploadedtofax) != -1) {
                                  var duplicatescheck = 1;
                              } else var duplicatescheck = 0;

                              var extension = faxfilename.replace(/^.*\./, '');

                              if (extension == faxfilename) {
                                  extension = "";
                              } else {
                                  extension = extension.toLowerCase();
                              }

                              var validExtensions = ["pdf", "doc", "docx", "tif", "tiff", "jpg", "jpeg", "odt", "txt", "html", "png"];

                              if ($.inArray(extension, validExtensions) != -1) {

                                 if (duplicatescheck == 0) {

                                    if (n < 21) {

                                       uploadedtofax.push(faxfilename);

                                       $.ajax({
                                          url: baseUrl + '/' + userid,
                                          type: "POST",
                                          data: {path: path},
                                          success: function(totalflsize) {

                                                $('#filessizetext').text(totalflsize);

                                                // Check if the total file size is over 20 MB
                                                var rectotfilesz = parseFloat(totalflsize.replace(" MB", ""));

                                                if (rectotfilesz > 20.00) {
                                                    $('#filestotsize').css('color', '#ba3555');
                                                    alert("Error ! You can't send files having a total size of more than 20 MB in one fax call ! Please consider removing files so that the total files size would drop to or below 20 MB");
                                                    $('#submitfax').attr("disabled", true);
                                                } else {
                                                    $('#submitfax').attr("disabled", false);
                                                    $('#filestotsize').css('color', '#1eb16a');
                                                }

                                                $('#filespickednc').append("<div class='indgenpckfls'><div id='"+n+"indflpicked' class='indivflpckd'>" + n + ") " + faxfilename + "</div><div class='indpckfldl'>X</div></div>");
                                                n++;

                                                // Preview each file when you click on its name
                                                $("div:visible[id*='indflpicked']").each(function() {
                                                   $(this).on("click", function(event) {
                                                      var faxfilenameinit = $(this).text();
                                                      var faxfilenamesec = faxfilenameinit.substring(faxfilenameinit.indexOf(" ") + 1);
                                                      var faxfilenamesp = faxfilenamesec.replace("X","");
                                                      var baseUrl = firstPathEl+"/remote.php/webdav/Pax_Fax/temp_files/"+faxfilenamesp;
                                                      var extenlst = faxfilenamesp.replace(/^.*\./, '');

                                                      if (extenlst == faxfilenamesp) {
                                                           extenlst = "";
                                                      } else {
                                                           extenlst = extenlst.toLowerCase();
                                                      }

                                                      if (extenlst == 'pdf') {
                                                           var viewerclick = OC.generateUrl('/apps/files_pdfviewer/?file={file}', {file: baseUrl});
                                                           var $iframe = $('<iframe id="docclickview" style="width:100%;height:100%;display:block;position:absolute;top:0;left:0;z-index:1041;" src="' + viewerclick + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals"></iframe>');
                                                           $("#faxdocpreview").empty();
                                                           $("#faxdocpreview").append($iframe);
                                                      } else if (extenlst == 'txt') {
                                                              $("#faxdocpreview").empty();
                                                              $("#faxdocpreview").append(readtxtfile[faxfilenamesp]);
                                                      } else if (extenlst == 'html') {
                                                              $("#faxdocpreview").empty();
                                                              $("#faxdocpreview").append(readhtmlfile[faxfilenamesp]);
                                                      } else if (extenlst == 'jpg' || extenlst == 'jpeg') {
                                                              $("#faxdocpreview").empty();
                                                              $("#faxdocpreview").append('<img style="width:auto;height:auto" id="uploadedjpg" src="'+ baseUrl +'" />');
//                                                              $("#uploadedjpg").attr('src', readjpg[faxfilenamesp]);
                                                      } else if (extenlst == 'png') {
                                                              $("#faxdocpreview").empty();
                                                              $("#faxdocpreview").append('<img style="width:auto;height:auto" id="uploadedpng" src="'+ baseUrl +'" />');
//                                                              $("#uploadedpng").attr('src', readpng[faxfilenamesp]);
                                                      } else if (extenlst == 'odt') {
                                                              $("#faxdocpreview").empty();
                                                              function odfInit() {
                                                                 var odfelement = document.getElementById("faxdocpreview");
                                                                 odfcanvas = new odf.OdfCanvas(odfelement);
                                                                 odfcanvas.load(baseUrl);
                                                              }
                                                              window.setTimeout(odfInit, 0);
                                                      } else if (extenlst == 'tif' || extenlst == 'tiff') {
                                                              var tiffile = '/remote.php/webdav/Pax_Fax/temp_files/'+faxfilenamesp;
                                                              var xhr = new XMLHttpRequest();
                                                              xhr.responseType = 'arraybuffer';
                                                              xhr.open('GET', tiffile);
                                                              xhr.onload = function (evnt) {
                                                                  var tiff = new Tiff({buffer: xhr.response});
                                                                  var tifcanvas = tiff.toCanvas();
                                                                  $("#faxdocpreview").empty();
                                                                  $("#faxdocpreview").append(tifcanvas);
                                                              };
                                                              xhr.send();
                                                      }

                                                      $("#faxdocpreview").show();
                                                      $("#faxfoldersview").hide();
                                                   });
                                                });

                                                // Remove picked files
                                                $('[class*="indpckfldl"]').last().click(function() {
                                                    var userid = "<?php p($userId); ?>";
                                                    var baseUrl = OC.generateUrl("/apps/pax_fax/user/removeupfile");

                                                    var removedfilenameinit = $(this).closest('[class*="indgenpckfls"]').find('[class*="indivflpckd"]').text();

                                                    var removedfilesplit = removedfilenameinit.split(") ");
                                                    var removedflnb = parseInt(removedfilesplit[0]);

                                                    $(this).closest('[class*="indgenpckfls"]').find('[class*="indivflpckd"]').hide();
                                                    $(this).hide();
                                                    var removedfilename = removedfilenameinit.substring(removedfilenameinit.indexOf(" ") + 1);

                                                    uploadedtofax = $.grep(uploadedtofax, function(value) {
                                                             return value != removedfilename;
                                                    });

                                                    $.ajax({
                                                        url: baseUrl + '/' + userid,
                                                        type: "POST",
                                                        data: {removedfilename: removedfilename},
                                                        success: function(totalflsize) {

                                                             $('#filessizetext').text(totalflsize);

                                                             // Check file size
                                                             var rectotfilesz = parseFloat(totalflsize.replace(" MB", ""));

                                                             if (rectotfilesz > 20.00) {
                                                                 $('#filestotsize').css('color', '#ba3555');
                                                                 alert("Error ! You can't send files having a total size of more than 20 MB in one fax call ! Please consider removing files so that the total files size would drop at or below 20 MB");
                                                                 $('#submitfax').attr("disabled", true);
                                                             } else {
                                                                 $('#submitfax').attr("disabled", false);
                                                                 $('#filestotsize').css('color', '#1eb16a');
                                                               }

                                                             // Rewrite order numbers for files that follow
                                                             --n;
                                                             $("div:visible[id*='indflpicked']").each(function() {

                                                                  var getdivtext =  $(this).text();
                                                                  var splitdivtext = getdivtext.split(") ");
                                                                  var currentnbvalue = parseInt(splitdivtext[0]);
                                                                  var newnbvalue = currentnbvalue - 1;

                                                                  if (currentnbvalue > removedflnb) {
                                                                      var replacedstr = newnbvalue + ") " + splitdivtext[1];
                                                                      $(this).text(replacedstr);
                                                                  }
                                                             });
                                                        },
                                                        error: function() {
                                                             alert('Error !');
                                                        }
                                                    });

                                                    $('#faxdocpreview').removeClass('icon-loading');
                                                    $("#faxdocpreview").empty();
                                                });


		                                // Preview the picked file
		                                var flUrl = firstPathEl+"/remote.php/webdav/Pax_Fax/temp_files/"+faxfilename;
		                                var pickUrl = OC.generateUrl("/apps/pax_fax/user/getpickedfile");

		                                if (extension == 'pdf') {
		                                    var viewer = OC.generateUrl('/apps/files_pdfviewer/?file={file}', {file: flUrl});
		                                    var $iframe = $('<iframe id="docviewer" style="width:100%;height:100%;display:block;position:absolute;top:0;left:0;z-index:1041;" src="' + viewer + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals"></iframe>');
		                                    $("#faxdocpreview").empty();
		                                    $("#faxdocpreview").append($iframe);
		                                } else if (extension == 'txt') {
						           $.get(flUrl, function(textdata) {
		                                             readtxtfile[faxfilename] = textdata.replace(/(?:\r\n|\r|\n)/g, '<br>');
		                                             $("#faxdocpreview").empty();
		                                             $("#faxdocpreview").append(readtxtfile[faxfilename]);
							   });
		                                } else if (extension == 'html') {
							   $.get(flUrl, function(htmldata) {
		                                             readhtmlfile[faxfilename] = htmldata.replace(/(?:\r\n|\r|\n)/g, '<br>');
		                                             $("#faxdocpreview").empty();
		                                             $("#faxdocpreview").append(readhtmlfile[faxfilename]);
							   });
		                                } else if (extension == 'jpg' || extension == 'jpeg') {
		                                           $("#faxdocpreview").empty();
		                                           $("#faxdocpreview").append('<img style="width:auto;height:auto" id="uploadedjpg" src="'+ flUrl +'" />');
		                                } else if (extension == 'png') {
		                                           $("#faxdocpreview").empty();
		                                           $("#faxdocpreview").append('<img style="width:auto;height:auto" id="uploadedpng" src="'+ flUrl +'" />');
                                                           $("#uploadedpng").attr('src', readpng[faxfilename]);
		                                } else if (extension == 'odt') {
		                                       $("#faxdocpreview").empty();
		                                       function odfInit() {
		                                           var odfelement = document.getElementById("faxdocpreview");
		                                           odfcanvas = new odf.OdfCanvas(odfelement);
		                                           odfcanvas.load(flUrl);
		                                       }
		                                       window.setTimeout(odfInit, 0);

		                                } else if (extension == 'tif' || extension == 'tiff') {
		                                       var tiffile = '/remote.php/webdav/Pax_Fax/temp_files/'+faxfilename;
		                                       var xhr = new XMLHttpRequest();
		                                       xhr.responseType = 'arraybuffer';
		                                       xhr.open('GET', tiffile);
		                                       xhr.onload = function (event) {
		                                           var tiff = new Tiff({buffer: xhr.response});
		                                           var tifcanvas = tiff.toCanvas();
		                                           $("#faxdocpreview").empty();
		                                           $("#faxdocpreview").append(tifcanvas);
		                                       };
		                                       xhr.send();
		                                }

		                                $("#faxdocpreview").show();

		                                $('#pf_choose_msg').hide();
		                                $('#faxdocpreview').removeClass('icon-loading');
		                                $("#faxfoldersview").hide();

                                          },

                                          error: function(data){
                                             alert('Error!');
                                          }

                                       });

                                    } else {
                                        alert("Error ! You can't fax more than 20 files in one fax call !");
                                        $('#pf_choose_msg').hide();
                                        $('#faxdocpreview').removeClass('icon-loading');
                                      }
                                 } else {
                                      alert("Error ! There is already a file named '"+faxfilename+"' in the 'Pax_Fax/temp_files' folder !");
                                      $('#pf_choose_msg').hide();
                                      $('#faxdocpreview').removeClass('icon-loading');
                                   }

                              } else {
                                   alert('The file type is not supported ! Supported formats are: pdf, doc, docx, tiff/tif, jpeg/jpg, odt, txt, html, png.');
                                   $('#pf_choose_msg').hide();
                                   $('#faxdocpreview').removeClass('icon-loading');
                                }

                        }
                );
  });


  // Submit the fax
  $("#submitfax").on("click", function(event){

     var selectedcid = $('#currentfaxnmbrs :selected').text();

     var toNumberinit = $('#faxto').val();
     var toNumbersec = toNumberinit.replace(/[^0-9,]/g, "");
     var toNumber = toNumbersec.split(",");

     for(var v = 0; v < toNumber.length; v++) {
         toNumber[v] = "+" + toNumber[v];
     }

     OC.msg.startAction("#pf_submit_msg", t("pax_fax", "Sending fax ... Please wait !"));
     $('#faxdocpreview').addClass('icon-loading');

     var userid = "<?php p($userId); ?>";
     var baseUrl = OC.generateUrl("/apps/pax_fax/user/sendfax");

     var toNumberwc = toNumberinit.replace(/[^0-9]/g, "");

         if (uploadedtofax.length != 0) {

           if (toNumberwc != '') {

             $.ajax({
                url: baseUrl + '/' + userid,
                type: "POST",
                data: {uploadedtofax: uploadedtofax,
                       selectedcid: selectedcid,
                       toNumber: toNumber
                      },
                success: function(phaxioresult) {

                   if (phaxioresult.success == true) {
                       alert("The fax has been sent successfully ! You can see the sent fax by clicking on the 'Sent Faxes' button.");
                   } else {
                       alert("Error ! The fax couldn't be sent because of the following error: "+phaxioresult.errortype+" You can see the failed fax by clicking on the 'Failed Sent Faxes' button.");
                   }

                   $("div:visible[id*='indfilediv']").hide();
                   $("div:visible[id*='indflpicked']").hide();
                   $('[class*="indupfldl"]').hide();
                   $('[class*="indpckfldl"]').hide();

                   $('#faxdocpreview').hide();

                   $('#filestotsize').hide();
                   $('#submitfax').attr("disabled", true);
                   $("#receivedfaxdir").attr("disabled", true);
                   $("#sentfaxdir").attr("disabled", true);
                   $("#receivedfaileddir").attr("disabled", true);
                   $("#sentfaileddir").attr("disabled", true);

                   location.reload(true);

                },

                error: function(phaxioresult) {

                   alert('Error ! Please check your settings !');

                   $("div:visible[id*='indfilediv']").hide();
                   $("div:visible[id*='indflpicked']").hide();
                   $('[class*="indupfldl"]').hide();
                   $('[class*="indpckfldl"]').hide();

                   $('#pf_submit_msg').hide();
                   $('#filestotsize').hide();
                   $('#faxdocpreview').hide();
                   $('#submitfax').attr("disabled", true);


                   $("#receivedfaxdir").attr("disabled", true);
                   $("#sentfaxdir").attr("disabled", true);
                   $("#receivedfaileddir").attr("disabled", true);
                   $("#sentfaileddir").attr("disabled", true);

                          location.reload(true);
                }
             });
           } else {
              $('#pf_submit_msg').hide();
              $('#faxdocpreview').removeClass('icon-loading');
              alert("Please enter the fax number of the recipient !");
             }
         } else {
              $('#pf_submit_msg').hide();
              $('#faxdocpreview').removeClass('icon-loading');
              alert("Please upload a file or pick a file from Nextcloud to send as fax !");
           }
  });

  $("#receivedfaxdir").on("click", function(event){
     $("#faxdocpreview").hide();
     $("#faxfoldersview").show();
     $("#faxfoldersview").addClass("icon-loading");
     $("#faxfoldersview :last-child").remove();
     var fxreceived = OC.generateUrl("/apps/files/?dir=/Pax_Fax/faxes_received");
     $("#faxfoldersview").append("<iframe id='embeddedView' src='" + fxreceived + "' width='100%' height='100%'></iframe>");
     setTimeout(function() { $("#faxfoldersview").removeClass("icon-loading"); }, 1000);
  });

  $("#sentfaxdir").on("click", function(event){
     $("#faxdocpreview").hide();
     $("#faxfoldersview").show();
     $("#faxfoldersview").addClass("icon-loading");
     $("#faxfoldersview :last-child").remove();
     var fxsent = OC.generateUrl("/apps/files/?dir=/Pax_Fax/faxes_sent");
     $("#faxfoldersview").append("<iframe id='embeddedView' src='" + fxsent + "' width='100%' height='100%'></iframe>");
     setTimeout(function() { $("#faxfoldersview").removeClass("icon-loading"); }, 1000);
  });

  $("#receivedfaileddir").on("click", function(event){
     $("#faxdocpreview").hide();
     $("#faxfoldersview").show();
     $("#faxfoldersview").addClass("icon-loading");
     $("#faxfoldersview :last-child").remove();
     var fxrecfailed = OC.generateUrl("/apps/files/?dir=/Pax_Fax/faxes_received_failed");
     $("#faxfoldersview").append("<iframe id='embeddedView' src='" + fxrecfailed + "' width='100%' height='100%'></iframe>");
     setTimeout(function() { $("#faxfoldersview").removeClass("icon-loading"); }, 1000);
  });

  $("#sentfaileddir").on("click", function(event){
     $("#faxdocpreview").hide();
     $("#faxfoldersview").show();
     $("#faxfoldersview").addClass("icon-loading");
     $("#faxfoldersview :last-child").remove();
     var fxsentfailed = OC.generateUrl("/apps/files/?dir=/Pax_Fax/faxes_received_failed");
     $("#faxfoldersview").append("<iframe id='embeddedView' src='" + fxsentfailed + "' width='100%' height='100%'></iframe>");
     setTimeout(function() { $("#faxfoldersview").removeClass("icon-loading"); }, 1000);
  });

  $(".indivflpckd").click(function(event){
     $("#faxfoldersview").hide();
  });

  $(".indivflcls").on("click", function(event){
     $("#faxfoldersview").hide();
  });

});