/*
Copyright 2011
Author: Simon Garrett
Company: Aispire Consulting Ltd.
*/

// -- GENERAL FUNCTIONS -- //

function mysqlDatetimeToJsDate(mysqlDatetime) {
	//function parses mysql datetime string and returns javascript Date object
	//input has to be in this format: 2007-06-05 15:26:02
	var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
	var parts=mysqlDatetime.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
	return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}


function jsDateToMysqlDatetime(date1) {
  return date1.getFullYear() + '-' +
    (date1.getMonth() < 9 ? '0' : '')  + (date1.getMonth()+1)  + '-' +
    (date1.getDate() < 10 ? '0' : '')  +  date1.getDate()      + ', ' +
    (date1.getHours() < 10 ? '0' : '') +  date1.getHours()     + ':' +
    (date1.getMinutes() < 10 ? '0' : '') +  date1.getMinutes();
}

function LookupMonth(monthNum) {
	monthNum = monthNum-1;
	var monthStrings = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
	return monthStrings[monthNum];
}

function ShowWorking() {
	$('body').append('<div id="backgroundWash"><img id="spinner2" src="assets/images/spinner.gif" alt="" /></div>');
}
function HideWorking() {
	$('#backgroundWash').remove();
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ClearForm() {  // WARNING -- there's something very odd about this. When used on its own it FILLS all checkboxes //
	$('fieldset input[type=text]').val("");
	$('fieldset textarea').val("");
	$('fieldset fieldset input[type=checkbox]').attr('checked',false);
	$('fieldset fieldset input[type=radio]').attr('checked',false);
	$('.filter-Student-x_Students-selection option').eq(0).attr('selected','false');
	$('#studentNotes').remove();
}

function SetMultipleCheckboxValues(element, value) {
	$('input[name='+element+']').attr('checked',false); // reset to empty
	var bits    = value.split("::");
	var bitsLen = bits.length;
	var b = 0;
	$('input[name='+element+']').attr('checked',false);
	for (; b<bitsLen; b++) {
		var bitValue = bits[b];
		$('input[name='+element+']').filter('[value='+bitValue+']').attr('checked',true);
	}
}

function isEmail(v) {
	if (v=="none") 								 { return true; }
	var n1       = v.indexOf("@"); if (n1<3) 	 { return false; }
//	var n2       = v.indexOf("."); if (n2<7) { return false; }
//	var v2       = v.replace("@"," ").replace(/\./gi," "); // try to make smg aber ac uk format
	v1bits = v.split("@");
	if (v1bits[0].length<3) 					 { return false; } // first part can be a.asdfas or asdfas but must be longer than three chars
	var v2Bits   = v1bits[1].split(".");
	if (v2Bits.length<1) 						 { return false; } // must be at least a major domain name under the .com or .uk etc
	var str1     = v2Bits[0]; if (str1.length<2) { return false; } // ... and the domain name bits must be at least two chars long
	var str2     = v2Bits[1]; if (str2.length<2) { return false; }
	return true;
}

function isDate(v) {
	if (v=="0000-00-00") { return false; }
	return !(/Invalid|NaN/.test(new Date(v)));
}

function isPhone(v){
	if (v=="none") { return true; }
	var phoneNumberPattern = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;  
return phoneNumberPattern.test(v);  
}  

/*
function isPhone(v) {
	if (v.toLowerCase()=="none") { return true; }
	var v2 = v.replace("(","").replace(")","").replace(/\./gi," ").replace(/-/gi," "); // try to make 999 999 9999 format
	var v2Bits = v2.split(" ");
	var areaCode = v2Bits[0]; var areaCodeNumeric = parseInt(areaCode,10);
	var num1     = v2Bits[1]; var num1Numeric     = parseInt(num1, 10);
	var num2     = v2Bits[2]; var num2Numeric     = parseInt(num2, 10);
	if (areaCode.length==3 && !/Invalid|NaN/.test(areaCodeNumeric) && areaCodeNumeric>99 &&
	    num1.length==3     && !/Invalid|NaN/.test(num1)            && num2Numeric>99 &&
	    num2.length==4     && !/Invalid|NaN/.test(num2)            && num2Numeric>999)
	{
		return true;    
	}
	return false;
}
*/

function isURL(v) {
	var re = /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;
	return re.text(v);
}

function isNumeric(v) {
	var re = /^\d+$/;
	return re.test(v);
}

function validateDataType(dataType, elemContent, $elem) {
	var checkBool = true;
	if        (dataType=="email") {
		if (!isEmail(elemContent)) { 
			$elem.val("e.g. name@example.com");
			checkBool = false; 
		}
	} else if (dataType=="date") {
		if (!isDate(elemContent) || elemContent=="0000-00-00") { 
			$elem.val("e.g. mm/dd/yyyy");
			checkBool = false; 
		}
	} else if (dataType=="phone") {
		if (!isPhone(elemContent)) { 
			$elem.val("e.g. 123-456-7890");
			checkBool = false; 
		}
	} else if (dataType=="url") {
		if (!isURL(elemContent)) { 
			$elem.val("e.g. http://www.example.com"); 
			checkBool = false; 
		}
	} else if (dataType=="numeric") {
		if (!isNumeric(elemContent)) { 
			$elem.val("e.g. 123.45");
			checkBool = false; 
		}
	} else if (dataType=="all" || dataType=="any") {
		checkBool = true;  // 'all' data type allows any type of data
	} else { 
		checkBool = false; // unrecognised dataType
	}  
	return checkBool;
}

// data type (e.g. any, string, email...) || type (input or textarea) || name identifier
function validateTextInputsAndTextareas(validationDetailsString, validationBool) {
	if (validationBool==false) { return validationBool; } // already failed elsewhere, no point doing a check
	var validationDetails = validationDetailsString.split("::::");
	var i=0;
	for (; i<validationDetails.length; i++) {
		var validationBits = validationDetails[i].split("||");
		var dataType       = validationBits[0];
		var eString        = validationBits[1]+'[name='+validationBits[2]+']';
		var $elem          = $(eString);
		// do we have any entry at all?
		var elemContent    = $elem.val();
		elemContent = elemContent.trim();  // get rid of spaces
		if (elemContent=="") { 
//alert(dataType+" empty "+eString);
			$elem.addClass("invalidField"); validationBool=false; 
			$elem.removeClass("redText");  // there *is* no text so no point adding a class that could cause problems later
		} else { 
			// do we have the correct data type?
			if (validateDataType(dataType, elemContent, $elem)) {
				$elem.removeClass("invalidField");
				$elem.removeClass("redText");
			} else {
//alert(dataType+" data "+eString);
				$elem.addClass("invalidField"); 
				$elem.addClass("redText");
				validationBool=false;
			}
		}
	}
	if (validationBool==false) { alert("The TEXT FIELDS highlighted in red must be filled in correctly before you can submit this form.  Thanks."); }
	return validationBool;
}

function validateSelects(validationDetailsString, validationBool) {
	if (validationBool==false) { return validationBool; } // already failed elsewhere, no point doing a check
	var validationDetails = validationDetailsString.split("::::");
	var i=0;
	for (; i<validationDetails.length; i++) {
		var validationBits = validationDetails[i].split("||");
		var unselectedText = validationBits[0];
		var eString        = 'select[name='+validationBits[2]+']';
		var $elem          = $(eString);
		// do we have any entry at all?
		var elemContent    = $elem.val();
		if (elemContent=="" || elemContent==unselectedText) { 
			$elem.addClass("invalidField"); validationBool=false; 
		} else { 
			// must be valid as long as the select box itself doesn't contain mistakes (we can't test for that)
			$elem.removeClass("invalidField");
		}
	}
	if (validationBool==false) { alert("The SELECT BOXES highlighted in red must be filled in correctly before you can submit this form.  Thanks."); }
	return validationBool;
}

// min num of selections || type (radio or checkbox) || name identifier
function validateCheckboxesAndRadioButtons(validationDetailsString, validationBool) {
	if (validationBool==false) { return validationBool; } // no point doing a check
	var validationDetails = validationDetailsString.split("::::");
	var i=0;
	for (; i<validationDetails.length; i++) {
//alert(validationDetails[i]);
		var validationBits   = validationDetails[i].split("||");
		var minNumSelections = validationBits[0];
		var eString          = 'input[name='+validationBits[2]+']';
//alert(minNumSelections+" "+eString+" "+validationBits[1]);
		var $allItems   = $(eString);
		var $selectedElems = "";
		if (validationBits[1]=="checkbox") {
			$selectedElems = $(eString+':checked');  // USE this for checkboxes and radio boxes
		} else {
			$selectedElems = $(eString+':selected');		
		}
		
		// do we have the min num of selections?
		if ($selectedElems.length < parseInt(minNumSelections,10)) { 
			$allItems.closest("fieldset").addClass("invalidField");  
			validationBool=false;
		} else {
			$allItems.closest("fieldset").removeClass("invalidField");  
		}
	}
	if (validationBool==false) { 
		alert("The CHECKBOXES and/or RADIO BUTTONS highlighted in red must be selected before you can submit this form.  Thanks."); 
	}
	return validationBool;
}

function validatePasswords(passElem1Str, passElem2Str, validationBool) {
	if (validationBool==false) { return validationBool; } // no point doing a check
	var $elem1 = $(passElem1Str); 
	var $elem2 = $(passElem2Str);
	if ($elem1.val() != $elem2.val()) {
		$elem1.addClass("invalidField"); 
		$elem2.addClass("invalidField"); 
		validationBool=false; 
		alert("The password and check-password don't match"); 
	} else {
		$elem1.removeClass("invalidField"); 
		$elem2.removeClass("invalidField");
	}
	return validationBool;
}


function ConvertRadiosToString($allObjs) {
	var outputString = "";
	if ($allObjs) {
		$allObjs.each(function(i){  // Yes, it shares the 'name' attr
			if (i==0) { outputString += $(this).val(); } 
			else      { outputString += "::"+$(this).val(); }
//			else      { outputString += ","+$(this).val(); }
		});	
	}
	return outputString;
}

function ConvertCheckboxesToString($allObjs) {
	return ConvertRadiosToString($allObjs);
}

function ConvertDropdownsToString(dropdownsList) { // a list of name attrs
	var outputString = "";
	var i=0;
	for (; i<dropdownsList.length; i++) {
		var ddname = dropdownsList[i];  // this name attr
//alert(ddname);
		if (i!=0) { outputString += "::"; }
		outputString += $('select[name='+ddname+']').val();	
	}
	return outputString;
}

function ConvertInputsToString($inputsList) {
	var outputString = "";
	$inputsList.each(function(i) {
		var v = $(this).val();
		var k = $(this).attr('title');
		if (i==0) {
			outputString += k+"--"+v;	
		} else {
			outputString += "::"+k+"--"+v;	
		}
	});
	return outputString;
}


function GetPHPInsertQuery(listOfFields, tableName) {
	var phpQ = "INSERT INTO "+tableName+" ";
	var fieldNamesSection = "(";
	var fieldValuesSection = " VALUES(";
	var i=0;
	for (; i<listOfFields.length; i++) {
		var elemDetails = listOfFields[i];
		var fieldName   = elemDetails[0];
		var fieldValue  = elemDetails[1];
		if (typeof(fieldValue)=="string") {
			fieldValue = fieldValue.replace("'","&#146;");
		}
		if (i==0) {
			fieldNamesSection  += fieldName;
			fieldValuesSection += "'"+fieldValue+"'";
		} else {
			fieldNamesSection  += ", "+fieldName;
			fieldValuesSection += ", '"+fieldValue+"'";
		}
	}
	fieldNamesSection+=")";
	fieldValuesSection+=")";
	phpQ += fieldNamesSection+" "+fieldValuesSection;
	return phpQ;
}

function GetPHPUpdateQuery(listOfFields, tableName, whereClause) {
	var phpQ = "UPDATE "+tableName+" ";
	var fieldsSection = "SET ";
	var i=0;
	for (; i<listOfFields.length; i++) {
		var elemDetails = listOfFields[i];
		var fieldName   = elemDetails[0];
		var fieldValue  = elemDetails[1];
		if (typeof(fieldValue)=="string") {
			fieldValue = fieldValue.replace("'","&#146;");
		}
		if (i==0) {
			fieldsSection += fieldName+" = '"+fieldValue+"'";
		} else {
			fieldsSection += ", "+fieldName+" = '"+fieldValue+"'";
		}
	}
	phpQ += fieldsSection+" "+whereClause;
	return phpQ;
}

			

// -- MAIN WEBSITE -- //

// Slide show
var currSlideNumber=0;
var numberOfSlides=0;

function advanceSlide() {
	$('#slideshow'+currSlideNumber).animate(
		{ opacity:0.0 },
		1000,
		function() { }
	);
	currSlideNumber+=1;
	currSlideNumber%=numberOfSlides;
	$('#slideshow'+currSlideNumber).animate(
		{ opacity:1.0 },
		1000,
		function() { }
	);
}
function startSlides(numberOfSlides) {
	currSlideNumber = numberOfSlides-1;
	advanceSlide();
	setInterval(advanceSlide,5000);
}





// -- ADMIN TABS -- //

// User requests a search
function DoSearch() {
	var searchString = $('#adminSearchBox').val();
	ShowWorking();
	$.ajax({
		url:"http://www.logicpreptutoring.com/admin/Search.php",
		type:"POST",
		data: {"searchString":searchString},
		success: function(r) {
			//alert(r);
			$('#adminSearchResults').html(r);
			
			// activate (un)folding 
			$('.searchResultHeader').each(function(){
				var numRows = $(this).next().find('tr.oneResult').length;
				var h = $(this).html();
				$(this).html(h+" "+numRows+" result(s) &darr;");
			});
			$('.searchResultHeader').unbind('click');
			$('.searchResultHeader').click(function() {
					$(this).next().toggle(300);
			});
			$('.searchResultHeader').corner("3px");
			HideWorking();
		}
	});
	return false;			
}


function PopulateAdminCoursesForm(dropdownType, dropdownItemName, detailsForForm) {
	if (typeof(detailsForForm.courseID)=="undefined") {  // "add new" selected
		ClearForm(); return false;
	}
	var activeVal=false;
	if (detailsForForm.courseIsActive=="1") { activeVal=true; }
	$('input[name=course_id]').val(detailsForForm.courseID);
	$('input[name=course_name]').val(detailsForForm.courseName);
	$('input[name=course_grouping]').val(detailsForForm.courseGrouping);
	$('textarea.course_content').html(detailsForForm.courseCurriculum);
	$('textarea.course_other').html(detailsForForm.courseOther);
	$('input[name=courseIsActive]').attr('checked',activeVal);
	$('input[name=deleteConfirmed]').val("false");
	return true;
}



function PopulateAdminTutorsForm(dropdownType, dropdownItemName, detailsForForm) {
	if (typeof(detailsForForm.tutorFirstName)=="undefined") {  // "add new" selected
		ClearForm(); return false;
	}
	$('input[name=tutorFirstName]').val(detailsForForm.tutorFirstName);
	$('input[name=tutorLastName]').val(detailsForForm.tutorLastName);
	
	$('input[name=tutorEmail]').val(detailsForForm.tutorEmail);
	$('input[name=tutorPhone]').val(detailsForForm.tutorPhone);
	$('textarea[name=tutorPostalAddress]').val(detailsForForm.tutorPostalAddress);
	
	$('textarea[name=tutorOtherContactDetails]').val(detailsForForm.tutorOtherContactDetails);
	$('input[name=tutorDOB]').val(detailsForForm.tutorDOB);
	$('textarea[name=tutorPreDegreeInfo]').val(detailsForForm.tutorPreDegreeInfo);
	
	$('textarea[name=tutorPostDegreeInfo]').val(detailsForForm.tutorPostDegreeInfo);
	$('textarea[name=tutorSchedulingNeeds]').val(detailsForForm.tutorSchedulingNeeds);

	$('textarea[name=tutorWorkExperience]').val(detailsForForm.tutorWorkExperience);			
	$('textarea[name=tutorAdditionalBackground]').val(detailsForForm.tutorAdditionalBackground);
	
	$('textarea[name=tutorWebsiteWriteup]').val(detailsForForm.tutorWebsiteWriteup);
	$('input[name=tutorVideoURI]').val(detailsForForm.tutorVideoURI);
	
	var tutorID = detailsForForm.tutorFirstName+detailsForForm.tutorLastName;
	$('input[name=tutorID]').val(tutorID);	

	var dob          = detailsForForm.tutorDOB;
	var tutorDOBBits = dob.split("-");
/*
	$('input[name=tutorMonth]').val(tutorDOBBits[1]);
	$('input[name=tutorDay]').val(tutorDOBBits[2]);
	$('input[name=tutorYear]').val(tutorDOBBits[0]);
*/
	$('input[name=tutorDOB]').val(tutorDOBBits[1]+"/"+tutorDOBBits[2]+"/"+tutorDOBBits[0]);
	
	// show current course selections
	var courseChoices = detailsForForm.courseChoices;
	var i=0;
	if (typeof(courseChoices)!="undefined") {
		var courseBits = courseChoices.split("::");
		for (; i<courseBits.length; i++) {
			var courseSelection = courseBits[i];
			courseSelection = courseSelection.replace('{"courseID":"','').replace('","tutorID":"'+tutorID+'"}','').replace('"',"");
			var csBits = courseSelection.split(",");
			courseSelection = csBits[0];
//alert(courseSelection);
			$("#course"+courseSelection).attr('checked', true);
		}
	}
	// show current availability selections
	var availabilityChoices = detailsForForm.availabilityChoices;
	if (typeof(availabilityChoices)!="undefined") {
		var availabilityBits = availabilityChoices.split("::");
		var ii=0;
		for (; ii<availabilityBits.length; ii++) {
			var availabilitySelection = availabilityBits[ii];
			availabilitySelection = availabilitySelection.replace('{"tutorSchedulingID":"','').replace('","tutorID":"'+tutorID+'"','').replace('"scheduleElement":"','').replace('"}','');
			var miniBits = availabilitySelection.split(",");
			var elementToSet = miniBits[1];
			$('input[value='+elementToSet+']').attr('checked', true);
		}
	}
	return true;
}



function SetTestDates(valueString) {
	var dateBits = valueString.split("::");
	var bitsLen  = dateBits.length;
//	if (bitsLen!=3) { alert("WARNING: didn't find three dates for the SAT/ACT tests"); }
	var b=0;
	for (; b<bitsLen; b++) {
		var bitValue = dateBits[b];
		var nameToSelect = 'studentTestDate'+(b+1);
		$('select[name='+nameToSelect+']').val(bitValue);
	}	
}

function SetTargetScores(valueString) {
	var targetScoreBits = valueString.split("::");
	var bitsLen = targetScoreBits.length;
	var b=0;
	for (; b<bitsLen; b++) {
		var bitValue  = targetScoreBits[b];
		var subBits   = bitValue.split("--");
		var testID    = subBits[0];
		var testScore = subBits[1];
		var nameToSelect = "targetScoreEntryBoxes-"+testID;
		$('input[name='+nameToSelect+']').val(testScore);
	}
}


function ActivateStudentNotesButton(detailsForForm) {
	// Handle the clicking of the students notes button
	$('#studentNotes, span.inputNote').unbind("click");
	$('#studentNotes, span.inputNote').click(function() {
		// get any existing notes for this student
		var studentID = detailsForForm.studentID;
		var data = {'action':'GetStudentNotes', 'studentID':studentID};
		ShowWorking();
		$.ajax({
			url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php',
			type:'POST',
			data:data,
			success: function(r) {
				HideWorking();
				// create a popup with these notes
				var $popupDialog = $('<div></div>').html("<table class='tablesorter sortable fullWidthTable'><thead><tr> <th>Date</th> <th>Tutor</th> <th>Comment</th> </tr></thead><tbody>"+r+"</tbody></table>").dialog({
						autoOpen: true,
						title: 'Notes for '+studentID,
						modal: true,
						minWidth: 750
					});
				// handle a click of the add/delete note button
				$('.studentCommentButton').unbind("click");
				$('.studentCommentButton').click(function(){
					var $datetimeTD = $(this).parent().prev().prev().prev();
					var $tutorIDTD  = $(this).parent().prev().prev();
					var $commentTD  = $(this).parent().prev();
					var floatingCommentID = $(this).parent().prev().attr('title');
//alert($datetimeTD.html()+" "+$tutorIDTD.html()+" "+$commentTD.html()+" "+floatingCommentID);
					if ($(this).val()=="Add") {
						// ADD is clicked, so gather the info from the new note and send to PHP to update the DB
						// write the datetime and tutor details into the first two fields and convert the comment into a textarea
						var d           = new Date();
						var isoDate     = d.getFullYear()+"/"+(1+d.getMonth())+"/"+d.getDate()+" "+d.getHours()+":"+d.getMinutes();
						var tutorID     = $('input[name=pretendingToBe]').val();
						$datetimeTD.html(isoDate);
						$tutorIDTD.html(tutorID);
						$commentTD.html("<textarea></textarea>");
						// change the add/edit button into and update button and a cancel button
						$(this).parent().html("<input class='studentCommentButton' type='submit' name='confirmCommentUpdate' value='Update' /><input  class='studentCommentButton' type='submit' name='cancelCommentUpdate' value='Cancel' />");
						$('input[name=confirmCommentUpdate]').unbind("click");
						$('input[name=confirmCommentUpdate]').click(function(){
							ShowWorking();
							var packedUpStudentComment = $datetimeTD.html()+"::"+$tutorIDTD.html()+"::"+studentID+"::"+$commentTD.find('textarea').val();
							var data2 = {'action':'AddStudentComment', 'packedUpStudentComment':packedUpStudentComment};
							$.ajax({
								url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php',
								type:'POST',
								data:data2,
								success: function(r) {
									$popupDialog.html("").dialog('close');
									HideWorking();
								}
							});
						});				
						// when the (newly added) CANCEL button is clicked empty the popup and close it (it's cleanest way to proceed)
						$('input[name=cancelCommentUpdate]').unbind("click");
						$('input[name=cancelCommentUpdate]').click(function(){
							$popupDialog.html("").dialog('close');
						});
						

					} else {
						// DELETE has been clicked
						var data2 = {'action':'DeleteStudentComment', 'idToDelete':floatingCommentID};
						$.ajax({
							url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php',
							type:'POST',
							data:data2,
							success: function(r) {
								//alert(r);
								$popupDialog.html("").dialog('close');
								HideWorking();
							}
						});
					}
						
				}); // end click on any comment button (ADD or DELETE)
				
			}  // end success clause
		}); // end ajax call to fill student notes table
	}); // end student notes click and open dialog popup

}


function PopulateAdminStudentsForm(dropdownType, dropdownItemName, detailsForForm) {
	if (typeof(detailsForForm.studentFirstName)=="undefined" || detailsForForm=={}) {  // "add new" selected
		ClearForm();   // always clear the form to get rid of values from prev case or to set up for "add new"
		return false;  // do no more, return now
	}
	
	// Load and show the tutors' notes for this student
	var studentNotesHTML = "<img id='studentNotes' class='adminStudentNotes' src='assets/images/notes-icon.gif' alt='' />";
	$('#tab-container').append(studentNotesHTML); // add the link to the student notepad and show it...
	ActivateStudentNotesButton(detailsForForm);

	$('input[name=studentID]').val(detailsForForm.studentID);
	$('input[name=studentFirstName]').val(detailsForForm.studentFirstName);
	$('input[name=studentLastName]').val(detailsForForm.studentLastName);
	$('input[name=studentEmail]').val(detailsForForm.studentEmail);
	$('input[name=studentPhone]').val(detailsForForm.studentPhone);
	$('textarea[name=studentPostalAddress]').val(detailsForForm.studentPostalAddress);
	$('textarea[name=studentOtherContactDetails]').val(detailsForForm.studentOtherContactDetails);

// TO DO -- NEEDED given that we might have already set it direct from teh detailsForForm above?
	var studentID = detailsForForm.studentFirstName+detailsForForm.studentLastName;
	$('input[name=studentID]').val(studentID);	

	$('input[name=studentWhoSchedules]').filter('[value='+detailsForForm.studentWhoSchedules+']').attr('checked',true);
	SetMultipleCheckboxValues("studentWhenToContactScheduler", detailsForForm.studentWhenToContactScheduler);
	SetMultipleCheckboxValues("studentHowToContactScheduler", detailsForForm.studentHowToContactScheduler);
	$('input[name=studentScheduleFlexibility]').filter('[value='+detailsForForm.studentScheduleFlexibility+']').attr('checked',true);
	
	SetMultipleCheckboxValues("studentPreferredLessonLocations", detailsForForm.studentPreferredLessonLocations);
	SetTestDates(detailsForForm.studentThreeTestDates);	
	SetTargetScores(detailsForForm.studentTargetScores);
	
	$('textarea[name=studentCollegeInterests]').val(detailsForForm.studentCollegeInterests);
	$('input[name=studentWantsCollegeAdvising]').filter('[value='+detailsForForm.studentWantsCollegeAdvising+']').attr('checked',true);
	$('input[name=studentSchool]').filter('[value='+detailsForForm.studentSchool+']').attr('checked',true);
	$('input[name=studentSchoolOtherField]').val(detailsForForm.studentSchoolOtherField);
	$('select[name=studentGraduationDate]').val(detailsForForm.studentGraduationDate);
	$('input[name=studentStudySkillLevel]').filter('[value='+detailsForForm.studentStudySkillLevel+']').attr('checked',true);
	$('textarea[name=studentScienceCourse]').val(detailsForForm.studentScienceCourse);
	$('textarea[name=studentHistoryCourse]').val(detailsForForm.studentHistoryCourse);
	$('textarea[name=studentMathCourse]').val(detailsForForm.studentMathCourse);
	SetMultipleCheckboxValues("studentSubjectTestsTaken", detailsForForm.studentSubjectTestsTaken);
	SetMultipleCheckboxValues("studentSubjectTestsPlanned", detailsForForm.studentSubjectTestsPlanned);
	$('input[name=studentLiklihoodOfSAT]').filter('[value='+detailsForForm.studentLiklihoodOfSAT+']').attr('checked',true);
	$('input[name=studentLiklihoodOfACT]').filter('[value='+detailsForForm.studentLiklihoodOfACT+']').attr('checked',true);

	SetMultipleCheckboxValues("studentAccommodationsACT", detailsForForm.studentAccommodationsACT);
	SetMultipleCheckboxValues("studentAccommodationsSAT", detailsForForm.studentAccommodationsSAT);
	$('textarea[name=studentSpecialRequirements]').val(detailsForForm.studentSpecialRequirements);
	$('input[name=studentApproxGPA]').val(detailsForForm.studentApproxGPA);
	var studentGender = detailsForForm.studentGender;
	if (studentGender=="1") { studentGender="male"; } else if (studentGender=="0") {studentGender="female"; }
	$('input[name=studentGender]').filter('[value='+studentGender+']').attr('checked',true);
	$('input[name=studentDOB]').val(detailsForForm.studentDOB);
	SetMultipleCheckboxValues("studentSports", detailsForForm.studentSports);
	$('textarea[name=studentHobbies]').val(detailsForForm.studentHobbies);
	
	var studentType = detailsForForm.studentType;
	$('input[name=studentType]').filter('[value='+studentType+']').attr('checked',true);
	
	// Find this student's parents
	var data = {
			'action':'getParentTableRowsForStudent',
			'studentID':studentID
		};
	$.ajax({
		url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php',
		type:'POST',
		data:data,
		success: function(tableRows) {
			$('#studentParentTable').html(tableRows);
		}
	});
	
	// show current availability selections
	var availabilityChoices = detailsForForm.availabilityChoices;
	if (typeof(availabilityChoices)!="undefined") {
		var availabilityBits = availabilityChoices.split("::");
		var i3=0;
		for (; i3<availabilityBits.length; i3++) {
			var availabilitySelection = availabilityBits[i3];
			availabilitySelection = availabilitySelection.replace('{"studentSchedulingID":"','').replace('","studentID":"'+studentID+'"','').replace('"scheduleElement":"','').replace('"}','');
			var miniBits = availabilitySelection.split(",");
			var elementToSet = miniBits[1];
			$('input[value='+elementToSet+']').attr('checked', true);
		}
	}
	// show current course selections
	var courseChoices = detailsForForm.courseChoices;
	if (typeof(courseChoices)!="undefined") {
		var courseBits = courseChoices.split("::");
		var i4=0;
		for (; i4<courseBits.length; i4++) {
			var courseSelection = courseBits[i4];
			courseSelection = courseSelection.replace('{"courseID":"','').replace('","studentID":"'+studentID+'"}','');
			courseSelection = courseSelection.split("studentID")[0].replace('","','');
			$('input[name=studentWhichCourses]').filter('[value='+courseSelection+']').attr('checked', true);
		}		
	}
	
	return true; 
}


function PopulateAdminParentsForm(dropdownType, dropdownItemName, detailsForForm) {
	if (typeof(detailsForForm.parentFirstName)=="undefined") {  // "add new" selected
		ClearForm();   // always clear the form to get rid of values from prev case or to set up for "add new"
		return false;  // do no more, return now
	}

	$('input[name=parentFirstName]').val(detailsForForm.parentFirstName);
	$('input[name=parentLastName]').val(detailsForForm.parentLastName);
	$('input[name=parentEmail]').val(detailsForForm.parentEmail);
	$('input[name=parentPhone]').val(detailsForForm.parentPhone);
	$('textarea[name=parentPostalAddress]').val(detailsForForm.parentPostalAddress);
	$('textarea[name=parentOtherContactDetails]').val(detailsForForm.parentOtherContactDetails);
	var parentType = detailsForForm.parentType;
	$('input[name=parentType]').filter('[value='+parentType+']').attr('checked',true);  //snapback
	var parentTypeProspect = detailsForForm.parentTypeProspect;
	$('input[name=parentTypeProspect]').filter('[value='+parentTypeProspect+']').attr('checked',true);
	$('textarea[name=parentNotes]').val(detailsForForm.parentNotes);
	
	var howHeardLPT = (detailsForForm.howHeardLPT).split("::");
	$('input[name=howHeardLPT]').attr('checked',false);
	var hh=0;
	for (; hh<howHeardLPT.length; hh+=1) {
		var hhl = howHeardLPT[hh];
		$('input[name=howHeardLPT]').filter('[value='+hhl+']').attr('checked',true);
	}
	$('input[name=howHeardLPT4Name]').val(detailsForForm.howHeardLPT4Name);
	$('input[name=howHeardLPT5Info]').val(detailsForForm.howHeardLPT5Info);
	$('input[name=howHeardLPTOtherDetail]').val(detailsForForm.howHeardLPTOtherDetail);
	
	// Find this parent's child/children
	var studentsForThisParent = (detailsForForm.studentsForThisParent).split("::");
	$('select.filter-Student-x_Students-selection').val('ADD_NEW');
	var dropdownCtr = 1;
	var sftp=0;
	for (; sftp<studentsForThisParent.length; sftp+=1) {
		var studentID = studentsForThisParent[sftp];
		if (studentID=="") { continue; }
		// set the option selected in the sftp'th dropdown box
		$('select[name=filter-Student-x_Students-selection-'+dropdownCtr+']').val(studentID);
		dropdownCtr+=1;
	}
	return true;
}


function PopulateForm(dropdownType, dropdownItemName, detailsForForm) {
	if (dropdownType=="Course") {
		PopulateAdminCoursesForm(dropdownType, dropdownItemName, detailsForForm);
	}
	
	else if (dropdownType=="Tutor") {
		PopulateAdminTutorsForm(dropdownType, dropdownItemName, detailsForForm);
	}
	
	else if (dropdownType=="Student") {
		PopulateAdminStudentsForm(dropdownType, dropdownItemName, detailsForForm);
		
	} else if (dropdownType=="Parent") {
		PopulateAdminParentsForm(dropdownType, dropdownItemName, detailsForForm);
	}
}


// NB: ADMIN dropdowns only
function ActivateAdminDropdowns() {
	// Populate the appropriate form every time there's a change of drop down box option selected
	$('table.dropdownListing select').change(function() {
		var titleDetails = $(this).attr('title');
		var bits = titleDetails.split(" ");
		var dropdownType  = bits[0];
		var dropdownTable = bits[1];
		var dropdownItemName = "";
		$(this).find('option:selected').each(function() {
			dropdownItemName+=$(this).val();
		});
		if (dropdownItemName=="ADD_NEW") {
			ClearForm(); 
			return; 
		} // don't try to get data for ADD_NEW
//alert(dropdownType+" "+dropdownTable+" "+dropdownItemName);	

		// get data
		var data = {'dropdownNameRequest':dropdownType, 'dropdownTableRequest':dropdownTable, 'dropdownItemName':dropdownItemName};		   
		ShowWorking();
		$.ajax({
			url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php',
			type:'POST',
			data:data,
			dataType:"json",
			success:function(detailsForForm) {
				//--DEBUG--//
				var s = "";
				for (var k in detailsForForm) {
					s += "\n"+k+" = "+detailsForForm[k];
				}
				//alert("Dropdown details = \n"+s);
				//--END DEDUG--//
				PopulateForm(dropdownType, dropdownItemName, detailsForForm);
				HideWorking();
			}
		});
	});
}





// -- TUTOR TABS -- //



// This activates the opening and closing of the rows on Tutors>Students
function ActivateTutorsStudentsTable() {
	$('.visibleRow').toggle(
		function() {
			var titleOfRowsToShow = $(this).attr('title');
			$('tr[title='+titleOfRowsToShow+']').fadeIn(300);
		},
		function() {
			var titleOfRowsToHide = $(this).attr('title');
			$('tr.hiddenRow[title='+titleOfRowsToHide+']').fadeOut(200);
		}
	);
}



function SubmitTutorLessonsForm() {
	// Gather data for the INSERT/UPDATE into the x_Lessons table for this lesson
	var eventID = $('input[name=eventIDValue]').val();
	var datetime = $('input[name=datetimeValue]').val();
	var topics   = "";
	var ctr = 0; 
	var $topicRows = $('#coverageOfTopicsForThisCourse tr').each(function(){
		var rowDatetime = $(this).find('td div').attr('title');
		if (rowDatetime!="" && rowDatetime==datetime) { 
			var $tds = $(this).find('td');
			var topic = $tds.eq(0).html().replace(/&nbsp;/g,"").trim();
			var sep = "";
			if (ctr!=0) { sep="::"; }
			topics += sep+topic;
			ctr+=1;
		}
	});
	var studentID = $('input[name=tlr_studentID]').val();
	var lessonID  = studentID+"::"+datetime;
	var lessonSubjectName = $('#lessonFormWrapper table').eq(0).find('tbody tr').eq(2).find('td').eq(1).html().trim();

//alert(lessonSubjectName);
//alert(eventID+" "+lessonID);
//alert(topics);

	var lessonTableData = [
		['lessonID',                  lessonID],
		['eventID',                   eventID],
		['lessonSubjectName',         lessonSubjectName],
		['lessonTopicsTaught',        topics],
		['hourlyRate',                $('input[name=lessonHourlyRate]').val()],
		['homeworkDetails',           $('textarea[name=homeworkDetails]').val() ],
		['homeworkStatus',            ConvertRadiosToString( $('input[name=homeworkStatus]:checked') )],
		['homeworkComments',          $('textarea[name=homeworkComments]').val() ],
		['suggestionsForImprovement', $('textarea[name=lessonSuggestions]').val()],
		['parentToBeContacted',       ConvertRadiosToString( $('input[name=parentRecentlyContacted]:checked') )],  // misnamed but don't refactor yet
		['parentRecentlyContacted',   ConvertRadiosToString( $('input[name=recentParentalContact]:checked') )],
		['studentMotivated',          $('select[name=todaysStudentMotivation]').find('option:selected').val()],
		['forOfficeOnlyComments',     $('textarea[name=officeOnlyComments]').val()],
		['needLPToContact',           ConvertRadiosToString( $('input[name=needLPContact]:checked') )],
		['lessonFilledIn',            1]
	];
	// no INSERT ever required because Lessons are created by calendar items
	var xLessonsUpdateQ = GetPHPUpdateQuery(lessonTableData, "x_Lessons", "WHERE eventID = '"+eventID+"'");
//alert(xLessonsUpdateQ);

	// Get the details for Test Results - unusually we'll ask PHP to totally handle the INSERT/UPDATE 
	var testResultDateBits = $('input[name=testDatesDate]').val().split("/");
	var testResultDate = testResultDateBits[2]+"-"+testResultDateBits[0]+"-"+testResultDateBits[1]+" 00:00:00";
	var testResultsGivenString = ""; ctr=0;
	$('#newTestResultTable tbody tr.actualTestResult').each(function() {
		var $tds = $(this).find('td');
		var testName   = $tds.eq(0).find('label').html();
		var testID     = $tds.eq(1).find('input').attr('title');
		var testResult = $tds.eq(1).find('input').val();
		var sep="";
		if (testResult!="") {
			if (ctr>0) { sep="::"; }
			testResultsGivenString += sep+testID+"="+testResult;
			ctr+=1;
		}
	});
	
	// Sanitize
	$('input[type=text]').each(function() {
		var temp = $(this).val();
		$(this).val( temp.replace("'","&#146;") );
	});

	// Validation string
	var textValidationDetails = "numeric||input||lessonHourlyRate";
	// Data object
	data = {
		'action':'submitLessonReportForm', 'eventID':eventID, 'studentID':studentID,
		'xLessonsUpdateQ':xLessonsUpdateQ
	};
	
	// Add the practice test results, if any are given
	if ( $('#temp1234').is(":checked") ) {
//alert("TRs is checked");
		// Revised validation string
		textValidationDetails = "numeric||input||lessonHourlyRate::::any||input||testDatesDate";
		// Revised data object
		data = {
			'action':'submitLessonReportForm', 'eventID':eventID, 
			'studentID':studentID, 'testResultDate':testResultDate,
			'xLessonsUpdateQ':xLessonsUpdateQ, 'testResultsGivenString':testResultsGivenString
		};
/*
alert(testResultsGivenString);
alert(testResultDate+"__"+datetime); // may not have been set because not validated yet
*/
	}
	
	// Do validate
	var validationBool = true;
	validationBool     = validateTextInputsAndTextareas(textValidationDetails, validationBool);
	if (validationBool==false) { return validationBool; }	
		
	// Since all is now validated, make the call with the appropriate data
	ShowWorking();
	$.ajax({
		url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Tutor.php',
		type:'POST',
		data:data,
		success:function(r) {
			alert(r);
			HideWorking();
			//location.href = "http://www.logicpreptutoring.com/admin/web-admin3.php"; // -- TO DO -- href wrongly goes back to Admin tabs
		}
	});
	return false; // don't submit the form the HTML way
}

// TO DO -- still used?
/*
function FillInTutorLessonsForm(studentID, tutorID, json, courseName, topicsBits, datetime) {
	var lessonID                  = json.lessonID;
	var lessonSubjectTaught       = json.lessonSubjectTaught;
	var jsonCourseID              = json.courseID;
	var lessonTopicsTaught        = json.lessonTopicsTaught;
	var eventDuration            = json.eventDuration;
	var eventDuration         = json.eventDuration;
	var lessonHourlyRate          = json.hourlyRate;
	var locationID                = json.locationID;
	var suggestionsForImprovement = json.suggestionsForImprovement;
	var lessonFilledIn            = json.lessonFilledIn;
	$('input[name=lessonHowLongLesson]').val(eventDuration);
	$('input[name=lessonHourlyRate]').val(lessonHourlyRate);

	// If course is chosen then get the curriculum for this course and highlight what this and other lessons have taught
	var data = {'action':'getCurriculumForGivenCourseName', 'courseName':courseName}; // -- TO DO -- this PHP method doesn't exist yet!
	ShowWorking();
	$.ajax({
		url:"http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Tutor.php",
		type:"POST",
		data:data,
		success:function(html){
//			alert("repsonse1"+html);
			var curricBits = html.split("\n");
			// convert to a checkbox/date list
			var topicListHTML = "";
			for (var i=0; i<curricBits.length; i+=1) {
				var topic = curricBits[i];
				var numIndents = topic.match(/\s/g).length;
				var cleanedUpTopic = topic.replace("-", "");
				topicListHTML+="<tr>";
				topicListHTML+="<td> <input type='text' name='' value='' /> </td>";
				topicListHTML+="<td></td>";
				topicListHTML+="<td></td>";
				topicListHTML+="</tr>";
			}
			
			HideWorking();
			
			//	var topicsReviewedHTML = GetTopicsReviewedHTML(lessonTopicsTaught);
			//	$('div.topicsReviewedDiv').html(lessonTopicsTaught);
		}
	});
	
//alert(studentID+"--"+courseName);
	
	// Get the entire history of lessons for this student and this course
	data = {'action':'getAllRowsForGivenStudentIDAndCourseID', 'studentID':studentID, 'courseName':courseName};
	$.ajax({
		url:"http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Tutor.php",
		type:"POST",
		data:data,
		dateType:"json",
		success:function(json2) {
//alert("here");
			var obj = jQuery.parseJSON(json2);

			// get the last N homeworks - make this homework editable, and make this and last homeworks' comments editable
			// get the last N suggestions
			$('textarea[name=lessonSuggestions]').val(suggestionsForImprovement);
			// get the last N x_LessonsPrivateInfo for this lesson   

			var homeworkTableRows    = "";
			var suggestionsTableRows = "";
			var officeComments       = "";
			
			for (var rowCounter in obj) {
				var row = obj[rowCounter];

				// Grab details from row
				var rowDatetime             = row.eventDuration;
				var homeworkDetails         = row.homeworkDetails;
				var homeworkStatus          = row.homeworkStatus;
				
				var noChecked = ""; var someChecked = ""; var yesChecked = "";
				if      (homeworkStatus=="1") { yesChecked  =" checked='checked'"; }
				else if (homeworkStatus=="2") { someChecked =" checked='checked'"; }
				else if (homeworkStatus=="3") { noChecked   =" checked='checked'"; }

				var dateTime         = rowDatetime.replace(" ",", ");
				var dateTimeNoSpaces = rowDatetime.replace(" ","");
				var homeworkCheckbox = "No<input type='checkbox' name='homework-done-no-"+dateTimeNoSpaces+"' "+noChecked+" />&nbsp;";
				    homeworkCheckbox+= "Some<input type='checkbox' name='homework-done-some-"+dateTimeNoSpaces+"' "+someChecked+" />&nbsp;";
				    homeworkCheckbox+= "Yes<input type='checkbox' name='homework-done-yes-"+dateTimeNoSpaces+"' "+yesChecked+" />";
				var homeworkComments = row.homeworkComments;
				homeworkTableRows   += "\n<tr> <td>"+rowDatetime+"</td> <td>"+homeworkDetails+"</td> ";
				homeworkTableRows   += "<td>"+homeworkCheckbox+"</td> <td><input type='text' name='homework-comment-"+rowDatetime.replace(" ","")+"'  value='"+homeworkComments+"' /></td> </tr>";
				
				suggestionsTableRows       += "<tr> <td>"+dateTime+"</td><td>"+row.suggestionsForImprovement+"</td> </tr>";
				
				var parentToBeContacted     = row.parentToBeContacted;
				var parentContactedRecently = row.parentContactedRecently;
				var studentMotivated        = row.studentMotivated;
				var forOfficeOnlyComments   = row.forOfficeOnlyComments;

				noChecked = ""; yesChecked = "";
				if      (parentContactedRecently=="1") { yesChecked  =" checked='checked'"; }
				else if (parentContactedRecently=="0") { noChecked =" checked='checked'"; }
				var parentContactedRecentlyCheckbox = "No<input type='checkbox' name='parent-contacted-no-"+dateTimeNoSpaces+"' "+noChecked+" />&nbsp;";
				    parentContactedRecentlyCheckbox+= "Yes<input type='checkbox' name='parent-contacted-yes-"+dateTimeNoSpaces+"' "+yesChecked+" />";
								
				noChecked = ""; yesChecked = "";
				if      (parentToBeContacted=="1") { yesChecked  =" checked='checked'"; }
				else if (parentToBeContacted=="0") { noChecked =" checked='checked'"; }
				var parentToBeContactedCheckbox = "No<input type='checkbox' name='parent-tobe-contacted-no-"+dateTimeNoSpaces+"' "+noChecked+" />&nbsp;";
				    parentToBeContactedCheckbox+= "Yes<input type='checkbox' name='parent-tobe-contacted-yes"+dateTimeNoSpaces+"' "+yesChecked+" />";

				var options = "";
				for (var motivationLevel=1; motivationLevel<=5; motivationLevel+=1) {
					var s="";
					if (studentMotivated == motivationLevel) { s = "selected='selected'"; }
				    options+= "<option value='"+motivationLevel+"' "+s+">"+motivationLevel+"</option>";				
				}
				var studentMotivation = "<select name='studentMotivationDropDown'>"+options+"</select>";

				officeComments += "<tr> <td>"+dateTime+"</td><td>"+parentContactedRecentlyCheckbox+"</td><td>"+parentToBeContactedCheckbox+"</td>";
				officeComments +=      "<td>"+studentMotivation+"</td>";
				officeComments +=      "<td><input type='text' name='officeComments"+dateTimeNoSpaces+"' value='"+forOfficeOnlyComments+"' /></td>";
				officeComments += "</tr>";
			}
			$('#tutorLessonsHomeworkTable tbody').html(homeworkTableRows);
			$('#suggestionsForImprovement tbody').html(suggestionsTableRows);
			$('#tutorOfficeComments tbody').html(officeComments);
			
		}
	});
			
	
	// get the test results for this student and show the most recent set
	
}
*/



// This activates:
// (1) the student name dropdown that fills in the times for a given student's lessons, and the students name, on Tutors>Lessons
// (2) the lesson time dropdown that gets all the lesson details from the DB and fills them in, on Tutors>Lessons
// (3) the course dropdown that fills in the curriculum details, on Tutors>Lessons
//

function ActivateTaughtAndUndoButtons() {
	$('.retaughtButton').unbind('click');
	$('.retaughtButton').click(function() {
		var d = new Date();
		var m = d.getMonth()+1;
		var month = m<10 ? "0"+m : m;
		var dt = d.getDate();
		var numDate = dt<10 ? "0"+dt : dt;
		var hrs  = d.getHours();
		var hours = hrs<10 ? "0"+hrs : hrs;
		var mins = d.getMinutes();
		var minutes = mins<10 ? "0"+mins : mins;
		var secs = d.getSeconds();
		var seconds = secs<10 ? "0"+secs : secs;
		var todaysDatetime = d.getFullYear()+"-"+m+"-"+numDate+" "+hours+":"+minutes+":"+seconds;
		var prevExists = $(this).prev().html()=="undo" ? true : false;
		var datetime = $('#coverageOfTopicsForThisCourse').attr("title");
		$(this).after("<div><span class='datetime'>"+datetime+"</span> <span class='taughtUndoButton'>undo</span> <span class='retaughtButton'>re-taught</span></div>").parent().attr('title',datetime).end().remove();
		$('.retaughtButton').corner("2px");
		// -- TO DO -- remove the existing click bindings before adding the next ones next -- ///
		$('.retaughtButton').unbind('click');
		$('.taughtUndoButton').unbind('click');
		ActivateTaughtAndUndoButtons();
	 }).corner("2px");
	$('.taughtUndoButton').click(function() {
		var nextExists = $(this).next().html()!="re-taught" ? true: false;
		$(this).parent().after("<div><span class='retaughtButton'>re-taught</span></div>");
		$(this).parent().remove();
		// Remove the existing click bindings before adding the next ones next to avoid overload
		$('.retaughtButton').unbind('click');
		$('.taughtUndoButton').unbind('click');
		ActivateTaughtAndUndoButtons();
	}).corner("2px");
		
	// activate datepicker for test resutls
	$('#testDatesDate').datepicker({ showMonthAfterYear: true, changeMonth: true, changeYear: true, yearRange: '2010:2020' });
}


function ActivateTutorLessonFormDropdowns() {

	// Make choose student lesson button show popup
	// -- popup lesson chooser --
	$('#chooseLessonToEditButton').unbind('click');
	$('#chooseLessonToEditButton').click(function(){
		$('#studentLessonChooser').dialog({
			autoOpen: true,
			title: 'Choose a lesson (Click a student, then choose from the lessons that appear)',
			modal: true,
			minWidth: 750
		});
		return false;
	});
	// Activate click on hidden row in My Students tab (which is also used to select the lesson in My Lessons)
	$('.hiddenRow').unbind('click');
	$('.hiddenRow').click(function(){
		var $tds = $(this).find('td');
		var eventID    = $tds.eq(0).attr("title");
		var firstName  = $tds.eq(1).html().replace(/&nbsp;/g,"").trim();
		var lastName   = $tds.eq(2).html().replace(/&nbsp;/g,"").trim();
		var studentID  = firstName+lastName;
		var tutorID    = $('input[name=pretendingToBe]').val();
		var date       = $tds.eq(3).html().replace(/&nbsp;/g,"").trim();
		var time       = $tds.eq(4).html().replace(/&nbsp;/g,"").trim();
		var dateBits   = date.split("/");
		var dateString = LookupMonth(dateBits[0])+" "+dateBits[1]+", "+dateBits[2]+". ";
		var timeBits   = time.split(":");
		var ampm       = "am";
		var hrs        = parseInt(timeBits[0],10);
		var mins       = timeBits[1];
		if (hrs>=12) { 
			ampm = "pm";
			if (hrs>12) { hrs-=12; }
		}
		var timeString = hrs+":"+mins+ampm;		
		var courseName = $tds.eq(5).html().replace(/&nbsp;/g,"").trim();
		var lessonID   = $tds.eq(5).attr("title");  				// "lessonID" or "courseID" which do I mean?
		var topicsBits = $tds.eq(6).html().replace(/&nbsp;/g,"").trim().split("<br>");  // NOTE this split may be browser dependant, try <br/> too
		$('input[name=tlr_studentID]').val(firstName+lastName);
		$('.lessonStudentName').html(firstName+" "+lastName);
		$('#tutorLessonFormTime').html(dateString+" &nbsp;"+timeString);
		$('#lessonsTabCourseName').html(courseName);
		
//alert(studentID+" "+tutorID+" "+datetime);
		var data = {'action':'fillInLessonDetailsForAGivenLesson', 'eventID':eventID};
		ShowWorking();
		$.ajax({
			url:"http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Tutor.php",
			type:"POST",
			data:data,
			success:function(html){
//alert(html);
//				html = html.replace("_","'");
				$('#lessonFormWrapper').html(html);
				$('#studentLessonChooser').dialog('close');
				$('.show-hide').unbind('click');
				$('.show-hide').click(function(){ $(this).next().toggle(); }).corner("2px");
				$('table.sortable tr:odd').addClass('tigerStripeLight');
				$('table.sortable tr:even').addClass('tigerStripeDark');
				$('table.sortable').tablesorter({
					widgets: ['zebra']
				});
				$('input[name=submitLessonReportForm]').unbind('click');
				$('input[name=submitLessonReportForm]').button().click(function(){
					SubmitTutorLessonsForm();
				});
				ActivateTaughtAndUndoButtons();
				HideWorking();

				// Load and show the tutors' notes for this student
				var studentNotesHTML = "<img id='studentNotes2' class='adminStudentNotes tutorLessonNotes' src='assets/images/notes-icon.gif' alt='' />";
				$('#tab-7').append(studentNotesHTML); // add the link to the student notepad and show it...
				ActivateStudentNotesButton({'studentID':studentID});
				
				$('#tab-container').tabs('select', 2); // ensure we're showing the lesson details

				// User wants to enter new test dates?
				$('#temp1234').unbind('click');
				$('#temp1234').click(function() {
					$('#newTestResultTable').toggle();
					$('#newTargetScoresDateRow').toggle();
				});
				$('#newTestResultTable').hide();
				$('#newTargetScoresDateRow').hide();
				
				// Hide hourly rate unless you want to show it
				$('#lessonHourlyRateCheckbox').change(function(){
					if ($(this).attr("checked")) {
						$('#lessonHourlyRate').show(); 
						return;
					}
					$('#lessonHourlyRate').hide(); 
				});

			}
		});
	});

	// Choose SUBJECT dropdown (sets curriculum details)
	$('#lessonSubjectDropdown').change(function() {
		var selection = $(this).find("option:selected").eq(0).val();
	});
	
		
}


			
function ActivateSubmitButtons() { 

	// start date pickers (don't activate the student DOB here because we need to do the popup student form separately)
	$('#tutorDOB').datepicker({ showMonthAfterYear: true, changeMonth: true, changeYear: true, yearRange: '1950:2010' });
	var validationDetails_Text = "";
	var validationDetails_Checkboxes = "";
	
	// activate submit buttons
	$('input.adminSubmitButton').unbind('click');
	$('input.adminSubmitButton').click(function() {
		var typeOfEntity = $(this).attr("title");
		var data = {}; 
		var validationBool = true;
		
		//-- COURSE --// 
		
		if (typeOfEntity=="course") {
			// Get information from form and set up the JSON object to send to PHP
			var course_name     = $('input[name=course_name]').val();
			var course_grouping = $('input[name=course_grouping]').val();
			var courseIsActive  = $('input[name=courseIsActive]').attr('checked');
			var courseInt = courseIsActive==true ? 1 : 0;
//alert(courseIsActive+" "+courseInt);
			var courseTableData = [
				['courseName',       $('input[name=course_name]').val()],
				['courseCurriculum', $('textarea[name=course_content]').val()],
				['courseGrouping',   $('input[name=course_grouping]').val() ],
				['courseOther',      $('textarea[name=course_other]').val()],
				['courseIsActive',   courseInt ]
			];
			var xCoursesInsertQ = GetPHPInsertQuery(courseTableData, "x_Courses");
			var xCoursesUpdateQ = GetPHPUpdateQuery(courseTableData, "x_Courses", "WHERE courseName = '"+course_name+"' AND courseGrouping ='"+course_grouping+"'");

			data = {
				'typeOfEntity':typeOfEntity, 'submitConfirmed':"true",
				'course_name':course_name, 'course_grouping':course_grouping,
				'xCoursesInsertQ':xCoursesInsertQ, 'xCoursesUpdateQ':xCoursesUpdateQ
			};
			
			// Sanitize 
			$('input[type=text]').each(function() {
				var temp = $(this).val();
				$(this).val( temp.replace("'","&#146;") );
			});

			// Validation
			var textValidationDetails = "any||input||course_name::::any||input||course_grouping";
			validationBool = validateTextInputsAndTextareas(textValidationDetails, validationBool);
			if (validationBool==false) { return validationBool; }


		//-- TUTOR --//			
			
		} else if (typeOfEntity=="tutor") {
			// Get information from form and set up the JSON object to send to PHP
			var tutorDOB = $('input[name=tutorDOB]').val(); var isoDatetime = "";
			if (tutorDOB) {			
				var dobBits     = tutorDOB.split("/");
				var tutorMonth  = dobBits[0];
				var tutorDay    = dobBits[1];
				var tutorYear   = dobBits[2];
				isoDatetime = tutorYear+"-"+tutorMonth+"-"+tutorDay;
			} else {
				isoDatetime = "";
			}

			var tutorFirstName             = $('input[name=tutorFirstName]').val();
			var tutorLastName              = $('input[name=tutorLastName]').val();
			var tutorID                    = tutorFirstName+tutorLastName; // needed or done in PHP?	
			var tutorPassword              = $('input[name=tutorPassword]').val();
			var tutorCoursesAsString       = ConvertCheckboxesToString( $('input[name=studentWhichCourses]:checked') );  // REALLY is 'studentWhichCourses'
			var tutorAvailablityAsString   = ConvertCheckboxesToString( $('input[name=bestTimes]:checked') );
			var tutorTableData = [
				["tutorID",                   tutorID],
				["tutorFirstName",            tutorFirstName],
				["tutorLastName",             tutorLastName],
				["tutorPassword",             $('input[name=tutorPassword]').val()],
				["tutorEmail",                $('input[name=tutorEmail]').val()],
				["tutorPhone",                $('input[name=tutorPhone]').val()],
				["tutorPostalAddress",        $('textarea[name=tutorPostalAddress]').val()],
				["tutorOtherContactDetails",  $('textarea[name=tutorOtherContactDetails]').val()],
				["tutorDOB",                  isoDatetime],
				["tutorPreDegreeInfo",        $('textarea[name=tutorPreDegreeInfo]').val()],
				["tutorPostDegreeInfo",       $('textarea[name=tutorPostDegreeInfo]').val()],
				["tutorSchedulingNeeds",      $('textarea[name=tutorSchedulingNeeds]').val()],
				["tutorWorkExperience",       $('textarea[name=tutorWorkExperience]').val()],
				["tutorAdditionalBackground", $('textarea[name=tutorAdditionalBackground]').val()],
				["tutorWebsiteWriteup",       $('textarea[name=tutorWebsiteWriteup]').val()],
				["tutorVideoURI",             $('input[name=tutorVideoURI]').val()],
				["calColor",                  "#333"]
			];
//alert(tutorTableData);		

			var xTutorsInsertQ = GetPHPInsertQuery(tutorTableData, "x_Tutors");
			var xTutorsUpdateQ = GetPHPUpdateQuery(tutorTableData, "x_Tutors", "WHERE tutorID = '"+tutorID+"'");

//alert(xTutorsInsertQ);
//alert(xTutorsUpdateQ);

			data = {'typeOfEntity':typeOfEntity,  'submitConfirmed':"true",  'tutorID':tutorID,
						'tutorPassword':tutorPassword,  'tutorFirstName':tutorFirstName,  'tutorLastName':tutorLastName,
						'tutorCoursesAsString':tutorCoursesAsString, 'tutorAvailablityAsString':tutorAvailablityAsString,
						'xTutorsInsertQ':xTutorsInsertQ, 'xTutorsUpdateQ':xTutorsUpdateQ
			};

			// Sanitize
			$('input[type=text]').each(function() {
				var temp = $(this).val();
				$(this).val( temp.replace("'","&#146;") );
			});

			// Validation
			validationDetails_Text       = "all||input||tutorFirstName::::all||input||tutorLastName::::email||input||tutorEmail::::phone||input||tutorPhone::::all||textarea||tutorPostalAddress::::all||textarea||tutorPreDegreeInfo::::date||input||tutorDOB";
			validationDetails_Checkboxes = "1||checkbox||studentWhichCourses::::1||checkbox||bestTimes"; 
			validationBool = validatePasswords('input[name=tutorPassword]', 'input[name=tutorPasswordConfirmed]', validationBool);
			validationBool = validateTextInputsAndTextareas(validationDetails_Text, validationBool);
			validationBool = validateCheckboxesAndRadioButtons(validationDetails_Checkboxes, validationBool);
			if (validationBool==false) { return validationBool; }


		//-- STUDENT --//

		} else if (typeOfEntity=="student") {
			var studentFirstName         = $('input[name=studentFirstName]').val();
			var studentLastName          = $('input[name=studentLastName]').val();
			var studentID                = studentFirstName+studentLastName; // needed or done in PHP?	
			var studentPassword          = $('input[name=studentPassword]').val();
			var studentPasswordConfirmed = $('input[name=studentPasswordConfirmed]').val();
			var studentWantsCollegeAdvising = ConvertRadiosToString( $('input[name=studentWantsCollegeAdvising]:checked') );
			dobBits                      = $('input[name=studentDOB]').val().split("\/");
			var studentYear=0; var studentMonth =0; var studentDay=0;
			if (dobBits.length!=3) { 
				dobBits = dobBits[0].split('-'); 
				studentYear  = dobBits[0];
				studentMonth = dobBits[1];
				studentDay   = dobBits[2];
			} else {
				studentMonth = dobBits[0];
				studentDay   = dobBits[1];
				studentYear  = dobBits[2];			
			}
			var studentDOB               = studentYear+"-"+studentMonth+"-"+studentDay;
			var studentTableData = [
				["studentID",                       studentID],
				["studentPassword",                 studentPassword],
				["studentFirstName",                studentFirstName],
				["studentLastName",                 studentLastName],
				["studentEmail",                    $('input[name=studentEmail]').val()],
				["studentPhone",                    $('input[name=studentPhone]').val()],
				["studentPostalAddress",            $('textarea[name=studentPostalAddress]').val()],
				["studentOtherContactDetails",      $('textarea[name=studentOtherContactDetails]').val()],
				["studentWhoSchedules",             ConvertRadiosToString( $('input[name=studentWhoSchedules]:checked') )],
				["studentWhenToContactScheduler",   ConvertCheckboxesToString( $('input[name=studentWhenToContactScheduler]:checked') )],
				["studentHowToContactScheduler",    ConvertCheckboxesToString( $('input[name=studentHowToContactScheduler]:checked') )],
				["studentScheduleFlexibility",      ConvertRadiosToString( $('input[name=studentScheduleFlexibility]:checked') )],
				["studentPreferredLessonLocations", ConvertCheckboxesToString( $('input[name=studentPreferredLessonLocations]:checked') )],
				["studentThreeTestDates",           ConvertDropdownsToString(['studentTestDate1', 'studentTestDate2', 'studentTestDate3'])],
				["studentTargetScores",             ConvertInputsToString( $('input.studentTargetScores') )],
				["studentCollegeInterests",         $('textarea[name=studentCollegeInterests]').val()],
				["studentWantsCollegeAdvising",     studentWantsCollegeAdvising],
				["studentSchool",                   ConvertRadiosToString( $('input[name=studentSchool]:checked') )],
				["studentSchoolOtherField",         $('input[name=studentSchoolOtherField]').val()],
				["studentGraduationDate",           $('select[name=studentGraduationDate]').val()],
				["studentStudySkillLevel",          ConvertRadiosToString( $('input[name=studentStudySkillLevel]:checked') )],
				["studentScienceCourse",            $('textarea[name=studentScienceCourse]').val()],
				["studentHistoryCourse",            $('textarea[name=studentHistoryCourse]').val()],
				["studentMathCourse",               $('textarea[name=studentMathCourse]').val()],
				["studentSubjectTestsTaken",        ConvertCheckboxesToString( $('input[name=studentSubjectTestsTaken]:checked') )],
				["studentSubjectTestsPlanned",      ConvertCheckboxesToString( $('input[name=studentSubjectTestsPlanned]:checked') )],
				["studentLiklihoodOfSAT",           ConvertRadiosToString( $('input[name=studentLiklihoodOfSAT]:checked') )],
				["studentLiklihoodOfACT",           ConvertRadiosToString( $('input[name=studentLiklihoodOfACT]:checked') )],
				["studentAccommodationsACT",        ConvertRadiosToString( $('input[name=studentAccommodationsACT]:checked') )],
				["studentAccommodationsSAT",        ConvertRadiosToString( $('input[name=studentAccommodationsSAT]:checked') )],
				["studentSpecialRequirements",      $('textarea[name=studentSpecialRequirements]').val()],
				["studentApproxGPA",                $('input[name=studentApproxGPA]').val()],
				["studentGender",                   ConvertRadiosToString( $('input[name=studentGender]:checked') )],
				["studentDOB",                      studentDOB],
				["studentSports",                   ConvertCheckboxesToString( $('input[name=studentSports]:checked') )],
				["studentHobbies",                  $('textarea[name=studentHobbies]').val()],
				["studentType",                     ConvertRadiosToString( $('input[name=studentType]:checked') )]
			];
			var xStudentsInsertQ = GetPHPInsertQuery(studentTableData, "x_Students");
			var xStudentsUpdateQ = GetPHPUpdateQuery(studentTableData, "x_Students", "WHERE studentID = '"+studentID+"'");
//alert(xStudentsInsertQ);
//alert(xStudentsUpdateQ);
			var studentCourseChoices       = ConvertCheckboxesToString( $('input[name=studentWhichCourses]:checked') );
			var studentAvailabilityChoices = ConvertCheckboxesToString( $('input[name=bestTimes]:checked') );

			data = {'typeOfEntity':typeOfEntity,  'submitConfirmed':"true",  
						'studentID':studentID, 'studentPassword':studentPassword,
						 'studentFirstName':studentFirstName,  'studentLastName':studentLastName, 
						 'xStudentsInsertQ':xStudentsInsertQ, 'xStudentsUpdateQ':xStudentsUpdateQ,
						'studentCourseChoices':studentCourseChoices, "studentAvailabilityChoices":studentAvailabilityChoices,
						'studentWantsCollegeAdvising':studentWantsCollegeAdvising
			};

			// Sanitize
			$('input[type=text]').each(function() {
				var temp = $(this).val();
				$(this).val( temp.replace("'","&#146;") );
			});

			// Validation
			validationDetails_Text       = "all||input||studentFirstName::::all||input||studentLastName::::email||input||studentEmail::::phone||input||studentPhone::::all||textarea||studentPostalAddress::::date||input||studentDOB";
			validationDetails_Checkboxes = "1||checkbox||studentType::::1||checkbox||studentWhoSchedules::::1||checkbox||studentWhenToContactScheduler::::1||checkbox||studentHowToContactScheduler::::1||checkbox||studentScheduleFlexibility::::1||checkbox||studentPreferredLessonLocations::::1||checkbox||bestTimes::::1||checkbox||studentWhichCourses::::1||checkbox||studentWantsCollegeAdvising::::1||checkbox||studentSchool::::1||checkbox||studentStudySkillLevel::::1||checkbox||studentLiklihoodOfSAT::::1||checkbox||studentLiklihoodOfACT::::1||checkbox||studentGender"; 
			validationBool = validatePasswords('input[name=studentPassword]', 'input[name=studentPasswordConfirmed]', validationBool);
			validationBool = validateTextInputsAndTextareas(validationDetails_Text, validationBool);
			validationBool = validateCheckboxesAndRadioButtons(validationDetails_Checkboxes, validationBool);
			if (validationBool==false) { return validationBool; }
		

		//-- PARENT --//
		
		} else if (typeOfEntity=="parent") {		
			var parentFirstName = $('input[name=parentFirstName]').val();
			var parentLastName  = $('input[name=parentLastName]').val();
			var parentID        = parentFirstName+parentLastName; // needed or done in PHP?	
			var parentStudentRelationship = $('input[name=parentType]:checked').val();
//alert(parentStudentRelationship);
			var parentTableData = [
				["parentID",                  parentID],
				["parentFirstName",           parentFirstName],
				["parentLastName",            parentLastName],
				["parentEmail",               $('input[name=parentEmail]').val()],
				["parentPhone",               $('input[name=parentPhone]').val()],
				["parentPostalAddress",       $('textarea[name=parentPostalAddress]').val()],
				["parentOtherContactDetails", $('textarea[name=parentOtherContactDetails]').val()],
				["parentType",                ConvertCheckboxesToString( $('input[name=parentType]:checked') )],
				["parentTypeProspect",        ConvertCheckboxesToString( $('input[name=parentTypeProspect]:checked') )],
				["parentNotes",               $('textarea[name=parentNotes]').val()],
				["howHeardLPT",               ConvertCheckboxesToString( $('input[name=howHeardLPT]:checked') )],			
				["howHeardLPT4Name",          $('input[name=howHeardLPT4Name]').val()],
				["howHeardLPT5Info",          $('input[name=howHeardLPT5Info]').val()],
				["howHeardLPTOtherDetail",    $('input[name=howHeardLPTOtherDetail]').val()]
			];
			var xParentsInsertQ = GetPHPInsertQuery(parentTableData, "x_Parents");
			var xParentsUpdateQ = GetPHPUpdateQuery(parentTableData, "x_Parents", "WHERE parentID = '"+parentID+"'");
//alert(xParentsInsertQ);
//alert(xParentsUpdateQ);

			var studentID1 = $('select[name=filter-Student-x_Students-selection-1]').val();
			var studentID2 = $('select[name=filter-Student-x_Students-selection-2]').val();
			var studentID3 = $('select[name=filter-Student-x_Students-selection-3]').val();
			var studentID4 = $('select[name=filter-Student-x_Students-selection-4]').val();
			
			data = {'typeOfEntity':typeOfEntity,  'submitConfirmed':"true",  
					'parentID':parentID, 'xParentsInsertQ':xParentsInsertQ, 'xParentsUpdateQ':xParentsUpdateQ,
					'studentID1':studentID1, 'studentID2':studentID2, 'studentID3':studentID3, 'studentID4':studentID4,
					'parentStudentRelationship':parentStudentRelationship
			};

			// Sanitize
			$('input[type=text]').each(function() {
				var temp = $(this).val();
				$(this).val( temp.replace("'","&#146;") );
			});

			// Validation
			var validation_Text  = "all||input||parentFirstName::::all||input||parentLastName::::email||input||parentEmail::::phone||input||parentPhone::::all||textarea||parentPostalAddress";
			var validation_Checkboxes = "1||checkbox||parentType::::1||checkbox||parentTypeProspect::::1||checkbox||howHeardLPT"; 
			validationBool = validateTextInputsAndTextareas(validation_Text, validationBool);
			validationBool = validateCheckboxesAndRadioButtons(validation_Checkboxes, validationBool);
			if (validationBool==false) { return validationBool; }



		} else {
			alert("ERROR: Trying to process a non-existent type of person. Odd.  Feel free to contact us if this happens again.");
			return false;
		}
		// Since all is now validated, make the call
		ShowWorking();
		$.ajax({
			url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php',
			type:'POST',
			data:data,
			success:function(r) {
				//alert(r);
				$('#userTypeAndViewForm').submit();
				HideWorking();
/*
				if (tutorPassword!=="" || studentPassword!="") { 
					alert("Since you changed a password you need to revalidate your own password");
					location.href="http://www.logicpreptutoring.com/admin/sessions/logoutAndKillSession.php"; 
				}
*/
			}
		});
		return false; // don't submit the form the HTML way
	});
}

function ActivateUpdaterForParentTabStudentDropdowns() {
	if ($('select.filter-Student-x_Students-selection').length<=0) { return false; }
	$('#crossLinkUpdateButton').button();
	$('#crossLinkUpdateButton').unbind("click"); // prevent multiple bindings
	$('#crossLinkUpdateButton').click(function(){
		// update the contents of all the filter-Student-x_Students-selection dropdowns
		var d2 = {'action':'UpdateParentStudentLinkLists'};
		ShowWorking();
		$.ajax({
			url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php',
			type:'POST',
			data:d2,
			success:function(r) {
//alert(r);

				var studentID1 = $('select[name=filter-Student-x_Students-selection-1]').val();
				var studentID2 = $('select[name=filter-Student-x_Students-selection-2]').val();
				var studentID3 = $('select[name=filter-Student-x_Students-selection-3]').val();
				var studentID4 = $('select[name=filter-Student-x_Students-selection-4]').val();

				var studentDropdowns = r.split("::::");
				$('select[name=filter-Student-x_Students-selection-1]').parent().html(studentDropdowns[0]);
				$('select[name=filter-Student-x_Students-selection-2]').parent().html(studentDropdowns[1]);
				$('select[name=filter-Student-x_Students-selection-3]').parent().html(studentDropdowns[2]);
				$('select[name=filter-Student-x_Students-selection-4]').parent().html(studentDropdowns[3]);

				$('select[name=filter-Student-x_Students-selection-1]').val(studentID1);
				$('select[name=filter-Student-x_Students-selection-2]').val(studentID2);
				$('select[name=filter-Student-x_Students-selection-3]').val(studentID3);
				$('select[name=filter-Student-x_Students-selection-4]').val(studentID4);
					
				HideWorking();
				return false;
			}
		});
		return false;		
	});
	

}


function ActivateDeleteButtons() {
	$('input.adminDeleteButton').unbind('click');
	$('input.adminDeleteButton').click(function() {
		var typeOfEntity = $(this).attr('title');
		var answer = confirm("Do you really want to DELETE this "+typeOfEntity+"?  If you click 'Yes' it will be DELETED immediately.  There is no 'undo'.");
		if (answer) {
//			var selectionVal = $('input[name='+typeOfEntity+'ID]').val();
			var selectionVal = $(this).parent().prev().find('select option').filter(':selected').val();
			if (typeOfEntity=="course") { selectionVal = $('input[name='+typeOfEntity+'_id]').val(); }
//alert("-"+selectionVal+" = "+typeOfEntity+"-");
			var data = {'item_id':selectionVal, 'typeOfEntity':typeOfEntity, 'deleteConfirmed':"true"};
			ShowWorking();
			$.ajax({
				url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php',
				type:'POST',
				data:data,
				success:function(r) {
					alert(r);
					$('#userTypeAndViewForm').submit();
					HideWorking();
				}
			});
		}
		return false; // don't submit the form the HTML way
	});
}

/*
function ActivateShowHideContactBlocks() {
	$('.personDetailsCheckbox').click(function(){
		$(this).next().toggle();
	});

}
*/
	


// Generic way of putting the right media code in the right box for the right user agent
function GenericMediaHandling(thisObj, iPodCode, non_iPodCode) {
		var infoText = thisObj.attr('title');
		var fname = 'http://www.logicpreptutoring.com'+thisObj.find('span').html();
		$('div.mediaInfoBox').html(infoText);
		var htmlCode="";
		var isiPad = navigator.userAgent.match(/iPad/i) != null;
		if ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || isiPad ) {
			htmlCode = iPodCode;      // iPad, iPod, iPhone 
		} else {
			htmlCode = non_iPodCode;  // everything else
		}
		$('div.mediaWindow').html(""); // stop loading everything else
		return htmlCode.replace("::::::::::",fname);
}
	

// Apply JS to media widgets (because their contents are disconnected from any JS during the pooofing process)
function ApplyMediaJS() {
	// Within video widget
	$('li.videoListLI').unbind('click'); // make sure there are no bindings
	$('li.videoListLI').click(function() {
		var iPodCode = '<video width="640" height="360" controls src="::::::::::" type="video/mp4"></video>';
		var non_iPodCode = '<object id="flowplayer" width="640" height="360" data="http://releases.flowplayer.org/swf/flowplayer-3.2.4.swf" type="application/x-shockwave-flash"><param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.4.swf" /><param name="allowfullscreen" value="true" /><param name="flashvars" value=\'config={"clip":"::::::::::"}\' /></object>';
		var videoHTML = GenericMediaHandling($(this), iPodCode, non_iPodCode);
		$('#video2').html(videoHTML);  // this this video instead
	});
	
	// Within audio widget
	$('li.audioListLI').unbind('click'); // make sure there are no bindings
	$('li.audioListLI').click(function() {
		var iPodCode     = '<img id="vvImage" src="assets/images/vv.png" alt="vocablib vixen" /><audio id="aud321" width="640" height="360" controls src="::::::::::" type="audio/mpeg"></audio>';
		var non_iPodCode = '<img id="vvImage" src="assets/images/vv.png" alt="vocablib vixen" /><object data="http://www.logicpreptutoring.com/admin/musicplayer.swf?song=::::::::::" type="application/x-shockwave-flash" width="250" height="40"><param name="movie" value="http://logicpreptutoring/admin/musicplayer.swf?song=::::::::::"/></object>';
//		var non_iPodCode = '<object id="obj123" type="audio/x-mpeg" data="::::::::::" width="640" height="40" autoplay="true"><param name="src" value="::::::::::" /><param name="controller" value="true" /><param name="autoplay" value="false" /><param name="autostart" value="0" /></object>';
		var audioHTML = GenericMediaHandling($(this), iPodCode, non_iPodCode);
		$('#audio2').html(audioHTML);
	});
	
	// Within ebooks widget
	$('li.bookListLI').unbind('click'); // make sure there are no bindings
	$('li.bookListLI').click(function() {
		var iPodCode     = '<iframe src="http://docs.google.com/viewer?url=::::::::::" width="100%" height="100%"></iframe>';
		var non_iPodCode = '<iframe src="http://docs.google.com/viewer?url=::::::::::" width="100%" height="100%"></iframe>';
		var bookHTML = GenericMediaHandling($(this), iPodCode, non_iPodCode);
		$('#book2').html(bookHTML);
	});
}


// STILL USED? //
/*
function DoWhoTeachesWhoLists() {
		$('#wtwSpinner').show();
//					var userLogin = $('input[name=userLogin]').val();
		var userLogin = $('input[name=pretendingToBe]').val();
//					var userType  = $('input[name=userType]').val();
		var userType  = $('input[name=viewType]').val();
		//alert(userLogin+" "+userType);
		$.ajax({
			url:"http://www.logicpreptutoring.com/admin/WhoTeachesWhom.php",
			type:"POST",
			data: {"searchString":"", "typeOfRetrieval":userType, "userLogin":userLogin},
			success: function(r) {
				//alert(r);
				$('#wtwResults').html(r);
				$('#wtwSpinner').hide();
			}
		});
		return false;			
}
*/

// STILL USED? //
/*
function DoGetCalendars() {
	$('#calendarSpinner').show();
	var userLogin = $('input[name=pretendingToBe]').val();
	var userType  = $('input[name=viewType]').val();
//alert(userLogin+" "+userType);
	var n = $('#adminCalNumDays').val();
	var data = {
		"numDays":n,
		"typeOfRetrieval":userType, 
		"userLogin":userLogin
	};
	$.ajax({
		url:"http://www.logicpreptutoring.com/admin/Calendar2.php",
		type:"POST",
		data: data,
		success: function(r) {
			//alert(r);
			$('#calResults').html(r);
			$('#calendarSpinner').hide();
			activateCalendar(n, "calResults"); // this function is in inserted after the cal events have been created
		}
	});
	return false;			
}
*/



function getWindowDetails() {
	return [$(window).width(), $(window).height()];
}

function getWindowCenter() {
	return [$(window).width()/2, $(window).height()/2];
}

// NOTE:  obj is a jQuery object, desired measurements can both be "max"
function animateWidget_Show2(obj, imgObj, desiredW, desiredH) {

	if ( $('#blankBG').length>0 ) { return; } // we've already 'pooofed' this widget

/*
	var viewportDetails = getViewportDetails();
	var viewportCentre = getViewportCenter();
*/
	var viewportDetails = getWindowDetails();  // name left as "viewport..." so as not to mess up following code; refactor later at will
	var viewportCentre = getWindowCenter();    // name left as "viewport..." so as not to mess up following code; refactor later at will

	// Create blank BG and animate from zero to 0.5 opacity
	var htmlWidth  = $('html').width();
	var htmlHeight = $('html').height();
	var bodyWidth  = $('body').width();
	var bodyHeight = $('body').height();
	var blankBGWidth  = Math.max(htmlWidth,  bodyWidth);  // ???
	var blankBGHeight = Math.max(htmlHeight, bodyHeight)+200; // ???

	$("body").append("<div id='blankBG'></div>");
	$('#blankBG').css({
		'position':'fixed', 'z-index':900000, 'left':'-10000px', 'top':'-10000px', 
		'width':'20000px', 'height':'20000px', 
		'background-color':'#000', 'opacity':0.0 
	});

	$('#blankBG').animate( {'opacity':0.5}, 200, function() { var dummy=1; });
	

	// Animate the object from being huge with zero opacity to centred and correct size and full opacity
	$("body").append(obj); // needs to be moved relative to html
	if (desiredW=="max") { desiredW=viewportDetails[0]-100; }
	if (desiredH=="max") { desiredH=viewportDetails[1]-100; }
/*
	if (desiredW=="max") { "90%"; }  // syntax error
	if (desiredH=="max") { "90%"; }
*/
	var objW = blankBGWidth;
	var objH = blankBGHeight;
	obj.css({
		'position':'fixed', 
		'z-index':1000000, 
		'left':0, 
		'top':0,
		'width':objW,
		'height':objH, 
		'opacity':0.0
	});
	
	obj.show();       // must be visible for what follows to work
	var storedHTML = obj.html(); // remove content so we can poooof it without having to size the content too
	obj.html("");
	obj.animate(
		{'left':viewportCentre[0]-(desiredW/2)-30, 'top':viewportCentre[1]-(desiredH/2)-10, 'width':desiredW, 'height':desiredH, 'opacity':1.0 },
		300,
		function() { obj.html(storedHTML); ApplyMediaJS(); }
	);


	// Create exit button and animate
	$("body").append("<div id='exitButton'>X</div>");
	$('#exitButton').css({
		'position':'fixed', 'z-index':2000000, 'left':viewportCentre[0]-(desiredW/2)-45, 'top':viewportCentre[1]-(desiredH/2)-22,  
		'width':30, 'height':30,
		'background-color':'#f7931e', 'opacity':0.0, 'font-family':'sans-serif', 'font-size':'24px', 'color':'#fff', 'text-align':'center'
	});
	$('#exitButton').animate( {'opacity':1.0}, 200, function() { var dummy=1; });
	$('#exitButton').corner("5px");
	
	// Set up an event handler that undoes it all (it encapsulates some variables we need from above)
	$('#blankBG, #exitButton').unbind('click');
	$('#blankBG, #exitButton').click( function() {
		var storedHTML = obj.html(); // remove content so we can poooof it without having to size the content too
		obj.html("");
		obj.animate(
			{'left':viewportCentre[0]-(objW/2), 'top':viewportCentre[1]-(objH/2), 'opacity':0.0, 'width':objW, 'height':objH},
			500,
			function() { obj.hide(); obj.html(storedHTML); }
		);
		$('#blankBG, #exitButton').remove();
	});
}

function ActivateUpdateDateRange() {
	$('input[name=changeCalendarDates]').unbind('click');
	$('input[name=changeCalendarDates]').click(function() {
		$('select[name=filter-Tutor-x_Tutors-selection-1]').trigger('change');
		return false;
	});
}

function ActivateCalendarFilterDropdowns($popupDialog) {
	$('select[name=filter-Tutor-x_Tutors-selection-1], select[name=filter-Student-x_Students-selection-2], #filter-Course-x_Courses-selection').change(function() {
		// Get current filter options
		var tutorID = $('input[name=pretendingToBe]').val();
		var tutorChosen="none";
		var tutorSelection = $('select[name=filter-Tutor-x_Tutors-selection-1]').val();
		if ( tutorSelection != "ADD_NEW" ) { tutorChosen=tutorSelection; }
		var studentChosen="none";
		var studentSelection = $('select[name=filter-Student-x_Students-selection-2]').val();
		if ( studentSelection != "ADD_NEW" ) { studentChosen=studentSelection; }
		var courseChosen="none";
		var courseSelection = $('#filter-Course-x_Courses-selection').val();
		if ( courseSelection != "ADD_NEW" ) { courseChosen=courseSelection; }

		var firstDate = $('input[name=firstCalendarFilterDate]').val();
		var lastDate  = $('input[name=lastCalendarFilterDate]').val();
		var firstDateBits = firstDate.split("/");
		var lastDateBits  = lastDate.split("/");
		var d1 = new Date(firstDateBits[2], firstDateBits[0]-1, firstDateBits[1]);
		var d2 = new Date(lastDateBits[2],  lastDateBits[0]-1,  lastDateBits[1]);
		var firstSeconds = Math.floor(d1.getTime()/1000);
		var lastSeconds  = Math.floor(d2.getTime()/1000);
	
		// Reload the calendar's content (not the whole calendar) with the new filter options
		var data = {
				'action':'refreshCalendarBlocks', 
				'tutorID':tutorID, 
				'tutorSelection':tutorSelection, 
				'studentSelection':studentSelection, 
				'courseSelection':courseSelection,
				'firstSeconds':firstSeconds,
				'lastSeconds':lastSeconds
		};
		ShowWorking();
		$.ajax({
			url:"http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Tutor.php",
			type:"POST",
			data:data,
			success:function(r){
				//alert(r);
				$('#cal-container').html(r);
				var h = $('input[name=cal-container-height]').val();
				$('#cal-container').height( h );
				ActivateCalendarItemsEvents($popupDialog);
				HideWorking();
			}
		});
//		GetPopup();
		
	});
}

//snapback

function ActivateEditCalendarEventDetails($popupDialog) { // this fills in details and shows the popup
	$('div.cal-appt').unbind("click");
	$('div.cal-appt').click(function(){
		var eventID   = $(this).attr('title');
		var text      = $(this).html().replace("&nbsp;","");
		var bits      = text.split("<br>");
		var student   = trim(bits[0]);
		var studentID = student.replace(" ","");
		var times     = trim(bits[1]);
		var timesBits = times.split("=&gt;");
		var start     = trim(timesBits[0]);
		var end       = trim(timesBits[1].split("<input")[0]);
		var date = $(this).find('.eventDetailsDate').val();

		$popupDialog.find('input[name=eventID]').val(eventID);
		// Get all other details about this event
//alert($('input[name=eventDetails'+eventID+']').val());
		var eventDetailsBits = $('input[name=eventDetails'+eventID+']').val().split("::");
		
		// FILL IN THE EXISTING VALUES OF THE FORM ELEMENTS
		// tutor name
		$('select[name=popup-Tutor-x_Tutors-selection-2]').find('option[value='+eventDetailsBits[1]+']').attr('selected',true);
		// student name
		$('select[name=popup-Student-x_Students-selection-1]').find('option[value='+studentID+']').attr('selected',true);
		// course name
		$('#popup-Course-x_Courses-selection').find('option[value='+eventDetailsBits[3]+']').attr('selected',true);
		// date
		$('input[name=cal-event-date]').val(date);
		// start time
		$('select[name=cal-event-start-time]').find('option[value='+start+']').attr('selected',true);
		// end time
		$('select[name=cal-event-end-time]').find('option[value='+end+']').attr('selected',true);		
		// repeat bool
		var t1bool = false;
		t1bool = eventDetailsBits[4]=="true" ? true : false;
//		$('input[name=apptRepeat]').attr("checked", t1bool );
		// repeat interval seconds
//		$('input[name=apptRepeatNumber]').val( eventDetailsBits[5] );
//		$('select[name=apptRepeatPeriodType]').find('option[value='+eventDetailsBits[6]+']').attr('selected',true);
		// repeat until datetime
//		$('input[name=repeatUntil]').val( eventDetailsBits[7] );
		// comments
		$('input[name=cal-event-event-details]').val( eventDetailsBits[7] );

		// email scheduler bool
		var t2bool = false;
		t2bool =eventDetailsBits[9]=="true" ? true : false;
		$('input[name=cal-event-email-scheduler]').attr("checked", t2bool );

		// email tutor bool
		var t3bool = false;
		t3bool = eventDetailsBits[10]=="true" ? true : false;
		$('input[name=cal-event-email-tutor]').attr("checked", t3bool );

		// location
		$('select[name=popup-location-selection]').val( eventDetailsBits[11] );
		
		$popupDialog.dialog('open');
		return false;
	});
}

// snapback

function ActivatePopupDelete($popupDialog) {
	var eventID      = $('input[name="eventID"]').val();  // the eventID before any editing took place, so we can look up the event we're changing
	var studentID    = $('select[name=popup-Student-x_Students-selection-1]').val();
	var date          = $('input[name=cal-event-date]').val();
	var start         = $('select[name=cal-event-start-time]').val();
	var end           = $('select[name=cal-event-end-time]').val();
	var dateBits      = date.split("/");
	var year          = dateBits[2];
	var month         = dateBits[0]-1; // convert to JS months
	var day           = dateBits[1];
	var startTimeBits = start.split(":");
	var s_hours       = startTimeBits[0];
	var s_mins        = startTimeBits[1];
	var endTimeBits   = end.split(":");
	var e_hours       = endTimeBits[0];
	var e_mins        = endTimeBits[1];
	var jsStartDate   = new Date(year, month, day, s_hours, s_mins, 0);
	var jsEndDate     = new Date(year, month, day, e_hours, e_mins, 0);
	//var isoStartDate  = jsDateToMysqlDatetime(jsStartDate);
	var isoEndDate    = jsDateToMysqlDatetime(jsEndDate);
	var startSeconds  = Math.floor(Date.UTC(year, month, day, s_hours, s_mins, 0)  / 1000 );
	var endSeconds    = Math.floor(Date.UTC(year, month, day, e_hours, e_mins, 0)  / 1000 );
	var isoStartDate = jsDateToMysqlDatetime(jsStartDate);
	ShowWorking();
	var data = {'action':'deleteCalendarItemViaPopupDeleteButton', 'eventID':eventID, 'studentID':studentID, 'isoStartDate':isoStartDate};
	$.ajax({
		url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Tutor.php',
		type:'POST',
		data:data,
		success:function(r) {
			alert(r); // alerts the success message (-WILL DELETE THE CAL EVENT, ITS LESSON AND ANY EMAIL ALERTS-)
			$('#userTypeAndViewForm').submit();  // re-load page
			HideWorking();
		}
	});
	return false; // don't submit the form the HTML way
}

function ActivatePopupSubmit($popupDialog) {
	// If we've clicked on an event this is its eventID otherwise we're adding a new event and this will be empty
	var eventID       = $('input[name="eventID"]').val();  
//alert("eventID="+eventID);
	// Gather all fields and set up the stuff to send to PHP
	var date          = $('input[name=cal-event-date]').val();
	var start         = $('select[name=cal-event-start-time]').val();
	var end           = $('select[name=cal-event-end-time]').val();
	var dateBits      = date.split("/");
	var year          = dateBits[2];
	var month         = dateBits[0]-1; // convert to JS months
	var day           = dateBits[1];
	var startTimeBits = start.split(":");
	var s_hours       = startTimeBits[0];
	var s_mins        = startTimeBits[1];
	var endTimeBits   = end.split(":");
	var e_hours       = endTimeBits[0];
	var e_mins        = endTimeBits[1];
	var jsStartDate   = new Date(year, month, day, s_hours, s_mins, 0);
	var jsEndDate     = new Date(year, month, day, e_hours, e_mins, 0);
	var isoStartDate  = jsDateToMysqlDatetime(jsStartDate);
	var isoEndDate    = jsDateToMysqlDatetime(jsEndDate);
	var startSeconds  = Math.floor(Date.UTC(year, month, day, s_hours, s_mins, 0)  / 1000 );
	var endSeconds    = Math.floor(Date.UTC(year, month, day, e_hours, e_mins, 0)  / 1000 );
	// Validate content of fields
	if (endSeconds <= startSeconds) {
		alert("ERROR: The end time must be later than the start time");
		return false;
	}

	
/* DEBUG
var checkStartDate = new Date(startSeconds*1000);
var checkEndDate   = new Date(endSeconds*1000);
alert(checkStartDate+" "+checkEndDate);
*/
//	var repeatBool         = $('input[name=apptRepeat]').is(':checked');
//	var repeatNumber       = $('input[name=apptRepeatNumber]').val();
//	var repeatPType        = $('select[name=apptRepeatPeriodType]').val();
//	var repeatPeriod       = repeatNumber+"::"+repeatPType;  // can't get secs because months and years are non-homogenious 
//	var repeatEndDate      = $('input[name=repeatUntil]').val();
//	var repeatEDBits       = repeatEndDate.split("/");
//	var repeatEndDay       = repeatEDBits[1];
//	var repeatEndMonth     = repeatEDBits[0];
//	var repeatEndYear      = repeatEDBits[2];
//	var repeatEndDateSeconds = Math.floor(Date.UTC(repeatEndYear, repeatEndMonth, repeatEndDay, s_hours, s_mins, 0)  / 1000 );
	var emailOfficeBool    = $('input[name=cal-event-email-office]').is(':checked');
	var tutorID            = $('select[name=popup-Tutor-x_Tutors-selection-2]').val();
	var studentID          = $('select[name=popup-Student-x_Students-selection-1]').val();
	var courseID           = $('select[name=popup-Course-x_Courses-selection]').val();
	var studentName        = $('select[name=popup-Student-x_Students-selection-1]').find('option[value='+studentID+']').html();
	var escapedStudentName = studentName.replace(" ","+");
	var location           = $('select[name=popup-location-selection]').val();
	// Validate fields
	if (tutorID=="ADD_NEW") { alert("Please choose a tutor."); return false; }
	if (studentID=="ADD_NEW") { alert("Please choose a student."); return false; }
	
	// Repeat the following if we have valid repeat event instructions
//	var listOfDates = [];
	// from jsStartDate to when? work it out. Then convert back to each intervening date.
//	var currYear          = parseInt(year,10);
//	var currMonth         = parseInt(month,10); // convert to JS months
//	var currDay           = parseInt(day,10);
//	var currInSeconds     = Math.floor(Date.UTC(currYear, currMonth, currDay, s_hours, s_mins, 0)  / 1000 );
//	var rpt               = parseInt(repeatNumber,10);
//	listOfDates.push(currInSeconds);
/*
	while (currInSeconds <= repeatEndDateSeconds) {
		if        (repeatPType === "days") {
			currDay += rpt;
		} else if (repeatPType === "weeks") {
			currDay += (7*rpt);
		} else if (repeatPType === "months") {
			currMonth += rpt;
		} else if (repeatPType === "years") {
			currYear += rpt;		
		}
		currInSeconds = Math.floor(Date.UTC(currYear, currMonth, currDay, s_hours, s_mins, 0)  / 1000 );
		listOfDates.push(currInSeconds);
		
		// -- TO DO -- all the code below goes here when this is working properly
		
		// -- TO DO -- Make sure you UNSET the checkbox for sending an email to LPT after the first email has been sent or you will NOT be popular
		
		// get currInSeconds and add eventDurationInSeconds (which you need to calculate above) to it. this give you the start and end
		// times in seconds.  convert both to isoDatetimes. job done.
		
		// ensure each tutor has their own color and set it randomly when you insert a tutor. make sure the color does not change for an update
		// of the tutor's details.
	}
*/
	
	var emailSchedulerBool = $('input[name=cal-event-email-scheduler]').is(':checked');
	var emailTutorBool     = $('input[name=cal-event-email-tutor]').is(':checked');
	var emailOfficeBool    = $('input[name=cal-event-email-office]').is(':checked');
	
		// show a popup that indicates each appt as it is being added
	var eventDuration = (Math.floor((endSeconds-startSeconds)/36.0))/100;
	var popupData = [
		// elems to delete later when the cal table is cleaned up
		['calendarName',          tutorID ],					
		['calendarColor',         'COLOR_HERE' ],		 	// this is no longer used - kept to avoid bugs
		['eventDetails',          escapedStudentName ],
		['eventStartDatetime',    isoStartDate ],			// TO DO - change so this is filled in inside PHP, even for non-repeating events
		['eventEndDatetime',      isoEndDate ],				// TO DO - change so this is filled in inside PHP, even for non-repeating events
		['eventStartSeconds',     startSeconds ],			// TO DO - change so this is filled in inside PHP, even for non-repeating events
		['eventEndSeconds',       endSeconds ],				// TO DO - change so this is filled in inside PHP, even for non-repeating events
		['eventDuration',         eventDuration ],
		['tutorID',               tutorID ],
		['studentID',             studentID ],
		['courseID',              courseID ],
//		['repeatBool',            repeatBool ],				// this is the value of the tick mark, not a true boolean
//		['repeatIntervalSeconds', repeatPeriod],
//		['repeatUntilDatetime',   $('input[name=repeatUntil]').val() ],
		['comments',              $('input[name=cal-event-event-details]').val() ],
		['emailSchedulerBool',    emailSchedulerBool ],
		['emailTutorBool',        emailTutorBool ],
		['eventLocation',         location ],
		['repeatingEventNextID',  "NO_NEXT_EVENT" ]			// TO DO - this value must be examined before updating an existing repeating event
	];

	// Create INSERT and UPDATE queries for Calendar
	var xCalendarInsertQ = GetPHPInsertQuery(popupData, "x_Calendar");
	var xCalendarUpdateQ = GetPHPUpdateQuery(popupData, "x_Calendar", "WHERE eventID = '"+eventID+"'");
//alert(xCalendarInsertQ);
//alert(xCalendarUpdateQ);

	// Create basic INSERT and UPDATE queries for Lesson
	var courseName    = $('select[name=popup-Course-x_Courses-selection]').find('option[value='+courseID+']').html();
	var lessonData    = [
		['lessonID',                  studentID+"::"+isoStartDate], // not really needed but left here in case removing it breaks anything
		['eventID',                   "EVENT_ID"],					// This string tag will be replaced by the real eventID in PHP
		['lessonSubjectName',         courseName ], 
		['lessonTopicsTaught',        '' ],
		['hourlyRate',                '' ],
		['homeworkDetails',           '' ],
		['homeworkStatus',             0 ],
		['homeworkComments',          '' ],
		['suggestionsForImprovement', '' ],
		['parentToBeContacted',        0 ],
		['parentRecentlyContacted',    0 ],
		['studentMotivated',           0 ],
		['forOfficeOnlyComments',     '' ],
		['needLPToContact',           "" ],
		['lessonFilledIn',             0 ]
	];
	var xLessonsInsertQ = GetPHPInsertQuery(lessonData, "x_Lessons");
//alert(xLessonsInsertQ);
	
	// Sanitize
	$('input[type=text]').each(function() {
		var temp = $(this).val();
		$(this).val( temp.replace("'","&#146;") );
	});

	// Validate
	var validationBool = true; var textValidationDetails="";
//	if (repeatBool==true) {
//		textValidationDetails = "numeric||input||apptRepeatNumber::::date||input||repeatUntil::::date||input||cal-event-date";
//	} else {
		textValidationDetails = "date||input||cal-event-date";
//	}
	validationBool = validateTextInputsAndTextareas(textValidationDetails, validationBool);
	var selectValidationDetails = "ADD_NEW||select||popup-Tutor-x_Tutors-selection::::ADD_NEW||select||popup-Student-x_Students-selection::::ADD_NEW||select||popup-Course-x_Courses-selection::::End time||select||cal-event-start-time::::Start time||select||cal-event-end-time";  
	validationBool = validateSelects(selectValidationDetails, validationBool);
	if (validationBool==false) { return validationBool; }
	// Send to PHP
	data = {
		'action':'submitCalendarEvent',	'eventID':eventID,
		'xCoursesInsertQ':xCalendarInsertQ, 'xCoursesUpdateQ':xCalendarUpdateQ, 'xLessonsInsertQ':xLessonsInsertQ,
		'emailSchedulerBool':emailSchedulerBool, 'emailTutorBool':emailTutorBool, 'emailOfficeBool':emailOfficeBool,
		'studentID':studentID, 'tutorID':tutorID, 'eventStartDatetime':isoStartDate
	};
	ShowWorking();
	$.ajax({
		url:'http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Tutor.php',
		type:'POST',
		data:data,
		success:function(r) {
			alert(r); // alerts the success message
			$('#userTypeAndViewForm').submit();  // re-load page
			HideWorking();
		}
	});
	return false; // don't submit the form the HTML way

}


function ActivateCalendarItemsEvents($popupDialog) {
	// Activate click on the calendar day header (shows all appts for that day)
	$('.cal-day-header').unbind("click");
	$('.cal-day-header').click(function(){
		var dayInQuestion = $(this).html();
		var $dayContents = $(this).parent();
		var floatingDaySchedule = "";
		$dayContents.find('div.cal-appt').each(function(){
			var bgCol   = $(this).css('background-color');
			var eventID = $(this).attr('title');
			floatingDaySchedule += "<div class='cal-appt' style='background-color:"+bgCol+"' title='"+eventID+"' >"+$(this).html()+"</div>";
		});
		var $dialog = $('<div></div>').html(floatingDaySchedule).dialog({
			title: 'Appointments for '+dayInQuestion,
			modal: true
		});
		ActivateEditCalendarEventDetails($popupDialog);
	});
	// Make the events themselves clickable	
	ActivateEditCalendarEventDetails($popupDialog);
}


function GetPopup() { // This creates the popup but doesn't show it yet
	//var $popupDialog = "";
	var d = {'action':"getPopup"};
	ShowWorking();
	$.ajax({
		url:"http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Tutor.php",
		data:d,
		type:"POST",
		success:function(r){
//alert(r);
			var $popupHTML = $(r);

			var $popupDialog = $('<div></div>').html($popupHTML.html()).dialog({
				autoOpen: false,
				title: 'Appointment details',
				modal: true,
				minWidth: 750
			});
			// Activate the buttons and datepickers
			$('input[name=cal-edit-event]').button();
			$('input[name=cal-delete-event]').button();
			$('#cal-event-date').datepicker({ showMonthAfterYear: true, changeMonth: true, changeYear: true, yearRange: '2010:2020' });
			$('input[name=repeatUntil]').datepicker({ showMonthAfterYear: true, changeMonth: true, changeYear: true, yearRange: '2010:2020' });

			// Handle click on the add
			$('input[name=cal-add-event]').unbind('click');
			$('input[name=cal-add-event]').click(function(){
				var tutorID   = "ADD_NEW";
				var studentID = "ADD_NEW";
				var start     = "";
				var end       = "";
				$('#popup-Tutor-x_Tutors-selection').find('option[value='+tutorID+']').attr('selected',true);
				$('#popup-Student-x_Students-selection').find('option[value='+studentID+']').attr('selected',true);			
				$('select[name=cal-event-start-time]').find('option[value='+start+']').attr('selected',true);
				$('select[name=cal-event-end-time]').find('option[value='+end+']').attr('selected',true);
				$popupDialog.dialog('open');
				return false;
			});
			
			// Activate filter dropdowns
			ActivateCalendarFilterDropdowns($popupDialog);
			var h = $('input[name=cal-container-height]').val();
			$('#cal-container').height( h );

			// Activate update date range button
			ActivateUpdateDateRange();
			
			// Make the calendar events clickable (both the items themselves and the header for each day)
			ActivateCalendarItemsEvents($popupDialog);

			// Activate calendar popup submit appt click
			$('input[name=cal-edit-event]').unbind("click");
			$('input[name=cal-edit-event]').click(function(){
				ActivatePopupSubmit($popupDialog);
				return false;
			});
			// Activate calendar popup delete appt click
			$('input[name=cal-delete-event]').unbind("click");
			$('input[name=cal-delete-event]').click(function(){
				ActivatePopupDelete($popupDialog);
			});
			HideWorking();
		}
	});
}


// -- TOP BAR -- //

function ActivateUserBar() {
	// set dropdowns to current choices
	$('#viewTypeSelect').find('option[value='+$("input[name=viewType]").val()+']').attr('selected','selected');
	$('#userSelection').find('option[value='+$("input[name=pretendingToBe]").val()+']').attr('selected', 'selected');
	
	// act on changes to dropdowns	(OLD VERSION -- DELETE ONCE NEW VERSION IS WORKING)
	$('#viewTypeSelect, #userSelection').change(function() {
		// Copy the current values of the viewType and pretendingToBe dropdowns into the hidden vars
		var nextViewType = $('#viewTypeSelect').find('option:selected').eq(0).val();
		$("input[name=viewType]").val(nextViewType);
		
		if ($("input[name=pretendingToBe]").length>0) {
			var nextPretendingToBe = $('#userSelection').find('option:selected').eq(0).val();
			$("input[name=pretendingToBe]").val(nextPretendingToBe);
		} else {
			// if the pretendingToBe dropdown doesn't exist it's because we're being ourselves (pretendingToBe = userLogin)
			$("input[name=pretendingToBe]").val( $('input[name=userLogin]').val() );
		}
		// reload the page with these values
//alert($("input[name=viewType]").val()+" "+$("input[name=pretendingToBe]").val());
		$('#userTypeAndViewForm').submit();
		return false;
	});	
}

function ActivateIPad() {
	// zoom iPad
	$('#ipad').unbind("click");
	$('#ipad').click(function() {
		$(this).animate(
			{'position':'absolute', 'top':'-4px', 'left':'10px', 'width':'940px', 'background-color':'#fff'},
			500,
			function() {
				// now show the iPad tabs div on top of the pooofed iPad window
				$('#iPadTabs').show();
				$('#iPadButton').show();
				
			}
		);
	});
	// activate ipad button so it quits ipad
	$('#iPadButton').unbind("click");
	$('#iPadButton').click(function(){
		$('#iPadButton').hide();
		$('#iPadTabs').hide();  // hide the iPad tabs div
		$('#ipad').animate(
			{'position':'absolute', 'top':'380px', 'left':'680px', 'width':'180px'},
			500,
			function() { }
		);
	});

}


/*
function ActivateCrossConnectPopups() {
	$('.crossLinkAddButton').unbind("click");
	$('.crossLinkAddButton').click(function(){
		// Get the correct contents for the popup
		if ($(this).parents('#parent-AdminSignupFormContainer').length>0) {
			var h = $('#student-AdminSignupFormContainer').html();
			var d = {'elementType':'student', 'tableToGet':'x_Students', 'actionType':'edit'};
			ShowWorking();
			$.ajax({
				url:"http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php",
				data:d,
				type:"POST",
				success:function(r){
					$('#student-AdminSignupFormContainer').html(r);
					$('div.amf').hide();                // hide any visible panes in case something else goes wrong
					$('div.amf').fadeIn('1000');        // show the add pane
		//alert(r);								
					// set up the popup with the correct contents
					var $popupDialog = $('<div></div>').html(r).dialog({
						autoOpen: false,
						title: 'Add new student',
						modal: true,
						minWidth: 880
					});
					$popupDialog.dialog('open');
					$popupDialog.find('form > div').show();
					// Activate JS elements on the popup
					ActivateSubmitButtons();
//alert($('#studentDOBedit').parent().html());
					$('#studentDOBedit').each(function() {
						alert(this.id);
						$(this).css({"border":"2px red solid"}).datepicker({ showMonthAfterYear: true, changeMonth: true, changeYear: true, yearRange: '1990:2010' });
					});
					HideWorking();
					return false;
				}
			});
				
		}/*
 else { // NB: this leg of the 'if' is not used any longer
			var h = $('#parent-AdminSignupFormContainer').html();
			//PopulateAdminParentsForm("Parent", "ADD_NEW", {});			
			var a = "parent";
			h = "The form to add a "+a+" goes here"
		}
*/
		
		// set up the popup with the correct contents
/*
		var $popupDialog = $('<div></div>')
			.html(h)
			.dialog({
				autoOpen: false,
				title: 'Add new '+a,
				modal: true,
				minWidth: 750
			});
		$popupDialog.dialog('open');
*/
/*						
		return false;
	});

}

*/
	
$(document).ready(function() {

	// Start slideshow
	numberOfSlides = $('img.slideshowImage').length;
	if (numberOfSlides>0) {
		startSlides(numberOfSlides);
	}
	// Fix PNGs
	$(document).pngFix();
		
	// Corners on things
	$('#menu').corner("7px");
	$('#targetScoreTable, #homeworkTable, #nextLessonTable').corner();  // full roundness
//	$('input[type=submit]').corner("5px");	
	$('#video2Wrapper, #audio2Wrapper, #book2Wrapper, #calculatorWrapper, #calendarWrapper, #dictionaryWrapper').corner("5px");
//	$('.fcButton').corner("2px");

	// Make menu work (even in IE6!)
	$('#menu>ul>li>ul').css({ 'font-size':'8pt' });
	$('#menu>ul>li>ul>li').css({'font-size':'8pt', 'margin':'0', 'padding':'0', 'margin-top':'3px' });
	$('#menu>ul').append('<li class="highlightMenu"><a href="/logic-prep-tutoring/contact-map-logic-prep-tutoring.html" title="Contact and Map - How to find LogicPrep Tutoring" >Contact and Map</a></li>');
	
	// Load background files via JS to speed up the HTML load time
	$('body').css('background-image','url(assets/images/background-CroppedBlend2.png)');
	$('#menu').css({
		'background-image':'url(assets/images/menuGradTop.png)',
		'background-repeat':'repeat-x'
	});
								
	// Insert mailto: details to avoid spam (it's in the DOM but not in the HTML)
	$('#shareButton').hover(
		function() {
			$('#hiddenShareOptions').slideDown(300).css({'background-color':'#fff'});
			$('a.fbShareLink'     ).attr('href','http://www.facebook.com/sharer.php?u='+location.href+'&t=LogicPrep tutoring - The best test preparation in Westchester!');
			$('a.twitterShareLink').attr('href','http://twitter.com/home?status=Check out excellent Westchester NY Tutoring Service');
			$('a.mailShareLink'   ).attr('href','mailto:logicprep@gmail.com?subject=You might like to check out LogicPrep Tutoring&body=Hi FRIENDS_NAME,  You might like to check out this page: '+location.href+'.  Best wishes, YOUR_NAME');
		},
		function() { var dummy=0; }
	);
	$('#hiddenShareOptions').hover(
		function() { var dummy=0; },  function() { $(this).slideUp(300); }
	);


	// Stop annoying title popups
	var originalTitle="";
	$("a").hover(
		function() {
			originalTitle = $(this).attr("title");
			$(this).attr("title","");
			$(this).parent().addClass("hovered");
		},
		function() {
			$(this).attr("title",originalTitle);
			$(this).parent().removeClass("hovered");
		}
	);
	
// -- TO DO -- STILL USED? --
//
	//--UPDATE USER DETAILS TAB--
	// Update user details tab: make sure the form always reflects the selected user's detail
	  // if the selection changes then change the form's contents and trigger it to
	  // fill the form on page load with the selected user's contents
	$('#userSelection').change(function () {
		var userLoginSelected = "";
		$('#userSelection option:selected').each(function () {
			userLoginSelected = $(this).attr('value');
		});
//		FillFormFields(userLoginSelected);
		// load the initial login value where it can't be changed 
		$('input[name=currLogin]').val( userLoginSelected );
		
		// Get the user's current courses (a block of pre-ticked checkbox HTML)
		var pLogin = $('input[name=login]').val();
		var pType  = $('#userTypeSelect').val();
		if (pType!="admin") {
			var userDetails = {"personLogin":pLogin, "personType":pType, "action":"get"};
			ShowWorking();
			$.ajax({
				url:"http://www.logicpreptutoring.com/admin/ResourcesAJAX.php",
				type:"POST",
				data:userDetails,
				success: function(r) {
					//alert("Success: "+r);
					$('#checkboxesFieldset').html(r);
					HideWorking();
				}
			});
		} else {
			$('#checkboxesFieldset').html("This box is empty because admin doesn't teach courses.");
		}
	}).trigger('change');
	// AJAX-submit the form when the submit button is clicked
	$('#userDetailsFormSubmit').unbind("click");
	$('#userDetailsFormSubmit').click(function() {
		if ($('input[name=confirmpassword]').val()==$('input[name=password]').val()) {
			// Update users table
			var d = {
				'login':     $('input[name=login]'     ).val(),
				'password':  $('input[name=password]'  ).val(),
				'user_type': $('#userTypeSelect' ).val(),
				'email':     $('input[name=email]'     ).val(),
				'first_name':$('input[name=first_name]').val(),
				'last_name': $('input[name=last_name]' ).val(),
				'currLogin': $('input[name=currLogin]' ).val(),
				'action':'updateData'
			};
			ShowWorking();
			$.ajax({
				url:"http://www.logicpreptutoring.com/admin/ProcessSessionData.php",
				type:"POST",
				data:d,
				success: function(r) {
					//alert("Success: "+r);
					alert("Update complete");
					HideWorking();
				}
			});
			// Update Resources table
			var courseNamesString="";
			$('input:checked').each(function() {
				courseNamesString+= ( $(this).val()+"," );
			});
			courseNamesString = courseNamesString.slice(0,-1);
			var pLogin2 = $('input[name=login]').val();
			var pType2  = $('#userTypeSelect').val();
			if (pType2!="admin") {
				var d2 = {'personLogin':pLogin2, 'personType':pType2, 'courseNames':courseNamesString, "action":"set"};
				ShowWorking();
				$.ajax({
					url:"http://www.logicpreptutoring.com/admin/ResourcesAJAX.php",
					type:"POST",
					data:d2,
					success: function(r) {
						//alert("Success: "+r);
						$('#checkboxesFieldset').html(r);
						HideWorking();
					}
				});
			}
		} else {
			alert("The passwords don't match, please try again.  Thanks.");
		}
		return false; // prevent normal form action
	});
	
		
	// Widgets
	$('#watchVideo').unbind('click'); 
	$('#watchVideo').click(function() { 
		$('#video2Wrapper').css({ 'position':'relative', 'left':'0', 'width':'100%', 'height':'100%', 'overflow':'scroll' });
		animateWidget_Show2($('#video2Wrapper'), $('#computer2'), 815, 378); 
	});
	$('#listenAudio').unbind('click'); 
	$('#listenAudio').click(function() { 
		animateWidget_Show2($('#audio2Wrapper'), $('#computer2'), 859, 382); 
	});
	$('#readBooks').unbind('click'); 
	$('#readBooks').click(function() { 
		$('#book2Wrapper').css({ 'position':'relative', 'left':'0', 'width':'100%', 'height':'100%', 'margin':'0 auto', 'overflow':'scroll' });
		animateWidget_Show2($('#book2Wrapper'), $('#computer2'), "max", "max"); 
	});

	$('#calendar2, #calendarMonth, #calendarDay').unbind('click'); 
	$('#calendar2, #calendarMonth, #calendarDay').click(function() { 
		$('#calContents').css({ 'position':'relative', 'left':'0', 'width':'100%', 'height':'90%', 'margin':'0 auto', 'overflow':'scroll', 'background-color':'#fff' });
		animateWidget_Show2($('#calendarWrapper'), $("#calendar2"), "max", "max"); 
	});
	$('#calculator').unbind('click'); 
	$('#calculator').click(function() { 
		animateWidget_Show2($('#calculatorWrapper'), $("#calculator"), 169, 259); 
	});

	$('#dictionary').unbind('click'); 
	$('#dictionary').click(function() { 
		$('#dictionaryWrapper').css({ 'position':'relative', 'left':'0', 'width':'100%', 'height':'100%', 'overflow':'scroll' });
		animateWidget_Show2($('#dictionaryWrapper'), $('#dictionary'), "max", "max"); 
	});

	$('#targetScoresLI').unbind('click');
	$('#targetScoresLI').click(function() { animateWidget_Show2($('#targetScoreTable'), $("#notice2"), 400, 600); });
/*
	$('#nextLessonLI').click(function() { animateWidget_Show2($('#nextLessonTable'), $("#notice2"), 400, 300); });
	$('#homeworkLI').click(function() { animateWidget_Show2($('#homeworkTable'), $("#notice2"), 400, 300); });
*/
	
// THE next two could be commented out, but give a nice fade effect before leaving to go to Tw/FB
	$('#studentFB').unbind('click'); 
	$('#studentFB').click(function() { 
		$('#facebookWrapper').css({ 'position':'relative', 'left':'0', 'width':'100%', 'height':'100%', 'overflow':'scroll' });
		animateWidget_Show2($('#facebookWrapper'), $('#studentFB'), "max", "max"); 
	});
	$('#studentTwitter').unbind('click'); 
	$('#studentTwitter').click(function() { 
		$('#twitterWrapper').css({ 'position':'relative', 'left':'0', 'width':'100%', 'height':'100%', 'overflow':'scroll' });
		animateWidget_Show2($('#twitterWrapper'), $('#studentTwitter'), "max", "max"); 
	});

	
	// STILL USED ???
	$('#closeLink').hover(
		function(){ 
			$(this).css({'background-color':'#800', 'color':'#fff'}); 
		}, 
		function() { 
			$(this).css({'background-color':'#fff', 'color':'#800'}); 
		}
	);
	
	
	// TAB HANDLING
	
	// Make sure the "view as" select shows the right value
	if ( $('#viewTypeSelect') ) {

		// Startup the tabs
		$('#tab-container').tabs({ fx: { opacity: 'toggle' } });
		
		// Activate ability to do searches
		$('#adminSearchSubmit').unbind('click');
		$('#adminSearchSubmit').click(function() {
			return DoSearch(); // do search and return false
		});
	}
	
	$('#tab-container').unbind('tabsselect'); // prevent multiple bindings
	$('#tab-container').bind('tabsselect', function(event, ui) {
	
		$('#studentNotes').remove(); // make sure the student notes icon is only where we want it to be
	
	    // Objects available in the function context:
	    var a = ui.tab;     // anchor element of the selected (clicked) tab
	    var b = ui.panel;   // element, that contains the selected/clicked tab contents
	    var c = ui.index;   // zero-based index of the selected (clicked) tab
	    $('input[name=tabSelected]').val(c);
	    var t = (a+"").split("\/");
	    var tabToGet = t[4];
	    var titleContents = $(tabToGet).attr('title');
//alert(titleContents);
		var bits = titleContents.split(' ');
		var actionType  = "edit";
		var tableToGet  = bits[0];
		var elementType = bits[1];
//alert(a+"--"+actionType+"--"+tableToGet+"--"+elementType);
		if (elementType=="tutorsStudents") { ActivateTutorsStudentsTable(); }
		var adminSignupFormContainer = '#'+elementType+'-AdminSignupFormContainer';
		var d = {'elementType':elementType, 'tableToGet':tableToGet, 'actionType':actionType};
		// empty all the form containers except the one we're going to load data into (prevents overloading of 'id's and the like)
		$('.adminSignupFormContainer').html("").hide(); // empty and hide all other forms to avoid accidental overlapping ids and names
		$(adminSignupFormContainer).show();
		ShowWorking();
		$.ajax({
			url:"http://www.logicpreptutoring.com/admin/TabCreationSupportFunctions_Admin.php",
			data:d,
			type:"POST",
			success:function(r){
				$(adminSignupFormContainer).html(r);
				$('div.amf').hide();                // hide any visible panes in case something else goes wrong
				$('div.amf').fadeIn('1000');        // show the add pane
				ActivateAdminDropdowns();
				ActivateSubmitButtons();
				$('#studentDOBedit').datepicker({ showMonthAfterYear: true, changeMonth: true, changeYear: true, yearRange: '1990:2010' });
				ActivateDeleteButtons();
				//ActivateShowHideContactBlocks();
//				ActivateCrossConnectPopups();
				ActivateUpdaterForParentTabStudentDropdowns();
				HideWorking();
			}
		});
	});
	
	// Re-choose the previously chosen tab
	var tabToSelect = $('input[name=tabSelected]').val();
	tabToSelect = parseInt(tabToSelect,10);
	$('#tab-container').tabs('select', tabToSelect);

	
	ActivateTutorLessonFormDropdowns();
	ActivateTutorsStudentsTable();

	
	// TUTOR FORM
	
	$('table.sortable tr:odd').addClass('tigerStripeLight');
	$('table.sortable tr:even').addClass('tigerStripeDark');
	$('table.sortable').tablesorter({
		widgets: ['zebra']
	});	
	
	$('.dollars').each(function(){
		$(this).html( "$"+(parseFloat($(this).html()).toFixed(2)) );
	});
	
	
	// TUTOR CALENDAR
	
	// Get the popup HTML
	GetPopup();

	// activate the calendar date dropdowns
	$('input[name=firstCalendarFilterDate]').datepicker({ showMonthAfterYear: true, changeMonth: true, changeYear: true, yearRange: '2010:2020' });
	$('input[name=lastCalendarFilterDate]').datepicker({ showMonthAfterYear: true, changeMonth: true, changeYear: true, yearRange: '2010:2020' });
	
	// apply UI button look to all submit buttons
	$('input[name=changeCalendarDates]').button();  // subsumed by $('input[type=submit]').button();
	$('input[name=cal-add-event]').button();        // subsumed by $('input[type=submit]').button();
	$('input[type=submit]').button();


	// STUDENT AREA
	
	ActivateIPad();
	// Startup the student iPad tabs...
	$('#iPadTabs').tabs({ fx: { opacity: 'toggle' } });
	// ...and the sub-tabs within one of those tabs
	$('#subtab-container').tabs({ fx: { opacity: 'toggle' } });

	
	// Top bar on all logged-in screens
	ActivateUserBar();
	
	// Student notes
	$('#tab-container').remove("#studentNotes");
	
	
});
