/*
	Class   : ScrollList
	Version : 0.1
	Author  : densdeng
	desc	: @request_delay[Number] 		 	:更新数据的间隔时间；
			  @update_delay[Number] 		 	:更新列表的间隔时间；
			  @isAutoUpdate[Boolean] 			:是否更新数据；
			  @container[String] 				:数据被格式化后放置的容器；
			  @config[Object] 					:请求数据的基本配置；
			  @min_list_num[Number]				:要显示的数据的最小个数；
			  @list_tmpl[Object]				:格式化数据的模板
			  @request[Object]					:发送请求的基本参数设置
	example: var list = new ScrollList();
*/
var ScrollList = function(options){
	var settings = {
			request_delay:60000,
			update_delay:3000,
			isAutoUpdate:true,
			container:"#coupon-list-wrap",
			config:{
				base_url:'http://t.sina.com.cn/',
				discount_base_url:"/front/coupon/detail?coupon_id="
			},
			min_list_num:5,
			request_time:-1,
			list_tmpl:$('<li class="list"><h4><a target="_blank" class="user-name"></a></h4><p><span class="tit"></span><a target="_blank" class="discount-url"></a></p><div class="time"><span></span><input class="time_hidden" value="1" style="display:none" />通过<span class="client"></span></div></li>'),
			request:{
				url:"/front/index/ajax_activity_list",
				opt:{"time":''}
			}
		};
	this.options = $.extend(true,{},settings,options);
	this.data = [];
	this.list_wrap = $("<ul class='lis-wrap'></ul>");
};
ScrollList.prototype = {
	init:function(){
		this._fetchData();
		this.list_wrap.appendTo($(this.options.container));
	},
	_fetchData:function(){
		var self = this;
		$.getJSON(this.options.request.url,this.options.request.opt,function(data){
			if(data)
			{
				if(data.length > 0 && self.options.request.opt.time !== data[data.length - 1].time){
					self.data = data;
					self._formatData();
					self.options.request.opt.time = data[data.length - 1].time;
					self.options.request_time++;
				}
			}
			if($(".list",$(self.options.container)).size() == self.options.min_list_num){
				clearTimeout(self.updateListTimer);
				clearTimeout(self.showListTimer);
				self._updateList();
			};
			isSame = null;
		});
		if(this.options.isAutoUpdate){
			this.updatTimer = setTimeout(function(){
				self._fetchData()
			},this.options.request_delay);
		}
	},
	_formatData:function(){
		var self = this;
		if($(".list",$(self.options.container)).size() == 0){
			this.showListTimer = setTimeout(function(){
					var item = self.data.shift();
					var new_list = self._buildData(item);
					new_list.prependTo(self.list_wrap);
					if ($(".list",$(self.options.container)).size() == self.options.min_list_num){
						clearTimeout(self.updateListTimer);
						clearTimeout(self.showListTimer);
						self._updateList();
					}else if(self.data.length > 0){
						setTimeout(arguments.callee, 100);
					};
					item = null;
					new_list = null;
			}, 100);
		}
	},
	_updateList:function(){
		var self = this;
		if(self.data.length > 0){
			this.updateListTimer = setTimeout(function(){
						var item = self.data.shift();
						var new_list = self._buildData(item);
						var lists = $(".list",$(self.options.container));
						var current_list = lists.eq(self.options.min_list_num -1);
						new_list.hide().prependTo(self.list_wrap).slideDown( 500,function(){
							current_list.remove();
							current_list = null;
						});
						$(".time_hidden").each
						(
							function()
							{
								var time=$(this).val();
								var lag=self.options.request.opt.time-time;
								if(lag>0 && self.options.request_time!=0)
								{
									var lag_msg='';
									if(lag<60)
									{
										lag_msg=lag+"秒前";
									}
									else if(lag>=60 && lag<3600)
									{
										lag_msg=Math.ceil(lag/60)+"分钟前";
									}
									else 
									{
										lag_msg=Math.ceil(lag/3600)+"小时前";
									}
									$(this).prev().html(lag_msg);
								}
							}
						);
						if (self.data.length >0 ){
							setTimeout(arguments.callee,self.options.update_delay);
						}else{
							clearTimeout(self.updateListTimer);
						};
						item = null;
						new_list = null;
						lists = null;
				},self.options.update_delay);
		};
	},
	_buildData:function(item){
		var self = this;
		var new_list = self.options.list_tmpl.clone();
		var user_name = $('.user-name',new_list);
		if(item.t_userid){
			var avatar_url =item.t_link;
			$('.avatar-wrap',new_list).attr("href",avatar_url);
			user_name.attr("href",avatar_url);
		}
		$('.avatar',new_list).attr("src",item.avatar);
		user_name.text(item.t_username);
		if(item.price && item.price>0)
		{
			$('.tit',new_list).html("购买优惠券：");
		}
		else
		{
			$('.tit',new_list).html("领取优惠券：");
		}
		$('.discount-url',new_list).attr("href",self.options.config.discount_base_url + item.coupon_id+"&city="+item.city_id+"&shop="+item.shop_id+"&biz="+item.biz_id).text(item.coupon_name);
		$('.time>span',new_list).text(item.time_name);
		$('.client',new_list).html(item.client);
		$('.nums',new_list).text(item.download_num);
		$(".time_hidden",new_list).val(item.time);
		$("input[name='activity_coupon_id']",new_list).val(item.coupon_id);
		return new_list;
	}
}
