(function($){

	$.fn.twitTicker = function(options) {
		
		$.fn.twitTicker.defaults = {
			userName: 'BLUERIVERinc',
			numTweets: 5,
			loaderImgUrl: "/img/share/ajax-loader.gif",
			tFmtJp:true,
			slideIn: true,
			slideDuration: 750,
			showHeading: true,
			headingText: "Latest Tweets",
			showProfileLink: true,
			showTimestamp: true,
			showAvatars: true
		};

		var o = $.extend({}, $.fn.twitTicker.defaults, options);
		var num = 0;
		return this.each(function(){
								  
				var x = $(this);
				
				//x.hide().empty().addClass("twitted");

				// add heading to container element
				//if (o.showHeading) {
				//	x.append("<h2>"+o.headingText+"</h2>");
				//}

				var twittList = "<ul id=\"twittList\"></ul>";
				x.append(twittList);

				var tlP = $("#twittList");
				tlP.hide();

				//発言内容Array
				var tlC = [];

				//プリローダー
				var preLoaderHTML = $('<div class=\"preLoader\"><img width=\'16\' height=\'16\' src=' + o.loaderImgUrl +'></div>');
				//var preLoaderHTML = $('<div class=\"preLoader\'>'+o.loaderText+'</div>');
				x.append(preLoaderHTML);
				x.show();
				
				//API URL
				var twitAPI = 'http://twitter.com/statuses/user_timeline/'+o.userName+'.json?callback=?&count='+o.numTweets;
				
				//JSON取得
				$.getJSON(twitAPI, function(data) {
  					//console.log(data[0].text);
					//data = data.results;
					//var desp = data[0].user.description;
					
					//if(data.length != 0){
					
					$.each(data,function(i,items) {

						$(preLoaderHTML).remove();
						
						//発言内容
						var txt = items.text
						.replace(/(https?:\/\/[-a-z0-9._~:\/?#@!$&amp;amp;amp;\'()*+,;=%]+)/ig,"<a target='_blank' href='$1'>$1</a>")
						.replace(/@+([_A-Za-z0-9-]+)/ig,"<a target='_blank' href='http://twitter.com/$1'>@$1</a>")
						.replace(/#+([_A-Za-z0-9-]+)/ig,"<a target='_blank' href='http://search.twitter.com/search?q=$1'>#$1</a>");
						
						//投稿日時
						if (o.tFmtJp) {//●年●月●日 ●：●
							var timess = items.created_at;
							var created_ats = timess.split(" ");
							//April 28,2002 06:30:00
							var post_date  = created_ats[1] + " "+ created_ats[2] + ","+ created_ats[5] +" "+ created_ats[3];
							var date = new Date(post_date);
							date.setHours(date.getHours() + 9);
							var yea = date.getFullYear();
							var mon = date.getMonth() + 1;
							var day = date.getDate();
							var hou = date.getHours();
							var min  = date.getMinutes();
							if (min < 10) {
								min = "0" + min;
						}
							//console.log(created_ats);
							//console.log(post_date);
							//出力用投稿日時配列作成
//							++num;
//							if(num == 1){
//								var pubC = '<li><marquee scrolldelay=\"50\" truespeed><span class=\'txt\'>'+txt+'</span><span class=\'time\'>'+yea+'.'+mon+'.'+day+'　'+hou+ ":"+min+'</span></marquee></li>';
//							}else if(num == 2){
//								var pubC = '<li><marquee scrolldelay=\"20\" truespeed><span class=\'txt\'>'+txt+'</span><span class=\'time\'>'+yea+'.'+mon+'.'+day+'　'+hou+ ":"+min+'</span></marquee></li>';
//							}else if(num == 3){
//								var pubC = '<li><marquee scrolldelay=\"120\" truespeed><span class=\'txt\'>'+txt+'</span><span class=\'time\'>'+yea+'.'+mon+'.'+day+'　'+hou+ ":"+min+'</span></marquee></li>';
//							}else if(num == 5){
//								var pubC = '<li><marquee scrolldelay=\"30\" truespeed><span class=\'txt\'>'+txt+'</span><span class=\'time\'>'+yea+'.'+mon+'.'+day+'　'+hou+ ":"+min+'</span></marquee></li>';
//							}else{
//								var pubC = '<li><marquee><span class=\'txt\'>'+txt+'</span><span class=\'time\'>'+yea+'.'+mon+'.'+day+'　'+hou+ ":"+min+'</span></marquee></li>';	
//							}
						//出力用投稿日時配列作成
							var pubC = '<li><span class=\'txt\'>'+txt+'</span><span class=\'time\'>'+yea+'.'+mon+'.'+day+'　'+hou+ ":"+min+'</span></li>';
							tlC.push(pubC);

						}else{
							var timeInfo = (function(){//約●●前
								var timess = items.created_at;
								var created_ats = timess.split(" ");
								posTime = created_ats[1] + " "+ created_ats[2] + ","+ created_ats[5] +" "+ created_ats[3];
								var parsed_date = Date.parse(posTime);
								var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
								var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
//								delta = delta + (relative_to.getTimezoneOffset()*60);
//								if(delta < 60) {
//									return '1分以内';
//								} else if(delta < 120) {
//									return '約1分前';
//								} else if(delta < (45*60)) {
//									return (parseInt(delta / 60)).toString() + '分前';
//								} else if(delta < (90*60)) {
//									return '約1時間前';
//								} else if(delta < (24*60*60)) {
//									return '約' + (parseInt(delta / 3600)).toString() + '時間前';
//								} else if(delta < (48*60*60)) {
//									return '昨日';
//								} else {
//									return (parseInt(delta / 86400)).toString() + '日前';
//								}
						})();

							//出力用投稿日時配列作成
							
//							var pubC = '<li><marquee><span class=\'txt\'>'+txt+'</span><span class=\'time\'>'+timeInfo+'</span></li></marquee>';
//							tlC.push(pubC);
						}

					});


					//リピートタイマー
					var repTimer =  function (interval, callback){
						var interval = interval || 100;
						if (!callback){
							return false;
						}
						_timer = function (interval, callback) {
							this.stop = function () {
								clearInterval(self.id);
							};
							this.internalCallback = function () {
								callback(self);
							};
							this.reset = function (val) {
								if (self.id)
									clearInterval(self.id);
								
								var val = val || 100;
								this.id = setInterval(this.internalCallback, val);
							};
							this.interval = interval;
							this.id = setInterval(this.internalCallback, this.interval);
							var self = this;
						};
						return new _timer(interval, callback);
					}
//TL出力
					tlP.show(function(){

						$.each(tlC,function(n){
							$(tlC[n]).appendTo(tlP).addClass("item_" + (n + 1));
						});
						
						var itemNum = 1;
						var limit = $("#twittList li").length;
						var width = $("#twitter").width();
						$("#twitter #twittList li:not(:first)").css({"left": width + "px"});
						//var res = 7000;
						//var animeSp = 1400;
						
						var res = 14000;
						var animeSp = 900;

						repTimer(res, function (repTimer) {
							var repRotation = (function(){
								if (itemNum == limit) {
										$("#twittList li.item_" + itemNum).animate({"left": "-=" + width + "px"},animeSp,
											function(){
												$(this).css({"left": width + "px"});
											}
										);
										$("#twittList li.item_1").animate({"left": "-=" + width + "px"},animeSp);
										itemNum = 1;
										repTimer.reset(res);
								}
								else {
									$("#twittList li.item_" + itemNum).animate({"left": "-=" + width + "px"},animeSp,
										function(){
											$(this).css({"left": width + "px"});	
										}												 
									);
									$("#twittList li.item_" + (itemNum + 1)).animate({"left": "-=" + width + "px"},animeSp);
									itemNum++;
									repTimer.reset(res);
								}
							})();
						});

					});
					
				});
		});
		
	}
	

	
})(jQuery);






