// generic request / response gateway using ajax


// Assembles the request string from the form fields.
function assembleRequestString(url,formId) {
    // assemble request string from form fields
    requestString = url+'?';
    form = document.getElementById(formId)
    for (i=0; i < form.elements.length; i++) {
        if (i > 0) {
            requestString = requestString + '&';
        }
        requestString = requestString + form.elements[i].name + '=' + form.elements[i].value;
    }
    return requestString;
}

// Sends request to server
function sendAjax(url,formId,responsePanelId,message,errorMessage) {
    requestString = assembleRequestString(url,formId);
    req = new XMLHttpRequest();
//    alert(requestString);
    req.open('GET',requestString,true);
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            if (req.status != 200) {
                if (errorMessage != null) {
                    insertText(responsePanelId,errorMessage);
                }
                else {
                    insertText(responsePanelId,'Error:'+req.responseText);
                }
            }
            else {
                if (message != null) {
                    insertText(responsePanelId,message);
                }
                else {
                    insertText(responsePanelId,req.responseText);
                }
            }
        }
    }
    req.send(null);
}

// inserts text into the specified node
function insertText(responsePanelId,responseText) {
    responsePanel = document.getElementById(responsePanelId);
    textNode = document.createTextNode(responseText);
    // first remove current child nodes
//	alert(responseText);
    if (responsePanel.childNodes != null) {
        try {
            responsePanel.removeChild(responsePanel.firstChild);
        }
        catch (e) {
            // do nothing?
        }
    }
//    responsePanel.appendChild(textNode);
	responsePanel.innerHTML=responseText;
    responsePanel.style.display='block';
}

function addElement(div,display,value ) {
  var ni = document.getElementById(div);
  var numi = document.getElementById('objectIndex');
  var num = (document.getElementById('objectIndex').value -1) + 2;
  numi.value = num;
  var newdiv = document.createElement('div');
  var divIdName = div+num;
  newdiv.setAttribute('id',divIdName);
  newdiv.innerHTML = "<input type = 'checkbox' name = \"" + div + "\" value =\"" + value + "\" checked> " + display + " <a href = \"javaScript:removeObject('"+ div +"', '" + divIdName+ "')\">Remove</a></div>";		
//  alert(newdiv.innerHTML);
  ni.appendChild(newdiv);
}



function removeObject(parent, objectIndex){
	var objectPanel = document.getElementById(parent);
	var object = document.getElementById(objectIndex);
    if (objectPanel.childNodes != null) {
		try{
            objectPanel.removeChild(object);
		}
        catch (e) {
            // do nothing?
        }
    }
}