/**
 * @author fukushima
 */

/*==================================================================================
		『サーチ結果』のJSONP取得
==================================================================================*/

function getTypeSearch(myUrl,place) {

		  $.ajax({
		    type: "GET",
			url: "http://search.twitter.com/search.json?q=%23" + myUrl,
			lang: "ja",
			page: "1",
		    dataType: "jsonp",
			data: {
		      "q": myUrl,
		      "rpp": 10
		    },
		    success: function(data) {
				$(place).empty();
				
				makeListSearchTL(data.results,myUrl,place,0);
		  	  }
		  });
	}

/*==================================================================================
		『manzoku　オフィシャル』のJSONP取得
==================================================================================*/

function getTypeOfficial(myUrl,place) {

		  $.ajax({
		    type: "GET",
			url: "http://twitter.com/statuses/user_timeline/" + myUrl + ".json",
			lang: "ja",
			page: "1",
		    dataType: "jsonp",
			data: {
		      "q": myUrl,
		      "count": 10
		    },
		    success: function(data) {
				$(place).empty();
				makeListOfficialTL(data,myUrl,place,0);
		  	  }
		  });
	}

/*==================================================================================
		『各番組の』のJSONP取得
==================================================================================*/

function getTypeProgram(myUrl,place) {

		  $.ajax({
		    type: "GET",
			url: "http://twitter.com/statuses/user_timeline/" + myUrl + ".json",
			lang: "ja",
			page: "1",
		    dataType: "jsonp",
			data: {
		      "q": myUrl,
		      "count": 5
		    },
		    success: function(data) {
				$(place).empty();
				makeListProgramTL(data,myUrl,place,0);
		  	  }
		  });
	}


/*==================================================================================
		『各番組の』のJSON取得
==================================================================================*/

function getTypeSub(myUrl,place,name) {
			
		  $.ajax({
		    type: "GET",
		    url: myUrl,
			processData: false,
		    dataType: "json",
		    success: function(data) {
				$(place).empty();
				makeListProgramTL_json(data,name,place,0);
		  	  }
		  });
	}	

/*==================================================================================
		『サーチ結果』のタイムラインを取得時に使用
==================================================================================*/

var realTimeCnt = 0;

function makeListSearchTL(data,name,place,cnt){

	var i =cnt;
	
	var dd_tag = document.createElement('dd');
	dd_tag.id = 'list_'+i;
	dd_tag.className = 'twbox';
	dd_tag.style.display = 'none';
	
	var userName = data[i].from_user;
	var	userImg = data[i].profile_image_url;
	var text = strtrim(data[i].text, 35, userName);
	var id = data[i].from_user_id;
	var reply_url = "http://twitter.com/?status=@" + userName + "%20&in_reply_to_status_id=" + id + "&in_reply_to=" +userName;
	var reply = "<span class='replyclass'><a href='" + reply_url + "' target='_blank'><img src='portal_data/img/mt/reply_btn.gif' /></a></span>"
	var create_time = dateConvertSearchTL(data[i].created_at);
	var sHTML = "<p class='userIMG'><a href='http://twitter.com/" + userName  +"' target='_blank'><img width='48' src='" + userImg + "' /></a></p><div><p class='author'><a href='http://twitter.com/"+ userName + "' target='_blank'>" + userName + "</a></p><p class='date'><span>" + create_time + "</span>" + reply + "</p></div><p class='tweetText'>" + text + "</p>";
	
	dd_tag.innerHTML = sHTML;
	$(place).prepend(dd_tag);
	
	//12*約3000秒で実行
	if((realTimeCnt > 12)&&(i == data.length-1)){
		
		$.ajax({
		    type: "GET",
			url: "http://search.twitter.com/search.json?q=%23" + name,
			lang: "ja",
			page: "1",
		    dataType: "jsonp",
			data: {
		      "q": name,
		      "rpp": 10
		    },
		    success: function(json) {
				data = json.results;
				realTimeCnt = 0;
		  	  }
		  });
	}
	
	$(dd_tag).slideDown("slow",function(){
		var lastPosY = $(place + " dd:last").offset()["top"] - $(place).offset()["top"];
		lastPosY = Math.floor(lastPosY);
		if(lastPosY > 350){
			$(place + " dd:last").remove();
		}
		var second = Math.floor(Math.random()*1000);
		second += 2500;
		
		$.timer(second, function(timer){
			timer.stop();
			i++;
			realTimeCnt++;
			
			if(i==data.length){
				i = 0;
				
			}
			//3より少ないタイムラインは表示しきると関数終了
			if(data.length <3){
				if(data.length == i){
					return;
				}
			}
			makeListSearchTL(data,name,place,i);
		});
		
	});
}

/*==================================================================================
		『manzoku』のタイムラインを取得時に使用
==================================================================================*/

function makeListOfficialTL(data,name,place,cnt){
	
	var i =cnt;
	
	var dd_tag = document.createElement('dd');
	dd_tag.id = 'list_'+i;
	dd_tag.className = 'twbox';
	dd_tag.style.display = 'none';
	
	
	var	userImg = data[i].user.profile_image_url;
	var text = strtrim(data[i].text, 35, name);
	var id = data[i].id;
	var reply_url = "http://twitter.com/?status=@" + name + "%20&in_reply_to_status_id=" + id + "&in_reply_to=" +name;
	var reply = "<span class='replyclass'><a href='" + reply_url + "' target='_blank'><img src='portal_data/img/mt/reply_btn.gif'  /></a></span>"
	var create_time = dateConvertUserTL(data[i].created_at);
	var sHTML = "<p class='userIMG'><a href='http://twitter.com/" + name  +"' target='_blank'><img width='48' src='" + userImg + "' /></a></p><div><p class='author'><a href='http://twitter.com/"+ name + "' target='_blank'>" + name + "</a></p><p class='date'><span>" + create_time + "</span>" + reply + "</p></div><p class='tweetText'>" + text + "</p>";
	
	dd_tag.innerHTML = sHTML;
	$(place).prepend(dd_tag);
	
	$(dd_tag).slideDown("slow",function(){
		var lastPosY = $(place + " dd:last").offset()["top"] - $(place).offset()["top"];
		lastPosY = Math.floor(lastPosY);
		if(lastPosY > 350){
			$(place + " dd:last").remove();
		}
		var second = Math.floor(Math.random()*1000);
		second += 2500;
		
		$.timer(second, function(timer){
			timer.stop();
			i++;
			if(i==data.length){
				i = 0;
			}
			if(data.length <3){
				if(data.length == i){
					return;
				}
			}
			makeListOfficialTL(data,name,place,i);
		});
		
	});
}

/*==================================================================================
		【JSONPパース】各番組のタイムラインを取得時に使用
==================================================================================*/


function makeListProgramTL(data,name,place,cnt){
	
	var i = cnt;
	
	var dd_tag = document.createElement('dd');
	dd_tag.id = 'list_'+i;
	dd_tag.className = 'twbox prgBox';
	dd_tag.style.display = 'none';
	
	var	userImg = data[i].user.profile_image_url;
	var text = strtrim(data[i].text, 20, name);
	var id = data[i].id;
	var reply_url = "http://twitter.com/?status=@" + name + "%20&in_reply_to_status_id=" + id + "&in_reply_to=" +name;
	var reply = "<span class='replyclass'><a href='" + reply_url + "' target='_blank'><img src='portal_data/img/mt/reply_btn.gif'  /></a></span>"
	var create_time = dateConvertUserTL(data[i].created_at);
	var sHTML = "<p class='userIMG'><a href='http://twitter.com/" + name  +"' target='_blank'><img width='48' src='" + userImg + "' /></a></p><div><p class='author_prg'><a href='http://twitter.com/"+ name + "' target='_blank'>" + name + "</a></p><p class='date'><span>" + create_time + "</span>" + reply + "</p></div><p class='tweetText'>" + text + "</p>";
	
	dd_tag.innerHTML = sHTML;
	$(place).prepend(dd_tag);
	
	$(dd_tag).slideDown("slow",function(){
		var lastPosY = $(place + " dd:last").offset()["top"] - $(place).offset()["top"];
		lastPosY = Math.floor(lastPosY);
		if(lastPosY > 200){
			$(place + " dd:last").remove();
		}
		var second = Math.floor(Math.random()*1000);
		second += 5000;
		
		$.timer(second, function(timer){
			timer.stop();
			i++;
			if(i==data.length){
				i = 0;
			}
			if(data.length < 2){
				if(data.length == i){
					return;
				}
			}
			makeListProgramTL(data,name,place,i);
		});
		
	});
}

/*==================================================================================
		【JSONパース】各番組のタイムラインを取得時に使用
==================================================================================*/
function makeListProgramTL_json(data,name,place,cnt){
	
	var i =cnt;
	
	var dd_tag = document.createElement('dd');
	dd_tag.id = 'list_'+i;
	dd_tag.className = 'twbox prgBox';
	dd_tag.style.display = 'none';
	
	
	var	userImg = data.entry[i].link[1]["@attributes"]["href"];
	var text = strtrim(data.entry[i].content, 30, name);
	var id = data.entry[i].id;
	var reply_url = "http://twitter.com/?status=@" + name + "%20&in_reply_to_status_id=" + id + "&in_reply_to=" +name;
	var reply = "<span class='replyclass'><a href='" + reply_url + "' target='_blank'><img src='portal_data/img/mt/reply_btn.gif'  /></a></span>"
	var create_time = data.entry[i].published;
	var sHTML = "<p class='userIMG'><a href='http://twitter.com/" + name  +"' target='_blank'><img width='48' src='" + userImg + "' /></a></p><div><p class='author_prg'><a href='http://twitter.com/"+ name + "' target='_blank'>" + name + "</a></p><p class='date'><span>" + create_time + "</span>" + reply + "</p></div><p class='tweetText'>" + text + "</p>";
	
	dd_tag.innerHTML = sHTML;
	$(place).prepend(dd_tag);
	
	$(dd_tag).slideDown("slow",function(){
		var lastPosY = $(place + " dd:last").offset()["top"] - $(place).offset()["top"];
		lastPosY = Math.floor(lastPosY);
		if(lastPosY > 260){
			$(place + " dd:last").remove();
		}
		var second = Math.floor(Math.random()*1000);
		second += 5000;
		
		$.timer(second, function(timer){
			timer.stop();
			i++;
			if(i==5){
				i = 0;
			}
			if(data.entry[i].length <3){
				if(data.entry[i].length == i){
					return;
				}
			}
			makeListProgramTL_json(data,name,place,i);
		});
		
	});
}



/*==================================================================================
		文字列の省略
==================================================================================*/

function strtrim(txt,maxsize,name){
	var maxSize = maxsize;
	if (txt.length > maxSize) {
		txt =  txt.substr(0, maxSize - 1) + "…" + "<span class='shortStr'><a target='_blank' href='http://twitter.com/" + name + "' >続きを読む</a></span>";
		return txt;
	}
	else {
		return txt;
	}
}

/*==================================================================================
		※『文字列の省略』を使用した場合は非推奨
		URLの置き換え　
==================================================================================*/

 function URLText(MyStr){

	 var newtext="";
	 var splittext = MyStr.split(" ");
	 var hash_tags;
	 var hash_html;
	 var hash_name;
	 for(var i=0; i<splittext.length; i++){
		if(splittext[i].indexOf("http",0) < 0){
			continue;
		}
		url_text = splittext[i].replace(splittext[i],"<a target='_blank' href='"+splittext[i]+"'>" + splittext[i] +"</a>");
		splittext[i] = url_text;
	 }
	
	for (var i=0; i<splittext.length; i++) {
		hash_tags = splittext[i].match(/\s*\#[a-zA-Z0-9]*[\s\r]*/g);
		if (!!hash_tags){
			hashtag_name = String(hash_tags);
			hash_name = hashtag_name.substr(1,hashtag_name.length);			
			hash_html = '<a target="_blank" href="http://twitter.com/#search?q=%23' + hash_name + '">'+ hash_tags + '</a>';
			newtext += hash_html + " ";
		}
		else {
			newtext += splittext[i] + " ";	
		}
	}
		
		return newtext;
 }
 
/*==================================================================================
		日付の表示内容変更
==================================================================================*/
 
function dateConvertUserTL(data){
	var create_time = data.split(" ");
	var post_date  = create_time[1] + " " + create_time[2] + ", " + create_time[5] + " " + create_time[3]; 
	var time_value = new Date(post_date); 
	time_value.setHours(time_value.getHours() + 9);
	var mon  = time_value.getMonth() + 1;
	var day  = time_value.getDate(); 
	var minutes = (time_value.getMinutes() < 10) ?  "0" + time_value.getMinutes() : time_value.getMinutes();
	return mon + "月" + day + "日 " + time_value.getHours() + ":" + minutes;
}


function dateConvertSearchTL(data){
	var create_time = data.split(" ");
	var post_date  = create_time[1] + " " + create_time[2] + ", " + create_time[4] + " " + create_time[3]; 
	var time_value = new Date(post_date); 
	time_value.setHours(time_value.getHours() + 9);
	var mon  = time_value.getMonth() + 1;
	var day  = time_value.getDate(); 
	var minutes = (time_value.getMinutes() < 10) ?  "0" + time_value.getMinutes() : time_value.getMinutes();
	return mon + "月" + day + "日 " + time_value.getHours() + ":" + minutes;
}
