/*
 * TwitterSearchGadget.js
 * (Require) Prototype.js, ObjTree.js, 
 * Copyright(c) lab.katsuma.tv
 */

// common objects
var _obj;// debug
var _default_input_text="You want to search?";
var _default_twitter_message;
var _tw_cont='twitterCont';

// draw HTML
drawGadget();

// set Form UI events
Event.observe($('twitterQuery'), 'focus', function(){$('twitterQuery').value="";});
Event.observe($('twitterQuery'), 'blur', function(){
	$('twitterQuery').value=_default_input_text;
	$(_tw_cont).innerHTML=_default_twitter_message;
});
Event.observe(window, 'load', function(){
	new Form.Element.Observer('twitterQuery', 1,	
		function(){
			var q = $F('twitterQuery');
			if(q==""){
				return;
			}
			searchTwitter(q);
		}
	);
});
function searchTwitter(q){
	q = q.trim();
	if(q==""|| q==_default_input_text) return;
	var url = 'http://twitter.fm/api/search?key=' + encodeURIComponent(q);
	var head = document.getElementsByTagName('head').item(0);	
	var api = "http://lab.katsuma.tv/api/jsonp_proxy.php?callback=viewTwitterSearch&sq=on&url=" + url;
	var session_id = 'sess_twitter_search';
	if($(session_id)){
		head.removeChild($(session_id));
	}
	var s = document.createElement('script');	
	s.setAttribute('type', 'text/javascript');
	s.setAttribute('src', api);
	s.setAttribute('id', session_id);
	s.setAttribute('charset', 'UTF-8');

	head.appendChild(s);		
}
function viewTwitterSearch(xml){
	var xotree = new XML.ObjTree();
	var obj = xotree.parseXML(xml);
	_obj = obj;//debug
	
	try{ // for multibyte code query
		var results = obj.statuses.status;
	    var ret = '';
	    var l;
	    if(results.length<3)l=results.length;
	    else l=3;
	    for(var i=0; i<l; i++){
	    	ret += '<p>' + decodeURIComponent(results[i].text);
	    	ret += '<br />&nbsp;<strong>by </strong><a href="' + results[i].link + '" target="_blank">' + results[i].user_name + "</a>";
	    	ret += '</p>'
	    }
	    $(_tw_cont).innerHTML = ret;
    } catch (e){
    	$(_tw_cont).innerHTML = "No Result"
    }
}

function initTwitterGadget(twitterID){	
	var api = "http://twitter.com/statuses/user_timeline/" + twitterID + ".json?callback=viewTwitterCont&count=1";
	var s = document.createElement('script');
	var head = document.getElementsByTagName('head').item(0);
	s.setAttribute('type', 'text/javascript');
	s.setAttribute('src', api);
	s.setAttribute('charset', 'UTF-8');
	head.appendChild(s);
}

function viewTwitterCont(json){
	var states = json;
	_obj = json;
	var latest_state = states[0];
	var t = latest_state.text + "<br />&nbsp;<strong>by </strong><a href=\"http://twitter.com/" + latest_state.user.screen_name + "\" target=\"_blank\">" + latest_state.user.name + "</a>";
	$(_tw_cont).innerHTML = t;
	_default_twitter_message=t;
}

function drawGadget(){
	var t='<table width="160" cellspacing="0" celpadding="0">';
	t+='<tr><td colspan="2" width="160"><img src="http://lab.katsuma.tv/twitter_search_gadget/twitter_gd_balloon_1.gif"alt="Twitter" /></td></tr>';
	t+='<tr><td colspan="2" width="160"><div id="twitterCont">Loading...</div></td></tr>';
	t+='<tr><td colspan="2" width="160"><img src="http://lab.katsuma.tv/twitter_search_gadget/twitter_gd_balloon_3.gif" alt="Twitter" /></td></tr>';
	t+='<tr><td rowspan="2"><img src="http://lab.katsuma.tv/twitter_search_gadget/twitter_gd_girl.gif" alt="Twitter" border="0" /></td><td><div id="twitterSearch"><input type="text" id="twitterQuery" name="twitterQuery" value="You want to search?" width="10" /></div></td></tr>';
	t+='<tr><td><a href="http://lab.katsuma.tv" target="_blank"><img src="http://lab.katsuma.tv/twitter_search_gadget/twitter_gd_copyright.gif" border="0" alt="Gadget by lab.katsuma.tv" /></a></td></tr>';
	t+='</table>';
	$('twitterGadget').innerHTML=t;
}
