// JavaScript Document

$.fn.formValidation=function(data){
	
	defaultOptions={
		formSubmit:false,
		resetBorderColor:"#343434",
		errStyle:false,
		resultHandler:true
	}
	
	defaultOptions=$.extend(defaultOptions, data);
	
	_errSpan=$("<div>").addClass("ERRDISPLAY").css({ display:"none" });
	
	if(typeof(defaultOptions.errStyle)=='boolean'){
		$(_errSpan).css({ fontSize:"12px" , color:"black" , backgroundColor:"#ffd6d6", padding:'5px', border:"solid 1px red" , marginLeft:"78px", display:"none" })
	}else if(typeof(defaultOptions.errStyle)=='string'){
		if( defaultOptions.errStyle.indexOf("#")==-1 && defaultOptions.errStyle.indexOf(".")==-1 ){
			$(_errSpan).css({ fontSize:"12px" , color:"black" , backgroundColor:"#ffd6d6", padding:'5px', border:"solid 1px red" , marginLeft:"78px", display:"none" })
		}else{
			if( defaultOptions.errStyle.indexOf(".")==-1){
				$(_errSpan).attr("id",defaultOptions.errStyle.substring(1));
			}else if(defaultOptions.errStyle.indexOf("#")==-1 ){ 
				$(_errSpan).addClass(defaultOptions.errStyle.substring(1));
			}
		}
	}
	
	
	$(this).submit(function(){
		return_sta=true;					
		$(this).find(".required").each(function(){
			if($(this).val()=='' || $(this).val()==-1){
				$(this).css({ borderColor:'red' , borderStyle:'solid', borderWidth:'1px' }).addClass("ERR");
				if($(this).parent().children('.ERRDISPLAY').size()<1){
					_errNameSpan=$(_errSpan).clone(true);
					$(_errNameSpan).text("This is a required field");
					$(this).parent().append(_errNameSpan);
					$(_errNameSpan).fadeIn('slow');
				}
				return_sta=false;
			}
		});
		
		$(this).find(".email").each(function(){
			var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
			if(!reg.test($(this).val())){
				$(this).css({ borderColor:'red' , borderStyle:'solid', borderWidth:'1px' }).addClass("ERR");
				if($(this).parent().children('.ERRDISPLAY').size()<1){
					_errNumberSpan=$(_errSpan).clone(true);
					$(_errNumberSpan).text("Please enter valid email id");
					$(this).parent().append(_errNumberSpan);
					$(_errNumberSpan).fadeIn('slow');
				}
				return_sta=false;
			}
		});
		
		$(this).find(".number").each(function(){
			//alert(isNaN($(this).val()));
			if(isNaN($(this).val())){
				$(this).css({ borderColor:'red' , borderStyle:'solid', borderWidth:'1px' }).addClass("ERR");
				if($(this).parent().children('.ERRDISPLAY').size()<1){
					_errNumberSpan=$(_errSpan).clone(true);
					$(_errNumberSpan).text("Please enter only numbers(0-9)");
					$(this).parent().append(_errNumberSpan);
					$(_errNumberSpan).fadeIn('slow');
				}
				return_sta=false;
			}
		});
		
		if(!$(this).find("input'[type=checkbox]':checked").size()){
			$(this).find(".checkbox").each(function(){
				//alert(isNaN($(this).val()));
				$(this).children("input'[type=checkbox]'").addClass("ERR");
				if($(this).parent().children('.ERRDISPLAY').size()<1){
					_errNumberSpan=$(_errSpan).clone(true);
					$(_errNumberSpan).text("Please select one of the choices");
					$(this).parent().append(_errNumberSpan);
					$(_errNumberSpan).fadeIn('slow');
				}
				return_sta=false;
			});
		}
		
		if(!$(this).find("input'[type=radio]':checked").size()){
			$(this).find(".radio").each(function(){
				//alert(isNaN($(this).val()));
				$(this).children("input'[type=radio]'").addClass("ERR");
				if($(this).parent().children('.ERRDISPLAY').size()<1){
					_errNumberSpan=$(_errSpan).clone(true);
					$(_errNumberSpan).text("Please select one of the choices");
					$(this).parent().append(_errNumberSpan);
					$(_errNumberSpan).fadeIn('slow');
				}
				return_sta=false;
			});
		}
		
		
		if(typeof(defaultOptions.resultHandler)=='boolean'){
			return defaultOptions.formSubmit;
		}else if(typeof(defaultOptions.resultHandler)=='function' && return_sta){
			defaultOptions.resultHandler();
			return defaultOptions.formSubmit;
		}else{
			return defaultOptions.formSubmit;
		}
	});
	
	$("input'[type=text]'").keypress(function(){
		if($(this).hasClass('ERR')){
			$(this).css({ borderColor:"#343434" }).removeClass("ERR");
			if($(this).parent().children(".ERRDISPLAY").is(":visible")){
				$(this).parent().children(".ERRDISPLAY").fadeOut(100).remove();
			}
		}
	})
	
	$("input'[type=checkbox]',input'[type=radio]'").click(function(){
		if($(this).hasClass('ERR')){
			if($(this).parents(".field").children(".ERRDISPLAY").is(":visible")){
				$(this).parents(".field").children(".ERRDISPLAY").fadeOut(100).remove();
			}
		}
	})
	
	/*$("input'[type=radio]'").click(function(){
		if($(this).hasClass('ERR')){
			if($(this).parents(".field").children(".ERRDISPLAY").is(":visible")){
				$(this).parents(".field").children(".ERRDISPLAY").fadeOut(100).remove();
			}
		}
	})*/
	
	$("#"+$(this).attr('id')+" select").change(function(){
		if($(this).hasClass('ERR')){
			$(this).css({ borderColor:"#343434" }).removeClass("ERR");
			if($(this).parent().children(".ERRDISPLAY").is(":visible")){
				$(this).parent().children(".ERRDISPLAY").fadeOut(100).remove();
			}
		}
	})
}
