var storeOrderLinkIDs = new Array;
var orderCounter = 0;

var allLinkTypes = new Array;
var allLinkTypesText = new Array;
var LinkTypesCounter = 0;

var storeTopicTitle = new Array;
var storeTopicIntro = new Array;
var storeTopicID = new Array;
var TopicCounter = 0;
var TopicIndex;

var storeLinkID = new Array;
var storeLinkType = new Array;
var storeLinkTopicID = new Array;
var storeLinkPage = new Array;
var storeLinkText = new Array;
var storeLinkURL = new Array;
var storeLinkEntity = new Array;
var LinkCounter = 0;

function addLinkType(getLinkType,getLinkTypeText) {
	allLinkTypes[LinkTypesCounter] = getLinkType;
	allLinkTypesText[LinkTypesCounter] = getLinkTypeText;
	LinkTypesCounter +=1;
}

function addTopic(getTopicID,getTopicTitle,getTopicIntro) {
	storeTopicID[TopicCounter] = getTopicID;
	storeTopicTitle[TopicCounter] = getTopicTitle;
	storeTopicIntro[TopicCounter] = getTopicIntro;
	TopicCounter +=1;
}

function FormatURL(NewString) {
	var maxLength = 48;
	var StringLength = NewString.length;
	var Countdown = maxLength;
	var StringToWrite = '';
		while (NewString.length > maxLength) {
			Countdown = 50;
			StringLength = NewString.length;
			while (NewString.length == StringLength) {
				FocusPoint = NewString.charAt(Countdown-1);
				if (FocusPoint == "/") {
					StringToWrite += NewString.substring(0,Countdown) + "<BR>";
					NewString = NewString.substring(Countdown,StringLength);
				}
				if (Countdown == 1) {
					StringToWrite += NewString.substring(0,maxLength) + "<BR>";
					NewString = NewString.substring(maxLength,StringLength);
				}
			Countdown -=1;
			}
		}
	StringToWrite += NewString;
	return StringToWrite;
}

function addLink(getLinkID,getSyncTopicID,getPageNumber,getLinkType,getLinkTitle,getLinkDescription,getTarget,getWorkURL,getPlainURL,getEntityTitle) {
	storeLinkID[LinkCounter] = getLinkID;
	storeLinkTopicID[LinkCounter] = getSyncTopicID;
	storeLinkPage[LinkCounter] = getPageNumber;
	storeLinkType[LinkCounter] = getLinkType;
	storeLinkURL[LinkCounter] = getWorkURL;
	storeLinkEntity[LinkCounter] = getEntityTitle;
	//if (getLinkType != "mp3")
	BuildSpan = "<a href='" + getWorkURL + "' target='" + getTarget + "'>";// else BuildSpan = "";
	if(getLinkTitle!="") {
      BuildSpan += getLinkTitle;
    } else {
      BuildSpan += FormatURL(getPlainURL);
	}
	//if (getLinkType != "mp3")
	BuildSpan += "</a>";
	
	if(getLinkDescription!="") {
	  BuildSpan += "<br>" + getLinkDescription;
	}
	storeLinkText[LinkCounter] = BuildSpan;
	LinkCounter +=1;
}

function getTopicIndex(findIndex) {
	for(x=0;x< TopicCounter;x++) {
		if(storeTopicID[x] == findIndex) TopicIndex = x;
	}
}

function writeLinkData() {
	
	var entityTitleURL;
	document.write("<div id='LinkListingInitialSpacer'></div>"); // Add a spacer
	
	// Topic Panel Links
	for(z=0;z < TopicCounter;z++) {
		PrevLinkType = "";
		TopicLinkTypeCount = 0;
		if(storeTopicTitle[z] != "NON TOPIC") {
			linksFound = false;
			for(i=0;i< LinkCounter;i++) {
				if(storeLinkTopicID[i] == storeTopicID[z]) {
					linksFound = true;
					if(PrevLinkType != storeLinkType[i]) TopicLinkTypeCount += 1;
					PrevLinkType = storeLinkType[i];
				}
			}
			if(linksFound) {
			
				document.write("<div id='TopicListingElement'><div id='TopicListingElementTitle'>" + storeTopicTitle[z] + "</div><div id='TopicListingContent'>");
				if(storeTopicIntro[TopicIndex] != "") document.write(storeTopicIntro[z]);
				
				for(n=0;n < LinkTypesCounter;n++) {
				
					LinkTypeMatch = false;
					for(i=0;i< LinkCounter;i++) {
						if((storeLinkTopicID[i] == storeTopicID[z]) && (storeLinkType[i] == allLinkTypes[n])) LinkTypeMatch = true;
					}
				
					if(LinkTypeMatch) {
						firstLoop = true;
						document.write("<div id='LinkListingElement'>");
						if(TopicLinkTypeCount > 1) document.write("<div id='LinkListingElementTitle'><img src='/images/icons/" + allLinkTypes[n] + ".gif' width=18 height=12 border=0 align='absmiddle'>" + allLinkTypesText[n] + "</div>");
						document.write("<div id='LinkListingContent'>");
				
						for(i=0;i< LinkCounter;i++) {
							if((storeLinkTopicID[i] == storeTopicID[z]) && (storeLinkType[i] == allLinkTypes[n])) {
								if(firstLoop) firstLoop = false
								else document.write("<div id='LinkListingSpacer'></div>");
								document.write("<div class=\"linkItem\">" + storeLinkText[i]);
								entityTitleURL = storeLinkEntity[i];
								entityTitleURL = entityTitleURL.toLowerCase();
								entityTitleURL = entityTitleURL.replace(/\s/g,"_");
								if(storeLinkType[i] == "mp3") document.write("<div class=\"flashPlayer\">" + embedSoundPlayer(storeLinkURL[i],entityTitleURL) + "</div></div>"); else document.write("</div>");
								//if(storeLinkType[i] == "mp3") document.write("<div class=\"flashPlayer\"></div></div>"); else document.write("</div>");
								storeOrderLinkIDs[orderCounter] = i;
								orderCounter+=1;
							}
						}
						document.write("</div></div>");
					}
				}
				document.write("</div></div>");
			}
		}
	}
	
	
	// General Links
	
	for(n=0;n < LinkTypesCounter;n++) {
				
		LinkTypeMatch = false;
		for(i=0;i< LinkCounter;i++) {
			if(storeLinkTopicID[i] == 0 && (storeLinkType[i] == allLinkTypes[n])) LinkTypeMatch = true;
		}
					
		if(LinkTypeMatch) {
			firstLoop = true;
			document.write("<div id='LinkListingElement'>");
			document.write("<div id='LinkListingElementTitle'><img src='/images/icons/" + allLinkTypes[n] + ".gif' width=18 height=12 border=0 align='absmiddle'>" + allLinkTypesText[n] + "</div>");
			document.write("<div id='LinkListingContent'>");
		
			for(i=0;i< LinkCounter;i++) {
				if(storeLinkTopicID[i] == 0 && (storeLinkType[i] == allLinkTypes[n])) {
					if(firstLoop) firstLoop = false
					else document.write("<div id='LinkListingSpacer'></div>");
					document.write("<div class=\"linkItem\">" + storeLinkText[i]);
					entityTitleURL = storeLinkEntity[i];
					entityTitleURL = entityTitleURL.toLowerCase();
					entityTitleURL = entityTitleURL.replace(/\s/g,"_");
					if(storeLinkType[i] == "mp3") document.write("<div class=\"flashPlayer\">" + embedSoundPlayer(storeLinkURL[i],entityTitleURL) + "</div></div>"); else document.write("</div>");
					//if(storeLinkType[i] == "mp3") document.write("<div class=\"flashPlayer\"></div></div>"); else document.write("</div>");
					storeOrderLinkIDs[orderCounter] = i;
					orderCounter+=1;
				}
			}
			document.write("</div></div>");
		}
	}
}

// Function to embed Flash sound player

function embedSoundPlayer(soundURL,soundTitle) {
	var flashString;
	if (flash.ver[8]) {
		flashString = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='40' height='15'>";
		flashString += "<param name='movie' value='/flash/ql_sound_player.swf?soundURL=" + escape(soundURL) + "&soundTitle=" + escape(soundTitle) + "'><param name='quality' value='high'>";
		flashString += "<param name='wmode' value='transparent'>";
		flashString += "<embed src='/flash/ql_sound_player.swf?soundURL=" + escape(soundURL) + "&soundTitle=" + escape(soundTitle) + "' ";
		flashString += "wmode='transparent' ";
		flashString += "quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='40' height='15'><\/embed>";
		flashString += "<\/object>";
	} else {
		flashString = "";
	}
	return flashString;
}

/*******************************************************
FLASH DETECT 2.5
All code by Ryan Parman and mjac, unless otherwise noted.
(c) 1997-2004 Ryan Parman and mjac
http://www.skyzyx.com
Additional code by Semantic: www.semantic.co.uk
*******************************************************/

// This script will test up to the following version.
flash_versions = 20;

// Initialize variables and arrays
var flash = new Object();
flash.installed=false;
flash.version='0.0';

var isOpera = window.opera ? true : false;

if(isOpera) {

	// Disable flash in Opera as zIndex menus don't work properly
	flash.ver = Array();
	for(i = 4; i <= flash_versions; i++) {
		flash.ver[i] = false;
	}


} else {

	// Dig through Netscape-compatible plug-ins first.
	if (navigator.plugins && navigator.plugins.length) {
		for (x=0; x < navigator.plugins.length; x++) {
			if (navigator.plugins[x].name.indexOf('Shockwave Flash') != -1) {
				flash.version = navigator.plugins[x].description.split('Shockwave Flash ')[1];
				flash.installed = true;
				break;
			}
		}
	}
	
	// Then, dig through ActiveX-style plug-ins afterwords
	else if (window.ActiveXObject) {
		for (x = 2; x <= flash_versions; x++) {
			try {
				oFlash = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + x + "');");
				if(oFlash) {
					flash.installed = true;
					flash.version = x + '.0';
				}
			}
			catch(e) {}
		}
	}
	
	// Create sniffing variables in the following style: flash.ver[x]
	// Modified by mjac
	flash.ver = Array();
	for(i = 4; i <= flash_versions; i++) {
		eval("flash.ver[" + i + "] = (flash.installed && parseInt(flash.version) >= " + i + ") ? true : false;");
	}

}