// Fonction qui teste si tous les charact�res sont des chiffres
function isAllNum(value, signed) {
	var i=0;

	while (i<value.length) {
		if (value.charAt(i)<'0' || value.charAt(i)>'9' || (i==0 && value.charAt(i)=='-' && signed!=0))
			return false;
		i++;
	}

	return true;
}


function doaction(sAction,iNumForm){
	document.forms[iNumForm].action.value=sAction;
	if(checkForm(document.forms[iNumForm],'')){
		//alert('Submitted');
		//alert(document.forms[iNumForm].action.value);
		document.forms[iNumForm].submit();
	}
}
// Fait une premi�re v�rification sur le formulaire (bas� sur le nom)
function checkFormName(name) {
	var form=eval("document." + name);
	checkForm(form, '');
}

// Fait une premi�re v�rification sur le formulaire
function checkForm(form, onsubmit) {
	var i=0, field, error=false, j;
	var num;

//	for (i=0; i<form.length; i++) { // ne marche pas sous Opera car length=0
	while (form.elements[i] && !error) {
		field=form.elements[i];

		switch(field.type) {
			case 'radio':
				var j;
				field=eval ("document." + form.name + "." + field.name);	// on change le path du field car ici on a un element de l'array

				// Est ce qu'on a d�j� v�rifier ce champ (dans le formulaire il y a autant d'entrer pour ce champ que de bouton radio)
				if (!field.alreadychecked && field.errorString) {
					error=true;

					for (j=0; j<field.length; j++) {
						if (field[j].checked) {
							error=false;
							break;
						}
					}

					if (error==false)
						field.alreadychecked=true;
				}

				break;

			case 'text':
			case 'password':
			case 'textarea':
				if (field.minlength>field.value.length) {
					error=true;
				} else if (field.maxlength && field.maxlength<field.value.length) {
					error=true;
				}

				if (field.numeric) {
					if (!isAllNum(field.value, field.numeric==2)) {
						error=true;
					}

					j=0;

					while (j<field.value.length && field.value.charAt(j)=='0') {
						j++;
					}

					if (j>0 && j<field.value.length) {
						num=parseInt(field.value.substring(j, field.value.length));
					} else {
						num=parseInt(field.value);
					}

					if (field.minvalue && num<field.minvalue) {
						error=true;
					}

					if (field.maxvalue && num>field.maxvalue) {
						error=true;
					}
				}
				break;

			default:
				break;
		}

		i++;
	}

	// Est ce qu'il y a une erreur
	if (!error) {
		if (onsubmit) {		// est ce qu'il faut appeler une fonction avant d'appeler le formulaire pour le valider
			if (eval(onsubmit)) {
				// La fonction � retourner vrai => on peut envoyer le formulaire
				form.submited.value=1;
				return true;
			}

		} else {
			form.submited.value=1;
			return true;
		}

	} else {
		// Oui => on affiche le message d'erreur
		alert(field.errorString);

		if (field.errorScript!='') {
			eval(field.errorScript);
		}
	}

	// Remet � zero la variable alreadychecked des champs de type radio
	i=0;

	while (form.elements[i]) {
		field=form.elements[i];

		if (field.type=='radio') {
			field.alreadychecked=false;
		}

		i++;
	}

	return false;
}

// Change l'URL de la fenetre (fonction appeler par les formulaires)
function cancelForm(newLocation) {
	window.location.href=newLocation;
}

// Fonction qui demande une confirmation et en cas de success va � l'URL donn�e
function gotoWithConfirm(text, url) {
	if (confirm(text)) {
		window.location.href=url;
	}
}

// Fonctions pour le formulaire avec une couleur
function getHexColor(r, g, b) {
	r=hex(r);
	g=hex(g);
	b=hex(b);

	if (r.length==0)
		r='00';

	if (g.length==0)
		g='00';

	if (b.length==0)
		b='00';

	if (r.length==1)
		r='0'+r;

	if (g.length==1)
		g='0'+g;

	if (b.length==1)
		b='0'+b;

	return '#'+r+g+b;
}

function setColor(form, field, color) {
	var r, g, b;
	r=color&0xe0;
	g=(color&0x18)<<3;
	b=(color&0x7)<<5;
	eval('document.' + form + '.' + field).value=getHexColor(r, g, b);
	eval('document.' + form + '.sRed_' + field).value=r;
	eval('document.' + form + '.sGreen_' + field).value=g;
	eval('document.' + form + '.sBlue_' + field).value=b;
	endPreview(form, field);
}

function setRGBColor(form, field, r, g, b) {
	r=parseInt(r);
	g=parseInt(g);
	b=parseInt(b);
	eval('document.' + form + '.' + field).value=getHexColor(r, g, b);
	endPreview(form, field);
}

function colorUpdated(form, field) {
	var r, g, b;
	var color=eval('document.' + form + '.' + field).value.substring(1,7);
	r=dec(color.substring(0,2));
	g=dec(color.substring(2,4));
	b=dec(color.substring(4,6));
	eval('document.' + form + '.sRed_' + field).value=r;
	eval('document.' + form + '.sGreen_' + field).value=g;
	eval('document.' + form + '.sBlue_' + field).value=b;
	endPreview(form, field);
}

function previewColor(field, color) {
	var style=getLayerStyle('preview_' + field);
	style.background=getHexColor((color&0xe0), (color&0x18)<<3, (color&0x7)<<5);
}

function endPreview(form, field) {
	var style=getLayerStyle('preview_' + field);
	style.background=eval('document.' + form + '.' + field).value;
}
