
/* user in createuser.php and in person.php*/
function checkemail()
{
	// reg expr that matches valid email addresses
	var validemail = /^[a-zA-Z0-9](([_\.\-]{0,1}[a-zA-Z0-9]{1,}){0,})@([a-zA-Z0-9]{1,})(([\.\-]{0,1}[a-zA-Z0-9]{1,}){0,})\.[a-zA-Z0-9]{2,4}$/;

	var email_entry1 = document.userform.email.value;
	var email_entry2 = document.userform.email2.value;
	
	if(!validemail.test(email_entry1))
	{
		alert("Error. The email address you supplied is not a valid one. Please try again.");
		return false;
	}
	if(email_entry1 == email_entry2)
	{
		return true;
	}
	else
	{
		alert('Your email entries should be identical. Please check your email entries!');
		return false;
	}
}

function check_one_email()
{
	// reg expr that matches valid email addresses
	var validemail = /^[a-zA-Z0-9](([_\.\-]{0,1}[a-zA-Z0-9]{1,}){0,})@([a-zA-Z0-9]{1,})(([\.\-]{0,1}[a-zA-Z0-9]{1,}){0,})\.[a-zA-Z0-9]{2,4}$/;

	var email_entry1 = document.userform.email.value;

	if(!validemail.test(email_entry1))
	{
		alert("Error. The email address you supplied is not a valid one. Please try again.");
		return false;
	}
	else return true;
}


function checkdate (month, date) /* used my more than one scripts*/
{
	var m = month;
	var d = date;
	if (m<1 || m>12)
 	{
 		alert ('Invalid month entry');
 		return false;
 	}
 	if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)
 	{
 		if(d<1 || d>31)
 		{
 			alert ('Invalid date entry');
 			return false;
 		}
 		else return true;
 	}
 	if(m==4|| m==6|| m==9|| m==11)
 	{
 		if(d<1 || d>30)
 		{
 			alert ('Invalid date entry');
 			return false;
 		}
 		else return true;
 	}
 	if(m==2)
 	{
 		if(d<1 || d>28)
 		{
 			alert ('Invalid date entry');
 			return false;
 		}
 		else return true;
 	}
}

function checkrequired()
{
	var title = document.userform.title.value.length;
	var surname = document.userform.surname.value.length;
	var name = document.userform.name.value.length;
	var email = document.userform.email.value.length;
	if(title < 1)
	{
		alert("Please fill in the 'Title' field");
		return false;
	}
	if(surname < 1)
	{
		alert("Please fill in the 'Surname' field");
		return false;
	}
	if(name < 1)
	{
		alert("Please fill in the 'Name' field");
		return false;
	}
	if(email < 1)
	{
		alert("Please fill in the 'Email' field");
		return false;
	}
	return true;
}

function checkform()
{
	var $email = checkemail();
	var $arrival = checkdate(document.userform.arrivalMonth.value, document.userform.arrivalDate.value);
	var $departure = checkdate(document.userform.departureMonth.value, document.userform.departureDate.value);
	var $required = checkrequired();
	if($email && $arrival && $departure && $required)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function allusers_checkform()
{
	var $email = check_one_email();
	var $arrival = checkdate(document.userform.arrivalMonth.value, document.userform.arrivalDate.value);
	var $departure = checkdate(document.userform.departureMonth.value, document.userform.departureDate.value);
	var $required = checkrequired();
	if($email && $arrival && $departure && $required)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function signin_CheckUserId()
{
	var pattern = /^[a-zA-Z0-9]{1,}$/; // allows only latin letters and numbers
	var userid = document.forms[0].userid.value;
	if(!pattern.test(userid))
	{
		alert('Sorry. The User ID you entered is not a valid one.\nUser IDs only consist of letters and numbers');
		return false;
	}
	return true;
}

function person_attendance_state()
{
	var elements = new Array();
	elements[0] = document.getElementById('accom');
	elements[1] = document.getElementById('arriveDate');
	elements[2] = document.getElementById('arriveMonth');
	elements[3] = document.getElementById('departDate');
	elements[4] = document.getElementById('departMonth');
	var radioYes = document.getElementById('attend');
	
	if(radioYes.checked)
	{
		for(var n = 0; n < elements.length; n++)
		{
			elements[n].readOnly = false;
		}
	}
	if(!radioYes.checked)
	{
		for(var n = 0; n < elements.length; n++)
		{
			elements[n].readOnly = true;
		}
	}
}

/* used in newpass.php */
/* ++++ need to add code to prevent spaces here ++++ */
function checknewpass()
{
	var pass_entry1 = document.passwordform.newpass.value;
	var pass_entry2 = document.passwordform.newpass2.value;

	// check if password == password2
	if(pass_entry1 == pass_entry2 && pass_entry1 != "")
	{
		return true;
	}
	else
	{
		alert('You password entries are not identical or empty. Please try again!');
		return false;
	}
}

/* used in submitpaper.php */
function submitpaper_required()
{
	// improve this to use regular expression
	var titlelength = document.newpaperform.title.value.length;
	var abstractcontent = document.newpaperform.Abstract.value;
	var abstractlength = abstractcontent.length;
	if(titlelength < 1)
	{
		alert("Please fill in the Title field");
		return false;
	}
	if(abstractlength < 1)
	{
		alert("The 'Abstract' field is empty. Please submit an abstract");
		return false;
	}
	if(abstractcontent == 'Enter (copy & paste) your abstract here')
	{
		alert("Please submit a valid abstract");
		return false;
	}
	return true;
}

function submitpaper_coauthors_required()
{

	var coAuthors = new Array();
	coAuthors[0] = document.getElementsByName('coauthor1[]');
	coAuthors[1] = document.getElementsByName('coauthor2[]');
	coAuthors[2] = document.getElementsByName('coauthor3[]');
	coAuthors[3] = document.getElementsByName('coauthor4[]');
	
	var pattern = /\S{1,}/;//reg exp matching all non whitespace chars 
		// I previously used /[a-zA-Z0-9]/ . Now a field full of spaces or tabs is not approved
	
	for(var subject = 0; subject < coAuthors.length; subject++)
	{
		var row = coAuthors[subject];
		for(var column=0; column < row.length; column++)
		{
			if(row[column].value.length > 0) // check if field is not the empty string
			{
				for(var field=0; field < row.length; field++)
				{
					if(!pattern.test(row[field].value)) // pattern is now a reg expr object using its test() method
					{
						alert('Remember! All fields are mandatory for each co-author. Co-Author'+ (subject+1) +' details not fully completed');
						return false;
					}
				}
			}
		}
	}
	return true;
}


function submitpaper_checkform()
{
	var requiredFields = submitpaper_required();
	var fileFormat = submitpaper_fileFormat();
//	var requiredCoauthors = submitpaper_coauthors_required();
	if(!requiredFields) return false;
	if(!fileFormat) return false;
	else return true;
}

function submitpaper_fileFormat()
{
	var filename = document.getElementsByName('paper_doc');
	var pattern = /\.(pdf|doc|txt)$/;
	if(filename[0].value.length == 0) return true;
	if(!pattern.test(filename[0].value))
	{
		alert('The file format you are trying to upload is not supported. Please try pdf, doc or txt file format');
		return false;
	}
	return true;
}



function submitpaper_coauthors_state()
{
	// flips the state of the coauthors columns to readOnly and back
	var coauthor1 = document.getElementsByName('coauthor1[]');
	var coauthor2 = document.getElementsByName('coauthor2[]');
	var coauthor3 = document.getElementsByName('coauthor3[]');
	var coauthor4 = document.getElementsByName('coauthor4[]');
	var radioYes = document.getElementById('radio1');
	// var radiono = document.getElementById('radio2');
	if(radioYes.checked)
	{
		for(var i = 0; i < coauthor1.length; i++)
		{
			coauthor1[i].readOnly = false;
			coauthor2[i].readOnly = false;
			coauthor3[i].readOnly = false;
			coauthor4[i].readOnly = false;			
		}
	}
	else
	{
		for(var i = 0; i < coauthor1.length; i++)
		{
			coauthor1[i].readOnly = true;
			coauthor2[i].readOnly = true;
			coauthor3[i].readOnly = true;
			coauthor4[i].readOnly = true;			
		}
	}
}

function updatepaper_checkform()
{
	var abstractcontent = document.updatepaperform.Abstract.value;
	var abstractlength = abstractcontent.length;
	var keycontent = document.updatepaperform.keyword.value;
	var keylength = keycontent.length;
	var fileFormat = submitpaper_fileFormat();
	if(abstractlength < 1)
	{
		alert("The 'Abstract' field is empty. Please submit an abstract");
		return false;
	}
	if(keylength < 1)
	{
		var answer = confirm('No keywords associated with your paper. Are you sure you want to proceed?');
		if (!answer) return false;
	}
	if(!fileFormat) return false;
	return true;
}

function updatepaper_withdraw()
{
	var box = document.getElementById('leave');
	if(box.checked)
	{
		alert('You have checked the WITHDRAW option.\nThis means that you want to completely withdraw this paper from the conference.\nIf you really want to do that, you may dismiss this alert box and click the UPDATE button on the form.\nIf you checked the WITHDRAW option BY ACCIDENT, please uncheck it before you submit the form.');	
	}
}

/* used in newvenue.php */
function newvenue_check_venueid()
{
	var validvenueid = /^[A-Z0-9]{1,}$/;
	var venueid = document.newVenueForm.venueid.value;
	if(venueid.length < 1)
	{
		alert ("Error. You did not enter a Venue ID. New Venue not created");
		return false;
	}
	if(!validvenueid.test(venueid))
	{
		alert ("Error.Venue ID can only consist of numbers and capital letters! New Venue not created");
		return false;
	}
	return true;
}

/* used by sessioncreate.php */
function sessioncreate_checkform()
{
	// checking date
	var date = document.newSessionForm.date.value;
	var month = document.newSessionForm.month.value;
	if(!checkdate(month, date)) return false;
	
	// checking times
	var hoursStart = document.newSessionForm.hoursStart.value;
	var minutesStart = document.newSessionForm.minutesStart.value;
	var hoursEnd = document.newSessionForm.hoursEnd.value;
	var minutesEnd = document.newSessionForm.minutesEnd.value;

	// checking session code is no more than 4 characters long
	var code = document.newSessionForm.s_code.value;
	
	if(hoursEnd < hoursStart)
	{
		alert("Error!\nSession end time is before session start time\nSession not created");
		return false;
	}

	if(hoursEnd == hoursStart)
	{
		if(minutesEnd < minutesStart)
		{
			alert("Error!\nSession end time is before session start time\nSession not created");
			return false;
		}
		if(minutesEnd == minutesStart)
		{
			alert("Error!\nSession start time is same as session end time\nSession not created");
			return false;
		}
	}
	
	if(code.length>4)
	{
		alert("Error!\nSession code can only be up to four characters long");
		return false;
	}
	return true;
}

function sessioncreate_update_endtime()
{
	// updates end time to two hours ahead of start time
	// this function is not used by the current implementation because 
	// the end time is now explicitly set by the organiser
	var hoursStart = new Number(document.newSessionForm.hoursStart.value);
	var minutesStart = new Number(document.newSessionForm.minutesStart.value);

	var hoursEnd = hoursStart + 2;
	if(hoursEnd > 23) hoursEnd = hoursEnd - 24;
	if(hoursEnd < 10) hoursEnd = "0" + hoursEnd;
	
	var minutesEnd = new Number(minutesStart);
	if(minutesEnd < 10) minutesEnd= "0" + minutesEnd;
	
	document.newSessionForm.hoursEnd.value = hoursEnd;
	document.newSessionForm.minutesEnd.value = minutesEnd;
}

/* used by sessionupdate.php*/
function sessionupdate_checkform()
{
	// checking date
	var date = document.sessionUpdateForm2.date.value;
	var month = document.sessionUpdateForm2.month.value;
	if(!checkdate(month, date)) return false;
	
	// checking times
	var hoursStart = document.sessionUpdateForm2.hours_start.value;
	var minutesStart = document.sessionUpdateForm2.minutes_start.value;
	var hoursEnd = document.sessionUpdateForm2.hours_end.value;
	var minutesEnd = document.sessionUpdateForm2.minutes_end.value;

	if(hoursEnd < hoursStart)
	{
		alert("Error!\nSession end time is before session start time\nSession details not changed");
		return false;
	}

	if(hoursEnd == hoursStart)
	{
		if(minutesEnd < minutesStart)
		{
			alert("Error!\nSession end time is before session start time\nSession details not changed");
			return false;
		}
		if(minutesEnd == minutesStart)
		{
			alert("Error!\nSession start time is same as session end time\nSession details not changed");
			return false;
		}
	}
	return true;
}



function check_email(email)
{
	// reg expr that matches valid email addresses
	var validemail = /^[a-zA-Z0-9](([_\.\-]{0,1}[a-zA-Z0-9]{1,}){0,})@([a-zA-Z0-9]{1,})(([\.\-]{0,1}[a-zA-Z0-9]{1,}){0,})\.[a-zA-Z0-9]{2,4}$/;

	if(!validemail.test(email))
	{
		alert("Error. The email address you supplied is not a valid one. Please try again."+email);
		return false;
	}
	else
		return true;
}

function check_not_empty(name)
{
	
	if(!name.length)
	{
		alert("Error. Your name field is empty.");
		return false;
	}
	else
		return true;
}

function check_guestEmailForm()
{
	var email = document.guestEmailForm.from_email.value;
	var name = document.guestEmailForm.from_name.value;
	
	if(check_not_empty(name) && check_email(email))
		return true;
	else
		return false;
}


/* used in update_fields.php */
function flip_fields_state()
{
	var form_disabled = document.updatepaperform.title.disabled;
	var accessRadio1 = document.getElementById('r1');
	var accessRadio2 = document.getElementById('r2');

	if(form_disabled==true)
	{
		// make fields enabled
		document.updatepaperform.title.disabled = false;
		document.updatepaperform.Abstract.disabled = false;
		document.updatepaperform.paper_doc.disabled = false;
		document.updatepaperform.keyword.disabled = false;
		document.updatepaperform.restricted.disabled = false;
		document.updatepaperform.submit.disabled = false;
		document.updatepaperform.reset.disabled = false;
		accessRadio1.disabled = false;
		accessRadio2.disabled = false;
		document.updatepaperform.activate.className = 'deactivate';
	}
	else
	{
		// disable fields
		document.updatepaperform.title.disabled = true;
		document.updatepaperform.Abstract.disabled = true;
		document.updatepaperform.paper_doc.disabled = true;
		document.updatepaperform.keyword.disabled = true;
		document.updatepaperform.restricted.disabled = true;
		document.updatepaperform.submit.disabled = true;
		document.updatepaperform.reset.disabled = true;
		accessRadio1.disabled = true;
		accessRadio2.disabled = true;
		document.updatepaperform.activate.className = 'activate';		
	}
}

// used in session deletion
function confirm_deletion()
{
	var sid = document.getElementsByName('subject_session');
	for(i=0; i<sid.length; i++)
	{
		if(sid[i].checked == true)
		{
			var sessionid = sid[i].value;
			break;	
		}
	}

	var id = Number(sessionid);
	if(isNaN(id))
	{
	    alert('Please select the session to be deleted');
	    return false;
	}
	if (!confirm("Are you sure you want to delete the selected session?"))
		return false;
 	else
	 	return true;
}

/*
alert('ok');
*/
