interface Templates {
	sportsEventRow: Template;
}

Template.sportsEventRow.helpers({

	category: function() {
		return Betting.Category.db.findOne({_id: Session.get('opened-category') || '9RxN2FsAYXgRBetik'});
	},

	selections: function() {
		var market = Betting.Market.db.findOne({event: this, live: false});
		if (!market) {
			return;
		}
		return market.selections.fetch();
	},

	bettingEnabled: function() {
		var event = <Betting.Event>this;
		if (!event.live && !event.active) {
			return false;
		}
		return true;
	},

	showLiveBadge: function() {
		var event = <Betting.Event>this;
		if (event.live && (Betting.nonLiveStatuses.indexOf(event.matchStatus) === -1)) {
			return true;
		}
		return false;
	},

	marketsCount: function() {
		var event = <Betting.Event>this;
		if (event.live && event.active) {
			return event.liveMarketCount;
		}
		return event.marketCount;
	},

	listMarket: function() {
		var event = <Betting.Event>this;
		var isLive = event.live && event.active;
		if (!event) {
			return;
		}

		var listMarkets = event.listMarkets({live: isLive, limit: 1});
		if (_.isEmpty(listMarkets)) {
			return;
		}

		var market: Betting.Market = listMarkets.fetch()[0];
		if (!market) {
			return;
		}

		var templateHandle = (market.live ? 'live' : 'prelive') + '_' + (+market.details.subType || market.details.typeId);
		return <any>{
			name: market.name,
			markets: [market],
			template: Betting.getMarketTpl(templateHandle),
			handle: templateHandle
		};
	}

});

Template.sportsEventRow.events({

	'click .selection': function(e: MeteorTemplateEvent) {
		e.preventDefault();
		e.stopPropagation();
		Betting.toggleBet(this);
	},

	'click .odds, click .score, click h3, click .crumb, click .all-markets-button': function(e: MeteorTemplateEvent) {
		e.preventDefault();
		Pages.go('/sports/' + (this.live ? 'live' : 'pre-live') + '/' + this.makeSeoString() + '/event/' + this._id);
	}

});
