// Copyright Lightspeed Systems - www.lightspeedsystems.com
// Written by: Aaron Benson 2/2007
//
//

////////////////////////////////////////////////////////////
//
// Search Functions - Allows user to search for websites or users
//
////////////////////////////
function searchMenu(){
//	elem = document.getElementById('SearchOptions');
//	
//	if(elem.style.display == 'none'){
//		elem.style.display = 'block';
//		}else{
//		elem.style.display = 'none';
//	}
}
function clearSearch(e){
	elem = document.getElementById(e);
	//elem.value = "";
	
	if(elem.value == "Search for a website..."){
		elem.value = "";
	}
	else if(elem.value == ""){
		elem.value = "Search for a website...";
	}
}

////////////////////////////////////////////////////////////
//
// Check username availability
//
////////////////////////////

var req;

function loadXMLDoc(url) {
	req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = processReqChange;
		req.open("GET", url, false);
		req.send("");
	}
}

function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
        } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}

////////////////////////////////////////////////////////////
//
// Custom Category Functions - Allows user to select custom categories on setings page
//
////////////////////////////
function OpenCustomCategories()
{
    var url = "CustomCategories.aspx";

    if (name != null){
        var oWidth = 610;
        var oHeight = 750;
        window.open(url,'winName','width=' + oWidth + ',height=' + oHeight + ',left=' + ((screen.width - oWidth) / 2) + ',top=' + ((screen.height - oHeight) / 2 - 40) + ',menubar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes');
    }
}

function OpenCustomCategories(userguid)
{
    var url = "CustomCategories.aspx?UserGUID=" + userguid;

    if (name != null){
        var oWidth = 610;
        var oHeight = 750;
        window.open(url,'winName','width=' + oWidth + ',height=' + oHeight + ',left=' + ((screen.width - oWidth) / 2) + ',top=' + ((screen.height - oHeight) / 2 - 40) + ',menubar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes');
    }
}

function DeselectEntireGroup(groupname,x)
{
    groupCount = x;
    
    groupCount = x;
    
    for(i=0; i<=groupCount; i++){
        document.getElementById('cb' + groupname + '_' + i).checked = false;
    }
}

function SelectEntireGroup(groupname,x)
{
    groupCount = x;
    
    for(i=0; i<=groupCount; i++){
        document.getElementById('cb' + groupname + '_' + i).checked = true;
    }
}

////////////////////////////////////////////////////////////
//
// Show/Hide Functions 
//
////////////////////////////
function ToggleMyView(id)
{
    myElement = document.getElementById(id).style.display;
    
    if(myElement == "block"){
        document.getElementById(id).style.display = "none";
    }
    else
    {
        document.getElementById(id).style.display = "block";
    }
}

////////////////////////////////////////////////////////////
//
// School District Select on Registration Page
//
////////////////////////////
function changeSchoolDistrict() {
    var otherDistrict = document.getElementById('divOtherSchoolDistrict');
    var districts = document.getElementById('ctl00_ContentPlaceHolder1_ddlSchoolDistrict');
    var selectedDistrict = districts.options[districts.selectedIndex].value;
    //alert("district = " + selectedDistrict);
    if(selectedDistrict == "Other") {
        otherDistrict.style.display = "block";
    }
    else {
        otherDistrict.style.display = "none";
    }
}

////////////////////////////////////////////////////////////
//
// Mouseovers for Website Override Table
//
////////////////////////////

/*window.onload = function() {
    var tableRows = document.getElementsByTagName("tr");

    for(i=0; i<tableRows.length; i++) {
        if(tableRows[i].className == "overrideRow" || tableRows[i].className == "overrideRow alt") {
            // setAttribute doesn't work for event handlers in IE
            //tableRows[i].setAttribute("onmouseover","this.style.backgroundColor='#ffffcc'");
            //tableRows[i].setAttribute("onmouseout","this.style.backgroundColor='#ffffff'");
            tableRows[i].onmouseover = overrideRowMouseOver;
        }
        if(tableRows[i].className == "overrideRow") {
            tableRows[i].onmouseout = overrideRowMouseOut;
        }
        else if(tableRows[i].className == "overrideRow alt") {
            tableRows[i].onmouseout = overrideRowMouseOutAlt;
        }
    }
}

function overrideRowMouseOver() {
    this.className='mouseOver';
}

function overrideRowMouseOut() {
    this.className='overrideRow';
}

function overrideRowMouseOutAlt() {
    this.className='overrideRow alt';
}*/

////////////////////////////////////////////////////////////
//
// Functions for Settings page
//
////////////////////////////
function switchSettings(link,div) {
		
	// Make the link the user clicked on the "selected" link
	var listItems = document.getElementsByTagName("li");

	for(i=0; i<listItems.length; i++) {
		if(listItems[i].className == "selected") {
			listItems[i].className = "";
		}
	}

	document.getElementById(link).className = "selected";

	// Display the division for the setting the user clicked on
	var divs = document.getElementsByTagName("div");

	for(i=0; i<divs.length; i++) {
		if(divs[i].className == "settingsDiv" || divs[i].className == "settingsDiv first") {
			divs[i].style.display = "none";
		}
	}

	document.getElementById("ctl00_ContentPlaceHolder1_" + div).style.display = "block";
	
	// User setting title
	var userSettingTitle = document.getElementById("settingsHeader");
	var userSettingTitleText = document.getElementById("userSettingTitleText");
	if(link == "navExceptions") {
		userSettingTitleText.innerHTML = "Filtering Exceptions";
		userSettingTitle.style.display = "block";
	}
	else if(link == "navProtection") {
		userSettingTitleText.innerHTML = "Protection Level";
		userSettingTitle.style.display = "block";
	}
	else if(link == "navEmail") {
		userSettingTitleText.innerHTML = "Email Report";
		userSettingTitle.style.display = "block";
	}
	else if(link == "navBrowser") {
		userSettingTitleText.innerHTML = "Browser Interface";
		userSettingTitle.style.display = "block";
	}
	else if(link == "" || link == "navAccount" || link == "navReporting" || link == "navUsers" || link == "navNotifications" || link == "navPassword" || link == "navComputers" || link == "navPayment") {
		userSettingTitle.style.display = "none";
	}
	userSettingTitleText.innerHTML += " for";




	if (div == "pnlSettingsAccount") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerAccount);
	}
	if (div == "pnlSettingsExceptions") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerExceptions);
	}
	else if (div == "pnlSettingsProtection") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerProtection);
	}
	else if (div == "pnlSettingsEmail") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerEmail);
	}
	else if (div == "pnlSettingsBrowser") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerBrowser);
	}
	else if (div == "pnlSettingsReporting") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerReporting);
	}
	else if (div == "pnlSettingsUsers") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerUsers);
	}
	else if (div == "pnlSettingsNotifications") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerNotifications);
	}
	else if (div == "pnlSettingsPassword") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerPassword);
	}
	else if (div == "pnlSettingsComputers") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerComputers);
	}
	else if (div == "pnlSettingsPayment") {
		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerPayment);
	}

}

function EndRequestHandlerAccount(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navAccount', 'pnlSettingsAccount');
	}
}

function EndRequestHandlerExceptions(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navExceptions', 'pnlSettingsExceptions');
	}
}

function EndRequestHandlerProtection(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navProtection', 'pnlSettingsProtection');
	}
}

function EndRequestHandlerEmail(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navEmail', 'pnlSettingsEmail');
	}
}

function EndRequestHandlerBrowser(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navBrowser', 'pnlSettingsBrowser');
	}
}

function EndRequestHandlerReporting(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navReporting', 'pnlSettingsReporting');
	}
}

function EndRequestHandlerUsers(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navUsers', 'pnlSettingsUsers');
	}
}

function EndRequestHandlerNotifications(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navNotifications', 'pnlSettingsNotifications');
	}
}

function EndRequestHandlerPassword(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navPassword', 'pnlSettingsPassword');
	}
}

function EndRequestHandlerComputers(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navComputers', 'pnlSettingsComputers');
	}
}

function EndRequestHandlerPayment(sender, args) {
	if (args.get_error() == undefined) {
	   switchSettings('navPayment', 'pnlSettingsPayment');
	}
}

function hideConfirmation() {
	// Hide visible confirmation label when clicking on a tab
	var spans = document.getElementsByTagName("span");

	for(i=0; i<spans.length; i++) {
		if(spans[i].className == "confirmation open") {
			spans[i].className = "confirmation";
		}
	}
}

////////////////////////////////////////////////////////////
//
// Other User Accounts on Registration Page
//
////////////////////////////

function addUser() {
    
    var userHolder = document.getElementById('otherUserAccounts');
    
    // Increment the number of users
    var userNumField = document.getElementById('otherUsersNum');
    var userNum = (parseInt(userNumField.value) - 1) + 2;
    userNumField.value = userNum;
    
    // Increment the number of divisions
    var userDivField = document.getElementById('otherUserDivs');
    var divNum = (parseInt(userDivField.value) - 1) + 2;
    userDivField.value = divNum;
    
    // Create a new division
    var divId = "div" + divNum;
    var newDiv = document.createElement('div');
    newDiv.setAttribute("id",divId);
    newDiv.setAttribute("class","otherUser");
    newDiv.setAttribute("className","otherUser"); // For IE
    
    // Add text boxes and buttons to new division
    var newDivContent = "";
    newDivContent += "\n\n<h2>User Account</h2>\n";
    newDivContent += "<div id=\"" + divId + "Form\">\n";
    newDivContent += "<p><label for=\"tbOtherUserFirstName" + divNum + "\">First Name:</label><input type=\"text\" id=\"tbOtherUserFirstName" + divNum + "\" /> <span id=\"messageOtherUserFirstName" + divNum + "\"></span></p>\n";
    newDivContent += "<p><label for=\"tbOtherUserLastName" + divNum + "\">Last Name:</label><input type=\"text\" id=\"tbOtherUserLastName" + divNum + "\" /> <span id=\"messageOtherUserLastName" + divNum + "\"></span></p>\n";
    newDivContent += "<p><label for=\"tbOtherUserUsername" + divNum + "\">Username: (12 character maximum)</label><input type=\"text\" id=\"tbOtherUserUsername" + divNum + "\" maxlength=\"12\" /> <span id=\"messageOtherUserUsername" + divNum + "\"></span></p>\n";
    newDivContent += "<p><label for=\"tbOtherUserPassword" + divNum + "\">Password: (12 character maximum)</label><input type=\"password\" id=\"tbOtherUserPassword" + divNum + "\" maxlength=\"12\" /> <span id=\"messageOtherUserPassword" + divNum + "\"></span></p>\n";
    newDivContent += "<p><label for=\"tbOtherUserPasswordVerify" + divNum + "\">Verify Password:</label><input type=\"password\" id=\"tbOtherUserPasswordVerify" + divNum + "\" maxlength=\"12\" /> <span id=\"messageOtherUserPasswordVerify" + divNum + "\"></span></p>\n";
    
    newDivContent += "<form name=\"protectionLevelForm" + divNum + "\" id=\"protectionLevelForm" + divNum + "\"><p>Select Protection Level: <a href=\"#\" onclick=\"toggleLevels('show'," + divNum + "); return false;\">What are protection levels?</a></p>\n";
    newDivContent += "<ul class=\"newUserProtectionLevel\">\n";
    newDivContent += "<li><input type=\"radio\" name=\"rbOtherUserProtectionLevel\" value=\"Lightspeed Default\" checked id=\"rbProtection" + divNum + "_1\" /> <label for=\"rbProtection" + divNum + "_1\">Lightspeed Default</label>\n";
    newDivContent += "<li><input type=\"radio\" name=\"rbOtherUserProtectionLevel\" value=\"Elementary and Jr. High/Middle School\" id=\"rbProtection" + divNum + "_2\" /> <label for=\"rbProtection" + divNum + "_2\">Elementary and Jr. High/Middle School</label>\n";
    newDivContent += "<li><input type=\"radio\" name=\"rbOtherUserProtectionLevel\" value=\"High School\" id=\"rbProtection" + divNum + "_3\" /> <label for=\"rbProtection" + divNum + "_3\">High School</label>\n";
    newDivContent += "<li><input type=\"radio\" name=\"rbOtherUserProtectionLevel\" value=\"Mature\" id=\"rbProtection" + divNum + "_4\" /> <label for=\"rbProtection" + divNum + "_4\">Mature</label>\n";
    newDivContent += "<li><input type=\"radio\" name=\"rbOtherUserProtectionLevel\" value=\"Security\" id=\"rbProtection" + divNum + "_5\" /> <label for=\"rbProtection" + divNum + "_5\">Security</label>\n";
    newDivContent += "</ul></form>\n";
    
    newDivContent += "<div class=\"protectionLevels\" id=\"protectionLevels" + divNum + "\"><p><strong>Lightspeed Default</strong><br />Allows most G- and PG-rated sites. Blocks instant messaging, web-based email, and peer-to-peer sites, alcohol, and all types of forums (i.e., unmoderated personal expression, blogs, social networking like Facebook and MySpace, newsgroups, personals).</p>\n";
    newDivContent += "<p><strong>Elementary and Jr. High/Middle School</strong><br />Allows all G-rated sites.</p>\n";
    newDivContent += "<p><strong>High School</strong><br />Allows all G- and PG-rated sites. PG-rated sites include alcohol, personal web pages, lifestyles and sex education, music, audio and video downloads.</p>\n";
    newDivContent += "<p><strong>Mature</strong><br />Allows all G-, PG-, and R-rated sites. R-rated sites include adult material, drugs, violence, gambling, un-moderated forums, social networking sites like MySpace, Facebook, Orkut, blogs, and dating.</p>\n";
    newDivContent += "<p><strong>Security</strong><br />Allows everything except known security risks.</p>\n";
    newDivContent += "<p class=\"closeLink\"><a href=\"#\" onclick=\"toggleLevels('hide'," + divNum + "); return false;\">Close</a></p></div>\n";
	
	newDivContent += "<p class=\"buttons\"><input type=\"button\" value=\"Add User\" id=\"" + divId + "AddButton\" onclick=\"setUserInfo(\'" + divId + "\'," + divNum + "); return false;\" />\n";
    newDivContent += "<input type=\"button\" value=\"Cancel\" id=\"" + divId + "CancelButton\" onclick=\"removeUser(\'" + divId + "\'," + divNum + "); return false;\" /></p>\n";
    newDivContent += "</div>\n";
    newDivContent += "<div id=\"" + divId + "Text\" style=\"display:none\"></div>\n\n";
    
    newDiv.innerHTML = newDivContent;
    userHolder.appendChild(newDiv);
    
    // Create hidden fields
    var userFirstNameId = "hiddenOtherUserFirstName"+divNum;
    var userFirstName = document.createElement('input');
    userFirstName.setAttribute('type','hidden');
    userFirstName.setAttribute('id',userFirstNameId);
    
    var userLastNameId = "hiddenOtherUserLastName"+divNum;
    var userLastName = document.createElement('input');
    userLastName.setAttribute('type','hidden');
    userLastName.setAttribute('id',userLastNameId);
    
    var userUsernameId = "hiddenOtherUserUsername"+divNum;
    var userUsername = document.createElement('input');
    userUsername.setAttribute('type','hidden');
    userUsername.setAttribute('id',userUsernameId);
    
    var userPasswordId = "hiddenOtherUserPassword"+divNum;
    var userPassword = document.createElement('input');
    userPassword.setAttribute('type','hidden');
    userPassword.setAttribute('id',userPasswordId);
    
    var userProtectionLevelID = "hiddenOtherUserProtectionLevel"+divNum;
    var userProtectionLevel = document.createElement('input');
    userProtectionLevel.setAttribute('type','hidden');
    userProtectionLevel.setAttribute('id',userProtectionLevelID);
    
    
    // Add the hidden fields to the new user division
    document.getElementById(divId).appendChild(userFirstName);
    document.getElementById(divId).appendChild(userLastName);
    document.getElementById(divId).appendChild(userUsername);
    document.getElementById(divId).appendChild(userPassword);
    document.getElementById(divId).appendChild(userProtectionLevel);
    
    // For each user added, add on to the value of 
    // the "removedDivIds" hidden field
    var removedDivIds = document.getElementById('removedDivIds');
    removedDivIds.value += " |";
    
    // Hide the original "Add User" link
    document.getElementById('addOtherUserLink').style.display = "none";
    
}

function setUserInfo(divId,num) {
    
    var divNum = document.getElementById('otherUserDivs').value;
    
    // Verify user info
    if(verifyUserInfo(divNum,num) == false) {
        return false;
    }
    
    // Get the values of the new user text boxes
    // and add them to the new user hidden fields
    document.getElementById('hiddenOtherUserFirstName'+num).value = document.getElementById('tbOtherUserFirstName'+num).value
    document.getElementById('hiddenOtherUserLastName'+num).value = document.getElementById('tbOtherUserLastName'+num).value
    document.getElementById('hiddenOtherUserUsername'+num).value = document.getElementById('tbOtherUserUsername'+num).value
    document.getElementById('hiddenOtherUserPassword'+num).value = document.getElementById('tbOtherUserPassword'+num).value
    
    var protectionLevel = document.forms["protectionLevelForm" + num].rbOtherUserProtectionLevel;
    for(i=0; i<protectionLevel.length; i++) {
		if(protectionLevel[i].checked) {
			document.getElementById('hiddenOtherUserProtectionLevel'+num).value = protectionLevel[i].value;
		}
    }
    
    // Determine which divisions have been removed
    var removedDivIds = document.getElementById('removedDivIds');
    divs = removedDivIds.value;
    if(divs != "") {
        divs = divs.substring(0,divs.length-1);
        divs = divs.split("|");
    }
    
    // Get the values of the new user hidden fields
    // and add them to the "otherUsersInfo" hidden field
    var userNum = document.getElementById('otherUsersNum').value;
    var usersInfo = document.getElementById('ctl00_ContentPlaceHolder1_otherUsersInfo');
    usersInfo.value = "";
    
    for(i=0; i<=divNum; i++) {
        // Skip divisions that have been removed
        if(divs[i] != "removed") {
            usersInfo.value += document.getElementById('hiddenOtherUserFirstName'+i).value + "|";
            usersInfo.value += document.getElementById('hiddenOtherUserLastName'+i).value + "|";
            usersInfo.value += document.getElementById('hiddenOtherUserUsername'+i).value + "|";
            usersInfo.value += document.getElementById('hiddenOtherUserPassword'+i).value + "|";
            usersInfo.value += document.getElementById('hiddenOtherUserProtectionLevel'+i).value + "|";
        }
    }
    
    // Hide the text boxes and just show the text box values and buttons
    document.getElementById(divId + "Form").style.display = "none";
    
    var textContent = "";
    textContent += "<p><strong>Name:</strong> " + document.getElementById('hiddenOtherUserFirstName'+num).value + " " + document.getElementById('hiddenOtherUserLastName'+num).value + "</p>\n";
    textContent += "<p><strong>Username:</strong> " + document.getElementById('hiddenOtherUserUsername'+num).value + "</p>\n";
    textContent += "<p><strong>Protection Level:</strong> " + document.getElementById('hiddenOtherUserProtectionLevel'+num).value + "</p>\n";
    textContent += "<p><a href=\"#\" class=\"remove\" onclick=\"removeUser(\'" + divId + "\'," + num + "); return false;\">Remove User</a>\n";
    textContent += "<a href=\"#\" class=\"edit\" onclick=\"editUser(\'" + divId + "\'); return false;\">Edit User</a>\n";
    
    var textDiv = document.getElementById(divId + "Text");
    textDiv.innerHTML = textContent;
    textDiv.style.display = "block";
    
    // Show the original "Add User" link
    document.getElementById('addOtherUserLink').style.display = "block";
    
}

function verifyUserInfo(divNum,num) {
    
    var error = false;
    
    // Verify the first name
    var firstName = document.getElementById('tbOtherUserFirstName' + num);
    var firstNameMessage = document.getElementById('messageOtherUserFirstName' + num);
    if(firstName.value == " " || firstName.value == "" || firstName.value == null) {
        firstNameMessage.innerHTML = "*Required";
        error = true;
    }
    else {
        firstNameMessage.innerHTML = "";
    }
    
    // Verify the last name
    var lastName = document.getElementById('tbOtherUserLastName' + num);
    var lastNameMessage = document.getElementById('messageOtherUserLastName' + num);
    if(lastName.value == " " || lastName.value == "" || lastName.value == null) {
        lastNameMessage.innerHTML = "*Required";
        error = true;
    }
    else {
        lastNameMessage.innerHTML = "";
    }
    
    // Verify the username
    var userName = document.getElementById('tbOtherUserUsername' + num);
    var userNameMessage = document.getElementById('messageOtherUserUsername' + num);
    if(userName.value == " " || userName.value == "" || userName.value == null) {
        userNameMessage.innerHTML = "*Required";
        error = true;
    }
    else {
        
        loadXMLDoc('Ajax/UsernameAvailable.aspx?username='+userName.value);
        if (req.responseText == "Taken") {
			userNameMessage.innerHTML = "*That username is already taken";
			error = true;
        }
        else if (req.responseText == "Available") {
			userNameMessage.innerHTML = "";
        }
        else {
			userNameMessage.innerHTML = "*We are unable to check availability of that username";
			error = true;
        }
        
        // Check for existing usernames already on the page
        var userNum = document.getElementById('otherUsersNum').value;
        var userInfo = document.getElementById('ctl00_ContentPlaceHolder1_otherUsersInfo').value;
        var masterUsername = document.getElementById('ctl00_ContentPlaceHolder1_tbUsername').value;
        
        // Get usernames already on the page
        if(userInfo != "") {
			userInfo = userInfo.substring(0,userInfo.length-1);
			userInfo = userInfo.split("|");
			var allUsernames = new Array;
			for(i=0; i<userNum; i++) {
				
				allUsernames[i] = userInfo[(i*5)+2];
				
				if(userName.value == allUsernames[i]) {
					var usernameTaken = true;
				}
				
			}
		}
        
        if(userName.value == masterUsername || usernameTaken == true) {
			userNameMessage.innerHTML = "*That username is already taken";
			error = true;
        }
        
    }
    
    // Verify the password
    var password = document.getElementById('tbOtherUserPassword' + num);
    var passwordMessage = document.getElementById('messageOtherUserPassword' + num);
    if(password.value == " " || password.value == "" || password.value == null) {
        passwordMessage.innerHTML = "*Required";
        error = true;
    }
    else {
        
        // Make sure both password fields match
        var passwordVerify = document.getElementById('tbOtherUserPasswordVerify' + num);
        var passwordVerifyMessage = document.getElementById('messageOtherUserPasswordVerify' + num);
        if(password.value != passwordVerify.value) {
			passwordVerifyMessage.innerHTML = "*Passwords do not match";
			error = true;
		}
		else {
			passwordVerifyMessage.innerHTML = "";
		}
		
		passwordMessage.innerHTML = "";
    }
    
    if(error) {
        return false;
    }
    else {
        return true;
    }
}

function editUser(divId) {
    var userForm = document.getElementById(divId + 'Form');
    var userText = document.getElementById(divId + 'Text');
    
    userText.style.display = "none";
    userForm.style.display = "block";
    
    var editButton = document.getElementById(divId + 'AddButton');
    var cancelButton = document.getElementById(divId + 'CancelButton');
    
    editButton.setAttribute("value","Save Edits");
    cancelButton.setAttribute("value","Cancel Edits");
    //cancelButton.setAttribute("onclick","cancelEdit(\'" + divId + "\')");
    cancelButton.onclick = function(){cancelEdit(divId)}; // For IE
}

function cancelEdit(divId) {
    var userForm = document.getElementById(divId + 'Form');
    var userText = document.getElementById(divId + 'Text');
    
    userForm.style.display = "none";
    userText.style.display = "block";
}

function removeUser(divId,divNum) {
    
    // Record the division that was removed
    var removedDivIds = document.getElementById('removedDivIds');
    divs = removedDivIds.value;
    divs = divs.substring(0,divs.length-1);
    divs = divs.split("|");
    divs[divNum] = "removed";
    
    // Set the value of the "removedDivIds" hidden field
    var totalDivs = document.getElementById('otherUserDivs').value;
    removedDivIds.value = "";
    for(i=0; i<=totalDivs; i++) {
        removedDivIds.value += divs[i] + "|";
    }
    
    // Remove the division
    var d = document.getElementById('otherUserAccounts');
    var oldDiv = document.getElementById(divId);
    d.removeChild(oldDiv);
    
    // Rebuild hidden field value
    var userNum = document.getElementById('otherUsersNum').value;
    
    var usersInfo = document.getElementById('ctl00_ContentPlaceHolder1_otherUsersInfo');
    usersInfo.value = "";
    
    for(i=0; i<=totalDivs; i++) {
        // Skip divisions that have been removed
        if(divs[i] != "removed") {
            usersInfo.value += document.getElementById('hiddenOtherUserFirstName'+i).value + "|";
            usersInfo.value += document.getElementById('hiddenOtherUserLastName'+i).value + "|";
            usersInfo.value += document.getElementById('hiddenOtherUserUsername'+i).value + "|";
            usersInfo.value += document.getElementById('hiddenOtherUserPassword'+i).value + "|";
            usersInfo.value += document.getElementById('hiddenOtherUserProtectionLevel'+i).value + "|";
        }
    }
    
    // Decrement the number of users
    document.getElementById('otherUsersNum').value = document.getElementById('otherUsersNum').value - 1;
    
    // Show the original "Add User" link
    document.getElementById('addOtherUserLink').style.display = "block";

}

// Show or hide the descriptions for the different protection levels
function toggleLevels(option,divNum) {
	var levels = document.getElementById('protectionLevels' + divNum);
	if(option == "show") {
		levels.style.display = "block";
	}
	else if(option == "hide") {
		levels.style.display = "none";
	}
}

// Add onsubmit to form (in Main.master) to validate Terms of Use checkbox
/*
window.onload = function() {
	
	// Get the name of the aspx page
	var page = window.location.href.split("/");
	var pageName = page[page.length - 1];
	
	// If the user is on the Registration page,
	// then add the onsubmit attribute to the form
	if(pageName == "Registration.aspx" || pageName == "registration.aspx") {
		var form = document.getElementById('aspnetForm');
		form.onsubmit = function(){return validateRegistrationForm()}; // For IE
	}
	
}
*/

function validateRegistrationForm() {

	// Define the checkbox and checkbox message span
	var checkbox = document.getElementById('ctl00_ContentPlaceHolder1_cbAgree');
	var checkboxMessage = document.getElementById('lblTermsRequired');
	
	// Define the master username textbox and message span
	var masterUsername = document.getElementById('ctl00_ContentPlaceHolder1_tbUsername').value;	
	var masterUsernameMessage = document.getElementById('ctl00_ContentPlaceHolder1_RequiredFieldValidator6');
	
	// Define the email address textbox and message span
	var email = document.getElementById('ctl00_ContentPlaceHolder1_tbEmail').value;	
	var emailMessage = document.getElementById('ctl00_ContentPlaceHolder1_RequiredFieldValidator3');
	
	
	
	// Check availability of email address
	loadXMLDoc('Ajax/UsernameAvailable.aspx?email='+email);
	if(req.responseText == "Taken") {
		emailMessage.innerHTML = "*That email address is already taken";
		emailMessage.style.visibility = "visible";
		return false;
	}
	else if(req.responseText == "Available") {
		emailMessage.innerHTML = "";
		emailMessage.style.visibility = "hidden";
	}
	
	
	// Check availability of master username
	loadXMLDoc('Ajax/UsernameAvailable.aspx?username='+masterUsername);
	if(req.responseText == "Taken") {
		masterUsernameMessage.innerHTML = "*That username is already taken";
		masterUsernameMessage.style.visibility = "visible";
		return false;
	}
	else if(req.responseText == "Available") {
		masterUsernameMessage.innerHTML = "";
		masterUsernameMessage.style.visibility = "hidden";
	}
	
	// Check for existing usernames already on the page
    var userNum = document.getElementById('otherUsersNum').value;
    var userInfo = document.getElementById('ctl00_ContentPlaceHolder1_otherUsersInfo').value;
    var masterUsername = document.getElementById('ctl00_ContentPlaceHolder1_tbUsername').value;
    
    // Get usernames already on the page
    if(userInfo != "") {
		userInfo = userInfo.substring(0,userInfo.length-1);
		userInfo = userInfo.split("|");
		
		var allUsernames = new Array;
		for(i=0; i<=userNum; i++) {
			
			allUsernames[i] = userInfo[(i*5)+2];
			
			if(masterUsername == allUsernames[i]) {
				var usernameTaken = true;
			}
			
		}
	}
    
    if(usernameTaken == true) {
		masterUsernameMessage.innerHTML = "*That username is already taken";
		masterUsernameMessage.style.visibility = "visible";
		return false;
    }
    else if(usernameTaken != true) {
		masterUsernameMessage.innerHTML = "";
		masterUsernameMessage.style.visibility = "hidden";
    }
	
	// If "Other" is selected from the School District drop down,
	// make sure the "Other" textbox has something in it
	var otherRequiredMessage = document.getElementById('lblOtherRequired');
	var otherDistrict = document.getElementById('ctl00_ContentPlaceHolder1_tbOtherSchoolDistrict');
    var districts = document.getElementById('ctl00_ContentPlaceHolder1_ddlSchoolDistrict');
    var selectedDistrict = districts.options[districts.selectedIndex].value;
    
    if(selectedDistrict == "Other") {
        if(otherDistrict.value == "") {
			otherRequiredMessage.innerHTML = "*Required";
			return false;
        }
        else {
			otherRequiredMessage.innerHTML = "";
        }
    }
	
	// Check if "terms of use" checkbox is checked
	if(!checkbox.checked) {
		checkboxMessage.innerHTML = "*Required";
		return false;
	}
	else {
		checkboxMessage.innerHTML = "";
	}
	

}

/* ------------------------------------------------ */
/* Administration                                   */
/* ------------------------------------------------ */
function switchAdminPanel(panel) {
	var divs = document.getElementsByTagName("div");
	for(i=0; i<divs.length; i++) {
		if(divs[i].className == "editSectionContainer open") {
			divs[i].className = "editSectionContainer";
		}
	}
	panel.parentNode.parentNode.className = "editSectionContainer open";
}