function validateForm(element) {
	// Show validating status
    showStatus('status', 'Validating', '1');

	var name = $F('name');
    var email = $F('email');
    var message = $F('message');
    var error = 0;

    if (!name) {
        $('name_error').innerHTML = 'Name Required';
        error = 1;
    }
    else {
        $('name_error').innerHTML = '';
        safeName = safe(name);
    }

    if (!email) {
        $('email_error').innerHTML = 'Email Required';
        error = 1;
    }
    else {
        var valid = /^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i;
        if (!valid.test(email)) {
            $('email_error').innerHTML = 'Invalid Email';
            error = 1;
        }
        else {
            $('email_error').innerHTML = '';
            safeEmail = safe(email);
        }
    }

    if (!message) {
        $('message_error').innerHTML = 'Message Required';
        error = 1;
    }
    else {
        $('message_error').innerHTML = '';
        safeMessage = safe(message);
    }

    if (!error) {
        //setTimeout("showStatus('status', 'Sending Email', '1')", 500);
        showStatus('status', 'Sending Email', '1');
        sendEmail(safeName, safeEmail, safeMessage);
    } else {
		setTimeout("hideStatus('status')",800);
	}
}

function safe(str) {
    var invalid = "/(\r|\n|%0a|%0d|Content-Type:|bcc:|to:|cc:)/i";
    var reg = new RegExp(invalid);
    return str.replace(reg, '');
}

function showStatus(elem, str, img) {
    $(elem).style.display = 'block';
    var html = str;
    if (img) {
        html += '... <img src="images/loading_blue.gif" alt="' + str + '..." title="' + str +'" />';
    }
    $(elem).innerHTML = html;
}

function hideStatus(elem) {
    $(elem).style.display = 'none';
    $(elem).innerHTML = '';
}

function sendEmail(name, email, message) {
	// Disable Send button
	$('submit').disabled = true;
    var url = 'ajaxContact.php';
    var parms = 'n=' + name + '&e=' + email + '&m=' + message;
    var meth = 'post';

    // This should call our email script and update our 
    // status div with a success or failure message
    new Ajax.Updater(
                        'status',
                        url,
                        {
                            method: meth,
                            parameters: parms
                        }
                    );

}

function textAreaCount() {
    try {
		var count = $('count');
		count.style.display = 'block';
		count.innerHTML = '<label for="count">&nbsp;</label>';
		count.innerHTML += '<span><input readonly type="text" name="countdown" id="countdown" size="3" value="1000"/> characters left</span>';
		count.innerHTML += '(Maximum characters: 1000)';
		var message = $('message');
		addEvent(message, 'keydown', checkLength, false);
		addEvent(message, 'keyup', checkLength, false);
    }
    catch(e) {}
}

function checkLength() {
	var limit = 1000;
	var message = $('message');
	var count = $('countdown');
	if (message.value.length > limit) {
		message.value = message.value.substring(0, limit);
	} else {
		count.value = limit - message.value.length;
	}
}

function contactForm() {
    try {
        var formElement = $('contactForm');
        addEvent(formElement, 'submit', validateForm, false);
        formElement.onsubmit = function() { return false; }
    }
    catch(e) {}
}

addEvent(window, 'load', textAreaCount, false);
addEvent(window, 'load', contactForm, false);