// file-bin/js/contact.js

$(function() {
	var emailRegEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	
	// Generic blur and focus handlers
	$('#contactUs .field').each(function() {		
		if ($(this).attr('value').length < 1) {
			$(this).update($(this).attr('title'));
		}
		
		$(this).focus(function(event) {
			if ($(this).attr('title') == $(this).attr('value')) {		
				$(this).update('');
				$(this).addClass('active');
			}
		});
		
		$(this).blur(function(event) {
			if ($(this).attr('value').length < 1) {
				$(this).update($(this).attr('title'));
				$(this).removeClass('active');
			}
		});
	});
	
	/**
	 * blur handlers for: [contact, email, message, security]
	 */
	$('#contact').blur(function() {					
		if ($('#contact').val().length >= 3 && $('#contact').val() != $('#contact').attr('title'))
			$('#contact').swapClasses('valid');
		else
			$('#contact').swapClasses('error');
	});
	$('#email').blur(function() {					
		if (emailRegEx.test($('#email').val()))
			$('#email').addClass('valid');
		else
			$('#email').swapClasses('error');
	});
	$('#message').blur(function() {
		if ($('#message').val().length >= 3 && $('#message').val() != $('#message').attr('title'))
			$('#message').swapClasses('valid');
		else
			$('#message').swapClasses('error');
	});
	$('#security').blur(function() {					
		if ($('#security').val() == 'Blue' || $('#security').val() == 'blue')
			$('#security').swapClasses('valid');
		else
			$('#security').swapClasses('error');
	});
	
	$('#submitter').click(function(event) {
		var errors = false;
		var errArray = new Array();
		event.preventDefault();	
		
		/**
		 * Validate form fields: [contact, email, message, security]
		 */
		if ($('#contact').val().length < 3 || $('#contact').val() == $('#contact').attr('title')) {
			errors = true;
			errArray[0] = 'contact';
			$('#contact').swapClasses('error');
		}
			
		if (emailRegEx.test($('#email').val()) == false) {
			errors = true;
			errArray[1] = 'email';
			$('#email').swapClasses('error');
		}

		if ($('#message').val().length < 3 || $('#message').val() == $('#message').attr('title')) {
			errors = true;
			errArray[2] = 'message';
			$('#message').swapClasses('error');
		}
		
		if ($('#security').val() != 'Blue' && $('#security').val() != 'blue') {
			errors = true;
			errArray[3] = 'security';
			$('#security').swapClasses('error');
		}
		
		if ($('#phone').val() == $('#phone').attr('title') && !errors)
			$('#phone').val('');
		
		
		if (!errors) {
			// Process Data
			$.post(
				"/file-bin/scripts/contact.process.php", 
				$("#contactUs").serialize(),
				function(response) {
					var message = null;
					var info = response.data;
					var notificationElem = $('<div id="notification"></div>');
					
					// Set display to none and inject
					notificationElem.css('display', 'none');
					$('body').prepend(notificationElem);

					//console.log(response.CODE);
					if (response.CODE == '0') {
						message = '<h5>Thank you ' + info.contact + ' for your inquery!</h5>';
						message += '<p>A copy of your request is being sent to <span class="green">' + info.email + '</span> for your records.</p>';
						message += '<p>If you do not receive your email receipt in the next 6 minutes, check your junk mail.</p>';
					}
					else {
						message = '<h5>Oops!</h5>';
						message += '<p>There was an issue outside of your control.  Please, try submitting your request again in just a few moments.</p>';
					}
										
					$('#notification').html(message);
					$('#notification').fadeIn('slow').animate({dummy: 1}, 6000).fadeOut('slow');
					
					window.setTimeout((function() {
							$('#contactUs .field').each(function() {
								if ($(this).attr('type') == 'textarea')
									$(this).html($(this).attr('title'));
								else
									$(this).val($(this).attr('title'));
								
								if ($(this).hasClass('error'))
									$(this).removeClass('error');
								
								if ($(this).hasClass('valid'))
									$(this).removeClass('valid');
							});
							$('#notification').remove();
							$('#contactUs').focus();
						}),
						7000
					);
				},
				'json'			
			);
		}
	});
});

$.fn.swapClasses = function(className) {
	if (!this.hasClass(className)) {
		this.addClass(className);
	
		if (className == 'valid')
			this.removeClass('error');
		else
			this.removeClass('valid');
	}
}

/*
 * Updates the input fields value|html
 * Depending on type
 */
$.fn.update = function(value) {
	switch(this.attr('type')) {
		case 'textarea':
			this.html(value);
			break;
		case 'text':
		default:
			this.attr('value', value);
			break;
	}
}

