function insertAfter(newElement,targetElement) {
    
    var parent = targetElement.parentNode;
    
    if(parent.lastchild == targetElement) {
        parent.appendChild(newElement);
    }
    else {
        parent.insertBefore(newElement, targetElement.nextSibling);
    }
}


/**
 * fonction validate()
 * Envoie le formulaire en ajax au script PHP qui valide la saisie.
 * Affiche les erreurs en fonction du JSON reçu
 **/
function validate(ajaxUrl,redirectUrl) {
    new Ajax.Request(ajaxUrl, {
                          method: 'post',
                          parameters : getAllElements(),
                          onSuccess: function(response) {
                            var spanTag;
                            jsonValidator = response.responseJSON;
                            
                            if (!jsonValidator) {
                                updateCaptcha();
                                alert("Une erreur est survenue");
                            }
                            else {
                                if (jsonValidator.msg) {
                                    updateCaptcha();
                                    alert(jsonValidator.msg);
                                }
                                else {
                                    if (eval(jsonValidator.error)) {
                                        updateCaptcha();
                                        alert("Des erreurs ont été trouvées!");
                                        for (var i=0;i<jsonValidator.controls.length;i++) {
                                            if (eval(jsonValidator.controls[i].item.error)) {
                                                $("lbl_" + jsonValidator.controls[i].item.columnName).style.color = "red";
                                                //il y a déja un contrôle validator créé;
                                                //donc on le montre
                                                if ($("validator" + jsonValidator.controls[i].item.columnName)) {
                                                    $("validator" + jsonValidator.controls[i].item.columnName).show();
                                                    $("validator" + jsonValidator.controls[i].item.columnName).innerHTML = jsonValidator.controls[i].item.message;
                                                }
                                                else {
                                                     spanTag = document.createElement("SPAN");
                                                     spanTag.innerHTML = jsonValidator.controls[i].item.message;
                                                     spanTag.id = "validator" + jsonValidator.controls[i].item.columnName;
                                                     insertAfter(spanTag,$(jsonValidator.controls[i].item.id));
                                                     spanTag.className = "validator_css";
                                                     
                                                }

                                            }
                                            else {
                                                
                                                if ($("validator" + jsonValidator.controls[i].item.columnName))
                                                    $("validator" + jsonValidator.controls[i].item.columnName).hide();
                                                if ($("lbl_" + jsonValidator.controls[i].item.columnName))
                                                    $("lbl_" + jsonValidator.controls[i].item.columnName).style.color = "";     //on enlève la couleur
                                            }
                                        }
                                     }
                                     else {
                                         if (redirectUrl != "")
                                            location.href = redirectUrl;
                                     }
                                }
                            }

                           $("divWait").hide();
                          }
                        });
}

/**
 * Créer un nouveau captcha si le contenant captcha existe!
 **/
function updateCaptcha() {
    if ($("td_Captcha"))
        new Ajax.Updater('td_Captcha', '/ajax/captcha.php');
}

function getAllElements() {

    var param_serialize = "";
    var i=0;
    inputs = document.getElementsByTagName("INPUT");
    selects = document.getElementsByTagName("SELECT");
    textarea = document.getElementsByTagName("TEXTAREA");

    for(i=0;i<inputs.length;i++)
        param_serialize += inputs[i].name + "=" + encodeURIComponent(inputs[i].value) + "&";

    for(i=0;i<selects.length;i++)
        param_serialize += selects[i].name + "=" + encodeURIComponent(selects[i].options[selects[i].selectedIndex].value) + "&";

    for(i=0;i<textarea.length;i++)
        param_serialize += textarea[i].name + "=" + textarea[i].value + "&";

    return param_serialize;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

