/*==========================================================================================
	FUKIDASU-TWITTER
	URL: http://www.monster-dive.com/
	Date: 2011-09-11(+09:00)
	Maintained: Mio.Satoh
==========================================================================================*/


$(function(){


var _UA = navigator.userAgent;
if (_UA.indexOf('iPhone') > -1 || _UA.indexOf('iPod') > -1) {
}else if(_UA.indexOf('Android') > -1){
}else{


var targetId = "#twitter";
var targetKey = "monsterdive";   
var twNum = 30;

var twArr = new Array(twNum);
var itemHeight = new Array(twNum)

// コールバック関数
var cb = function(data, status) {
  if(status == "success"){
  	twObj = '<div class="twInner" class="clearFix">';
  	var i = 0;
  	var height;
  	var twDate = new Array(twNum);
  	var sameFlg = new Array(twNum);
    $.each(data.results, function(i, val){
      sameFlg[i] = false;
      for (n=0; n<twNum; n++){
				if (twArr[n] == val.created_at) {
					sameFlg[i] = true;
				}
			}
			if (!sameFlg[i]) {
				var created_at = val.created_at.split(" ");
				// 投稿日時変換 "Mon Dec 01 14:24:26 +0000 2008" -> "Dec 01, 2008 14:24:26"
				var post_date  = created_at[2] + " "
				               + created_at[1] + ", "
				               + created_at[3] + " "
				               + created_at[4];
				// 日時データ処理
				var date = new Date(post_date);     // 日付文字列 -> オブジェクト変換
				date.setHours(date.getHours() + 9); // UTC -> JST (+9時間)
				var year  = date.getFullYear();     // 年取得
				var mon  = date.getMonth() + 1;     // 月取得
				var day  = date.getDate();          // 日取得
				var hrs  = date.getHours();          // 時取得
				var min  = date.getMinutes();          // 分取得
				var leftPosition = Math.floor( Math.random() * ($(targetId).innerWidth() - 200) ) + 'px';
	  		twObj = twObj + '<div class="twItem item' + i + '" style="margin-left: ' + leftPosition + ';">'  ;
	  		twObj = twObj + '<div class="twTop clearFix">';
	  		twObj = twObj + '<div class="twTopLeft"><img src="' + val.profile_image_url + '" width="34" height="34" /></div>';
	  		twObj = twObj + '<div class="twTopRight">';
	  		twObj = twObj + '<p class="twTxt"><a href="http://twitter.com/#!/' + val.from_user + '/">';
	  		twObj = twObj + val.text;
	  		twObj = twObj + '</a></p>';
	  		twObj = twObj + '<p class="twTime">' + year + '年' + mon + '月' + day + '日 ' + hrs + '時' + min + '分</p>';
	  		twObj = twObj + '</div>';
	  		twObj = twObj + '</div>';
	  		twObj = twObj + '<div class="twBtm">';
	  		twObj = twObj + '<span class="twName"><a href="http://twitter.com/#!/' +  val.from_user + '/">' + val.from_user + '</a></span>';
	  		twObj = twObj + '</div>';
	  		twObj = twObj + '</div>';
				//num = num + 1;
			}
	  	twDate[i] = val.created_at;
			i++;
    });

    for (i=0; i<twNum; i++){
    	twArr[i] = twDate[i];
    }
    
  	twObj = twObj + '</div>';
  	var innerHtml = $(targetId).html();
  	$(targetId).html(innerHtml + twObj);
				
  	fixing();
  	animate(twNum);
  }
};

}

function animate(num) {
                          
	for (j = 0; j < num; j++) {                    
	  var targetClass = targetId + " .item" + j;
	  itemHeight[j] = $(targetClass).height();
		$(targetClass).fadeTo(0, 0);
		$(targetClass).height(0);
		var delay = 2000 + j * 5000;
		$(targetClass).delay(delay).animate(
			{ height: itemHeight[j] }, 0
		).animate(
			{ bottom: "10px", opacity: 1 },
			500, "easeOutBack"
		).delay(5000).animate(
			{ bottom: "150px", opacity: 0 },
			{ duration:	1000, easing: "easeOutSine" }
		).animate(
			{ height: 0 },
			'fast'
		);        
	}
}



// TwitterAPIを叩く関数
function init () {
	var doSearch = function() {
	  $.getJSON(
	    'http://search.twitter.com/search.json?callback=?',
	    {
	      q: targetKey,
	      rpp: twNum
	    },
	    cb
	  );
	};
	doSearch();
}


$.timer(1000, function (timer) {
  init();
  timer.reset(6000 * twNum);
});








function fixing(){

	var footerId = targetId;
	//メイン
	function footerFixed(){
		//ドキュメントの高さ
		var dh = document.getElementsByTagName("body")[0].clientHeight;
		//フッターのtopからの位置
		$(footerId).css("top", "0");
		var ft = $(footerId).offset().top;
		//フッターの高さ
		var fh = $(footerId).innerHeight();
		//ウィンドウの高さ
		if (window.innerHeight){
			var wh = window.innerHeight;
		}else if(document.documentElement && document.documentElement.clientHeight != 0){
			var wh = document.documentElement.clientHeight;
		}
		var sc = $(window).scrollTop();
		if(ft+fh<wh){
			$(footerId).css("position", "absolute");
			$(footerId).css("top", wh-fh-ft+sc + "px");
		}
	}

	//文字サイズ
	function checkFontSize(func){
		//判定要素の追加
		var e = document.createElement("div");
		var s = document.createTextNode("S");
		e.appendChild(s);
		e.style.visibility="hidden";
		e.style.position="absolute";
		e.style.top="0";
		document.body.appendChild(e);
		var defHeight = e.offsetHeight;

		//判定関数
		function checkBoxSize(){
			if(defHeight != e.offsetHeight){
				func();
				defHeight= e.offsetHeight;
			}
		}
		setInterval(checkBoxSize,1000);
	}

	//イベントリスナー
	function addEvent(elm,listener,fn){
		try{
			elm.addEventListener(listener,fn,false);
		}catch(e){
			elm.attachEvent("on"+listener,fn);
		}
	}

 	footerFixed();
	checkFontSize(footerFixed);
	addEvent(window,"resize",footerFixed);
	addEvent(window,"scroll",footerFixed);
}



});
