//-----------------------------------------------------------------------------------------------------------------
function preloadImage(url) {
    var img = new Image();
    img.src = url;
}
//-----------------------------------------------------------------------------------------------------------------
function IsValidEmailAddress(value) {
    var pattern = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
    if (pattern.test(value)) {
        return true;
    } else {
        return false;
    }
}
//-----------------------------------------------------------------------------------------------------------------
function FormSubmit(formid) {
    var form = document.getElementById(formid);
    if (form != null) {
        var emailccaddress = "";
        var emailsubject = "";
        var emailtoaddress = "";
        var submitconfirmationtext = "";
        var submitfailuretext = "";
        var customform_requiredfieldmessage = document.getElementById("customform_requiredfieldmessage").value;
        var customform_invalidentry_emailaddress = document.getElementById("customform_invalidentry_emailaddress").value;

        var captcha = document.getElementById(formid + "captcha");
        if (captcha != null) {
            if (isblank(captcha.value)) {
                alert(customform_requiredfieldmessage);
                return false;
            }

            var oXMLHTTP = CrossBrowser_GetXMLHTTPRequest("ChallengeResponseImageValidate.aspx?UniqueID=" + formid + "&Code=" + captcha.value, null);
            var message = oXMLHTTP.responseXML.documentElement.getAttribute("message");
            var status = oXMLHTTP.responseXML.documentElement.getAttribute("status");

            if (status != "1") {
                var captcha_errormessage = document.getElementById(formid + "captcha_errormessage");
                alert(captcha_errormessage.value);
                var captchaimages = document.getElementsByName("captchaimage");
                for (var i = 0; i < captchaimages.length; i++) {
                    captchaimages[i].src = "ChallengeResponseImageSource.aspx?time=" + new Date().getTime();
                }
                captcha.value = "";
                return false;
            }
        }

        var nodes = form.getElementsByTagName("select");
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            var IsRequired = node.getAttribute("IsRequired");
            if (IsRequired == "1" && node.selectedIndex == 0) {
                alert(customform_requiredfieldmessage);
                return false;
            }
        }

        var nodes = form.getElementsByTagName("textarea");
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            var IsRequired = node.getAttribute("IsRequired");

            if (IsRequired == "1" && isblank(node.value)) {
                alert(customform_requiredfieldmessage);
                return false;
            }
        }

        var nodes = form.getElementsByTagName("input");
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            var IsRequired = node.getAttribute("IsRequired");
            var ValidationCode = node.getAttribute("ValidationCode");
            var Type = node.getAttribute("type");

            if (ValidationCode == "EMAILADDRESS") {
                if (!IsValidEmailAddress(node.value)) {
                    alert(customform_invalidentry_emailaddress);
                    return false;
                }
                else if (!isblank(node.value)) {
                    if (emailccaddress != '') {
                        emailccaddress = emailccaddress + ';';
                    }
                    emailccaddress = emailccaddress + node.value;
                }
            }
            
            if (IsRequired == "1") {
                switch (Type) {
                    case "text":
                        if (isblank(node.value)) {
                            alert(customform_requiredfieldmessage);
                            return false;
                        }
                        break;
                    case "radio":
                    case "checkbox":
                        var siblingNodes = document.getElementsByName(node.getAttribute("name"));
                        var ischecked = false;
                        for (var j = 0; j < siblingNodes.length; j++) {
                            if (siblingNodes[j].checked) {
                                ischecked = true;
                                break;
                            }
                        }
                        if (!ischecked) {
                            alert(customform_requiredfieldmessage);
                            return false;
                        }
                        break;
                    default:
                        break;
                }
            }
        }

        nodes = form.getElementsByTagName("INPUT");
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            var type = "textbox";
            if (node.getAttribute("type") != null)
                type = node.getAttribute("type");

            if (type.toUpperCase() == "HIDDEN") {
                var name = node.getAttribute("name");
                switch (name.toLowerCase()) {
                    case "emailsubject":
                        emailsubject = node.value;
                        break;
                    case "emailtoaddress":
                        emailtoaddress = node.value;
                        break;
                    case "submitconfirmationtext":
                        submitconfirmationtext = node.value;
                        break;
                    case "submitfailuretext":
                        submitfailuretext = node.value;
                        break;
                }
            }
        }

        ReplaceElements(form);

        var EmailXML = new getXMLObject("<email/>");
        var documentNode = EmailXML.documentElement;
        xml_setAttribute(EmailXML, documentNode, "subject", emailsubject);
        xml_setAttribute(EmailXML, documentNode, "toaddress", emailtoaddress);
        xml_setAttribute(EmailXML, documentNode, "submitconfirmationtext", submitconfirmationtext);
        xml_setAttribute(EmailXML, documentNode, "submitfailuretext", submitfailuretext);
        xml_setAttribute(EmailXML, documentNode, "ccaddress", emailccaddress);
        xml_setCDATA(EmailXML, documentNode, form.innerHTML);

        var oXMLHTTP = CrossBrowser_GetXMLHTTPRequest("FormSubmit.aspx", EmailXML);
        var status = oXMLHTTP.responseXML.documentElement.getAttribute("status");
        var message = oXMLHTTP.responseXML.documentElement.getAttribute("message");

        alert(message);
    }
}

//-----------------------------------------------------------------------------------------------------------------
function ReplaceElements(form) {
    var foundNode = true;

    var captchacontainer = document.getElementById(form.getAttribute("id") + "captchacontainer");
    if (captchacontainer != null) {
        captchacontainer.innerHTML = "";
    }
    while (foundNode == true) {
        foundNode = false;
        var nodes = form.getElementsByTagName("INPUT");
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            var newelement = document.createElement("span");
            var type = "textbox";
            if (node.getAttribute("type") != null)
                type = node.getAttribute("type");

            var newelement = null;
            switch (type.toUpperCase()) {
                case "CHECKBOX":
                    foundNode = true;
                    if (node.checked)
                        newelement = document.createTextNode("[X] ");
                    else
                        newelement = document.createTextNode("[] ");

                    node.parentNode.replaceChild(newelement, node);
                    break;
                case "RADIO":
                    foundNode = true;
                    if (node.checked)
                        newelement = document.createTextNode("(X) ");
                    else
                        newelement = document.createTextNode("() ");

                    node.parentNode.replaceChild(newelement, node);
                    break;
                case "TEXT":
                case "TEXTBOX":
                case "PASSWORD":
                    foundNode = true;
                    newelement = document.createTextNode("[" + node.value + "]");
                    node.parentNode.replaceChild(newelement, node);
                    break;
                case "HIDDEN":
                case "BUTTON":
                case "SUBMIT":
                case "RESET":
                case "IMAGE":
                case "FILE":
                default:
                    foundNode = true;
                    newelement = document.createTextNode("");
                    node.parentNode.replaceChild(newelement, node);
                    break;
            }
            break;
        }

        var nodes = form.getElementsByTagName("SELECT");
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            var newelement = document.createTextNode("[" + node.options[nodes[i].selectedIndex].value + "]");
            node.parentNode.replaceChild(newelement, node);
            foundNode = true;
            break;
        }

        var nodes = form.getElementsByTagName("TEXTAREA");
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            var newelement = document.createTextNode("[" + node.value + "]");
            node.parentNode.replaceChild(newelement, node);
            foundNode = true;
            break;
        }
    }
}
