
function popupPage(URL,w,h,sb)
{
	var windowprops = "location=no,scrollbars="+sb+",menubars=no,toolbars=no,resizable=yes,left=10,top=10,width="+w+",height="+h;
	popup = window.open(URL,"Details",windowprops);
}

//********************* Dialog Functions ***********************

var dialogwindow = null;
var returnedname = null;
var returnedvalue = null;

function setfocus() {
	self.focus();
}

function focusDialog() {
	if (dialogwindow != null) {
		if (dialogwindow.closed)
			dialogwindow = null;
		else
			dialogwindow.focus();
	}
}

function calldialog(Sec1,Sec2) {
	var url = "dialog.php?Mainsec=" + Sec1 + "&Subsec=" + Sec2;
	dialogwindow = window.open(url,"Dialog","alwaysRaised,dependent,height=600,width=780,scrollbars,titlebar=no");
	dialogwindow.focus();
}

function callsubwindow(Sec1,Sec2) {
	var url = "dialog.php?Mainsec=" + Sec1 + "&Subsec=" + Sec2;
	subwindow = window.open(url,"Dialog","alwaysRaised,dependent,height=600,width=780,scrollbars,titlebar=no");
	subwindow.focus();
}

function getDialog (Sec1,Sec2) {
	var val = calldialog(Sec1,Sec2);
	if ((val == 0) || (val == null)) val = "";
	return val;
}

function setpair (n,v) {
	returnedname = n;
	returnedvalue = v;
	closewindow();
	displaypair();
}

function closewindow() {
	dialogwindow.close();
	dialogwindow = null;
}


//********************* Screenload placeholder ***********************

function loadproc () {
}




//********************* Helper functions *****************************

function mandatory() {
	return "<font class='ast'>*</font>";
}



//********************* List Select functions ********************

function addtolist() {
// (dynamiclistname, feederval, feedername, item)
	var dynamiclistname = addtolist.arguments[0];
	var dynamiclist = eval(dynamiclistname);
	var numrows = dynamiclist.rows.length;
	var numselects = (addtolist.arguments.length - 1) / 3;
	var idname = new Array(numselects);
	var ListSelect = new Array(numselects);
	var ListText = new Array(numselects);
	var val = new Array(numselects);
	for (i = 0; i < numselects; i++) {
		idname[i] = addtolist.arguments[(i*3) + 3];
		ListSelect[i] = eval("document.mainform." + addtolist.arguments[(i*3) + 1]);
		ListText[i] = eval("document." + addtolist.arguments[(i*3) + 2]);
		val[i] = ListSelect[i].value
	}
	var nodup = true;
	for (i = 1; i < numrows; i++) {
		var matched = true;
		for (j = 0; j < numselects; j++) {
			if (val[j] != eval("dynamiclist.rows[i].cells[j].all." + idname[j] + ".value")) {
				matched = false;
			}
		}
		if (matched) nodup = false;
	}
	if (nodup) {
		var cls = (numrows % 2)? "listitem2": "listitem1";
		var x=dynamiclist.insertRow(numrows);
		for (i = 0; i < numselects; i++) {
			var y=x.insertCell(i);
			y.className = cls;
			y.innerHTML = ListText[i] + "<input type='hidden' id='" + idname[i] + "' name='" + idname[i] + "[]' value='" + val[i] + "'>";
		}
		var z=x.insertCell(numselects);
		z.className = cls;
		z.innerHTML = "<button onclick='removefromlist(this.parentNode.parentNode.rowIndex," + '"' + dynamiclistname + '"' + ")'>Remove</button>";
		setlistrowclasses(dynamiclist);
	} else {
		var txt = ""; var sep = "";
		for (i = 0; i < numselects; i++) {
			txt += sep + ListText[i];
			sep = ", ";
		}
		alert (txt + " has already been selected");
	}
}

function removefromlist(rowIndex,dynamiclistname) {
	var dynamiclist = eval(dynamiclistname);
	dynamiclist.deleteRow(rowIndex);
	setlistrowclasses(dynamiclist);
	if (top.location != location){
		parent.iFrameHeight();
	}
}

function setlistrowclasses(dynamiclist) {
	for (i = 1; i < dynamiclist.rows.length; i++) {
		cls = (i % 2)? "listitem2": "listitem1";
		for (j = 0; j < dynamiclist.rows[i].cells.length; j++) {
			dynamiclist.rows[i].cells[j].className = cls;
		}
	}
}


//********************* List filtering funtions **************************


function SelMaster(SelList,val,targetsel) {
	var i;
	while (targetsel.options.length) {
		targetsel.options[targetsel.options.length - 1] = null;
	}
	for (i = 0; i < SelList.length; i++) {
		if (ArrayPos(SelList[i][2],val) >= 0) {
			var oOption = document.createElement("OPTION");
			targetsel.options.add(oOption);
			oOption.innerText = SelList[i][1];
			oOption.value = SelList[i][0];
		}
	}
}



//********************* Data Verification functions ********************

var errorstr = "";
var errorcount = 0;

function reseterrors() {
	errorstr = "";
	errorcount = 0;
}

function adderror(errstr) {
	errorstr += errstr + " \n";
	errorcount++;
}

function noerrors() {
	var retval = true;
	if (errorcount > 0) {
		alert (errorstr);
		reseterrors();
		retval = false;
	}
	return retval;
}

function checkdate(str,varname) {
	var retval = true;
	var re = /^\d{2}\/\d{2}\/\d{4}$/
	if (re.test(str)) {
		var datearr = str.split("/");
		if (parseInt(datearr[0],10) > 31 || parseInt(datearr[0],10) < 1) {
			adderror(varname + " has an invalid day of month.");
			retval = false;
		}
		if (parseInt(datearr[1],10) > 12 || parseInt(datearr[1],10) < 1) {
			adderror(varname + " has an invalid month.");
			retval = false;
		}
	} else {
		adderror(varname + " must be in dd/mm/yyyy form.");
		retval = false;
	}
	return retval;
}

function checkdates () {
// (str1,varname1,str2,varname2)
	reseterrors();
	var numdates = (checkdates.arguments.length) / 2;
	for (i = 0; i < numdates; i++) {
		checkdate (checkdates.arguments[i*2],checkdates.arguments[(i*2) + 1]);
	}
	return noerrors();
}

function addenrollstartdates() {
	if (checkdates(mainform.edatefeeder.value,"Enrolment Date",mainform.sdatefeeder.value,"Start Date")) {
		addtolist("datelist","edatefeeder","mainform.edatefeeder.value","edates","sdatefeeder","mainform.sdatefeeder.value","sdates");
	}
}


// General JS Helper functions

// return the position (index) of Item in an array
function ArrayPos(pArr, pItem) {
	var RetVal = -1;
	for (var i = 0; i < pArr.length; i++) {
		if (pArr[i] == pItem) {
			RetVal = i;
		}
	}
	return RetVal;
}


// Added by SR

function CheckReturn() {
	return (window.event.keyCode == 13);
}


// Used in Interest Assessment to make selections more visible

function setColorRadioGroup (radioGroup, checkedColor, uncheckedColor) {
	if (!radioGroup.length && radioGroup.style) {
		if (radioGroup.checked)
			radioGroup.style.backgroundColor = checkedColor;
		else
			radioGroup.style.backgroundColor = uncheckedColor;
	}
	else if (radioGroup[0].style)
		for (var r = 0; r < radioGroup.length; r++) 
			if (radioGroup[r].checked) 
				radioGroup[r].style.backgroundColor = checkedColor;
			else		
				radioGroup[r].style.backgroundColor = uncheckedColor;
}
