var moduleArray = Array();

function addModules() {
	var queryString = new Array();
	var modules = document.getElementById("moduleList");
	for(i=0;i<modules.options.length;i++) queryString.push(modules.options[i].value);
	window.open("/apps/programmes/addmodule.php?linked=" + queryString.toString(), "addModules", "left=200,top=200,width=700,height=500,menubar=no,resizable=no,scrollbars=yes,status=no");
	return true;
} // end function addModules()

function addModuleGroup() {
	var queryString = new Array();
	var modules = document.getElementById("moduleList");
	for(i=0;i<modules.options.length;i++) queryString.push(modules.options[i].value);
	window.open("/apps/programmes/addmodulegroup.php?linked=" + queryString.toString(), "addModules", "left=200,top=200,width=700,height=500,menubar=no,resizable=no,scrollbars=yes,status=no");
	return true;
} // end function addModules()

/*

function insertModule() {
	var module = document.getElementById("moduleSelect").options[document.getElementById("moduleSelect").selectedIndex];
	var list = window.opener.document.getElementById("moduleList");
	list.innerHTML = list.innerHTML + "<option value='" + module.value + "' id='module_" + module.value + "'>" + module.innerHTML + "</option>";
	var elements = window.opener.document.getElementById("moduleElementList");
	var insertElement = document.createElement("input");
	elements.innerHTMl = elements.innerHTML + "<input name='linkedModules[]' type='hidden' value='" + module.value + "' id='module_" + module.value + "'/>";
	window.close();
	return true;
} // end function insertModule()

*/

function insertModule() {
	var module = document.getElementById("moduleSelect").options[document.getElementById("moduleSelect").selectedIndex];
	var list = window.opener.document.getElementById("moduleList");
	var insertElement = window.opener.document.createElement("option");
	var insertElementText = window.opener.document.createTextNode(module.innerHTML);
	insertElement.appendChild(insertElementText);
	insertElement.setAttribute("value", module.value);
	insertElement.setAttribute("id","module_" + module.value);
	list.appendChild(insertElement);
	var elements = window.opener.document.getElementById("moduleElementList");
	var insertElement = window.opener.document.createElement("input");
	insertElement.setAttribute("name", "linkedModules[]");
	insertElement.setAttribute("type", "hidden");
	insertElement.setAttribute("value", module.value);
	insertElement.setAttribute("id","module_element_" + module.value);
	elements.appendChild(insertElement);
	window.close();
	return true;
} // end function insertModule()

function insertModuleGroup() {
	var selectedModules = new Array();
	var modules = document.getElementById("moduleSelect");
	for(i=0;i<modules.options.length;i++) if (modules.options[i].selected) selectedModules.push([modules.options[i].value,modules.options[i].innerHTML]);
	if (selectedModules.length < 2) {
		document.getElementById("error_output").innerHTML = "<p class='error'>You must select more than one module from the list below in order to create a module group.</p>";
		return false;
	} // if (selectedModules.length < 2)
	var number = document.getElementById("groupNumber").value;
	var title = document.getElementById("groupTitle").value;
	var list = window.opener.document.getElementById("moduleList");
	if (title == "") {
		document.getElementById("error_output").innerHTML = "<p class='error'>You must enter a title for this group.</p>";
		return false;
	} // if (selectedModules.length < 2)
	if (number == "") {
		document.getElementById("error_output").innerHTML = "<p class='error'>You must enter the number of modules that need to be selected as part of this group.</p>";
		return false;
	} // if (selectedModules.length < 2)
	var optgroupCount = 0;
	for (i=0;i<list.childNodes.length;i++) if (list.childNodes[i].nodeName == "OPTGROUP") optgroupCount++;
	var optgroup = window.opener.document.createElement("optgroup");
	if (title) groupTitle = title;
	else groupTitle = "Group " + (optgroupCount+1);
	optgroup.setAttribute("label",title + " (Choose " + number + ")");
	optgroup.setAttribute("id","module_group_" + optgroupCount);
	for(i=0;i<selectedModules.length;i++) {
		var insertElement = new Array();
		insertElement[i] = window.opener.document.createElement("option");
		insertElement[i].setAttribute("value", selectedModules[i][0]);
		insertElement[i].setAttribute("id","module_" + selectedModules[i][0]);
		insertElement[i].innerHTML = selectedModules[i][1];
		optgroup.appendChild(insertElement[i]);
	} // for(i=0;i<selectedModules.length;i++) 
	list.appendChild(optgroup);
	var elements = window.opener.document.getElementById("moduleElementList");
	var groupNum = window.opener.document.createElement("input");
	groupNum.setAttribute("type","hidden");
	groupNum.name = "linkedGroupCount[" + optgroupCount + "]";
	groupNum.value = number;
	groupNum.setAttribute("id","module_group_" + optgroupCount + "_number");
	var groupTitle = window.opener.document.createElement("input");
	groupTitle.setAttribute("type","hidden");
	groupTitle.name = "linkedGroupTitle[" + optgroupCount + "]";
	groupTitle.value = title;
	groupTitle.setAttribute("id","module_group_" + optgroupCount + "_title");
	elements.appendChild(groupNum);
	elements.appendChild(groupTitle); 
	for(i=0;i<selectedModules.length;i++) {
		var insertElement = new Array();
		insertElement[i] = window.opener.document.createElement("input");
		insertElement[i].setAttribute("name", "linkedGroupModules[" + optgroupCount + "][]");
		insertElement[i].setAttribute("type", "hidden");
		insertElement[i].setAttribute("value", selectedModules[i][0]);
		insertElement[i].setAttribute("id","module_element_" + selectedModules[i][0]);
		elements.appendChild(insertElement[i]);
	} // for(i=0;i<selectedModules.length;i++)
	window.close();
	return true;
} // end function insertModule()

function removeModules() {
	var list = document.getElementById("moduleList");
	var elements = document.getElementById("moduleElementList");
	for (i=0;i<list.options.length;i++) {
		if (list.options[i].selected) {
			removeElement = document.getElementById("module_element_" + list.options[i].value);
			parentNode = list.options[i].parentNode;
			parentNode.removeChild(list.options[i]);
			elements.removeChild(removeElement);
		} // if (list.options[i].selected)
	} // for (i=0;i<list.options.length;i++) 
	for (i=0;i<list.childNodes.length;i++) {
		if (list.childNodes[i].nodeName == "OPTGROUP") {
			var optgroup = list.childNodes[i];
			var optGroupOptions = new Array();
			for(a=0;a<optgroup.childNodes.length;a++) if (optgroup.childNodes[a].nodeName == "OPTION") optGroupOptions.push(optgroup.childNodes[a]);
			if (optGroupOptions.length == 0) {
				list.removeChild(optgroup);
			} // if (optGroupOptions.length == 0) 
			else if (optGroupOptions.length == 1) {
				orphanElement = document.getElementById("module_element_" + optGroupOptions[0].value);
				orphanElement.name = "linkedModules[]";
				list.appendChild(optGroupOptions[0]);
				listCount = document.getElementById(optgroup.id + "_number");
				listTitle = document.getElementById(optgroup.id + "_title");
				if (listCount) elements.removeChild(listCount);
				if (listTitle) elements.removeChild(listTitle);
				list.removeChild(optgroup);
			} // else if (optGroupOptions.length == 1)
		} // if (list.childNodes[i].nodeName == "OPTGROUP") 
	} // for (i=0;i<list.childNodes.length;i++)
} // function removeModules()