(function($) {		
	 
	
	$.fn.jValidation=function(params) {	
		
	var defaults={
		valRule:{},
		isUniqueParams:{},
		isCaptchaParams:{}
	  };
	  
	defaults=$.extend(defaults,params);  
	
	return this.each(function() {
		  
	var $t=$(this);		  
		    
    $(this).find('#send').click(function() { 
     
	 $(this).append("<img id='loading' src='themes/thinkbrick/images/loading.gif'/>");
	 
	 	
	 
     $('.errorMessage').remove();
	 var errorMessages=[];
	 var i=0;
	
	 
     $t.find('.jValidationRequired').each(function() {
	    
		
		
		var value=$(this).val();
        
        var id=$(this).attr('id');	
		
		 var finishedCaptcha=false;
				
		var criteriaArr=defaults.valRule[id].criteria.split('|');				
		var messageArr=defaults.valRule[id].message.split('|');
		
$.each(criteriaArr,function(j,criteria){
			
		switch(criteria) {
		  case 'NOT_EMPTY':
		  if(value=="") 	{	    
		    errorMessages[i]={
			  id:id,
			  message:messageArr[j]
			};
		    i++;
		  }
		  break;
		  
		  case 'IS_EMAIL':
		  if(!isEmail(value)) 	{	    
		    errorMessages[i]={
			  id:id,
			  message:messageArr[j]
			};
		    i++;
		  }
		  break;
		  
		  case 'IS_NUMBER':
		  if(!isInteger(value)) 	{	    
		    errorMessages[i]={
			  id:id,
			  message:messageArr[j]
			};
		    i++;
		  }
		  break;
		  
		  case 'MIN_LEN':			
		  if(value.length<=defaults.valRule[id].minLen) 	{	    
		    errorMessages[i]={
			  id:id,
			  message:messageArr[j]
			};
		    i++;
		  }
		  break;
		  
		  case 'MAX_LEN':			
		  if(value.length>defaults.valRule[id].maxLen) 	{	    
		    errorMessages[i]={
			  id:id,
			  message:messageArr[j]
			};
		    i++;
		  }
		  break;
		  
		 case 'IS_THE_SAME':
		  var refValue=$('#'+defaults.valRule[id].refField).val();
		  if(refValue!=value) 	{	    
		    errorMessages[i]={
			  id:id,
			  message:messageArr[j]
			};
		    i++;
		  }
		  break;
		  
		  
		  case 'IS_UNIQUE':
		  var url=defaults.isCaptchaParams.url;
		  var checkTable=defaults.isCaptchaParams.checkTable;
		  var checkField=defaults.isUniqueParams.checkField;
		  
		 		  
		  $.post(url,{table:checkTable,field:checkField,value:value},function(data) {
			  
			  if(data==1)					         
		  	      $('<div>').addClass('errorMessage').text(messageArr[j]).insertBefore($('#'+id));
			
		  });		  
		  break;
		  
		  case 'IS_CAPTCHA':
		  var url=defaults.isCaptchaParams.url;		  		  
		 		  
		  $.get(url+'?value='+value,function(data) {
			  
			  $('#loading').remove(); 			  
			  if(data==1)	{		
			  		         
		  	      errorMessages[i]={
			                   id:id,
			                   message:messageArr[j]
			      };
		          i++;							  
		               //return false;
	              }           
		  
				  
		    if(errorMessages.length!=0) {
		  
		              $.each(errorMessages,function(i,v) {
			
		            $('<div>').addClass('errorMessage').text(v.message).insertBefore($('#'+v.id));		
            			
		          });				  
			}
			else 
		      $('form[name="frmContact"]').submit();	 

			  

			
		  });		  
		  break;
		  
		  default:
          return;		  
		}
	   });
		
	 });   
     
	

    

    
  });
		  
		  
	  
		  
		  
		isInteger=function(s) {
           return (s.toString().search(/^[0-9]+$/) == 0);
        }

        isEmail=function(s) {
           return (s.toString().search(/^[^@][0-9a-zA-Z\._]+@[^@][0-9a-zA-Z-]+\.[a-zA-Z]{2}/)==0);
        }  
	  });	
	};
	
})(jQuery)
