var _debug = false;
var _maxPeeps = 12;

function change_attendees( dropdown )
{
	var myindex  = dropdown.selectedIndex
	//var num = dropdown.options[myindex].value   <-this doesn't work in IE for some reason - index + 1 works well
	
	num = myindex + 1;
	
	debug_clear();
	debug_write( "Index: " + myindex );
	debug_write( "Num selected: " + num );
	
	for ( i = 1; i <= _maxPeeps; i++ )
	{
		
		if ( i <= num )
		{
			change_attendee_state( i, 1 );
		}
		else
		{
			change_attendee_state( i, 0 );
		}
	}
}

function change_attendee_state( num, state )
{
	debug_write( "Changing " + num + " to " + state );
	
	set_toggle_state( "attendee" + num + "_hdr", state );
	set_toggle_state( "attendee" + num + "_fname", state );
	set_toggle_state( "attendee" + num + "_lname", state );
	set_toggle_state( "attendee" + num + "_email", state );
	set_toggle_state( "attendee" + num + "_counselor", state );
	set_toggle_state( "attendee" + num + "_contact", state );
	set_toggle_state( "attendee" + num + "_sex", state );
	set_toggle_state( "attendee" + num + "_meal", state );
	set_toggle_state( "attendee" + num + "_major", state );
}

function set_toggle_state( szDivID, iState )
{
	debug_write( szDivID + " " + get_toggle_state( szDivID ) );
	
	if ( iState == get_toggle_state( szDivID ) )
	{
		return;
	}
	
	debug_write( "\tChanging " + szDivID );

	if ( document.layers )	   //NN4+
	{
	   document.layers[szDivID].display = iState ? "" : "none";
	}
	else if ( document.getElementById )	  //gecko(NN6) + IE 5+
	{
		var obj = document.getElementById(szDivID);
		obj.style.display = iState ? "" : "none";
	}
	else if ( document.all )	// IE 4
	{
		document.all[szDivID].style.display = iState ? "" : "none";
	}
}

function get_toggle_state( szDivID )
{
	if( document.layers )	   //NN4+
	{
	   return ( ( document.layers[szDivID].display != "none" ) ? 1 : 0 );
	}
	else if( document.getElementById )	  //gecko(NN6) + IE 5+
	{
		var obj = document.getElementById(szDivID);
		return ( ( obj.style.display  != "none" ) ? 1 : 0 );
	}
	else if( document.all )	// IE 4
	{
		return ( ( document.all[szDivID].style.display != "none" ) ? 1 : 0 );
	}
}


// No support for netscape 4 - function from http://www.quirksmode.org/js/layerwrite.html
function debug_write( text )
{
	if ( !_debug )
	{
		return;
	}
	
	if ( document.getElementById )
	{
		x = document.getElementById( "debug" );
		x.innerHTML = x.innerHTML + text + "<br>";
	}
	else if ( document.all )
	{
		x = document.all["debug"];
		x.innerHTML = x.innerHTML + text + "<br>";
	}
}

function debug_clear()
{
	if ( !_debug )
	{
		return;
	}
	
	if ( document.getElementById )
	{
		x = document.getElementById("debug");
		x.innerHTML = '';
	}
	else if ( document.all )
	{
		x = document.all["debug"];
		x.innerHTML = '';
	}
}


/*** Registration Verification Scripts ***/

/* Page 1 */

function onSubmitPage1()
{
	// Make sure we have a branch name!
	var szBranchName = document.forms.page1.branch_name.value;
	
	if ( szBranchName.length == 0 )
	{
		alert( "Please enter a branch name" );
		
		return false;
	}
	
	// Total number of attendees according to the dropdown (we should only check a certain number of the fields!)
	var iTotalAttendees = document.forms.page1.num_attendees.selectedIndex + 1;

	// Keeps track of the total number of counselors
	var iCounselor = 0;
	
	// Keeps track of the total number of main contacts
	var iContacts = 0;
	
	// Loop through and make the check!!
	for ( i = 1; i <= iTotalAttendees; i++ )
	{
		id_fname 		= getElement( "id_attendee" + i + "_first_name" );
		id_lname 		= getElement( "id_attendee" + i + "_last_name" );
		id_email 		= getElement( "id_attendee" + i + "_email" );
		id_counselor	= getElement( "id_attendee" + i + "_counselor" );
		id_contact		= getElement( "id_attendee" + i + "_contact" );
		id_sex			= getElement( "id_attendee" + i + "_sex" );
		id_meal			= getElement( "id_attendee" + i + "_meal" );
		id_major		= getElement( "id_attendee" + i + "_major" );
		
		// We have a counselor!
		if ( id_counselor.checked )
		{
			iCounselor++;
			
			// Email verification only for counselor
			if ( id_email.value.length == 0 )
			{
				alert( "Please enter an email address for attendee " + i );
				
				return false;
			}
			
			else if ( !isEmailValid( id_email.value ) )
			{
				alert( "Please verify you have entered a valid email address for attendee " + i );
				
				return false;
			}
		}
		
		if ( id_contact.checked )
		{
			iContacts++;
			
			// Email verification only for contact
			if ( id_email.value.length == 0 )
			{
				alert( "Please enter an email address for attendee " + i );
				
				return false;
			}
			
			else if ( !isEmailValid( id_email.value ) )
			{
				alert( "Please verify you have entered a valid email address for attendee " + i );
				
				return false;
			}
		}
		
		// Check for valid email if length > 0
		if ( id_email.value.length > 0 && !isEmailValid( id_email.value ) )
		{
			alert( "Please enter a valid email address for attendee " + i );
			
			return false;
		}
		
		// No first name entered!
		if ( id_fname.value.length == 0 )
		{
			alert( "Please enter a first name for attendee " + i );
			
			return false;
		}
		
		// No last name entered!!
		else if ( id_lname.value.length == 0 )
		{
			alert( "Please enter a last name for attendee " + i );
			
			return false;
		}
		
		// No sex entered!
		else if ( id_sex.selectedIndex == 0 )
		{
			alert( "Please select a sex for attendee " + i );
			
			return false;
		}
		
		// No meal entered!
		else if ( id_meal.selectedIndex == 0 )
		{
			alert( "Please select a meal for attendee " + i );
			
			return false;
		}
		
		// No major selected!
		else if ( id_major.selectedIndex == 0 )
		{
			alert( "Please select a major for attendee " + i );
			
			return false;
		}
	}
	
	if ( iCounselor == 0 && iContacts == 0 )
	{
		alert( "Please designate a main contact or a counselor" );
		
		return false;	
	}
	
	// Counselor Check
	if ( iCounselor > 1 )
	{
		alert( "There can only be one counselor" );
		
		return false;
	}
	
	// Contacts Check
	if ( iContacts > 1 )
	{
		alert( "There can only be one main contact" );
		
		return false;
	}
	
	return true;
}

function getElement( id )
{
	if ( document.getElementById )
	{
		x = document.getElementById( id );
		return x;
	}
	else if ( document.all )
	{
		x = document.all[id];
		return x;
	}	
	
	return null;
}

// Script from Apple - http://developer.apple.com/internet/webcontent/examples/validate_source.html
/*function isEmailValid (strng)
{
	var error="";
	if ( strng == "" )
	{
		error = "You didn't enter an email address.\n";
	}

    var emailFilter=/^.+@.+\..{2,3}$/;
    if ( !( emailFilter.test( strng ) ) )
	{ 
		error = "Please enter a valid email address.\n";
    }
    else
	{
		//test email for illegal characters
		var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
		if ( strng.match( illegalChars ) )
		{
			error = "The email address contains illegal characters.\n";
		}
    }
	
	if ( error.length == 0 )
	{
		return true;
	}
	
	return false;
}*/

// From - http://javascript.internet.com/forms/email-validation---basic.html
function isEmailValid( str )
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test( str ) )
	{
		return true;
	}

	return false;
}

/* Page 2 */

var _map = Array( "brown_bag", "project_showcase", "ethics", "student_paper", "micromouse" );
var _mapProper = Array( "Brown Bag", "Project Showcase", "Ethics", "Student Paper", "Micromouse" );
var _bShownAttendees = false;

function show_teams( dropdown, section )
{
	// Show the attendees!
	if ( !_bShownAttendees )
	{
		set_toggle_state( "attendees", 1 );
		
		_bShownAttendees = true;
	}
	
	var num  = dropdown.selectedIndex;
	
	for ( i = 1; i <= 3; i++ )
	{
		id = "team_" + i + "_" + _map[section];
		
		// Show
		if ( i <= num )
		{
			set_toggle_state( id, 1 );
		}
		
		// Hide
		else
		{
			set_toggle_state( id, 0 );
		}
	}
}

var _totalMembersAllowed = Array( 4, 4, 4, 4, 4 );

function onSubmitPage2()
{
	var iTotalAllowed = document.forms.page2.total_allowed.value;
	var szValidIDs = document.forms.page2.a_allowed_ids.value;
	
	
	// Make sure some competitions were selected!
	var iDisplay = 1;
	for ( i = 0; i < _map.length; i++ )
	{
		if ( getElement( _map[i] ).value != 0 )
		{
			iDisplay = 0;	
		}
	}
	if ( iDisplay == 1 )
	{
		alert( "Some members must sign up for a competition" );
		
		return false;
	}
	
	/*var a_ids = szValidIDs.split( "," );
	
	for ( i = 0; i < a_ids.length - 1; i++ )
	{
		id = getElement( "comp_" + a_ids[i] );
		
		//alert( id.value );
	}*/
	
	
	// First make sure the # of teams selected actually has a member
	
	/*for ( i = 0; i < 5; i++ )
	{
		iTotalSelected = getElement( _map[i] ).selectedIndex;

		// Make sure we have at least one selected for each team!
		for ( iTeam = 1; iTeam <= iTotalSelected; iTeam++ )
		{
			found = 0;
			
			for ( iMember = 1; iMember <= iTotalAllowed; iMember++ )
			{
				checkbox = getElement( "team_" + _map[i] + "_" + iTeam + "_" + iMember );
				
				if ( checkbox.checked )
				{
					found++;
				}
			}
			
			// We need to have at least 1 team member!
			if ( found == 0 )
			{
				alert( "Please select team members for " + _mapProper[i] + " team " + iTeam );
				
				return false;
			}
			
			// Make sure there aren't too many team members selected!
			else if ( found > _totalMembersAllowed[i] )
			{
				alert( "You can only have " + _totalMembersAllowed[i] + " team members for " + _mapProper[i] + " team " + iTeam );
				
				return false;
			}
		}
	}*/
	
	
	return true;
}