var _api_search_url = "http://search.twitter.com/search.json?q=";
var _api_user_favorite_url = "http://api.twitter.com/1/favorites/";

function getTwitBy(type, query, since, rpp, page) {
  var api_url;
  if (type == "hash") {
    api_url = _api_search_url + query + "&rpp=" + rpp;
  } else if (type == "favorite") {
    api_url = _api_user_favorite_url + query + ".json" + "?rpp=" + rpp;
  }
  if (page) {
    api_url += "&page=" + page;
  }
  if (since) {
    api_url += "&since_id=" + since;
  }
  api_url += "&callback=?"
  $.getJSON(api_url, function(json) {
    setTwit(json);
  });
}

function get_text_str(text) {
  var twit_str = '';
  twit_str = linkify(text);
  return twit_str;
}


function get_date_str(created_at) {
  var twit_date = new Date(Date.parse(created_at));
  var year = twit_date.getFullYear();
  var month = twit_date.getMonth() + 1;
  if (month < 10) {
    month = "0" + month;
  }
  var day = twit_date.getDate();
  if (day < 10) {
    day = "0" + day;
  }
  var hh = twit_date.getHours();
  if (hh < 10) {
    hh = "0" + hh;
  }
  var mm = twit_date.getMinutes();
  if (mm < 10) {
    mm = "0" + mm;
  }
  var ss = twit_date.getSeconds();
  if (ss < 10) {
    ss = "0" + ss;
  }
  var date_str = year + "/" + month + "/" + day + " " + hh + ":" + mm + ":" + ss;
  return date_str;
}

function get_since_str(created_at) {
  var created_at_array = created_at.split(" ");
  created_at = created_at_array[1] + " " + created_at_array[2] + ", " + created_at_array[5] + " " + created_at_array[3];
  var parsed_date = Date.parse(created_at);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);
  if (delta < 60) {
    return 'less than a minute ago';
  } else if(delta < 120) {
    return 'about a minute ago';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*60)) {
    return 'about an hour ago';
  } else if(delta < (24*60*60)) {
    return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
    return '1 day ago';
  } else {
    return (parseInt(delta / 86400)).toString() + ' days ago';
  }
}


/*
function get_since_str(created_at) {
  var cTime = new Date();

alert(created_at)

  var sinceMin = Math.round((cTime - created_at) / 60000);

  if(sinceMin == 0) {
    var sinceSec = Math.round((cTime - created_at) / 1000);
    if(sinceSec < 10) {
      var since = 'less than 10 seconds ago';
    } else if(sinceSec < 20) {
      var since = 'less than 20 seconds ago';
    } else {
      var since = 'half a minute ago';
    }
  } else if(sinceMin == 1) {
    var sinceSec = Math.round((cTime - created_at) /1000);
    if(sinceSec == 30) {
      var since = 'half a minute ago';
    } else if(sinceSec < 60) {
      var since = 'less than a minute ago';
    } else {
      var since = '1 minute ago';
    }
  } else if(sinceMin < 45) {
    var since = sinceMin + ' minutes ago';
  } else if(sinceMin > 44 && sinceMin < 60) {
    var since = 'about 1 hour ago';
  }
  else if(sinceMin < 1440) {
    var sinceHr = Math.round(sinceMin / 60);
    if(sinceHr == 1) {
      var since = '1 hour ago';
    } else {
      var since = '' + sinceHr + ' hour ago';
    }
  } else if(sinceMin > 1439 && sinceMin < 2880) {
    var since = '1 day ago';
  } else {
    var sinceDay = Math.round(sinceMin / 1440);
    var since = '' + sinceDay + ' days ago';
  }
  return since;
}
*/

function blackBirdPieHTML(id_str, name, screen_name, profile_image_url, twit_str, since_str, date_str) {
  var html = '<style type="text/css">.bbpBox' + id_str + ' {background:url(http://s.twimg.com/a/1290538325/images/themes/theme1/bg.png) #C0DEED;padding:10px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:14px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style> <div class="bbpBox' + id_str + '"><p class="bbpTweet">' + twit_str + '<span class="timestamp"><a title="' + date_str + '" href="http://twitter.com/#!/' + screen_name + '/status/' + id_str + '">' + since_str + '</a></span><span class="metadata"><span class="author"><a href="http://twitter.com/' + screen_name + '"><img src="' + profile_image_url + '" /></a><strong><a href="http://twitter.com/' + screen_name + '">' + name + '</a></strong><br/>' + screen_name + '</span></span></p></div>';
  return html;
}

function enhanceText(text) {
  var enhance_str_array = [];
  var enhanced_str = text;
  for (var i=0; i < enhance_str_array.length; i++) {
    var enhance_str = enhance_str_array[i];
    var e_array = enhanced_str.split(enhance_str);
    enhanced_str = e_array.join('<em>' + enhance_str + '</em>');
  }
  return enhanced_str;
}

function linkify(text) {
  text = text.replace(/(https?:\/\/\S+)/gi, function (s) {
    return '<a href="' + s + '" target="_blank">' + s + '</a>';
  });
  text = text.replace(/(^|)@(\w+)/gi, function (s) {
    return '<a href="http://twitter.com/' + s.replace("@", "") + '" target="_blank">' + s + '</a>';
  });
  text = text.replace(/(^|)#(\w+)/gi, function (s) {
    return '<a href="http://search.twitter.com/search?q=' + s.replace(/#/,'%23') + '" target="_blank">' + s + '</a>';
  });
  return text;
}
