﻿// adds a child to the volunteerchildren list
function AddChild() {
	var oVolunteerChildrenList = RLdesign.Utils.DefineObject(sHidVolunteerChildrenListID);
	var oChildName = RLdesign.Utils.DefineObject(sTxtChildNameID);
	var oChildBirthdate = RLdesign.Utils.DefineObject(sTxtChildBirthdateID);
	var oDdlTickets = RLdesign.Utils.DefineObject(sDdlTicketsID);

//	window[DateCalendarID].Calendar.SetDisplay(false);

	//DateCalendar.SetDisplay(false);

	if (oChildName != null && oChildName.value == "") {
		alert("Husk at skrive et navn i navnefeltet.");
		oChildName.focus();
		return false;
	}
	if (oChildBirthdate != null && (oChildBirthdate.value == "" || oChildBirthdate.value == "dd-mm-åååå")) {
		alert("Der skal indtastes en gyldig dato i formatet dd-mm-åååå.");
		oChildBirthdate.focus();
		return false;
	}

	if (!oChildBirthdate.value.match(/^\d{2}-\d{2}-\d{4}$/)) {
		alert("Dato skal indtastes i formatet dd-mm-åååå (eks. 29-02-2004).");
		oChildBirthdate.focus();
		return false;
	}

	if (oVolunteerChildrenList != null && oChildName != null && oDdlTickets != null && oChildName.value != null && oChildBirthdate != null && oChildBirthdate.value != null) {

		var oTBody = RLdesign.Utils.DefineObject(sVolunteerChildrenListID);

		if (iMaxChildrenAllowed != -1 && oTBody.childNodes.length >= iMaxChildrenAllowed) {
			alert("Der må højst tilføjes " + iMaxChildrenAllowed + " børn.");
			return false;
		}
		var aParams = new Array();
			aParams["class"] = "controls";

		var oTDcontrols = RLdesign.Utils.MakeElement("td", aParams);
		aParams = new Array();
			aParams["class"] = "VolunteerChildrenListEditButton";
			aParams["href"] = "#";
			aParams["title"] = "Rediger";
		var oBtn = RLdesign.Utils.MakeElement("a", aParams);
		var oSpan = RLdesign.Utils.MakeElement("span", null, "rediger");
		oBtn.appendChild(oSpan);
		RLdesign.Events.SetEventHandler(oBtn, "click", EditVolunteerChild);
		oTDcontrols.appendChild(oBtn);
		oBtn = oSpan = null;

		aParams = new Array();
		aParams["class"] = "VolunteerChildrenListSubmitButton";
		aParams["href"] = "javascript:void(0)";
		aParams["title"] = "Godkend ændringer";
		oBtn = RLdesign.Utils.MakeElement("a", aParams);
		oSpan = RLdesign.Utils.MakeElement("span", null, "godkend");
		oBtn.appendChild(oSpan);
		RLdesign.Events.SetEventHandler(oBtn, "click", SubmitVolunteerChild);
		oTDcontrols.appendChild(oBtn);
		oBtn.style.display = "none";
		oBtn = oSpan = null;

		aParams = new Array();
		aParams["class"] = "VolunteerChildrenListCancelButton";
		aParams["href"] = "#";
		aParams["title"] = "Fortryd ændringer";
		oBtn = RLdesign.Utils.MakeElement("a", aParams);
		oSpan = RLdesign.Utils.MakeElement("span", null, "fortryd");
		oBtn.appendChild(oSpan);
		RLdesign.Events.SetEventHandler(oBtn, "click", CancelVolunteerChild);
		oTDcontrols.appendChild(oBtn);
		oBtn.style.display = "none";
		oBtn = oSpan = null;

		aParams = new Array();
			aParams["class"] = "VolunteerChildrenListDeleteButton";
			aParams["href"] = "#";
			aParams["title"] = "Slet fra listen";
		oBtn = RLdesign.Utils.MakeElement("a", aParams);
		oSpan = RLdesign.Utils.MakeElement("span", null, "slet");
		oBtn.appendChild(oSpan);
		RLdesign.Events.SetEventHandler(oBtn, "click", DeleteVolunteerChild);
		oTDcontrols.appendChild(oBtn);
		oBtn = oSpan = null;


		aParams = new Array();
			aParams["class"] = "name";
		var oTDname = RLdesign.Utils.MakeElement("td", aParams);
		oTDname.appendChild(RLdesign.Utils.MakeElement("span", null, oChildName.value));
		
		aParams = new Array();
			aParams["class"] = "birthdate";
		var oTDbirthdate = RLdesign.Utils.MakeElement("td", aParams);
		oTDbirthdate.appendChild(RLdesign.Utils.MakeElement("span", null, oChildBirthdate.value));

		aParams = new Array();
			aParams["class"] = "tickets";
		var oTDtickets = RLdesign.Utils.MakeElement("td", aParams);
		
		aParams = new Array();
			aParams["disabled"] = "disabled";
		var oDdlTicketsClone = RLdesign.Utils.MakeElement("select", aParams);
		oTDtickets.appendChild(oDdlTicketsClone);
		for (var i = 0; i < oDdlTickets.options.length; i++) {
			oDdlTicketsClone.options[i] = new Option(oDdlTickets.options[i].value, oDdlTickets.options[i].value);
		}
		oDdlTicketsClone.selectedIndex = oDdlTickets.selectedIndex;
		oDdlTicketsClone.defaultSelectedIndex = oDdlTicketsClone.selectedIndex;
		var oTR = RLdesign.Utils.MakeElement("tr");
		
		oTR.appendChild(oTDname);
		oTR.appendChild(oTDbirthdate);
		oTR.appendChild(oTDtickets);
		oTR.appendChild(oTDcontrols);
		oTBody.appendChild(oTR);
		
		oChildName.value = "";
	
		// cleanup
		oTDcontrols = oBtn = oSpan = oTDname = oTDbirthdate = oTDtickets = oDdlTicketsClone = oTBody = oTR = null;
	}
	// cleanup
	oVolunteerChildrenList = oChildName = oChildBirthdate = oDdlTickets = null;

	return false;
}


// converts the volunteerchild row to an edit template
function EditVolunteerChild(e) {
	var objTarget = RLdesign.Utils.DefineEventTarget(e);
	while (objTarget.tagName.toLowerCase() != "tr") {
		objTarget = objTarget.parentNode;
	}

	var oTdList = objTarget.getElementsByTagName("td");

	var sChildName = oTdList[0].getElementsByTagName("span")[0].innerHTML;
	var sChildBirthdate = oTdList[1].getElementsByTagName("span")[0].innerHTML;

	var oChildName = RLdesign.Utils.DefineObject(sTxtChildNameID);
	var oChildBirthdate = RLdesign.Utils.DefineObject(sTxtChildBirthdateID);

	var oDdlTickets = oTdList[2].childNodes[0];

	var oEditBtn = oTdList[3].getElementsByTagName("a")[0];
	var oSubmitBtn = oTdList[3].getElementsByTagName("a")[1];
	var oCancelBtn = oTdList[3].getElementsByTagName("a")[2];
	var oDeleteBtn = oTdList[3].getElementsByTagName("a")[3];

	RLdesign.Utils.ToggleDisplay(oEditBtn);
	RLdesign.Utils.ToggleDisplay(oSubmitBtn);
	RLdesign.Utils.ToggleDisplay(oCancelBtn);
	RLdesign.Utils.ToggleDisplay(oDeleteBtn);
	
	
	var aParams = new Array();
		aParams["type"] = "text";
		aParams["value"] = sChildName;
		aParams["class"] = "field";
	var oTextboxChildName = RLdesign.Utils.MakeElement("input", aParams);
	oTextboxChildName.defaultValue = sChildName;
	RLdesign.Utils.ClearChildElements(oTdList[0]);
	oTdList[0].appendChild(oTextboxChildName);


	aParams = new Array();
		aParams["type"] = "text";
		aParams["value"] = sChildBirthdate;
		aParams["class"] = "datefield";
	var oTextboxChildBirthdate = RLdesign.Utils.MakeElement("input", aParams);
	oTextboxChildBirthdate.defaultValue = sChildBirthdate;
	RLdesign.Utils.ClearChildElements(oTdList[1]);
	oTdList[1].appendChild(oTextboxChildBirthdate);

	oDdlTickets.disabled = false;

	oCalendarEditTextbox = oTextboxChildBirthdate;

//	RLdesign.Events.SetEventHandler(oTextboxChildBirthdate, "keydown", txtDateKeydown);
//	RLdesign.Events.SetEventHandler(oTextboxChildBirthdate, "focus", EditVolunteerChildDateFocus);
//	RLdesign.Events.SetEventHandler(oTextboxChildBirthdate, "click", EditVolunteerChildDateFocus);
//	RLdesign.Events.SetEventHandler(oTextboxChildBirthdate, "blur", function() { DateCalendar.SetCalendarTimeout(1000); } );

	// cleanup
	objTarget = oTdList = oChildName = oChildBirthdate = oDdlTickets = oEditBtn = oSubmitBtn = oCancelBtn = oDeleteBtn = oTextboxChildName = oTextboxChildBirthdate = null;

	return RLdesign.Utils.DefineReturnCode(e, false);
}

function EditVolunteerChildDateFocus(e) {
	DateCalendar.ClearCalendarTimeout();
	objTarget = RLdesign.Utils.DefineEventTarget(e);
	CalendarAssociatedTextboxID = objTarget;
	DateCalendar.SetDisplay(true);
	ShowCalendar();
}


function SubmitVolunteerChild(e) {
	var objTarget = RLdesign.Utils.DefineEventTarget(e);
	while (objTarget.tagName.toLowerCase() != "tr") {
		objTarget = objTarget.parentNode;
	}
	var oTdList = objTarget.getElementsByTagName("td");

	var oChildName = (oTdList[0].childNodes.length > 0) ? oTdList[0].childNodes[0] : null;
	if (oChildName == null) return false;
	var oChildBirthdate = oTdList[1].childNodes[0];
	var oDdlTickets = oTdList[2].childNodes[0];


	if (oChildName != null && oChildName.value == "") {
		alert("Husk at skrive et navn i navnefeltet.");
		oChildName.focus();
		oChildName = oChildBirthdate = oDdlTickets = objTarget = null;
		return false;
	}
	if (oChildBirthdate != null && (oChildBirthdate.value == "" || oChildBirthdate.value == "dd-mm-åååå")) {
		alert("Der skal indtastes en gyldig dato i formatet dd-mm-åååå.");
		oChildBirthdate.focus();
		oChildName = oChildBirthdate = oDdlTickets = objTarget = null;
		return false;
	}
	if (!oChildBirthdate.value.match(/^\d{2}-\d{2}-\d{4}$/)) {
		alert("Dato skal indtastes i formatet dd-mm-åååå (eks. 29-02-2004).");
		oChildBirthdate.focus();
		oChildName = oChildBirthdate = oDdlTickets = objTarget = null;
		return false;
	}


	var oEditBtn = oTdList[3].getElementsByTagName("a")[0];
	var oSubmitBtn = oTdList[3].getElementsByTagName("a")[1];
	var oCancelBtn = oTdList[3].getElementsByTagName("a")[2];
	var oDeleteBtn = oTdList[3].getElementsByTagName("a")[3];
	RLdesign.Utils.ToggleDisplay(oEditBtn);
	RLdesign.Utils.ToggleDisplay(oSubmitBtn);
	RLdesign.Utils.ToggleDisplay(oCancelBtn);
	RLdesign.Utils.ToggleDisplay(oDeleteBtn);

	RLdesign.Utils.ClearChildElements(oTdList[0]);
	oTdList[0].appendChild(RLdesign.Utils.MakeElement("span", null, oChildName.value));

//	RLdesign.Events.RemoveEventHandler(oChildBirthdate, "keydown", txtDateKeydown);
//	RLdesign.Events.RemoveEventHandler(oChildBirthdate, "focus", EditVolunteerChildDateFocus);

	RLdesign.Utils.ClearChildElements(oTdList[1]);
	oTdList[1].appendChild(RLdesign.Utils.MakeElement("span", null, oChildBirthdate.value));

	oDdlTickets.defaultSelectedIndex = oDdlTickets.selectedIndex;
	oDdlTickets.disabled = true;

	// cleanup
	objTarget = oEditBtn = oSubmitBtn = oDdlTickets = oChildName = oChildBirthdate = null;

	return RLdesign.Utils.DefineReturnCode(e, false);
}


function DeleteVolunteerChild(e) {
	var objTarget = RLdesign.Utils.DefineEventTarget(e);
	while (objTarget.tagName.toLowerCase() != "tr") {
		objTarget = objTarget.parentNode;
	}

	objTarget.parentNode.removeChild(objTarget);

	// cleanup
	objTarget = null;

	return RLdesign.Utils.DefineReturnCode(e, false);
}

function CancelVolunteerChild(e) {
	var objTarget = RLdesign.Utils.DefineEventTarget(e);
	while (objTarget.tagName.toLowerCase() != "tr") {
		objTarget = objTarget.parentNode;
	}
	var oTdList = objTarget.getElementsByTagName("td");

	var oChildName = (oTdList[0].childNodes.length > 0) ? oTdList[0].childNodes[0] : null;
	if (oChildName == null) return false;
	var oChildBirthdate = oTdList[1].childNodes[0];
	var oDdlTickets = oTdList[2].childNodes[0];

	var oEditBtn = oTdList[3].getElementsByTagName("a")[0];
	var oSubmitBtn = oTdList[3].getElementsByTagName("a")[1];
	var oCancelBtn = oTdList[3].getElementsByTagName("a")[2];
	var oDeleteBtn = oTdList[3].getElementsByTagName("a")[3];
	RLdesign.Utils.ToggleDisplay(oEditBtn);
	RLdesign.Utils.ToggleDisplay(oSubmitBtn);
	RLdesign.Utils.ToggleDisplay(oCancelBtn);
	RLdesign.Utils.ToggleDisplay(oDeleteBtn);

	RLdesign.Utils.ClearChildElements(oTdList[0]);
	oTdList[0].appendChild(RLdesign.Utils.MakeElement("span", null, oChildName.defaultValue));

	//	RLdesign.Events.RemoveEventHandler(oChildBirthdate, "keydown", txtDateKeydown);
	//	RLdesign.Events.RemoveEventHandler(oChildBirthdate, "focus", EditVolunteerChildDateFocus);

	RLdesign.Utils.ClearChildElements(oTdList[1]);
	oTdList[1].appendChild(RLdesign.Utils.MakeElement("span", null, oChildBirthdate.defaultValue));

	oDdlTickets.selectedIndex = oDdlTickets.defaultSelectedIndex;
	oDdlTickets.disabled = true;

	// cleanup
	objTarget = oEditBtn = oSubmitBtn = oDdlTickets = oChildName = oChildBirthdate = null;

	return RLdesign.Utils.DefineReturnCode(e, false);
}



function SerializeChildren(e) {
	var oVolunteerChildrenList = RLdesign.Utils.DefineObject(sVolunteerChildrenListID);
	var oHidVolunteerChildrenList = RLdesign.Utils.DefineObject(sHidVolunteerChildrenListID);
	if (oHidVolunteerChildrenList == null || oVolunteerChildrenList == null || oVolunteerChildrenList.childNodes.length === 0) return true;
	var SerialString = "";
	var oTrList = oVolunteerChildrenList.getElementsByTagName("tr");

	for (var i = 0; i < oTrList.length; i++) {
		var oTR = oTrList[i];
		var oTdList = oTR.getElementsByTagName("td");
		var oName = (oTdList[0].getElementsByTagName("span").length > 0) ? oTdList[0].getElementsByTagName("span")[0] : oTdList[0].getElementsByTagName("input")[0];
		var oDate = (oTdList[1].getElementsByTagName("span").length > 0) ? oTdList[1].getElementsByTagName("span")[0] : oTdList[1].getElementsByTagName("input")[0];
		var oTicket = oTdList[2].getElementsByTagName("select")[0];
		var sName = (oName.tagName.toLowerCase() == "span") ? oName.innerHTML : oName.value;
		var sDate = (oDate.tagName.toLowerCase() == "span") ? oDate.innerHTML : oDate.value;
		var sTicket = oTicket.options[oTicket.selectedIndex].value;
		
		SerialString += sName + "|" + sDate + "|" + sTicket.toString() + "]";
	}

	oHidVolunteerChildrenList.value = SerialString;

	// cleanup
	oVolunteerChildrenList = oHidVolunteerChildrenList = null;

	return true;
}
