/* Copyright 2006 Colin Faulkingham.  Colin Faulkingham copyrights in this work are licensed under the Creative Commons */
/* Attribution-ShareAlike 2.5 License.  To view a copy of this license visit http://creativecommons.org/licenses/by-sa/2.5 */

/* Copyright 2006 Microsoft Corporation.  Microsoft's copyrights in this work are licensed under the Creative Commons */
/* Attribution-ShareAlike 2.5 License.  To view a copy of this license visit http://creativecommons.org/licenses/by-sa/2.5 */

function rssLink(url, siteName)
{
    this.Url = url;
    this.SiteName = siteName;
   

    this.formatType = "rssFeedLink";
    this.formatRootClassName = "rssFeedLink";

	 this.updateCallback;
    this.HTML;
    
    var self = this;
    
    this.clearProps = function()
    {
        self.Url = null;
        self.SiteName = null;
        self.buildHtml();
    }
    
    this.buildHtml = function()
    {
        var rssFeedLinkString = "<span class=\"rssFeedLink\">";
               
        if (self.Url)
        {
            rssFeedLinkString += "<a class=\"url\" href=\"" + self.Url + "\">";
            
            if (self.SiteName)
                rssFeedLinkString += "<span class=\"siteName\">" + self.SiteName + "</span>";

            rssFeedLinkString += "</a>";
        }
        
        rssFeedLinkString +=  "</span>";
        self.HTML = rssFeedLinkString;
    }
    
    // Initialize all contact properties from the hCal XML segment and rebuild hCal HTML.
    this.initFromXmlString = function(rssFeedLinkXmlString)
    {
        this.clearProps();
        var rssFeedLinkXmlStringWithHeader = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + rssFeedLinkXmlString;
        
        // IE 5+
        if (window.ActiveXObject)
        {
            rssFeedLinkXmlNode = new ActiveXObject("Microsoft.XMLDOM");
            rssFeedLinkXmlNode.async=false;
            rssFeedLinkXmlNode.loadXML(rssFeedLinkXmlStringWithHeader);
    
            var node;
            node = rssFeedLinkXmlNode.selectSingleNode("span[@class='rssFeedLink']/a[@class='url']/@href");
            if (node)
                self.Url = node.nodeTypedValue;
            
            node = rssFeedLinkXmlNode.selectSingleNode("span[@class='rssFeedLink']/a[@class='url']/span[@class='siteName']");
            if (node)
                self.SiteName = node.nodeTypedValue;
            
                            
        }
        // Mozilla etc.
        else if (typeof DOMParser != "undefined")
        {
            var domParser = new DOMParser();
            var rssFeedLinkXmlNode = domParser.parseFromString(rssFeedLinkXmlStringWithHeader, 'application/xml');
            
            if (document.evaluate)
            { 
                var node;
                          
                node = document.evaluate("span[@class='rssFeedLink']/a[@class='url']/@href", rssFeedLinkXmlNode, null, 0 /*XPathResult.ANY_TYPE*/, null).iterateNext();
                if (node)
                    self.Url = node.textContent;
                
                node = document.evaluate("span[@class='rssFeedLink']/a[@class='url']/span[@class='siteName']", rssFeedLinkXmlNode, null, 0 /*XPathResult.ANY_TYPE*/, null).iterateNext();
                if (node)
                    self.SiteName = node.textContent;
            }
            else
            {   
				   //var vCalendarNode = null;
               //var vEventNode = null;
               //var urlNode = null;
					var rssFeedLinkNode = null;
               var urlNode = null;
                               
               for (var i = 0; i < rssFeedLinkXmlNode.childNodes.length; i++)
               {                    
                   for (var j = 0; j < rssFeedLinkXmlNode.childNodes[i].attributes.length; j++)
                   {
                       if ((rssFeedLinkXmlNode.childNodes[i].attributes[j].nodeName == "class") && (rssFeedLinkXmlNode.childNodes[i].attributes[j].nodeValue == "rssFeedLink"))
                       {
                           rssFeedLinkNode = rssFeedLinkXmlNode.childNodes[i];
                           break; 
                       }
                   }
                   
              
                  
                  if (rssFeedLinkNode)
                  {
                       for (var j = 0; j < rssFeedLinkNode.childNodes.length; j++)
                       {
                           for (var k = 0; k < rssFeedLinkNode.childNodes[j].attributes.length; k++)
                           {
                               if ((rssFeedLinkNode.childNodes[j].attributes[k].nodeName == "class") && (rssFeedLinkNode.childNodes[j].attributes[k].nodeValue == "url"))
                               {
                                   urlNode = rssFeedLinkNode.childNodes[j];
                                   break;
                               }
                           }
                       }
                  }
                  
                  if (urlNode)
                  {
                       for (var j = 0; j < urlNode.attributes.length; j++)
                       {
                           if (urlNode.attributes[j].nodeName == "href")                                                  
                               self.Url = urlNode.attributes[j].nodeValue;
                       }
                       for (var j = 0; j < urlNode.childNodes.length; j++)
                       {
                           if (urlNode.childNodes[j].attributes)
                           {
                               for (var m = 0; m < urlNode.childNodes[j].attributes.length; m++)
                               {
                                   if ((urlNode.childNodes[j].attributes[m].nodeName == "class") && (urlNode.childNodes[j].attributes[m].nodeValue == "siteName"))
                                       self.SiteName = urlNode.childNodes[j].childNodes[0].nodeValue;
                                   
                               }
                           }
                       }
                   }
               }
                    
            }
        }
        
        self.buildHtml();
    }

    self.buildHtml();
}