/**
 * Gestion de formulaire
 * 
 * Version 0.2
 * + Prise en charge de tinyMCE
 * + Ajout de la fonction clearForm()
 * 
 * Version 0.3
 * + Prise en charge des checkbox (si checked renvoi true)
 * 
 * Version 0.4
 * + Correction pour la balise input radio, prise en compte du checked
 */

/**
 * Reset le formulaire
 */
$.fn.clearForm = function() {
	return this.each(function(){
		var type = this.type, tag = this.tagName.toLowerCase();
		if (tag == 'form'){
			return $(':input',this).clearForm();
		}
		if (type == 'text' || type == 'password' ){
			this.value = '';
		}
		else if( tag == 'textarea' ){
			this.value = '';
		}
		else if (type == 'checkbox' || type == 'radio'){
			this.checked = false;
		}
		else if (tag == 'select'){
			this.selectedIndex = -1;
		}
	});
};

function getParametre(idFormulaire, idTinyMCE){
	var parametre = '';
	
	if($('#'+idFormulaire)){
	
		var formulaire = $('#'+idFormulaire);
		
		//Input
		var oColChamp = formulaire.find('input');
			
		jQuery.each(oColChamp,function(key,champ){
			
			if( $(champ).attr('type')!='button' && $(champ).attr('type')!='submit' ){
				
				if(parametre){
					parametre += '&';
				}
				
				if( $(champ).attr('type') == 'checkbox' ){
					parametre += $(champ).attr('name')+'='+encodeURIComponent($(champ).attr('checked'));
				}
				else if( $(champ).attr('type') == 'radio' ){
					
					if( $(champ).attr('checked') == true ){
						parametre += $(champ).attr('name')+'='+encodeURIComponent($(champ).attr('value'));
					}
				}
				else{
					parametre += $(champ).attr('name')+'='+encodeURIComponent($(champ).attr('value'));
				}
			}
		});
		
		//Textarea
		var oColChamp = formulaire.find('textarea');
	
		jQuery.each(oColChamp,function(key,champ){
			
			if(parametre){
				parametre += '&';
			}
			parametre += $(champ).attr('name')+'='+encodeURIComponent($(champ).attr('value'));	
		});	
		
		//Select
		var oColChamp = formulaire.find('select');
	
		jQuery.each(oColChamp,function(key,champ){
	          
			if(parametre){
				parametre += '&';
			}
		
			//if ($(champ).attr('size')>1) {
			//	parametre += $(champ).attr('name')+'='+encodeURIComponent($(champ).attr('value'));	
			//} else  {
			  	parametre += $(champ).attr('name')+'='+encodeURIComponent($(champ).val());
			//}	
		});
		
		//TinyMCE
		// Boucler autant de fois qu'il y a de tinymce
	      
		if (isArray(idTinyMCE)) {
		     
			for (var inc = 0;inc<idTinyMCE.length;inc++) {
				idTiny = idTinyMCE[inc];
				
				if ( idTiny ) {
					tinyMCE.triggerSave(true,true);
					if (parametre) {
						parametre += '&';
					}
					 
				    //parametre += idTiny+'='+ $('#'+idTiny).html(tinyMCE.get(dTiny).getContent());
					parametre += idTiny+'='+encodeURIComponent($('#'+idTiny).attr('value'));
				
			    }
			} 
			
		    
		} else {
		   
			if( idTinyMCE ){
				tinyMCE.triggerSave(true, true);
			
				if(parametre){
					parametre += '&';
				}
				parametre += idTinyMCE+'='+encodeURIComponent($('#'+idTinyMCE).attr('value'));
			}
		
		}
		
		
	
		 // Fin boucle
		return parametre;
	}else{
		return false;
	}
}

function valide_formulaire(arrNonVide,arrEmail){
	
	arrChampsEnErreur = new Array();
	arrChampsEnErreur = valide_tableau_champ_formulaire(arrNonVide,'!estVide',arrChampsEnErreur,true);
	arrChampsEnErreur = valide_tableau_champ_formulaire(arrEmail,'estEmail',arrChampsEnErreur,false);
	
	if(arrChampsEnErreur.length){
		// affichage des erreurs
		for(var inc = 0;inc<arrChampsEnErreur.length;inc++){
			var oChampEnErreur = arrChampsEnErreur[inc];
			enErreur(oChampEnErreur);
			if(!inc){
				oChampEnErreur.focus();
			}	
		}
		return false;
	}else{
		return true;
	}
	
}

function enErreur(oChampEnErreur){
	oChampEnErreur.parent().children().addClass('erreur');
}

function nonEnErreur(oChamp){
	oChamp.parent().children().removeClass('erreur');
}

function valide_tableau_champ_formulaire(tableauChamp,fonction,arrChampsEnErreur,effaceSiErreur){
	
	if(jQuery.isArray( tableauChamp )){
		
		jQuery.each( tableauChamp, function(key,idChamp){
			
			if(oChamp = eval("$('#"+idChamp+"')")){
				
				if(!eval(fonction+"('"+escape(oChamp.attr('value'))+"')")){
					arrChampsEnErreur.push(oChamp);
					if(effaceSiErreur){
						oChamp.attr('value','');
					}
				}else{
					nonEnErreur(oChamp);
					//oChamp.parent().children().removeClass('erreur');
				}
			}
		});
	}
	return arrChampsEnErreur;
}

function estVide(chaine){
	var oRegExp = new RegExp("([\\S]+)",'g');
	return !oRegExp.test(chaine);
}

function estEmail(chaine){
	var oRegExp = new RegExp("^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$",'g');
	return oRegExp.test(chaine);
}

function isArray(obj) {
   
   var retour = false;
   
   if (obj !=null) {
	   if (obj.constructor.toString().indexOf("Array") != -1)  {
	      retour = true;
	   }
   }
   return retour;
}



