/**@file 
 *
 * Twitter Script.
 *
 * @author (C)2010 ISHIKAWA Takahiro <ishikawa@searrs.net>
 */

var TWITPROXY_AUTORELOAD_TIMEOUT = new Array();
var TWITPROXY_BAN_LIST = new Array('ikeyu','imgdive','kokokukaigi','brunchandmilk','国立','埼玉スタジアム','Ｔ・ジョイ','バルト','nettrend');

function TWITPROXY_PROTO() {};
TWITPROXY_PROTO.prototype =  {
	init: function() {
		this.baseurl = 'http://search.twitter.com/search.json?q=';
		this.param = '&rpp=10&callback=TWITPROXY.callbackfunc';
		this.target	= '' ;
		this.reloadcnt = 0;
	}
	,getrequesturl: function(v) {
		return this.baseurl + encodeURI(v) + this.param;
	}
	,start: function(v) {
		this.opt = v;
		this.opt.len = this.opt.len || 5;
		this.opt.str = this.opt.str || 20;
		if (this.script != null) {
			 delete this.script;
		}
		this.script = obj = document.createElement("script");
		obj.setAttribute("type", "text/javascript");
		obj.setAttribute("src", this.getrequesturl(this.opt.q));
		document.getElementsByTagName("head")[0].appendChild(obj);
		this.reloadcnt ++;
	}
	,callbackfunc: function(v){
		if(v!=null){
			this.rawdata = v;
			var obj = document.getElementById(this.opt.target);
			if(obj!=null){
				obj.innerHTML = this.render(v.results);
			}
		}
	}
	,render: function(v){
		var maxlen = this.opt.len > v.length ? v.length : this.opt.len;
		var o = '';
		o += '<div class="message_block">';
		for (var i=0;i<maxlen;i++) {
			var banv = false;
			for (var ban in TWITPROXY_BAN_LIST) {
				if (v[i].text.indexOf('@'+ban)!=-1 || v[i].from_user==ban) {
					banv = true;
					continue;
				}
			}
			if (banv)
				continue;

			var more = false;
			if (v[i].text.length > this.opt.str) {
				v[i].text = v[i].text.substr(0,this.opt.str);
				more = true;
			}
			v[i].created_at = v[i].created_at.replace('+0000 ','');
			v[i].text = v[i].text.replace(/[\r\n]+/gi, "\n");
			v[i].text = v[i].text.replace(/\n/gi, " ");
			v[i].text = v[i].text.replace(/(http:\/\/[\x21-\x7e]+)/gi, "<a href='$1'>$1</a>");
			v[i].text = v[i].text.replace(/\@(.*?)([: ])/gi, "<a href='http://twitter.com/$1'>@$1</a>$2");
			
			o += '<div class="message_body" style="padding-bottom:3px; border-bottom:1px dashed #e0e0e0;">'
			+ '<img src="'+encodeURI(v[i].profile_image_url)+'" style="float:left;margin:4px 2px 0px 2px;width:32px;height:32px;" title="'+(v[i].from_user)+'">'
					+ v[i].text;
			if (more) {
				o += '<span class="message_more">...<a href="http://twitter.com/'+(v[i].from_user)+'" target="twitter">more</a></span>';
			}
			o +=	 '<br style="clear:left">'
				+'</div>'
				;
		}
		o += '</div>';
		return o;
	}
	,settimer: function(v) {
		setTimeout(function() { twitproxy_autoreload(v); }, TWITPROXY_AUTORELOAD_TIMEOUT[v.id]*1000);
	}
};

var TWITPROXY;
/// Start output.
function twitproxy_start(opt) {
	if (TWITPROXY == null) {
		TWITPROXY = new TWITPROXY_PROTO();
		TWITPROXY.init();
	}
	TWITPROXY.start(opt);
	TWITPROXY.settimer(opt);
}

/// Auto reload.
function twitproxy_autoreload(opt) {
	if (!TWITPROXY_AUTORELOAD_TIMEOUT[opt.id])
		TWITPROXY_AUTORELOAD_TIMEOUT[opt.id] = 20;
	twitproxy_start(opt);
}


