// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults





// onready for Contact page

$(function() {

	// Only run on about page
	if (page_name != 'misc_contact' && page_name != 'misc_contact_send') return false;
	
	// Init the reserve video form
	inputdefaults_init($("#contact form"));
	$("#contact form").submit(contactform_submit);
	
	// Hide email address images [Rails will add actual mailto: links for JS users]
	$(".email_hide").hide();
	
	
});




function inputdefaults_init ($form) {
	
	$form.find(":input.defaultvalue").each(function() {
		
		if ($(this).attr("value")) {
			$(this).val($(this).attr("value"));
			$(this).css("color", "#a1a1a1").data("default", $(this).attr("value"))
			$(this).focus(function() {
				if ($(this).attr("value") == $(this).data("default") || $(this).attr("value") == "") {
					$(this).attr("value", "")
						.css("color", "#333");
				}
			}).blur(function() {
				if ($(this).attr("value") == $(this).data("default") || $(this).attr("value") == "") {
					$(this).css("color", "#888")
						.attr("value", $(this).data("default"));
				}
			});
		}
		
	});
	
}




// Submit the reserve video form via AJAX
var formElementsWrapped = false;
function contactform_submit () {
	
	var $form = $("#contact form");
	var $name = $("#contact_name");
	var $email = $("#contact_email");
	var $message = $("#contact_message");
	var $dontdoit = $('#contact_dontdoit');
	
	// Initialize wrapper divs for each field
	if (!formElementsWrapped) {
		$name.wrap('<div></div>');
		$email.wrap('<div></div>');
		$message.wrap('<div></div>');
		$dontdoit.wrap('<div></div>');
		formElementsWrapped = true; // Mark so we don't wrap 'em again
	}
	
	
	// now lets animate the closing of the form
	$form.height($form.height()).addClass("loader")
		.find(".form_innards").fadeOut(400, function() {
			// now submit the form
			$.ajax({
				type: "POST",
				url: "/contact/send.xml",
				dataType: "xml",
				data: ({'contact[name]': $name.val(),
						'contact[email]': $email.val(),
						'contact[message]': $message.val(),
						'contact[dontdoit]': $dontdoit.val()}),
				success: function() {
					// Form submission was successful...
					
					$form.fadeOut(400, function() {
						$(this).removeClass("loader")
						$(this).empty().append('<p class="notice">Your message has been sent. Thanks for reaching out.</p>').fadeIn(400);
					});
					
				},
				error: function(data) {
					// We hit an error...
					
					// First clear any existing 'fieldWithError' classes
					$name.parent().removeClass('fieldWithErrors');
					$email.parent().removeClass('fieldWithErrors');
					$message.parent().removeClass('fieldWithErrors');
					// And remove the email sending failed p
					$("#mailer_failed").remove();
					
					$(data.responseXML).find('error').each(function() {
						console.log("an error");
						// Give any error fields' container div the 'fieldWithErrors' class
						if ($(this).text() == "Name is invalid") $name.parent().addClass('fieldWithErrors');
						if ($(this).text() == "Email is invalid") $email.parent().addClass('fieldWithErrors');
						if ($(this).text() == "Message is invalid") $message.parent().addClass('fieldWithErrors');
						if ($(this).text() == "Dontdoit is invalid") $dontdoit.parent().addClass('fieldWithErrors');
					});
					
					if ($(data.responseXML).find('error').text() == "mailer_failed") {
						// Input validated but sending the email failed
						$form.prepend('<p class="error margbottom" id="mailer_failed">We\'re terribly sorry but our server has encountered an error sending your message. Try sending again or contacting us directly via email.</p>');
					}
					
					$form.find(".form_innards").fadeIn(400, function() {
						$form.removeClass("loader");
					});
				}
			});
		});
	
	return false;
}





/**
 * DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

function echeck(str) {

	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false;
	}

	if (str.indexOf(at,(lat+1))!=-1){
	    return false;
	}

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false;
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false;
	 }

	return true;
	
}
