﻿var ApplicationManager = new __ApplicationManager();

function __ApplicationManager() {}

(function()
{

    var RESUME_FORM = null;
    var RESUME_FORM_HEIGHT = 0;
    var RESUME_FORM_WIDTH = 0;

    __ApplicationManager.prototype.ShowForm = function()
    {
        if(RESUME_FORM == null)
        {
            var form = document.getElementById("applyForm");
            form.style.display = "";
            form.style.position = "absolute";
            RESUME_FORM_HEIGHT = form.offsetHeight;
            RESUME_FORM_WIDTH = form.offsetWidth;
            RESUME_FORM = form.parentNode.removeChild(form);
        }

        var dashboard = new Dashboard();

        dashboard.Childs.push(RESUME_FORM);
        dashboard.Show();

        RESUME_FORM.style.top = (Daedalus.Utility.GetWindowHeight() / 2 - RESUME_FORM_HEIGHT / 2 + document.documentElement.scrollTop) + "px";
        RESUME_FORM.style.left = (Daedalus.Utility.GetWindowWidth() / 2 - RESUME_FORM_WIDTH / 2 + document.documentElement.scrollLeft) + "px";
    }

    __ApplicationManager.prototype.HideForm = function(button)
    {
        var overlay = document.getElementById("DASHBOARD_OVERLAY");
        overlay.onclick();
    }

    __ApplicationManager.prototype.SendApplication = function(button)
    {
        var form = button.parentNode.parentNode.parentNode;
        var content = document.getElementById("applyFormContent");
        var inputs = form.getElementsByTagName("input");
        var textareas = form.getElementsByTagName("textarea");

        // Remove error message
        if(content.childNodes[0].className == "ErrorMessage") content.removeChild(content.childNodes[0]);
        
        if(Daedalus.Utility.Trim(inputs[0].value).length == 0 || Daedalus.Utility.Trim(inputs[1].value).length == 0)
        {
            var errorPanel = content.insertBefore(document.createElement("div"), content.childNodes[0]);
            errorPanel.className = "ErrorMessage";
            errorPanel.innerHTML = nameMissingError;
            return;
        }
        else if(Daedalus.Utility.Trim(inputs[2].value).length == 0)
        {
            var errorPanel = content.insertBefore(document.createElement("div"), content.childNodes[0]);
            errorPanel.className = "ErrorMessage";
            errorPanel.innerHTML = emailMissingError;
            return;
        }
        else if(Daedalus.Utility.Trim(inputs[3].value).length == 0)
        {
            var errorPanel = content.insertBefore(document.createElement("div"), content.childNodes[0]);
            errorPanel.className = "ErrorMessage";
            errorPanel.innerHTML = resumeMissingError;
            return;
        }
        else if(Daedalus.Utility.Trim(textareas[0].value).length == 0)
        {
            var errorPanel = content.insertBefore(document.createElement("div"), content.childNodes[0]);
            errorPanel.className = "ErrorMessage";
            errorPanel.innerHTML = "Please enter your cover letter";
            return;
        }

        // Create HTTP POST frame
        var frameId = "sendResumeFrame";
        var frameHolder = document.createElement("div");

        frameHolder.innerHTML = "<iframe id=\"" + frameId + "\" name=\"" + frameId + "\"></iframe>";
        frameHolder.style.width = "1px";
        frameHolder.style.height = "1px";
        frameHolder.style.position = "absolute";
        frameHolder.style.left = "-100px";
        frameHolder.style.overflow = "hidden";
        
        document.body.appendChild(frameHolder);

        // Setup HTTP POST frame complete event handler.
        var frame = document.getElementById(frameId);
        
        frame.onreadystatechange = function()
        {
            if(this.readyState.toString() == "complete")
            {
                var result = Daedalus.Utility.Trim(document.frames[frameId].document.body.innerHTML);
                Daedalus.Ajax.HideLoadingPanel();
                document.body.removeChild(frame.parentNode);
                button.disabled = false;
                
                // Display error
                if(result.length != 0)
                {
                    var errorPanel = content.insertBefore(document.createElement("div"), content.childNodes[0]);
                    errorPanel.className = "ErrorMessage";
                    errorPanel.innerHTML = resumeMissingError;
                    return;
                }
                else
                {
                    $("firstName").value = "";
                    $("lastName").value = "";
                    $("email").value = "";
                    $("coverLetter").value = "";
                }
                
                ApplicationManager.HideForm(button);
                alert("Thank you for submitting your resume.");
            }
        }

        frame.onload = function()
        {
            var result = Daedalus.Utility.Trim(this.contentDocument.body.innerHTML);

            function removeUploadFrame()
            {
                Daedalus.Ajax.HideLoadingPanel();
                //document.body.removeChild(frame.parentNode);
                button.disabled = false;

                // Display error
                if(result.length != 0)
                {
                    var errorPanel = content.insertBefore(document.createElement("div"), content.childNodes[0]);
                    errorPanel.className = "ErrorMessage";
                    errorPanel.innerHTML = resumeMissingError;
                    return;
                }
                else
                {
                    $("firstName").value = "";
                    $("lastName").value = "";
                    $("email").value = "";
                    $("coverLetter").value = "";
                }

                ApplicationManager.HideForm(button);
                alert("Thank you for submitting your resume.");
            }

            setTimeout(removeUploadFrame, 200);
        }

        form.encoding = "multipart/form-data";
        form.target = frameId;
        form.submit();
        
        button.disabled = true;
        Daedalus.Ajax.ShowLoadingPanel();
    }

})();