/* JavaScript Document [j_form_validation.js]
	Author: Steve Robbins & Claudio Nunez Jr.
	Entity: Rayhawk Corporation
	Copyright: 2011
	Requirements: jQuery [core: current release].
	Original Creation Date: 05.31.2011
	Last Update On: 05.31.2011
	Description:  Clears input upon focus event only if default value exists; returns to default value only if input is left blank upon blur event. */

$(document).ready(function() {
	
	$("input[type!='submit']").each(function() {
							   
		var defaultVal = $(this).attr("alt");
		
		if ($(this).attr("value") != defaultVal) {
			
			$(this).removeClass("required");
		}
		
		$(this).focus(function() {
			
			if ($(this).attr("value") == defaultVal || $(this).attr("value").indexOf(defaultVal) >= 0) {
				
				$(this).val("");
				$(this).addClass("required");
				$(this).removeClass("error");
			}
		}).keyup(function(){
			
			validatePromoSignup($(this));
		}).click(function(){
			
			validatePromoSignup($(this));
		}).blur(function() {
			
			if ($(this).val() == "") {
				
				$(this).val(defaultVal);
			}
		});
	});
});

function validatePromoSignup(input) {
	
	var inputName = input.attr("name");
	
	switch (inputName) {
		
		case "email":
			
			checkEmail(input);
			break;
			
		case "phone":
			
			checkPhone(input);
			break;
			
		case "captchaInput":
			
			checkCaptcha(input);
			break;
			
		default:
			
			checkEmpty(input);
	}
}

function checkEmpty(input) {
	
	if (input.attr("value") == "") {
		
		invalid(input);
		input.nextUntil("input").filter(".jErrorPopout").find("p").text("Required.");
		
		return true;
	}
	
	valid(input);
	
	return false;
}

function checkEmail(input) {
	
	if (checkEmpty(input)) {
		
		return true;
	}
	
	if (input.attr("value").match(/^[a-zA-Z]\w+((\.|-)\w+)*\@\w+(\.[0-9a-zA-Z]+)*\.[a-zA-Z]{2,4}$/) == null) {
		
		invalid(input);
		input.nextUntil("input").filter(".jErrorPopout").find("p").text("Accepted format: one@email.com");
		
		return true;
	}
	
	valid(input);
	
	return false;
}

function checkPhone(input) {
	
	if (checkEmpty(input)) {
		
		return true;
	}
	
	if (input.attr("value").match(/^(1\s?(-\s?|\.\s?)?)?((\(\s?)?\d{3}(\s?\))?)\s?(-\s?|\.\s?)?\d{3}\s?(-\s?|\.\s?)?\d{4}(\s+.*)*$/) == null) {
		
		invalid(input);
		input.nextUntil("input").filter(".jErrorPopout").find("p").text("Accepted format: (###)###-### ext. ###");
		
		return true;
	}
	
	valid(input);
	
	return false;
}

function checkCaptcha(input) {
	
	if (checkEmpty(input)) {
		
		return true;
	}
	
	if (input.attr("value").length < 6) {
		
		invalid(input);
		input.nextUntil("input").filter(".jErrorPopout").find("p").text("Must be 6 characters.");
		
		return true;
	}
	
	valid(input);
	
	return false;
}

function invalid(input) {
	
	input.addClass("required");
	input.addClass("error");
	input.nextUntil("input").filter(".jCorrect").hide();
	input.nextUntil("input").filter(".jIncorrect").show();
	input.nextUntil("input").filter(".jErrorPopout").removeClass("noError");
	input.nextUntil("input").filter(".jErrorPopout").addClass("hasError");
}

function valid(input) {
	
	input.removeClass("required");
	input.removeClass("error");
	input.nextUntil("input").filter(".jCorrect").show();
	input.nextUntil("input").filter(".jIncorrect").hide();
	input.nextUntil("input").filter(".jErrorPopout").removeClass("hasError");
	input.nextUntil("input").filter(".jErrorPopout").addClass("noError");
}
