/**
 * @author Erwann MEST <erwann.mest@businessdecision.com>
 */

jQuery.fn.isMail = function()
	{
	var atom	= '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';
	var domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';																 
	var regex = '^' + atom + '+' + '(\\.' + atom + '+)*' + '@' + '(' + domain + '{1,63}\\.)+' + domain + '{2,63}$';
	
	var reg = new RegExp(regex, "i");
  	return reg.test(this.val());
	}
	
jQuery.fn.isPostal = function()
	{
	var reg = new RegExp("^[0-9]{5}$", "i");
  	return reg.test(this.val());
	}
	
jQuery.fn.isNumeric = function()
	{
	this.each
		(
		function()
			{	
			$(this).keypress
				(
				function(e)
					{
					if(e.which!=8 && e.which!=0 && (e.which<48 || e.which>57))
						{
						return false;
						}
					}
				);
			}
		);
	}
	
jQuery.ajaxPostal = function(text, button, city, locker)
	{
	if($("#" + city ).val() == null)
		{
		$("#" + city ).parent().parent().hide();
		}
	
	$(text).isNumeric();
	
	$(text).keyup
		(
		function()
			{
			if($(this).val().length < 5)
				{
				locker = false;
				$("#" + city ).html("").parent().parent().hide();
				}	
				
			if($(this).val().length == 5 && locker == false)
				{
				if($(this).isPostal())
					{
					locker = true;
						
					var postalNum = $(this).val();	
						
					$.get('/index.php/ajax/code_postal/' + city + '/' + postalNum, function() {if($("#" + city ).val() != null) {$("#" + city ).parent().parent().show();}});
					}
				else
					{
					$(this).val("");
					$.messageAlert("<li>Le code postal doit contenir 5 chiffres.</li>");
					}
				}
			}
		);
		
	$(text).blur
		(
		function()
			{
			if($(this).val().length < 5)
				{
				$(this).val("");
				}
			}
		);
		
	$(button).click
		(
		function()
			{
			if($(text).val().length == 5 && locker == false)
				{
				if($(text).isPostal())
					{
					locker = true;
						
					var postalNum = $(text).val();	
						
					$.get('/index.php/ajax/code_postal/' + city + '/' + postalNum, function() {if($("#" + city ).val() != null) {$("#" + city ).parent().parent().show();}});
					}
				else
					{
					$.messageAlert("<li>Le code postal doit contenir 5 chiffres.</li>");
					$(text).val("");
					}
				}
			}
		);
	}
	
jQuery.fn.yearDate = function()
	{
	var regex = '^[1-2][0-9]{3}$';
	var reg = new RegExp(regex, "i");

  	return reg.test(this.val());		
	}

jQuery.fn.isDate = function()
	{
	this.children("input").isNumeric();
	
	this.each
		(
		function()
			{
			$(this).children("input:eq(0)").blur
				(
				function()
					{
					if(($(this).val() > 31 || $(this).val() < 1) && ($(this).val() != ""))
						{
						$.messageAlert("<li>Le jour doit être compris entre 1 et 31.</li>");
						$(this).val("");
						}	
					else
						{
						if($(this).val().length == 1 && $(this).val() != 0)
							{
							$(this).val("0" + $(this).val());
							}
						}	
					}
				);
					
			$(this).children("input:eq(1)").blur
				(
				function()
					{
					if(($(this).val() > 12 || $(this).val() < 1) && ($(this).val() != ""))
						{
						$.messageAlert("<li>Le mois doit être compris entre 1 et 12.</li>");
						$(this).val("");
						}	
					else
						{
						if($(this).val().length == 1 && $(this).val() != 0)
							{
							$(this).val("0" + $(this).val());
							}
						}	
					}
				);
				
			$(this).children("input:eq(2)").blur
				(
				function()
					{
					if(($(this).val().length < 4 && $(this).val().length > 0) || ($(this).val().length == 4 && !$(this).yearDate()))
						{
						$.messageAlert("<li>L'année n'est pas valide.</li>");
						$(this).val("");
						}
					}
				);
			}
		);
	}

jQuery.isEmpty = function(obj)
	{
	if($(obj).val() == "")
		return true;
	else
		return false;
		
	}

jQuery.isNumber = function(obj)
	{
	if(!isNaN($(obj).val()))
		return true;
	else
		return false;
		
	}
	
jQuery.isChecked = function(obj)
	{
	if(!$(obj).is(":checked"))
		return false;
	else 
		return true;
	}	
	
jQuery.nb2ch = function(nb) 
	{
	if(nb.length < 2)
	{
		nb = "0" + nb;
	}
	return nb;
	}

jQuery.checkDate = function(dayString)
	{
	var ok = true;
	var tabDate = dayString.split('/');
	if (tabDate.length>2)
		{
		var day = $.nb2ch(tabDate[2]);
		var month = $.nb2ch(tabDate[1]);
		var year = tabDate[0];
		oDate = new Date(year, month-1, day);
		
		var resultDay = $.nb2ch(""+oDate.getDate());
		var resultMonth = $.nb2ch(""+(oDate.getMonth()+1));
		var resultYear = ""+oDate.getFullYear();
		
		var selectedDate = "" + year + month + day;
		var resultDate = "" + resultYear + resultMonth + resultDay;
		
		if(selectedDate != resultDate)
			{
			ok = false;
			}
		}
	else
		{
		ok = false;
		}
	return ok;	
	}	

jQuery.checkDateFr = function(dayString)
	{
	var ok = false;
	if (dayString!="jj/mm/aaaa" && dayString!="")
		{
		var tabDate = dayString.split('/');
		if (tabDate.length>2)
			{
			var day = $.nb2ch(tabDate[0]);
			var month = $.nb2ch(tabDate[1]);
			var year = tabDate[2];
			oDate = new Date(year, month-1, day);
			
			var resultDay = $.nb2ch(""+oDate.getDate());
			var resultMonth = $.nb2ch(""+(oDate.getMonth()+1));
			var resultYear = ""+oDate.getFullYear();
			
			var selectedDate = "" + year + month + day;
			var resultDate = "" + resultYear + resultMonth + resultDay;
			if(selectedDate == resultDate)
				{
				ok = resultDay + "/" + resultMonth + "/" + resultYear;
				}
			}
		}
		return ok;
	}

/* How to use it 
 * Button :	<input class="bouton tooltip" id="xxx" type="button" value="?" /> * 
 * Div :	<div class="tooltip_window" id="w_xxx">
 *			<div class="close"><a href="#" class="bouton">Fermer</a></div>
 *			<h2></h2>
 *		</div>
 *  JS: 	$.tooltip();
 */
	
jQuery.tooltip = function()
	{
	$(".tooltip_window").hide();
	
	$(".tooltip").click
		(
		function()
			{
			var button = $(this).attr("id");	
				
    		$.blockUI
				(
					{
					message: $("#w_" + button),
					css:
						{ 
			       		padding:        0,
				        margin:         0,
				        width:          '700px', 
				        top:            '30%', 
				        left:           '20%',  
				        textAlign:      'left', 
				        color:          '#000', 
				        border:         'none',
				        backgroundColor: '#fff',
				        cursor:         'default',
						opacity:  '1',
						zIndex:	'100000'
			    		},
					overlayCSS:
						{
						 backgroundColor:'#fff', 
      					 opacity:  '0.5',
						 cursor: 'default'
						}
					}
				);
				
			$("#w_" + button + " .close *").click
				(
				function()
					{
					$.unblockUI();
					return false;
					}
				);
			}
		);
	}

jQuery.messageAlert = function(msg)
	{
	$.blockUI
		(
			{
			message: '<div class="alert_window"><div class="close"><div class="buttonleft"></div><a href="#" class="bouton">Fermer</a><div class="buttonright"></div></div><h2>Informations incorrectes</h2><ul>' + msg + '</ul></div>',
			css:
				{ 
	       		padding:        0,
		        margin:         0,
		        width:          '500px', 
		        top:            '30%', 
		        left:           '30%',  
		        textAlign:      'left', 
		        color:          '#000', 
		        border:         'none',
		        backgroundColor: '#fff',
		        cursor:         'default',
				opacity:  '1',
				zIndex:	'100000'
	    		},
			overlayCSS:
				{
				 backgroundColor:'#fff', 
				 opacity:  '0.5'
				}
			}
		);
		
	$(".alert_window .close *").click
		(
		function()
			{
			$.unblockUI();
			return false;
			}
		);
	}

jQuery.effectLoader = function(msg)
	{
	var urlLocale = window.location.href;
	urlLocale = urlLocale.split('/');
	var bslashcount = urlLocale.length;
	bslashcount -= 3;
	var urlFlash = ""
	
	for(i = 0; i<bslashcount; i++)
		{
		urlFlash += "../";
		}

	$.blockUI
		(
			{
			css:
				{ 
		        border: 'none', 
		        padding: '15px', 
		        backgroundColor: '#002967', 
		        '-webkit-border-radius': '10px', 
		        '-moz-border-radius': '10px', 
		        opacity: '1',
				zIndex:	'100000',
		        color: '#fff'
				},
			
			overlayCSS:
				{
				zIndex: '100000',
				backgroundColor:'#FFF',
				opacity:        '0.5' 
				},
										
			message: '<h1 style="font-size: 12px; margin-bottom: 20px;">' + msg + ' </h1><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="32" height="32" id="ajax-loader" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="false" />	<param name="movie" value="' + urlFlash + '/extension/carass/design/carass/images/ajax-loader.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#002967" />	<embed src="' + urlFlash + '/extension/carass/design/carass/images/ajax-loader.swf" quality="high" bgcolor="#002967" width="32" height="32" name="ajax-loader" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" /></object>'
			}
		);
	}
	
jQuery.nextLoader = function()
	{
	var message = 'Chargement de l\'étape suivante...<br /><br />Veuillez patienter.';
	$.effectLoader(message);
	}
	
jQuery.previousLoader = function()
	{
	var message = 'Chargement de l\'étape précedente...<br /><br />Veuillez patienter.';	
	$.effectLoader(message);
	}
	
jQuery.resultLoader = function()
	{
	var message = 'Tarification en cours...<br /><br />Veuillez patienter.';
	$.effectLoader(message);
	}
	
jQuery.souscriptionLoader = function()
	{
	var message = 'Souscription en cours...<br /><br />Veuillez patienter.';
	$.effectLoader(message);
	}
