
var app = {};

app = {

init: function()
 {

 $$('div.rss').each(
 	function(rss_box)
 	 {

// 	 var header = document.createElement('h4');
// 	 header.update(rss_box.getAttribute("header"));

         var url = rss_box.getAttribute("rss");

 	 var text_box = document.createElement('div');
 	 Element.extend(text_box);
 	 text_box.addClassName('text');

// 	 rss_box.appendChild(header);
 	 rss_box.appendChild(text_box);

 	 var mode = rss_box.getAttribute("mode");

 	 var params = {};
 	 params.amount = rss_box.getAttribute("amount");
 	 params.display_link = rss_box.getAttribute("display_link");
 	 params.show_header = rss_box.getAttribute("show_header");

 	 app.getRss(text_box, url, mode, params);

 	 }
 	);

 }

,getRss: function(box, url, mode, params) 
 {

 box.update('Loading...');

 new Ajax.Request('/get_rss.php', {
   method: 'post',
   encoding: 'UTF-8',
   parameters: { rss: url },
   onSuccess: function(transport) {

   app.make(box, transport.responseXML, mode, params)

   }
 });

 }

,make: function(box, xml, mode, params)
 {

 if (mode=="lastFM")
  app.makeLastFM(box, xml)  
 else if (mode=="youtube")
  app.makeYouTube(box, xml)  
 else
  app.makeRss(box, xml, params)  
 }

,makeYouTube: function(box, xml)
 {
// alert(xml.childNodes[0].nodeName)
 var items = app.selectNodes(xml,'//@src');
 var src = items[0].nodeValue;
 var t = xml.getElementsByTagName('title')[1];
 var title = (t.textContent)? t.textContent: t.firstChild.nodeValue;
 var html = [
     '<object width="120" height="100">',
     '<param name="movie" value="' + src + '"></param>',
     '<param name="allowFullScreen" value="true"></param>',
     '<param name="allowscriptaccess" value="always"></param>',
     '<embed src="' + src + '" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="120" height="100"></embed>',
     '</object>',
     '<p style="font-size:12px;">' + title + '</p>'].join('');
 box.update(html);
 }

,makeRss: function(box, xml, params) 
 {

// var items = alert(app.getNodeText(app.selectSingleNode(app.selectNodes(xml,"//item")[0],"description")))
 var items = app.selectNodes(xml,"//item");
 var res = "<ul>";

 var amount = (params.amount > 0)? params.amount: 2;

// for (var i=0;i<items.length;i++)
 for (var i = 0; i < amount; i++)
  {

//  if (hdr = (app.getField(items[i],"title")))
//   hdr = "<h4>"+hdr+"</h4>";

  var hdr = (app.getField(items[i],"title"));

  var time = new Date(app.getField(items[i],"pubDate"));
  
  if (hdr)
   hdr = "<b>"+hdr+"</b><br />";

  hdr = time.format("d mmm yyyy") + "<br>" +hdr;

  if (params.show_header == "false")
   hdr = "";

//alert(app.getField(items[i],"title"))

  var text = app.getField(items[i],"description").replace( /(<([^>]+)>)/gi," ");

//  alert(text)

  if (text.length>90 && params.display_link == "true")
   text = text.substr(0,90)+"..."+"</b></i>";

  var lnk = (params.display_link == "true")? "<p><a href='"+app.getField(items[i],"guid")+"'>Дальше</a></p>": "";
  res+="<li>"+hdr+text+lnk;
  }
 res+="</ul>";
 box.update(res);
 }

,makeLastFM: function(box, xml) 
 {
// var items = alert(app.getNodeText(app.selectSingleNode(app.selectNodes(xml,"//item")[0],"description")))
 var items = app.selectNodes(xml,"//track");
 var res = "<ul>";
 for (var i=0;i<items.length;i++)
  {
  var text = app.getField(items[i],"artist")+", "+app.getField(items[i],"name");
  res+="<li>"+text;
  }
 res+="</ul>";
 box.update(res);
 }

,getField: function(el,field)
 {
 return (app.getNodeText(app.selectSingleNode(el,field)));
 }

,selectNodes: function(DomElement, XPathPattern)
 {

 if (window.ActiveXObject)
  DomElement.setProperty("SelectionLanguage", "XPath");

    if ((XPathPattern ==  null) || (DomElement == null) || (XPathPattern == ""))
        return null;
        
    if (window.ActiveXObject)
     {
        var result;
        try {
        result = DomElement.selectNodes(XPathPattern)
        }
        catch(ex) { return false; }
        return result;
     }
    else
    {
        var theParentDoc = (DomElement.nodeName == '#document') ? DomElement : DomElement.ownerDocument;       
        var iterator = theParentDoc.evaluate(XPathPattern, DomElement, null, XPathResult.ANY_TYPE, null);       
        var relayArr = new Array();
        var index=0 
        while(item = iterator.iterateNext()) 
        {
           relayArr [index] = item;
           index++
        }         
        return  relayArr;      
    }        
}

,selectSingleNode: function(DomElement, XPathPattern)
 {
    if ((XPathPattern ==  null) || (DomElement == null))
     {
     return null;
     }

    if (window.ActiveXObject)
     {
     return  DomElement.selectSingleNode(XPathPattern);
     }
    else
     {
        var theParentDoc = (DomElement.nodeName == '#document') ? DomElement : DomElement.ownerDocument;
        var iterator = theParentDoc.evaluate(XPathPattern, DomElement, null, XPathResult.ANY_TYPE, null);
         var theNode = iterator.iterateNext();
         if (theNode != null)
         {      
             return theNode;
        }
        else
        {            
            return null;
        }
    }        
 }  

,getNodeText: function (node)
 {
	if (typeof(node) != "object")
		return ''; 
	
	if (!node)
		return '';
	
	if (!node.hasChildNodes())
		return '';
		
	return node.childNodes[0].nodeValue;
 }

}

//window.onload = app.init;

