		var ajaxResponse;

		function checkParams()
		{
			p = document.getElementById('perf').value;
			o = document.getElementById('orig').value;
			if (p && o)
			{
				findLinks();
			}
		}

                function findLinks()
	    	{
		showProcessing();
                url = "aj_findLinksBetween.cgi";
		var perf = escape(document.getElementById('perf').value);
		var orig = escape(document.getElementById('orig').value);
                p = {perf: perf, orig: orig};
                ajaxResponse = new Ajax.Request(
                        url,
                        {
                                method: 'get',
                                parameters: p,
                                onSuccess: showResponse,
                                onFailure: showFailure
                        });
                }

                function showFailure()
	        {
			stopShowProcessing();
		        alert("failure");
		}

                function showResponse(req)
                {
			if (1) 
			{
				var s = '';
	                	var o = eval('(' + req.responseText + ')');
				var perfs = o[0];
				var origs = o[1];
				var covers = o[2];
				if ((perfs.length<1) || (origs.length<1) || (covers.length<1))
				{
					s = describeErrors(perfs, origs, covers);
				}
				else
				{
					s = describeCovers(covers);
				}
                        	document.getElementById('results').innerHTML = s;
				paintZebra();
			}
			else
			{
                        	document.getElementById('results').innerHTML = req.responseText;
			}
                }

		function describeCovers(covers)
		{
			var cv = '';

			cv += drawTable(covers);

			return cv;
		}

		function drawTable(covers)
		{
			res = tableTop();

                        // left
                        res += '<tr>';
                        res += '<td STYLE="background-image: url(\'art/l.gif\');"/>';
                        res += '<td>';

                        // start content
                        res += '<table class="zebra scheme1" cellpadding="2" cellspacing="0">';
                        res += '<tr>';
                        res += '<th align="left">&nbsp;Cover Artist</th>';
                        res += '<th>&nbsp</th>';
                        res += '<th align="left">&nbsp;Track</th>';
                        res += '<th>&nbsp</th>';
                        res += '<th align="left">&nbsp;Original Artist</th>';
                        res += '</tr>';
                        for (index=0; index<covers.length; index++)
                        {
                                pname = unescape(covers[index].data.p);
                                oname = unescape(covers[index].data.o);
                                tname = unescape(covers[index].data.t);
                                res += '<tr><td>&nbsp;<a class="intab" href="findArtist.cgi?artist='
                                        + escape(pname) + '">' + pname + '<a/>&nbsp;</td>';
                                res += '<td class="faint">&nbsp;<i>covered</i>&nbsp;</td>';
                                res += '<td>&nbsp;<a class="intab" href="findTrack.cgi?track='
                                        + escape(tname) + '">' + tname + '<a/>&nbsp;</td>';
                                res += '<td class="faint">&nbsp;<i>by</i>&nbsp;</td>';
                                res += '<td>&nbsp;<a class="intab" href="findArtist.cgi?artist='
                                        + escape(oname) + '">' + oname + '<a/>&nbsp;</td></tr>';
                        }
                        res += '</table>';
                        // end content

                        // right
                        res += '</td>';
                        res += '<td STYLE="background-image: url(\'art/r.gif\');"/>';
                        res += '</tr>';

			res += tableBottom();

			return res;
		}

                function tableTop()
                {
                        res = '<table border="0" cellpadding="0" cellspacing="0">';
                        res += '<tr>';
                        res += '<td><img src="art/t_l.gif"/></td>';
                        res += '<td STYLE="background-image: url(\'art/t.gif\');"/>';
                        res += '<td><img src="art/t_r.gif"/></td>';
                        res += '</tr>';

                        return res
                }

                function tableBottom()
                {
                        res = '<tr>';
                        res += '<td><img src="art/b_l.gif"/></td>';
                        res += '<td STYLE="background-image: url(\'art/b.gif\');"/>';
                        res += '<td><img src="art/b_r.gif"/></td>';
                        res += '</tr>';
                        res += '</table>';

                        return res;
                }



		function describeErrors(perfs, origs, covers)
		{
			perf = document.getElementById('perf').value;
			orig = document.getElementById('orig').value;
			if ((perfs.length<1) || (origs.length<1))
			{
				s = '';
				if (perfs.length<1)
				{
					s += 'Couldn\'t find any covers for artist "' 
						+ perf + '"<br>';
				}
				if (origs.length<1)
				{
					s += 'Couldn\'t find any covers for artist "' 
						+ orig + '"<br>';
				}
				return s;
			}
			else
			{
				s = 'Couldn\'t find any links between "' 
					+ perf + '" and "' + orig + '"';
				return s;
			}
		}

		function showProcessing()
		{
			document.getElementById('results').innerHTML = "Processing...";
		}

		function stopShowProcessing()
		{
			document.getElementById('results').innerHTML = "";
		}
