//
// LMP Song Lookup Magician functions
// The magician is just a javascript - no magic there really.
// Follow the yellow brick road!
//



// # alwaysRaised=yes,
//    back_next_unused =  '<P><A href=jasvascript:magic("back")>BACK</A>'
//    + '&nbsp; &nbsp; &nbsp;    <A href=jasvascript:magic("next")>NEXT</A>';

       function openMagician(boxno, content) 
       {
         while (boxno >= 2) boxno -= 2; // Use only two in ping-pong.  

         var features = 'width=250,height=450,alwaysraised=1,menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1';

	 var lompcos = window.open('','mymagician'+boxno, features);
        // lompcos.focus();  

         lompcos.document.writeln('<html>');
         lompcos.document.writeln('<head><title>Song Magician ' + boxno + '</title></head>');

         var wand_image = '<center> <img src=\"/lockup/lomp/gifs/wandxp.gif\"> </center>';





         lompcos.document.writeln('<body bgcolor=lightblue>');



         lompcos.document.writeln(content);
         lompcos.document.writeln(wand_image);
         lompcos.document.writeln('<br>');



         return lompcos;
       } 


      function JSopen(boxno)
      { 
	return openMagician(boxno, '<h1>Lockup Song Magician</h1>');
      }

      //
      //
      //
      function JSwrite1(lompcos, b)
      {
	lompcos.document.writeln(b);
      }


      function JSclose1(lompcos)
      {
	lompcos.document.writeln('</body></html>');

        lompcos.document.close();
        // lompcos.focus();  // Focus after close may be better.
      }


//-----------------------------------------------


var baser = "";
var dara_idx = 0;

function yo_start(x)
{
  dara_idx = 0;
  baser = x;
}

function JScheckfor(v, x)
{
  while (baser.charAt(v)==" " || baser.charAt(v)=="\n") v++;
  if (baser.substring(v, v+x.length) != x) alert("Syntax error in xml: missing " + x + " instead there was " + baser.substring(v, 15) + "...");
  v += x.length;
  while (baser.charAt(v)==" " || baser.charAt(v)=="\n") v++;
  return v;
}

//
//
//
function yo_skip_next_baser(skipp)
{
//  tag = "<baser";
//  if (skipp) baser = baser.substring(tag.length, 1000000);
//  i = baser.indexOf(tag);
//  if (i < 0) baser = "";
//  else baser = baser.substring(i, 1000000);
  if (skipp) dara_idx += 1;
  baser = xdara[dara_idx];
}

//
// Extract field x from current record. 
//
function yo_xml_field(x)
{
  if (baser.length < 0) return "";
  var eom = baser.indexOf("/>");
  var v = baser.indexOf(x);
  if (eom < 0 || v < 0 || v > eom)
	{
	return "";
	}
  v += x.length;
  v = JScheckfor(v, '=');
  var len = 0;
  if (baser.charAt(v) == '\"')
	{
	  v += 1;
	  start = v;
	  while (v < baser.length && baser.charAt(v)!='\"' && baser.charAt(v)!="\n") { len++; v++; };
	}
	else
	{
	  start = v;
	  while (v < baser.length && baser.charAt(v)!=" " && baser.charAt(v)!="\n") { len++; v++; };
	}
  return baser.substring(start, start+len);
}

function JStest(a, b)
{
  lol = "ABCDEF";
   lompcos =     	JSopen(0);
	JSwrite1(lompcos, "Hello\n");
	alert(lol.indexOf("CD") + " is it\n");
}


//
//
//
function JSselect(a, b)
{
//      JStest(a, b);
	if (b == "Composer") JSselectby("Select songs from composer:", "composer");
	if (b == "Genre") JSselectby("Select songs by genre:", "genre");
	if (b == "All") JSselectby("Select song from full list:", "all");
}

 
//
//
//
function JSselectby(msg, activetag)
{
  var   limit = 0;
  var   data = new Array(100)
  var   i, d = 0;
  var   lompcos = JSopen(1);
     JSwrite1(lompcos, msg);
     JSwrite1(lompcos, '<p>');
     yo_start(database);
     yo_skip_next_baser(0);
     while(limit ++ < 400 && baser.length > 0)
	{
	    //  alert("Place at " + baser + baser.substring(baser+1, 3) + " here\n");
         if(activetag=="all")
             { 
             x = yo_xml_field('title');
             }
	    else 
	    {
            x = yo_xml_field(activetag);
             }
            if (x == "") break;
            for (i=0;i<d;i++)
              {  
                 if (data[i] == x) break;
              }
            if (i==d && d < 100) data[d++] = x;
	    yo_skip_next_baser(1);
        }
     if (d==0) JSwrite1(lompcos, "<p>No records found.");


     for (i=0;i<d;i++)
       {
	 if (activetag == "all")
         JSwrite1(lompcos, 
                 "<br><li> <a target=_blank href=\"magician.html?fn=SongSelect&idx=2&a1=title&a2=" + escape(data[i]) + "\"> " + data[i] + "</a>");
 	 else JSwrite1(lompcos, 
                  "<br><li> <a target=_blank href=\"magician.html?fn=tigselect&idx=2&a1=" + escape(activetag) + "&a2=" + escape(data[i]) + "\"> " + data[i] + "</a>");
       }
     JSclose1(lompcos);
}

//
//
//
function tigselect(window, activetag, vale)
{
   var  limit = 0;
   var msg = "Select song from " + vale; 
   var data = new Array(100)
   var d = 0;
     yo_start(database);
     yo_skip_next_baser(0);
     while(limit++ < 100 && baser.length > 0)
	{
            x = yo_xml_field(activetag);
            if (x == "") break;
            if (x == vale && d < 100)
              {  
                 data[d++] = yo_xml_field("title");
              }
	    yo_skip_next_baser(1);
        }

     var lompcos = JSopen(window);
     JSwrite1(lompcos, msg);
     JSwrite1(lompcos, '<p>');
     if (d==0) JSwrite1(lompcos, "<p>No records found.");
     else for (i=0;i<d;i++)
       {
         JSwrite1(lompcos, "<br><li> <a href=\"magician.html?fn=SongSelect&idx=3&a1=title&a2=" + escape(data[i]) + "\"> " + data[i] + "</a>");
       }
    JSclose1(lompcos);
}


function mp3handle(lompcos, title, url)
{
  star = '<img src=\"/lockup/lomp/gifs/starxp.gif\" border=0>';

  ref = ('<li> <A border=0 ALT=\"MP3 Track\" href=\"' + url + '\">'  + star + title + '</a> &nbsp; &nbsp; &nbsp; ');
  JSwrite1(lompcos, ref);
}


//
//
//
function SongSelect(window, a, title)
{
   var  limit = 0;
   var  lompcos = JSopen(window);


   var  msg = "<h2>" + title + "</h2>";

     yo_start(database);
     yo_skip_next_baser(0);
     while(limit++ < 100 && baser.length > 0)
	{
            x = yo_xml_field("title");
            if (x == "" || title==x) break;
	    yo_skip_next_baser(1);
        }
     JSwrite1(lompcos, msg);
   var  com = yo_xml_field("composer");  
   var  about = yo_xml_field("about");  
   var  onemin = yo_xml_field("onemin");  
   var  intro = yo_xml_field("intro");  
   var  xfull = yo_xml_field("xfull");  
   var  lyrics = yo_xml_field("lyricsheet");  
   var  xmale = yo_xml_field("xmale");  
   var  xfemale = yo_xml_field("xfemale");  
   var  xbacking = yo_xml_field("xbacking");  
   var  count = 0;
     if (intro != "") count += 1; 
     if (onemin != "") count += 1; 
     if (xfull != "") count += 1; 
     if (xmale != "") count += 1; 
     if (xfemale != "") count += 1; 
     if (xbacking != "") count += 1; 

   var b2 =  '<a target=_blank href=\"magician.html?fn=tigselect&idx=2&a1=composer&a2=' + escape(com) + '\"> Further songs by ' + com +  '</a>';

       {
         JSwrite1(lompcos, "<li> Title: " + title);
         JSwrite1(lompcos, "<li> Composer: " + com);
         JSwrite1(lompcos, "<li> About: <font color=red >" + about + "</font><br>");

         JSwrite1(lompcos, "<li> Lyrics:")
	 if (lyrics=="") JSwrite1(lompcos, "Not online");
         else JSwrite1(lompcos, '<a href=\"' + lyrics + '\">' +   title + '</a>');

         JSwrite1(lompcos, "<li>")
	 if (count==0) JSwrite1(lompcos, "No MP3 recordings are online.");
	 else if (count==1) JSwrite1(lompcos, "One MP3 recording is online.");
	 else JSwrite1(lompcos, count + " recordings are online.");

         JSwrite1(lompcos, "<hr>");
         if (count > 0) JSwrite1(lompcos, "<br>Select one of the following MP3 files: <br>");
         if (intro != "") mp3handle(lompcos, "Intro", intro);
         if (onemin != "") mp3handle(lompcos, "Centre Titbit", onemin);
         if (xfull != "") mp3handle(lompcos, "Full Song", xfull);
         if (xmale != "") mp3handle(lompcos, "Full Song, Male Vocal", xmale);
         if (xfemale != "") mp3handle(lompcos, "Full Song, Female Vocal", xfemale);
         if (xbacking != "") mp3handle(lompcos, "Full Backing Track", xbacking);

         if (count > 0) JSwrite1(lompcos, "<p>Use right-mouse to 'Save-Target' to desktop if necessary.");
       }

   var b1 = '<a href="#" onClick="history.go(-1)">Back</a> <input type=button value="Back1" onClick="history.go(-1)">';




  JSwrite1(lompcos, "<hr><p>Click for " + b2);
  JSclose1(lompcos);
}




//  alert("Lookup done");



// eof
