/* My javascript file */

//Refresh target frame
function frameRefresh(target_frame) {
	parent.frames[target_frame].location.reload();
}

function changeColourBox(colour_input, box_to_change) {
	var colour_input = document.getElementById(colour_input);
	var box = document.getElementById(box_to_change);

	box.style.backgroundColor = colour_input.value;
}

function change_img(img_to_change, image_file) {
	var img = document.getElementById(img_to_change);
	img.src = image_file;
}

function changePhotoZoom(element_id, up, step) {
	changeWidth(element_id, up, step);
}

function includeSafariHack(root_dir, setup_css_path) {
	document.write('\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"' + root_dir + setup_css_path + '/safarihacks.css\"/>\n');
}

function includeOperaHack(root_dir, setup_css_path) {
	document.write('\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"' + root_dir + setup_css_path + '/operahacks.css\"/>\n');
}


// Adjust the width attribute of given element by step percentage
// of the current width.  Increases width if up is 'true', decreases
// otherwise.
function changeWidth(element_id, up, step) {
	var elem = document.getElementById(element_id);
	var width = parseInt(elem.width); 

	if (up == 'true')
		width += width * (parseInt(step) / 100); //percentage of current width
	else
		width -= width * (parseInt(step) / 100); //percentage of current width

	//This shouldn't happen, but just in case.
	if (width < 0)
		width = 0;

	elem.style.width = width+"px";
} 

function hideAllNavTargets(ignore) {
	if ('navCatherineWakim' != ignore) {
		var elem = document.getElementById('navCatherineWakim');
		elem.style.display = 'none';
	}
	
	if ('navNews' != ignore) {
		elem = document.getElementById('navNews');
		elem.style.display = 'none';
	}

	if ('navAbout' != ignore) {
		elem = document.getElementById('navAbout');
		elem.style.display = 'none';
	}

	if ('navShows' != ignore) {
		elem = document.getElementById('navShows');
		elem.style.display = 'none';
	}

	if ('navFriends' != ignore) {
		elem = document.getElementById('navFriends');
		elem.style.display = 'none';
	}

	if ('navContact' != ignore) {
		elem = document.getElementById('navContact');
		elem.style.display = 'none';
	}

	if ('navBlog' != ignore) {
		elem = document.getElementById('navBlog');
		elem.style.display = 'none';
	}

	if ('navCV' != ignore) {
		elem = document.getElementById('navCV');
		elem.style.display = 'none';
	}
}

// Toggle the visibility of an element
function toggleVisible(element_id) {
	var elem = document.getElementById(element_id);
	var visible = elem.style.display; 

	if (visible == 'block')
		visible = 'none';
	else
		visible = 'block';
	
	hideAllNavTargets(element_id);
		
	elem.style.display = visible;
} 

function strPad( string, length, padchar) {
	for (n = string.toString().length; n < length; n++) {
		string = padchar + string;
	}
	return string;
}

var oldStartRepTime = -1;
var oldEndRepTime = -1;
var oldWeek = -1;
var oldDayNum = -1;
var oldStudioNum = -1;
var oldPerson = "";
var oldAction = "";

function showReptimeInfo(week, day, studio, starttime, endtime, person, action, daynum, studionum, startreptime, endreptime, infobox_text, logged_in, studiovar, can_take) {
	var infobox = document.getElementById('RepInfo');
	var formbox = document.getElementById('RepForm');	
	var temp_id;
	var temp_elem;
	var temp_html = "";
	var oldTime = 0;

	makeVisible('RepInfo');
	makeInvisible('RepForm');
	
	//First clear old div backgrounds that were highlighted last time
	if (-1 != oldStartRepTime) {
		for (oldTime = oldStartRepTime; oldTime < oldEndRepTime; oldTime = oldTime + 15) {
			temp_id = strPad(oldWeek, 2, "0") + oldDayNum + oldStudioNum + strPad(oldTime, 4, "0") + oldPerson;
			temp_elem = document.getElementById(temp_id);

			switch (oldAction) {
				case "free":
					temp_elem.style.background = "darkblue";			
					break;

				case "book":
					temp_elem.style.background = "#52c33f";			
					break;
	
				case "inst_taken":
					temp_elem.style.background = "#7c3932";
					break;
			
				default:
					temp_elem.style.background = "#8f261c";			
					break;	
			}//switch
		}//for 
	
		formbox.innerHTML = "";	
	}


	infobox.innerHTML = infobox_text + "\n";
	
	if ("true" == logged_in) {
		if ("true" != can_take) {
			switch (action) {
				case "free":
					temp_html = "<div class=\"rep_info_action\"><a onClick=\"createFreeTimeForm";
					temp_html += "(\'" + week + "\', \'" + day + "\', \'" + studio + "\', \'" + starttime;
					temp_html += "\', \'" + endtime + "\', \'" + person + "\', \'" + daynum + "\', \'" + studionum
					temp_html += "\', \'" + startreptime + "\', \'" + endreptime + "\', \'" + studiovar + "\', \'" + can_take + "\'" + ")";
					temp_html += "\">-> Free This Time <-\</a></div>";

//					if (-1 != week) {
						temp_html += "<div class=\"rep_info_action\"><a onClick=\"createGiveTimeForm";
						temp_html += "(\'" + week + "\', \'" + day + "\', \'" + studio + "\', \'" + starttime;
						temp_html += "\', \'" + endtime + "\', \'" + person + "\', \'" + daynum + "\', \'" + studionum
						temp_html += "\', \'" + startreptime + "\', \'" + endreptime + "\', \'" + studiovar + "\', \'" + can_take + "\'" + ")"; 
						temp_html += "\">-> Give This Time Away <-\</a></div>";
//					}
					
					infobox.innerHTML += temp_html;
					break;

				case "book":						
					temp_html += "<div class=\"rep_info_action\"><a onClick=\"createBookTimeForm";
					temp_html += "(\'" + week + "\', \'" + day + "\', \'" + studio + "\', \'" + starttime;
					temp_html += "\', \'" + endtime + "\', \'" + person + "\', \'" + daynum + "\', \'" + studionum;
					temp_html += "\', \'" + startreptime + "\', \'" + endreptime + "\', \'" + studiovar + "\', \'" + can_take;
					temp_html += "\'" + ")" + "\">-> Book This Time <-\</a></div>";

					infobox.innerHTML += temp_html;
					break;

			} //switch action
		} else { //Else we can take time, are an admin

			if ("book" == action) { //If the time is free we can book it or assign it to someone
					infobox.innerHTML += "<div class=\"rep_info_action\"><a onClick=\"createBookTimeForm" + "(\'" + week + "\', \'" + day + "\', \'" + studio + "\', \'" + starttime + "\', \'" + endtime + "\', \'" + person + "\', \'" + daynum + "\', \'" + studionum + "\', \'" + startreptime + "\', \'" + endreptime + "\', \'" + studiovar + "\', \'" + can_take + "\'" + ")" + "\">-> Book This Time <-\</a></div>";

					temp_html += "<div class=\"rep_info_action\"><a onClick=\"createGiveTimeForm";
					temp_html += "(\'" + week + "\', \'" + day + "\', \'" + studio + "\', \'" + starttime;
					temp_html += "\', \'" + endtime + "\', \'" + person + "\', \'" + daynum + "\', \'" + studionum
					temp_html += "\', \'" + startreptime + "\', \'" + endreptime + "\', \'" + studiovar + "\', \'" + can_take + "\'" + ")"; 
					temp_html += "\">-> Give This Time Away <-\</a></div>";

					infobox.innerHTML += temp_html;
			} else { //else the time is not free, ie. booked by someone.
					temp_html = "<div class=\"rep_info_action\"><a onClick=\"createFreeTimeForm";
					temp_html += "(\'" + week + "\', \'" + day + "\', \'" + studio + "\', \'" + starttime;
					temp_html += "\', \'" + endtime + "\', \'" + person + "\', \'" + daynum + "\', \'" + studionum
					temp_html += "\', \'" + startreptime + "\', \'" + endreptime + "\', \'" + studiovar + "\', \'" + can_take + "\'" + ")";
					temp_html += "\">-> Free This Time <-\</a></div>";

					temp_html += "<div class=\"rep_info_action\"><a onClick=\"createGiveTimeForm";
					temp_html += "(\'" + week + "\', \'" + day + "\', \'" + studio + "\', \'" + starttime;
					temp_html += "\', \'" + endtime + "\', \'" + person + "\', \'" + daynum + "\', \'" + studionum
					temp_html += "\', \'" + startreptime + "\', \'" + endreptime + "\', \'" + studiovar + "\', \'" + can_take + "\'" + ")"; 
					temp_html += "\">-> Give This Time Away <-\</a></div>";

					temp_html += "<div class=\"rep_info_action\"><a onClick=\"createTakeTimeForm";
					temp_html += "(\'" + week + "\', \'" + day + "\', \'" + studio + "\', \'" + starttime;
					temp_html += "\', \'" + endtime + "\', \'" + person + "\', \'" + daynum + "\', \'" + studionum
					temp_html += "\', \'" + startreptime + "\', \'" + endreptime + "\', \'" + studiovar + "\'" + ")";
					temp_html += "\">-> Take This Time <-\</a></div>";

					infobox.innerHTML += temp_html;
			} //if time is free
		}//if can_take
	}//if logged_in
	
	startreptime = parseInt(startreptime);
	endreptime = parseInt(endreptime);
	
	for (time = startreptime; time < endreptime; time = time + 15) {
		temp_id = strPad(week, 2, "0") + daynum + studionum + strPad(time, 4, "0") + person;
		temp_elem = document.getElementById(temp_id);

		switch (action) {
			case "free":
				temp_elem.style.background = "blue";			
				break;

			case "book":
				temp_elem.style.background = "#389129";			
				break;
			
			case "inst_taken":
				temp_elem.style.background = "#d43a2a";
				break;
	
			default:
				temp_elem.style.background = "#d43a2a";			
				break;	
		}//switch action
	}//for reptimes

	//Save params in global variables so we can clear div backgrounds next time
	oldStartRepTime = startreptime;
	oldEndRepTime = endreptime;
	oldWeek = week;
	oldDayNum = daynum;
	oldStudioNum = studionum;
	oldPerson = person;
	oldAction = action;
}

function reptimeToTime(reptime) {
	var start_time = 7;
	hours = parseInt((reptime / 60) + start_time);
	minutes = reptime % 60;
	
	return strPad(hours, 2, '0') + "h" + strPad(minutes, 2, '0');
}



function createFreeTimeForm(week, day, studio, starttime, endtime, person, daynum, studionum, startreptime, endreptime, studiovar, can_take) {
	var infobox = document.getElementById('RepForm');
	var formHTML;

	formHTML = "<form class=\"repform\"  action=\"process.php\" method=\"post\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_week\" value=\"" + week + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_daynum\" value=\"" + daynum + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studionum\" value=\"" + studionum + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_person\" value=\"" + person + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studiovar\" value=\"" + studiovar + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_action\" value=\"free\">\n";

	formHTML += "\t<label for=\"form_starttime\">Start time: </label>\n";
	formHTML += "\t<select id=\"form_starttime\" name=\"form_starttime\">\n";
	
	startreptime = parseInt(startreptime);
	endreptime = parseInt(endreptime);
	for (time = startreptime; time <= endreptime; time = time + 15) {
		formHTML += "\t\t<option value=\"" + time + "\">";
		formHTML += reptimeToTime(time) + "</option>\n";
	}
	
	formHTML += "\t</select><br>\n\n";
	formHTML += "\t<label for=\"form_endtime\">End time: </label>\n";
	formHTML += "\t<select id=\"form_endtime\" name=\"form_endtime\">\n";

	for (time = startreptime + 15; time <= endreptime; time = time + 15) {
		formHTML += "\t\t<option value=\"" + time + "\"";
		if (time == endreptime)
			formHTML += " selected";
		formHTML += ">";
		formHTML += reptimeToTime(time) + "</option>\n";
	}

	formHTML += "\t</select><br>\n";

	if ("true" == can_take) {
		formHTML += "\t<input type=\"checkbox\" name=\"form_allweeks\"> For all weeks?<br>\n";
	}

	formHTML += "\t<div class=\"repform_submit\"><input type=\"submit\" value=\"Free this Time\" onClick=\"return confirmSubmit('free')\"></div>\n";
	formHTML += "</form>\n";		

	infobox.innerHTML = formHTML;	
	makeVisible('RepForm');
}

function createGiveTimeForm(week, day, studio, starttime, endtime, person, daynum, studionum, startreptime, endreptime, studiovar, can_take) {
	var infobox = document.getElementById('RepForm');
	var formHTML;

	formHTML = "<form class=\"repform\"  action=\"process.php\" method=\"post\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_week\" value=\"" + week + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_daynum\" value=\"" + daynum + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studionum\" value=\"" + studionum + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_person\" value=\"" + person + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studiovar\" value=\"" + studiovar + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_action\" value=\"give\">\n";


	formHTML += "\t<label for=\"form_starttime\">Start time: </label>\n";
	formHTML += "\t<select id=\"form_starttime\" name=\"form_starttime\">\n";
	
	startreptime = parseInt(startreptime);
	endreptime = parseInt(endreptime);
	for (time = startreptime; time <= endreptime; time = time + 15) {
		formHTML += "\t\t<option value=\"" + time + "\">";
		formHTML += reptimeToTime(time) + "</option>\n";
	}
	formHTML += "\t</select><br>\n\n";

	formHTML += "\t<label for=\"form_endtime\">End time: </label>\n";
	formHTML += "\t<select id=\"form_endtime\" name=\"form_endtime\">\n";

	for (time = startreptime + 15; time <= endreptime; time = time + 15) {
		formHTML += "\t\t<option value=\"" + time + "\"";
		if (time == endreptime)
			formHTML += " selected";
		formHTML += ">";
		formHTML += reptimeToTime(time) + "</option>\n";
	}
	formHTML += "\t</select><br>\n";

	formHTML += "\t<label for=\"form_giveperson\">Give time to: </label>\n";
	formHTML += "\t<select id=\"form_giveperson\" name=\"form_giveperson\">\n";
		formHTML += "\t\t<option value=\"\">";
		formHTML += "Loading names...</option>\n";
	formHTML += "\t</select><br>\n\n";

	if ("true" == can_take) {
		formHTML += "\t<input type=\"checkbox\" name=\"form_allweeks\"> For all weeks?<br>\n";
	}

	formHTML += "\t<div class=\"repform_submit\"><input type=\"submit\" value=\"Give Away This Time\" onClick=\"return confirmSubmit('give')\"></div>\n";
	formHTML += "</form>\n";		

	infobox.innerHTML = formHTML;	
	get_username_options_request("form_giveperson");
	makeVisible('RepForm');
}

function createTakeTimeForm(week, day, studio, starttime, endtime, person, daynum, studionum, startreptime, endreptime, studiovar) {
	var infobox = document.getElementById('RepForm');
	var formHTML;

	formHTML = "<form class=\"repform\"  action=\"process.php\" method=\"post\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_week\" value=\"" + week + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_daynum\" value=\"" + daynum + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studionum\" value=\"" + studionum + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_person\" value=\"" + person + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studiovar\" value=\"" + studiovar + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_action\" value=\"take\">\n";


	formHTML += "\t<label for=\"form_starttime\">Start time: </label>\n";
	formHTML += "\t<select id=\"form_starttime\" name=\"form_starttime\">\n";
	
	startreptime = parseInt(startreptime);
	endreptime = parseInt(endreptime);
	for (time = startreptime; time <= endreptime; time = time + 15) {
		formHTML += "\t\t<option value=\"" + time + "\">";
		formHTML += reptimeToTime(time) + "</option>\n";
	}
	formHTML += "\t</select><br>\n\n";

	formHTML += "\t<label for=\"form_endtime\">End time: </label>\n";
	formHTML += "\t<select id=\"form_endtime\" name=\"form_endtime\">\n";

	for (time = startreptime + 15; time <= endreptime; time = time + 15) {
		formHTML += "\t\t<option value=\"" + time + "\"";
		if (time == endreptime)
			formHTML += " selected";
		formHTML += ">";
		formHTML += reptimeToTime(time) + "</option>\n";
	}
	formHTML += "\t</select><br>\n";

	formHTML += "\t<input type=\"checkbox\" name=\"form_allweeks\"> For all weeks?<br>\n";

	formHTML += "\t<div class=\"repform_submit\"><input type=\"submit\" value=\"Take This Time\" onClick=\"return confirmSubmit('take')\"></div>\n";
	formHTML += "</form>\n";		

	infobox.innerHTML = formHTML;	
	get_username_options_request("form_giveperson");
	makeVisible('RepForm');
}



function createBookTimeForm(week, day, studio, starttime, endtime, person, daynum, studionum, startreptime, endreptime, studiovar, can_take) {
	var infobox = document.getElementById('RepForm');
	var formHTML;
	
	formHTML = "<form class=\"repform\"  action=\"process.php\" method=\"post\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_week\" value=\"" + week + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_daynum\" value=\"" + daynum + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studionum\" value=\"" + studionum + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_person\" value=\"" + person + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studiovar\" value=\"" + studiovar + "\">\n";

	if (-1 == week)
		formHTML += "\t<input type=\"hidden\" name=\"form_action\" value=\"book_new_semester\">\n";
	else
		formHTML += "\t<input type=\"hidden\" name=\"form_action\" value=\"book\">\n";

	formHTML += "\t<label for=\"form_starttime\">Start time: </label>\n";
	formHTML += "\t<select id=\"form_starttime\" name=\"form_starttime\">\n";
	
	startreptime = parseInt(startreptime);
	endreptime = parseInt(endreptime);
	for (time = startreptime; time <= endreptime; time = time + 15) {
		formHTML += "\t\t<option value=\"" + time + "\">";
		formHTML += reptimeToTime(time) + "</option>\n";
	}
	
	formHTML += "\t</select><br>\n\n";
	formHTML += "\t<label for=\"form_endtime\">End time: </label>\n";
	formHTML += "\t<select id=\"form_endtime\" name=\"form_endtime\">\n";
	
	var selected = 0;
	for (time = startreptime + 15; time <= endreptime; time = time + 15) {
		formHTML += "\t\t<option value=\"" + time + "\"";
		if (0 == selected)
			if ((time == endreptime) || (time == (startreptime + 90)))	{ //default to 90 minute booking
				formHTML += " selected";
				selected = 1;
			}
		formHTML +=	">";
		formHTML += reptimeToTime(time) + "</option>\n";
	}
	formHTML += "\t</select><br>\n";

	if ("true" == can_take) {
		formHTML += "\t<input type=\"checkbox\" name=\"form_allweeks\"> For all weeks?<br>\n";
	}

	formHTML += "\t<div class=\"repform_submit\"><input type=\"submit\" value=\"Book this Time\" onClick=\"return confirmSubmit('book')\"></div>\n";
	formHTML += "</form>\n";	
	
	infobox.innerHTML = formHTML;	
	makeVisible('RepForm');
}

function createChangePassForm(week, studiovar) {
	var infobox = document.getElementById('RepForm');
	var formHTML;

	formHTML = "<form class=\"repform\"  action=\"process.php\" method=\"post\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_action\" value=\"changepass\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_week\" value=\"" + week + "\">\n";
	formHTML += "\t<input type=\"hidden\" name=\"form_studiovar\" value=\"" + studiovar + "\">\n";

	formHTML += "\t<label for=\"form_newpassone\">New Password: </label>\n";
	formHTML += "\t<input type=\"password\" id=\"form_newpassone\" size=\"8\" name=\"form_newpassone\">\n";

	formHTML += "\t<label for=\"form_newpasstwo\">Retype: </label>\n";
	formHTML += "\t<input type=\"password\" id=\"form_newpasstwo\" size=\"8\" name=\"form_newpasstwo\">\n";
	

	formHTML += "\t<div class=\"repform_submit\"><input type=\"submit\" value=\"Change Password\"\"></div>\n";
	formHTML += "</form>\n";		

	infobox.innerHTML = formHTML;	
	makeVisible('RepForm');
}



function toggleVisibility(id) {
	var opposite_visibility = (document.getElementById(nr).style.visibility == 'hidden') ? 'visible' : 'hidden';
	document.getElementById(id).style.visibility = opposite_visibility;
}

function makeVisible(id) {
	document.getElementById(id).style.visibility = 'visible';
}

function makeInvisible(id) {
	document.getElementById(id).style.visibility = 'hidden';
}

function confirmSubmit(action) {
	switch (action) {
		case "free":
			return confirm("Are you sure you want to free this block of time?");		
			break;

		case "book":
			return confirm("Are you sure you want to book this block of time?");		
			break;

		case "give":
			return confirm("Are you you want to give away this block of time?");		
			break;	

		case "take":
			return confirm("Are you you want to take away this block of time?");		
			break;	

		default:
			return confirm("Are you sure?");		
			break;	
	}//switch action
}