/**
 * Copyright (c) 2010 Replex Software. All rights reserved.
 **/
function twOptions()
{
  this.renderPermLink  = false;
  this.renderEmailLink = false;
  this.renderTextLink  = true;
  this.renderAd        = false;
  this.renderTags      = false;
  this.useFadeEffect   = true;
  this.currentTag      = null;

  this.permLinkText    = "link";
  this.emailLinkText   = "e-mail";
  this.adCaption       = "sponsored link:";
  this.tagsCaption     = "tags:";
}

// Internal variables, leave alone
var twContentList = [];
var twContentIndex = -1;
var twFading = false;
var twNewContent = null;
var twFadeTimerId = null;

function twDoFadeIn() {
  if (!twFading) {
    $('.todayswords-container').html(twNewContent);
    $('.todayswords-container').fadeIn();
    clearInterval(twFadeTimerId);
  }
}

function twGetMailToURL(data) {
  var body = data.text + "\r\n-- " + data.author +
             "\r\n\r\nDirect link:\r\nhttp://www.todayswords.net/" + data.id + "/" + data.slug + "\r\n" +
             "\r\nSent from www.todayswords.net";
  var res = "mailto:?subject=Today%27s%20Words%20from%20todayswords.net&body=" + escape(body);
  return res;
}

function twLoadContent(id, options) {
  if (options.useFadeEffect) {
    twFading = true;
    $('.todayswords-container').fadeOut(300, function() {
      twFading = false;
    });
  }

  var url = "http://www.todayswords.net/?format=json&callback=?";
  if (id > 0)
    url += "&id=" + id;
  if (options.activeTag)
    url += "&tag=" + options.activeTag;

  jQuery.getJSON(url, function(data, request) {
    if (id == 0) {
      twContentList.push(data.id);
      twContentIndex = twContentList.length - 1;
    } 

    var html = "";
    var permLinkURL = "http://www.todayswords.net/" + data.id + "/" + data.slug;
    
    // Render links?
    if (options.renderPermLink || options.renderEmailLink)
    {
      html += '<div class="todayswords-links">';
      if (options.renderPermLink)
        html += '<a href="' + permLinkURL + '">' + options.permLinkText + '</a>';
      if (options.renderPermLink && options.renderEmailLink)
        html += " | ";
      if (options.renderEmailLink)
        html += '<a href="' + twGetMailToURL(data) + '">' + options.emailLinkText + '</a>';
      html += '</div>';
    }

    // Render content
    html += '<div class="todayswords-content-container">';
    if (options.renderTextLink)
      html += '<a href="' + permLinkURL + '">';
    html += '<span class="todayswords-content-text">' + data.text + '</span>';
    if (data.author)
      html += '<span class="todayswords-content-author">-- ' + data.author + '</span>';
    if (options.renderTextLink)
      html += '</a>';
    html += '</div>';

    // Render ad?
    if (options.renderAd)
    {
      var ad_url = data.ad_url;
      var ad_text = data.ad_text;
      var adPresent = ad_url && ad_text;
      if (!adPresent)
      {
        ad_url = "mailto:ads@todayswords.net?subject=Advertising%20on%20todasywords.net";
        ad_text = "Your ad here?";
      }
      html += '<div class="todayswords-ad-container">';
      if (adPresent)
        html += '<div class="todayswords-ad-caption">' + options.adCaption + '</div>';
      html += '<div class="todayswords-ad-text">';
      if (!adPresent)
        html += '[ ';
      html += '<a href="' + ad_url + '">' + ad_text + '</a>'
      if (!adPresent)
        html += ' ]';
      html += '</div>';
      html += '</div>';
    }
    
    // Render tags?
    if (options.renderTags && data.tags && data.tags.length > 0)
    {
      html += '<div class="todayswords-tags-container">';
      html += '<div class="todayswords-tags-caption">' + options.tagsCaption + '</div>';
      html += '<div class="todayswords-tags-text">';      
      var i = 0;
      var n = data.tags.length;
      for (i = 0; i < n; i++)
      {
        html += '<a href="http://www.todayswords.net/' + data.tags[i] + '/">' + data.tags[i] + '</a>';
        if (i < n - 1)
          html += ', ';
      }
      html += '</div>';
      html += '</div>';
    }

    /*html += "<p>" + twContentIndex + "/" + twContentList.length + "<br>" + twContentList.toString() + "</p>";*/
    
    if (options.useFadeEffect)
    {
      twNewContent = html;
      twFadeTimerId = setInterval("twDoFadeIn();", 100);
    }
    else
    {
      $('.todayswords-container').html(html);
    }
    twToggleButtons();
  });    
}

function twEnableButton(selector, enabled) {
  var button = $(selector);
  if (enabled) {
    button.removeAttr("disabled");
    button.removeClass("navbutton-disabled");
  }
  else {
    button.attr("disabled", "disabled");
    button.addClass("navbutton-disabled");
  }
}

function twToggleButtons() {
  //twEnableButton("#tw-first", twContentIndex > 0);
  twEnableButton("#tw-prev", twContentIndex > 0);
  //twEnableButton("#tw-next", twContentIndex < twContentList.length - 1);
  //twEnableButton("#tw-last", twContentList.length > 1 && twContentIndex < twContentList.length - 1);
}

function twInstallClickHandlers(options) {
  /*
  $("#tw-first").click(function(event) {
    event.preventDefault();
    twContentIndex = 0;
    twLoadContent(twContentList[twContentIndex], options);
  });
  */

  $("#tw-prev").click(function(event) {
    event.preventDefault();
    twContentIndex -= 1;
    twLoadContent(twContentList[twContentIndex], options);
  });

  /*  
  $("#tw-random").click(function(event) {
    event.preventDefault();
    twLoadContent(0, options);
  });
  */

  $("#tw-next").click(function(event) {
    event.preventDefault();
    if (twContentIndex >= twContentList.length - 1) {
      twLoadContent(0, options);
    }
    else {
      twContentIndex += 1;
      twLoadContent(twContentList[twContentIndex], options);
    }
  });

  /*
  $("#tw-last").click(function(event) {
    event.preventDefault();
    twContentIndex = twContentList.length - 1;
    twLoadContent(twContentList[twContentIndex], options);
  });
  */
}

