var _proxy_url = "http://wktogo.com/crossdomain-proxy.php?url=";
var _api_search_url = "http://search.twitter.com/search.json?q=";

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

function setLoadTwit() {
  _page ++;
  _result_array = [];
  loadTwit();
}

function loadTwit() {
  var api_url;
  if (_type == "hash") {
    api_url = _api_search_url + _query + "&rpp=" + _rpp + "&page=" + _page + "&callback=?";
  } else if (_type == "favorite") {
    api_url = _api_user_favorite_url + _query + ".json" + "?page=" + _page + "&callback=?";
  }
  $.getJSON(api_url, function(json) {
    setTwit(json);
  });
}

function get_text_str(text) {
  var twit_str = '';
  twit_str = enhanceText(text.linkify().linkuser().linktag().replace(/<a/g,'<a target = "_blank"'));
  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 cTime = new Date();
  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 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;
}

String.prototype.linkify = function() {
  return this.replace(/[A-Za-z] + :\/\/[A-Za-z0-9-_] + \.[A-Za-z0-9-_:%&;\?\/. = ] + /g,function(m) {
    return m.link(m);
  });
};

String.prototype.linkuser = function() {
  return this.replace(/[@] + [A-Za-z0-9-_] + /g,function(u) {
    return u.link("http://twitter.com/" + u.replace("@",""));
  });
};

String.prototype.linktag = function() {
  return this.replace(/[] + [A-Za-z0-9-_] + /,function(t) {
    return t;
  });
};
