function toggleVisibility( folderID )
{
	var imgID = "img" + folderID;
	
	if ( document.getElementById( folderID).style.display == "none" ) 
	{
		document.getElementById( imgID ).setAttribute("class", "folderMinus");
		document.getElementById( imgID ).setAttribute("className", "folderMinus"); 
		document.getElementById( folderID ).style.display = ""
	}
	else 
	{
		document.getElementById( imgID ).setAttribute("class", "folderPlus");
		document.getElementById( imgID ).setAttribute("className", "folderPlus"); 
		document.getElementById( folderID ).style.display = "none"
	}
}

function toggleDescription()
{
	if ( document.getElementById("shortDescription").style.display == "none" ) 
	{
		document.getElementById( "longDescription" ).style.display = "none"
		document.getElementById( "shortDescription" ).style.display = ""		
	}
	else 
	{
		document.getElementById( "longDescription" ).style.display = ""
		document.getElementById( "shortDescription" ).style.display = "none";
	}
}

function toggleAnnouncementHistory()
{
	if ( document.getElementById( "announcementsHistory" ).style.display == "none" ) 
	{	
		document.getElementById( "announcementsHistory" ).style.display = "";
		document.getElementById( "showAnnouncementsLink" ).style.display = "none";
	}
	else 
	{
		document.getElementById( "announcementsHistory" ).style.display = "none";
		document.getElementById( "showAnnouncementsLink" ).style.display = "";
	}
}

var assignmentSelected = false;
var ffAssignmentSelected = false;

function optionChecked( shwPsswrd )
{
	assignmentSelected = true;
	if ( shwPsswrd == 1 ) document.getElementById('passwordBlock').style.display = "block";
	else document.getElementById('passwordBlock').style.display = "none";
}

//show hide password box
function showPassword()
{
	document.getElementById('passwordBlock').style.display = "";
}

function hidePassword()
{
	document.getElementById('passwordBlock').style.display = "none";
}

function ffOptionChecked( enableID, shwPsswrd )
{
	ffAssignmentSelected = true;
	if ( shwPsswrd == 1 ) document.getElementById('ffPasswordBlock').style.display = "";
	else document.getElementById('ffPasswordBlock').style.display = "none";
	
	//disable all selectors
	for ( i = 0; i < document.getElementById('ffNumAssignments').value; i++ )
	{
		document.getElementById("ps"+i).disabled = true;
		document.getElementById("ps"+i).style.display = "none";
	}
	
	//show correct part selector
	document.getElementById("ps"+enableID).disabled = false;
	document.getElementById("ps"+enableID).style.display = "";	
	
	//disable all upload IDs
	for ( i = 0; i < document.getElementById('ffNumAssignments').value; i++ )
	{
		document.getElementById("uid"+i).disabled = true;	
		document.getElementById("aF"+i).disabled = true;		
		document.getElementById("aT"+i).disabled = true;		
	}
	
	//enable correct upload id
	document.getElementById("uid"+enableID).disabled = false;
	document.getElementById("aF"+enableID).disabled = false;
	document.getElementById("aT"+enableID).disabled = false;
}

function validateUpload()
{
	var fileRegex = /[a-zA-Z0-9_&#.]+\.[a-zA-Z]+/;
	
	//check data
	if ( !assignmentSelected)
	{
		alert("Please Select an assignment before uploading");
		return false;
	}
	else if ( document.getElementById('file').value == "")
	{
		alert("Please Select a file to Upload!");
		return false;
	}
	else if ( !document.getElementById('plagiarism').checked )
	{
		alert("Please check the plagiarism agreement box if you agree to the terms");
		return false;
	}
	else if ( fileRegex.test( document.getElementById('file').value ) == false )
	{
		alert("Invalid character in the filename or the file you selected doesn't have an extension!");
		return false;
	}
	else document.getElementById('uploadForm').submit();	
}

function validateFFUpload()
{
	var isfileValid = /[a-zA-Z0-9_&#.]+\.(zip|tgz|tar|tar.gz)$/;
		
	//check data
	if ( !ffAssignmentSelected)
	{
		alert("Please Select an assignment before uploading");
		return false;
	}
	else if ( document.getElementById('ffFile').value == "")
	{
		alert("Please Select a file to Upload!");
		return false;
	}
	else if ( !document.getElementById('ffPlagiarism').checked )
	{
		alert("Please check the plagiarism agreement box if you agree to the terms");
		return false;
	}
	else if ( isfileValid.test( document.getElementById('ffFile').value ) == false )
	{
		alert("Invalid character in the filename or the file you selected doesn't have a valid extension!\nThe only valid extensions for a fitchfork submission are zip, tar, tgz, tar.gz.");
		return false;
	}
	else document.getElementById('ffUploadForm').submit();	
}

function validateForm()
{
	document.getElementById('code').disabled = false;
	
	var fields = new Array(3);
	fields[0] = new Array( "code", "1" );
	fields[1] = new Array( "name", "1" );
	fields[2] = new Array( "description", "1" );
	
	var validData = true;
	
	for ( var i = 0; i < 3; i++ )
	{
		//reset field highlighters
		if ( document.getElementById('f'+i) != null ) document.getElementById('f'+i).className = "";
		
		//check for empty fields
		if ( fields[i][1] == 1 && document.getElementById(fields[i][0]).value == "" )
		{		
			document.getElementById("f"+i).className = "error";
			validData = false;	
		}
	}
	
	var regE = /[a-zA-Z]{3}\d{3}(?:[a-zA-Z]{2})?$/;
	
	var validCode = true;
	
	if (!regE.test(document.getElementById("code").value))
	{
		validCode = false;
		validData = false;
		document.getElementById("f0").className = "error";
	}
	
	if (!validData)
	{
		if (!validCode)
		{
			alert("Invalid course code");	
		}
		else
			alert("Please complete all required fields before submitting the form. (Highlighted in red)");
	}
	else
	{
		document.getElementById("moduleForm").submit();
	}
}

