home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 March / PCWorld_2005-03_cd.bin / komunikace / kmeleon / kmeleon09.exe / aggreg8.jar / content / Parser.js < prev    next >
Text File  |  2004-12-01  |  11KB  |  305 lines

  1. //Parser.js
  2. var strbundle=document.getElementById("_stringbundle");
  3.  
  4. function Parser(ErrorString,XMLDOC)
  5. {
  6.     aggreg8dump("Parsing");
  7.     var progress_meter = document.getElementById( "progress-meter" );    
  8.     progress_meter.setAttribute( "mode", "determined");
  9.     progress_meter.setAttribute( "value", "0%");
  10.     document.getElementById( "rss-feed-text-description" ).setAttribute( "src", "" );
  11.     var completetext = "";
  12.     completetext = completetext + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
  13.     completetext = completetext + "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 //EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">";
  14.     completetext = completetext + "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\">";
  15.     completetext = completetext + "<head profile=\"http://www.w3.org/2000/08/w3c-synd/#\">";
  16.     completetext = completetext + "<meta name=\"generator\" content=\"HTML Tidy for Mac OS, see www.w3.org\" />";
  17.     completetext = completetext + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />";
  18.     completetext = completetext + "<link id=\"meta\" rel=\"rel:meta\" href=\"http://www.w3.org/2000/08/w3c-synd/#meta\"/>";
  19.     completetext = completetext + "<link rel=\"stylesheet\" type=\"text/css\" href=\"chrome://aggreg8/skin/rssstyle.css\" />";
  20.     completetext = completetext + "<link rel=\"alternate stylesheet\" title=\"red\" type=\"text/css\" href=\"chrome://aggreg8/skin/rssstylered.css\" />";
  21.     completetext = completetext + "<link rel=\"alternate stylesheet\" title=\"blue\" type=\"text/css\" href=\"chrome://aggreg8/skin/rssstyleblue.css\" />";
  22.     completetext = completetext + "<link rel=\"alternate stylesheet\" title=\"green\" type=\"text/css\" href=\"chrome://aggreg8/skin/rssstylegreen.css\" />";
  23.     completetext = completetext + "<title>Parsed RSS File</title>";
  24.     completetext = completetext + "<script type=\"text/javascript\" src=\"chrome://aggreg8/content/rssdisplay.js\">";
  25.     completetext = completetext + "</script>";
  26.     completetext = completetext + "<script type=\"text/javascript\" src=\"chrome://aggreg8/content/styleswitcher.js\">";
  27.     completetext = completetext + "</script>";
  28.     completetext = completetext + "</head>";
  29.     var style= readStyle();
  30.     completetext = completetext + "<body onload=\"setActiveStyleSheetXHTML('"+style+"');\">";
  31.     
  32.  
  33.  
  34.  
  35.  
  36.     aggreg8dump("Parsing the Data");
  37.     
  38.     
  39.             var exTree = document.getElementById( "rssfeed-tree" );
  40.             var selectedItem = exTree.contentView.getItemAtIndex(exTree.currentIndex);
  41.  
  42.     
  43.             var rsstobeparsed = selectedItem.firstChild.firstChild.getAttribute("url");
  44.             var uri_box = document.getElementById( "rssfeed-uri" );
  45.             uri_box.value= rsstobeparsed;
  46.             var downloadingstring= strbundle.getString("downloadingstring");
  47.             //alert(rsstobeparsed + downloadingstring);
  48.             aggreg8dump(rsstobeparsed + downloadingstring);
  49.             //observe_isloaded(rsstobeparsed);
  50.             var progress_meter = document.getElementById( "progress-meter" );
  51.             var erroroccurred = "false";
  52.             var contenterroroccurred = "false";
  53.             var errorText = strbundle.getString("rsserrorText");
  54.             var errorDescription = strbundle.getString("rsserrorDescription");
  55.             //var errorDescription = strbundle.getString("rsserrorinvalidcontenttype");
  56.             
  57.             aggreg8dump(XMLDOC);
  58.             var rssdocument = XMLDOC;
  59.                         
  60.                 try{
  61.                     var channelements = rssdocument.getElementsByTagName("channel");
  62.                     var channelement =  channelements[0];
  63.                     var rsstitleElm = channelement.getElementsByTagName("title").item(0);        
  64.                     var rsstitleText = rsstitleElm.firstChild.nodeValue;
  65.                     aggreg8dump(channelements.length);
  66.                 }catch(e)
  67.                 {
  68.                     if(contenterroroccurred == "true")
  69.                     {
  70.                         var errorDescription = strbundle.getString("rsserrorinvalidcontenttype") + " " +rssdocument.contentType;
  71.                     }
  72.                     else
  73.                     {
  74.                         var errorDescription = strbundle.getString("rsserrorDescription");
  75.                     }
  76.                     
  77.                     erroroccurred = "true";
  78.                     aggreg8dump(e);
  79.                     
  80.                 }
  81.                 
  82.                 try{
  83.                     var rsstitleElm = channelement.getElementsByTagName("title").item(0);        
  84.                     var rsstitleText = rsstitleElm.firstChild.nodeValue;
  85.                 }catch(e)
  86.                 {
  87.                     
  88.                     var rsstitleText = "";
  89.                     aggreg8dump(e);
  90.                     
  91.                 }
  92.                 try{
  93.                     var rssurlElm = channelement.getElementsByTagName("link").item(0);        
  94.                     var rssurlText = rssurlElm.firstChild.nodeValue;
  95.                 }catch(e)
  96.                 {
  97.                     var rssurlText = "";
  98.                     aggreg8dump(e);
  99.                     //alert(e);
  100.                 }
  101.                 /*
  102.                 try{
  103.                     var rssimageElm = channelement.getElementsByTagName("image").item(0);
  104.                 
  105.                     var rssimagesrc = rssimageElm.getAttribute("rdf:resource");
  106.                 
  107.                     var rssimageText = "<a href=\""+rssurlText+"\" ";
  108.                     rssimageText = rssimageText + " target=\"\" >";
  109.                     rssimageText = rssimageText + "<img src=\""+rssimagesrc+"\"";
  110.                     rssimageText = rssimageText + " title=\""+rsstitleText+"\" ";
  111.                     rssimageText = rssimageText + " border=\"0\" ";
  112.                     rssimageText = rssimageText + " alt=\""+rsstitleText+"\" />";
  113.                     rssimageText = rssimageText + "</a>";
  114.                 }catch(e)
  115.                 {
  116.                 
  117.                     var rssimageText = "";
  118.                     aggreg8dump(e);
  119.                 
  120.                 }
  121.                 */
  122.  
  123.                 try{
  124.                     var rssdescElm = channelement.getElementsByTagName("description").item(0);        
  125.                     var rssdescText = rssdescElm.firstChild.nodeValue;
  126.  
  127.                 }catch(e)
  128.                 {
  129.                     
  130.                     var rssdescText = "";
  131.                     aggreg8dump(e);
  132.                     //alert(e);                            
  133.                     
  134.                 }
  135.                 
  136.                 
  137.             aggreg8dump(erroroccurred);
  138.             if(erroroccurred == "true")
  139.             {
  140.                 try{
  141.                 aggreg8dump("inside if statement"+ erroroccurred);
  142.                 completetext = completetext + "<table align='center' id='blog_header'><tr><td>";
  143.                 completetext = completetext + "<p><b>"+errorText+"</a></b>";
  144.                 completetext = completetext + "<br>"+errorDescription;
  145.                 completetext = completetext + "<br><a href='"+rsstobeparsed+"' target='new' title='"+rsstobeparsed+"'>"+rsstobeparsed+"</a></p>";    
  146.                 completetext = completetext + "</td></tr></table><br/>";
  147.                 }catch(e)
  148.                 {
  149.                     aggregdump(e);
  150.                 }
  151.  
  152.             }
  153.             else
  154.             {
  155.                 
  156.                 completetext = completetext + "<div class=\"sideBlockRight\">";
  157.                 completetext = completetext + " ";
  158.                 completetext = completetext + "</div>";
  159.                 completetext = completetext + "<div class=\"centerBlock\">";
  160.                 completetext = completetext + "<div class=\"itemheader\">";
  161.                 
  162.                 completetext = completetext + "<a href='"+rssurlText+"' target='new' ";
  163.                 completetext = completetext + " title='"+rssurlText+"'>"+rsstitleText+"</a><br />";
  164.                 completetext = completetext + rssdescText;
  165.                 
  166.                 completetext = completetext + "</div>";
  167.                                     
  168.                 
  169.             
  170.                 var allItems = rssdocument.getElementsByTagName("item");
  171.                 
  172.                 var cardinality_box = document.getElementById( "rssfeed-cardinality" );
  173.                 cardinality_box.value= allItems.length +" " + strbundle.getString("itemsstring");;
  174.                 aggreg8dump(allItems.length + " items");
  175.                 try{
  176.                     
  177.                     var increment = 100 / allItems.length;
  178.                     var current_progress = 0;
  179.                     //alert(increment);
  180.                     for (var i=0;i<allItems.length;i++)
  181.                     {
  182.                         completetext = completetext + "<br />";
  183.                         completetext = completetext + "<div class=\"itemheader\">";
  184.                         
  185.                         
  186.                         try{
  187.                         current_progress = current_progress + increment;
  188.                         progress_meter.setAttribute( "value", current_progress + "%");
  189.                         }catch(e)
  190.                         {
  191.                             aggreg8dump("progress meter update failed");
  192.                         }
  193.                         var itemElm = allItems[i];
  194.                         try{
  195.                             var titleElm = itemElm.getElementsByTagName("title").item(0);
  196.                             
  197.                             var titleText = titleElm.firstChild.nodeValue;
  198.                             
  199.                             aggreg8dump(titleText);
  200.                             
  201.                         }catch(e)
  202.                         {
  203.                             var titleText = "";
  204.                         }
  205.                         try{
  206.                             var linkElm = itemElm.getElementsByTagName("link").item(0);
  207.                             var linkURL = linkElm.firstChild.nodeValue;
  208.                             //aggreg8dump(linkURL);
  209.                         }catch(e)
  210.                         {
  211.                             var linkURL = "";
  212.                         }
  213.                         completetext = completetext + "<a href='"+linkURL+"' ";
  214.                         completetext = completetext + " target='new'>"+titleText+"</a>";
  215.                         completetext = completetext + "<br />";
  216.                         completetext = completetext + "<div class=\"itemdescription\">";
  217.                         try{
  218.                             
  219.                             var descriptionElm = itemElm.getElementsByTagName("description").item(0);
  220.                             var descriptionText = "";
  221.                             try{
  222.                                 var test_var = descriptionElm.nodeName;
  223.                             }
  224.                             catch(e)
  225.                             {
  226.                                 try{
  227.                                     var descriptionElm = itemElm.getElementsByTagName("content").item(0);
  228.                                     var test_var = descriptionElm.nodeName;
  229.                                 }
  230.                                 catch(e)
  231.                                 {
  232.                                     
  233.                                         aggreg8dump("Could not find a description"+e);
  234.                                     
  235.                                 }
  236.                             }
  237.  
  238.                            
  239.  
  240.                             try{
  241.                             if(descriptionElm.firstChild.nextSibling.nodeName=="#cdata-section")
  242.                             {
  243.                                 descriptionText = descriptionElm.firstChild.nextSibling.nodeValue;
  244.                                 //aggreg8dump("CDATA Tags : \n"+descriptionText);
  245.                                 var rExp = /href=/gi;
  246.                                 var newString = new String ("target='new' href=")
  247.                                 descriptionText = descriptionText.replace(rExp, newString)
  248.                                 completetext = completetext+descriptionText; 
  249.                                 
  250.                             }
  251.                             }catch(e)
  252.                             {
  253.                             
  254.                             try{                
  255.                                 descriptionText = descriptionElm.firstChild.nodeValue;
  256.                                 //aggreg8dump("NoCdata Tags : \n"+descriptionText);
  257.                                 var rExp = /href=/gi;
  258.                                 var newString = new String ("target='new' href=")
  259.                                 descriptionText = descriptionText.replace(rExp, newString)
  260.                                 completetext = completetext + descriptionText; 
  261.                             }catch(e)
  262.                             {
  263.                                 descriptionText = "";
  264.                                 aggreg8dump("No Description Tags : \n"+descriptionText);
  265.                                 completetext = completetext+descriptionText; 
  266.                             }    
  267.                             
  268.                             }
  269.                             
  270.                         }catch(e)
  271.                         {
  272.                             aggreg8dump(e);
  273.                         }
  274.                         completetext = completetext + "<div class=\"clearer\"> </div>";
  275.                         completetext = completetext+"</div>";
  276.                         completetext = completetext + "</div>";
  277.                         
  278.                         completetext = completetext + "<div class=\"spacer\"></div>";
  279.  
  280.                     }//end for loop
  281.                 }catch(e)//catch any errors in the for loop
  282.                 {
  283.                     aggreg8dump(e);
  284.                 }
  285.             }//end if error occurred
  286.             progress_meter.setAttribute( "value", "100%");
  287.         
  288.             try{
  289.                 completetext = completetext + "</div>";
  290.                 completetext = completetext + "<div class=\"sideBlockLeft\">";
  291.                 completetext = completetext + " ";
  292.                 completetext = completetext + "</div>";
  293.                 completetext = completetext + "</body>";
  294.                 completetext = completetext + "</html>";        
  295.                 var doc = window.frames[1].document;
  296.                 doc.open();
  297.                 doc.write(completetext);
  298.                 doc.close();
  299.             }catch(e)
  300.             {
  301.                 alert(e);
  302.             }
  303.  
  304. }
  305.