HUDHRE.validation = (function()
{	
	var clear_input_text = function(target_el)
	{
		$(document).ready(function() {
  			$(target_el).click(function(){
				if(   this.value == "Enter a Search Term")
				{
						this.value = "";
				}
				
			})
		});
	};

	var clear_default_text = function(form){
		var input = $('#'+form.id +' input[name="keywords"]');
		var url_attr =input.val();
		
		if(url_attr =="Enter a Search Term")
		{
			input.val("");
		}				
	};
		
	var validate_homepage_faq_search = function(target_form){
			 $(document).ready(function(){
				$(target_form).validate({
						submitHandler: function(form) {
						   	clear_default_text(form);
							form.submit();
						 },
					   	errorLabelContainer: "#dateWarning",
							errorClass:"warning",
						validClass:"valid",
						onsubmit:true,
						rules: {
							keywords:{
								maxlength:100,
								required:true
							}
						},
						 messages: {
							 keywords: {
      							 maxlength: "Please limit FAQ Keyword to 100 characters",
							     required: "Please enter a FAQ Keyword"
     						}
						 }
					});		 
				});
	};
	var validate_homepage_resource_search = function(target_form){
			 $(document).ready(function(){
				$(target_form).validate({
						submitHandler: function(form) {
						   	clear_default_text(form);
							form.submit();
						 },
					   	errorLabelContainer: "#dateWarning",
						errorClass:"warning",
						validClass:"valid",
						onsubmit:true,
						rules: {
							keywords:{
								maxlength:100,
								required:true
							}
						},
						 messages: {
							 keywords: {
      							 maxlength: "Please limit Resource Keyword to 100 characters",
							     required: "Please enter a Resource Keyword"
     						}
						 }
					});		 
				});
	};
	
	var validate_banner_quick_search = function(target_form){
		$(document).ready(function(){
				$(target_form).validate({
						submitHandler: function(form) {
								clear_default_text(form);
								form.submit();
						},					
						errorClass:"warning",
						onsubmit:true,	
						rules: {
							keywords:{
								required:true,
								maxlength:100
							}
						},
						messages:{
							keywords:{
								required:"Please enter a search term",
  							    maxlength: "Please limit to 100 characters"
							}
						}	
				});						
		});
	};
	
	//private helper method
	var select_at_least_one=function(target_form){
		var flag= false;
		$(target_form+" select").each(function(inx,e){
			if($(e).val() != 0){flag= true}});
		var kwrd = $(target_form+" #keywords").val();
		if(!flag && (kwrd.length == 0 ||kwrd == "Enter a Search Term")){
			return false;
		}
		else{
			return true;
		}
	};
	
	var select_at_least_one_faq=function(target_form){
		var flag= false;
		$(target_form+" select").each(function(inx,e){
			if($(e).val() != 0){flag= true}});
		var kwrd = $(target_form+" #keywords").val();	
		var faqID = $(target_form+" #faqID").val();
		if(!flag && (kwrd.length == 0 ||kwrd == "Enter a Search Term") &&
					faqID.length ==0){
			return false;
		}
		else{
			return true;
		}
	};

	var extend_validator=function(){
		$.validator.addMethod("date", function(value, element) {//extend with date validation
	            	return this.optional(element) || /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/.test(value);
			     }, "MM/DD/YYYY");
	     $.validator.addMethod('integer', function(value, element, param) {
            return this.optional(element) ||(value != 0) && (value == parseInt(value, 10)) && (value > 0);
        }, 'Please enter a non zero integer value!');
	};
	
	var validate_find_a_resource_advanced_search = function(target_form){
			 $(document).ready(function(){
				 
				extend_validator();//add custom validation functions
				
				$(target_form).validate({
						submitHandler: function(form) {
						   	clear_default_text(form);
						  if(!select_at_least_one(target_form)){
								$('td#dateWarning.warning').show().append
								('<label class="warning" for="datefrom" generated="true">Please enter a	Resource Keyword or select at least one of the dropdowns</label>');
								return false}
							form.submit();
						 },
					   	errorLabelContainer: "#dateWarning",
						errorClass:"warning",
						validClass:"valid",
						onsubmit:true,
						rules: {
							keywords:{
								maxlength:100
							},
							dateto:{
								date: true
							},
							datefrom:{
								date: true
							}
						},
						 messages: {
							dateto:{
								date:"Please enter a 'TO' date in format MM/DD/YYYY"
							},
							datefrom:{
								date:"Please enter a 'FROM' date in format MM/DD/YYYY"
							},
							 keywords:{
								maxlength:"Please limit Resource Keywords to 100 characters"
							 }
						   }
					});		 
				});
	};
	
	var validate_get_an_answer_advanced_search = function(target_form){
			 $(document).ready(function(){
				 extend_validator();//add custom validation functions
				
				$(target_form).validate({
						submitHandler: function(form) {
						   	clear_default_text(form);
						  if(!select_at_least_one_faq(target_form)){
								$('td#dateWarning.warning').show().append
								('<label class="warning" for="datefrom" generated="true">Please enter an FAQ ID, FAQ Keyword or select at least one of the dropdowns</label>');
								return false}
							form.submit();
						 },
					   	errorLabelContainer: "#dateWarning",
						errorClass:"warning",
						validClass:"valid",
						onsubmit:true,
						rules: {
							keywords:{
								maxlength:100
							},
							dateto:{
								date: true
							},
							datefrom:{
								date: true
							},
							faqID:{
								integer:true
							}
						},
						 messages: {
							dateto:{
								date:"Please enter a 'TO' date in format MM/DD/YYYY"
							},
							datefrom:{
								date:"Please enter a 'FROM' date in format MM/DD/YYYY"
							},
							 keywords:{
								maxlength:"Please limit FAQ Keywords to 100 characters"
							 },
							 faqID:{
								integer:"Please enter a valid non negative numeric faq ID"
							}
						   }
					});		 
				});
	};
	
	var validate_helpdesk_issue = function(target_form){
		$(document).ready(function(){
	 
			extend_validator();//add custom validation functions

			$(target_form).validate({
			  errorElement: "strong",
				errorClass:"warning",
				errorPlacement: function(error, element) {
					error.prependTo( element.parent() );
				},
				validClass:"valid",
				onsubmit:true,
				rules: {
					date_to:{
						date: true
					},
					date_from:{
						date: true
					},
					file_path:{
						accept: "xls|xlsx|doc|docx|pdf|gif|jpg|png|ppt|pptx|zip|csv"
					}
					
				},
				messages: {
					date_to:{
						date:"Please enter a 'TO' date in format MM/DD/YYYY"
					},
					date_from:{
						date:"Please enter a 'FROM' date in format MM/DD/YYYY"
					}
				}
			});		 
		});
	};
	
    return{
		validate_banner_quick_search:function(target_form){
			validate_banner_quick_search(target_form);	
		},
		validate_homepage_resource_search:function(target_form){
			validate_homepage_resource_search(target_form);
		},
		validate_homepage_faq_search:function(target_form){
			validate_homepage_faq_search(target_form);
		},
		clear_input_text:function(target_form){
			clear_input_text(target_form);
		},
		validate_find_a_resource_advanced_search:function(target_form){
			validate_find_a_resource_advanced_search(target_form);
		},
		validate_get_an_answer_advanced_search:function(target_form){
			validate_get_an_answer_advanced_search(target_form);
		},
		validate_helpdesk_issue:validate_helpdesk_issue
    }
})();


