	var globalElNr = 0;

	function showLoading(elName)
	{
		var img = document.createElement('img');
		img.src = sysUrl + 'template/images/spinner.gif';
		img.alt = 'Loading...';
		img.id  = 'loading' + elName;
		$(elName).appendChild(document.createTextNode(' '));
		$(elName).appendChild(img);
	
	}function hideLoading(elName){ $(elName).removeChild($('loading' + elName)); }

	function buildGroups(selectedId)
	{
	
		var institutionId = $F('institution_id');
		if(selectedId != undefined)
			var pars = 'ajaxAction=loadGroups&institution_id=' + institutionId + '&selectedId=' + selectedId;
		else
			var pars = 'ajaxAction=loadGroups&institution_id=' + institutionId;

		showLoading('groups');

		var myAjax = new Ajax.Request(
									  ajaxUrl, 
									  { method: 'get', 
									  parameters: pars, 
									  onComplete: showGroups
									  });
	}

	function showGroups(originalRequest)
	{
		hideLoading('groups');
		$('groups').innerHTML = originalRequest.responseText;
	}

	// 'Add new group' form on Create Experiment page
	function formNewGroup()
	{
	
		if($('newGroup').innerHTML == '')
		{
			$('newGroup').appendChild(document.createTextNode('Group name: '));
		
			var input       = document.createElement('input');
			input.type      = 'text';
			input.className = 'text';
			input.id        = 'newGroupName';
		
			$('newGroup').appendChild(input);
			$('newGroup').appendChild(document.createTextNode(' '));
			$('newGroup').innerHTML += '<input type="button" class="button" onclick="saveNewGroup()" value="Save" />';
		}
	}

	// Save new group
	function saveNewGroup()
	{
		if($('newGroupName').value == '')
			return;
		else
		{
			var institutionId = $F('institution_id');
			var newGroupName  = $F('newGroupName');
			showLoading('newGroup');
			var pars = 'ajaxAction=addNewGroup&institution_id=' + institutionId + '&groupName=' + newGroupName;
			var myAjax = new Ajax.Request( 
										  ajaxUrl, 
										  { method: 'get', 
	 									  parameters: pars, 
										  onComplete: showSaveNewGroup
										  });
		}
	}

	// saveNewGroup callback
	function showSaveNewGroup(originalRequest)
	{
		//$('newGroup').innerHTML = originalRequest.responseText;
	    //alert(originalRequest.responseText);
		hideLoading('newGroup');
		if(originalRequest.responseText.indexOf('true') != -1)
		{
			group = originalRequest.responseText.split(',');
			id    = group[1];
			$('newGroup').innerHTML = '';
			buildGroups(id);
		}
		else
			alert(originalRequest.responseText);

	}

	function sessionHasConflicts(editionId)
	{
		var selects       = document.getElementsByTagName('select');
		var validKey      = -1;
		var selName       = '';
		var dates         = new Array();

		for(var i = 0, size = selects.length; i < size; i++)
		{
			if(selects[i].name.indexOf('[location_id]') != -1)
			{
				selName  = selects[i].name;
				validKey = selName.substring(8, selName.indexOf('][location_id]'));
				var additionalMod = false;
			}
		
			if(selects[i].name.indexOf('[location_id]') != -1)
			{
				dates[validKey] = validKey + '__' + $F(selects[i]) + '__';
			}
		
			if(selects[i].name.indexOf('[date]') != -1 && selects[i].name.indexOf('[additional_day]') == -1)
			{
				if(selects[i].name.indexOf('[date][month]') != -1)
					dates[validKey] += $F(selects[i]);
				else
					dates[validKey] += '-' + $F(selects[i]);
			}
		
			if(selects[i].name.indexOf('[time]') != -1 && selects[i].name.indexOf('[additional_day]') == -1)
			{
				if(selects[i].name.indexOf('[time][hour]') != -1)
					dates[validKey] += ' ' + $F(selects[i]);
				else
					dates[validKey] += ':' + $F(selects[i]);
			}

			if($F('session[' + validKey + '][additional_day_boolean]') == 'on')
			{
				if(selects[i].name.indexOf('[date]') != -1 && selects[i].name.indexOf('[additional_day]') != -1)
				{
					if(!additionalMod)
					{
						dates[validKey] += '__';
						additionalMod = true;
					}
					if(selects[i].name.indexOf('[date][month]') != -1)
						dates[validKey] += $F(selects[i]);
					else
						dates[validKey] += '-' + $F(selects[i]);
				}
		
				if(selects[i].name.indexOf('[time]') != -1 && selects[i].name.indexOf('[additional_day]') != -1)
				{
					if(selects[i].name.indexOf('[time][hour]') != -1)
						dates[validKey] += ' ' + $F(selects[i]);
					else
						dates[validKey] += ':' + $F(selects[i]);
				}	
			}
			if(selects[i].name.indexOf('[length_of_session]') != -1)
			{
				dates[validKey] += '__' + $F(selects[i]);
			}
		}

		dates.shift();

		var datesStr = dates.toString();
		var pars = 'ajaxAction=sessionCheckConflicts&editionId='+editionId+'&dates=' + datesStr;

		showLoading('sessions');

		//$('sessions').innerHTML = pars;
		var myAjax = new Ajax.Request(
									  ajaxUrl, 
									  { method: 'get', 
									  parameters: pars, 
									  onComplete: showSessionHasConflicts
									  });
	}

	function showSessionHasConflicts(originalRequest)
	{
		hideLoading('sessions');
		var r = originalRequest.responseText;
	
		if(r != 'false')
		{
			if($('bottomWarning'))
				$('sessions').removeChild($('bottomWarning'));
			var div       = document.createElement('div');
			div.innerHTML = "<strong>There's a conflict on one of your sessions.</strong>";
			div.id        = 'bottomWarning';
			$('sessions').appendChild(div);
		
			var conflictSessions = r.split(',');
			for(var i = 0, size = conflictSessions.length; i < size; i++)
			{
				var arr = conflictSessions[i].split('__');
				var id = arr[0];
				var experimentName = arr[1];
				$('conflictMessage' + id).style.display = 'block';
				$('conflictMessage' + id).innerHTML = 'This session is conflicting with a session from experiment ' + experimentName;
			}
		}
		else
		{	
			$('newSessions').submit();
		}
	}

	function submitNewSessions(editionId)
	{
		if(typeof(editionId) == 'undefined') editionId = 0;
		sessionHasConflicts(editionId);
	}

	function addNewSession()
	{
		var sessionId    = $('sessionId').value;
		var sessionCount = $('sessionCount').value;
		sessionCount++;
		$('sessionCount').value++;

		var found = false;
		var bonusSessionId = sessionId;
		while(found == false && bonusSessionId > 0)
		{
			
			if($('session[' + bonusSessionId + '][on_time_bonus]'))
			{
			
				var lastBonus = $F('session[' + bonusSessionId + '][on_time_bonus]');

				found = true;
			}
			else
				{
				bonusSessionId--;
			}
		}

		sessionId++;
		$('sessionId').value++;
		var pars = 'ajaxAction=addNewSession&sessionId=' + sessionId + '&sessionCount=' + sessionCount + '&lastBonus=' + lastBonus;
		showLoading('sessions');
		var myAjax = new Ajax.Request(
									  ajaxUrl, 
									  { method: 'get', 
									  parameters: pars, 
									  onComplete: showAddNewSession
									  });
	}

	function showAddNewSession(originalRequest)
	{
		hideLoading('sessions');
		var newContainer    = document.createElement('div');
	    newContainer.id = 'session' + Math.floor(Math.random()*1234);
	
		newContainer.innerHTML = originalRequest.responseText;
		$('sessions').appendChild(newContainer);
	
	

	}

	function cancelThisSession(sessionId)
	{
		var sessionContainer = $('newSession' + sessionId);
		sessionContainer.parentNode.removeChild(sessionContainer);
		$('sessionCount').value--;

		// reorganize session numbers (only display purposes)
		var h3 = document.getElementsByTagName('h3');
		for(var i = 0, size = h3.length; i < size; i++)
		{
			if(h3[i].className == 'sessionCount')
			{
				h3[i].innerHTML = 'Session ' + (i+1);
			}
		}
	}

	function showAdditionalDayForm(sessionId)
	{
		if($('additionalDayContainer-' + sessionId).style.display == 'none')
			$('additionalDayContainer-' + sessionId).style.display = 'block';
		else
			$('additionalDayContainer-' + sessionId).style.display = 'none';
	}


/*
	 * Criterias (recruitment)
	 */
	function changeCriteriaSchool(el)
	{
		if($F(el) == 'null')
		{
			$('schoolsToSelect').innerHTML = '';
		}
		else if($('schoolsToSelect').innerHTML == '')
		{
			var pars = 'ajaxAction=loadSchoolsForRecruitment';
			showLoading('schoolsToSelect');
			new Ajax.Updater('schoolsToSelect', ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('schoolsToSelect');}});
		}
	}

	function changeCriteriaMajor(el)
	{
		if($F(el) == 'null')
		{
			$('majorsToSelect').innerHTML = '';
		}
		else if($('majorsToSelect').innerHTML == '')
		{
			var pars = 'ajaxAction=loadMajorsForRecruitment';
			showLoading('majorsToSelect');
			new Ajax.Updater('majorsToSelect', ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('majorsToSelect');}});
		}
	}


	function changeCriteriaInstitution(el)
	{
		if($F(el) == 'null')
		{
			$('institutionsToSelect').innerHTML = '';
			$('institutionMod').style.display    = 'none';
		}
		else 
		{
			if($F(el) == 'include')
				$('institutionMod').style.display     = 'inline';
			else
				$('institutionMod').style.display     = 'none';

			if($('institutionsToSelect').innerHTML == '')
			{
				var pars = 'ajaxAction=loadInstitutionsForRecruitment';
				showLoading('institutionsToSelect');
				new Ajax.Updater('institutionsToSelect', ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('institutionsToSelect');}});
			}
		}
	}

	function selectInstitution(el, id)
	{
		var containerName = 'groups-' + id;
		if(!el.checked)
			$(containerName).innerHTML = '';
		else
		{
			var pars = 'ajaxAction=loadGroupsForRecruitment&id=' + id;
			showLoading(containerName);
			new Ajax.Updater(containerName, ajaxUrl, {parameters: pars, onComplete: function() { hideLoading(containerName);}});
		}
	}


	function changeCriteriaExperiment(el)
	{
		if($F(el) == 'null')
		{
			$('experimentsToSelect').innerHTML   = '';
			$('experimentAddMore').style.display = 'none';
			$('experimentMod').style.display     = 'none';
		}
		else 
		{
			if($F(el) == 'include')
				$('experimentMod').style.display     = 'inline';
			else
				$('experimentMod').style.display     = 'none';

			if($('experimentsToSelect') . innerHTML == '')
			{
				$('experimentAddMore').style.display = 'inline';
				var pars = 'ajaxAction=loadExperimentsForRecruitment';
				showLoading('experimentsToSelect');
				var newContainer = document.createElement('div');
				$('experimentsToSelect').appendChild(newContainer);
				new Ajax.Updater(newContainer, ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('experimentsToSelect');}});
			}
		}
	}

	function experimentAddMore() { 
		var pars = 'ajaxAction=loadExperimentsForRecruitment';
		showLoading('experimentsToSelect');
		var newContainer = document.createElement('div');
		$('experimentsToSelect').appendChild(newContainer);
		new Ajax.Updater(newContainer, ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('experimentsToSelect');}});
	}



	function changeCriteriaTreatment(el)
	{
		if($F(el) == 'null')
		{
			$('treatmentsToSelect').innerHTML   = '';
			$('treatmentAddMore').style.display = 'none';
			$('treatmentMod').style.display     = 'none';
		}
		else
		{
			if($F(el) == 'include')
				$('treatmentMod').style.display = 'inline';
			else
				$('treatmentMod').style.display = 'none';

			if($('treatmentsToSelect') . innerHTML == '')
			{
				$('treatmentAddMore').style.display = 'inline';
				var pars = 'ajaxAction=loadTreatmentsForRecruitment';
				showLoading('treatmentsToSelect');
				var newContainer = document.createElement('div');
				$('treatmentsToSelect').appendChild(newContainer);
				new Ajax.Updater(newContainer, ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('treatmentsToSelect');}});
			}
		}
	}

	function treatmentAddMore() { 
		var pars = 'ajaxAction=loadTreatmentsForRecruitment';
		showLoading('treatmentsToSelect');
		var newContainer = document.createElement('div');
		$('treatmentsToSelect').appendChild(newContainer);
		new Ajax.Updater(newContainer, ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('treatmentsToSelect');}});
	}


	function selectAnyExperience()
	{
		//alert($('extendedCriterias').style.display);
		if($('extendedCriterias').style.display == 'block' || $('extendedCriterias').style.display == '')
			$('extendedCriterias').style.display = 'none';
		else
			$('extendedCriterias').style.display = 'block';
	}




	function criteriaSelectChange(elNr)
	{
	
		var elName = 'criteria' + elNr;
		globalElNr = elNr;
	
		if($('appendix' + elNr))
			$('appendix' + elNr).innerHTML = '';

		if($F(elName) == 8)
			loadSchoolsIntoSelect(elNr);
		else if($F(elName) == 9)
			loadMajorsIntoSelect(elNr);
	}

	function loadSchoolsIntoSelect(elNr)
	{
		var selectName = 'criterias[' + elNr + '][appendix]';
		var pars = 'ajaxAction=loadSchoolsIntoSelect&selectName=' + selectName;
		var containerName = 'appendix' + elNr;
		showLoading('criterias');

		new Ajax.Updater(containerName, ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('criterias');}});
	}

	function loadMajorsIntoSelect(elNr)
	{
		var selectName = 'criterias[' + elNr + '][appendix]';
		var pars = 'ajaxAction=loadMajorsIntoSelect&selectName=' + selectName;
		showLoading('criterias');
		var containerName = 'appendix' + elNr;

		new Ajax.Updater(containerName, ajaxUrl, {parameters: pars, onComplete: function() { hideLoading('criterias');}});
	}

	function addNewCriteria()
	{
		$('criteriaId').value++;
		var criteriaId = $('criteriaId').value;

		var pars = 'ajaxAction=addNewCriteria&criteriaId=' + criteriaId;
		showLoading('criterias');

		var myAjax = new Ajax.Request(
									  ajaxUrl, 
									  { method: 'get', 
									  parameters: pars, 
									  onComplete: showAddNewCriteria
									  });
	}

	function showAddNewCriteria(originalRequest)
	{
		hideLoading('criterias');
		var newContainer       = document.createElement('div');
	    newContainer.id        = 'session' + Math.floor(Math.random()*1234);

		newContainer.innerHTML = originalRequest.responseText;
		$('criterias').appendChild(newContainer);
	}

	function removeCriteria(elNr)
	{
		var elName = 'criteria' + elNr;
		$(elName).parentNode.removeChild($(elName));
	}

	/* conduct session page */
	function conductSessionSaveAndClose()
	{
		var mod   = document.createElement('input');
		mod.type  = 'hidden';
		mod.value = '1';
		mod.name  = 'saveAndClose';

		$('conductSessionForm').appendChild(mod);
		$('conductSessionForm').submit();
	}

	/* conduct session page */
	function conductFillWithDefaultBonus(defaultBonus)
	{
		$$('.ontimeEarnings').each( function(i)
		{
			i.value = defaultBonus;
		});
	}

	function conductSetAllAttended()
	{
		$$('.statusDropdown').each(function(s) 
		{
			s.selectedIndex = 1;
		});
	}

	/* conduct session page */
	function conductAddStudent()
	{
		var o = '<p>';
		o += '<a href="javascript:void(0)" onclick="conductAddStudentAlreadyIn()">The user is already in the database</a><br />';
		o += '<a href="javascript:void(0)" onclick="conductAddStudentNewAccount()">The student needs a new account</a>';
		o += '</p>';
		$('addStudent').innerHTML = '';
		$('addStudent').appendChild(Builder.build(o));
		$('addStudent').style.display = 'block';
	}

	function conductAddStudentAlreadyIn()
	{
		o  = '<div><p><strong>Search student</strong></p>';
		o += '<p>Name<br /> <input type="text" id="search_student_name" class="text" /></p>';
		o += '<p>Number/ID <br /><input type="text" id="search_student_id" class="text" /></p> ';
		o += '<p><input type="button" class="button" value="Search" onclick="conductSearchStudent()" /></p></div>';

		$('addStudent').update(o);
		$('search_student_name').focus();
	}

	function conductSearchStudent()
	{
		var studentName = $F('search_student_name');
		var studentID   = $F('search_student_id');
		var sessionId   = $F('session_id');
		var pars = 'ajaxAction=searchStudent&sessionId=' + sessionId + '&student=' + studentName + '&studentId=' + studentID;
		showLoading('addStudent');

		var myAjax = new Ajax.Request(
									  ajaxUrl, 
									  { method: 'get', 
									  parameters: pars, 
									  onComplete: showConductSearchStudent
									  });
	}

	function showConductSearchStudent(originalRequest)
	{
		hideLoading('addStudent');
		$('addStudent').innerHTML = originalRequest.responseText;
	}

	function conductAddStudentAfterSearch(studentId)
	{
		var sessionId   = $F('session_id');
		var pars = 'ajaxAction=addStudentAfterSearch&sessionId=' + sessionId + '&studentId=' + studentId;
		showLoading('addStudent');

		var myAjax = new Ajax.Request(
									  ajaxUrl, 
									  { method: 'get', 
									  parameters: pars, 
									  onComplete: conductAddStudentAfterSearch_callback
									  });
	}

	function conductAddStudentAfterSearch_callback(originalRequest)
	{
		$('conductTableBody').insert({'bottom':originalRequest.responseText});

		hideLoading('addStudent');
		$('addStudent').innerHTML = 'Student added successfully';
	}


	function conductAddStudentNewAccount(chapmanId)
	{
		if(typeof(chapmanId) == 'undefined') var chapmanId = '';
		var sessionId   = $F('session_id');
		var pars = 'ajaxAction=addStudentNewAccount&sessionId=' + sessionId + '&chapmanId=' + chapmanId;
		showLoading('addStudent');

		var myAjax = new Ajax.Request(
									  ajaxUrl, 
									  { method: 'get', 
									  parameters: pars, 
									  onComplete: showConductAddStudentNewAccount
									  });
	}

	function showConductAddStudentNewAccount(originalRequest)
	{
		hideLoading('addStudent');
		$('addStudent').innerHTML = originalRequest.responseText;
	}

	function conductCancelNewAccount()
	{
		$('addStudent').innerHTML = '';
		$('addStudent').style.display = 'none';
	}

	/* Pre submit */
	function presubmitCreateAccount()
	{
		var name   = $F('first_name');
		var email  = $F('email');
		var passwd = $F('passwd');
		var id_of_student = $F('id_of_student');
	
	
		if(name == '' || email == '' || passwd == '' || id_of_student == '') 
			showWarning('presubmitWarning', 'Please, fill all the required fields');
		else if(!$('ageVerification').checked)
			showWarning('presubmitWarning', 'Only students over 18 years old can be registered in the recruiter.');
		else
		{
			var pars = 'ajaxAction=presubmitCreateAccount&id_of_student=' + id_of_student;
			showLoading('loading');
			var myAjax = new Ajax.Request(ajaxUrl, { method: 'get', parameters: pars, onComplete: showPresubmitCreateAccount });
		}
	}

	function showPresubmitCreateAccount(originalRequest)
	{
		hideLoading('loading');
		var r = originalRequest.responseText;

		if(r == 'false')
			showWarning('presubmitWarning','This id is already taken, please select another.');
		else
			$('formCreateAccount').submit();
	}


	function showWarning(id,message)
	{
		$(id).style.display = 'block';
		$(id).innerHTML = message;
	}

	function presubmitCreateExperiment()
	{
		if(!$('title').present() || !$('registration_cutoff').present() || !$('actual_participants').present() || !$('treatment').present() || !$('group_id').present() || !$('institution_id').present()) 
			showWarning('presubmitWarning', 'Please, fill all the required fields');
		else if(isNaN($F('registration_cutoff')))
			showWarning('presubmitWarning', 'Registration Cutoff needs to be a number.');
		else if(isNaN($F('actual_participants')))
			showWarning('presubmitWarning', 'Actual Participants needs to be a number.');
		else
		{
			$('formCreateExperiment').submit();
		}
	}


	function presubmitUserAccount()
	{
		if($F('name') == '' || $F('email') == '')
			showWarning('presubmitWarning', 'Please, fill all the required fields');
		else
		{
			$('formUserAccount').submit();
		}
	}

/*
	 * Calendar view
	 */

	function resizeCalendar()
	{
		var days = $('calendarBox').childElements().findAll(function(e){ if(e.hasClassName('break') || e.id=='daysOfTheWeek') return false; else return true;});

		var lastDayOffset    = 0;
		var currentWeek      = -1;
		var currentHeight    = 0;
		var currentMaxHeight = 0;
		var weekHeights      = new Array();

		days.each(function(day) {
			var dayOffset = day.viewportOffset();
			if(dayOffset[1] != lastDayOffset)
			{
				weekHeights[currentWeek] = currentMaxHeight;

				currentWeek++;
				currentMaxHeight = 0;
			}

			day.immediateDescendants().each(function(session) {
				currentHeight += session.getHeight();
			});
		
			if(currentHeight > currentMaxHeight)
				currentMaxHeight = currentHeight;
			
			lastDayOffset = dayOffset[1];
			currentHeight = 0;
		});

		if(typeof(weekHeights[currentWeek]) == 'undefined')
			weekHeights[currentWeek] = currentMaxHeight;

		// console.log(weekHeights);
		currentWeek = -1;
		var weekHeightForCSS = 0;
	
		days.each(function(day) {
			var dayOffset = day.viewportOffset();
			if(dayOffset[1] != lastDayOffset)
			{
				currentWeek++;
				weekHeightForCSS = (weekHeights[currentWeek]+35) + 'px';
			}

			if(weekHeights[currentWeek] > 70)
				day.style.height = weekHeightForCSS;

			lastDayOffset = dayOffset[1];
		});
	}
 
	// function resizeCalendar()
	// {
	// 	var divs = document.getElementsByTagName('div');
	// 	var largest  = new Array();
	// 	var w = -1;
	// 	for(i = 0, size = divs.length; i < size; i++)
	// 		if(divs[i].id.indexOf('monthDay') != -1)
	// 		{
	// 			if( (divs[i].className.indexOf('calendarDayLeft') != -1) || (divs[i].className.indexOf('calendarDayAtTheEndAndLeft') != -1))
	// 			{
	// 				w++;
	// 				largest[w] = new Array();
	// 				largest[w]['height'] = 0;
	// 				largest[w]['divId']  = divs[i].id;
	// 			}
	// 			sessionsOnDay = $$('#' + divs[i].id + ' .calendarSession').length;
	// 			if(sessionsOnDay > largest[w]['height'])
	// 				largest[w]['height'] = sessionsOnDay;
	// 		}
	// 		
	// 	var week = -1;
	// 	for(z = 0, zSize = divs.length; z < zSize; z++)
	// 	{
	// 		if(divs[z].id.indexOf('monthDay') != -1 || divs[z].className.indexOf('emptyCalendarDay') != -1)
	// 		{
	// 
	// 			if( (divs[z].className.indexOf('calendarDayLeft') != -1) || (divs[z].className.indexOf('calendarDayAtTheEndAndLeft') != -1) || (divs[z].className.indexOf('emptyCalendarDay') != -1))
	// 				week++;
	// 			
	// 			if(largest[week] && largest[week]['height'] > 1)
	// 				divs[z].style.height = (largest[week]['height'] * 35) + 'px';
	// 			
	// 		}
	// 	}
	// }

	/* Navbar effects */
	function navbarExperimentsToggle()
	{
		$('navbarFacultyExperiments').style.display = 'block';
		experimentsSlider.toggle();
	}

	function navbarStudentsToggle()
	{
		$('navbarFacultyStudents').style.display = 'block';
		studentsSlider.toggle();
	}


	/* Recruit page */
	function selectAllStudents(el)
	{
		var inputs = document.getElementsByTagName('input');
		for(var i = 0, size = inputs.length; i < size; i++)
			if(inputs[i].type == 'checkbox')
				inputs[i].checked = el.checked;
	}

	/* Randomly select students from the searched list */
	function randomlySelectRecruits()
	{
		var toSelect = $('randomSelect');
		if(toSelect.value < 1)
			return;
	
		// var inputs = document.getElementsByClassName('studentRecruit');
		var inputs = $$('.studentRecruit');
	
		inputs.each(function(i) { i.checked = false;});
		$('selectAll').checked = false;
	
		if(inputs.length == toSelect.value || inputs.length < toSelect.value)
		{
			inputs.each(function(i) { i.checked = true;});
			$('selectAll').checked = true;
		}
		else
		{
			var selected = 0;
			var dateObj = new Date();
			while(selected < toSelect.value)
			{
				inputs.each(function(i) 
					{ 
						if(selected < toSelect.value)
						{
							if(i.checked != true)
							{
								if(((Math.round(Math.random()*7)) % 2) == 0)
								{
									i.checked = true;
									selected++;
								}
							}
						}
					});
			}
		}
	}

	/* 
	 * Search for student
	 */
	function searchStudentBy(searchType)
	{
		$('searchByNameContainer').style.display   = 'none';
		$('searchByNumberContainer').style.display = 'none';
		$('searchBySchoolContainer').style.display = 'none';
		$('searchByMajorContainer').style.display  = 'none';
		$('searchByGradeContainer').style.display  = 'none';
		$('searchByGenderContainer').style.display = 'none';
		if(searchType == 'name')
			$('searchByNameContainer').style.display   = 'block';
		if(searchType == 'number')
			$('searchByNumberContainer').style.display   = 'block';
		if(searchType == 'school')
			$('searchBySchoolContainer').style.display = 'block';
		if(searchType == 'major')
			$('searchByMajorContainer').style.display  = 'block';
		if(searchType == 'grade')
			$('searchByGradeContainer').style.display  = 'block';
		if(searchType == 'gender')
			$('searchByGenderContainer').style.display  = 'block';
	}


	window.onload = function() {
		if($('navbarFacultyExperiments')) 
		{
			experimentsSlider = new fx.Height('navbarFacultyExperiments',{duration: 200});
			if(page != 'experiments' && page != 'sessions' && page != 'session')
			{	
				experimentsSlider.hide();
			}
		}
	
		if($('navbarFacultyStudents')) 
		{
			studentsSlider = new fx.Height('navbarFacultyStudents',{duration: 200});
			if(page != 'students')
				studentsSlider.hide();
		}
	};


	/* 
	 * Login page
	 */
	function recoverPassword()
	{
		if($('passwordRecovery').style.display == 'none')
		{
				var content = "<div><p>Type in your login and we'll send you a link with instructions on how to reset your password.</p>";
				content += '<form method="post" action="' + sysUrl + 'off/password/recover/"><p>Login: <br /><input type="text" name="login" /></p><p><input type="submit" value="Reset password" /></p></form></div>';
				$('passwordRecovery').appendChild(Builder.build(content));
				Effect.SlideDown('passwordRecovery', {duration:0.4});
		}
	}

	function showAnswer(nr)
	{
		var el = $('answer' + nr);
		if(el.style.display == 'none')
			Effect.SlideDown(el, {duration:0.3});
		else
			Effect.SlideUp(el, {duration:0.3});
	}


	/*
	 * Student details on new window
	 */ 
	function openStudentDetail(studentId)
	{
		window.open(sysUrl + 'pop-up/student-details/' + studentId,'','scrollbars=yes,menubar=no,height=500,width=750,resizable=yes,toolbar=no,location=no,status=no');
	}

	/*
	 * Boilerplates on new window
	 */ 
	function openBoilerplateDictionary(name)
	{
		window.open(sysUrl + 'pop-up/boilerplates/' + name,'','scrollbars=yes,menubar=no,height=400,width=600,resizable=yes,toolbar=no,location=no,status=no');
	}


	function removeStudentBeforePrint(studentId)
	{
		var earnings = $('studentRow-' + studentId).down('.earnings').innerHTML.replace('$ ', '');
		$('overallExpenses').update($('overallExpenses').innerHTML-earnings);
		 $('studentRow-' + studentId).remove();
	}
	
	function printSheet(el)
	{
		$$('.removeStudentCol').invoke('remove');
		$(el).up('p').remove();
		window.print();
	}

	/*
	 * Topaz tablet functions
	 */
	var lastChapmanId = -1;
	function openSignatureWindow(el, chapmanId)
	{
		lastChapmanId = chapmanId;
		
		var hasNext = signatureHasNext();
		var hasPrev = signatureHasPrevious();
		
		var participationEarnings = $F($(el).up('td').previous('td').down('.earnings'));
		var onTimeEarnings        = $F($(el).up('td').previous('td').previous('td').down('.ontimeEarnings'));
		if($(el).href.indexOf('?') != -1)
		{
			var cleanHref = $(el).href.split('?');
			$(el).href = cleanHref[0];
		}
		$(el).href += '?participationEarnings=' + participationEarnings + '&ontimeEarnings=' + onTimeEarnings + '&hasNext=' + hasNext + '&hasPrev=' + hasPrev;

		
		this.signatureWindow = window.open(el.href,'signatureWindow','scrollbars=yes,menubar=no,height=580,width=700,resizable=yes,toolbar=no,location=no,status=no');
		//openPopUp(el);
	}

	function markUserAsSigned(chapmanId)
	{
		if($('sessionStudent-'+chapmanId))
		{
			var imgEl = $('sessionStudent-'+chapmanId).down('img.signatureIcon');
			imgEl.src = sysUrl + 'template/images/tick.png';
			imgEl.alt = 'Already Signed';
		}
	}

	/*
	 * More V2 additions
	 */
	function removeStudentFromSession(sessionId, studentId, chapmanId)
	{
		if(confirm('Are you sure?'))
		{
			var pars = 'ajaxAction=removeStudentFromSession&studentId=' + studentId + '&sessionId=' + sessionId;
			new Ajax.Request(ajaxUrl, { method: 'post', parameters: pars, onComplete: removeStudentFromSession_callback.bindAsEventListener(this, chapmanId) });
		}
	}

	function removeStudentFromSession_callback(request, chapmanId)
	{
		if(request.responseText == 'true')
			$('sessionStudent-'+chapmanId).remove();
		else 
			alert("Sorry but there was an error.");
		
	}
	
	function signatureGoToNext()
	{
		return;
		var chapmanId = lastChapmanId;
		if(chapmanId==-1)
			return false;
		else
		{
			var currentRow = $('sessionStudent-'+chapmanId);
			var nextRow = currentRow.next('.sessionStudentRow');
			if(nextRow)
			{
				var nextChapmanId = nextRow.id.split('-')[1];
				lastChapmanId = nextChapmanId;
				var studentId = nextRow.down('td').next('td').down('select').name.split('[')[1].replace(']','');
				this.signatureWindow.document.getElementById('studentIdInput').value = studentId;
				
				// alert(studentId)
				new Ajax.Request(ajaxUrl, { postBody: 'ajaxAction=getNextPrevStudentInfo&studentId='+studentId+'&sessionId='+currentSessionId, onComplete: signatureGoToNext_callback.bindAsEventListener(this,nextChapmanId)});
			}
			// 	nextRow.down('.sessionStudentSignatureLinkCell').down('a').onclick();
		}
	}
	
	function signatureGoToNext_callback(request, chapmanId)
	{
		return;
		// alert(request.responseText);
		// alert(request.responseText);
 		// alert(this.signatureWindow);
		// alert(this.signatureWindow.window.frames);
		// alert(window.frames[0]);
		// alert(window.frames[0].document);
		// this.signatureWindow.window.document.write(request.responseText);
		// $(this.signatureWindow.document.body).insert({'bottom':'<script language="vbscript">SigPlus1.LCDRefresh 2,0,0,640,480</script>'});
		// alert($(this.signatureWindow.document.body).in);
		// $(this.signatureWindow.document.body).insert({'bottom':'asdf2'});
		// this.signatureWindow.window.document.write('asdf');
		
		// this.signatureWindow.SigPlus1.LCDRefresh(2,0,0,640,480);
		
		var data = request.responseText.split('__');
		data[2] = data[2].strip();
		this.signatureWindow.clearStudentInfo();
		this.signatureWindow.SetTypeface(20,"Arial",0,0);
		this.signatureWindow.WriteStringToLCD(20,60,"On time Earnings: $ "+data[0]+" | Participation Earnings: $ " + data[1]);
		this.signatureWindow.WriteStringToLCD(20,88, data[2] +", please sign below to agree with these earnings:");
		this.signatureWindow.clearSignatureSpace();
	}
	
	function singatureGoToPrevious()
	{
		return;
		var chapmanId = lastChapmanId;
		if(chapmanId==-1)
			return false;
		else
		{
			var currentRow = $('sessionStudent-'+chapmanId);
			var prevRow = currentRow.previous('.sessionStudentRow');
			if(prevRow)
				prevRow.down('.sessionStudentSignatureLinkCell').down('a').onclick();
		}
	}
	
	function signatureHasPrevious()
	{
		return;
		var chapmanId = lastChapmanId;
		if(chapmanId==-1)
			return 0;
		else
		{
			var currentRow = $('sessionStudent-'+chapmanId);
			var prevRow = currentRow.previous('.sessionStudentRow');
			if(prevRow)
				return 1;
			else
				return 0;
		}
	}
	
	function signatureHasNext()
	{
		return;
		var chapmanId = lastChapmanId;
		if(chapmanId==-1)
			return 0;
		else
		{
			var currentRow = $('sessionStudent-'+chapmanId);
			var nextRow = currentRow.next('.sessionStudentRow');
			if(nextRow)
				return 1;
			else
				return 0;
		}
	}


