var objSpeakerHttp;
var bSpeakerEdit;

function loadSpeakers()
{
    objSpeakerHttp = GetXmlHttp();
    objSpeakerHttp.open("GET", "../common/db.php5?op=getall&entity=speaker", true);
    objSpeakerHttp.onreadystatechange = speakerLoaded;
    objSpeakerHttp.send(null);
}

function speakerLoaded()
{
    var xmlDataRoot;
    var xmlDataList;
    var selSpeaker;
    var i;

    if (objSpeakerHttp.readyState == 4)
    {
        xmlDataRoot = objSpeakerHttp.responseXML.getElementsByTagName('reply')[0];
        xmlDataList = xmlDataRoot.getElementsByTagName('speaker');
        selSpeaker = document.getElementById('speaker');

        selSpeaker.remove(0);

        for (i=0; i<xmlDataList.length; i++)
        {
	        var x = xmlDataList[i].getElementsByTagName('forename')[0].childNodes[0].nodeValue;
	        var y = xmlDataList[i].getElementsByTagName('surname')[0].childNodes[0].nodeValue;
	        var z = xmlDataList[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
            opt = new Option( x + ' ' + y , z);
            selSpeaker.options[selSpeaker.options.length] = opt;
        }
    }
} // end of speakerLoaded

/////////////////////////////////////////////////////////////////////

function addSpeaker()
{
    var speakerTitle = document.getElementById('speakerTitle');
    var hdnId = document.getElementById('speakerid');
    var txtSurname = document.getElementById('surname');
    var txtForename = document.getElementById('forename');

    bSpeakerEdit = false;
    speakerTitle.innerHTML = "add speaker";
    hdnId.value = '';
    txtSurname.value = '';
    txtForename.value = '';
    showDialog('frmspeaker');
} // end of addSpeaker

/////////////////////////////////////////////////////////////////////

function editSpeaker()
{
    var speakerTitle = document.getElementById('speakerTitle');
    var hdnId = document.getElementById('speakerid');
    var txtForename = document.getElementById('forename');
    var txtSurname = document.getElementById('surname');
    var selSpeaker = document.getElementById('speaker');
    var opt = selSpeaker.options[selSpeaker.selectedIndex];
    var arrNames = opt.text.split(' ');

    bSpeakerEdit = true;
    speakerTitle.innerHTML = "edit speaker";
    hdnId.value = opt.value;
    txtSurname.value = arrNames[1];
    txtForename.value = arrNames[0];
    showDialog('frmspeaker');
} // end of editSpeaker

/////////////////////////////////////////////////////////////////////

function serialiseSpeaker()
{
    var objXml   = getXmlParser();
    var objFore  = objXml.createElement('forename');
    var objSur   = objXml.createElement('surname');
    var newtext;
    var x = objXml.getElementsByTagName("data")[0];

    if (bSpeakerEdit)
    {
      var objId = objXml.createElement('id');
      newtext   = objXml.createTextNode(document.getElementById('speaker').value);
      objId.appendChild(newtext);
	  x.appendChild(objId);
    }

      newtext = objXml.createTextNode(document.getElementById('forename').value);
      objFore.appendChild(newtext);
	  x.appendChild(objFore);
      newtext    = objXml.createTextNode(document.getElementById('surname').value);
      objSur.appendChild(newtext);
	  x.appendChild(objSur);
    return objXml;
} // end of serialiseSpeaker

/////////////////////////////////////////////////////////////////////

function speakerOk()
{
  var objXml = serialiseSpeaker();
  var url;
  var a;

  if (bSpeakerEdit)
  {
    url = '../common/db.php5?op=update&entity=speaker';
  }
  else
  {
    url = '../common/db.php5?op=add&entity=speaker';
  }

  hideDialog('frmspeaker');
  showDialog('frmloading');

  objSpeakerHttp = GetXmlHttp();
  objSpeakerHttp.open("POST", url, true);
  objSpeakerHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  objSpeakerHttp.onreadystatechange = speakerUpdated;

  a = extractXml(objXml);
  objSpeakerHttp.send("abc=" + a);
} // end of speakerOk

/////////////////////////////////////////////////////////////////////
// function used as callback when speaker has been added or editied.
/////////////////////////////////////////////////////////////////////
function speakerUpdated()
{

  if (objSpeakerHttp.readyState == 4)
  {
    hideDialog('frmloading');

    var xmlDoc = objSpeakerHttp.responseXML;       // get the XML returned 
    var xmlReply  = xmlDoc.documentElement;

    if (!displayError(xmlReply))
    {
      var selSpeaker = document.getElementById('speaker');

      if (bSpeakerEdit)
      {
	    // update speaker
	    // collect data from the entry screen and display it on the main screen.
        var sindex = selSpeaker.selectedIndex;
	    selSpeaker.options[sindex].text = document.getElementById('forename').value + ' ' + document.getElementById('surname').value;
        showMessage('Speaker updated.', '', '');
      }
      else
      {
        var xmlId = xmlReply.getElementsByTagName('id')[0];
	    // add new speaker
	    // collect data from the entry screen, collect id from the returned XML
        var opt = new Option(document.getElementById('forename').value + ' ' + document.getElementById('surname').value, xmlId.childNodes[0].nodeValue);
        // create a new speaker option and select that option
        selSpeaker.options[selSpeaker.options.length] = opt;
        opt.selected = true;
        showMessage('Speaker added.', '', '');
      }
    }
  }
}  // end of speakerUpdated

/////////////////////////////////////////////////////////////////////

function speakerCancel()
{
  hideDialog('frmspeaker');
}

/////////////////////////////////////////////////////////////////////

