var currentIndexToEdit = null;function setDateValue(field, date)//================================ {  /*alert("You have picked: "+date + "|" + field);  alert( getDateNumbers(date) )  alert( getDateNumbers(date)[2] + "#" +  getDateNumbers(date)[1] + "#" + getDateNumbers(date)[0])  */  var dateArray = getDateNumbers(date);  var dateFr = dateArray[2] + "-" +  dateArray[1] + "-" + dateArray[0];    if( document.getElementById('matchDate') )  {    document.forms.match.date.value = date;    setTextContent( document.getElementById('matchDate'), dateFr);    return;  }    show('datesSortableTable');  insertDate(dateFr, date, 'datesTable')}function insertDate(dateFr, date, idTable)//========================================{  //=== cell with label and hidden field  var cell = document.createElement('td');  setTextContent( cell, dateFr);      var hiddenDate = document.createElement('input');  hiddenDate.setAttribute('type', 'hidden');  hiddenDate.value = date;  cell.appendChild(hiddenDate);  	  //=== cell with input text for hour : <td><input type="text"></td>  var cellHour = document.createElement('td');  var inputHour = document.createElement('input');  inputHour.setAttribute('type', 'text');  inputHour.setAttribute('size', '15');  inputHour.setAttribute('maxlength', '60');  cellHour.appendChild(inputHour);      //=== create a new row  var newRow = document.createElement('tr');  newRow.appendChild(cell);  newRow.appendChild(cellHour);  newRow.onclick = function(){managerDates.rowSelected(this);};  	   //=== insert the row  var theTable = document.getElementById(idTable);  theTable.tBodies[0].appendChild(newRow);  return;}function deleteDate()//==================={  if( managerDates.deleteRow() )  {     var theTable = document.getElementById('datesTable');    var nbRows   = theTable.tBodies[0].rows.length;    if( nbRows == 0 )      hide('datesSortableTable');	}}  function changeAddress(selectAddress)//==================================={  var index = selectAddress.options.selectedIndex;  if( index == 0 )  {    document.forms[0].address.value = "";    document.forms[0].address.disabled = false;  }  else  {    var theOption = selectAddress.options[selectAddress.selectedIndex];    if( allAccesses )    {      var access = allAccesses[theOption.getAttribute("value")];      if( access )        document.forms[0].access.value = access;      else        document.forms[0].access.value = "";    }    document.forms[0].address.value = getTextContent( theOption );    document.forms[0].address.disabled = true;  }  return true;}function submitInvitation(currentLanguage, inviteId, adminKey)//============================================================{  clearError("errorMessageAddress");  clearError("errorMessageDate");  if( !validateForm("invitation", currentLanguage, "errorMessage") )    return false;  document.getElementById("createButton").disabled = true;     var xmldoc;  if (document.implementation && document.implementation.createDocument)  {     xmldoc=document.implementation.createDocument("","",null);    Document.prototype.__defineGetter__("xml", function () {	return (new XMLSerializer()).serializeToString(this);	});	  }  else if (window.ActiveXObject)     xmldoc=new ActiveXObject("Microsoft.XMLDOM");  //=== Build the XML  var root = xmldoc.createElement("allSlots");  xmldoc.appendChild(root);      var form = document.forms.invitation;    // add the slot dates and times  var theTable = document.getElementById('datesTable');	var nbRows   = theTable.tBodies[0].rows.length;	if( nbRows > 0 )	{		for( var i=0; i<nbRows; i++ )		{			var theRow = theTable.tBodies[0].rows[i];			var valueDate = theRow.cells[0].childNodes[1].value;			var valueTime = theRow.cells[1].childNodes[0].value;		      var slot = xmldoc.createElement("slot");      createAndAppendXmlElement( "index", (i+1), slot, xmldoc);      createAndAppendXmlElement( "date", valueDate, slot, xmldoc);      createAndAppendXmlElement( "time", valueTime, slot, xmldoc);      root.appendChild(slot);		}	}  //alert(xmldoc.xml)  form.slotDates.value = xmldoc.xml;    if( inviteId == "0" )    postForm("service=createInvitation&", "invitation", createInvitationCB );  else    postForm("service=modifyInvitation&id="+ inviteId + "&adminKey="+ adminKey + "&", "invitation", createInvitationCB );    return false;}    function createInvitationCB(loader)//================================={  if (loader.getStatus())  {    var xmlAnswer = loader.req.responseXML.documentElement;	    var id = getFirstElementValue(xmlAnswer, "id");    var adminKey = getFirstElementValue(xmlAnswer, "adminKey");        //do it at the last minute : important to do it if use of browser backward button    document.getElementById("createButton").disabled = false;      window.location="invitation?service=showAdmin&id=" + id + "&adminKey=" + adminKey;  }  else  {    document.getElementById("createButton").disabled = false;    if( loader.errorMnemo == "ERROR_GEOCODE" )    {      hideSelectBeforeModal();      modalInviteManager.showModal();    }    else      alert('ko createInvitation' + loader.errorMessage + '|' + loader.errorMnemo);  }}function hideSelectBeforeModal()//=============================={  //hide row containing select : IE always show select on top !  if( document.getElementById("tr_existingAddr") )    setRowHidden( document.getElementById("tr_existingAddr"), true);}function showSelectAfterModal()//============================={  //show again row containing select : IE always show select on top !    if( document.getElementById("tr_existingAddr") )    setRowHidden( document.getElementById("tr_existingAddr"), false);}function modifyInvitation()//========================={  hide('addressHelp');   showSelectAfterModal();  modalInviteManager.hideModal();   document.forms[0].address.focus(); }function submitInvitationWithoutMap(currentLanguage, inviteId, adminKey)//======================================================================{  showSelectAfterModal();  modalInviteManager.hideModal();   setRadioValue("invitation", "map", 1);  submitInvitation(currentLanguage, inviteId, adminKey);}function submitAnswer(nbSlots, currentLanguage, isUpdate)//======================================================={  var form = null;  if( isUpdate == 0 )  {    if( !validateForm("invitationAnswer", currentLanguage, "errorMessage") )      return false;    form = document.forms.invitationAnswer;  }  else  {    form = document.forms.updateInvitationAnswer;  }      var xmldoc;  if (document.implementation && document.implementation.createDocument)  {     xmldoc=document.implementation.createDocument("","",null);    Document.prototype.__defineGetter__("xml", function () {	return (new XMLSerializer()).serializeToString(this);	});	  }  else if (window.ActiveXObject)     xmldoc=new ActiveXObject("Microsoft.XMLDOM");	  //=== Build the XML  var root = xmldoc.createElement("allSlots");  xmldoc.appendChild(root);  for( var i=1; i<=nbSlots; i++)  {    //var select = document.forms['invitationAnswer']["slot_" + i];    var select = form["slot_" + i];   // var select = form.selectName;  //alert(select + selectName + form[selectName])    var value = select.options[select.selectedIndex].getAttribute("value");   //alert(value)    var slot = xmldoc.createElement("slot");    createAndAppendXmlElement( "index",  i, slot, xmldoc);    createAndAppendXmlElement( "answer", value, slot, xmldoc);    root.appendChild(slot);  }  form.slotAnswers.value = xmldoc.xml;//alert("allSlots in XML : " + xmldoc.xml)    return true;}//---------------------------------------------------------// Global variable containing all personAnswer Objects//---------------------------------------------------------var personAnswerObjects = new Array();//---------------------------------------------------------// Class PersonAnswer//---------------------------------------------------------function PersonAnswer(index, id, name, comment, password) {  this.index = index;  this.answerId = id;  this.name     = name;  this.comment  = comment;  this.password = password;    // Store the choices for the given dates  this.choices = new Array();  // Add to the list of PersonAnswer Objects	personAnswerObjects[index] = this;}PersonAnswer.prototype = {	addChoice: function(index, value)	//===============================	{    this.choices[index] = value;	},		fillHTML: function()	//====================	{    var form = document.forms["updateInvitationAnswer"];        form.updateId.value = this.answerId;    if( this.comment )    //not if false      form.comment.value  = this.comment;    else      form.comment.value  = "";          var selIndex=1;    while(true)    {      var select = 	form["slot_" + selIndex];	      if( !select )        break;      var value = this.choices[selIndex];      if( value )      {        for (var i=0; i < select.options.length ;i++)        {  		    if( select.options[i].getAttribute("value") == value )  		    {  			     select.selectedIndex = i;  			     break;   	       }        }      }      else        select.selectedIndex = 0;      selIndex++;    }  }}function enterAndCheckPassword(index)//==================================={  currentIndexToEdit = index;  document.getElementById("cellName_"+ index).parentNode.className = "alternateRow";    var thePerson = personAnswerObjects[index];  setTextContent( document.getElementById("whois"), thePerson.name);  clearTextContent( document.getElementById("errorMessageForPassword") );  document.getElementById("passwordModel").value = thePerson.password;  document.getElementById("checkPass").value = "";    hide('updateAnswerDiv');  setRowHidden( document.getElementById("tr_newPerson"), true);     //hide row containing select : IE always show select on top !  modalPasswordManager.showModal();  document.getElementById("checkPass").focus();}function checkPasswordAndEdit(language)//====================================={  var field = document.getElementById("checkPass");  var val1 = field.value;  if( val1 == "" )  {    displayError( noText[language] + items[language]["checkPass"] , "errorMessageForPassword");    field.focus();    return false;  }  var val2 = document.getElementById("passwordModel").value;  if( val1 != val2 )  {    displayError( errorsLabels[language]["ERROR_ON_PASSWORD"] , "errorMessageForPassword");    field.focus();    return false;  }  //if( !validateForm("checkPassword", currentLanguage, "errorMessageForPassword") )    //return false;   show('updateAnswerDiv')  var thePerson = personAnswerObjects[currentIndexToEdit];  thePerson.fillHTML();    return false;}function cancelEdit()//==================={  document.getElementById("cellName_"+ currentIndexToEdit).parentNode.className = "";  setRowHidden( document.getElementById("tr_newPerson"), false);     //show again row containing select : IE always show select on top !  modalPasswordManager.hideModal();  return false;}//---------------------------------------------------------// Mail Management//---------------------------------------------------------function resetAnnounce()//======================{  var form = document.forms["invitationPublish"];  form["actionMail"][0].checked = false;  form["actionMail"][1].checked = false;  form["actionMail"][2].checked = false;    //=== clear the mails table  var theTableBody = document.getElementById('mailsTable').tBodies[0];  var nbRows = theTableBody.rows.length;  for( var i=0; i<nbRows; i++)    theTableBody.removeChild( theTableBody.rows[0] );}function manageMyMail(object)//==========================={  var cb0 = document.forms["invitationPublish"]["actionMail"][0];  var cb1 = document.forms["invitationPublish"]["actionMail"][1];  var cb2 = document.forms["invitationPublish"]["actionMail"][2];    if( !cb0.checked && !cb1.checked && !cb2.checked )  //=== no checkbox checked : everything is hidden  {    setRowHidden( document.getElementById("tr_myEmail"), true );    setRowHidden( document.getElementById("tr_submit"), true );    setRowHidden( document.getElementById("tr_allMails"), true );    setRowHidden( document.getElementById("tr_mailsTable"), true );    setRowHidden( document.getElementById("tr_mailMessage"), true );  }  else  {    //=== any checkbox checked needs myEmail and submit    setRowHidden( document.getElementById("tr_myEmail"), false );    setRowHidden( document.getElementById("tr_submit"), false );      if( cb1.checked )    {      setRowHidden( document.getElementById("tr_allMails"), false );      setRowHidden( document.getElementById("tr_mailsTable"), false );      setRowHidden( document.getElementById("tr_mailMessage"), false );    }    else    {      setRowHidden( document.getElementById("tr_allMails"), true );      setRowHidden( document.getElementById("tr_mailsTable"), true );      setRowHidden( document.getElementById("tr_mailMessage"), true );    }  }}function submitMail(currentLanguage)//=================================={  if( validateForm("invitationPublish", currentLanguage, "errorMessage") )  {    clearError('errorMessage');    clearError('errorMessageMail');        hide('mailToMeDiv');    hide('mailToOthersDiv');    hide('mailErrorDiv');        document.getElementById("sendMailButton").disabled = true;        var form = document.forms["invitationPublish"];    form.actionMail_1.value = (form["actionMail"][0].checked ? '1':'0');    form.actionMail_2.value = (form["actionMail"][1].checked ? '1':'0');    form.actionMail_3.value = (form["actionMail"][2].checked ? '1':'0');        if(  form.actionMail_2.value == '1' )    {      var xmldoc = buildXMLEmail();      if( !xmldoc )   //=== buildXMLEmail returns false if no mails      {        document.getElementById("sendMailButton").disabled = false;        displayError( errorsLabels[currentLanguage]["ERROR_NO_MAIL"] , "errorMessageMail");        return false;      }      form.allMails.value = xmldoc.xml;    }    else      form.allMails.value = "";          postForm("", "invitationPublish", manageResultMail);  }  return false;}function manageResultMail(loader)//================================{  document.getElementById("sendMailButton").disabled = false;     var xmlDoc = loader.req.responseXML.documentElement;		var elemOk = xmlDoc.getElementsByTagName("ok");	if( elemOk &&  elemOk.length > 0 )	{	   //for the moment we do not use the nbMails returned    var form = document.forms["invitationPublish"];    if( form["actionMail"][0].checked )      show('mailToMeDiv');    if( form["actionMail"][1].checked )      show('mailToOthersDiv');    if( form["actionMail"][2].checked ) //will not be displayed if failure to send mails      show('alertMailDiv');             //we could imagine a more complex return to sendPublicationMail          resetAnnounce();    setRowHidden( document.getElementById("tr_myEmail"), true );    setRowHidden( document.getElementById("tr_allMails"), true );    setRowHidden( document.getElementById("tr_submit"), true );    setRowHidden( document.getElementById("tr_mailsTable"), true );    setRowHidden( document.getElementById("tr_mailMessage"), true );        //=== we update the table of broadcasts    var elemBroadcast = xmlDoc.getElementsByTagName("broadcast");    if( elemBroadcast &&  elemBroadcast.length > 0 )    {      var theTableBody = document.getElementById('broadcastTable').tBodies[0];      //=== clear the person table      var nbRows = theTableBody.rows.length;      for(var i=0; i<nbRows; i++)        theTableBody.removeChild( theTableBody.rows[0] );      //============= Fill the broadcast Data      for( var i=0; i<elemBroadcast.length; i++)      {        var myRowData = new Array();        myRowData.push( getFirstElementValue(elemBroadcast[i] , "creationDateFR") );        myRowData.push( getFirstElementValue(elemBroadcast[i] , "email") );                addRowToSortableTable( false, 'broadcastTable', '', '', myRowData);      }      show('broadcastDiv');    }  }  else     show('mailErrorDiv');}//---------------------------------------------------------// Management of Information closure//---------------------------------------------------------function closeInvitation()//========================{  setRowHidden( document.getElementById("tr_closeMessage"), false );  setRowHidden( document.getElementById("tr_closeLinks"), false );}function cancelCloseInvitation()//=============================={  setRowHidden( document.getElementById("tr_closeMessage"), true );  setRowHidden( document.getElementById("tr_closeLinks"), true );}function executeCloseInvitation(id, adminKey)//==========================================={  executeAjax( "invitation?service=closeInvitation&id=" + id + "&adminKey=" + adminKey);  hide('commandTable');  show('closeDiv');  return false;}