function Trim(str) {
  str = str.replace(/^[ ]+/,"");return str.replace(/[ ]+$/,"");
}

function isEmail(em) {
  if (em.search(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i)!=-1) return true; else return false;
}

function validDate(dt) {
	if (dt.search(/^\d{1,2}\/\d{1,2}\/\d{4}$/)!=-1) {
  	parts = dt.split("/");
    if (parts[0]<1 || parts[0]>31 || parts[1]<1 || parts[1]>12 || parts[2]<1970 || parts[2]>2500) return false;
    return true;
  } else return false;
}

function editHtml(f,i) {
	param = new Array(f,i);
	htmlw = window.open("html_edit.php?f="+f+"&i="+i, "htmlw", "width=500,height=550;");
}

function reqView(id) {
	param = new Array(id);
	htmlw = window.open("index.php?module=properties.request&id="+id, "htmlw", "width=350,height=435;");
}

function validateFormOn() {

	f_errors = new Array();
	f_errors[0] = "must not be an empty string";
	f_errors[1] = "must be a valid e-mail address";
	f_errors[2] = "must be a valid date format (dd/mm/yyyy)";
	f_errors[3] = "must be an integer";
	f_errors[4] = "must be a string containing 5-12 alphanumeric characters";
	f_errors[5] = "must be a valid float number";
	m_errors = new String();
	l = arguments.length;
	if ((l-1)%3!=0) {
		alert('Error: invalid number of arguments');
		return false;
	}
	f = arguments[0];
	n = (l-1)/3;
	for (i=0; i<n; i++) {
		
		txt = arguments[i*3+1];
		fld = arguments[i*3+2];
		val = arguments[i*3+3];
	
		switch (val) {
			// must not be an empty string
			case "s":
				
				if (Trim(f[fld].value)=="") m_errors += txt + ": " + f_errors[0] + "\n";
				break;
			// must be valid e-mail
			case "m":
				if (!isEmail(f[fld].value)) m_errors += txt + ": " + f_errors[1] + "\n";
				break;
			// must be date (dd/mm/yyyy)
			case "d":
				if (!validDate(f[fld].value)) m_errors += txt + ": " + f_errors[2] + "\n";
				break;
			// must be an integer
			case "i":
				if (isNaN(parseInt(f[fld].value))) m_errors += txt + ": " + f_errors[3] + "\n";
				break;
			case "f":
				if (parseFloat(f[fld].value)==NaN) m_errors += txt + ": " + f_errors[5] + "\n";
				break;
			// must be a valid password or username
			case "x":
				re = /[a-z0-9_\.]{5,12}/i
				str = f[fld].value;
				if (!str.match(re)) m_errors += txt + ": " + f_errors[4] + "\n";
				break;
		}
	}
	
	if (m_errors.length>0) {
	
		alert("The following errors were found:\n\n" + m_errors);
		return false;
	}
	return true;
}
function checkAll(f) {
	for (i=0; i<f.elements.length; i++) {
		el = f.elements[i].name;
		if (el.match(/^interests\[[0-9]+\]$/)) f[el].checked = f["all"].checked;
	}
}