/*
 * jQuery Blink
 * by Mark VELDHUIZEN
 */
 
$.blink = function(){
	$(this).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100);
}

$.fn.blink = function(){
	this.each(function(){
		$(this).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100);
	});
}


/*
 * jQuery Input Highlighting
 * by Mark VELDHUIZEN
 */
 
$.inputHighlight = function() {
	$(this).focus(function(){
		$(this).addClass("highlight");
	});
	$(this).blur(function(){
		$(this).removeClass("highlight");
	});
}

$.fn.inputHighlight = function() {
	$(this).find("input,select,textarea").each(function(){
		$(this).focus(function(){
			$(this).addClass("highlight");
		});
		$(this).blur(function(){
			$(this).removeClass("highlight");
		});
	});
}


/*
 * jQuery numbers only
 * by Mark VELDHUIZEN
 */


$.fn.formatInt = function() {
	$(this).blur(function(){
		$(this).val($(this).val().replace(/[^0-9]/g,""));
	});
}


/*
 * jQuery email check
 * by Mark VELDHUIZEN
 */

$.fn.checkMail = function() {
	$(this).blur(function(){
		if(!emailCheck($(this).val())&&($(this).val()!="")) {
			$(this).blink();
			$(this).addClass("required");
			warning("Votre adresse mail n'est pas valide !");
		} else {
			$(this).removeClass("required");
			hideWarning();
		}
	});
	function emailCheck(emailStr) {
		var emailPat=/^(.+)@(.+)$/
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		var validChars="\[^\\s" + specialChars + "\]"
		var quotedUser="(\"[^\"]*\")"
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		var atom=validChars + '+'
		var word="(" + atom + "|" + quotedUser + ")"
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
		var matchArray=emailStr.match(emailPat)
		if (matchArray==null) {return false}
		var user=matchArray[1]
		var domain=matchArray[2]
		if (user.match(userPat)==null){return false}
		var IPArray=domain.match(ipDomainPat)
		if (IPArray!=null) {for (var i=1;i<=4;i++){if (IPArray[i]>255) {return false}}return true}
		var domainArray=domain.match(domainPat)
		if (domainArray==null) {return false}
		var atomPat=new RegExp(atom,"g")
		var domArr=domain.match(atomPat)
		var len=domArr.length
		if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {return false}
		if (len<2) {return false}
		return true;
	}
}


/*
 * jQuery telephone formatting
 * by Mark VELDHUIZEN
 */


$.fn.formatTelephone = function() {
	$(this).blur(function(){
		var telephone = formatTelephone($(this).val().replace(/[^0-9()+.\- ]/g,""));
		$(this).val(formatTelephone(telephone.replace(/[.\-]/g," ")));
	});
	function formatTelephone(num) {
		raw = num.replace(/[^0-9]/g,"");
		if(raw.length==10) {
			var region = raw.substring(0,2);
			var ville = raw.substring(2,4);
			var num1 = raw.substring(4,6);
			var num2 = raw.substring(6,8);
			var num3 = raw.substring(8,10);
			return region+" "+ville+" "+num1+" "+num2+" "+num3;
		} else {
			return num;
		}
	}
}
