/**
 * formSubmit v1.06
 *
 * Retourne tous les champs d'un formulaire avec leurs valeurs
 * dedie a un traitement en AJAX
 *
 * Auteurs : Pierre-Etienne et Corentin
 *
 * 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
 *
 * version 1.0
 * + refonte de la fonction en plugin jquery
 * + renommé en formSubmit
 * + ajout 2 deux parametres pour le plugin :
 *   * tinymce qui contient un tableau d'id pour tinyMCE
 *   * type (GET ou JSON)
 *
 * version 1.01
 * + correctif : prise en compte de la balise button
 *
 * version 1.02
 * + correctif : exclusion si le name n'existe pas
 *
 * version 1.03
 * + correctif : exclusion des element hidden
 *
 * version 1.04
 * + correctif : prise en compte du select multiple
 *
 * version 1.05
 * + correctif : prise en compte de l'attribut disabled
 * 
 * version 1.06
 * + correctif : Si checkbox non-checked, renvoi false (sinon on perd le champ)
 *
 * TODO type en JSON
 * TODO ajouter les parametres dans un tableau puis faire le traitement pour GET ou JSON à la fin
 * Prochaine version : 1.1
 */
$.fn.formSubmit = function(options){

	var defaults = {
        type: 'get'
    };
	var opts = $.extend(defaults, options);
	var parameters = '';

	$.each($(this).find('input').not(':disabled'), function(index, value){

		if( $(value).not(':submit') && ($(value).attr('name') != undefined) && ($(value).attr('name') != '') ){
			if(parameters){parameters += '&';}
			
			if( $(value).is(':radio') ){

				if( $(value).is(':checked') ){
					parameters += $(value).attr('name')+'='+encodeURIComponent($(value).attr('value'));
				}
			}
			else if( $(value).is(':checkbox') ){

				if( $(value).is(':checked') ){
					parameters += $(value).attr('name')+'='+encodeURIComponent($(value).attr('value'));
				}
				else if( $(value).is('.bool') ){
					parameters += $(value).attr('name')+'='+encodeURIComponent(false);
				}
			}
			else{
				parameters += $(value).attr('name')+'='+encodeURIComponent($(value).attr('value'));
			}
		}
	});

	$.each($(this).find('button').not(':disabled'), function(index, value){
		if( ($(value).attr('name') != undefined) && ($(value).attr('name') != '') ){
			if(parameters){parameters += '&';}
			parameters += $(value).attr('name')+'='+encodeURIComponent($(value).attr('value'));
		}
	});

	$.each($(this).find('textarea').not(':disabled'), function(index, value){
		
		if( ($(value).attr('name') != undefined) && ($(value).attr('name') != '') ){
			if(parameters){parameters += '&';}
			
			if($(value).is('.tinymce')){
				parameters += $(value).attr('name')+'='+encodeURIComponent($(value).html());
			}else{
				parameters += $(value).attr('name')+'='+encodeURIComponent($(value).attr('value'));
			}
		}
	});

	$.each($(this).find('select').not(':disabled'), function(index, select){
        $('option:selected', select).each(function(index, option){
        	if(parameters){parameters += '&';}
			parameters += $(select).attr('name')+'='+encodeURIComponent($(option).attr('value'));
		});
	});
	return parameters;
};
