// (c)2003-2008 activeweave, inc. - http://www.activeweave.com
// author: Jean Sini - mailto:jean@activeweave.com

Activeweave = window.Activeweave || {};

/* Temporary Redefinition in order to function both  in Rover and Stickis */
Activeweave.Utils               = Activeweave.Utils               || {};
Activeweave.Utils.log           = Activeweave.Utils.log           || Activeweave.log;
Activeweave.Utils.addParameter  = Activeweave.Utils.addParameter  || Activeweave.addParameter;
Activeweave.Utils.DISAMBIGUATE  = Activeweave.Utils.DISAMBIGUATE  || Activeweave.DISAMBIGUATE; 

Activeweave.Feeds =
  {
  add: function(id,complete,disambiguate,feedUrl)
    {
    if(Activeweave.Blogs)
      {
      Activeweave.Blogs.cancelDisambiguation();        
      }
    try
      {
      var feedElt = $(id?id:'search_txt');
      var feed    = feedElt?feedElt.value:feedUrl;
      if(feedElt) feedElt.value = "";
      var inline  = id==null&&feedUrl!=null;
      if(feed)
        {
        feed = feed.trim();
        var statusElt = $('feedStatus');
        if(statusElt)
          {
          statusElt.innerHTML = "We are looking for a feed at <b>&#x201c;"+feed+"&#x201d;</b>.<br/>Please hang on for a second...";
          }
        var url     = '/ajax/add.feed.jsp';
        var params  = Activeweave.Utils.addParameter('feed.url',feed,true);
        params     += Activeweave.Utils.addParameter(Activeweave.Utils.DISAMBIGUATE,disambiguate,false);
        params     += Activeweave.Utils.addParameter('inline',inline,false);
        new Ajax.Request(url,
          {
          method:     'post',
          parameters: params,
          onComplete: complete||Activeweave.Feeds.added
          });
        }
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Feeds.add()",ex);
      }
    return false;
    },

  validate: function(feed,statusEltName,complete)
    {
    try
      {
      if(feed)
        {
        feed = feed.trim();
        var statusElt = $(statusEltName);
        if(statusElt)
          {
          statusElt.innerHTML = "We are looking for a feed at <b>&#x201c;"+feed+"&#x201d;</b>.<br/>Please hang on for a second...";
          statusElt.style.display = "block";
          statusElt.style.color   = "gray";
          }
        var url     = '/ajax/validate.feed.jsp';
        var params  = Activeweave.Utils.addParameter('feed.url',feed,true);
        new Ajax.Request(url,
          {
          method:     'post',
          parameters: params,
          onComplete: complete
          });
        }
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Feed.validate()",ex);
      }
    return false;
    },

  added: function(request)
    {
    try
      {
      var resp      = request?request.responseText:"";
      if(resp&&resp.trim().indexOf("{")==0)
        {
        var response = eval("("+resp+")");
        if(response&&response.ambiguous&&response.ambiguous.length>1)
          {
          var fs = "";
          var l  = response.ambiguous.length;
          var count = $('ambiguousCount');
          if(count) count.innerHTML = l+"";
          for(var i=0;i<l;i++)
            {
            var f = response.ambiguous[i];
            var bb  = (i+1<l)?'':'style="border-bottom: none;"';
            fs += "<div title = 'Add "+f.url+"' class='inactive' "+bb+" onmouseover = 'this.className=\"active\";' onmouseout = 'this.className=\"inactive\";' onclick='Activeweave.Blogs.disambiguated($(\"disamb-"+i+"\").innerHTML);'>";
            fs += "<div id    = 'disamb-"+i+"' class='url'>"+f.url+"</div>";
            fs += "<div class = 'title'>"+f.title+"</div>";
            fs += "<div class = 'clear'></div>";
            fs += "</div>\n";
            }
          var disamb = $('disambiguate');
          var amb    = $('ambiguousUrls');
          if(disamb) disamb.style.display = 'block';
          if(amb)
            {
            amb.innerHTML = fs;
            if(l<4)
              {
              var h = 18*l;
              amb.style.height = h+"px";
              }
            else
              {
              amb.style.height = '90px';  
              }
            }
          }
        }
      else
        {
        var statusElt = $('feedStatus');
        if(resp&&statusElt)
          {
          statusElt.innerHTML = resp;
          }
        }
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Feeds.added()",ex);
      }
    }
  };