<!-- script Language="javascript" -->
// Functions

var samalnko = "http://www.amazon.co.uk/exec/obidos/ASIN/";		// Opening amazon link
var samalnkc = "/webrevelationl0f";								// Closing amazon link
var simgs = "_s.jpg";											// Small image postfix
var smp3 = ".mp3";												// MP3 file postfix
var simgdir = "../images/items/";								// Images directory
var smp3dir = "http://downloads.claudiofiore.co.uk/legacymp3/";										// MP3 directory
var NLCR = "\n";
var iTITLE = 0; var iARTIST = 1; var iALBUM = 2; var iITEMID = 3; var iASIN = 4;
var sSortOrd;
var sSortDir;
var iPageNum = 0;
var iFstItem = 0;
var bColour = false;
// Image pre-loaders
var imgs = new Array(4);
var imgcnt = 0;

function ViewLarge(iItemIndex) {
	var sTitle = GetValue(iALBUM, iItemIndex) + " - " + GetValue(iARTIST, iItemIndex);
	var sItemName = GetValue(iITEMID, iItemIndex);
	var sTheURL = "showpic.htm?cdt=" + escape(sTitle) + "&img=" + sItemName;
	var oLargeImg = null;
	openNewWindow(oLargeImg, "oLargeImg", sTheURL, 142, 220, 250, 250);
}

function PlayMP3(iItemIndex) {
	var sPlayStr = smp3dir + GetValue(iITEMID, iItemIndex) + smp3;
	var oPlayWind = null;
	openNewWindow(oPlayWind, "oPlayWind", sPlayStr, 140, 140, 250, 250);
}

function GetValue(iValueType, iItemIndex) {
	// Returns the value of the requested field
	if ( (iItemIndex >= iItems) || (iItemIndex < 0) ) {
		alert("INVALID ITEM ID!");
		document.location.href = "favorites.htm";
	}
	var aTmp = aItem[iItemIndex].split(";");
	return aTmp[iValueType];
}

function AddItem(iItemIndex, sTit, sArt, sAlb, sIDNum, sASIN) {
	aItem[iItemIndex] = sTit + ";" + sArt + ";" + sAlb + ";" + sIDNum + ";" + sASIN;
}

function BuildTR(iItemIndex) {
	var sRetTR = "";	// Return value as HTML string
	// Get item details
	var sBTit = GetValue(iTITLE, iItemIndex);
	var sBItm = GetValue(iITEMID, iItemIndex);
	var sBASIN = GetValue(iASIN, iItemIndex);
	var sBAlbum = GetValue(iALBUM, iItemIndex);
	var sBArtist = GetValue(iARTIST, iItemIndex);
	var sPlayStr = smp3dir + GetValue(iITEMID, iItemIndex) + smp3;
	var sBGCol = "";
	
	if (!bColour) { sBGCol = 'bgcolor="#F4EAFF" '; }
	else { sBGCol = 'bgcolor="#FFFFFF" '; }
	bColour = !bColour;
	
	// Preload the image
	imgs[imgcnt] = new Image();
	imgs[imgcnt].src = simgdir + sBItm + simgs;
	imgcnt++;
	
	// Build the Table Row with the Favorite details
	sRetTR = sRetTR + '<tr><td align="center" valign="middle" ' + sBGCol + 'colspan="2" ' + 
		'><img src="../images/spacer.gif" width="1" height="1" border="0" alt="spacer"></td></tr>' + NLCR;
	sRetTR = sRetTR + "<tr><td align='center' valign='top' class='textsmall' " + sBGCol + 
		"style='border-bottom:1px #431085 solid;'><a href='";
	sRetTR = sRetTR + samalnko + sBASIN + samalnkc + "' target='new'><img " + NLCR;
	sRetTR = sRetTR + "class='imgborder' src='" + simgdir + sBItm + simgs + "' width='65' height='65' " + NLCR;
	sRetTR = sRetTR + 'alt="Read more on amazon.co.uk - ' + sBAlbum + " by " + sBArtist + '" ' + NLCR;
	sRetTR = sRetTR + "border='0'></a><br><a title='View a larger version of the cover in a new window' " + NLCR;
	sRetTR = sRetTR + "href='JavaScript:ViewLarge(" + iItemIndex + ");'>View " + NLCR;
	sRetTR = sRetTR + "larger image</a></td>" + NLCR;
	sRetTR = sRetTR + '<td align="left" valign="top" class="text" ' + sBGCol + 
		'style="border-bottom:1px #431085 solid;padding-right:5px;"><span ' + NLCR;
	sRetTR = sRetTR + "class='titlesub'><a href='" + sPlayStr + "' target='new' " + NLCR;
	sRetTR = sRetTR + 'title="Play MP3 clip of ' + sBTit + '"><img ' + NLCR;
	sRetTR = sRetTR + 'src="../images/tspeaker.gif" border="0" alt="Play MP3 clip of ' + sBTit +
		" by " + sBArtist + '" ' + NLCR;
	sRetTR = sRetTR + 'style="margin-top:0px; margin-bottom:0; margin-right:5px;" width="12" height="10">PLAY MP3 CLIP - ' +
		sBTit + '</a></span><br><br>' + NLCR;
	sRetTR = sRetTR + '<span class="titlesub">' + sBArtist + ' - CD: ' + sBAlbum +
		'</span><br>' + NLCR;
	sRetTR = sRetTR + aDesc[iItemIndex] + '<br><br>' + NLCR;
	sRetTR = sRetTR + '<span class="menubot"><a href="' + samalnko + sBASIN + samalnkc + 
		'" target="new" ' + NLCR;
	sRetTR = sRetTR + 'title="Read more on amazon.co.uk - CD Title: ' + sBAlbum + '">' +
		'Click here to find out more on Amazon.co.uk</a></span></td></tr>' + NLCR;
	
		
	// Return the HTML string
	return sRetTR;
}

function FirstItem(iPageNumber) {
	// Returns the Lists for the given page
	var iFirstItem = 0;
	// Get the first item of the given page
	iFirstItem = (iPageNumber * 4) - 4;
	// Return Index of first item
	return iFirstItem;
}

function BuildPageLinks(iPageNumber, bAlign) {
	// Bullds the Page navigation links
	var sRetVal = '';
	var sRetPrev = '';
	var sRetNext = ' ';
	if (bAlign) {
		var sOpenHTM = '<span class="menupage" style="height:100%;padding-bottom:2px;text-align:right;">(';
	}
	else {
		var sOpenHTM = '<span class="menupage">(';
	}
	var iCount = 0;
	var sPageURLo = ' <a href="favorites.htm?page=';
	var iTmpPages = Math.round(iItems / 4);
	var iAllPages = iItems / 4;
	var iPages = 0;
	
	if ( (iAllPages - iTmpPages) > 0 ) {
		iPages = iTmpPages + 1;
	}
	else {
		iPages = iTmpPages;
	}
	if (iPages < 1) { iPages = 1; }
	
	for (iCount=1; iCount<=iPages; iCount++) {
		if (iCount != iPageNumber) {
			sRetVal = sRetVal + sPageURLo + iCount + '&sort=' + sSortOrd + '&sdir=' + sSortDir +
				'" title="Goto Favorite Tracks Page ' + iCount + '">' + iCount + "</a>";
		}
		else {
			sRetVal = sRetVal + ' <span style="color:#FF6060">' + iCount + "</span>";
		}
	}
	
	// Add previous and Next
	if (iPageNumber > 1) {
		sRetPrev = sPageURLo + eval(iPageNum - 1) + '&sort=' + sSortOrd + '&sdir=' + sSortDir +
			'" title="goto Previous page of favorites">Previous page</a> ';
	}
	if (iPageNumber < iPages) {
		sRetNext = ' ' + sPageURLo + eval(iPageNum + 1) + '&sort=' + sSortOrd + '&sdir=' + sSortDir +
			'" title="goto Next page of favorites">Next page</a> ';
	}
	
	// Add previous and Next links if available
	sRetVal = sOpenHTM + sRetPrev + sRetVal + sRetNext;
	
	// Close the span
	sRetVal = sRetVal + ")</span>";
	
	// Return the Paging header
	return sRetVal;
}


function isNumeric(sString) {
	// Returns true is string is ONLY numeric
	// Returns flase if not.
	var sChkNum = "0123456789";
	var iChk = 0; var iCount = 0;
	var bRetVal = true;
	
	for (iCount=0; iCount<sString.length; iCount++) {
		if (sChkNum.indexOf(sString.charAt(iCount)) == -1) {
			return false;
		}
	}
	return true;
}

// Build required data
function BuildTable() {
	var sPageNum = sGetQSVal('page');	// Get page number from QS
	var iNumPages = 0;					// Total number of pages
	var iSortBy;						// Sort by field index
	SetItems();							// Build the item data into arrays
	
	// Sort the list?
	sSortOrd = sGetQSVal('sort');		// Sort field from QS
	if (sSortOrd == '') {
		// Blank sort order
		sSortOrd = '99';				// Unsorted
	}
	else if (!isNumeric(sSortOrd)) {
		// Invalid NON-NUMERIC sort order
		sSortOrd = '99';				// Unsorted
	}
	
	sSortDir = sGetQSVal('sdir');		// Sort direction ASC or DESC
	if (sSortDir == '') {
		// Blank sort order
		sSortDir = 'a';					// Ascending
	}
	else if ( (sSortDir.toLowerCase() != 'a') && (sSortDir.toLowerCase() != 'd') ) {
		// Invalid Sort ordering direction
		sSortDir = 'a';					// Ascending
	}
	
	// Check the value of the sort order
	iSortBy = eval(sSortOrd);
	if ( (iSortBy != 99) && ((iSortBy < 0) || (iSortBy > 2)) ) {
		// Invalid sort order. Valids are...
		// 99 - Unsorted
		// 0 - By Title
		// 1 - By Artist
		// 2 - By Album
		sSortOrd = "99";
	}
	else {
		if (iSortBy != 99) {
			SortFavs(iSortBy);
		}
	}
	
	
	if (sPageNum == "") {
		// No page specified
		iPageNum = 1;
	}
	else {
		// Page QS value found
		if (isNumeric(sPageNum)) {
			// Get value of page number as integer
			iPageNum = eval(sPageNum);
		}
		else {
			iPageNum = 1;
		}
	}
	
	// Check page exists
	var iTmpPage = Math.round(iItems / 4)
	var iAllPage = iItems / 4;
	if ( (iAllPage - iTmpPage) > 0 ) {
		iNumPages = iTmpPage + 1;
	}
	else {
		iNumPages = iTmpPage;
	}
	if (iPageNum > iNumPages) {
		// Invalid page number
		iPageNum = iNumPages;
	}
	
	// Get the first item of the requested page
	iFstItem = FirstItem(iPageNum);
}

function BuildItemList() {
	var iCount = 0;
	for (iCount=iFstItem; iCount<iFstItem+4; iCount++) {
		if (iCount<iItems) {
			document.write(BuildTR(iCount));
		}
		else { break; }
	}
}

function SortFavs(sOrder) {
	var aTmpItem = new Array(iItems);
	var aTmpDesc = new Array(iItems);
	var iFound = 0
	var iLast = 0;
	var sLast = "";
	var sChck = "";
	var iCount = 0;
	var bDone = false;
	
	while (!bDone) {
		if (aItem[iLast] != "##FOUND##") {
			// Item exists
			sLast = GetValue(sOrder, iLast);
			for (iCount=iLast+1; iCount<iItems; iCount++) {
				if (aItem[iCount] != "##FOUND##") {
					sChck = GetValue(sOrder, iCount);
					if (sSortDir == "a") {
						if (sChck < sLast) {
							iLast = iCount;
							break;
						}
					}
					else {
							if (sChck > sLast) {
							iLast = iCount;
							break;
						}
					}
				}
			}
			if (iCount >= iItems) {
				// Found item in index iLast
				aTmpItem[iFound] = aItem[iLast];
				aTmpDesc[iFound] = aDesc[iLast];
				aItem[iLast] = "##FOUND##";
				aDesc[iLast] = "";
				iFound++;
				iLast = 0;
				if (iFound >= iItems) {
					// All done
					bDone = true;
				}
			}
		}
		else {
			iLast = iLast + 1;
			if (iLast >= iItems) {
				// No more to process
				bDone = true;
			}
		}
	}
	
	/* var sSortBy = "";
	var sOutStr = "";
	if (sOrder == iTITLE) {
		sSortBy = "Track title";
	}
	else if (sOrder == iARTIST) {
		sSortBy = "Artist";
	}
	else if (sOrder == iALBUM) {
		sSortBy = "Album";
	}
	else {
		sSortBy = "Unknown!";
	}
		
	document.write("Sorted by: " + sSortBy + "<br>\n");
	for (iCount=0; iCount<iItems; iCount++) {
		document.write(aTmpItem[iCount] + "<br>\n");
	} */
	
	aItem = aTmpItem;
	aDesc = aTmpDesc;
}

function GetSortHTML() {
	// Generates the HTML code for resorting the data.
	var sCurOrd = "";
	var sNewOrd = "";
	var sTmpUns = "";
	var sTmpTit = "";
	var sTmpArt = "";
	var sTmpAlb = "";
	var sRetHTML = "";
	if (sSortOrd == '99') { sCurOrd = "Unsorted"; }
	else {
		if (sSortOrd == '0') {
			sCurOrd = "Track title";
			sNewOrd = "Track title";
		}
		else if (sSortOrd == '1') {
			sCurOrd = "Artist";
			sNewOrd = "Artist";
		}
		else if (sSortOrd == '2') {
			sCurOrd = "CD title";
			sNewOrd = "CD title";
		}
	}
	if ( (sSortDir == 'a') && (sSortOrd != '99') ) {
		sCurOrd = sCurOrd + " - asc";
		sNewOrd = sNewOrd + " - desc";
	}
	else if ( (sSortDir == 'd') && (sSortOrd != '99') ) {
		sCurOrd = sCurOrd + " - desc";
		sNewOrd = sNewOrd + " - asc";
	}
	// Build URL's
	// Unsorted
	if (sSortOrd == '99') {
		sTmpUns = '<span class="menubot" style="height:100%;padding-bottom:2px">| <a href="favorites.htm?page=' + iPageNum + 
			'&sort=99&sdir=a" title="Reset to unsorted list">Unsorted</a> | </span>&nbsp;';
	}
	else {
		sTmpUns = '<span class="menupage" style="height:100%;padding-bottom:2px">| <a href="favorites.htm?page=' + iPageNum + 
			'&sort=99&sdir=a" title="Reset to unsorted list">Unsorted</a> | </span>&nbsp;';
	}
	// By Track title
	if (sSortOrd == '0') {
		// Currently sorted by title
		if (sSortDir == 'a') {
			sTmpTit = '<span class="menubot" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
				'&sort=0&sdir=d" title="Sort by Track title Descending">' + sNewOrd + '</a> | </span>&nbsp;';
		}
		else {
			sTmpTit = '<span class="menubot" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
				'&sort=0&sdir=a" title="Sort by Track title Ascending">' + sNewOrd + '</a> | </span>&nbsp;';
		}
	}
	else {
		sTmpTit = '<span class="menupage" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
			'&sort=0&sdir=a" title="Sort by Track title Ascending">Track title</a> | </span>&nbsp;';
	}
	// By Artist
	if (sSortOrd == '1') {
		// Currently sorted by Artist
		if (sSortDir == 'a') {
			sTmpArt = '<span class="menubot" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
				'&sort=1&sdir=d" title="Sort by Artist Descending">' + sNewOrd + '</a> | </span>&nbsp;';
		}
		else {
			sTmpArt = '<span class="menubot" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
				'&sort=1&sdir=a" title="Sort by Artist Ascending">' + sNewOrd + '</a> | </span>&nbsp;';
		}
	}
	else {
		sTmpArt = '<span class="menupage" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
			'&sort=1&sdir=a" title="Sort by Artist Ascending">Artist</a> | </span>&nbsp;';
	}
	// By CD title
	if (sSortOrd == '2') {
		// Currently sorted by title
		if (sSortDir == 'a') {
			sTmpAlb = '<span class="menubot" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
				'&sort=2&sdir=d" title="Sort by CD title Descending">' + sNewOrd + '</a> |</span>';
		}
		else {
			sTmpAlb = '<span class="menubot" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
				'&sort=2&sdir=a" title="Sort by CD title Ascending">' + sNewOrd + '</a> |</span>';
		}
	}
	else {
		sTmpAlb = '<span class="menupage" style="height:100%;padding-bottom:2px"><a href="favorites.htm?page=' + iPageNum + 
			'&sort=2&sdir=a" title="Sort by CD title Ascending">CD title</a> |</span>';
	}
	
	// Build output HTML string
	sRetHTML = '<span class="menubot" style="height:100%;padding-bottom:2px">Sort by ( ' + 
		sCurOrd + ' ):</span>&nbsp;&nbsp;&nbsp;' + sTmpUns + sTmpTit + sTmpArt + sTmpAlb;
	
	// Return the string
	return sRetHTML;
}
