/* 
* validate 0.2 - jQuery Form Validation - USED FOR NO LANDING PAGES
* Copyright (c) 2009, Michael Eisenbraun
* Date: 2009-10-30 rev 11
*/

function validatePhonePart1(strValue) {
	var objRegExp = /^(\d{3})$/;
	return objRegExp.test(strValue);
}

function validatePhonePart2(strValue) {
	var objRegExp = /^(\d{3})-(\d{3})$/;
	return objRegExp.test(strValue);
}

function validatePhonePart3(strValue) {
	var objRegExp = /^(\d{4})$/;
	return objRegExp.test(strValue);
}

function validateDatePart1(strValue) { 
	var objRegExp = /^(0[1-9]|1[012])$/; /*(\d{2})*/
	return objRegExp.test(strValue);
}

function validateDatePart2(strValue) {
	var objRegExp = /^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/;/*(\d{2})\/(\d{2})*/
	return objRegExp.test(strValue);
}

function validateDatePart3(strValue) {
	var objRegExp = /^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$/;/*(\d{2})\/(\d{2})\/(\d{4})*/
	return objRegExp.test(strValue);
}


$.fn.test = function() { 
	var isValid = false;
 	var val = $(this).val(); 
 	
	if ($(this).hasClass('alphaNum')) {
		isValid = validateAlphaNum(val);
	} else if ($(this).hasClass('alpha')) {
		isValid = validateAlpha(val);
	} else if ($(this).hasClass('tiny')) {
		isValid = validateTiny(val);
	} else if ($(this).hasClass('num')) {
		isValid = validateNum(val);
	} else if ($(this).hasClass('email')) {
		isValid = validateEmail(val);
	} else if ($(this).hasClass('zip')) {		
		isValid = validateZip(val);
	} else if ($(this).hasClass('ssn')) {
		isValid = validateSSN(val);
	} else if ($(this).hasClass('date')) {
		isValid = validateDatePart1(val); 
		if(isValid) {
			$(this).val($(this).val()+'/');  
			isValid = false;
		}
		
		isValid = validateDatePart2(val);
		if(isValid) {
			$(this).val($(this).val()+'/');  
			isValid = false; 
		}
		
		isValid = validateDatePart3(val);
	} else if ($(this).hasClass('fullDate')) {
		isValid = validateDatePart3(val);
	} else if ($(this).hasClass('time')) {
		isValid = validateTime12hr(val);
	} else if ($(this).hasClass('msg')) { 
		isValid = validateMsg(val); 
	} else if ($(this).hasClass('phone')) { 
		isValid = validatePhonePart1(val);
		if(isValid) {
			$(this).val($(this).val()+'-');  
			isValid = false;
		}
		
		isValid = validatePhonePart2(val);
		if(isValid) {
			$(this).val($(this).val()+'-');  
			isValid = false; 
		}
		
		isValid = validatePhonePart3(val);
	} else if($(this).hasClass('phone1') || $(this).hasClass('phone2') || $(this).hasClass('phone3')) { 
	
		if (validatePhonePart1($('.phone1').val()) && validatePhonePart1($('.phone2').val()) && validatePhonePart3($('.phone3').val())) {
			isValid = true;
		}
		//	isValid = false;
	} 
	return isValid;	
}
	
	
$.fn.validate = function() { 
	var form = $(this); 
	var text = $("input:text.required", form); 
	var textarea = $("textarea.required", form); 
	var radio = $("input:radio.required", form);
	var checkbox = $("input:checkbox.required", form); 
	var select = $("select.required", form);
	var action = form.attr('action'); 

	text.keyup(function() { 	 	
	 	if($(this).test()) { 
			$(this).parent().removeClass('invalid').addClass('valid'); 
	 	} else { 
	 		$(this).parent().removeClass('valid').addClass('invalid'); 
	 	}
	});
	
	text.blur(function() { 
	 	if($(this).test()) { 
			$(this).parent().removeClass('invalid').addClass('valid'); 
			//alert("/mortgage/?section="+$(this).attr('id'));
			pageTracker._trackPageview(location.pathname+"?section="+$(this).attr('id')); 
	 	} else { 
	 		$(this).parent().removeClass('valid').addClass('invalid'); 
	 	}
	});
	
	textarea.keyup(function() { 
	 	if($(this).test()) { 
			$(this).parent().removeClass('invalid').addClass('valid'); 
	 	} else { 
	 		$(this).parent().removeClass('valid').addClass('invalid'); 
	 	}
	});
	
	textarea.blur(function() { 
	 	if($(this).test()) { 
			$(this).parent().removeClass('invalid').addClass('valid'); 
	 	} else { 
	 		$(this).parent().removeClass('valid').addClass('invalid'); 
	 	}
	});
	
	select.change(function() { 
		if($(this).val() == "" || $(this).val() == null) { 
			$(this).parent().removeClass('valid').addClass('invalid'); 
			pageTracker._trackPageview(location.pathname+"?section="+$(this).attr('id')); 
		} else { 
			$(this).parent().removeClass('invalid').addClass('valid');
		}
	});
	
	radio.click(function(){
		if($(this).val() == "" || $(this).val() == null) { 
			$(this).parent().removeClass('valid').addClass('invalid'); 
		} else { 
			$(this).parent().removeClass('invalid').addClass('valid');
		}
	});
	
	checkbox.click(function(){
		if(this.checked) { 
			$(this).parent().removeClass('invalid').addClass('valid'); 
		} else { 
			$(this).parent().removeClass('valid').addClass('invalid');
		}
	});
	
	
	$.fn.validateForm =  function () {
		var formValid = true; 
		var formErr = 0;
		var invalid = ''; 
		var phoneErr = false; 
		
		$("#error_msg").hide(); 

		if($('.phone1').length) { 
			$("#Phone").val($("#Phone_Area").val()+'-'+$("#Phone_Prefix").val()+'-'+$("#Phone_Number").val()); 
		}
		
		//validating text boxes
		for(var i=0; i<text.length; i++) { 
			if(!$(text.eq(i)).test()) { 
				$(text.eq(i)).parent().removeClass('valid').addClass('invalid'); 
			
				//exception for phone field with 3 inputs
				//fixes problem with 3 incomplete field being declared instead of 1. 
				if($(text.eq(i)).hasClass('.phone1') || $(text.eq(i)).hasClass('.phone2') ||  $(text.eq(i)).hasClass('.phone3')) {
					if(!phoneErr) { 
						formErr++; 
						phoneErr = true;
					}
				} else { 
					formErr++;
				}
				
				invalid += $(text.eq(i)).attr('id')+','; 
				formValid = false;
			}  else { 
				$(text.eq(i)).parent().removeClass('invalid').addClass('valid'); 
			}
		}
		
		//validating select boxes
		for(var j = 0; j<select.length; j++) { 
		//alert(select.eq(j).val());
			if(select.eq(j).val().length<2 || select.eq(j).val() == null) { 
				
				select.eq(j).parent().removeClass('valid').addClass('invalid'); 
				formErr++;
				invalid += $(select.eq(i)).attr('id')+','; 
				formValid = false;
			} else { 
				select.eq(j).parent().removeClass('invalid').addClass('valid'); 
			}
		}
		
		//validating textareas 
		for(var k=0; k<textarea.length; k++) { 
			if(!$(textarea.eq(k)).test()) { 
				$(textarea.eq(k)).parent().removeClass('valid').addClass('invalid'); 
				formErr++;
				invalid += $(textarea.eq(i)).attr('id')+','; 
				formValid = false;
			}  else { 
				$(textarea.eq(k)).parent().removeClass('invalid').addClass('valid'); 
			}				
		}
		
		//validating tinymce
		if($('#message_ifr').length) { 
			var tiny = $('#message_ifr').contents().find('#tinymce').text(); 
			if(tiny.length > $("#charMax").val()) {  
			 	$('#message_parent').parent().removeClass('valid').addClass('invalid'); 
			 	formErr++; 
			 	invalid += 'tinymce max'; 
			 	formValid = false; 
			 } else if(!validateTiny(tiny)) { 
			 	$('#message_parent').parent().removeClass('valid').addClass('invalid'); 
			 	formErr++; 
			 	invalid += 'tinymce format: '+tiny; 
			 	formValid = false; 
			 } else { 
			 	$('#message_parent').parent().removeClass('invalid').addClass('valid'); 
			 }
		}
		
		if(formErr) { 
			//alert(invalid);
			if($("#req_msg").length) { $("#req_msg").hide(); }
			//$("#error_msg").html("There are "+formErr+" incomplete required fields.").fadeIn(); 
		}
		
		return formValid; 
	}
		

	form.submit(function() { 
		return $(this).validateForm(); 
	});
	
//	$(this).validateForm(); 


}		


