﻿//--------------------------------------------------------------------------------------------------------- Your Custom JS Functions Here -------
var BaseParmeters = new BaseParmetersClass();
var BaseParmeters1 = new BaseParmetersClass();
//
//get base parmeters
//
function BaseParmetersClass()
{
    this.TemplateContainer = "";
    this.AjaxUrl = "";
    this.AjaxHttp = null;
    this.refreshType = "";
    this.TimerObject="";
    this.Time = 30;
};

var isProcessing = false;
function FtpBaseParmeters()
{
    var clientPath = GetCookie("Client");
    var serverPath = GetCookie("Server");
    var username = GetCookie("Username");
    var password = GetCookie("Password");
    
    if(clientPath=="" || serverPath=="" || username=="" || password=="")
        window.location.href = "?action=index";
};

function DisConnect(sender, ajaxUrl)
{
    if(isProcessing)
        return;
    isProcessing = true;
    FtpBaseParmeters();
    document.getElementById("loadingBox").parentNode.style.display="";
    BaseParmeters.AjaxUrl = ajaxUrl + "?type=disConnect";   
    BaseParmeters.AjaxHttp = new IncholAJAX(BaseParmeters.AjaxUrl, BaseParmeters);
    BaseParmeters.AjaxHttp.RemoteServer(BaseParmeters.AjaxHttp);
    IncholAJAX.prototype.ProcessIncholOverride = PageRedirect;
}

function ShowPublishDetails(sender, url, oEvent, templateId)
{
    if(isProcessing)
        return;
    isProcessing = true;
    FtpBaseParmeters();
    document.getElementById("loadingBox").parentNode.style.display="";
    BaseParmeters.AjaxUrl = url;
    BaseParmeters.TemplateContainer = document.getElementById(templateId);
    BaseParmeters.AjaxHttp = new IncholAJAX(BaseParmeters.AjaxUrl, BaseParmeters);
    BaseParmeters.AjaxHttp.RemoteServer(BaseParmeters.AjaxHttp);
    var responseText = this.BaseParmeters.AjaxHttp.GetResponseText();
    alert(responseText);
    IncholAJAX.prototype.ProcessIncholOverride = ProcessIncholOverride();
}

function ProcessIncholOverride()
{
    isProcessing = false;
    var responseText = this.BaseParmeters.AjaxHttp.GetResponseText();
    this.BaseParmeters.AjaxHttp.parameter1.TemplateContainer.innerHTML = responseText;
    document.getElementById("loadingBox").parentNode.style.display="none";
}

function SelectFileName(sender, e)
{
    var tdObject = sender.parentNode;
    var tBodyObject = tdObject.parentNode.parentNode;
    var rows = tBodyObject.getElementsByTagName("tr");
    if(e.ctrlKey)
    {
        if(tdObject.className != "selected")
            tdObject.className = "selected";
        else
            tdObject.className = "";
    }
    else
    {
        for(var i=0; i<rows.length; i++)
        {
            var cells = rows[i].getElementsByTagName("td");
            if(cells.length > 0)
            {
                cells[1].className = "";
            }
        }
        tdObject.className = "selected";
    }
}

function DeleteClientFile(sender, ajaxUrl)
{
    DeleteFiles(ajaxUrl, "clientContainer", "Client");
}

function DeleteServerFile(sender, ajaxUrl)
{
    DeleteFiles(ajaxUrl, "serverContainer", "Server");
}

function DeleteFiles(ajaxUrl, templateId, refreshType)
{
    if(isProcessing)
        return;
    isProcessing = true;
    FtpBaseParmeters();
    var files =  GetSelectedFiles(templateId);
    if(files == "")
    {
        alert("Please select a file to delete.");
        return false;
    }
    document.getElementById("loadingBox").parentNode.style.display="";
    BaseParmeters.AjaxUrl = ajaxUrl + "?type=delete"+refreshType+"&fns=" + encodeURIComponent(files);
    BaseParmeters.TemplateContainer = document.getElementById(templateId);
    BaseParmeters.refreshType = refreshType;
    BaseParmeters.AjaxHttp = new IncholAJAX(BaseParmeters.AjaxUrl, BaseParmeters);
    BaseParmeters.AjaxHttp.RemoteServer(BaseParmeters.AjaxHttp);
    IncholAJAX.prototype.ProcessIncholOverride = RefreshFilesList;
}

function UploadFileToServer(sender, ajaxUrl)
{
    if(isProcessing)
        return;
    isProcessing = true;
    FtpBaseParmeters();
    var files = GetSelectedFiles("clientContainer");
    if(files == "" || files == null)
    {
        alert("Please select a file to upload.");
        return false;
    }
    BaseParmeters.AjaxUrl = ajaxUrl + "?type=uploadFile&fns=" + encodeURIComponent(files);
    BaseParmeters.TemplateContainer = document.getElementById('serverContainer');
    BaseParmeters.refreshType = "Server";
    UploadFile();

    BaseParmeters1.AjaxUrl = ajaxUrl + "?type=showProgress";
    BaseParmeters1.TemplateContainer = document.getElementById('progressContainer');
    BaseParmeters1.TimerObject = setTimeout(ShowProgress, BaseParmeters1.Time);
}

function ShowProgress()
{
    clearTimeout(BaseParmeters1.TimerObject);
    BaseParmeters1.AjaxHttp = new IncholAJAX1(BaseParmeters1.AjaxUrl, BaseParmeters1);
    BaseParmeters1.AjaxHttp.RemoteServer(BaseParmeters1.AjaxHttp);
    IncholAJAX1.prototype.ProcessIncholOverride = UpdateProgressHtml;
}

function UploadFile()
{
    BaseParmeters.AjaxHttp = new IncholAJAX(BaseParmeters.AjaxUrl, BaseParmeters);
    BaseParmeters.AjaxHttp.RemoteServer(BaseParmeters.AjaxHttp);
    IncholAJAX.prototype.ProcessIncholOverride = function(){};
}

function GetSelectedFiles(templateId)
{
    var tableObject = document.getElementById(templateId).getElementsByTagName("table")[0];
    var files = "";
    if(tableObject)
    {
        var rows = tableObject.getElementsByTagName("tr");
        for(var i=0; i<rows.length; i++)
        {
            var cells = rows[i].getElementsByTagName("td");
            if(cells.length > 0)
            {
                if(cells[1].className == "selected")
                {
                    if(files != "")files += "|";
                    var divObject = cells[1].getElementsByTagName("div")[0];
                    if(divObject.getAttribute("content") != "..")files += divObject.getAttribute("content") + ":" + divObject.innerHTML;
                }
            }
        }
    }
    return files;
}

//start ProcessIncholOverride //
function RefreshFilesList()
{
    isProcessing = false;

    var responseText = this.GetResponseText();
    if(responseText == "true")
    {
        clearTimeout(this.parameter1.TimerObject);
        var url = this.parameter1.AjaxUrl.split('?');
        if(this.parameter1.refreshType.toLowerCase() == "server")
            url = url[0] + "?type=serverHtml";
        else
            url = url[0] + "?type=clientHtml";
        ShowPublishDetails(null, url, null, this.parameter1.TemplateContainer.id);
    }
}

function PageRedirect()
{
    isProcessing = false;
    var responseText = this.GetResponseText();
    if(responseText != "")
    {
        window.location.href=responseText;
    }
}


function UpdateProgressHtml()
{
    var responseText = this.GetResponseText();
    var isEnd = false;
    if(responseText.substr(0, 4) == "end:")
    {
        responseText = responseText.substr(4);
        isEnd = true;
    }
    this.parameter1.TemplateContainer.innerHTML = responseText;
    if(!isEnd)ShowProgress();
    else
    {
        var url = BaseParmeters.AjaxUrl.split('?');
        if(BaseParmeters.refreshType.toLowerCase() == "server")
            url = url[0] + "?type=serverHtml";
        else
            url = url[0] + "?type=clientHtml";
        isProcessing = false;
        ShowPublishDetails(null, url, null, BaseParmeters.TemplateContainer.id);
    }

}

function GetBrowserName()
{
   var agt = navigator.userAgent.toLowerCase();
   if (agt.indexOf("firefox") != -1) return 'Firefox';
}

//end ProcessIncholOverride //


function IncholAJAX1(urlToServer, parameter1, parameter2, parameter3)
{
    this.urlToServer = urlToServer;
    this.parameter1 = parameter1;
    this.parameter2 = parameter2;
    this.parameter3 = parameter3;

    if (typeof XMLHttpRequest != "undefined")
        this.http = new XMLHttpRequest();
    else if (typeof ActiveXObject != "undefined")
        this.http = new ActiveXObject("MSXML2.XmlHttp");
    else
        alert("No XMLHttpRequest object available. This functionality will not work.");
}

IncholAJAX1.prototype.responseText;

IncholAJAX1.prototype.GetResponseText = function() {
    return this.responseText;
}

IncholAJAX1.prototype.RemoteServer = function(incholAJAX){    
    var oHttp = this.http;
    if (oHttp.readyState != 0 )
        oHttp.abort();
    
    oHttp.open("get", this.urlToServer, true);

    oHttp.onreadystatechange = function(){
        if (oHttp.readyState == 4)
        {
            incholAJAXl.responseText = oHttp.responseText;
            incholAJAXl.ProcessIncholOverride();
        }

    };

    oHttp.send(null);
};


//IncholAJAXl.prototype.ProcessIncholOverride = function()
//{
//    /*alert('You need to implement your ProcessIncholOverride method. For example\n\n' + 
//        'IncholAJAX.prototype.ProcessIncholOverride = ProcessIncholOverride;\n' +
//        'function ProcessIncholOverride(){alert("This is my Override method...");}');
//    */
//};

