jQuery.fn.reverse = Array.prototype.reverse;

//**********************************************
// twitterリンク情報設定・置換
//**********************************************
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){
		var username = u.replace("@","");
		return u.link("http://twitter.com/" + username);
	});
};

String.prototype.linktag = function(){
	return this.replace(/[#]+[A-Za-z0-9-_]+/,function(t){
		var tag = t.replace("#","%23");
		return t.link("http://search.twitter.com/search?q=" + tag);
	});
};

//**********************************************
// twitter情報の取得
//**********************************************
function fetch_tweets(elem){
	elem  = $(elem);
	input = elem.attr('title');
	//lang  = elem.attr('lang');
	lang  = 'all';

	if(input != window.monitter['text-' + input]){
		window.monitter['last_id' + input] = 0;
		window.monitter['text-'   + input] = input;
		window.monitter['count-'  + input] = 12;
	;}
	/* monitter 文字を表示しない
	if(window.monitter['count-'+input]>10){
		elem.prepend('<div class="tweet"><img src="http://monitter.com/widget/favicon.gif" align="absmiddle" />real time twitter by: <a href="http://monitter.com" target="_blank">monitter.com</a></div>');
		window.monitter['count-'+input]=0;
	}
	*/

	//**************************************************
	// ■TwitterAPI(JSON形式で取得)
	// lang   ：言語(7日以内のtweetに限定される)
	// rpp    ：1回のﾘｸｴｽﾄで取得するtweets数
	// since_id:
	//**************************************************
	//var url = "http://search.twitter.com/search.json?q=" + encodeURIComponent(input) + "&lang=" + lang + "&rpp=" + rrp + "&callback=?";
	//var url = "http://api.twitter.com/1/statuses/user_timeline/anteprima_jp.json";
	
	// ★2011-10-11 k.takami(^-^) q=のクエリ取得方法を変更！
	var url = "http://search.twitter.com/search.json?q=apj+from:anteprima_jp" + "&lang=" + lang + "&rpp=" + rrp + "&callback=?";

	$.getJSON(url,function(json){
		$('div.tweet:gt(' + window.monitter['limit'] + ')',elem).each(function(){
			$(this).fadeOut('slow')
		});

		$(json.results).reverse().each(function(){
			if($('#tw' + this.id , elem).length == 0){

					window.monitter['count-' + input]++;

					var thedate    = new Date(Date.parse(this.created_at));
					var thedatestr = thedate.getHours() + ':' + thedate.getMinutes();
					var divstr;

					// ***** 表示部分 ***** ここを変更しましょう (^-^)
					divstr  = '<div id="tw' + this.id + '" class="newstwitter">';
					divstr += '<table>';
					divstr += '<tr>';
					divstr += '<td class="twitterIcon">';
					divstr += '<a href="http://twitter.com/' + this.from_user + '" target="_blank">';
					//divstr += '<img width="73" height="73" src="' + this.profile_image_url + '" />';
					divstr += '<img width="73" height="73" src="http://www.wirebag.jp/test/images/icon_anteprima.jpg" />';
					divstr += '</a>';
					divstr += '</td>';
					divstr += '<td class="centertext">';
					divstr += '<p class="account"><a href="http://twitter.com/' + this.from_user + '" target="_blank">' + this.from_user + '</a></p>';

					// 日付・時間表示の場合
					//divstr += '&nbsp;-&nbsp;<strong>' + thedatestr + '</strong><br />&nbsp;';
					// 日付・時間非表示の場合
					//divstr += '<br />';

					divstr += this.text.linkify().linkuser().linktag();
					//divstr += this.text.linkify().linkuser().linktag().slice(0,140);
					divstr += '</td>';
					divstr += '<td class="twitpic" id="twimg' + this.id + '" name="twimg' + this.id + '"></td>';
					divstr += '</tr>';
					divstr += '</table>';
					divstr += '</div>';

					window.monitter['last_id' + input] = this.id;
					elem.prepend(divstr);


					// ここから追加！Twitpic！
					// ★2011-09-01 y.nakayama (^-^)
					// 2011年8月15日にTwitterが強制短縮URLを実施！（http://t.co/になる！）
					// これに対応するのに短縮URLを展開させるｻｰﾋﾞｽ（石森くんありがとー！）でJSON形式に展開！
					// それを利用してｻﾑﾈｲﾙを表示！（非同期通信にて対応！

					// IE7以下は対応しません 2011-09-09 k.takami (^-^)
					var appVersion = window.navigator.appVersion.toLowerCase();

					if (appVersion.indexOf("msie 6.0") > -1) {
                        //IE6
						// つぶやき文章を変数に代入
						var str_hon = this.text;
						
						// つぶやきの中に短縮URLが含まれているか確認！
						var id_num  = str_hon.lastIndexOf("http://t.co/");

						// -1（http://t.co/はない）でなかったら
						if (id_num != -1)
						{
							id_num = id_num + 12;					// このURLの12文字：http://t.co/を足す！
							id_str = str_hon.substr(id_num , 8);	// 7文字(id)取得　※本当に7文字？(←Twitter短縮IDの桁数)

							ActiveX("http://ux.nu/hugeurl?format=json&url=http://t.co/" + id_str , this.id);
						}
					}
					else if (appVersion.indexOf("msie 7.0") > -1) {

					} else {
						// つぶやき文章を変数に代入
						var str_hon = this.text;
						
						// つぶやきの中に短縮URLが含まれているか確認！
						var id_num  = str_hon.lastIndexOf("http://t.co/");

						// -1（http://t.co/はない）でなかったら
						if (id_num != -1)
						{
							id_num = id_num + 12;					// このURLの12文字：http://t.co/を足す！
							id_str = str_hon.substr(id_num , 8);	// 7文字(id)取得　※本当に7文字？(←Twitter短縮IDの桁数)

							requestFile("http://ux.nu/hugeurl?format=json&url=http://t.co/" + id_str , this.id);
						}
					}


					$('#tw' + this.id,elem).hide();
					$('#tw' + this.id + ' img',elem).hide();
					$('#tw' + this.id + ' img',elem).fadeIn(4000);
					$('#tw' + this.id,elem).fadeIn('slow');
			}
		});

		input = escape(input);
		rrp   = 3;
		setTimeout(function(){
			fetch_tweets(elem);
		},20000);
	});
	return(false);
}

$(document).ready(function(){
	window.monitter = {};
	$('.monitter').each(function(e){
		rrp = 5;
		fetch_tweets(this);
	});
	$('.monitter2').each(function(e){
		rrp = 5;
		fetch_tweets(this);
	});
});




function requestFile(fileName , twid) {
    //IE8
    if (window.XDomainRequest) {
        var xmlHttpReq = new XDomainRequest;

        xmlHttpReq.open('GET', fileName);

    	// 同期通信用
        xmlHttpReq.onload = function() {
            //if (xmlHttpReq.readyState == 4) {
                var jsonData = xmlHttpReq.responseText;
                var data     = eval("(" +jsonData + ")");

                // 短縮URLを展開したものをaaaに入れる
				var aaa = data.exp;

				// 展開したURLがtwitpicのURLを短縮したものなのか判定(違う場合は-1が返る)
				var bbb = aaa.lastIndexOf("http://twitpic.com/");

				if (bbb != -1){
					// 画像IDを取得(展開後のURLからIDを取得！) 2011-09-01段階では6桁だが、予備1桁＋で7桁としよう！(^-^)
					var iid = aaa.substr(19 , 7);

					var str = '<a href="' + aaa + '" target="_blank"><img src="http://twitpic.com/show/thumb/' + iid + '" width="98" height="98" /></a>';

					if (document.getElementById("twimg" + twid)){
						document.getElementById("twimg" + twid).innerHTML = str;
					}
				}
			//}
	    } 
	    xmlHttpReq.send(null);
	}
    //Firefox, Safari 
	else if (window.XMLHttpRequest) { 
        var xmlHttpReq = new XMLHttpRequest();

        xmlHttpReq.open('GET', fileName ,true);

    	// 非同期通信用
        xmlHttpReq.onreadystatechange = function() {
            if (xmlHttpReq.readyState == 4) {
                var jsonData = xmlHttpReq.responseText;
                var data     = eval("(" +jsonData + ")");

                // 短縮URLを展開したものをaaaに入れる
                var aaa = data.exp;

                // 展開したURLがtwitpicのURLを短縮したものなのか判定(違う場合は-1が返る)
                var bbb = aaa.lastIndexOf("http://twitpic.com/");

			    if (bbb != -1){
			    	// 画像IDを取得(展開後のURLからIDを取得！) 2011-09-01段階では6桁だが、予備1桁＋で7桁としよう！(^-^)
			    	var iid = aaa.substr(19 , 7);

					var str = '<a href="' + aaa + '" target="_blank"><img src="http://twitpic.com/show/thumb/' + iid + '" width="98" height="98" /></a>';
			        document.getElementById("twimg" + twid).innerHTML = str;
			    }
	        }
	    } 
	    xmlHttpReq.send(null);
	}
}

/*2011-09-09 k.takami (^-^)使わないよ
function createHttpRequest() { 
    var x = null;

    //IE7,Firefox, Safari 
    if (window.XMLHttpRequest) { 
        return new XMLHttpRequest();
    }

    //IE8
    if (window.XDomainRequest) {
        return new XDomainRequest;
    }

    //IE6
    try {
        return new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch(e) {
        // IE5
        try {
            return new ActiveXObject("Microsoft.XMLHTTP"); 
        } catch(e) {
            x = null; 
        } 
    } 
    return x; 
}*/

function ActiveX(fileName , twid){
	var AX = new ActiveXObject("Msxml2.XMLHTTP"); 
	AX.open('GET', fileName);
	// 同期通信用
	AX.onreadystatechange = function() {
		if (AX.readyState == 4) {
			var jsonData = AX.responseText;
			var data     = eval("(" +jsonData + ")");

			// 短縮URLを展開したものをaaaに入れる
			var aaa = data.exp;

			// 展開したURLがtwitpicのURLを短縮したものなのか判定(違う場合は-1が返る)
			var bbb = aaa.lastIndexOf("http://twitpic.com/");

			if (bbb != -1){
				// 画像IDを取得(展開後のURLからIDを取得！) 2011-09-01段階では6桁だが、予備1桁＋で7桁としよう！(^-^)
				var iid = aaa.substr(19 , 7);

				var str = '<a href="' + aaa + '" target="_blank"><img src="http://twitpic.com/show/thumb/' + iid + '" width="98" height="98" /></a>';

				if (document.getElementById("twimg" + twid)){
					document.getElementById("twimg" + twid).innerHTML = str;
				}
			}
		}
	} 
	AX.send(null);
}
