$(document).ready(function(){
	var form = $("#contactusForm");
	
	var regemail = $("#regemail");
	var regemailInfo = $("#regemailInfo");
	
	var subject = $("#subject");
	var subjectInfo = $("#subjectInfo");
	
	var comments = $("#comments");
	var commentsInfo = $("#commentsInfo");
	
	
	//On blur
	regemail.blur(validateRegEmail);
	subject.blur(validateSubject);
	comments.blur(charCounterForMessage);
	//On key press
	//regemail.keyup(validateRegEmail);
	subject.keyup(validateSubject);
	comments.keyup(charCounterForMessage);
	
	
	//On Submitting
	form.submit(function(){
		if(validateSubject() & validateRegEmail() & charCounterForMessage())
			return true
		else
			return false;
	});
	
	
	//validation functions
	function validateRegEmail(){
		//testing regular expression
		var a = $("#regemail").val();
		var filter = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		//if it's valid email
		
		var s=regemail.val();
     	var i;
        var returnString = "";
   
     	for (i = 0; i < s.length; i++){   
              var c = s.charAt(i);
        		if (c == " " ){
   					regemail.addClass("error");
   					regemailInfo.text("White Spaces are  not allowed.");
   					regemailInfo.addClass("error5");
   					return false;
        		}
        }
		
		if(regemail.val().length == 0){
			regemail.addClass("error");
			regemailInfo.text("Please enter an email address.");
			regemailInfo.addClass("error5");
			return false;
		} else if(filter.test(a)){
			regemail.removeClass("error");
			regemailInfo.text("");
			regemailInfo.removeClass("error5");
			return true;
		}
		//if it's NOT valid
		else{
			regemail.addClass("error");
			regemailInfo.text("Please enter a valid email address.");
			regemailInfo.addClass("error5");
			return false;
		}
	}
	
	
	//validation functions
	function validateSubject(){
		if(subject.val().length == ''){
			subject.addClass("error");
			subjectInfo.text("Please enter subject.");
			subjectInfo.addClass("error5");
			return false;
		} else if(subject.val().length > '100'){
			subject.addClass("error");
			subjectInfo.text("Title is not more then 100 characters.");
			subjectInfo.addClass("error5");
			return false;
		} else{
			subject.removeClass("error");
			subjectInfo.text("");
			subjectInfo.removeClass("error5");
			return true;
		}
	}

	function validatecontactusMessage(){
		if(comments.val().length == ''){
			comments.addClass("error");
			commentsInfo.text("Please enter message.");
			commentsInfo.addClass("error5");
			return false;
		}else if(comments.val().length > '500'){
			comments.addClass("error");
			commentsInfo.text("Message is not more then 500 characters.");
			commentsInfo.addClass("error5");
			return false;
		} else{
			comments.removeClass("error");
			commentsInfo.text("");
			commentsInfo.removeClass("error5");
			return true;
		}
	}
	
	
	function charCounterForMessage(){
		var minlimit=0;
		var maxlimit=0;
		var maxlimit1=500;
		var textfield = document.getElementById("comments");
		if (textfield.value.length > maxlimit1) { //count for max characters first
 			textfield.value = textfield.value.substring(0, maxlimit1 );
            document.getElementById('commentsInfo').innerHTML = "<span  class='error5'>Limit 500 Characters, " + (maxlimit1 - textfield.value.length) + "&nbsp;Remaining.</span>";
   			return false;
		}
		else if (textfield.value.length < 1){
  			commentsInfo.addClass("error5");
			comments.addClass("error");
			
 			document.getElementById('commentsInfo').innerHTML = "<span  class='normal'>Limit 500 Characters, " + (maxlimit1 - textfield.value.length) + "&nbsp;Remaining.</span>";
 		
   			return false;
  			
    	}
	    else if (textfield.value.length < 500){
  			commentsInfo.removeClass("error");
			comments.removeClass("error");
 			document.getElementById('commentsInfo').innerHTML = "<span  class='normal'>Limit 500 Characters, " + (maxlimit1 - textfield.value.length) + "&nbsp;Remaining.</span>";
 		
   			return true;
  			
	}
	}

});
