var objServiceHttp;
var bServiceEdit;

function loadServices()
{
    objServiceHttp = GetXmlHttp();
    objServiceHttp.open("GET", "../common/db.php5?op=getall&entity=service", true);
    objServiceHttp.onreadystatechange = servicesLoaded;
    objServiceHttp.send(null);
}

/////////////////////////////////////////////////////////////////////
// Receives the XML with service data and displays it.
/////////////////////////////////////////////////////////////////////
function servicesLoaded()
{
    var xmlDataRoot;
    var xmlDataList;
    var selService;
    var i;
    
    if (objServiceHttp.readyState == 4)
    {
        xmlDataRoot = objServiceHttp.responseXML.getElementsByTagName('reply')[0];
        xmlDataList = xmlDataRoot.getElementsByTagName('service');
        selService = document.getElementById('service');
        
        selService.remove(0);                      // remove the 'loading...' option
        
        for (i=0; i<xmlDataList.length; i++)
        {
	        var service = xmlDataList[i].getElementsByTagName('name')[0].childNodes[0].nodeValue;
	        var id = xmlDataList[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
            opt = new Option(service, id);
            selService.options[selService.options.length] = opt;
        }
    }
} // end of servicesLoaded

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

function addService()
{
    var serviceTitle = document.getElementById('serviceTitle');
    var hdnId = document.getElementById('serviceid');
    var txtName = document.getElementById('servicename');

    bServiceEdit = false;
    serviceTitle.innerHTML = 'add service';
    hdnId.value = '';
    txtName.value = '';
    showDialog('frmservice');
} // end of addService

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

function editService()
{
    var serviceTitle = document.getElementById('serviceTitle');
    var hdnId = document.getElementById('serviceid');
    var txtName = document.getElementById('servicename');
    var selService = document.getElementById('service');
    var opt = selService.options[selService.selectedIndex];
    
    bServiceEdit = true;
    serviceTitle.innerHTML = "edit service";
    hdnId.value = opt.value;
    txtName.value = opt.text;
    showDialog('frmservice');
} // end of editService

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

function serialiseService()
{
  var objXml = getXmlParser();
  var objData = objXml.createElement('name');

  x = objXml.getElementsByTagName("data")[0];

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

  newtext = objXml.createTextNode(document.getElementById('servicename').value);
  objData.appendChild(newtext);
  x.appendChild(objData);

  return objXml;
}  // end of serialiseService

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

function serviceOk()
{
  var objXml = serialiseService();
  var url;
  var a;

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

  hideDialog('frmservice');
  showDialog('frmloading');

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

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

/////////////////////////////////////////////////////////////////////
// function used as callback when service has been added or editied.
/////////////////////////////////////////////////////////////////////
function serviceUpdated()
{

  if (objServiceHttp.readyState == 4)
  {
    hideDialog('frmloading');
    var xmlDoc = objServiceHttp.responseXML;       // get the XML returned 
    var xmlReply  = xmlDoc.documentElement;

    if (!displayError(xmlReply))
    {
      var selService = document.getElementById('service');

      if (bServiceEdit)
      {
        selService.options[selService.selectedIndex].text = document.getElementById('servicename').value;
        showMessage('Service updated.', '', '');
      }
      else
      {
        var xmlId = xmlReply.getElementsByTagName('id')[0];
        var opt = new Option(document.getElementById('servicename').value, xmlId.childNodes[0].nodeValue);
        selService.options[selService.options.length] = opt;
        opt.selected = true;
        showMessage('Service added.', '', '');
      }
    }
  }
}  // end of serviceUpdated

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

function serviceCancel()
{
    hideDialog('frmservice');
}

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

