Cedille.appli = Cedille.appli||{}

Cedille.appli.submit = function(evtTag, evtParams, evtSrc, params)
{ // TODO : valider les paramètres
	var
	d = document,
	e = function(n, v) { return '\n\t<textarea name="'+Cedille.htmlentities(n)+'">'+Cedille.htmlentities(v)+"</textarea>" },
	f = function(n, v) { return e("CEDILLE_"+n, v); },

	i, input, g, id, v, name, radios = [], files = [],
	divId = 'CEDILLE_FORM',
	spans = d.getElementsByTagName("span"),
	n = d.getElementById(divId)||false,
	x = f("SERVICE", "page");
	if (n)
		n.parentNode.removeChild(n);
	ps = d.getElementById("CEDILLE_PAGESTATE");
	x+= f("PAGESTATE", ps?ps.value:"");
	x+= f("EVTSRC", evtSrc);
	x+= f("EVT", evtTag);
	x+= f("XY", (window.pageXOffset||d.body.scrollLeft||d.documentElement.scrollLeft||0) + ' ' +
	            (window.pageYOffset||d.body.scrollTop||d.documentElement.scrollTop||0) );

	for(i=0; i<spans.length; i++)
	{ // !!! ne pas utiliser getAttribute : ne marche pas correctement avec IE
		n = spans[i].getAttributeNode("class");
		n = n?n.nodeValue||"":"";
		if (n.substr(0,12) == "CEDILLE_COM_")
		{
			input = spans[i].firstChild;
			g = input.nodeName.toLowerCase();
			if (g == 'input')
				g = input.type||"text";
			v = input.value||"";
			id = n.substr(12);
			switch(g)
			{
				case "text":
				case "hidden":
				case "select":
				case "textarea":
					x+= f('COMVALUE_'+id, v);
					break;
				case "password":
					x+= f('COMVALUE_'+id, (v/*.replace(/(^\s*)|(\s*$)/g,'')*/!=""?Cedille.md5(v):""));
					break;
				case "checkbox":
					x+= f('COMVALUE_'+id, input.checked?"checked":"");
					break;
				case "radio":
					if (!radios[id])
						radios[id] = "";
					if (input.checked)
						radios[id] = v;
					break;
				case "file":
					// on fait une copie de input et on échange cette copie avec input dans le DOM
					// C'est un artifice. Ca permet d'éviter de voir dispaître les input[type=file]
					// on aurait pu mettre le clone de input dans listes mais IE ne
					// conserve pas la valeur de l'attribut "value" au clonage :o(
					var clone = input.cloneNode(true);
					(o=d.createAttribute("name")).nodeValue = id.substr(0, id.indexOf('_'));
					input.parentNode.replaceChild(clone, input).setAttributeNode(o);
					files.push([input, id.substr(id.indexOf('_')+1)]);
					break;
			}
		}
	}
	for(id in radios)
		x += f('COMVALUE_'+id, radios[id]);
	for(i in params)
		x+= f('PARAM_'+i, params[i]);
	for(i in evtParams)
		x+= f('EVTPARAM_'+i, evtParams[i]);
	n = d.createElement("div");
	n.id = divId;
	x = '<form style="display:none"' + (files.length==0?'':(' enctype="multipart/form-data"')) + ' method="post" action=" ">' // !!!! ne pas enlever l'espace dans l'attribut "action"
	+ x + '\n</form>';
	//alert(x);
	n.innerHTML = x;
	
	for(i in files)
	{
		x = '<input name="MAX_FILE_SIZE" value="'+(files[i][1]==''?'99999999999':files[i][1])+'"/>';
		uu = d.createElement("div");
		uu.innerHTML = x;
		n.firstChild.appendChild(uu);
		n.firstChild.appendChild(files[i][0]);
	}
	d.getElementsByTagName("body")[0].appendChild(n);
	n.firstChild.submit();
}




