

var highlightedColor = "#000000"; // "#404040";
var highlightedOutOfFocusColor = "#254060"; // "#404040";
var nonHighlightedColor = "#003333";  //  "#456284";
var dropdownColor = "#254060";
var previous = "";

var skitInfo = new Array();
var skitNames = new Array();
var skitFilenames = new Array();
var skitCategories = new Array();
var skitStarring = new Array();
var skitRatings = new Array();
var skitProducers = new Array();
var skitDates = new Array();
var skitLinks = new Array();
var skitImages = new Array();
var skitMembersOnly = new Array();
var skitListRows = new Array();
var pageEndCalled = false;
var defaultPageSize = 7;
var pageSize = defaultPageSize;


var currentSkitID = -1;
var numberOfSkits = 0;

var MembersOnlyOnPrefix = "On";
var MembersOnlyOnlyPrefix = "Only";
var MembersOnlyOffPrefix = "Off";

var allFilterPrefix = "All";
var newFilterPrefix = "New";
var categoryFilterPrefix = "Category";
var starringFilterPrefix = "Guest Star";
var producersFilterPrefix = "Producer";
var ratingsFilterPrefix = "Rating";
var releaseDateFilterPrefix = "Release Date";
var dropdownHasFocus = false;
var missingFilterPrefix = "Unknown";



// Redirect to main frameset
if (self == top) {
	if (window.location.hostname.indexOf("stage") < 0) {
		var url = "/fuquavision/index.html?";

		if ( window.location.href.toLowerCase().indexOf("internal/") >= 0  ||
		     window.location.href.toLowerCase().indexOf("membersonly=true") >= 0 ) {
			url += "internal/index";
		} else {
			url += "index";
		}

		window.location.replace( url );
	}
}



function MembersOnlyEnabled( ) {
	return (GetQueryParameter("membersonly") == "true");
}



function SkitSelectionEnabled( ) {
	return (GetQueryParameter("name") == "");
}



function ShowStatusMessage( ) {
	var msg = "";

	if ( numberOfSkits == 1 ) {
		msg = numberOfSkits + " skit shown.";
	} else {
		msg = numberOfSkits + " skits shown.";
	}

	if ( numberOfSkits > 1 ) {
		msg += "  Press cursor and letter keys to select skits.";
	}

	if ( numberOfSkits > 0  &&  currentSkitID >= 0 ) {
		msg += "  Press Enter to view \"" + skitNames[ currentSkitID ] + "\".";
	}

//	if ( window != window.parent ) {
//		window.parent.status = msg;
//	} else {
		window.status = msg;
//	}
}


function UpdateSkitCount( count ) {
	var noInfoRow = document.getElementById("NoSkitsRow");

	if ( count == 0 ) {
		noInfoRow.style.display = "block";
	} else {
		noInfoRow.style.display = "none";
	}

	pageSize = count;

	if ( count > pageSize ) {
		if ( pageSize > defaultPageSize ) {
			pageSize = defaultPageSize;
		}
	}

	numberOfSkits = count;

	ShowStatusMessage( );
}


function StripHTML( html ) {
	var temp = html;

	temp = temp.replace(/<[^<]*>/gim, "");
	temp = temp.replace(/&nbsp;/gim, " ");
	temp = temp.replace(/&quot;/gim, "\"");

	return temp;
}



function ActualNumberOfSkits() {
	var minSize = Math.min( skitInfo.length, skitLinks.length, skitImages.length );

	return minSize;
}



function ClickOnShowAll() {
	document.getElementById("SkitFilterType").selectedIndex = 0;

	SkitFilterTypeChanged(false);

	return false;
}



function HideAllInfo( ) {
	var i = 0;

	// first hide everything
	for ( i = ActualNumberOfSkits()-1;  i >= 0;  i-- ) {
		if ( skitInfo[ i ].style.display != "none" ) {
			skitInfo[ i ].style.display = "none";
		}
	}
}




function HideAllRows( ) {
	var i = 0;

	// first hide everything
	for ( i = ActualNumberOfSkits()-1;  i >= 0;  i-- ) {
		if ( skitListRows[ i ].style.display != "none" ) {
			skitListRows[ i ].style.display = "none";
		}
	}
}



function HideAllSkits( ) {
	HideAllRows( );
	HideAllInfo( );
}





function ShowOnly1Info( skitID ) {
	HideAllInfo( );

	if ( skitID < 0 ) {
		return;
	}

	if ( skitInfo[ skitID ].style.display != "block" ) {
		skitInfo[ skitID ].style.display = "block";
	}
}





function BuildTable() {
	var str = "";
	var skitNumber = 0;

	str += "<table id=\"SkitListHTML\" name=\"SkitListHTML\" width=\"471\" bgcolor=\"#003333\" border=\"0\" valign=\"top\" cellpadding=\"2\" cellspacing=\"0\">";

	for ( skitNumber = 0;  skitNumber < ActualNumberOfSkits();  skitNumber++ ) {
		var name = skitNames[skitNumber];
		var filename = skitFilenames[skitNumber];
		var rating = skitRatings[skitNumber];
		var producers = skitProducers[skitNumber];
		var date = skitDates[skitNumber];
		var i = filename.lastIndexOf("/");

		if ( i >= 0 ) {
			filename = filename.substring(i+1);
		}

		var linkURL = "skit_title.htm?nocurtain&name=" + filename.replace(/\.htm/gi, "");

		if ( skitMembersOnly[ skitNumber ] ) {
			linkURL += "&membersonly=true";
		}		

		skitLinks[skitNumber].href = linkURL;
//		skitLinks[skitNumber].onclick = "return ViewSkit(" + skitNumber + ");";

		str += "<tr id=\"SkitListRow\" name=\"SkitListRow\" onclick=\"HighlightSkit(" + skitNumber + ", false);\" ondblclick=\"ViewSkit(" + skitNumber + ");\">\n";

		str += "<td class=\"styleSkitView\" UNSELECTABLE=\"on\" width=\"43\" align=\"center\" nowrap><a id=\"SkitListLink\" name=\"SkitListLink\" href=\"" + linkURL + "\"><img src=\"../images/view_skit.gif\" height=\"16\" width=\"34\" border=\"0\" title=\"Click to view skit\" align=\"absbottom\"></a></td>\n";

		if ( skitMembersOnly[ skitNumber ] ) {
			name = "*" + name;
		}

		str += "<td class=\"styleSkitName\" UNSELECTABLE=\"on\" width=\"272\" align=\"left\" nowrap>" + name + "</td>\n";
		str += "<td UNSELECTABLE=\"on\" width=\"20\" align=\"left\" nowrap>&nbsp;</td>\n";

		var extraStars = "";

		if ( rating.indexOf("*") >= 0 ) {
			while ( (rating.length + extraStars.length) < 5 ) {
				extraStars += "*";
			}
		} else if ( rating.toLowerCase().indexOf("new") >= 0 ) {
			rating = "New!&nbsp;";
		} else {
			rating = "<span style=\"background-color:#" + nonHighlightedColor + "\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>";
		}

		str += "<td class=\"styleSkitRating\" UNSELECTABLE=\"on\" width=\"60\" align=\"left\" nowrap>" + rating + "<span class=\"styleSkitRatingExtraStars\">" + extraStars + "</span></td>\n";
		str += "<td UNSELECTABLE=\"on\" width=\"20\" align=\"left\" nowrap>&nbsp;</td>\n";

		if ( date == "" ) {
			date = "<span style=\"background-color:#" + nonHighlightedColor + "\">&nbsp;&nbsp;&nbsp;&nbsp;</span>";
		}
		str += "<td class=\"styleSkitDate\" UNSELECTABLE=\"on\" width=\"60\" align=\"left\" nowrap>" + date + "</td>\n";

		str += "</tr>\n";
	}

	skitListRows = document.getElementsByName("SkitListRow");

	str += "<tr id=\"NoSkitsRow\" name=\"NoSkitsRow\">";
	str += "<td UNSELECTABLE=\"on\" colspan=\"6\" align=\"center\" nowrap><font size=\"2\">No skits meet the selected criteria.</font></td>";
	str += "</tr>";

	var links = "<a href=\"/fuquavision/links/\" target=\"_blank\"><font color=\"yellow\">Links</font></a></font>";

	if ( !MembersOnlyEnabled() ) {
		links = "go to the <a href=\"/fuquavision/members_only.htm?nocurtain_nodescription\"><font color=\"yellow\">Members-Only Theater</a></font> or " + links;
	}

	var showAll = false;
	var skitToHighlight = GetFilterSelection("Type").toLowerCase();

	if ( skitToHighlight.indexOf( allFilterPrefix.toLowerCase() ) != 0 ) {
		showAll = true;

		links =	"<a href=\"\" onclick=\"return ClickOnShowAll();\"><font color=\"yellow\">Show All</font></a>, or " + links;
	} else if ( MembersOnlyEnabled() ) {
		links =	"go to " + links;
	}

	str += "<tr>";
	str += "<td UNSELECTABLE=\"on\" colspan=\"6\" align=\"center\" nowrap><font size=\"2\">For more skits, " + links + "</td>";
	str += "</tr>";

	str += "</table>";

	var skitListWrapper = document.getElementById("SkitListWrapper");

	skitListWrapper.style.display = "block";

	var skitListHTML = document.getElementById("SkitListHTML");

	PortableSetOuterHTMLOfObject( skitListHTML, str );
}




function AdjustSkitNumberIfNecessary( skitID ) {
	var membersOnlySelection = GetMembersOnlySelection( );

	while ( skitID < ActualNumberOfSkits() ) {
		switch ( membersOnlySelection ) {
		case MembersOnlyOnPrefix:
			return skitID;

		case MembersOnlyOnlyPrefix:
			if ( skitMembersOnly[ skitID ] ) {
				return skitID;
			}
			break;

		case MembersOnlyOffPrefix:
			if ( !skitMembersOnly[ skitID ] ) {
				return skitID;
			}
			break;
		}
		skitID++;
	}

	skitID = 0;


	while ( skitID < ActualNumberOfSkits() ) {
		switch ( membersOnlySelection ) {
		case MembersOnlyOnPrefix:
			return skitID;

		case MembersOnlyOnlyPrefix:
			if ( skitMembersOnly[ skitID ] ) {
				return skitID;
			}
			break;

		case MembersOnlyOffPrefix:
			if ( !skitMembersOnly[ skitID ] ) {
				return skitID;
			}
			break;
		}
		skitID++;
	}

	return 0;
}



function ViewSkit( skitID ) {
	if ( numberOfSkits == 0 ) {
		return true;
	}

	if ( typeof(window.parent.Phase1GotoSkit) != "undefined" ) {
		window.parent.Phase1GotoSkit( skitFilenames[ skitID ].replace(/.*\//i, "").replace(/\.htm/i, "") );
	} else {
		var link = skitLinks[ skitID ];
		var url = link.href;

//		if ( window != window.parent ) {
//			if ( !window.parent.StartTheShow(link, url) ) {
//				return;
//			}
//		}

		window.location = url;
	}

	return false;
}




function Scroll( skitID, showTop ) {
	if ( skitID < 0 ) {
		return;
	}

	if ( numberOfSkits < pageSize ) {
		return;
	}

	if ( skitListRows[ skitID ].style.display != "none" ) {
		skitListRows[ skitID ].scrollIntoView( showTop );
	}
}





function HighlightSkit( skitID, doScroll ) {
	skitID = AdjustSkitNumberIfNecessary( skitID );

	if ( currentSkitID >= 0 ) {
		skitListRows[ currentSkitID ].style.backgroundColor = nonHighlightedColor;
	}

	ShowOnly1Info( skitID );

	if ( skitID >= 0 ) {
		skitListRows[ skitID ].style.backgroundColor = highlightedColor;

		if ( doScroll ) {
			Scroll( skitID, (skitID < currentSkitID) );
		}

		currentSkitID = skitID;

		if ( window != window.parent  &&  typeof(window.parent.SetTabSkit) != "undefined" ) {
			window.parent.SetTabSkit( MembersOnlyEnabled(), skitFilenames[ skitID ].replace(/.*\//i, "").replace(/\.htm/i, ""), skitNames[ skitID ] );
		}
	}

	ShowStatusMessage( );

	return true;
}





function FindSkit( currentSkitRow, goalRow, initialAsciiCode ) {
	if ( numberOfSkits == 0 ) {
		return -1;
	}

	var candidateRow = -1;
	var increment = 1;

	if ( currentSkitRow == goalRow ) {
		return currentSkitRow;
	} else if ( currentSkitRow > goalRow ) {
		increment = -1;
	}
	
	var row = currentSkitRow + increment;

	while ( row >= 0  &&  row < ActualNumberOfSkits() ) {
		if ( skitListRows[ row ].style.display != "none" ) {
			if ( typeof(initialAsciiCode) == "undefined"  ||  skitNames[ row ].substring(0, 1).toLowerCase() == String.fromCharCode( initialAsciiCode ).toLowerCase() ) {
				candidateRow = row;

				if ( row == goalRow ) {
					break;
				}

				if ( row < goalRow  &&  increment < 0 ) {
					break;
				} else if ( row > goalRow  &&  increment > 0 ) {
					break;
				}
			}
		}

		row += increment;
	}

	if ( candidateRow >= 0 ) {
		return candidateRow;
	}

	return -1;
}




function MoveToSkit( currentSkitRow, goalRow, initialAsciiCode ) {
	var row = FindSkit( currentSkitRow, goalRow, initialAsciiCode );

	if ( row >= 0 ) {
		HighlightSkit( row, true );

		return true;
	}

	return false;
}




function OnKeydown(evt) {
	if ( dropdownHasFocus ) {
		return true;
	}

	var code = 0;

	if (typeof(window.event) != "undefined"  &&  typeof(window.event.keyCode) != "undefined") {
		code = window.event.keyCode;

		if ( window.event.altKey ||  window.event.ctrlKey ) {
			return true;
		}
	} else if (typeof(evt.which) != "undefined") {
		code = evt.which;

		if ( evt.altKey ||  evt.ctrlKey ) {
			return true;
		}
	}

	switch (code) {
	case 13: // Enter
	case 32: // space
		ViewSkit( currentSkitID );
		return false;

	case 33: // page up
		var skitID = currentSkitID;
		var i = 0;

		for ( i = 0;  i < pageSize-1;  i++ ) {
			skitID = FindSkit( skitID, skitID - 1 );
		}

		MoveToSkit( skitID, skitID - 1 );
		return false;

	case 34: // page down
		var skitID = currentSkitID;
		var i = 0;

		for ( i = 0;  i < pageSize-1;  i++ ) {
			skitID = FindSkit( skitID, skitID + 1 );
		}

		MoveToSkit( skitID, skitID + 1 );
		return false;

	case 35: // end
		MoveToSkit( currentSkitID, ActualNumberOfSkits()-1 );
		return false;

	case 36: // home
		MoveToSkit( currentSkitID, 0 );
		return false;

	case 38: // up
		MoveToSkit( currentSkitID, currentSkitID - 1 );
		return false;

	case 40: // down
		MoveToSkit( currentSkitID, currentSkitID + 1 );
		return false;

	default: // search on letter
		if ( code < 65  ||  code > 90 ) { // allow letters
			if ( code < 48  ||  code > 57 ) { // allow digits
				break;
			}
		}

		if ( !MoveToSkit( currentSkitID, currentSkitID + 1, code ) ) {
			MoveToSkit( -1, 0, code );
		}
		
		return false;
	}

	return true;
}




function DropDownFilterFocus( item ) {
	dropdownHasFocus = true;

//	item.style.backgroundColor = highlightedColor;

	if ( currentSkitID >= 0 ) {
//		skitListRows[ currentSkitID ].style.backgroundColor = highlightedOutOfFocusColor;
	}
}



function DropDownFilterBlur( item ) {
	dropdownHasFocus = false;

//	item.style.backgroundColor = dropdownColor;

	if ( currentSkitID >= 0 ) {
//		skitListRows[ currentSkitID ].style.backgroundColor = highlightedColor;
	}
}




function GetMembersOnlySelection( ) {
	if( !MembersOnlyEnabled( ) ) {
		return MembersOnlyOffPrefix;
	}

	var selection = document.getElementById("MembersOnly");

	if ( selection != null  &&  typeof(selection) != "undefined"  &&  selection.selectedIndex >= 0 ) {
		return selection.options[ selection.selectedIndex ].value;
	}

	return MembersOnlyOffPrefix;
}



function GetFilterSelection( filterType ) {
	var filterSelection = document.getElementById("SkitFilter" + filterType);

	if ( filterSelection.selectedIndex >= 0 ) {
		return filterSelection.options[ filterSelection.selectedIndex ].value;
	}

	return "";
}



function MaintainSkitPosition( currentSkitRow ) {
	if ( currentSkitRow < 0  ||  skitListRows[ currentSkitRow ].style.display == "none" ) {
		for ( i = 0;  i < ActualNumberOfSkits();  i++ ) {
			if ( skitListRows[ i ].style.display != "none" ) {
				HighlightSkit( i, true );
				return true;
			}
		}
	} else {
		HighlightSkit( currentSkitRow, true );
		return true;
	}

	return false;


	var candidateRow = -1;
	var row = currentSkitRow;

	while ( row >= 0  &&  row < ActualNumberOfSkits() ) {
		if ( skitListRows[ row ].style.display != "none" ) {
			candidateRow = row;
			break;
		}

		row += 1;
	}


	if ( candidateRow < 0 ) {
		var row = currentSkitRow - 1;

		while ( row >= 0  &&  row < ActualNumberOfSkits() ) {
			if ( skitListRows[ row ].style.display != "none" ) {
				candidateRow = row;
				break;
			}

			row -= 1;
		}
	}

	if ( candidateRow >= 0 ) {
		HighlightSkit( candidateRow, true );
		return true;
	}

	return false;
}




function KillDropDownFocus() {
	if ( document.getElementById("MainBlock").style.visibility != "hidden" ) {
		if ( currentSkitID >= 0  &&  skitInfo[ currentSkitID ].style.display != "none" ) {
//			skitLinks[ currentSkitID ].focus();
//			skitLinks[ currentSkitID ].blur();
			document.getElementById("SkitFilterType").focus();
			document.getElementById("SkitFilterType").blur();
		}
	}

	window.focus();
//	document.getElementById("DescriptionBlock").focus();
}



function SubfilterChanged( filterType, skitValues, exactMatch, keypress ) {
	var count = 0;
	var filterSelection = GetFilterSelection( filterType ); 
	var skitToHighlight = filterSelection.toLowerCase();
	var membersOnlySelection = GetMembersOnlySelection( );

	if ( window != window.parent ) {
		window.parent.SetTabFilter( MembersOnlyEnabled(), "SkitFilter" + filterType, filterSelection );
	}

	if ( skitToHighlight == "" ) {
		return;
	}

	if ( skitToHighlight.toLowerCase() == missingFilterPrefix.toLowerCase() ) {
		skitToHighlight = "";
	}

	var htmlBlock = document.getElementById("SkitListHTML");
	var show = false;
	var i = 0;
	var skitList = document.getElementById("SkitListWrapper");

//	skitList.style.display = "none";

//	document.getElementById("MainBlock").style.cursor = "wait";
	document.body.style.cursor = "wait";

	BuildTable(); // fixes Firefox problem where blank rows get added mysteriously

	HideAllSkits();

	for ( i = 0;  i < skitValues.length;  i++ ) {
		show = false;

		if ( skitValues[ i ].toLowerCase() == skitToHighlight.toLowerCase() ) {
			show = true;
		} else if ( !exactMatch  &&  skitToHighlight != "" ) {
			show = (skitValues[ i ].toLowerCase().indexOf(skitToHighlight.toLowerCase()) >= 0);
		}

		if ( show ) {
			switch ( membersOnlySelection ) {
			case MembersOnlyOnPrefix:
				show = true;
				break;

			case MembersOnlyOnlyPrefix:
				show = skitMembersOnly[ i ];
				break;

			case MembersOnlyOffPrefix:
				show = !skitMembersOnly[ i ];
				break;
			}
		}

		if ( show ) {
			if ( skitListRows[ i ].style.display != "block" ) {
				skitListRows[ i ].style.display = "block";
			}

			count++;
		}
	}

	MaintainSkitPosition( currentSkitID );

//	skitList.style.display = "block";

	UpdateSkitCount( count );

	Scroll( currentSkitID, true );

	KillDropDownFocus();

//	document.getElementById("MainBlock").style.cursor = "default";
	document.body.style.cursor = "default";
}



function SkitFilterCategoryChanged( keypress ) {
	SubfilterChanged( "Category", skitCategories, false, keypress );
}




function SkitFilterProducersChanged( keypress ) {
	SubfilterChanged( "Producers", skitProducers, false, keypress );
}




function SkitFilterRatingsChanged( keypress ) {
	SubfilterChanged( "Ratings", skitRatings, true, keypress );
}




function SkitFilterReleaseDateChanged( keypress ) {
	SubfilterChanged( "ReleaseDate", skitDates, false, keypress );
}





function SkitFilterStarringChanged( keypress ) {
	SubfilterChanged( "Starring", skitStarring, false, keypress );
}




function SkitFilterAllChanged( ) {
	var count = 0;
	var membersOnlySelection = GetMembersOnlySelection( );
	var show = false;
	var i = 0;
	var skitList = document.getElementById("SkitListWrapper");

//	skitList.style.display = "none";

//	document.getElementById("MainBlock").style.cursor = "wait";
	document.body.style.cursor = "wait";

	BuildTable(); // fixes Firefox problem where blank rows get added mysteriously

	HideAllSkits();

	for ( i = 0;  i < ActualNumberOfSkits();  i++ ) {
		show = false;

		switch ( membersOnlySelection ) {
		case MembersOnlyOnPrefix:
			show = true;
			break;

		case MembersOnlyOnlyPrefix:
			show = skitMembersOnly[ i ];
			break;

		case MembersOnlyOffPrefix:
			show = !skitMembersOnly[ i ];
			break;
		}

		if ( show ) {
			if ( skitListRows[ i ].style.display != "block" ) {
				skitListRows[ i ].style.display = "block";
			}

			count++;
		}
	}

	MaintainSkitPosition( currentSkitID );

//	skitList.style.display = "block";

	UpdateSkitCount( count );

	Scroll( currentSkitID, true );

	KillDropDownFocus();

//	document.getElementById("MainBlock").style.cursor = "default";
	document.body.style.cursor = "default";
}



function SkitFilterNewChanged( ) {
	var count = 0;
	var membersOnlySelection = GetMembersOnlySelection( );
	var show = false;
	var i = 0;
	var skitList = document.getElementById("SkitListWrapper");

//	skitList.style.display = "none";

//	document.getElementById("MainBlock").style.cursor = "wait";
	document.body.style.cursor = "wait";

	BuildTable(); // fixes Firefox problem where blank rows get added mysteriously

	HideAllSkits();

	for ( i = 0;  i < ActualNumberOfSkits();  i++ ) {
		show = false;

		if ( skitRatings[ i ].toLowerCase().indexOf("new") >= 0 ) {
			switch ( membersOnlySelection ) {
			case MembersOnlyOnPrefix:
				show = true;
				break;

			case MembersOnlyOnlyPrefix:
				show = skitMembersOnly[ i ];
				break;

			case MembersOnlyOffPrefix:
				show = !skitMembersOnly[ i ];
				break;
			}
		}

		if ( show ) {
			if ( skitListRows[ i ].style.display != "block" ) {
				skitListRows[ i ].style.display = "block";
			}

			count++;
		}
	}

	MaintainSkitPosition( currentSkitID );

//	skitList.style.display = "block";

	UpdateSkitCount( count );

	Scroll( currentSkitID, true );

	KillDropDownFocus();

//	document.getElementById("MainBlock").style.cursor = "default";
	document.body.style.cursor = "default";
}




function SkitFilterTypeChanged( keypress ) {
	var membersOnlySelection = GetMembersOnlySelection( );
	var skitToHighlight = GetFilterSelection("Type").toLowerCase();

	if ( window != window.parent ) {
		window.parent.SetTabFilter( MembersOnlyEnabled(), "SkitFilterType", GetFilterSelection("Type") );

		if ( MembersOnlyEnabled() ) {
			window.parent.SetTabFilter( MembersOnlyEnabled(), "MembersOnly", membersOnlySelection );
		}
	}

	if ( skitToHighlight == "" ) {
		return;
	}

	var htmlBlock = document.getElementById("SkitListHTML");
	var categoryBlock = document.getElementById("SkitFilterCategory");
	var producersBlock = document.getElementById("SkitFilterProducers");
	var ratingsBlock = document.getElementById("SkitFilterRatings");
	var releaseBlock = document.getElementById("SkitFilterReleaseDate");
	var starringBlock = document.getElementById("SkitFilterStarring");

	categoryBlock.style.display = "none";
	producersBlock.style.display = "none";
	ratingsBlock.style.display = "none";
	releaseBlock.style.display = "none";
	starringBlock.style.display = "none";

	if ( skitToHighlight.indexOf( allFilterPrefix.toLowerCase() ) == 0 ) {
		SkitFilterAllChanged( );
	} else if ( skitToHighlight.indexOf( newFilterPrefix.toLowerCase() ) == 0 ) {
		SkitFilterNewChanged( );
	} else if ( skitToHighlight == categoryFilterPrefix.toLowerCase() ) {
		categoryBlock.style.display = "inline";
		SkitFilterCategoryChanged( keypress );
	} else if ( skitToHighlight == producersFilterPrefix.toLowerCase() ) {
		producersBlock.style.display = "inline";
		SkitFilterProducersChanged( keypress );
	} else if ( skitToHighlight == ratingsFilterPrefix.toLowerCase() ) {
		ratingsBlock.style.display = "inline";
		SkitFilterRatingsChanged( keypress );
	} else if ( skitToHighlight == releaseDateFilterPrefix.toLowerCase() ) {
		releaseBlock.style.display = "inline";
		SkitFilterReleaseDateChanged( keypress );
	} else if ( skitToHighlight == starringFilterPrefix.toLowerCase() ) {
		starringBlock.style.display = "inline";
		SkitFilterStarringChanged( keypress );
	}
}




function MembersOnlyChanged( keypress ) {
	SkitFilterTypeChanged( keypress );
}




function IsItemInArray( arr, item ) {
	var i = 0;

	for ( i = 0;  i < arr.length;  i++ ) {
		if ( arr[ i ].toLowerCase() == item.toLowerCase() ) {
			return true;
		}
	}

	return false;
}



function GetSelectHTML( filterType, filterList ) {
	var str = "";
	var selected = "";
	var lastSelection = "";

	if ( window != window.parent ) {
		lastSelection = window.parent.GetTabFilter( MembersOnlyEnabled(), "SkitFilter" + filterType );
	}

	str += "<select id=\"SkitFilter" + filterType + "\" name=\"SkitFilter" + filterType + "\" STYLE=\"background-color:black; color: white; font-family: Arial,Verdana,sans serif; font-size: 9pt; font-style:  normal;\" onmousedown=\"DropDownFilterFocus( this );\" onfocus=\"DropDownFilterFocus( this );\" onblur=\"DropDownFilterBlur( this );\" onkeypress=\"SkitFilter" + filterType + "Changed(true);\" onchange=\"SkitFilter" + filterType + "Changed(false);\">";

	for ( i = 0;  i < filterList.length;  i++ ) {
		if ( filterList[ i ] == lastSelection  || 
		     (lastSelection == ""  &&  i == 0) ) {
			selected = " selected ";
		} else {
			selected = "";
		}
		str += "<option value=\"" + filterList[i] + "\" " + selected + ">" + filterList[i] + "</option>";
	}

	str += "</select>";

	return str;
}



function PreprocessValue( str ) {
	str = StripHTML( str );

	str = str.replace(/guest stars$/gi, "");
	str = str.replace(/rating$/gi, "");
	str = str.replace(/show$/gi, "");
	str = str.replace(/categories$/gi, "");
	str = str.replace(/category$/gi, "");
	str = str.replace(/producers$/gi, "");
	str = str.replace(/producer$/gi, "");

	str = TrimWhitespace( str );

	return str;
}



// do sort so that numbers are sorted correctly and it is case-insensitive
function CorrectedSort( a, b )
{
	var aLower = a.toLowerCase();
	var bLower = b.toLowerCase();

	if ( aLower < bLower ) {
		ret = -1;
	} else if ( aLower > bLower ) {
		ret = +1;
	} else {
		ret = 0;
	}

	// descending order for numbers and star ratings
	if ( a > 0  ||  a.substring(0, 1) == "*" ) {
		ret = -ret;
	}

	// Unknown is always shown at top
	if ( a == missingFilterPrefix ) {
		ret = -1;
	} else if ( b == missingFilterPrefix ) {
		ret = +1;
	}

	return ret;
}


function AddArrayEntries( destination, source ) {
	var i = 0;
	var j = 0;

	for ( i = 0;  i < source.length;  i++ ) {
		var arrayEntry = TrimWhitespace( StripHTML( source[ i ] ) );
		var entries = arrayEntry.split(",");

		for ( j = 0;  j < entries.length;  j++ ) {
			var entry = TrimWhitespace( entries[ j ] );

			if ( entry == "" ) {
				entry = missingFilterPrefix;
			}

			if ( !IsItemInArray( destination, entry ) ) {
				destination[ destination.length ] = entry;
			}
		}
	}

	destination.sort(CorrectedSort);
}



function IntegrityCheck() {
	var minSize = Math.min( skitInfo.length, skitLinks.length, skitImages.length );
	var maxSize = Math.max( skitInfo.length, skitLinks.length, skitImages.length );

	if ( minSize != maxSize ) {
		if ( skitInfo.length < maxSize ) {
			alert( "HTML ERROR: There is " + (maxSize - skitInfo.length) + " missing <table> tags with id and name attributes of SkitInfo" );
		}

		if ( skitLinks.length < maxSize ) {
			alert( "HTML ERROR: There is " + (maxSize - skitLinks.length) + " missing <a> tags with id and name attributes of SkitLink" );
		}

		if ( skitImages.length < maxSize ) {
			alert( "HTML ERROR: There is " + (maxSize - skitImages.length) + " missing <img> tags with id and name attributes of SkitImage" );
		}
	}
}



function IntegrityCheck2() {
	var lastSkitName = "";

	// Check for skits not in alphabetical order
	for ( i = 0;  i < ActualNumberOfSkits();  i++ ) {
		if ( skitNames[ i ].toLowerCase() < lastSkitName.toLowerCase() ) {
			alert( "HTML ERROR: The skit in position " + i + " named \"" + lastSkitName + "\" is not in alphabetical order.  It's HTML skitInfo block should appear later in the file after other skit(s)." );

			return false;
		}

		lastSkitName = skitNames[ i ];
	}

	// Check for internal skits that are not hidden
	for ( i = 0;  i < ActualNumberOfSkits();  i++ ) {
		if ( skitLinks[ i ].href.toLowerCase().indexOf("internal/") >= 0  &&
		     skitInfo[ i ].style.display != "none" ) {
			alert( "HTML ERROR: The skit in position " + i + " named \"" + skitNames[ i ] + "\" has its credits .htm file stored in the internal folder, but its display style is not property set to none.  Either change its style to block or move its credits .htm file from the internal folder to the skits folder." );

			return false;
		}
	}

}



function ParseSkitInfo( ) {
	// Parsing code
	var skitNumber = 0;

	for ( skitNumber = 0;  skitNumber < ActualNumberOfSkits();  skitNumber++ ) {
		var currentWord = "";
		var currentWordLower = "";
		var previousWordLower = "";
		var rating = "?";
		var producers = "Unknown";
		var show = "";
		var starring = "Unknown";
		var categories = "None";
		var link = skitLinks[ skitNumber ];
		var image = skitImages[ skitNumber ];
		var infoText = TrimWhitespace( PortableGetHTMLOfObject( skitInfo[ skitNumber ] ) );
		var keywords = infoText.split(":");
		var name = "Unknown";
		var wordIndex = 0;
		var quoteSplit = StripHTML( infoText ).split("\"");

		if ( quoteSplit.length > 2 ) {
			name = quoteSplit[ 1 ];
		}

		for ( wordIndex = 0;  wordIndex < keywords.length;  wordIndex++ ) {
			currentWord = TrimWhitespace( keywords[ wordIndex ] );
			currentWordLower = currentWord.toLowerCase();

			if ( previousWordLower.lastIndexOf("rating") + "rating".length == previousWordLower.length ) {
				rating = PreprocessValue( currentWord );
			} else if ( previousWordLower.lastIndexOf("show") + "show".length == previousWordLower.length ) {
				show = PreprocessValue( currentWord );
				show = show.replace(/,.*/i, "").replace(/;.*/i, "");
			} else if ( previousWordLower.lastIndexOf("producer") + "producer".length == previousWordLower.length ) {
				producers = PreprocessValue( currentWord );
			} else if ( previousWordLower.lastIndexOf("producers") + "producers".length == previousWordLower.length ) {
				producers = PreprocessValue( currentWord );
			} else if ( previousWordLower.lastIndexOf("guest stars") + "guest stars".length == previousWordLower.length ) {
				starring = PreprocessValue( currentWord );
			} else if ( previousWordLower.lastIndexOf("categories") + "categories".length == previousWordLower.length ) {
				categories = PreprocessValue( currentWord );
			} else if ( previousWordLower.lastIndexOf("category") + "category".length == previousWordLower.length ) {
				categories = PreprocessValue( currentWord );
			}
			previousWordLower = currentWordLower;
		}

		if ( rating.toLowerCase().indexOf("new") == 0 ) {
			rating = "New!";
		}

		skitNames[ skitNumber ] = name;
		skitFilenames[ skitNumber ] = link.href;
		skitCategories[ skitNumber ] = categories;
		skitStarring[ skitNumber ] = starring;
		skitRatings[ skitNumber ] = rating;
		skitProducers[ skitNumber ] = producers;
		skitDates[ skitNumber ] = show;
		skitMembersOnly[ skitNumber ] = ( skitInfo[ skitNumber ].style.display == "none" );

		// Adjust path for members-only thumbnails (which could trigger authentication)
		if ( MembersOnlyEnabled() ) {
			if ( skitMembersOnly[ skitNumber ] ) {
				var linkPath = "../internal/" + link.href.replace(/.*\//i, "");

				link.href = linkPath;
			}
		}
	}
}




function ProcessQueryParameters( ) {
	var nameToSelect = GetQueryParameter("name");

	if ( nameToSelect == "" ) {
		return false;
	}

	document.getElementById("DescriptionBlock").style.top = "0px";
	document.getElementById("DescriptionBlock").style.overflow = "auto";
	document.body.style.backgroundImage = "url()";

	var skitNumber = 0;

	for ( skitNumber = 0;  skitNumber < ActualNumberOfSkits();  skitNumber++ ) {
		var filename = TrimWhitespace( StripHTML( skitFilenames[ skitNumber ] ) ).replace(/.*\//i, "");

		if ( filename.indexOf(nameToSelect + ".htm") == 0 ) {
			numberOfSkits = 1;
			currentSkitID = skitNumber;

			ShowOnly1Info( currentSkitID );
			break;
		}
	}

	return true;
}




function BuildTableHeader() {

	var categoryFilterList = new Array();
	var producersFilterList = new Array();
	var ratingsFilterList = new Array();
	var releaseDateFilterList = new Array();
	var starringFilterList = new Array();

	AddArrayEntries( categoryFilterList, skitCategories );
	AddArrayEntries( producersFilterList, skitProducers );
	AddArrayEntries( ratingsFilterList, skitRatings );
	AddArrayEntries( releaseDateFilterList, skitDates );
	AddArrayEntries( starringFilterList, skitStarring );

	var strHeader = "";

	strHeader += "<table id=\"SkitListHeaderHTML\" name=\"SkitListHeaderHTML\" width=\"100%\" border=\"0\" valign=\"top\" cellpadding=\"2\" cellspacing=\"0\">";

	strHeader += "<tr height=\"23\">";

	strHeader += "<td class=\"styleHeading\" UNSELECTABLE=\"on\" valign=\"top\" align=\"left\" nowrap width=\"100%\"><font size=\"-1\" color=\"white\"><b>";

	var lastSelection = "";

	if ( window != window.parent ) {
		lastSelection = window.parent.GetTabFilter( MembersOnlyEnabled(), "SkitFilterType" );
	}

	if ( lastSelection == "" ) {
		lastSelection = allFilterPrefix;
	}

	strHeader += "&nbsp;Show: <select id=\"SkitFilterType\" name=\"SkitFilterType\" STYLE=\"background-color:black; color: white; font-family: Arial,Verdana,sans serif; font-size: 9pt; font-style:  normal;\" onmousedown=\"DropDownFilterFocus( this );\" onfocus=\"DropDownFilterFocus( this );\" onblur=\"DropDownFilterBlur( this );\" onkeypress=\"SkitFilterTypeChanged(true);\" onchange=\"SkitFilterTypeChanged(false);\">";

	strHeader += "<option " + (lastSelection == allFilterPrefix ? "selected" : "") + " value=\"" + allFilterPrefix + "\">" + allFilterPrefix + "</option>";
	strHeader += "<option " + (lastSelection == newFilterPrefix ? "selected" : "") + " value=\"" + newFilterPrefix + "\">" + newFilterPrefix + "</option>";
	strHeader += "<option " + (lastSelection == categoryFilterPrefix ? "selected" : "") + " value=\"" + categoryFilterPrefix + "\">" + categoryFilterPrefix + "</option>";
	strHeader += "<option " + (lastSelection == starringFilterPrefix ? "selected" : "") + " value=\"" + starringFilterPrefix + "\">" + starringFilterPrefix + "</option>";
	strHeader += "<option " + (lastSelection == producersFilterPrefix ? "selected" : "") + " value=\"" + producersFilterPrefix + "\">" + producersFilterPrefix + "</option>";
	strHeader += "<option " + (lastSelection == ratingsFilterPrefix ? "selected" : "") + " value=\"" + ratingsFilterPrefix + "\">" + ratingsFilterPrefix + "</option>";
	strHeader += "<option " + (lastSelection == releaseDateFilterPrefix ? "selected" : "") + " value=\"" + releaseDateFilterPrefix + "\">" + releaseDateFilterPrefix + "</option>";


	strHeader += "</select> ";

	var lastPrefix = "";
	var i = 0;

	strHeader += GetSelectHTML( "Category", categoryFilterList );
	strHeader += GetSelectHTML( "Producers", producersFilterList );
	strHeader += GetSelectHTML( "Ratings", ratingsFilterList );
	strHeader += GetSelectHTML( "ReleaseDate", releaseDateFilterList );
	strHeader += GetSelectHTML( "Starring", starringFilterList );

	strHeader += "</b></font></td>";

	var lastSelection = "";

	if ( window != window.parent ) {
		lastSelection = window.parent.GetTabFilter( MembersOnlyEnabled(), "MembersOnly" );
	}

	if ( lastSelection == "" ) {
		lastSelection = MembersOnlyOnPrefix;
	}

	strHeader += "<td class=\"styleHeading\" UNSELECTABLE=\"on\" valign=\"top\" align=\"right\" nowrap";

	if ( !MembersOnlyEnabled( ) ) {
		strHeader += " style=\"display:none;\"";
	}

	strHeader += "><font size=\"-1\" color=\"white\"><b><select id=\"MembersOnly\" name=\"MembersOnly\" STYLE=\"background-color:black; color: white; font-family: Arial,Verdana,sans serif; font-size: 9pt; font-style:  normal;\" onmousedown=\"DropDownFilterFocus( this );\" onfocus=\"DropDownFilterFocus( this );\" onblur=\"DropDownFilterBlur( this );\" onkeypress=\"MembersOnlyChanged(true);\" onchange=\"MembersOnlyChanged(false);\">";
	strHeader += "<option " + (lastSelection == MembersOnlyOnPrefix ? "selected" : "") + " value=\"" + MembersOnlyOnPrefix + "\">Both</option>";
	strHeader += "<option " + (lastSelection == MembersOnlyOnlyPrefix ? "selected" : "") + " value=\"" + MembersOnlyOnlyPrefix + "\">* Members-Only</option>";
	strHeader += "<option " + (lastSelection == MembersOnlyOffPrefix ? "selected" : "") + " value=\"" + MembersOnlyOffPrefix + "\">Public-Only</option>";

	strHeader += "</select> ";

	strHeader += "</b></font></td>";

	strHeader += "</tr>";
	strHeader += "</b></font>";
	strHeader += "</table>";

	var skitListHeaderWrapper = document.getElementById("SkitListHeaderWrapper");
	var skitListHeaderHTML = document.getElementById("SkitListHeaderHTML");

	PortableSetOuterHTMLOfObject( skitListHeaderHTML, strHeader );
	skitListHeaderWrapper.style.display = "block";
}




function PageEnd() {
	pageEndCalled = true;

//	document.getElementById("MainBlock").style.cursor = "wait";
	document.body.style.cursor = "wait";


	if ( SkitSelectionEnabled() ) {
		document.body.style.backgroundColor = "#254060";
	}

	document.getElementById("DescriptionBlock").style.top    = "214px";
	document.getElementById("DescriptionBlock").style.height = "125px";

	skitInfo = document.getElementsByName("SkitInfo");
	skitLinks = document.getElementsByName("SkitLink");
	skitImages = document.getElementsByName("SkitImage");

	IntegrityCheck( );

	ParseSkitInfo( );

	IntegrityCheck2( );

	if ( window != window.parent  &&  typeof(window.parent.NotifyTabLoaded) != "undefined" ) {
		if ( MembersOnlyEnabled() ) {
			window.parent.NotifyTabLoaded("MembersOnlySkitList");
		} else {
			window.parent.NotifyTabLoaded("SkitList");
		}
	}

	if ( ProcessQueryParameters( ) ) {
		if ( window != window.parent ) {
			window.parent.SetSkitFriendlyName( skitNames[ currentSkitID ] );
		}

		document.getElementById("MainBlock").style.visibility = "visible";
		document.body.style.cursor = "default";
		window.focus();
		return;
	}

	var previousSkit = "";

	// Get previous skit before it gets changed by subsequent functions
	if ( window != window.parent ) {
		previousSkit = window.parent.GetTabSkit( MembersOnlyEnabled() );
	}

	BuildTableHeader();

	SkitFilterTypeChanged( false );

	var skitID = currentSkitID;

	var success = false;

	if ( window != window.parent ) {
		var i = 0;

		// first match on last skit used in this tab
		for ( i = 0;  i < ActualNumberOfSkits();  i++ ) {
			if ( skitFilenames[ i ].replace(/.*\//i, "").replace(/\.htm/i, "") == previousSkit ) {
				if ( skitListRows[ i ].style.display != "none" ) {
					skitID = i;
					success = true;
				}

				break;
			}
		}
	}

	document.getElementById("MainBlock").style.visibility = "visible";

	HighlightSkit( skitID, true );

	// force scroll
	Scroll( currentSkitID, true );

//	document.getElementById("MainBlock").style.cursor = "default";
	document.body.style.cursor = "default";

	window.focus();
}




function OnLoad() {
//	pageLoaded = true;

	if ( !pageEndCalled ) {
		PageEnd();
	}

	if ( window != window.parent ) {
		if ( typeof(window.parent.Phase1SkitDetailsLoaded) != "undefined" ) {
			window.parent.Phase1SkitDetailsLoaded();
		}
	}
}
