home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 175 / DPCS0902.ISO / demos / LiquidPlayer / data1.cab / Program_Executable_Files / LiquidPlayer.exe / player6 / ptmetadisplay.js < prev    next >
Encoding:
JavaScript  |  2001-11-14  |  26.6 KB  |  686 lines

  1. // Show album art
  2. var selectedTrack = 0;
  3. var lyricsAvailable = 0;
  4. var notesAvailable = 0;
  5. var creditsAvailable = 0;
  6. var xmldoc;
  7. var curSelection = 0;
  8. var rowHeight = 17;
  9. var totalVisibleRows = 8;
  10. var trackLoaded = 0;
  11.  
  12. function navigateTo(id)
  13. {
  14.     if (id >= 0) {
  15.         window.external.NavigateTo(id);
  16.     }
  17. }
  18.  
  19. function setScrollerVisible(container, scrollObj, controlUp, controlDown)
  20. {
  21.     if(container.clipHeight - scrollObj.scrollHeight < 0) { 
  22.         document.all(controlUp).style.visibility = "visible";
  23.         document.all(controlDown).style.visibility = "visible";        
  24.     } else {
  25.         document.all(controlUp).style.visibility = "hidden";
  26.         document.all(controlDown).style.visibility = "hidden";
  27.     }
  28. }
  29.  
  30. function openTrack(id)
  31. {
  32.     if (id >= 0) {
  33.         window.external.ChangeTrack(id);
  34.     }
  35. }
  36.  
  37. function displayBranding()
  38. {
  39.     window.external.LaunchCurrentBranding();
  40. }
  41.  
  42. function launchLink(id, textLink)
  43. {
  44.     if (xmldoc.documentElement != null) {
  45.  
  46.         imageNode = xmldoc.documentElement.selectSingleNode("links");
  47.  
  48.         if (imageNode != null) {
  49.             nodeAttr = imageNode.attributes;
  50.             switch(id) {
  51.             case 0:
  52.                 window.open(textLink,"findMusic");                
  53.                 break;
  54.             case 1:
  55.                 curNode = nodeAttr.getNamedItem("buyDownload");    
  56.                 if (curNode != null) {
  57.                     window.open(curNode.text,"buyWindow");                
  58.                 }
  59.                 break;
  60.             case 2:
  61.                 curNode = nodeAttr.getNamedItem("purchase");    
  62.                 if (curNode != null) {
  63.                     window.open(curNode.text,"buyWindow");                
  64.                 }
  65.                 break;
  66.             }
  67.         }
  68.     } else {
  69.         if (id == 0) {
  70.             window.open(textLink,"findMusic");                
  71.         }
  72.     }
  73. }
  74.  
  75. function dynamicRollover(id)
  76. {
  77.     switch(id) {
  78.     case 0:
  79.         // download free track
  80.         MM_swapImage("DownloadFreeTrack","","ptimages/download_on.gif",1);
  81.         break;
  82.     case 1:
  83.         MM_swapImage("BuyTrack","","ptimages/buy_track_on.gif",1);
  84.         break;
  85.     case 2:
  86.         MM_swapImage("BuyAlbum","","ptimages/buy_album_on.gif",1);
  87.         break;
  88.     }
  89. }    
  90.  
  91. function viewMouseOut(id, imageName, imageFile) 
  92. {
  93.     if (curSelection != id) {
  94.         document.images(imageName).src = imageFile;
  95.     }
  96. }
  97.  
  98. function setCurrentViewText(text)
  99. {
  100.     itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='1'>";
  101.     itemsHTML += "<tr><td><font class='textwhite'>";
  102.     itemsHTML += text + "</font></td></tr></table>";
  103.     document.all("nowplaying").innerHTML = itemsHTML;
  104. }
  105.  
  106. function showItem( targetId, show )
  107. {
  108.     document.all("ALBUMART").style.display = "none";
  109.     document.all("PROMOART").style.display = "none";
  110.     target = document.all( targetId );
  111.       if (show == 1){
  112.           target.style.display = "";
  113.       } else {
  114.           target.style.display = "none";
  115.       }
  116. }
  117.  
  118. function showLyrics (show)
  119. {
  120.     if (show == 1) {
  121.         curSelection = 2;
  122.         showItem("ALBUMART",1);
  123.         showPromo(0);
  124.         showMetaData(0);
  125.         showNotes(0);
  126.         showCredits(0);
  127.         document.all("Lyrics").style.display = "";
  128.         if (lyricsAvailable) {
  129.             setScrollerVisible(objContainerLyrics, objScrollerLyrics, "divUpControlLyrics", "divDownControlLyrics");
  130.         }
  131.         setCurrentViewText("LETRAS");
  132.     } else {
  133.         //document.images("Image2").src = "ptimages/lyrics_off.gif";
  134.         document.all("Lyrics").style.display = "none";
  135.         document.all("divDownControlLyrics").style.visibility = "hidden";
  136.         document.all("divUpControlLyrics").style.visibility = "hidden";
  137.     }
  138. }
  139.  
  140. function showNotes (show)
  141. {
  142.     if (show == 1) {
  143.         curSelection = 3;
  144.         showItem("ALBUMART",1);
  145.         showPromo(0);
  146.         showMetaData(0);
  147.         showLyrics(0);
  148.         showCredits(0);
  149.         document.all("Notes").style.display = "";
  150.         if (notesAvailable) {
  151.             setScrollerVisible(objContainerNotes, objScrollerNotes, "divUpControlNotes", "divDownControlNotes");
  152.         }
  153.         setCurrentViewText("NOTAS");
  154.     } else {
  155.         //document.images("notesImage").src = "ptimages/notes_off.gif";
  156.         document.all("Notes").style.display = "none";
  157.         document.all("divDownControlNotes").style.visibility = "hidden";
  158.         document.all("divUpControlNotes").style.visibility = "hidden";
  159.     }
  160. }
  161.  
  162. function showCredits (show)
  163. {
  164.     if (show == 1) {
  165.         curSelection = 4;
  166.         showItem("ALBUMART",1);
  167.         showPromo(0);
  168.         showMetaData(0);
  169.         showNotes(0);
  170.         showLyrics(0);
  171.         document.all("Credits").style.display = "";
  172.         if (creditsAvailable) {
  173.             setScrollerVisible(objContainerCredits, objScrollerCredits, "divUpControlCredits", "divDownControlCredits");
  174.         }
  175.         setCurrentViewText("CR╔DITOS");
  176.     } else {
  177.         //document.images("Image5").src = "ptimages/credits_off.gif";
  178.         document.all("Credits").style.display = "none";
  179.         document.all("divDownControlCredits").style.visibility = "hidden";
  180.         document.all("divUpControlCredits").style.visibility = "hidden";
  181.     }
  182. }
  183.  
  184. function showMetaData(show)
  185. {
  186.     if (show == 1) {
  187.         curSelection = 0;
  188.         showPromo(0);
  189.         showItem("ALBUMART",1);
  190.         showNotes(0);
  191.         showLyrics(0);
  192.         showCredits(0);
  193.         document.all("metadata").style.display = "";
  194.         setCurrentViewText("INFORMA╟╒ES DE TRILHA");
  195.     } else {
  196.         //document.images("Image1").src = "ptimages/trackinfo_off.gif";
  197.         document.all("metadata").style.display = "none";
  198.     }
  199. }
  200.  
  201. function showPromo(show)
  202. {
  203.     if (show == 1) {
  204.         curSelection = 1;
  205.         showMetaData(0);
  206.         showItem("PROMOART",1);
  207.         showNotes(0);
  208.         showLyrics(0);
  209.         showCredits(0);
  210.         document.all("metadata").style.display = "";
  211.         setCurrentViewText("PROMO╟├O");
  212.     } else {
  213.         //document.images("Image3").src = "ptimages/promo_off.gif";
  214.         document.all("metadata").style.display = "none";
  215.     }
  216. }
  217.  
  218. function parseCredits(doc)
  219. {
  220.     var rootNode = doc.documentElement;
  221.     var itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='2'>";
  222.     var noCreditsHTML = "<tr><td><font class='textwhitexml'><center>CR╔DITOS N├O DISPON═VEIS</center></font></td></tr></table>";
  223.     
  224.     if (rootNode != null) {
  225.         // Credits display
  226.         imageNode = doc.documentElement.selectSingleNode("credits");
  227.         if (imageNode != null) {
  228.             var nodeAttr = imageNode.attributes;
  229.             
  230.             var columnWidth = 164;
  231.             var creditsHTML = "";
  232.  
  233.             var curNode = nodeAttr.getNamedItem("artistLabel");
  234.             if (curNode != null) {
  235.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  236.                 curNode = nodeAttr.getNamedItem("artist");
  237.                 if (curNode != null) 
  238.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  239.             }
  240.             var curNode = nodeAttr.getNamedItem("composerLabel");
  241.             if (curNode != null) {
  242.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  243.                 curNode = nodeAttr.getNamedItem("composer");
  244.                 if (curNode != null) 
  245.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  246.             }
  247.             var curNode = nodeAttr.getNamedItem("albumLabel");
  248.             if (curNode != null) {
  249.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  250.                 curNode = nodeAttr.getNamedItem("album");
  251.                 if (curNode != null) 
  252.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  253.             }
  254.             var curNode = nodeAttr.getNamedItem("labelLabel");
  255.             if (curNode != null) {
  256.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  257.                 curNode = nodeAttr.getNamedItem("label");
  258.                 if (curNode != null) 
  259.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  260.             }
  261.             var curNode = nodeAttr.getNamedItem("copyrightLabel");
  262.             if (curNode != null) {
  263.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  264.                 curNode = nodeAttr.getNamedItem("copyright");
  265.                 if (curNode != null) 
  266.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  267.             }
  268.             var curNode = nodeAttr.getNamedItem("copySrcLabel");
  269.             if (curNode != null) {
  270.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  271.                 curNode = nodeAttr.getNamedItem("copySrc");
  272.                 if (curNode != null) 
  273.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  274.             }
  275.             var curNode = nodeAttr.getNamedItem("featuredLabel");
  276.             if (curNode != null) {
  277.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  278.                 curNode = nodeAttr.getNamedItem("featured");
  279.                 if (curNode != null) 
  280.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  281.             }
  282.             var curNode = nodeAttr.getNamedItem("sessionLabel");
  283.             if (curNode != null) {
  284.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  285.                 curNode = nodeAttr.getNamedItem("session");
  286.                 if (curNode != null) 
  287.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  288.             }
  289.             var curNode = nodeAttr.getNamedItem("producerLabel");
  290.             if (curNode != null) {
  291.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  292.                 curNode = nodeAttr.getNamedItem("producer");
  293.                 if (curNode != null) 
  294.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  295.             }
  296.             var curNode = nodeAttr.getNamedItem("engLabel");
  297.             if (curNode != null) {
  298.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  299.                 curNode = nodeAttr.getNamedItem("engineers");
  300.                 if (curNode != null) 
  301.                     creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  302.             }
  303.             var curNode = nodeAttr.getNamedItem("conductorLabel");
  304.             if (curNode != null) {
  305.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  306.                 curNode = nodeAttr.getNamedItem("conductor");
  307.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  308.             }
  309.             var curNode = nodeAttr.getNamedItem("chorusLabel");
  310.             if (curNode != null) {
  311.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  312.                 curNode = nodeAttr.getNamedItem("chorus");
  313.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  314.             }
  315.             var curNode = nodeAttr.getNamedItem("chorusConLabel");
  316.             if (curNode != null) {
  317.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  318.                 curNode = nodeAttr.getNamedItem("chorusConductor");
  319.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  320.             }
  321.             var curNode = nodeAttr.getNamedItem("studioLabel");
  322.             if (curNode != null) {
  323.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  324.                 curNode = nodeAttr.getNamedItem("studio");
  325.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  326.             }
  327.             var curNode = nodeAttr.getNamedItem("studioMixdownLabel");
  328.             if (curNode != null) {
  329.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  330.                 curNode = nodeAttr.getNamedItem("studioMixdown");
  331.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  332.             }
  333.             var curNode = nodeAttr.getNamedItem("studioMasteringLabel");
  334.             if (curNode != null) {
  335.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  336.                 curNode = nodeAttr.getNamedItem("studioMastering");
  337.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  338.             }
  339.             var curNode = nodeAttr.getNamedItem("studioMixdownLabel");
  340.             if (curNode != null) {
  341.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  342.                 curNode = nodeAttr.getNamedItem("studioMixdown");
  343.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  344.             }
  345.             var curNode = nodeAttr.getNamedItem("remixersLabel");
  346.             if (curNode != null) {
  347.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  348.                 curNode = nodeAttr.getNamedItem("remixers");
  349.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  350.             }
  351.             var curNode = nodeAttr.getNamedItem("masterEngLabel");
  352.             if (curNode != null) {
  353.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  354.                 curNode = nodeAttr.getNamedItem("masterEng");
  355.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  356.             }
  357.             var curNode = nodeAttr.getNamedItem("orchestraLabel");
  358.             if (curNode != null) {
  359.                 creditsHTML += "<tr><td><font class='textlightaqua'>" + curNode.text + "</font></td>";
  360.                 curNode = nodeAttr.getNamedItem("orchestra");
  361.                 creditsHTML += "<td width='" + columnWidth + "'><font class='textwhitexml'>" + curNode.text + "</font></td></tr>";
  362.             }
  363.  
  364.             if (creditsHTML != "") {
  365.             creditsAvailable = true;
  366.         } else {
  367.                 creditsHTML = noCreditsHTML;
  368.                 creditsAvailable = false;
  369.             }
  370.         }
  371.         }
  372.  
  373.     itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='2'>" + creditsHTML + "</table>"
  374.         document.all("creditsText").innerHTML = itemsHTML;
  375.     }
  376.  
  377. function parseMetadata(doc)
  378. {
  379.     var rootNode = doc.documentElement;
  380.     
  381.     if (rootNode != null) {
  382.         var imageText = "";
  383.     
  384.         
  385.         // Parse the branding info
  386.         var brandingNode = doc.documentElement.selectSingleNode("Branding");
  387.         if (brandingNode != null) {
  388.             var nodeAttr = brandingNode.attributes;
  389.             var imageNode = nodeAttr.getNamedItem("Image");
  390.             itemsHTML = "<a href='javascript:displayBranding()'><img border='0' src='" + imageNode.text + "'  width='120' height='29'></a>";
  391.             document.all("branding").innerHTML = itemsHTML;
  392.         } else {
  393.             itemsHTML = "<a href='javascript:displayBranding()'><img border='0' src='ptimages/retail.gif'  width='120' height='29'></a>";
  394.             document.all("branding").innerHTML = itemsHTML;
  395.         }
  396.         // parse the individual items
  397.         var trackNode = doc.documentElement.selectSingleNode("track");
  398.         var itemsHTML = "";
  399.         var nodeAttr = trackNode.attributes;
  400.         var curNode = nodeAttr.getNamedItem("songtitle");
  401.         //if (curNode != null) {
  402.         //    itemsHTML += "<table width='100%' border='0' cellspacing='0' cellpadding='5'>";
  403.         //    itemsHTML += "<tr><td width='100%'><font class='textlightaqua'><img scr='/i/clear.gif' height='1' width='100%' height='1'><br>";
  404.         //    itemsHTML += "NOW PLAYING:</font> <font class='textwhitexml'>" + curNode.text + "</font> </td></tr></table>";
  405.         //    document.all("songTitle").innerHTML = itemsHTML;
  406.         //}
  407.         curNode = nodeAttr.getNamedItem("artist");
  408.         if (curNode != null) {
  409.             itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='1'>";
  410.             itemsHTML += "<tr><td><font class='textwhitexml'>";
  411.             itemsHTML += curNode.text + "</font></td></tr></table>";
  412.             document.all("artist").innerHTML = itemsHTML;
  413.         }
  414.         curNode = nodeAttr.getNamedItem("albumtitle");
  415.         if (curNode != null) {
  416.             itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='1'>";
  417.             itemsHTML += "<tr><td><font class='textwhitexml'>";
  418.             itemsHTML += curNode.text + "</font></td></tr></table>";
  419.             document.all("album").innerHTML = itemsHTML;
  420.         }
  421.          curNode = nodeAttr.getNamedItem("songtitle");
  422.         if (curNode != null) {
  423.             itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='1'>";
  424.             itemsHTML += "<tr><td><font class='textwhitexml'>";
  425.             itemsHTML += curNode.text + "</font></td></tr></table>";
  426.             document.all("songtitle2").innerHTML = itemsHTML;
  427.         }
  428.  
  429.         curNode = nodeAttr.getNamedItem("label");
  430.         if (curNode != null) {
  431.             itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='1'>";
  432.             itemsHTML += "<tr><td><font class='textwhitexml'>";
  433.             itemsHTML += curNode.text + "</font></td></tr></table>";
  434.             document.all("label").innerHTML = itemsHTML;
  435.         }
  436.  
  437.         curNode = nodeAttr.getNamedItem("price");
  438.         curLicenseNode = nodeAttr.getNamedItem("licensed");
  439.         itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='1'>";
  440.         itemsHTML += "<tr><td><font class='textwhitexml'>";
  441.         if (curNode != null && curLicenseNode == null) {
  442.             itemsHTML += curNode.text;
  443.         } else if (curLicenseNode != null) {
  444.             itemsHTML += curLicenseNode.text;
  445.         }
  446.         itemsHTML += " </font></td></tr></table>";
  447.         document.all("price").innerHTML = itemsHTML;
  448.  
  449.          curNode = nodeAttr.getNamedItem("copyright");
  450.         if (curNode != null) {
  451.             itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='1'>";
  452.             itemsHTML += "<tr><td><font class='textwhitexml'>";
  453.             itemsHTML += curNode.text + "</font></td></tr></table>";
  454.             document.all("copyright").innerHTML = itemsHTML;
  455.         
  456.         }
  457.         
  458.         
  459.         // Lyrics
  460.         curNode = nodeAttr.getNamedItem("lyrics");
  461.         var curNode2 = nodeAttr.getNamedItem("publisher");
  462.  
  463.         if ((curNode != null) || (curNode2 != null)){
  464.             lyricsAvailable = 1; // We either have lyrics or we have publisher info to display in place of lyrics
  465.             if (curNode != null)
  466.                 itemsHTML += "<table width='100%' border='0' cellspacing='0' cellpadding='2'><tr><td><font class='textwhitexml'>" + curNode.text + "</font></td></tr></table>";
  467.             if ((curNode != null) && (curNode2 != null))
  468.                 itemsHTML += "<BR><BR>";
  469.             if (curNode2 != null)
  470.                 itemsHTML += "<table width='100%' border='0' cellspacing='0' cellpadding='2'><tr><td width = 80><font class='textlightaqua'>EDITOR :</font></td><td><font class='textlightaqua'>" + curNode2.text + "</font></td></tr></table>";
  471.             itemsHTML += "</table>";
  472.             document.all("lyricsText").innerHTML = itemsHTML;
  473.         } else {
  474.             itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='2'>";
  475.             itemsHTML += "<tr><td><font class='textwhitexml'><center>LETRAS N├O DISPON═VEIS</center></font></td></tr></table>";
  476.             document.all("lyricsText").innerHTML = itemsHTML;
  477.         }
  478.  
  479.         // Notes
  480.         curNode = nodeAttr.getNamedItem("notes");
  481.         if (curNode != null) {
  482.             notesAvailable = 1; // We gots notes
  483.             itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='2'>";
  484.             itemsHTML += "<tr><td><font class='textwhitexml'>";
  485.             itemsHTML += curNode.text + "</font></td></tr></table>";
  486.             document.all("notesText").innerHTML = itemsHTML;
  487.         } else {
  488.             itemsHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='2'>";
  489.             itemsHTML += "<tr><td><font class='textwhitexml'><center>NOTAS N├O DISPON═VEIS</center></font></td></tr></table>";
  490.             document.all("notesText").innerHTML = itemsHTML;
  491.         }
  492.  
  493.         // Image handling
  494.         var imageNode = doc.documentElement.selectSingleNode("image");
  495.         if (imageNode != null) {
  496.             nodeAttr = imageNode.attributes;
  497.             curNode = nodeAttr.getNamedItem("cover");
  498.  
  499.             var xMax = 105;
  500.             var yMax = 120;
  501.  
  502.             if (curNode != null) {
  503.                 // get original image size, if available, and calculate x&y expansion
  504.                 var sizeNodeX = nodeAttr.getNamedItem("coverWidth");
  505.                 var sizeNodeY = nodeAttr.getNamedItem("coverHeight");                 
  506.                 var sizeText = "";
  507.  
  508.                 if ((sizeNodeX != null) && (sizeNodeY != null)) {
  509.                     var x = sizeNodeX.text;
  510.                     var y = sizeNodeY.text;
  511.                                                             
  512.                     if ((x != 0) && (y != 0)) {
  513.                         sizeText = "HEIGHT = ";
  514.                         if ((x/y) >= (xMax/yMax)) {
  515.                                 sizeText += Math.round((y/x) * xMax);
  516.                                 sizeText += " WIDTH = ";
  517.                                 sizeText += xMax;
  518.                             } else {
  519.                                 sizeText += yMax;
  520.                                 sizeText += " WIDTH = ";
  521.                                 sizeText += Math.round((x/y) * yMax);
  522.                             }
  523.                     }
  524.                 }
  525.  
  526.                 
  527.                 itemsHTML = "<img border='0' src='" + curNode.text + "' " + sizeText + " hspace=15>";
  528.                 document.all("ALBUMART").innerHTML = itemsHTML;
  529.                 document.all("ALBUMART").style.display = "";
  530.             } else {
  531.                 document.all("ALBUMART").innerHTML = "<img src='ptimages/noart.gif' hspace=15 >";
  532.                 document.all("ALBUMART").style.display = "";
  533.             }
  534.             curNode = nodeAttr.getNamedItem("promo");
  535.             if (curNode != null) {
  536.                 // get original image size, if available, and calculate x&y expansion
  537.                 var sizeNodeX = nodeAttr.getNamedItem("promoWidth");
  538.                 var sizeNodeY = nodeAttr.getNamedItem("promoHeight");                 
  539.                 
  540.                 var sizeText = "";
  541.  
  542.                 if ((sizeNodeX != null) && (sizeNodeY != null)) {
  543.                     var x = sizeNodeX.text;
  544.                     var y = sizeNodeY.text;
  545.                     
  546.                     if ((x != 0) && (y != 0)) {
  547.                                                 sizeText = "HEIGHT = ";
  548.                         if ((x/y) >= (xMax/yMax)) {
  549.                                 sizeText += Math.round((y/x) * xMax);
  550.                                 sizeText += " WIDTH = ";
  551.                                 sizeText += xMax;
  552.                             } else {
  553.                                 sizeText += yMax;
  554.                                 sizeText += " WIDTH = ";
  555.                                 sizeText += Math.round((x/y) * yMax);
  556.                             }
  557.                     }
  558.                 }
  559.  
  560.  
  561.                 var linkText = "";
  562.                 var linkNode = doc.documentElement.selectSingleNode("links");
  563.                 if (linkNode != null) {
  564.                     nodeAttr = linkNode.attributes;
  565.                     var promoURLNode = nodeAttr.getNamedItem("promoURL");
  566.                     if (promoURLNode != null) {
  567.                         itemsHTML = "<a href='" + promoURLNode.text + "' target='LAPromo'><img border='0' src='" + curNode.text + "' " + sizeText + " hspace=15 ></a>";
  568.                     } else {
  569.                         itemsHTML = "<img border='0' src='" + curNode.text + "' " + sizeText + " hspace = 15>";
  570.                     }
  571.                 } else {
  572.                     itemsHTML = "<img border='0' src='" + curNode.text + "' hspace=15 >";
  573.                 }
  574.                 document.all("PROMOART").innerHTML = itemsHTML;
  575.                 document.all("PROMOART").style.display = "none";
  576.             } else {
  577.                 document.all("PROMOART").innerHTML = "<img src='ptimages/noart.gif' hspace=15>";
  578.                 document.all("PROMOART").style.display = "none";
  579.             }
  580.         } else {
  581.             document.all("ALBUMART").innerHTML = "<img src='ptimages/noart.gif' hspace=15 >";
  582.             document.all("ALBUMART").style.display = "";
  583.             document.all("PROMOART").innerHTML = "<img src='ptimages/noart.gif' hspace=15>";
  584.             document.all("PROMOART").style.display = "none";
  585.             
  586.         }
  587.         
  588.         // Links to buy tracks, free download etc
  589.         itemsHTML = "<TABLE cellSpacing=0 cellPadding=0 width=200 border=0><TBODY><TR><TD colSpan=3 valign=top><TABLE cellSpacing=0 cellPadding=0 width=200 border=0><TBODY><TR><TD valign=top>";
  590.         imageNode = doc.documentElement.selectSingleNode("links");
  591.         if (imageNode != null) {
  592.             nodeAttr = imageNode.attributes;
  593.             curNode = nodeAttr.getNamedItem("freeDownload");
  594.             if (curNode != null) {
  595.                 itemsHTML += "<TABLE height=31 cellSpacing=0 cellPadding=0 width=97 bgColor=#669900 border=0><TBODY><TR><TD vAlign=center align=middle><TABLE height=29 cellSpacing=0 cellPadding=0 width=95 border=0><TBODY><TR><TD vAlign=center align=middle bgColor=#333333 ><a href='" + curNode.text + "'  onFocus='if(this.blur)this.blur()' class=textwhite>TRILHA GRATUITA</a></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>";
  596.             } else {
  597.                 itemsHTML +="<TABLE height=31 cellSpacing=0 cellPadding=0 width=97 bgColor=#999999 border=0><TBODY><TR><TD vAlign=center align=middle><TABLE height=29 cellSpacing=0 cellPadding=0 width=95 border=0><TBODY><TR><TD vAlign=center align=middle bgColor=#333333 ><a class=textgrey>TRILHA GRATUITA</a></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>";
  598.             }
  599.         itemsHTML +="</td><td>       </td><td>";
  600.             curNode = nodeAttr .getNamedItem("buyDownload");    
  601.             if (curNode != null) {
  602.                 itemsHTML += "<TABLE height=31 cellSpacing=0 cellPadding=0 width=97 bgColor=#669900 border=0><TBODY><TR><TD vAlign=center align=middle><TABLE height=29 cellSpacing=0 cellPadding=0 width=95 border=0><TBODY><TR><TD vAlign=center align=middle bgColor=#333333 ><a href='" + curNode.text + "'  onFocus='if(this.blur)this.blur()' class=textwhite target='LABuyDownload'>COMPRAR TRILHA</a></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>";
  603.             } else {
  604.                 itemsHTML +="<TABLE height=31 cellSpacing=0 cellPadding=0 width=97 bgColor=#999999 border=0><TBODY><TR><TD vAlign=center align=middle><TABLE height=29 cellSpacing=0 cellPadding=0 width=95 border=0><TBODY><TR><TD vAlign=center align=middle bgColor=#333333 ><a class=textgrey>COMPRAR TRILHA</a></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>";
  605.             }
  606.             itemsHTML +="</td><td>       </td><td>";
  607.             curNode = nodeAttr.getNamedItem("purchase");
  608.             if (curNode != null) {
  609.                 itemsHTML += "<TABLE height=31 cellSpacing=0 cellPadding=0 width=97 bgColor=#669900 border=0><TBODY><TR><TD vAlign=center align=middle><TABLE height=29 cellSpacing=0 cellPadding=0 width=95 border=0><TBODY><TR><TD vAlign=center align=middle bgColor=#333333 ><a href='" + curNode.text + "'  onFocus='if(this.blur)this.blur()' class=textwhite target='LABuyAlbum'>COMPRAR ┴LBUM</a></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>";
  610.             } else {
  611.                 itemsHTML +="<TABLE height=31 cellSpacing=0 cellPadding=0 width=97 bgColor=#999999 border=0><TBODY><TR><TD vAlign=center align=middle><TABLE height=29 cellSpacing=0 cellPadding=0 width=95 border=0><TBODY><TR><TD vAlign=center align=middle bgColor=#333333 ><a class=textgrey>COMPRAR ┴LBUM</a></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>";
  612.             }
  613.         } else {
  614.             itemsHTML +="";
  615.             itemsHTML +="";
  616.             itemsHTML +="";
  617.             itemsHTML +="";
  618.             itemsHTML +="";
  619.         }
  620.         document.all("linkslist").innerHTML = itemsHTML;
  621.         
  622.  
  623.         parseCredits(doc);
  624.         trackLoaded = 1;
  625.     } else {
  626.         trackLoaded = 0;
  627.         var itemsHTML = "<a href='javascript:displayBranding()'><img border='0' src='ptimages/retail.gif' width='120' height='29'></a>";
  628.         document.all("branding").innerHTML = itemsHTML;
  629.     }
  630.     
  631. }
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.         
  639. //////////////////////////////////////////////////////
  640. // Initialize the XML object for the metadata
  641. //
  642. function initializeXML()
  643. {
  644.     var strLength = window.location.hash.length;
  645.     var text = window.location.hash;
  646.     var pos = 1;
  647.     var bDone = 0;
  648.     while (pos < strLength && !bDone) {
  649.         if (text.substr(pos,1) == '+') {
  650.             bDone = 1;
  651.         } else {
  652.             pos ++;
  653.         }
  654.     }
  655.     var stringTrack = text.substr(1, pos - 1);
  656.     var tmpPath = text.substr(pos+1, (strLength - (pos + 1)));
  657.     pos = 0;
  658.     strLength = tmpPath.length;
  659.     dataPath = new String;
  660.     while (pos < strLength) {
  661.         if (tmpPath.substr(pos, 1) == '|') {
  662.             dataPath += "/";
  663.         } else if (tmpPath.substr(pos, 1) == '*'){
  664.             dataPath += " ";
  665.         } else {
  666.             dataPath += tmpPath.substr(pos,1);
  667.         }
  668.         pos ++;
  669.     }
  670.     if (stringTrack.length > 0) {
  671.         selectedTrack = parseInt(stringTrack);
  672.     } else {
  673.         selectedTrack = 0;
  674.     }
  675.     xmldoc= new ActiveXObject("Microsoft.XMLDOM");
  676.     trackLoaded = 0;
  677.     var trackDataPath = dataPath + "/md.xml";
  678.     xmldoc.load(trackDataPath);
  679.     parseMetadata(xmldoc);
  680. }
  681.  
  682. function Initialize()
  683. {
  684.     initializeXML();
  685. }
  686.