/*
 * Copyright PyXLL Ltd.
 */

var pyxll = new function() {

    var validateEmail = function(email) {
        if (email == null || email == "") {
            return false;
        }
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        return emailReg.test(email);
    };

    var validateDownloadForm = function() {
        var show = function(x) {
            var element = document.getElementById(x);
            element.style.visibility = "visible";
        };
    
        var hide = function(x) {
            var element = document.getElementById(x);
            element.style.visibility = "hidden";
        };

        var form = document.forms["download"];
        var name = form["name"].value;
        var company = form["company"].value;
        var email = form["email"].value;
        var eula = form["eula"].checked;
        var areErrors = false;

        if (name == null || name == "") {
            areErrors = true;
            show("name_error");
        }
        else {
            hide("name_error");
        }

        if (company == null || company == "") {
            areErrors = true;
            show("company_error");
        }
        else {
            hide("company_error");
        }


        if (!validateEmail(email)) {
            areErrors = true;
            show("email_error");
        }
        else {
            hide("email_error");
        }

        if (!eula) {
            areErrors = true;
            show("eula_error");
        }
        else {
            hide("eula_error");
        }

        var failedElement = document.getElementById("validation_failed");
        if (areErrors) {
            failedElement.style.visibility = "visible";
            failedElement.style.display = "block";
        }
        else {
            failedElement.style.visibility = "hidden";
            failedElement.style.display = "none";
        }

        return !areErrors;
    };

    var downloadURL = function() {
        var form = document.forms["download"];
        var name = encodeURIComponent(form["name"].value);
        var company = encodeURIComponent(form["company"].value);
        var email = encodeURIComponent(form["email"].value);
        var pyversion = encodeURIComponent(form["pyversion"].value);
        var pyxllversion = encodeURIComponent(form["pyxllversion"].value);
        var eula = "";
        var mailoptout = "";
        if (form["eula"].checked) { eula = "on"; }
        if (form["mailoptout"].checked) { mailoptout = "on"; }
        return "_static/php/download.php?name=" + name + "&company=" + company + "&email=" + email + "&pyversion=" + pyversion + "&pyxllversion=" + pyxllversion + "&eula=" + eula + "&mailoptout=" + mailoptout;
    };

    this.download_onsubmit = function() {
        if (!validateDownloadForm()) {
            return false;
        }

        var dl_form = document.getElementById("download_form");
        var dl_result = document.getElementById("download_result");
        var dl_link = document.getElementById("download_link")
        var dl_iframe = document.getElementById("download_iframe")
        var url = downloadURL();

        dl_result.style.visibility = "visible";
        dl_result.style.display = "block";
        dl_form.style.visibility = "hidden";
        dl_form.style.display = "none";

        dl_link.href = url;
        dl_iframe.src = url;

        window.scroll(0, 0);

        return false;
    };

    this.download_showform = function() {
        var dl_form = document.getElementById("download_form");
        var dl_result = document.getElementById("download_result");
        dl_form.style.visibility = "visible";
        dl_form.style.display = "block";
        dl_result.style.visibility = "hidden";
        dl_result.style.display = "none";

        /* clear the iframe */
        var dl_iframe = document.getElementById("download_iframe")
        dl_iframe.src = "about:blank";
        return;
    };

    this.make_resizable = function(id, inner) {
        var element = $("#" + id);
        
        /* get the initial size and set the inner to fill the div */
        var height = element.height();
        var width = element.width();
        inner.height = "100%";
        inner.width = "100%";

        /* make it resizable */
        element.resizable();
        
        /* restore to the original size */
        element.height(height);
        element.width(width);
    };
};

