jQuery.validator.addMethod("maxWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length < params; 
}, "Please enter {0} words or less."); 
 
jQuery.validator.addMethod("minWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params; 
}, "Introduceti minim {0} cuvinte."); 
 
jQuery.validator.addMethod("rangeWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1]; 
}, "Please enter between {0} and {1} words.");


jQuery.validator.addMethod("adresa", function(value, element) {
	return this.optional(element) || /^[a-z-0-9.,\s]+$/i.test(value);
}, "Adresa nu este valida");  

jQuery.validator.addMethod("alphanumeric", function(value, element) {
	return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");  

jQuery.validator.addMethod("lettersonly", function(value, element) {
	return this.optional(element) || /^[a-z'\ ]+$/i.test(value);
}, "Campul trebuie sa contina doar litere"); 

jQuery.validator.addMethod("firstnot0", function(value, element) {
	return this.optional(element) || /(0)+$/i.test(value);
}, "Prima cifra nu poate fi zero"); 

jQuery.validator.addMethod("numbersonly", function(value, element) {
	return this.optional(element) || /^[0-9]+$/i.test(value);
}, "Campul trebuie sa contina doar cifre"); 

jQuery.validator.addMethod("lettersandspacesonly", function(value, element) {
	return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Campul trebuie sa contina doar litere"); 

jQuery.validator.addMethod("nowhitespace", function(value, element) {
	return this.optional(element) || /^\S+$/i.test(value);
}, "Campul nu poate contine spatii libere"); 


/* 
  Verifica daca data nasterii utilizatorului care completeaza CV-ul este valida. 
*/
jQuery.validator.addMethod(
	"dateITA",
	function(value, element) {
		var check = false;
		var re = /^\d{1,2}\.\d{1,2}\.\d{4}$/
		if( re.test(value)){
			var adata = value.split('.');
			var gg = parseInt(adata[0],10);
			var mm = parseInt(adata[1],10);
			var aaaa = parseInt(adata[2],10);
			var xdata = new Date(aaaa,mm-1,gg);
			var now = new Date();
			
			if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) ){
				if((xdata.getFullYear() >= now.getFullYear()-80) && (xdata.getFullYear() <= now.getFullYear()-18))	
					check = true;
				else
					check = false;
			}else{
				check = false;
			}
		} else
			check = false;
		return this.optional(element) || check;
	}, 
	"Introduceti o data valida"
);


/* 
  Verifica daca perioada (pt. experienta) introdusa de utilizatorul care completeaza CV-ul este valida. 
*/
jQuery.validator.addMethod(
	"dateRange",
	function(value, element) {
		var check = false;
		var re = /^\d{1,2}\.\d{1,2}\.\d{4}\-\d{1,2}\.\d{1,2}\.\d{4}$/
		if( re.test(value)){
		
			var perioada = value.split('-');

			var start = perioada[0].split('.');
			var ggStart = parseInt(start[0],10);
			var mmStart = parseInt(start[1],10);
			var aaaaStart = parseInt(start[2],10);
			var startDate = new Date(aaaaStart,mmStart-1,ggStart);
			
			var end = perioada[1].split('.');
			var ggEnd = parseInt(end[0],10);
			var mmEnd = parseInt(end[1],10);
			var aaaaEnd = parseInt(end[2],10);
			var endDate = new Date(aaaaEnd,mmEnd-1,ggEnd);
			
			var now = new Date();
			
			if ((startDate.getFullYear()==aaaaStart) && (startDate.getMonth()==mmStart-1) && (startDate.getDate()==ggStart)){

				if(startDate.getFullYear() < now.getFullYear()){
				
					if ((endDate.getFullYear()==aaaaEnd) && (endDate.getMonth()==mmEnd-1) && (endDate.getDate()==ggEnd)){
					
						if(endDate.getFullYear() <= now.getFullYear()){	
						
							if(startDate < endDate)
								check = true;
							else
								check = false;	
						}else
							check = false;
					}else
						check = false;
				}else
					check = false;
			}else 
				check = false;

		} else
			check = false;
			
		return this.optional(element) || check;
	}, 
	"Introduceti o perioada valida"
);

/* 
  Verifica daca perioada (pt. educatie) introdusa de utilizatorul care completeaza CV-ul este valida. 
*/
jQuery.validator.addMethod(
	"yearRange",
	function(value, element) {
		var check = false;
		var re = /^\d{4}\-\d{4}$/
		if( re.test(value)){
		
			var perioada = value.split('-');

			var start = parseInt(perioada[0],10);
			var end = parseInt(perioada[1],10);

			var now = new Date();
			
			if((start < end) && ((end-start)<=6) )
				check = true;
			else
				check = false;	
		} else
			check = false;
			
		return this.optional(element) || check;
	}, 
	"Introduceti o perioada valida"
);