function changePage(){
    page = document.forms['qlForm'].qlDropDown;
    selected = page.selectedIndex;
    
    if( selected > 1 ){
        loc = page[selected].value;
        document.location = loc;
    }
    else
        page.selectedIndex = 0;
}

// FORM FUNCTIONS /////////////////////////////////////////////////////////////
// Constants & globals ////////////////////////////////////////////////////////
var ignore = [
      		"fax",
      		"comments"
      		 ];
///////////////////////////////////////////////////////////////////////////////

function validateRedBook(){
    var fields = document.forms['redBookMain'].elements;
    noChecked = true;
    
    for( var i=0; i<fields.length; i++ ){
    	if( fields[i].type == 'submit' )
    		break;
    	
    	// Check to make sure values are not blank
        if( fields[i].checked )
            noChecked = false;
    }
    
    if( noChecked ){
        alert( 'You have not selected any workshops.' );
        return false;
    }
    
    return true ;
}

function validateForm( form ){
    var fields = form.elements;
    
    for( var i=0; i<fields.length; i++ ){
    	if( fields[i].type == 'submit' )
    		return true;

    	// Check for optional fields that do not require input.
    	skip = false;
    	for( var name=0; name<ignore.length; name++ ) 
    		if( fields[i].name.indexOf(ignore[name]) != -1 )
    			skip = true;
    	
    	if( skip || fields[i].type == 'hidden' || fields[i].value == 'null' )
    		continue;
    	if( fields[i].name == 'non_nccse_district' && document.getElementById('nonNccseDistrict').className == 'hidden' )
    		continue;
    	if( fields[i].name == 'payment_method' && document.getElementById('paymentMethod').className == 'hidden' )
    		continue;
    	if( fields[i].name.indexOf('administrator') != -1 && document.getElementById('adminSection').className == 'hidden' )
    		continue;    	

    	// Check to make sure values are not blank
    	else if( fields[i].selectedIndex && fields[i].selectedIndex > 0 )
    		continue;
        else if( fields[i].value == "" || fields[i].value == "Enter your district or organization"){
            alert( "Please enter your " + fields[i].title + "!" );
            fields[i].focus();
            return false ;
        }
        else if( fields[i].name.indexOf("Date") != -1 ){
            if( fields[i].value.length != 8 || fields[i].value.charAt(2) != "/" || fields[i].value.charAt(5) != "/" ){
                alert( "Please enter the date in the format 'mm/dd/yy'" );
                return false; 
            }
        }
        else if( document.getElementById('adminSection').className == 'shown' && 
        		 fields[i].type == 'checkbox' && !fields[i].checked ){
        	alert( 'Please certify that your administrator has granted approval for you to register for this workshop by checking the box below the form.');
        	document.getElementById('administratorApproved').className = 'administratorApproved red';
        	return false;
        }
                
    }
        
    return true ;
}

function determineRole(){
	form = document.forms['registrantInfo'];
	role = form.role;
	schoolDistrict = form.school_district;
	
	if( role[role.selectedIndex].text == 'Parent' ){
		document.getElementById('adminSection').className = 'hidden';
		form.administrator_name.value = '';
		form.administrator_approved.checked = false;
	}
	else if( schoolDistrict[schoolDistrict.selectedIndex].text != 'I do not belong to any of these districts' ){
		document.getElementById('adminSection').className = 'shown';
	}
}

function determineDistrict(){
	form = document.forms['registrantInfo'];	
	schoolDistrict = form.school_district;
	role = form.role;
	
	if( schoolDistrict[schoolDistrict.selectedIndex].text == 'I do not belong to any of these districts' ){
		document.getElementById('paymentMethod').className = 'shown';
		
		document.getElementById('nonNccseDistrict').className = 'shown';
		toggleInputInstructions(true);
		
		document.getElementById('adminSection').className = 'hidden';
		form.administrator_name.value = '';
		form.administrator_approved.checked = false;
	}
	else{
		document.getElementById('paymentMethod').className = 'hidden';
		form.payment_method.value = '';
		form.non_nccse_district.value = '';
		
		document.getElementById('nonNccseDistrict').className = 'hidden';
		toggleInputInstructions(false);
		
		if( role[role.selectedIndex].text != 'Parent'  )
			document.getElementById('adminSection').className = 'shown';
	}
}

function fillField( form, field, value ){ //alert( field + ' and ' + value);
	form = document.forms[form];

	for( var i=0; i<form.elements.length; i++ ){	
		if( form.elements[i].name == field ){
			if( form.elements[i].type == 'checkbox' && form.elements[i].value == value )
				form.elements[i].checked = true;
			else
				form.elements[i].value = value;
		}
	}
}

function toggleInputInstructions( instructions ){
	field = document.forms['registrantInfo'].non_nccse_district; 

	if( !instructions ){
		field.value = "";
		field.className = "undef";
	}
	else if( field.value != "" ){
		field.className = "undef";
	}
	else{ 
		field.value = "Enter your district or organization";
		field.className = "nonNccseDistrict";
	}		
}

// AJAX FOR ONLINE RED BOOK ///////////////////////////////////////////////////
// Constants & globals ////////////////////////////////////////////////////////
var xmlhttp 
var workshopCssID, toggler, row;
///////////////////////////////////////////////////////////////////////////////

function GetXmlHttpObject(){
    if( window.XMLHttpRequest ){
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if( window.ActiveXObject ){
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    return null;
}

function toggleWorkshop( workshop ){ 
    workshopCssID = workshop;
    toggler = document.getElementById('toggler_' + workshopCssID);
    row = document.getElementById('row_' + workshopCssID);

    if( toggler.innerHTML.indexOf("expand") == -1 ){
    	hideWorkshop();
    	return;
    }
    else
    	toggler.innerHTML = toggler.innerHTML.replace("expand", "loadingSmall");
    
    xmlhttp = GetXmlHttpObject();
    
    if( xmlhttp == null ){
        alert ( "Your browser does not support AJAX!" );
        return;
    }

	url = "/data/skins/default/fragments/educators_registration/redBook/workshopDetails.php";
        
    url = url + "?q=" + workshop;
    xmlhttp.onreadystatechange = showWorkshop;
    xmlhttp.open( "GET", url, true );
    xmlhttp.send( null );
}

function hideWorkshop(){
    workshopDetails = document.getElementById(workshopCssID);
        
    toggler.innerHTML = toggler.innerHTML.replace("collapse", "expand");        
    for( i=0; i<row.childNodes.length-1; i++ )
       row.childNodes[i].className = 'redbookMainTableCell';
      
   	//workshopDetails.className = 'hidden';
	$('#' + workshopCssID).fadeOut(300); // JQuery
}

function showWorkshop(){
    if( xmlhttp.readyState == 4 ){
        workshopDetails = document.getElementById(workshopCssID);
    	workshopDetails.innerHTML = xmlhttp.responseText;
    	
        toggler.innerHTML = toggler.innerHTML.replace("loadingSmall", "collapse"); 
        for( i=0; i<row.childNodes.length-1; i++ )
            row.childNodes[i].className = 'workshopRowSelected redbookMainTableCell';

        //workshopDetails.className = '';
    	$('#' + workshopCssID).fadeIn(500); // JQuery
  	}
}

function highlightRow( row, highlight ){
	currRow = document.getElementById(row);
	
	if( highlight  ){
		currRow.style.cssText = 'background-color: #FFF1AF';
	}
	else{
		currRow.style.cssText = '';
	}
}

function openAndScrollToRow( row ){
	setTimeout(function wait(){$.scrollTo('#row_' + row, 900);}, 1800); // JQuery
	toggleWorkshop(row);
}


// Filter functions ///////////////////////////////////////////////////////////
// Constants & globals ////////////////////////////////////////////////////////
var tableURL = "/data/skins/default/fragments/educators_registration/redBook/table.php";
var sortBy;
var showPast = 'DATE_AFTER_TODAY';
var catDefault = 'ALL,AT,AUT,BE,IEP,PE,SH,TA,ALL,AT,AUT,BE,IEP,PE,PR,SH,TA,';
var cat = catDefault;
var presentersDefault = 'all'
var presenters = presentersDefault;
var query = '';
var dateStart = '';
var dateEnd = '';
var loadingAnimated = '<img src="http://www.nccse.org/data/skins/default/images/loading.gif" /><br /><br />LOADING...';
///////////////////////////////////////////////////////////////////////////////

function toggleSection( sectionID ){
    toggler = document.getElementById('toggler_' + sectionID);
    section = document.getElementById(sectionID);

    if( toggler.innerHTML.indexOf("expand") == -1 ){
    	toggler.innerHTML = toggler.innerHTML.replace("collapse", "expand");
    	$('#' + sectionID).fadeOut(500);
    }
    else{
    	toggler.innerHTML = toggler.innerHTML.replace("expand", "collapse");
    	$('#' + sectionID).fadeIn(500);
    }
}

function transition(){
    table = document.getElementById('redbookMain');
    
    $.scrollTo('#tableBegin', 600); // JQuery
    
    // Show loading animated GIF while processing server-side
    loading = document.createElement('div');
    loading.setAttribute('id', 'redbookMain');
    loading.setAttribute('class', 'loadingAnimated');
    loading.setAttribute('className', 'loadingAnimated');  // For IE compatibility
    loading.innerHTML = loadingAnimated;
    table.parentNode.replaceChild( loading, table );    
}

function search(start, end){
	query = document.forms['search'].searchBox.value;
	
	document.getElementById('searchText').className = '';
	document.getElementById('searchQuery').innerHTML = query;
	
	checkAllInList('categories', true);
	cat = catDefault;
	
	checkAllInList('presenters', true);
	presenters = presentersDefault;
	
	// Set date range to include everything between first and last workshop
	startArr = start.split('-');
	endArr = end.split('-');
	document.getElementById('dateStart').innerHTML = startArr['1'] + '/' + startArr['2'] + '/' + startArr['0'];
	document.getElementById('dateEnd').innerHTML = endArr['1'] + '/' + endArr['2'] + '/' + endArr['0'];
	
	//var startReal = Date.UTC(2009, 7, 20);
   	//var endReal = Date.UTC(2010, 4, 20);
	//$("#slider-range").slider('option', 'values', [startReal, endReal]);
	//v = $("#slider-range").slider('option', 'values'); alert(v);
	
	advancedFilter();
	document.forms['search'].searchBox.value = query;
}

function advancedFilter(){	
	// Disable 'show past workshops' checkbox, since this conflicts w/ other related controls, 
	document.getElementById('filterShowPast').className = 'hidden';
	document.getElementById('rightReset').className = '';
	
	form = document.forms['filter'];
	
	// Parse checked categories
	if( form.selectAllCategories.checked == true )
		cat = catDefault;
	else
		cat = '';
	
	for( var i=0; i<form.categories.length; i++ )
		if( form.categories[i].checked )
			cat += form.categories[i].value + ',';

	// Parse checked presenters
	if( form.selectAllPresenters.checked == true )
		presenters = presentersDefault;
	else
		presenters = '';
	
	for( var i=0; i<form.presenters.length; i++ )
		if( form.presenters[i].checked )
			presenters += form.presenters[i].value + ',';
	
	// Date Start
	dateStartArr = document.getElementById('dateStart').innerHTML.split('/');
	dateStart = dateStartArr['2'] + '-' + dateStartArr['0'] + '-' + dateStartArr['1'];
	
	// Date End
	dateEndArr = document.getElementById('dateEnd').innerHTML.split('/');
	dateEnd = dateEndArr['2'] + '-' + dateEndArr['0'] + '-' + dateEndArr['1'];
	 
	// Display search query to user 
	document.getElementById('filterText').className = '';
	document.getElementById('selectedCategories').innerHTML = cat.substring(0, cat.lastIndexOf(',')).replace(/,/g, ',&nbsp;' );
	if( presenters == presentersDefault )
		document.getElementById('selectedPresenters').innerHTML = 'all (any)';
	else
		document.getElementById('selectedPresenters').innerHTML = 'selected';
	document.getElementById('dateText').className = '';
	document.getElementById('specifiedDateStart').innerHTML = document.getElementById('dateStart').innerHTML;
	document.getElementById('specifiedDateEnd').innerHTML = document.getElementById('dateEnd').innerHTML;
	document.getElementById('resetInstructions').className = '';
 
	sort();
}

function checkAllInList( listName, all ){
	var list, selectAllOption; 
	
	if( listName == 'categories' ){
		list = document.forms['filter'].categories;
		selectAllOption = document.forms['filter'].selectAllCategories;
	}
	else if( listName == 'presenters' ){
		list = document.forms['filter'].presenters;
		selectAllOption = document.forms['filter'].selectAllPresenters;
	}
			
	if( all ){
		for( var i=0; i<list.length; i++ )
			list[i].checked = false;
		selectAllOption.checked = true;
	}
	else
		selectAllOption.checked = false;
}

function showPastWorkshops(){
	control = document.forms['redBookFilters'].showPastCheckBox;
	if( control.checked )
		showPast = 'ALL_WORKSHOPS';
	else
		showPast = 'DATE_AFTER_TODAY';

	sort();
}

function sort(){
	control = document.forms['redBookFilters'].filterSort;
	sortBy = control[control.selectedIndex].value;		

	filter();
}

function filter(){ 
    // Perform filter
    xmlhttp = GetXmlHttpObject();
    if( xmlhttp == null ){
        alert ( "Your browser does not support AJAX!" );
        return;
    }
    
    transition();
    var url = tableURL + "?sort=" + sortBy + "&showPast=" + showPast + '&cat=' + cat + '&presenters=' + presenters;
    if( query != '' )
    	url += '&query=' + query;
    if( dateStart != '' && dateEnd != '' )
    	url += '&dateStart=' + dateStart + '&dateEnd=' + dateEnd;

    xmlhttp.onreadystatechange = redisplayTableSorted;
    xmlhttp.open( "GET", url, true );
    xmlhttp.send( null );    
}

function redisplayTableSorted(){    
    if( xmlhttp.readyState == 4 ){
        tableContainer = document.getElementById('redbookMainContainer');
        
        newTable = document.createElement('div');
        newTable.setAttribute('style', 'display:none;');
        newTable.setAttribute('id', 'redbookMainContainer');
        newTable.innerHTML = xmlhttp.responseText;
        
        tableContainer.parentNode.replaceChild( newTable, tableContainer );
        $("#redbookMainContainer").fadeIn(500);  // JQuery
    }
}

// Connecting AJAX Red Book to Online Registration Form
function goBackToStep( step ){
	switch( step ){
		case 0:
			form = document.forms['redBookMain'];
			form.action = '../register-for-workshops.html';
			break;
		case 1: 
			form = document.forms['registrantInfo'];
			form.action = 'confirm-selected-workshops.html';
			form.onsubmit = '';
			break;
		case 2:
			form = document.forms['redBookMain'];
			form.action = 'complete-registrant-info.html';
			break;
	}
	
	form.submit();
	return true;
}	

function printReg( url ){
	if( !window.open( url ) ){
		alert('Please turn off your browser\'s pop-up blocker in order to load the printer-friendly form to print out to mail. If you are unable to do this, simply print out this page and mail that in.');
		return false;
	}
	
	return true;
}








// OLD, UNUSED ////////////////////////////////////////////////////////////////
var numWorkshops = 0;
function addAnotherWorkshop(){
    var fields = '';
    numWorkshops++;
    
    fields += '<br /><h2>Workshop #' + numWorkshops + ' Info (all fields required)</h2>';
    fields += '<hr />';        
    
    fields += '<span>Workshop ID#:</span><input type="text" name="workshop' + numWorkshops + 'ID" title="Workshop ID #"/><br />';
    fields += '<span>Name:</span><input type="text" name="workshop' + numWorkshops + 'Name" title="Workshop Name"/><br />';
    fields += '<span>Date (mm/dd/yy):</span><input type="text" name="workshop' + numWorkshops + 'Date" title="Workshop Date"/><br />'; 
    fields += '<span>Time:</span><input type="text" name="workshop' + numWorkshops + 'Time" title="Workshop Time"/><br />';
    fields += '<span>Location:</span><input type="text" name="workshop' + numWorkshops + 'Location" title="Workshop Location"/><br />'; 
    fields += '<span>Your questions or comments (optional):</span>';
    fields += '<textarea name="comments' + numWorkshops + '" /></textarea><br />';
    
    var workshops = document.getElementById('workshopReg');
    var newWorkshop = document.createElement('div');
      
    newWorkshop.innerHTML = fields;
    workshops.appendChild(newWorkshop);
}

function calculateWorkshopTotal(){
    var workshops = document.getElementById('workshopReg');
    var totalWorkshops = document.createElement('div');

    totalWorkshops.innerHTML = '<input type="hidden" name="numWorkshops" value=' + numWorkshops + ' />';
    workshops.appendChild(totalWorkshops);
}


function grabCheckedWorkshops(){
    var checked='';
    var form = document.forms['redBookMain'];
    var counter = form.workshopCheckBox.length;

    if( !counter ){
        checked = form.workshopCheckBox.value;        
        return;
    }

    for( var i=0; i<counter; i++){
        if( form.workshopCheckBox[i].checked ){         
            if( checked=='' )
                checked = form.workshopCheckBox[i].value;
            else
                checked = checked + ',' + form.workshopCheckBox[i].value;
        }
    }
}