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 xmlDataList;
    var i;
    
    if (objSpeakerHttp.readyState == 4)
    {
        xmlDataRoot = objSpeakerHttp.responseXML.getElementsByTagName('data')[0];
        xmlDataList = xmlDataRoot.getElementsByTagName('data');
        selSpeaker = document.getElementById('speaker');
        
        selSpeaker.remove(0);
        
        for (i=0; i<xmlDataList.length; i++)
        {
            opt = new Option(xmlDataList[i].getAttribute('forename') + ' ' + xmlDataList[i].getAttribute('surname'), xmlDataList[i].getAttribute('id'));
            selSpeaker.options[selSpeaker.options.length] = opt;
        }
    }
}

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.innerText = "add speaker";
    hdnId.value = '';
    txtSurname.value = '';
    txtForename.value = '';
    showDialog('frmspeaker');
}

function editSpeaker(xml)
{
    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.innerText = "edit speaker";
    hdnId.value = opt.value;
    txtSurname.value = arrNames[1];
    txtForename.value = arrNames[0];
    showDialog('frmspeaker');
}

function serialiseSpeaker()
{
    var objXml = getXmlParser();
    var objData = objXml.createElement('data');
    
    if (bSpeakerEdit)
    {
        objData.setAttribute('id', document.getElementById('speaker').value);
    }
    objData.setAttribute('forename', document.getElementById('forename').value);
    objData.setAttribute('surname', document.getElementById('surname').value);
    objXml.appendChild(objData);
    
    return objXml;
}

function speakerOk()
{
    var objXml = serialiseSpeaker();
    var url;
    
    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;
    objSpeakerHttp.send('xml=' + objXml.xml);
}

function speakerUpdated()
{
    var selSpeaker;
    var objXmlData;
    var opt;
    
    if (objSpeakerHttp.readyState == 4)
    {
        hideDialog('frmLoading');
        
        if (!displayError(objSpeakerHttp.responseXML))
        {
            selSpeaker = document.getElementById('speaker');
            objXmlData = objSpeakerHttp.responseXML.selectSingleNode('/data');
            
            if (bSpeakerEdit)
            {
                selSpeaker.childNodes[selSpeaker.selectedIndex].text = document.getElementById('forename').value + ' ' + document.getElementById('surname').value;
                showMessage('Speaker updated.', '', '');
            }
            else
            {
                opt = new Option(document.getElementById('forename').value + ' ' + document.getElementById('surname').value, objXmlData.getAttribute('id'));
                selSpeaker.options[selSpeaker.options.length] = opt;
                opt.selected = true;
                showMessage('Speaker added.', '', '');
            }
        }
    }
}

function speakerCancel()
{
    hideDialog('frmspeaker');
}
