// JavaScript file

function ProgressBar(docBuildingBar)
{
    this.postbackDelay = 1000 * 4;
    this.docBuildingArea = document.getElementById(docBuildingBar);
    this.lastKnownDocs = -1;
    
    this.docBuildingArea.innerHTML += "<div id=\"docBuildingProgress\" style=\"font-weight: bold; font-size: 14px;\">Creating Your Documents&hellip; Checking the progress&hellip;</div>";
    
    this.updateInterval = setInterval("LoadProgressBar();", 1750);
}

ProgressBar.prototype.postbackDelay;
ProgressBar.prototype.docBuildingArea;
ProgressBar.prototype.lastKnownDocs;
ProgressBar.prototype.updateInterval;
ProgressBar.prototype.curtainReady = false;
ProgressBar.prototype.pageHeight = 0;
ProgressBar.prototype.pageWidth = 0;
ProgressBar.prototype.curtainElem;
ProgressBar.prototype.curtainMessageElem;
ProgressBar.prototype.isLoading = false;
ProgressBar.prototype.featureTimer;

function LoadProgressBar()
{
    if (pb.isLoading) return;
    pb.isLoading = true;
    
    var msg = new Pliner.Util.Ajax.Message("http://www.ezlandlordforms.com/documentprogressbar.aspx?1=1", 0);
    msg.AddOnCompletedEvent(function(msg) { UpdateDocProgressBar(msg.responseText); });
    ajaxConnection.AddToQueue(msg);
}

function UpdateDocProgressBar(dataString)
{
    pb.isLoading = false;

    var queueSize = dataString.split("\n")[0];
    var docsData = dataString.split("\n")[1];
    var docs = docsData.split("]]");
    
    var totalDocuments = 0;
    var documentsInProgress = 0;
    var completePercentPoints = 0;
    var percentage = 0;
    var containsLease = false;
    
    try
    {        
        for (var d=0; d < docs.length; d++)
            if (docs[d].split("[[").length == 2) 
                totalDocuments++;
        
        if (pb.lastKnownDocs <= 0 || totalDocuments > pb.lastKnownDocs)
            pb.lastKnownDocs = (totalDocuments < 1) ? 1 : totalDocuments;
        
        totalDocuments = pb.lastKnownDocs;
        
        for (var d=0; d < totalDocuments; d++)
        {
            if (docs[d])
            {
                var values = docs[d].split("[[");
            
                if (values.length == 2)
                {
                    if (parseInt(values[1]) < 100) documentsInProgress++;
                    if (values[1]) completePercentPoints += parseInt(values[1]);
                    if (values[0] == "Residential Lease Agreement") containsLease = true;
                }
                else
                    completePercentPoints += 100;
            }
            else
                completePercentPoints += 100;
        }
        
        percentage = (completePercentPoints / (totalDocuments * 100)) * 100;
        
        var progressArea = document.getElementById("docBuildingProgress");
        
        //progressArea.style.width = (pb.docBuildingArea.offsetWidth - 3) + "px";
        //progressArea.style.height = (pb.docBuildingArea.offsetHeight - 3) + "px";
        
        var html = "";
        
        html += "<div style=\"font-weight: bold; font-size: 14px;\">";
        
        if (totalDocuments == 1 && containsLease) 
            html += "Building Your Lease Package";
        else 
            html += "Creating Your " + ((totalDocuments > 1) ? ("" + totalDocuments) : "" ) + " Document" + ((totalDocuments != 1) ? "s" : "");
        
        html += "</div>";
        
        /* no need for this now that the builder is fast again and multiple docs can run at once
        if (percentage <= 1 && queueSize > 0) { 
            html += "<div style=\"margin: 16px 0 0 0; background-color: #FFFFFF;\">";
            html += "<div style=\"font-size: 13px; font-weight: bold;\">";
            html += "Estimated Wait Time: <span style=\"color: #B81818;\">less than " + (queueSize * 20) + " seconds</span>";
            html += "</div>";
            html += "<div style=\"font-size: 10px;\">";
            //html += "Your document will be created shortly. ";
            html += "There " + ((queueSize != 1) ? "are" : "is") + " " + queueSize + " document" + ((queueSize != 1) ? "s" : "") + " waiting ahead of yours.";
            html += "</div>";
            html += "</div>";
        }
        else 
        */
        //html += "<div style=\"text-align: left; position: relative; width: 304px;\">";  // fix some old IE quirks
        html += CreateProgressBar(percentage);
        //html += "</div>";
            
        html += "<br />";
        
        progressArea.innerHTML = html;
        
        if (containsLease || totalDocuments > 1)
        {
            var needToStartFeatures = false;
        
            if (!pb.curtainReady) { 
                DisplayDocBuildingCurtain();
                needToStartFeatures = true;
                
                try { 
                    pb.curtainMessageElem.innerHTML = "<div id=\"DivPbProgressElem\"></div>"
                                                    + "<div id=\"DivPbFeatureItems\" style=\"text-align: center; font-weight: bold; width: 450px; height: 220px; position: relative; margin: 0 auto;\"></div><br />" 
                                                    + "<img src=\"" + pbkey.src + "\" width=\"36\" height=\"18\" /><br /><br />"
                                                    + "You can continue to use the website while your documents are created. The progress will also be displayed at the top of each page.<br /><br /><br />" 
                                                    + "<b><a href=\"javascript:HideDocBuildingCurtain(true)\" onclick=\"HideDocBuildingCurtain(true);return false;\">Close This Message</a></b>";
                } catch (e) { }
            }

            try { Get("DivPbProgressElem").innerHTML = html; } catch (e) { }
            
            if (needToStartFeatures) { 
                var featureElem = Get("DivPbFeatureItems");
            
                if (featureElem != null) { 
                    for (var i = 0; i < pbMessages.length; i++)
                        featureElem.innerHTML += "<div id=\"DivPbFeatureNum" + (i+1) + "\" style=\"width: 450px; height: 220px; position: absolute; top: 0; left: 0; margin: 0 auto; background-image: url(" + pbMessageImgs[i].src + "); background-repeat: no-repeat; background-position: center center; display: none;\"><div style=\"margin: 0 auto; text-align: center; padding: 155px 40px 20px 40px;\"><img src=\"" + pbinfo.src + "\" width=\"16\" height=\"16\" align=\"absmiddle\" /> <em style=\"color: #4464DC;\">Did You Know:</em> " + pbMessages[i] + "</div></div>";
                
                    ShowDocBuildingFeatures(1, true);
                }
            }
        }
        
		try
		{
	        document.getElementById("DocBuildingPrintMessage").innerHTML = documentsInProgress + " Document" + ((documentsInProgress != 1) ? "s are" : " is") + " Still Being Created for You!<br />" 
	                                                                     + "<div style=\"font-size: 0.5em;\">"
	                                                                     + "Your documents will be ready to print shortly.  This message will update when your documents finish."
	                                                                     + "</div>";
		}
		catch (e) { }
        
    }
    catch (e)
    {
        // ...
    }
    
    if (percentage == 100)
    {
		try
		{
		    document.getElementById("DocBuildingPrintMessage").innerHTML = "Your Documents Have Been Created!<br />" 
		                                                                 + "<div style=\"font-size: 0.5em;\">"
		                                                                 + "You may need to <a href=\"javascript:window.location.reload(true);\">refresh your current page</a> for any completed documents to appear."
		                                                                 + "</div>";
		}
		catch (e) { }
    
        clearInterval(pb.updateInterval);
        clearTimeout(pb.featureTimer);
    
        if (window.location.href.indexOf("/members/manageleases.aspx") != -1 || window.location.href.indexOf("/members/documents/") != -1)
            window.location.reload(true);
        else
        {
            HideDocBuildingCurtain(false);
        
            var printMenuItem = Get("LiPrintMenuItem");
            var printHtml = "";
            
            printHtml += "<div style=\"position: absolute; top: " + (findPosY(printMenuItem) - 18) + "px; left: " + (findPosX(printMenuItem) + 22) + "px; font-weight: bold; color: #006600; font-style: italic; font-size: 11px;\">";
            printHtml += "<img src=\"/images/arrow_green_down.gif\" width=\"6\" height=\"12\" align=\"absmiddle\" />";
            printHtml += "&nbsp;Print Your Documents Here";
            printHtml += "</div>";
            
            document.body.innerHTML += printHtml;
        }
    }
}

var pb;
var pbbg = new Image();
pbbg.src = "/images/progressbar.gif";
var pbkey = new Image();
pbkey.src = "/images/key.gif";
var pbinfo = new Image();
pbinfo.src = "/images/information.gif";

var pbMessageImgs = new Array();
for (var i = 0; i < 5; i++) { 
    pbMessageImgs[i] = new Image();
    pbMessageImgs[i].src = "/images/feature_icons/progressbar_features/" + (i+1) + ".jpg";
}

var pbMessages = new Array();
pbMessages[0] = "To edit the lease at anytime, simply click on the lease builder wizard icon.";
pbMessages[1] = "The lease builder is now automatically adding required state's clauses to your lease.";
pbMessages[2] = "Don't forget to print two copies of your lease - one for you and one for your tenants.";
pbMessages[3] = "Now you can use your lease information to auto-fill other forms.";
pbMessages[4] = "We offer more than a Lease, checkout our <a href=\"/documents/\" target=\"_blank\">complete library of landlord forms</a>.";


function StartProgressBar()
{
    pb = new ProgressBar("docBuildingBar");
}

function DisplayDocBuildingCurtain()
{
    if (!pb.curtainReady)
    {
        pb.curtainElem = Get("DivDocBuildingCurtain");
        pb.curtainMessageElem = Get("DivDocBuildingCurtainMsg");
        
        pb.curtainElem.style.display = "block";
        pb.curtainElem.style.position = "absolute";
        pb.curtainElem.style.top = "0px";
        pb.curtainElem.style.left = "0px";
        pb.curtainElem.style.backgroundColor = "#000000";
	    pb.curtainElem.style.opacity = 0.8;
	    pb.curtainElem.style.filter  = "alpha(opacity=80)";
	    pb.curtainElem.innerHTML = "&nbsp";
        
        pb.curtainMessageElem.style.display = "block";
        pb.curtainMessageElem.style.position = "absolute";
        pb.curtainMessageElem.style.top = "0px";
        pb.curtainMessageElem.style.left = "0px";
    
        pb.pageHeight = ((document.height) ? document.height : document.body.offsetHeight) + 20;
        pb.pageWidth = ((document.width) ? document.width : document.body.offsetWidth) + 20;
        
        if (document.documentElement.clientHeight > pb.pageHeight) 
            pb.pageHeight = document.documentElement.clientHeight;
        
        pb.curtainReady = true;
    }
    
    pb.curtainElem.style.height = Math.ceil(pb.pageHeight) + "px";
    pb.curtainElem.style.width = Math.ceil(pb.pageWidth) + "px";
    pb.curtainElem.style.margin = "0px auto";
    pb.curtainElem.style.zIndex = 200;
    
    pb.curtainMessageElem.style.backgroundColor = "#FFFFFF";
    pb.curtainMessageElem.style.height = "420px";
    pb.curtainMessageElem.style.width = "500px";
    pb.curtainMessageElem.style.top = GetScreenCenteredY(420) + "px";
    pb.curtainMessageElem.style.left = GetScreenCenteredX(500) + "px";
    pb.curtainMessageElem.style.zIndex = 200;
    pb.curtainMessageElem.style.textAlign = "center";
    pb.curtainMessageElem.style.color = "#111133";
    pb.curtainMessageElem.style.padding = "10px";
    pb.curtainMessageElem.style.border = "2px solid #111133";
    
    if (ReadCookie("docbuildcurtain") == "hidetemp")
        HideDocBuildingCurtain(false);
}

function HideDocBuildingCurtain(setCookie)
{
    pb.curtainElem.style.display = "none";
    pb.curtainElem.style.width = "0px";
    pb.curtainElem.style.height = "0px";
    pb.curtainElem.style.zIndex = -1;
    
    pb.curtainElem.innerHTML = "";
    pb.curtainMessageElem.innerHTML = "";
    
    pb.curtainMessageElem.style.display = "none";
    pb.curtainMessageElem.style.height = "0px";
    pb.curtainMessageElem.style.width = "0px";
    pb.curtainMessageElem.style.zIndex = -1;
    
    if (setCookie)
        CreateCookie("docbuildcurtain", "hidetemp", 1);
}

function CreateProgressBar(p) { 
    var barMsg;
    
    if (p == 0) barMsg = "Starting";
    else if (p == 100) barMsg = "Completed";
    else barMsg = Math.round(p) + "%";

    var bar = "";
    //bar += "<div style=\"margin: 0 auto; position: relative; width: 300px; text-align: left;\">";
    bar += "<div style=\"margin: 0 auto; text-align: center; width: 300px; height: 16px; padding: 2px 0 2px 0; position: relative; overflow: hidden; border: 2px solid #02043C; background-color: #FFF; font-weight: bold; color: #" + ((p < 50) ? "02043C" : "FFFFFF") + ";\">";
    bar += "<div style=\"position: absolute; z-index: 101; width: 300px; top: 0; left: 0; text-align: center; padding: 2px 0 2px 0;\">" + barMsg + "</div>";
    bar += "<div style=\"position: absolute; z-index: 100; left: " + Math.round(-300 * ((100-p) / 100)) + "px; top: 2px; height: 16px; background-color: #5157F9; background-image: url(/images/progressbar.gif); background-position: top right; background-repeat: no-repeat; width: 300px;\">";
    bar += "&nbsp;</div>";
    bar += "</div>";
    //bar += "</div>";
    return bar;
}

function ShowDocBuildingFeatures(featureNum, isStart) { 
    var featureElemId = "DivPbFeatureNum" + featureNum;
    var featureElem = Get(featureElemId);
    if (featureElem == null || featureElem == undefined) return;
    
    if (!isStart) { 
        var prevFeatureElemId = "DivPbFeatureNum" + ((featureNum == 1) ? 5 : featureNum - 1);
        FadeOpacity(prevFeatureElemId, 100, 0, 750, 12);
        setTimeout("Get(\"" + prevFeatureElemId + "\").style.display = \"none\"", 1000);
    }
    
    SetOpacity(featureElem, 0);
    featureElem.style.display = "block";
    FadeOpacity(featureElemId, 0, 100, 750, 12);
    
    pb.featureTimer = setTimeout("ShowDocBuildingFeatures(" + ((featureNum % 5) + 1) + ", false)", 15 * 1000);
}