/**
+ ---------------------------------------------------------------------------+
|    soliland
|
|     http://www.soliland.fr
|     cyril.janssens@free.fr
|
|     Released under the terms and conditions of the
|     GNU General Public License (http://gnu.org).
|
|	$Header: /soliland/V2/html/default/js/framework/jQuery.inscriptionValidator.js,v 1.13 2008-09-23 14:14:00 romain Exp $
|   $Source: /soliland/V2/html/default/js/framework/jQuery.inscriptionValidator.js,v $
|   $Revision: 1.13 $
|   $Date: 2008-09-23 14:14:00 $
|   $Author: romain $
|	$State: Exp $
+----------------------------------------------------------------------------+
 */

/**
* CLASS inscription form validator
*/


(function($){

	

	$.fn.inscriptionValidator = function(o, params){
		
		/*
		var params = $.extend({
			optArg1: 'notused',
			optArg2: 'notused'
		}, params);
		*/
		
		return this.each(function() {
		    switch (o){
		    	case 'addDate':
		    		adding = {type: 'date',objects : this, valid: false};
		    		$.fn.inscriptionValidator.addDate(adding, params);
		    	break;
		    	case 'addRadio':
		    		//adding = {type: 'radio',objects : this, valid: false};
		    		//$.fn.inscriptionValidator.addRadio(adding);
		    	break;
		    	case 'addAssociation':
		    		adding = {type: 'association', objects : this, valid: false};
		    		$.fn.inscriptionValidator.addAssociation(adding);
		    	break;
		    	case 'addLogin':
		    		adding = {type: 'login',objects : this, valid: false};
		    		$.fn.inscriptionValidator.addLogin(adding);
		    	break;
		    	case 'addIntegers':
		    		adding = {type: 'integers', objects : this, valid: false};
		    		$.fn.inscriptionValidator.addIntegers(adding, params);
		    	break;
		    	case 'addFloat':
		    		adding = {type: 'floats', objects : this, valid: false};
		    		$.fn.inscriptionValidator.addFloats(adding, params);
		    	break;
		    	case 'addText':
		    		
		    		if(params)
					{    
						if(params.necessary==false)
						{
							adding = {type: 'text', objects : this, valid: true};
						}else{
							adding = {type: 'text', objects : this, valid: false};
						}						
					}else{
						adding = {type: 'text', objects : this, valid: false};
					}            
					$.fn.inscriptionValidator.addText(adding, params);   
		    	break;
		    	case 'addHomepage':
					
		    		adding = {type: 'homepage', objects : this, valid: true};
		    		$.fn.inscriptionValidator.addHomepage(adding, params);
					        
		    	break;
		    	case 'addEmail':    
				   
		    		adding = {type: 'mail',objects : this, valid: false};
		    		$.fn.inscriptionValidator.addEmail(adding, params);
		    	break;
				
		    	case 'addFunction':
		    		adding = {type: 'function', objects : this, valid: false};
		    		$.fn.inscriptionValidator.addFunction(adding, params);
		    	break;
		    	case 'addPassword':
		    		adding = {type: 'password',objects : this, valid: false};
		    		$.fn.inscriptionValidator.addPassword(adding, params);
		    	break;        
		    	case 'addConfirmPassword':
		    		adding = {type: 'confirmpassword',objects : this, valid: false};
		    		$.fn.inscriptionValidator.addConfirmPassword(adding, params);
		    	break;
		    	case 'addCheckbox':
		    		adding = {type: 'checkbox',objects : this, valid: false};
		    		$.fn.inscriptionValidator.addCheckbox(adding);
		    	break;
		    	case 'validateButton':
		    		adding = {type: 'button',objects : this, valid: false};
		    		$.fn.inscriptionValidator.validateButton(adding);
		    	break;
		    	case 'addDownloadSoftware':
		    		$.fn.inscriptionValidator.downloadOffer(this);
		    	break;
		    }
    	});

	}
	$.fn.inscriptionValidator.errorMessages = new Array();
	$.fn.inscriptionValidator.contener = new Array();
	$.fn.inscriptionValidator.imgs = {
									red : function(){
											var r = document.createElement('EM');
											r.name = 'stateImg';
											//r.src = getPath().image + 'form/cross.png';
											r.className = 'crossToolTip';
											r.setAttribute('style',"z-index:10;white-space:nowrap");
											/*var at = document.createAttribute('style');
											at.nodeValue = "z-index:10;white-space:nowrap;display:block;border:solid 1px #000000";
											r.setAttributeNode(at);*/
											var ri = new Image();
											ri.name = 'stateImg';   
											ri.src = getPath().image + 'form/cross.png';
											r.appendChild(ri);
											return r;
											},
									green : function(){
											var g = new Image();
											g.name = 'stateImg';
											g.src = getPath().image + 'form/tick.png';
											return g;
											},
									noimage : function(){
											var n = new Image();
											n.name = 'stateImg';
											n.src = getPath().image + 'form/spacer.gif';
											return n;       
											},
									loading : function(){
											var l = new Image();
											l.name = 'stateImg';
											l.src = getPath().image + 'form/ajax-loader_mini.gif';
											return l;
											}
									};
	/******************************************************************************
	*									EVENT HELPER
	*******************************************************************************/
	$.fn.inscriptionValidator.addRadio = function(o){
		//$(o.objects)
		//$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addDate = function(o, p){
		var options = {
					format: "d.m.y",
					separator: "/",
					baseYear: 19
				};
		$(o.objects).dateNormalizer(options);              
		$(o.objects).blur(function(e){
		
			$.fn.inscriptionValidator.dateChecker(e, p);
		});
		
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addAssociation = function(o){
		$(o.objects).blur(function(e){
			$.fn.inscriptionValidator.assocChecker(e);
		});
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addLogin = function(o){
		$(o.objects).blur(function(e){
			$.fn.inscriptionValidator.loginChecker(e);
		});
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addIntegers = function(o, p){
		$(o.objects).blur(function(e){
			$.fn.inscriptionValidator.integersChecker(e, p);
		});
		$.fn.inscriptionValidator.contener.push(o);
	};
	//JLo 2009-01-18
	$.fn.inscriptionValidator.addFloats = function(o, p){
		$(o.objects).blur(function(e){
			$.fn.inscriptionValidator.floatChecker(e, p);
		});
		$.fn.inscriptionValidator.contener.push(o);
	};
	////
	$.fn.inscriptionValidator.addText = function(o, p){
		$(o.objects).blur(function(e){
			$.fn.inscriptionValidator.textChecker(e, p);
		});
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addHomepage = function(o, p){
		
		$(o.objects).blur(function(e){
			$.fn.inscriptionValidator.homepageChecker(e, p);
		});
  		$.fn.inscriptionValidator.contener.push(o);
	};    
	    

	
	$.fn.inscriptionValidator.addEmail = function(o, p){
		$(o.objects).blur(function(e){
			$.fn.inscriptionValidator.mailChecker(e, p);
		});
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addFunction = function(o, p){
		
		$('#' + p.dropdownBox).change(function(e){
		    
			$.fn.inscriptionValidator.functionChecker(e, p);
		});
		
		$('#' + p.additionalBox).hide();
		
		$('#' + p.additionalBox).blur(function(e){
	
			$.fn.inscriptionValidator.functionChecker(e, p);
		});
		
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addPassword = function(o, p){
		$(o.objects).blur(function(e){      
			$.fn.inscriptionValidator.passwordChecker(e, p);
		});         
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addConfirmPassword = function(o, p){
		$(o.objects).blur(function(e){
			$.fn.inscriptionValidator.confirmPasswordChecker(e, p);
		});
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.addCheckbox = function(o){
		$(o.objects).change(function(e){
			$.fn.inscriptionValidator.checkboxChecker(e);
		});
		$.fn.inscriptionValidator.contener.push(o);
	};
	
	$.fn.inscriptionValidator.downloadOffer = function(o){
		$(o).change(function(e){
			var _tmp = e.target.parentNode;
			while(_tmp){
				if(_tmp.tagName == 'FORM'){
					formElement = _tmp;
					break;
				}
				_tmp = _tmp.parentNode;
			}
			formElement.action = formElement.action.replace(/&softwareInstall=true/, '');
			if(e.target.checked == true){
				formElement.action += '&softwareInstall=true';
			}
		});
	};
	
	$.fn.inscriptionValidator.validateButton = function(o){
		
		var _tmp = o.objects.parentNode;
		while(_tmp){
			if(_tmp.tagName == 'FORM'){
				formElement = _tmp;
				break;
			}
			_tmp = _tmp.parentNode;
		}
		
		$(formElement).submit(function(e){
			stop();
		});
	  
		$(o.objects).click(function(e){
			
			if($.fn.inscriptionValidator.checkFields(e)){
				new validator(o.objects);          
				//stop();            
			}
			else{
				var _txt = '';
				for(var a=0; a < $.fn.inscriptionValidator.errorMessages.length;a++){
					var _tmp = $.fn.inscriptionValidator.errorMessages[a];
					_txt += "\n" + _tmp;
				}
				alert("Certains champs du fomulaire ne sont pas correctement remplis.\n" + _txt); 
			}
		});  
	};          
	                     
	/******************************************************************************
	*								FINAL CHECKER
	*******************************************************************************/
	$.fn.inscriptionValidator.checkFields = function(e){
		$.fn.inscriptionValidator.errorMessages.length = 0;
		var _return = true;
		// Categories
		if ($.choosenCategories) {
			    
			var mainCategories = $("#mainCategories");
			i = 0;
			for (var area in $.choosenCategories) {
				i++;
			};
			if (i < 1) {
				$.fn.inscriptionValidator.errorMessages.push("Indiquez vos trois domaines d'intervention principaux.");
				redMark(mainCategories, "Merci d'indiquer dans quel(s) domaine(s) d'intervention oeuvre votre association ? Indiquez vos trois domaines d'intervention principaux.");



				_return = false;
			} else {
				greenMark(mainCategories);
			}
			
		}
		// Intervention areas
		if ($.choosenAreas) {
			var mainAreas = $("#mainAreas");
			i = 0;
			for (var area in $.choosenAreas) {
				i++;
			};
			if (i < 1) {
				$.fn.inscriptionValidator.errorMessages.push("Merci d'indiquer dans quel(s) pay(s) intervient votre association.");
				redMark(mainAreas, "Merci d'indiquer dans quel(s) pay(s) intervient votre association.");


				_return = false;
			} else {
				greenMark(mainAreas);
			}
			
		}
		
		var associationContactFonction = $("#associationContactFonction").val();
		           
		if(associationContactFonction=="")
		{          
			redMark($("#associationContactFonction"),'Champs obligatoire');
		}        
		// Fields (regulary)
		for(var a in $.fn.inscriptionValidator.contener){
			if(!$.fn.inscriptionValidator.contener[a].valid){



				_return = false;
				//recheck all fields and mark it (red cross)
				  //alert($.fn.inscriptionValidator.contener[a].type);
				switch ($.fn.inscriptionValidator.contener[a].type){
					    
					case 'integers':
						//$.fn.inscriptionValidator.textChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'floats':
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'text':
						//$.fn.inscriptionValidator.textChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'homepage':
						//$.fn.inscriptionValidator.textChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'date':
						//$.fn.inscriptionValidator.dateChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'association':
						//$.fn.inscriptionValidator.loginChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'login':
						//$.fn.inscriptionValidator.loginChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'mail':
						//$.fn.inscriptionValidator.mailChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'function':     
						//$.fn.inscriptionValidator.mailChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'password':
						//$.fn.inscriptionValidator.passwordChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'confirmpassword':
						//$.fn.inscriptionValidator.passwordChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.focus();
						document.getElementsByTagName('body')[0].focus()
					break;
					case 'checkbox':
						//$.fn.inscriptionValidator.checkboxChecker($.fn.inscriptionValidator.contener[a].objects);
						$.fn.inscriptionValidator.contener[a].objects.click();
						$.fn.inscriptionValidator.contener[a].objects.click();        
						$.fn.inscriptionValidator.errorMessages.push('Vous devez accepter les conditions générales d\'utilisation pour vous inscrire')
					break;
					case 'button':
						//do nothing
					break;
					default:
						//do nothing
				}
			}
		}    
		//alert($.fn.inscriptionValidator.contener[a].type+' and '+_return);  
		return _return;
	};
	    
	/******************************************************************************
	*									CHECKER
	*******************************************************************************/

	$.fn.inscriptionValidator.checkboxChecker = function(e) {
		var checkboxObject = $(e.target);
  
		if(checkboxObject[0].checked == false){  



			redMark(checkboxObject, 'Vous devez accepter les <br>conditions générales <br>d\'utilisation pour vous inscrire');  
	 
		}else{
			greenMark(checkboxObject);
		}
	};
	
	
	
	$.fn.inscriptionValidator.assocChecker = function(e) {
		assocObject = $(e.target);
		var val = assocObject.val();
		if (val == '') {
			redMark(assocObject, 'Champs obligatoire');
		}    
		else {
		
			loadingMark(assocObject);
			var data = [];
			data['association'] = val;
			          
			if($("#associationName_old").val())
			{			        
				if($("#associationName_old").val()!=val)
				{  
					getAsyncronousAjaxData('checkAssociationName', data, callBackAssociationName);
					
				}else{
					noMark($(assocObject));      
				}   
			}else{
			
				getAsyncronousAjaxData('checkAssociationName', data, callBackAssociationName);
			}
		}
	};
	
	$.fn.inscriptionValidator.loginChecker = function(e) {
		loginObject = $(e.target);
		var val = loginObject.val();
		   
		if (val == '') {
			redMark(loginObject, 'Champs obligatoire');


		}   
		
		if(val.length < 3){  
			redMark(loginObject, 'Votre pseudo doit <br/>comporter un minimum de <br/>3 caractères.');
		}else{
			loadingMark(loginObject);     
			var data = [];
			        
			data['login'] = val;  
			getAsyncronousAjaxData('checkLogin', data, callBackLogin)
		}
	};
	
	$.fn.inscriptionValidator.passwordChecker = function(e, params) {
		var passwordObject = $(e.target);
		var val = passwordObject.val();
		var association = false;
		if (params) {
			if (params.association) 
				association = params.association;
		}
		var passLength;
		if(association==true){
			passLength = 8;
		}else{
			passLength = 6;
		}
		
		if (val == '') {
			redMark(passwordObject, 'Champs obligatoire');
		}   
		              
		if(val.length < passLength){


			redMark(passwordObject, 'Le mot de passe <br/>doit comporter<br/>un minimum de '+passLength+'<br/>caractères.');
		}else{
			greenMark(passwordObject);
		}
	};
	
	$.fn.inscriptionValidator.confirmPasswordChecker = function(e, params) {
		var orgPassword = $('#' + params.orgPasswordBox).val();
		var passwordObject = $(e.target);
		var val = passwordObject.val();
		if(orgPassword != val || orgPassword == ""){

			redMark(passwordObject, 'Les deux mots de passe tapés doivent être identiques');
		}
		else {
			greenMark(passwordObject);
		}
	};
	
	$.fn.inscriptionValidator.integersChecker = function(e, params) {

		minLength = 0;
		maxLength = 0;
		supportText = "";
		var noText = false;
		necessary = true;
		var pattern = /([0-9]+)/;
		if (params) {
			if (params.minLength) 
				minLength = params.minLength;
			if (params.maxLength) 
				maxLength = params.maxLength;		
			if (params.supportText) 
				supportText = params.supportText;
			if (params.noText) 
				noText = params.noText;    
			if (params.necessary==false) 
				necessary = params.necessary;
		}    
		  
		var integerObject = $(e.target);
		var val = integerObject.val();
		if(val == "" && necessary == false) {      
				if(integerObject.parent().attr('name')=='divState') noMark(integerObject);
			}else if(minLength > 0 && minLength == maxLength && val.length != minLength) {
				redMark(integerObject, supportText ? supportText : 'Champs obligatoire');



			} else if ((minLength > 0 && val.length < minLength) || (maxLength > 0 && val.length > maxLength)) {

				redMark(integerObject, supportText ? supportText : 'Champs obligatoire');



			} else if(val == ''){

				redMark(integerObject, supportText ? supportText : 'Champs obligatoire');
			} else {
				         
				greenMark(integerObject);
			}             
	/*
		var Intnumber = parseInt(val);
		          
		if(val !="" && isNaN(Intnumber)){  
			                  
			redMark(integerObject, supportText ? supportText : 'Ce champs ne peut pas contenir de text');
		}else{ 
			        
			     
			if(val == "" && necessary == false) {
			          
				if(integerObject.parent().attr('name')=='divState')
				{            
				  noMark(integerObject);            
				}                 
			} else if ( Intnumber.toString().length < minLength && noText == true) {     
				 redMark(integerObject, supportText ? supportText : 'Ce champs ne peut pas contenir de text');
			} else if(minLength > 0 && minLength == maxLength && val.length != minLength) {
				redMark(integerObject, supportText ? supportText : 'Champs obligatoire');
			} else if ((minLength > 0 && val.length < minLength) || (maxLength > 0 && val.length > maxLength)) {
				redMark(integerObject, supportText ? supportText : 'Champs obligatoire');
			} else if(val == ''){
				redMark(integerObject, supportText ? supportText : 'Champs obligatoire');
			} else {
				         
				greenMark(integerObject);
			}    
		}
*/		
		
	};

	// check float values
	// @author: Jens Lojek <info@code-in-design.de>
	// @date: 2009-01-18
	$.fn.inscriptionValidator.floatChecker = function(e, params) {
		minLength = 0;
		maxLength = 0;
		supportText = "";
		var noText = false;
		necessary = true;

		if (params) {
			if (params.minLength) minLength = params.minLength;
			if (params.maxLength) maxLength = params.maxLength;		
			if (params.supportText) supportText = params.supportText;
			if (params.noText) noText = params.noText;    
			if (params.necessary==false) necessary = params.necessary;
		}
		var floatObject = $(e.target);
		var val = floatObject.val();
		var val = val.replace(/,/g, ".");
		var FloatNumber = parseFloat(val);

		if(val!="" && isNaN(FloatNumber)){



			redMark(floatObject, supportText ? supportText : 'Ce champs ne peut pas contenir de text');
		}else{
			if(val == "" && necessary == false) {
				if(floatObject.parent().attr('name')=='divState') noMark(floatObject);
			} else if ( FloatNumber.toString().length < minLength && noText == true){
				 redMark(floatObject, supportText ? supportText : 'Ce champs ne peut pas contenir de text');
			} else if(minLength > 0 && minLength == maxLength && val.length != minLength) {
				redMark(floatObject, supportText ? supportText : 'Champs obligatoire');
			} else if ((minLength > 0 && val.length < minLength) || (maxLength > 0 && val.length > maxLength)) {
				redMark(floatObject, supportText ? supportText : 'Champs obligatoire');
			} else if(val == ''){
				redMark(floatObject, supportText ? supportText : 'Champs obligatoire');
			} else {
				greenMark(floatObject);
			}
		}
	};
	////

	$.fn.inscriptionValidator.textChecker = function(e, params) {

		minLength = 0;
		maxLength = 0;
		noNumbers = false;
		supportText = "";
		necessary = true;

		if (params) {
			if (params.minLength) 
				minLength = params.minLength;
			if (params.maxLength) 
				maxLength = params.maxLength;
			if (params.noNumbers) 
				noNumbers = params.noNumbers;
			if (params.supportText) 
				supportText = params.supportText;
			if (params.necessary==false) 
				necessary = params.necessary;
		}
		
		var textObject = $(e.target);
		var val = textObject.val();
		var pattern = /([0-9]+)/;
		
		if(val == "" && necessary == false) {
		                 
			if(textObject.parent().attr('name')=='divState')
			{   
			  noMark(textObject);            
			}
			/*                  
			else{
				//greenMark(textObject);            
				noMark(textObject);   
			}
			*/
		}else if (pattern.test(val) && noNumbers == true) {
			redMark(textObject, supportText ? supportText : 'Ce champs ne peut pas contenir de chiffres');
		} else if(minLength > 0 && minLength == maxLength && val.length == minLength) {
			redMark(textObject, supportText ? supportText : 'Champs obligatoire');
		} else if ((minLength > 0 && val.length < minLength) || (maxLength > 0 && val.length > maxLength)) {
			redMark(textObject, supportText ? supportText : 'Champs obligatoire');
		} else if(val == ''){
			redMark(textObject, supportText ? supportText : 'Champs obligatoire');
		} else {
			greenMark(textObject);
		}
		
	};

	$.fn.inscriptionValidator.homepageChecker = function(e, params) {

		necessary = true;
		supportText = "";

		if (params) {
			if (params.necessary == false) 
				necessary = params.necessary;
			if (params.supportText) 
				supportText = params.supportText;
		}
		
		var textObject = $(e.target);
		var val = textObject.val();
		
		var pattern = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
		
		if(val == "" && necessary == false){
			if(textObject.parent().attr('name')=='divState')
			{    
			  noMark(textObject);            
			}else{
				//noMark(textObject);     
				greenMark(textObject);  
				//alert(2);    
			}            
		} else if (!pattern.test(val)) {  
			redMark(textObject, supportText ? supportText : 'Champs obligatoire');
		} else {
			greenMark(textObject);
		}
		
	};
	
	$.fn.inscriptionValidator.mailChecker = function(e, params) {
		
		necessary = true;
		mailObject = $(e.target);
		var val = mailObject.val();
		var pattern = new RegExp('^[\\w\\d_\\.\\-]+@[\\w\\d_\\.\\-]+\\.[\\w]{2,4}$');
		
		if (params) {
			if (params.necessary == false) 
				necessary = params.necessary;
		}
		        
		if(val == "" && necessary == false){
			greenMark(mailObject);    
		} else if(val.match(pattern)){    
			                            
			loadingMark(mailObject);  
			var data = [];
			data['email'] = val;    
			     
			if($("#associationContactMail_old").val())
			{			
				if($("#associationContactMail_old").val()!=val)
				{  
					if (params) {        
			  
					if (params.supportText)         
							getAsyncronousAjaxData('checkassociationEmail', data, callBackEmail);
					}else{      
						getAsyncronousAjaxData('checkMail', data, callBackEmail);
					}
				}else{
					      noMark($(mailObject));      
				}   
			}else{        
				if (params) {        
				  
				if (params.supportText)         
						getAsyncronousAjaxData('checkassociationEmail', data, callBackEmail);
				}else{      
					getAsyncronousAjaxData('checkMail', data, callBackEmail);
				}
			}
		}else{
			redMark(mailObject, 'Format non valide.<br/>Veuillez respecter<br/>la structure suivante :<br/>xxx@nom_de_domaine.com');
		}
	};
	
		$.fn.inscriptionValidator.associationmailChecker = function(e) {
		mailObject = $(e.target);
		var val = mailObject.val();
		var pattern = new RegExp('^[\\w\\d_\\.\\-]+@[\\w\\d_\\.\\-]+\\.[\\w]{2,4}$');
		if(val.match(pattern)){
			    
			loadingMark(mailObject);  
			var data = [];
			data['email'] = val;    
			     
			getAsyncronousAjaxData('checkassociationMail', data, callBackEmail);
			
		}else{
			
			redMark(mailObject, 'Format non valide.<br/>Veuillez respecter<br/>la structure suivante :<br/>xxx@nom_de_domaine.com');
		}
	};
	      
	
	$.fn.inscriptionValidator.functionChecker = function(e, params) {
		
		dropdownObject = $('#' + params.dropdownBox);
		additionalObject = $('#' + params.additionalBox);
		necessary = false;
		showOnState = params.showOnState;
		
		supportText = "";
		
		if (params) {
			if (params.supportText) 
				supportText = params.supportText;
			
			if (params.necessary == true) 
				necessary = params.necessary;
		}
				      
		if(dropdownObject.val() == showOnState) {           
			
			additionalObject.show();
			if(additionalObject.val() == "") {
				redMark(dropdownObject, supportText ? supportText : 'Champs obligatoire');
			} else {
				greenMark(dropdownObject);
			}
			
		} else {
			    
			if(necessary==true && dropdownObject.val()=="")
			{
				redMark(dropdownObject, 'Champs obligatoire');
			}else{
				greenMark(dropdownObject);
			}      
			additionalObject.hide();
			additionalObject.val("");
			           
		}
		
	};
	
	
	$.fn.inscriptionValidator.dateChecker = function(e, params) {
		var dateObject = $(e.target);
		var val = dateObject.val();
		var pattern = new RegExp('([0-3]?[0-9])\/([0-1]?[0-9])\/([0-9]{4,4})');
		
		necessary = true;
		
		if (params) {
			if (params.necessary == false) 
				necessary = params.necessary;
		}
		
		if(val == "" && necessary == false) {
			//greenMark(dateObject);    
			if(dateObject.parent().attr('name')=='divState')
			{    
			  noMark(dateObject);            
			}
			
			               
		} else if(val.match(pattern)){
			var day = RegExp.$1;
			var month = RegExp.$2;
			var year = RegExp.$3;
			var currentYear = new Date().getFullYear();
			var allowYear = currentYear - 18;  		      
			if(day >= 1 && day <= 31 && month >= 1 && month <= 12 && year >= 1900 && year <= allowYear){
				var strDay = (day.length < 2) ? '0' + day : day;
				var strMonth = (month.length < 2) ? '0' + month : month;
				dateObject.val(strDay + '/' + strMonth + '/' + year);
				greenMark(dateObject);
			}else{
				redMark(dateObject, 'Format non valide.<br/>Veuillez respecter<br/>la structure suivante:<br/>27/03/1983 et à partir de <br/>18 ans');
			}      
			
		} else {    
			redMark(dateObject, 'Format non valide.<br/>Veuillez respecter<br/>la structure suivante:<br/>27/03/1983 et à partir de <br/>18 ans');
		}
	};        
	
	/**Deprecated*/
	$.fn.inscriptionValidator.dateHelper = function(e) {
	};
	
	/******************************************************************************
	*									PRIVATE
	*******************************************************************************/
	function callBackAssociationName(ajaxReturn){
		
		var result = decodeAjax(ajaxReturn);
		  
		if(result == true){
			redMark(assocObject, 'Cette association est déjà référencée sur Soliland.');
			if($("#associationName_old").val())
			{	
				$("#errorassociationName").attr("value","associationName")
			}      
		}
		else{
			greenMark(assocObject);
			if($("#associationName_old").val())
			{	
				$("#errorassociationName").attr("value","")
			}  
		}

	};
	
	function callBackEmail(ajaxReturn){
		
		var result = decodeAjax(ajaxReturn);
		        
		if(result == true){
			redMark(mailObject, 'Vous êtes déja inscrit<br/>avec cette adresse,<br/>connectez vous dans<br/>votre espace membre.');
			if($("#associationName_old").val())
			{	
				$("#errorassociationMail").attr("value","associationMail")
			}          
		}
		else{
			greenMark(mailObject);
			if($("#associationName_old").val())
			{     	  
				$("#errorassociationMail").attr("value","")
			}    
		}

	};
	
	function callBackLogin(ajaxReturn){
		
		var result = decodeAjax(ajaxReturn);
		if(result == true){
			redMark(loginObject, 'Ce pseudo n\'est plus<br/>disponible, veuillez<br/>en choisir un autre.');
		}
		else{
			greenMark(loginObject);
		}

	};
	
	function greenMark(o){
		var greenImage = $.fn.inscriptionValidator.imgs.green();
		if(o.parent().attr('name') != 'divState'){
			o.wrap('<div name="divState" style="white-space:nowrap"></div>');
			o.after(greenImage);
		}
		else{
			o.next().replaceWith(greenImage)
		}

		for(var a in $.fn.inscriptionValidator.contener){
			if($.fn.inscriptionValidator.contener[a].objects == o[0]){
				$.fn.inscriptionValidator.contener[a].valid = true;
			}
		}
	};
	
	function noMark(o){
		//var greenImage = $.fn.inscriptionValidator.imgs.green();
		var NoImage = $.fn.inscriptionValidator.imgs.noimage();    
		if(o.parent().attr('name') == 'divState'){
			o.next().replaceWith(NoImage)
		}    
        $.fn.inscriptionValidator.contener.push(o);
		          
		for(var a in $.fn.inscriptionValidator.contener){
			if($.fn.inscriptionValidator.contener[a].objects == o[0]){
				$.fn.inscriptionValidator.contener[a].valid = true;
			}
		}    
				
	};  
	
	function redMark(o, msg){


		var redImage = $.fn.inscriptionValidator.imgs.red();
		redImage.title = msg;
		redImage.alt = msg;
		
		if(o.parent().attr('name') != 'divState'){
			o.wrap('<div name="divState" style="white-space:nowrap; "></div>');
			o.after(redImage);
		}
		else{
			o.next().replaceWith(redImage)
		}

		for(var a in $.fn.inscriptionValidator.contener){
			if($.fn.inscriptionValidator.contener[a].objects == o[0]){
				$.fn.inscriptionValidator.contener[a].valid = false;
			}
		}
		reCatchEvent();
	};
	
	function loadingMark(o){
		var loadingImage = $.fn.inscriptionValidator.imgs.loading();
		if(o.parent().attr('name') != 'divState'){
			o.wrap('<div name="divState" style="white-space:nowrap"></div>');
			o.after(loadingImage);
		}
		else{
			o.next().replaceWith(loadingImage)
		}
	};
	
	function debug($obj) {
	    if (window.console && window.console.log){
			window.console.log(var_dump($obj));
		}
	};
	
	function var_dump(o){
		
		if(typeof o == 'object' || typeof o == 'array' || typeof o == 'function'){
			var txt = ''
			for(var prop in o){
				txt += prop + " = " + o[prop] + "\n";
			}
		}
		else if(typeof o == 'string' || typeof o == 'number' ){
			var txt = o;
		}
		else if(typeof o == 'boolean'){
			var txt = (o) ? 'true' : 'false';
		}
		else{
			var txt = o;
		}
		return txt;	
	}

})(jQuery)	



