﻿////////////////////////////////////////////////////////////////////////////////////
// ALL CODE, PHOTOS, AND CONTENTS COPYRIGHT (C) 2004-2007 NANCY HELLSTEN PHOTOGRAPHY
// All rights reserved. Using materials on this site without prior written 
// permission is expressly forbidden.
////////////////////////////////////////////////////////////////////////////////////

var req;

function submitInBackground() {
    try {
        var frm = document.contactForm;
        var data = 
            "name=" + escape(frm.name.value) +
            "&email=" + escape(frm.email.value) +
            "&message=" + escape(frm.message.value) +
            "&fromWhere=" + escape(frm.fromWhere.value) +
            "&month=" + escape(frm.month.value) +
            "&day=" + escape(frm.day.value) +
            "&year=" + escape(frm.year.value) +
            "&venue=" + escape(frm.venue.value) +
            "&city=" + escape(frm.city.value) +
            "&time=" + escape(frm.time.value) +
            "&valid=yes&bkgnd=yes";
        req.onreadystatechange = reqHandler;
        req.open("POST", "contact.aspx", true);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.send(data);
    } catch (e) {
        showDialog("An error occured", "An error occured when submitting the form. Please contact me via email instead. " + e.message, false);
        disableClose(false);
    }
}

function reqHandler() {
    try {
        if (req.readyState == 4) {
            if (req.status == 200) {
                if (req.responseText == '<result code="OK" />') {
                    showDialog("Your form has been submitted", "A copy of the message has been emailed to the address that you entered. Thank you for contacting Nancy Hellsten Photography.", false);
                } else {
                    var errorExp = /<result code="ERROR">(.*)<\/result>/;
                    var error = "";        
                    var matches = req.responseText.match(errorExp);
                    if (matches && matches.length == 2)
                        error = matches[1];
                    showDialog("Sending the message failed", "We apologize for the inconvenience. Please email or call instead. " + error, false);
                }
            } else {
                showDialog("An error occured", "Could not submit form in background. Reverting to form submit. The server returned an error: " + req.status, false);
                document.contactForm.submit();
            }
            disableClose(false);
        }
    } catch (e) {
        showDialog("An error occured", "Could not process the server response. Please contact me via email instead. " + e.message, false);
        disableClose(false);
    }
}

function submitForm() {
    req = null;
    disableSubmit(true);
    disableClose(true);
    try {
        try {
            if (window.XMLHttpRequest) {
                req = new XMLHttpRequest();
            } else if (window.ActiveXObject) {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            }
            if (req) {
                showDialog("Please wait", "Submitting your message", true);
                submitInBackground(req);
            }
            else {
                throw new Error("Could not create XML HTTP object.");
            }
        } catch (e) {
            showDialog("An error occured", "Could not submit form in background. Reverting to form submit. " + e.message, false);
            document.contactForm.action = "contact.aspx";
            document.contactForm.valid.value = "yes";
            document.contactForm.submit();
            disableClose(false);
        }
    } catch (e) {
        showDialog("An error occured", 'Could not submit the contact form! Please contact me via email instead. ' + e.message, false);
        disableClose(false);
    }
}

function disableSubmit(disable) {
    document.getElementById('submitButton').disabled = disable;
}

function disableClose(disable) {
    document.getElementById('dialogButton').disabled = disable;
}

function hideDialog() {
    document.getElementById("dialog").style.visibility = 'hidden';
    disableSubmit(false);
}

function showDialog(header, body, center) {    
    document.getElementById("dialogHeader").innerHTML = header;
    document.getElementById("dialogText").innerHTML = body;
    document.getElementById("dialogText").style.textAlign = center ? 'center' : 'left';
    document.getElementById("dialog").style.visibility = 'visible';
}