function myOnChange()
{
    //alert("onChange [id : "+ this.id + "]");         
    check_champ(this.id);
}
function myOnFocus()
{
    //alert("onFocus [id : "+ this.id + "]");            
}
function myOnClick()
{
    //alert("onClick [id : "+ this.id + "]");            
}
function myOnBlur()
{
    //alert("onBlur [id : "+ this.id + "]");            
}
function myOnSubmit()
{
    //alert("onSubmit");
    return check_form();
}

function count_tr(p_oTbody)
{
	var oTr = p_oTbody.childNodes;
	var i = 0;
	var iCount = 0;
	for(i = 0; i < oTr.length; i++)
	{
		if (oTr.item(i).nodeType == 1)
		{
			iCount++;
		}
	}
	return iCount;
}

function reCountFieldId(p_sOriginalId, p_iNewNumber)
{
	var sOrigId = p_sOriginalId;
	var sNewId = sOrigId;
	
	if (typeof(sOrigId) != 'undefined')
	{
		if (sOrigId.indexOf("_") > 0)
		{
		    var iFirstSep = sOrigId.indexOf("_");
		    var iScndSep = sOrigId.substring(iFirstSep + 1, sOrigId.length).indexOf("_") + iFirstSep + 1;
		    //alert('id : ' + sOrigId + ' - first : ' + iFirstSep + ' scnd : ' + iScndSep + ' orig length : ' + sOrigId.length);
			sNewId = sOrigId.substr(0, iFirstSep + 1);
			sNewId += p_iNewNumber;
			if (iScndSep != iFirstSep)
			{
				sNewId += sOrigId.substring(iScndSep, sOrigId.length);
			}
			//alert(oSubNodeList.item(j).nodeName + " : " +'id : ' + sOrigId + ' => ' + sNewId);								
		}
		else
		{
			sNewId += p_iNewNumber;
		}
	}
	return sNewId;
}

function remove_key_in_array(p_aArray, p_sKeyToRemove)
{
	var aNew = new Array();
	for(key in p_aArray)
	{
		if (key != p_sKeyToRemove)
		{
			aNew[key] = p_aArray[key]
		}
	}
	return aNew;
}

function update_key_in_array(p_aArray, p_sOldKey, p_sNewKey)
{
	var aNew = new Array();
	for(key in p_aArray)
	{
		if (key != p_sOldKey)
		{
			aNew[key] = p_aArray[key]
		}
		else
		{
			aNew[p_sNewKey] = p_aArray[key];
		}
	}
	return aNew;
}

function add_form_line(idChamp, tableName)
{
	var i = 0;
	var j = 0;	
	var oChamp = document.getElementById(idChamp);
	var iCurrentIndex = parseInt(document.getElementById("nb_field_" + tableName).value);
	var oTd = oChamp.parentNode;
	var oTr = oTd.parentNode;
	var oTbody = oTr.parentNode;	
	var oNewTr = document.createElement("tr");	
	var oTdList = oTr.childNodes;
	//alert('sectrowindex : ' + oTr.sectionRowIndex + " - length : " + count_tr(oTbody));
	if (parseInt(oTr.sectionRowIndex) == (count_tr(oTbody) - 1))
	{
		for(i = 0; i < oTdList.length; i++)
		{
			if(oTdList.item(i).nodeType == 1)
			{
				var oNewTd = document.createElement("td");
				var oSubNodeList = oTdList.item(i).childNodes;
				for(j = 0; j < oSubNodeList.length; j++)
				{
					if (oSubNodeList.item(j).nodeType == 1)
					{							
						//alert(oSubNodeList.item(j).nodeName + " : " + oSubNodeList.item(j).id);
						var oNewInpt = oSubNodeList.item(j).cloneNode("true");
						if (oSubNodeList.item(j).nodeName.toUpperCase() == "A")
						{
							oSubNodeList.item(j).style.display = "inline";
							var sOrigId = oSubNodeList.item(j).id;
							oNewInpt.id = reCountFieldId(sOrigId, iCurrentIndex);
						}
						else
						{
							if (oSubNodeList.item(j).nodeName.toUpperCase() == "LABEL")
							{
								var sOrigId = oSubNodeList.item(j).getAttribute("for");
								var sNewId = reCountFieldId(sOrigId, iCurrentIndex);
																
								//alert('for id : ' + sOrigId + ' => ' + sNewId);
								oNewInpt.setAttribute("for", sNewId);							
							}
							else
							{
								var sOrigName = oSubNodeList.item(j).name;
								oNewInpt.name = reCountFieldId(sOrigName, iCurrentIndex);;
								
								var sOrigId = oSubNodeList.item(j).id;
								var sNewId = reCountFieldId(sOrigId, iCurrentIndex);
								oNewInpt.id = sNewId
								if (oSubNodeList.item(j).type != "radio")
								{
									oNewInpt.value = oSubNodeList.item(j).defaultValue;
								}
								
								//Copie des tableaux de validation
								copyValidationArrays(sOrigId, sNewId);
							}
						}
						oNewTd.appendChild(oNewInpt);																		
					}
				}
				oNewTr.appendChild(oNewTd);
			}
		}
		oTbody.appendChild(oNewTr);
		iCurrentIndex++;
		document.getElementById("nb_field_" + tableName).value = iCurrentIndex;
	}
}

function removeFromValidationArrays(p_sId)
{
	if (tabOblig[p_sId] != null)
	{
		tabOblig = remove_key_in_array(tabOblig, p_sId);
	}
	if (tabObligInit[p_sId] != null)
	{
		tabObligInit = remove_key_in_array(tabObligInit, p_sId);
	}
	if (tabType[p_sId] != null)
	{
		tabType = remove_key_in_array(tabType, p_sId);
	}
	if (tabMaxSize[p_sId] != null)
	{
		tabMaxSize = remove_key_in_array(tabMaxSize, p_sId);
	}
	if (tabScan[p_sId] != null)
	{
		tabScan = remove_key_in_array(tabScan, p_sId);
	}
	if (tabMini[p_sId] != null)
	{
		tabMini = remove_key_in_array(tabMini, p_sId);
	}
	if (tabMaxi[p_sId] != null)
	{
		tabMaxi = remove_key_in_array(tabMaxi, p_sId);
	}		
}

function updateValidationArrays(p_sOldId, p_sNewId)
{
	if (tabOblig[p_sOldId] != null)
	{
		tabOblig = update_key_in_array(tabOblig, p_sOldId, p_sNewId);
	}
	if (tabObligInit[p_sOldId] != null)
	{
		tabObligInit = update_key_in_array(tabObligInit, p_sOldId, p_sNewId);
	}
	if (tabType[p_sOldId] != null)
	{
		tabType = update_key_in_array(tabType, p_sOldId, p_sNewId);
	}
	if (tabMaxSize[p_sOldId] != null)
	{
		tabMaxSize = update_key_in_array(tabMaxSize, p_sOldId, p_sNewId);
	}
	if (tabScan[p_sOldId] != null)
	{
		tabScan = update_key_in_array(tabScan, p_sOldId, p_sNewId);
	}
	if (tabMini[p_sOldId] != null)
	{
		tabMini = update_key_in_array(tabMini, p_sOldId, p_sNewId);
	}
	if (tabMaxi[p_sOldId] != null)
	{
		tabMaxi = update_key_in_array(tabMaxi, p_sOldId, p_sNewId);
	}		
}

function copyValidationArrays(p_sOldId, p_sNewId)
{
	if (tabType[p_sOldId] != null)
	{
		tabType[p_sNewId] = tabType[p_sOldId];
	}
	if (tabObligInit[p_sOldId] != null)
	{
		tabObligInit[p_sNewId] = tabObligInit[p_sOldId];
	}
	if (tabMaxSize[p_sOldId] != null)
	{
		tabMaxSize[p_sNewId] = tabMaxSize[p_sOldId];
	}
	if (tabScan[p_sOldId] != null)
	{
		tabScan[p_sNewId] = tabScan[p_sOldId];
	}
	if (tabMini[p_sOldId] != null)
	{
		tabMini[p_sNewId] = tabMini[p_sOldId];
	}
	if (tabMaxi[p_sOldId] != null)
	{
		tabMaxi[p_sNewId] = tabMaxi[p_sOldId];
	}
	
	//Mise en obligatoire éventuel du champ de départ
	if (tabObligInit[p_sOldId] != null)
	{
		tabOblig[p_sOldId] = tabObligInit[p_sOldId];
	}
}

function debug(tab)
{
	sOut = '';
	for(key in tab)
	{
		sOut += key + " : " + tab[key] + "\n";
	}
	alert (sOut);
}

function delete_line(p_sTagAId, p_sTableName)
{
	//alert("Id : " + p_sTagAId);
	var oTagA = document.getElementById(p_sTagAId);
	var oTd = oTagA.parentNode;
	var oTr = oTd.parentNode;
	
	var j = 0;
	var k = 0;
	
	//Parcours des td pour mettre à jour les tableaux de validation
	var oTdList = oTr.childNodes;
	for(j = 0; j < oTdList.length; j++)
	{
		if (oTdList.item(j).nodeType == 1)
		{
			var oTdElementList = oTdList.item(j).childNodes;
			for(k = 0; k < oTdElementList.length; k++)
			{
				if (oTdElementList.item(k).nodeType == 1)
				{
					removeFromValidationArrays(oTdElementList.item(k).id);
				}
			}
		}
	}
	
	var oTbody = oTr.parentNode;
	oTbody.removeChild(oTr);
	var iCurrentIndex = parseInt(document.getElementById("nb_field_" + p_sTableName).value);
	iCurrentIndex--;
	document.getElementById("nb_field_" + p_sTableName).value = iCurrentIndex;	
	
	recalculate_index(oTbody, p_sTableName);
	
	//Retour false pour empécher d'exécuter le lien
	return false;
}

function recalculate_index(p_oTbody, p_sTableName)
{
	var iNbFields = document.getElementById("nb_field_" + p_sTableName).value;
	var oTrList = p_oTbody.childNodes;
	var i = 0;
	var j = 0;
	var k = 0;
	var iCurrentIndex = 0;
	for(i = 0; i < oTrList.length; i++)
	{
		if (oTrList.item(i).nodeType == 1)
		{
			var oTdList = oTrList.item(i).childNodes;
			for(j = 0; j < oTdList.length; j++)
			{
				if (oTdList.item(j).nodeType == 1)
				{
					var oTdElementList = oTdList.item(j).childNodes;
					for(k = 0; k < oTdElementList.length; k++)
					{
						if (oTdElementList.item(k).nodeType == 1)
						{
							if (oTdElementList.item(k).nodeName.toUpperCase() == "A")
							{
								var sOrigId = oTdElementList.item(k).id;
								oTdElementList.item(k).id = reCountFieldId(sOrigId, iCurrentIndex);
							}
							else
							{
								if (oTdElementList.item(k).nodeName.toUpperCase() == "LABEL")
								{
									var sOrigId = oTdElementList.item(k).getAttribute("for");
									var sNewId = reCountFieldId(sOrigId, iCurrentIndex);
																	
									//alert('for id : ' + sOrigId + ' => ' + sNewId);
									oTdElementList.item(k).setAttribute("for", sNewId);							
								}
								else
								{
									var sOrigName = oTdElementList.item(k).name;
									oTdElementList.item(k).name = reCountFieldId(sOrigName, iCurrentIndex);;
									
									var sOrigId = oTdElementList.item(k).id;
									var sNewId = reCountFieldId(sOrigId, iCurrentIndex);
									oTdElementList.item(k).id = sNewId;
									updateValidationArrays(sOrigId, sNewId);
								}
							}							
						}
					}
				}
			}
			iCurrentIndex++;
		}
	}
}

function check_champ(idChamp)
{
	try
	{
	    var typeChamp = tabType[idChamp];
	    
	    //alert("checkChamp : " + idChamp + " - type : " + typeChamp);
	    
	    switch(typeChamp)
	    {
	        case "string" :
	            return check_string(idChamp); 
	            break;
	        
	        case "date" :
	            return check_date(idChamp);
	            break;
	            
	        case "time" :
	            return check_time(idChamp);
	            break;
	            
	        case "dateTime" :
	            return check_datetime(idChamp);
	            break;
	        
	        case "int" :
	            return check_int(idChamp);
	            break;
	            
	        case "float" :
	            return check_float(idChamp);
	            break;
	            
	        case "phoneNumber":
	        	return check_phoneNumber(idChamp);
	        	break;
	        	
	        case "mail":
	        	return check_mail(idChamp);
	        	break;
	        	
	        case "zipCode":
	        	return check_zipCode(idChamp);
	        	break;
	        	
	        case "url":
	        	return check_url(idChamp);
	        	break;

        	case "file":
	        	return check_file(idChamp);
	        	break;
	
	        default :
	            return true;
	    }
    }
    catch(ex)
    {
    	return true;
    }
}
function check_string(idChamp)
{
    //alert("check_string");
    //alert(idChamp);
    var champs = document.getElementById(idChamp);
    //alert(champs.id);
    if(typeof(champs) != "undefined")
    {
	    if(typeof(champs.value) != "undefined")
	    {
		    if( champs.value != "" )
		    {
			    var valeur = champs.value;
			   // alert("Value of value " + valeur);
			    var bChampValide = true;
			    var regExp = "";
			        
			    if (tabMaxSize[idChamp] != null)
			    {
			        if (valeur.length > tabMaxSize[idChamp])
			        {
			            bChampValide = false;
			        }
			    }
			
			    if ((bChampValide) && (tabScan[idChamp] != null))
			    {
			        regExp = tabScan[idChamp];
			        if (!(valeur.match(regExp)))
			        {
			            bChampValide = false;
			        }
			    }
			    
			    if (bChampValide)
			    {
			        set_Valide(idChamp);
			        return true;
			    }
			    else
			    {
			        set_Invalide(idChamp);
			        return false;
			    }
		    }
		    else
		    {
		    	set_Invalide(idChamp);
		    	return false;
		    }
	    }
	    else
	    {
	    	set_Invalide(idChamp);
	    	return false;
	    }
    }
    else
    {
    	//alert("string invalide");
    	set_Invalide(idChamp);
    	return false;
    }
   
}

function check_file(idChamp)
{
    //alert("check_file");
    var valeur = document.getElementById(idChamp).value;
    
    if (valeur.length > 0)
    {
	    set_Valide(idChamp);
	    return true;
    }
    else
    {
    	if (document.getElementById('old' + idChamp))
    	{
    		if (document.getElementById('old' + idChamp).value.length > 0)
    		{
	    		set_Valide(idChamp);
			    return true;
    		}
    		else
    		{
		    	set_Invalide(idChamp);
		        return false;	
    		}
    	}
    	else
    	{
	    	set_Invalide(idChamp);
	        return false;
    	}
    }
}

function check_time(idChamp)
{
    //alert("check_time");
    var valeur = document.getElementById(idChamp).value;
	valeur = convertTime(valeur);
    
    if (valeur != false)
    {
        set_Valide(idChamp);

        
        document.getElementById(idChamp).value = valeur;
        return true;
    }
    else
    {
        set_Invalide(idChamp);
        return false;
    }
}

function check_date(idChamp)
{
    //alert("check_date");
    var valeur = document.getElementById(idChamp).value;
    valeur = convertDate(valeur);
    
    if (valeur != false)
    {
        set_Valide(idChamp);
        document.getElementById(idChamp).value = valeur;
        return true;
    }
    else
    {
        set_Invalide(idChamp);
        return false;
    }
}
function check_datetime(idChamp)
{
	var valeur = document.getElementById(idChamp).value;
	var sDate = "";
	var sTime = "";
	
	//Recherche du séparateur espace entre date et heure
	var iPosSep = valeur.indexOf(" ");
	
	if(iPosSep > 0)
	{
		sDate = valeur.substr(0, iPosSep);
		sTime = valeur.substr(iPosSep + 1, (valeur.length - (iPosSep + 1)));
	}
	else
	{
		//Pas de séparateur => interprété comme date uniquement
		sDate = valeur;
		sTime = "00:00:00";
	}

	sDate = convertDate(sDate);
	sTime = convertTime(sTime);
	
	if ((sDate == false) || (sTime == false))
	{
		valeur = false;
	}
	else
	{
		valeur = sDate + " " + sTime;
	}
	
	if (valeur != false)
    {
        set_Valide(idChamp);
        document.getElementById(idChamp).value = valeur;
        return true;
    }
    else
    {
        set_Invalide(idChamp);
        return false;
    }
}
function check_int(idChamp)
{
    //alert("check_int");
    
    var valeur = document.getElementById(idChamp).value;
    var bChampValide = true;
    
    if (isNaN(valeur))
    {
	    bChampValide = false;
    }
    else
    {
		valeur = parseInt(valeur);
	    if (tabMini[idChamp] != null)
	    {
	        //alert("mini : " + tabMini[idChamp]);
	        
	        if (valeur < tabMini[idChamp])
	        {
	            bChampValide = false;
	        }
	    }
	    if ((bChampValide) && (tabMaxi[idChamp] != null))
	    {
	        //alert("maxi : " + tabMaxi[idChamp]);
	        
	        if (valeur > tabMaxi[idChamp])
	        {
	            bChampValide = false;
	        }
	    }
    }
    
    if (bChampValide)
    {
        set_Valide(idChamp);
        return true;
    }
    else
    {
        set_Invalide(idChamp);
        return false;
    }
}

function check_float(idChamp)
{
    //alert("check_float");
    
    var valeur = document.getElementById(idChamp).value;
    var bChampValide = true;
    
    if (isNaN(valeur))
    {    	
	    bChampValide = false;
    }
    else
    {
        valeur = parseFloat(valeur);
	    if (tabMini[idChamp] != null)
	    {
	        //alert("mini : " + tabMini[idChamp]);
	        
	        if (valeur < tabMini[idChamp])
	        {
	            bChampValide = false;
	        }
	    }
	    if ((bChampValide) && (tabMaxi[idChamp] != null))
	    {
	        //alert("maxi : " + tabMaxi[idChamp]);
	        
	        if (valeur > tabMaxi[idChamp])
	        {
	            bChampValide = false;
	        }
	    }
    }
    
    if (bChampValide)
    {
        set_Valide(idChamp);
        return true;
    }
    else
    {
        set_Invalide(idChamp);
        return false;
    }
}

function check_zipCode(idChamp)
{
	//alert("check_zipCode(" + idChamp + ")");
	var champ = document.getElementById(idChamp);
	if(typeof(champ) != "undefined" && typeof(champ.value) != "undefined")
	{
		if(champ.value != "")
		{
			var regExp = new RegExp("[0-9]{5}","g");
			if(!regExp.test(champ.value))
			{
				set_Invalide(idChamp);
				return false;
			}
			else
			{
				set_Valide(idChamp);
				return true;
			}
		}
		else
		{
			set_Invalide(idChamp);
			return false;
		}
	}
	else
	{
		set_Invalide(idChamp);
		return false;
	}
}

function check_url(idChamp)
{
	//alert("check_url(" + idChamp + ")");
	var champ = document.getElementById(idChamp);
	if(typeof(champ) != "undefined" && typeof(champ.value) != "undefined")
	{
		if(champ.value != "")
		{
			var regExp = new RegExp("(http|https|ftp){1}://[a-zA-Z\-\._]{2,}\.[a-zA-Z]{2,}","g");
			if(regExp.test(champ.value))
			{
				set_Valide(idChamp);
				return true;
			}
			else
			{
				set_Invalide(idChamp);
				return false;
			}
		}
		else
		{
			set_Invalide(idChamp);
			return false;
		}
	}
	else
	{
		set_Invalide(idChamp);
		return false;
	}
}

function str_replace(stringToFind, stringReplacement, stringToReplaceIn)
{
	var stringToFind = new String(stringToFind);
	var stringReplacement = new String(stringReplacement);
	var stringToReplaceIn = new String(stringToReplaceIn);
	
	var findLength = stringToFind.length;
	var startPos = stringToReplaceIn.indexOf(stringToFind);
	
	return stringToFind.substring(0, startPos) + stringReplacement + stringToReplaceIn.substring(startPos + stringToFind.length);
}

function str_replace_all(stringToFind, stringReplacement, stringToReplaceIn)
{
	var stringToReturn = stringToReplaceIn;
	var i = 0;
	while(stringToReturn.indexOf(stringToFind) != -1 || i < stringToReplaceIn.length )
	{
		i++;
		stringToReturn  = str_replace(stringToFind, stringReplacement, stringToReturn);
	}
	return stringToReturn;
}

function check_phoneNumber(idChamp)
{
	var phoneNumber = document.getElementById(idChamp);
	if(phoneNumber.value.indexOf("+33 (0)") != -1)
	{
		var phoneNoThirty = str_replace("+33 (0)", "", phoneNumber.value);
	}
	else
	{
		var phoneNoThirty = phoneNumber.value;
	}
	var suppSpace = new RegExp("[ \f\n\r\t\v]","g");
	var phoneNoSpace = phoneNoThirty.replace(suppSpace,"");
	var regExp = new RegExp("([0-9]{10})");
	phoneNoSpace = '0' + phoneNoSpace;

	if(regExp.test(phoneNoSpace))
	{
		set_Valide(idChamp);
		return true;
	}
	else
	{
		set_Invalide(idChamp);
		return false;
	}
}

function check_mail(idChamp)
{
	emailId = document.getElementById(idChamp);
	var regExp = new RegExp("[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+","g");
	if(!regExp.test(emailId.value))
	{
		set_Invalide(idChamp);
		return false;
	}
	else
	{
		set_Valide(idChamp);
		return true;
	}
}

function check_form()
{
    //alert("check_form");
    
    
    var key = "";
    var bValid = true;
    var bOblig = true;
    var message = "";
    var valeur = "";
    var libelle = "";
    
    //Vérification de la validité des champs    
    for (key in tabType)
    {
        if (!(check_champ(key)))
        {
            if (tabOblig != null)
            {
                if (tabOblig[key] != null)
                {
                    if (document.getElementById(key))
                	{
                    	libelle = document.getElementById(key).title;
	                    message += "<li>" + libelle + " </li>\n";
	                    bValid = false;
	                }
                }
            }
        }
    }    
    
    
    //Vérification que les champs obligatoires sont présents
    if (bValid)
    {
        for (key in tabOblig)
        {
            if (document.getElementById(key))
           	{
           		if (tabType[key] != null)
           		{
           			if (tabType[key] != "file")
           			{
			            valeur = document.getElementById(key).value;
			            libelle = document.getElementById(key).title;
			            if (valeur == "")
			            {
			                message += "<li> " + libelle + " </li>\n";
			                bOblig = false;
			            }
			        }
	            }
            }
        }    
    }    
    
    message = "<ul>" + message + "</ul>";
    
    if (!(bOblig)) 
    {
    	messageErreur("", "Les champs obligatoires suivants n'ont pas été renseignés : ", message);
    }
    if (!(bValid)) 
    {
    	var sErrorTitle = "";
    	var sErrorHeader = "Les champs suivants sont incomplets ou leur format est invalide, <br />";
    	sErrorHeader += "merci de bien vouloir les corriger afin de poursuivre : ";
    	messageErreur(sErrorTitle, sErrorHeader, message);
    }
    
    bValid = ((bValid) && (bOblig));
    return bValid;
}

function set_Invalide(idChamp)
{
    //alert("set_invalide");
    var classInvalide = "inptInvalid";

    //document.getElementById(idChamp).className = classInvalide;
}
function set_Valide(idChamp)
{
    //alert("set_valide");
    var classValide = "inpt";
    
    //document.getElementById(idChamp).className = classValide;
}

function convertTime(szTime)
{
	//alert("convert time : " + szTime);
	var valeur = szTime;
	var heure = "0";
	var minute = "0";
	var seconde = "0";
	
	if (!isNaN(valeur))
	{
		var testVal = valeur;
		if ((testVal != "0") && (testVal.substr(0,1) == "0") && (testVal.length > 1)) {testVal = testVal.substr(1,testVal.length - 1);}
		if (parseInt(testVal) == 0)
		{
			valeur = "00:00:00";
		}
	}
	
	if (valeur.length > 0)
	{	
		//Test du format HHMISS ou HH:MI:SS
		if (isNaN(valeur))
		{		
			var positionSeparateur = valeur.indexOf(":");
			//alert("position sep : " + positionSeparateur);
			if (positionSeparateur > 0)
			{
				heure = valeur.substr(0, positionSeparateur);
				
				//alert("heure : " + heure);
				
				//Recherche de la présence de secondes dans la saisie
				var apHeure = valeur.substr(positionSeparateur + 1, (valeur.length - (positionSeparateur + 1)));
				
				//alert("apHeure : " + apHeure);
				var position2ndSep = apHeure.indexOf(":");
				//alert("position 2nd sep : " + position2ndSep);
				if (position2ndSep > 0)
				{
					minute = apHeure.substr(0, position2ndSep);
					//alert("minute : " + minute);
					seconde = apHeure.substr(position2ndSep + 1, apHeure.length - (position2ndSep + 1));
					//alert("seconde : " + seconde);
				}
				else
				{
					minute = apHeure;
					//alert("minute seule : " + minute);
				}
			}
			else
			{
				if(isNaN(valeur))
				{
					valeur = false;
				}
				else
				{
					heure = valeur;
					//alert("heure seule : " + heure);
				}
			}
		}
		else
		{
			//alert("Format HHMISS sur longueur : " + valeur.length);
			
			//On teste la longueur de la chaîne, si impaire => il manque le 0 initial
			if ((valeur.length % 2) != 0) {valeur = "0" + valeur;}
			//Format HHMISS
			if (valeur.length > 1)	{heure = valeur.substr(0,2);}			
			if (valeur.length > 3)	{minute = valeur.substr(2,2);}
			if (valeur.length > 5)	{seconde = valeur.substr(4,2);}
		}
		
		//alert("Après détection du format : " + heure + "h" + minute + "min" + seconde + "s");
		
		//Conversion en entier et vérification des plages de valeurs [traitement commun à tous les formats]
		if ((heure != "0") && (heure.substr(0,1) == "0") && (heure.length > 1)) {heure = heure.substr(1,1);}
		if ((minute != "0") && (minute.substr(0,1) == "0") && (minute.length > 1)) {minute = minute.substr(1,1);}
		if ((seconde != "0") && (seconde.substr(0,1) == "0") && (seconde.length > 1)) {seconde = seconde.substr(1,1);}
		
		//alert("Après suppression des zeros : " + heure + "h" + minute + "min" + seconde + "s");
		
		heure = parseInt(heure);
		minute = parseInt(minute);
		seconde = parseInt(seconde);
		
		if ((heure < 0) || (heure > 23)) {valeur = false;}
		if ((minute < 0) || (minute > 59)) {valeur = false;}
		if ((seconde < 0) || (seconde > 59)) {valeur = false;}
		//alert("Valeur après vérif des plages : " + valeur);
	}
	else
	{	
		valeur = false;
	}    
    
    if (valeur != false)
    {
	    if (heure < 10) {heure = "0" + heure;}
	    if (minute < 10) {minute = "0" + minute;}
	    if (seconde < 10) {seconde = "0" + seconde;}
	    //alert("formatage des données");
	    valeur = heure + ":" + minute + ":" + seconde;
    }
    
    //alert("valeur retournée par convertTime : " + valeur);
    
    return valeur;
}

function convertDate(szDate)
{

	var annee, mois, jour, tmp;
	var pivot;
	var d;		// utilisé pour la date pivot
	var start, pos;
	var dOut = "";

	// on parse la date pour récupérer les valeurs
	// par défaut JJ/MM/AA
	pos = start = 0;
	
	
	//test du format attaché JJMMAA ou JJMMAAAA
	if (!isNaN(szDate) )
	{		
		tmp = szDate.substr(0,2);
		if (tmp.substr(0,1) == "0") {tmp = tmp.substr(1,1);}
		jour = parseInt(tmp);
		
		tmp = szDate.substr(2,2);
		if (tmp.substr(0,1) == "0") {tmp = tmp.substr(1,1);}
		mois = parseInt(tmp);
		
		tmp = szDate.substr(4,szDate.length-4);
		if (tmp.substr(0,1) == "0") {tmp = tmp.substr(1,1);}
		annee = parseInt(tmp);

	}
	else
	{
		// premiere zone
		while(!isNaN(szDate.substr(pos,1)))
		{
			pos++;
		}
	
		tmp = szDate.substr(start,pos-start);
		if (tmp.substr(0,1) == "0") {tmp = tmp.substr(1,1);}
	
		jour = parseInt(tmp);
		//alert("Jour : " + jour + " - start : " + start + " - pos : " + pos);
		start = ++pos;

		// zone centrale
		// ajout du contréle pos <= szDate.length pour éviter des pbs de boucles sans fin
		// En effet si un seul caractère alpha est présent dans la chaîne (ex: 05/1978),
		// la boucle incrémente pos indéfiniment. Le substr par rapport à une position en dehors de la chaine
		// ne renvoit pas d'erreur et la valeur renvoyée ('') n'est pas égale à NaN !
		while(!isNaN(szDate.substr(pos,1)) && pos <= szDate.length)
		{
			pos++;
		}
	
		tmp = szDate.substr(start,pos-start);
		if (tmp.substr(0,1) == "0") {tmp = tmp.substr(1,1);}
	
		mois = parseInt(tmp);
		//alert("Mois : " + mois + " - start : " + start + " - pos : " + pos);
		start = ++pos;
	
		// derniere zone
		pos = szDate.length;
		tmp = szDate.substr(start,pos-start)
		if (tmp.substr(0,1) == "0") {tmp = tmp.substr(1,1);}
	
		annee = parseInt(tmp);
		//alert("Annee : " + annee + " - start : " + start + " - pos : " + pos);
	}
	
	if( (mois == 0) || (jour == 0) || isNaN(mois) || isNaN(jour) || isNaN(annee) )  
		//on ne teste pas l'annee nulle : (annee == 0) qui correspond à 2000  
		return false;

	// on teste AA/MM/JJ
	if(jour > 31)
	{
		if(annee < 31) { tmp = annee; annee = jour; jour = tmp; } else { return false; }
	}

	// on teste MM/JJ/AA
	if(mois > 12)
	{
		if(jour < 13) { tmp = mois; mois = jour; jour = tmp; } else { return false; }
	}

	// on converti l'année en 4 chiffres
	// le pivot est l'année actuelle + 1
	if(annee < 100)
	{
		d = new Date();
		pivot = (d.getFullYear() % 100) + 1;	// année pivot
		(annee > pivot)?(annee += 1900):(annee += 2000);
	}

	if(annee < 1000)
		return false;

	// on teste si le jour est supérieur au nombre de jours dans le mois
	if(jour > nbJM(mois, annee))
		return false;

	//objD.setFullYear(annee, mois - 1, jour);
	
	if (jour < 10) {jour = "0" + jour;}
	if (mois < 10) {mois = "0" + mois;}
	
	dOut = jour + "/" + mois + "/" + annee;
	return dOut;
}

function nbJM(mois, annee)
{
	var nbJ = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	
	if( (mois == 2) && (LeapYear(annee)) )
		return nbJ[mois-1] + 1;
	else
		return nbJ[mois - 1];
}

function LeapYear(y)
{
	return (y%4==0) == (y%100==0) == (y%400==0)
}

function messageErreur(titre, libelleCourt, libelleLong)
{
	//var rpath = document.getElementById("rpath").value;
	var rpath = './';
    var fenetre;
    var msg;
    
    msg = "<strong>"+ libelleCourt +"</strong><br />" + libelleLong;
    
    fenetre = popupcentree("",500,400);
    
    fenetre.document.write('<?xml version="1.0" encoding="ISO-8859-15" ?>\n');
    fenetre.document.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n');
    fenetre.document.write('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">\n');
    fenetre.document.write('    <head>\n');
    fenetre.document.write('        <title>Erreur</title>\n');
    fenetre.document.write('        <meta http-equiv="Content-type" content="text/html; charset=iso-8859-15" />\n');
    fenetre.document.write('        <meta http-equiv="PRAGMA" content="NO-CACHE" />\n');
    fenetre.document.write('        <link rel="stylesheet" type="text/css" href="'+ rpath +'ikea_form.css" media="screen" title="Normal" />\n');
    fenetre.document.write('    </head>\n');
    fenetre.document.write('    <body id="errorMessage">\n'); 
    fenetre.document.write('        <div class="errorMessage">\n');
    fenetre.document.write('            <h1>'+ titre +'</h1>\n');
    fenetre.document.write('            <p>\n');
    fenetre.document.write(msg);	
    fenetre.document.write('            </p>\n');
    fenetre.document.write('        </div>\n'); 
    fenetre.document.write('        <div class="blockButton"><a href="javascript:self.close();" class="fxBtn">Fermer la fen&ecirc;tre</a></div>\n');
    fenetre.document.write('    </body>\n');
    fenetre.document.write('</html>\n');   
}

function popupcentree(page,largeur,hauteur)
{
    var top=(screen.height-hauteur)/2;
    var left=(screen.width-largeur)/2;
    var hdwnd;
					
	try
	{
        hdwnd = window.open(page,"","toolbar=no, location=no, directories=no, status=no, scrollbars=yes, resizable=yes, copyhistory=no,top="+top+",left="+left+",width="+largeur+",height="+hauteur);        
    }
    catch(erreur)
    {
        alert("erreur");
    }
    return hdwnd;
}

function getMediathequeSelectedMedia(openerField, textField)
{
	form = document.getElementById("frmWidget");
	if(typeof(form.fileToAdd) == "undefined")
	{
		alert("Aucun élément à sélectionner dans cette catégorie.");
		return false;
	}
	if(typeof(form.fileToAdd.length) != "undefined")
	{
		for (i = 0; i < form.fileToAdd.length && !eval("form.fileToAdd[" + i +"].checked"); i++);
		if ( i == form.fileToAdd.length )
		{
			alert("Vous devez sélectionner un média à insérer");
			return false;
		}
		else
		{
			fieldValue = eval("form.fileToAdd[" + i +"].value");
		}
	}
	else
	{
		if(!form.fileToAdd.checked)
		{
			alert("Vous devez sélectionner un média à insérer");
		}
		else
		{
			fieldValue = form.fileToAdd.value;
		}
	}
	var reg = new RegExp("-", "g");
	var splittedString = fieldValue.split(reg);
	textField = opener.document.getElementById(textField);
	openerField = opener.document.getElementById(openerField);
	eval( "textField.value = '" + splittedString[0] + "';");
	eval( "openerField.value = '" + splittedString[1] + "';");
	window.close();
}

function delete_file(p_sFieldId)
{
	var oDelField = document.getElementById('del' + p_sFieldId);
	var oOldField = document.getElementById('old' + p_sFieldId);
	var oShowOldField = document.getElementById('showOld' + p_sFieldId);
	var oBtnDelField = document.getElementById('btnDel' + p_sFieldId);
	
	if (oDelField)
	{
		if(oOldField)
		{
			oDelField.value = oOldField.value;
			oOldField.value = '';
			if (oShowOldField)
			{
				oShowOldField.style.display = "none";
			}
			if (oBtnDelField)
			{
				oBtnDelField.style.display = "none";
			}
		}
	}
}
