﻿// JScript File

var FileFlyerMax = null;
var XMLUpdated = false;
var ToolbarID  = "0";
var PageName   = 0;//1-Ticket(Download) 2-UploadSuccess 0-Others
var sDomain = "http://www.fileflyer.com/";
//var sDomain = "http://test.fileflyer.com/";
//var sDomain = "http://localhost/fileflyer/";
//var sMaxDomain = "http://localhost/fileflyermax/";
var sMaxDomain = "http://max.fileflyer.com/";

try
{
  if(typeof(GetPageName) == 'function') {
    PageName = GetPageName();
  } else{
    PageName = 0;
  }
}catch(ex) {
  PageName = 0;
}

function ToolBarInit(tool)
{  
  // if this is a max toolbar and not speedbit toolbar;.
  if (tool != null) {
		if (tool.clsid=="{6226BA26-C017-4007-928C-DE9715C6FA67}") {
			FileFlyerMax = tool;
			if(typeof(OnInit) == 'function') {
				OnInit();
			}
			//this is for update toolbar after deleting all recently down/uploads.
			//if (PageName==1 || PageName==2) {
				UpdateXML();
				tool = FileFlyerMax;
			//}
		}
	}
}

function UpdateXML()
{
 if (!XMLUpdated)
 {    
   if (FileFlyerMax)
   { 
     XMLUpdated = true;
     var CustomXML = "";
     var CurrentURL = "";
 
     CustomXML = "<TOOLBAR>";
     CustomXML += "<BUTTON id=\"tbs_button_download\" caption=\"Downloads\" type=\"Split\" visibility=\"1\" image=\""+sDomain+"IMG/FFMax_saved.gif\" command=\"redirect\" href=\"http://www.fileflyer.com/max/Downloads.aspx\"/>";
     CustomXML += "<BUTTON id=\"tbs_button_upload\" caption=\"Uploads\" type=\"Split\" visibility=\"1\" image=\""+ sDomain +"img/FFMax_upload.gif\" command=\"uploadfiles\"/>";   
     CustomXML += "</TOOLBAR>";
         
     //Reading and saving Var34 uploads     
     var Var3 = FileFlyerMax.Var(3);
     var Var4 = FileFlyerMax.Var(4);
     //Reading and saving Var56 downloads
     var Var5 = FileFlyerMax.Var(5);
     var Var6 = FileFlyerMax.Var(6);
      
     CustomXML = "<TOOLBAR>";
     CustomXML += GenerateDownloadButton(Var5 + Var6);
     CustomXML += GenerateUploadButton(Var3 + Var4);
     CustomXML += "</TOOLBAR>";
     //Current button
     FileFlyerMax.CustomXML("FileFlyerCustomXML")= CustomXML;
     
     ToolBarReload(FileFlyerMax);
    }//FileFlyerMax
  }//XMLUpdated
}

function GenerateDownloadButton(Var5)
{
  
  var xmlDoc = null;
  var CustomXML = "";  
  CustomXML = "<BUTTON id=\"tbs_button_download\" caption=\"Downloads\" type=\"Split\" visibility=\"1\" image=\""+sDomain+"IMG/FFMax_saved.gif\" command=\"redirect\" href=\"http://www.fileflyer.com/max/Downloads.aspx\">";
  CustomXML += "<MENU id=\"tbs_menu_DownSplit\" type=\"Split\">";
// if(Var5.length>2300)alert("stop");
  if (Var5!="" && Var5!=null)
  {
    //Get all values from Var5
    xmlDoc = parseXML(Var5);
    if (xmlDoc!=null)
    {    
      var nodeList = xmlDoc.getElementsByTagName("DOWNLOAD");
      if (nodeList.length>0)
      {
        //Create CustomXML and Set CustomXML to the Toolbar
        if (PageName==1){
          if (!DownloadNodeExist(xmlDoc, GetDownloadUID()))//if file doesn't exist in the recent files then insert it to the record
          {
              CurrentURL = CreateDownloadNode(xmlDoc);             
              PreviousUrl=xmlDoc.getElementsByTagName("DOWNLOAD")[0];
              xmlDoc.documentElement.insertBefore(CurrentURL,PreviousUrl);
          }//if file exist update date
          else
          {
            DownloadNodeUpdate(xmlDoc, GetDownloadUID());
          }
        }
        
        nodeList = xmlDoc.getElementsByTagName("DOWNLOAD");
        var MaxItems = (nodeList.length>7)?7:nodeList.length;
        var UID = "";
        for (i = 0; i < MaxItems; i++)
        {
          x = xmlDoc.getElementsByTagName("DOWNLOAD")[i].attributes;
          UID = x.getNamedItem("uid").nodeValue;          
          var Filename = GetShortFileName(x.getNamedItem("filename").nodeValue);
          var FileSize = x.getNamedItem("filesize").nodeValue;          
          var URL = "http://www.fileflyer.com/view/" + UID;          
          var dtDate = x.getNamedItem("date").nodeValue;
          var Desc =  x.getNamedItem("DownloadDesc").nodeValue;
          CustomXML += "<ITEM id=\"tbs_item_" + i + "\" caption=\""+(i+1) + ". " + Filename + " " + FileSize + " - " + dtDate + "\" visibility=\"1\" enabled=\"1\" command=\"redirect\" href=\""+URL+"\"/>";// hint=\""+Description+"\"
        }        
      }//end of nodeList.length>0
    }//end of xmlDoc
  }//end of CurrentURL!=""
  else
  {
    if (PageName==1)
    {
      Var5 = "<DOWNLOADS></DOWNLOADS>";
      xmlDoc = parseXML(Var5);
      CurrentURL = CreateDownloadNode(xmlDoc);
      x=xmlDoc.getElementsByTagName("DOWNLOADS")[0].appendChild(CurrentURL);
    }
  }
  CustomXML += "<SEPARATOR id=\"tbs_sep_Uploads\" resizeable=\"0\"/>";
  CustomXML += "<ITEM id=\"tbs_item_vAllDown\" caption=\"View all downloads...\" visibility=\"1\" enabled=\"1\" command=\"redirect\" href=\"http://www.fileflyer.com/max/Downloads.aspx\" hint=\"View all downloads...\"/>";
  CustomXML += "</MENU>";
  CustomXML += "</BUTTON>";
  
  //saving data for a next time
  SaveDownloadVariables(FileFlyerMax, xmlDoc);  
  
  return CustomXML;
}

function GenerateUploadButton(Var4)
{
  var xmlDoc = null;
  var CustomXML = "";
  CustomXML = "<BUTTON id=\"tbs_button_upload\" caption=\"Uploads\" type=\"Split\" visibility=\"1\" image=\""+ sDomain +"img/FFMax_upload.gif\" command=\"uploadfiles\">";
  CustomXML += "<MENU id=\"tbs_menu_UplSplit\" type=\"Split\">";
  if (Var4!="" && Var4!=null)
  {
    //Get all values from Var4
    xmlDoc = parseXML(Var4);
    if (xmlDoc!=null)
    {
      var nodeList = xmlDoc.getElementsByTagName("UPLOAD");

      if (nodeList.length>0)
      {
        //Create CustomXML and Set CustomXML to the Toolbar
        if (PageName==2)
        {
          var sUploadUID = GetUploadUID();
          if (!UploadNodeExist(xmlDoc, sUploadUID))//if file doesn't exist in the recent files then insert it to the record
          {          
            CurrentURL = CreateUploadNode(xmlDoc);
            PreviousUrl=xmlDoc.getElementsByTagName("UPLOAD")[0];
            xmlDoc.documentElement.insertBefore(CurrentURL,PreviousUrl);         
          }//if file exist update date
          else
          {
            UploadNodeUpdate(xmlDoc, sUploadUID);
          }
        }
        
        nodeList = xmlDoc.getElementsByTagName("UPLOAD");
        var MaxItems = (nodeList.length>7)?7:nodeList.length;
        var UID = "";
        for (i = 0; i < MaxItems; i++)
        {
          x = xmlDoc.getElementsByTagName("UPLOAD")[i].attributes;
          UID = x.getNamedItem("uid").nodeValue;
          var Filename = GetShortFileName(x.getNamedItem("filename").nodeValue);
          var FileSize = x.getNamedItem("filesize").nodeValue;
          var URL = "http://www.fileflyer.com/view/" + UID;          
          var dtDate = x.getNamedItem("date").nodeValue;
          var Desc =  x.getNamedItem("UploadDesc").nodeValue;
          var RemoveUID = (x.getNamedItem("removeid")?x.getNamedItem("removeid").nodeValue:"");
         
          CustomXML += "<ITEM id=\"tbs_item_" + i + "\" caption=\""+(i+1) + ". " + Filename + " " + FileSize + " - " + dtDate + "\" visibility=\"1\" enabled=\"1\" command=\"redirect\" href=\""+URL+"\" hint=\""+Desc+"\"/>";
        }
        
      }//end of nodeList.length>0
    }//end of xmlDoc
  }//end of CurrentURL!=""
  else
  {
    if (PageName==2)
    {
      Var4 = "<UPLOADS></UPLOADS>";
      xmlDoc = parseXML(Var4);
      CurrentURL = CreateUploadNode(xmlDoc);
      x=xmlDoc.getElementsByTagName("UPLOADS")[0].appendChild(CurrentURL);
    }
  }
  CustomXML += "<SEPARATOR id=\"tbs_sep_Uploads\" resizeable=\"0\"/>";
  CustomXML += "<ITEM id=\"tbs_item_vAllUploads\" caption=\"View all uploads...\" visibility=\"1\" enabled=\"1\" command=\"redirect\" href=\""+sDomain+"max/Uploads.aspx\" hint=\"View all uploads...\"/>";
  CustomXML += "</MENU>";
  CustomXML += "</BUTTON>";
  //saving data for a next time
  SaveUploadVariables(FileFlyerMax, xmlDoc);
  
  return CustomXML;
}

function ToolBarReload(tool)
{
  tool.Reload();
  XMLUpdated = false;
}

//sending ToolbarID to server side
function GetToolbarID()
{
  var ToolbarID = "0";
  if (FileFlyerMax)
    ToolbarID = FileFlyerMax.toolbarid;  
  return ToolbarID;
}

function gup(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if(results == null)
    return "";
  else
    return results[1];
}

function parseXML(strXML)
{
  var xmlDoc;
  try //Internet Explorer
  {
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    //Turns off asynchronized loading, to make sure that the parser will not continue execution of the script before the document is fully loaded.
    xmlDoc.async="false";
    xmlDoc.loadXML(strXML);
  }
  catch(ex)
  {
    alert("Error ParseXML=" + ex.message);
    try //Firefox, Mozilla, Opera, etc.
    {
      parser = new DOMParser();
      xmlDoc = parser.parseFromString(strXML,"text/xml");
    }
    catch(ex)
    {
      alert("Error ParseXML=" + ex.message);
      return;
    }
  }
  return xmlDoc;
}

function getCurrentDateTime()
{
  var retVal = "";
  var currentTime = new Date();
  var month = currentTime.getMonth() + 1;//(0:11)
  var day = currentTime.getDate();//(0-31)
  var year = currentTime.getFullYear();//(1970-9999)
  
  var hours = currentTime.getHours();//(0-23)
  var minutes = currentTime.getMinutes();//(0-59)
  
  retVal = month + "/" + day + "/" + year;

  if (minutes < 10)
    minutes = "0" + minutes;
  retVal += " " + hours + ":" + minutes + " ";
  
  if(hours > 11){
    retVal += "PM";
  }
  else{
    retVal += "AM";
  }
  return retVal;
}

function CreateDownloadNode(xmlDoc)
{
  var CurrentURL = xmlDoc.createElement('DOWNLOAD');
  var DownloadUID = GetDownloadUID();
  var FileName = GetDownloadFileName();
  var FileSize = GetDownloadFileSize();  
  var DownloadDesc = GetDownloadDesc();
  FileSize = GetFileSizeInMb(FileSize);
  CurrentURL.setAttribute('date', getCurrentDateTime());
  CurrentURL.setAttribute('filename', FileName);
  CurrentURL.setAttribute('filesize', FileSize);
  CurrentURL.setAttribute('uid', DownloadUID);
  CurrentURL.setAttribute('DownloadDesc', DownloadDesc);
  return CurrentURL;
}

function CreateUploadNode(xmlDoc)
{
  var CurrentURL = xmlDoc.createElement('UPLOAD');
  var UploadUID = GetUploadUID();
  var FileName = GetUploadFileName();
  var FileSize = GetUploadFileSize();
  var UploadDesc = GetUploadDesc();
  var RemoveUID = gup("removeid");  
  FileSize = GetFileSizeInMb(FileSize);
  CurrentURL.setAttribute('date', getCurrentDateTime());
  CurrentURL.setAttribute('uid', UploadUID);  
	CurrentURL.setAttribute('removeid',GetRemoveUID());	  
  CurrentURL.setAttribute('UploadDesc', UploadDesc);
  CurrentURL.setAttribute('filename', FileName);
  CurrentURL.setAttribute('filesize', FileSize);
  return CurrentURL;
}

function DownloadNodeExist(xmlDoc, DownloadUID)
{ 
  var bRetVal = false;
  var nodeList = xmlDoc.getElementsByTagName("DOWNLOAD");
  if (nodeList.length>0)
  {
    for (i = 0; i < nodeList.length; i++)
    {
      x = xmlDoc.getElementsByTagName("DOWNLOAD")[i].attributes;
      var UID_existed = x.getNamedItem("uid").nodeValue;
      if (DownloadUID == UID_existed)
      {
        bRetVal = true;
        return bRetVal;
      }
    }
  }
  return bRetVal;
}

function UploadNodeExist(xmlDoc, UploadUID)
{ 
  var bRetVal = false;
  var nodeList = xmlDoc.getElementsByTagName("UPLOAD");
  if (nodeList.length>0)
  {
    for (i = 0; i < nodeList.length; i++)
    {
      x = xmlDoc.getElementsByTagName("UPLOAD")[i].attributes;
      var UID_existed = x.getNamedItem("uid").nodeValue;
      if (UploadUID == UID_existed)
      {
        bRetVal = true;
        return bRetVal;
      }
    }
  }
  return bRetVal;
}

function DownloadNodeUpdate(xmlDoc, DownloadUID)
{
  var nodeList = xmlDoc.getElementsByTagName("DOWNLOAD");
  if (nodeList.length>0)
  {
    for (i = 0; i < nodeList.length; i++)
    {
      x = xmlDoc.getElementsByTagName("DOWNLOAD")[i].attributes;
      var UID_existed = x.getNamedItem("uid").nodeValue;
      if (DownloadUID == UID_existed)
      {
        x.item(0).nodeValue = getCurrentDateTime();
      }
    }
  }
}

function UploadNodeUpdate(xmlDoc, UploadUID)
{
  var nodeList = xmlDoc.getElementsByTagName("UPLOAD");
  if (nodeList.length>0)
  {
    for (i = 0; i < nodeList.length; i++)
    {
      x = xmlDoc.getElementsByTagName("UPLOAD")[i].attributes;
      var UID_existed = x.getNamedItem("uid").nodeValue;
      if (UploadUID == UID_existed)
      {
        x.item(0).nodeValue = getCurrentDateTime();
      }
    }
  }
}

function SaveDownloadVariables(FileFlyerMax, xmlDoc)
{
  var CountElements = 0;
  var MaxUploadVarSize = 2000;
  if (xmlDoc)
  {    
    if (xmlDoc.xml.length<=MaxUploadVarSize){
      FileFlyerMax.Var(5) = (xmlDoc)?xmlDoc.xml:"";
    }
    else 
      if (xmlDoc.xml.length<=MaxUploadVarSize*2){
        //var5        
        FileFlyerMax.Var(5) = xmlDoc.xml.substring(0, MaxUploadVarSize);
        //var6
        var startPos = MaxUploadVarSize;
        var endPos = xmlDoc.xml.length;        
        FileFlyerMax.Var(6) = xmlDoc.xml.substring(startPos, endPos);    
      }
      else{
        //xml>4880
        while(xmlDoc.xml.length > (MaxUploadVarSize*2))
        {
          var nodeList = xmlDoc.getElementsByTagName("DOWNLOAD");
          if (nodeList.length > 0){
              CountElements = nodeList.length;
          }
          //alert("CountElements = " + CountElements);
          xmlDoc.documentElement.removeChild(xmlDoc.documentElement.childNodes.item(CountElements-1));
        }
        //var5        
        FileFlyerMax.Var(5) = xmlDoc.xml.substring(0, MaxUploadVarSize);
        //var6
        var startPos = MaxUploadVarSize;
        var endPos = xmlDoc.xml.length;        
        FileFlyerMax.Var(6) = xmlDoc.xml.substring(startPos, endPos);
      }
  }   
}

function SaveUploadVariables(FileFlyerMax, xmlDoc)
{
  var CountElements = 0;
  var MaxUploadVarSize = 2440;
  if (xmlDoc)
  {    
    if (xmlDoc.xml.length<=MaxUploadVarSize){
      FileFlyerMax.Var(3) = (xmlDoc)?xmlDoc.xml:"";
    }
    else 
      if (xmlDoc.xml.length<=MaxUploadVarSize*2){
        //var3        
        FileFlyerMax.Var(3) = xmlDoc.xml.substring(0, MaxUploadVarSize);
        //var4
        var startPos = MaxUploadVarSize;
        var endPos = xmlDoc.xml.length;        
        FileFlyerMax.Var(4) = xmlDoc.xml.substring(startPos, endPos);    
      }
      else{
        //xml>4880
        while(xmlDoc.xml.length > (MaxUploadVarSize*2))
        {
          var nodeList = xmlDoc.getElementsByTagName("UPLOAD");
          if (nodeList.length > 0){
              CountElements = nodeList.length;
          }
          //alert("CountElements = " + CountElements);
          xmlDoc.documentElement.removeChild(xmlDoc.documentElement.childNodes.item(CountElements-1));
        }
        //var3        
        FileFlyerMax.Var(3) = xmlDoc.xml.substring(0, MaxUploadVarSize);
        //var4
        var startPos = MaxUploadVarSize;
        var endPos = xmlDoc.xml.length;        
        FileFlyerMax.Var(4) = xmlDoc.xml.substring(startPos, endPos);
      }
  }   
}

ToolbarID  = GetToolbarID();

function GetShortFileName(sFileName)
{
  if (sFileName.length > 33)
  {
    var theresidu = sFileName.substring(0, sFileName.length / 2 + 1 - (sFileName.length-33) / 2);
    var theresidu2 = sFileName.substring(sFileName.length / 2 + 1 - (sFileName.length-33) / 2+sFileName.length-33);
      sFileName = theresidu +".."+ theresidu2;
  }
  else
      sFileName = sFileName;
  return sFileName;
}

function GetShortFileNameSize(sFileName, sSize)
{
  if (sFileName.length > sSize)
  {
    var theresidu = sFileName.substring(0, sFileName.length / 2 + 1 - (sFileName.length-33) / 2);
    var theresidu2 = sFileName.substring(sFileName.length / 2 + 1 - (sFileName.length-33) / 2+sFileName.length-33);
      sFileName = theresidu +".."+ theresidu2;
  }
  else
      sFileName = sFileName;
  return sFileName;
}

function GetDisplayFileNameSize(FileName, Description)
{
  var iSize = 0;
  var iFileNameSize = 0;
  var iDescSize = 0;
  try
  {
    if (Description!=null && Description!="")
      iDescSize = Description.length;
    if (FileName!=null && FileName!="")
      iFileNameSize = FileName.length;
      
    if(iDescSize>80 && iFileNameSize>80 && iFileNameSize>iDescSize)
        iSize = iFileNameSize- iDescSize;
    else
      if(iDescSize>80 && iFileNameSize>80 && iFileNameSize<iDescSize)
        iSize = 80;
      else
        iSize = 80;
  }
  catch(ex)
  {
    //throw ex;
  }
  return iSize;
}

function GetFileSizeInMb(FileSize)
{
  var retFileSize = "";
  try
  {
    if (FileSize!="" && FileSize!=null)
    {
      if (FileSize>1048576)//1024*1024
      {
        FileSize = FileSize/1048576;
        retFileSize = FileSize.toFixed(1) + " Mb";
      }
      else
      {
        if(FileSize>1024)
        {
          FileSize = FileSize/1024;
          retFileSize = FileSize.toFixed(1) + " KB";
        }
      }
    }
  }
  catch(ex)
  {
  }
  return retFileSize;
}