// (c)2003-2008 activeweave, inc. - http://www.activeweave.com
// author: Jean Sini - mailto:jean@activeweave.com

var 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.Button =
  {
  PREFIX:                 "?feed.url=",
  MISSING_MESSAGE_LABEL:  "Please enter a blog or feed Url.",

  currentUrl: null,

  updateUrl: function(elt)
    {
    if(elt==null) return;
    try
      {
      Activeweave.Button.currentUrl = elt.value.trim();
      Activeweave.Feeds.validate(Activeweave.Button.currentUrl,'urlError',Activeweave.Button.validatedUrl);
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Button.updateUrl()",ex);
      }
    return false;
    },

  updateImplicitUrl: function()
    {
    try
      {
      var input = $('stickisBlogUrl');
      var url   = null;
      if(input)
        {
        url = input.value.trim();
        }
      if(!url)
        {
        var statusElt = $('urlError');
        if(statusElt)
          {
          statusElt.innerHTML = Activeweave.Button.MISSING_MESSAGE_LABEL;
          statusElt.style.display = 'block';
          statusElt.style.color = "#aa0000";
          }
        return true;
        }
      if(url!=Activeweave.Button.currentUrl)
        {
        Activeweave.Button.currentUrl = url;
        Activeweave.Feeds.validate(Activeweave.Button.currentUrl,'urlError',Activeweave.Button.validatedUrl);
        return true;
        }
      else
        {
        return false;
        }        
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Button.updateImplicitUrl()",ex);
      return true;
      }
    },

  hideStatus: function()
    {
    var statusElt = $('urlError');
    if(statusElt)
      {
      statusElt.innerHTML = "";
      statusElt.style.display = 'none';
      statusElt.style.color = "gray";
      }
    },

  validatedUrl: function(request)
    {
    try
      {
      if(!request) return;
      var raw           = request.responseText;
      var status        = request.status;
      var message       = "We were unable to process your request. Please try again in a few moments.";
      var error         = false;
      if(raw&&status==200)
        {
        message = raw.trim();
        error = message.indexOf('authErrorMessage')>=0;
        }
      else
        {
        error = true;
        }
      var statusElt = $('urlError');
      if(statusElt)
        {
        statusElt.innerHTML = message;
        statusElt.style.display = 'block';
        statusElt.style.color = error?"#aa0000":"#79be41";
        }
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.validatedUrl()",ex);
      }
    if(Activeweave.Button.currentUrl&&Activeweave.Button.currentUrl.length>0)
      {
      window.setTimeout(Activeweave.Button.hideStatus,3000);
      }
    try
      {
      var button  = $('stickisButton');
      if(button)
        {
        var a = button.getElementsByTagName('a')[0];
        if(a)
          {
          var h   = a.href;
          var ind = h.indexOf(Activeweave.Button.PREFIX);
          ind+=Activeweave.Button.PREFIX.length;
          h = h.substring(0,ind);            
          a.href = h+encodeURIComponent(Activeweave.Button.currentUrl);
          }
        Activeweave.Button.updateText(button);
        }
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Button.validatedUrl()",ex);
      }
    return false;
    },

  updateImg: function(elt,borderOnly)
    {
    if(elt==null) return;
    try
      {
      var imagesDiv = $('images');
      var images    = imagesDiv.getElementsByTagName('img');
      var im;
      for(var c=0;c<images.length;c++)
        {
        im = images[c];
        if(im.src==elt.src)
          {
          if(!borderOnly) im.style.backgroundColor="#dddddd";
          im.style.border = "1px dotted gray";
          }
        else
          {
          if(!borderOnly) im.style.backgroundColor="transparent";
          im.style.border = borderOnly?"1px dotted white":"none";
          }
        }
      var src       = elt.src;
      var button    = $('stickisButton');
      if(button)
        {
        var i = button.getElementsByTagName('img')[0];
        if(i)
          {
          i.src = src;
          }
        var delay = Activeweave.Button.updateImplicitUrl();
        if(!delay)
          {
          Activeweave.Button.updateText(button);
          }
        }
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Button.updateImg()",ex);
      }
    return false;
    },

  updateText: function(elt)
    {
    if(elt==null) return;
    try
      {
      var text    = $('stickisButtonSrc');
      if(text)
        {
        var inner = elt.innerHTML;
        inner = inner.replace(/ onfocus="this.blur\(\);"/g,"");
        text.value = inner.trim();
        }
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Button.updateText()",ex);
      }
    return false;
    },

  init: function(request)
    {
    try
      {
      Activeweave.popupReceived(request);
      var urlInput = $('stickisBlogUrl');
      if(urlInput) urlInput.focus();
      }
    catch(ex)
      {
      Activeweave.Utils.log("Activeweave.Button.init()",ex);        
      }
    }
  };