#import sickgear
#import datetime
#import re
#from sickgear.common import *
#from sickgear.helpers import anon_url
#from sickgear.indexers.indexer_config import TVINFO_TVDB, TVINFO_IMDB
#from sickgear.sgdatetime import SGDatetime
#from _23 import decode_str
<% def sg_var(varname, default=False): return getattr(sickgear, varname, default) %>#slurp#
<% def sg_str(varname, default=''): return getattr(sickgear, varname, default) %>#slurp#
<% def view_paused(result): return ((int(result['paused']) and sg_var('EPISODE_VIEW_DISPLAY_PAUSED'))
                                    or (not int(result['paused']) and 2 != sg_var('EPISODE_VIEW_DISPLAY_PAUSED'))) %>
#slurp#
##
#set global $title = 'Daily Schedule'
#set global $header = 'Daily Schedule'
#set global $sbPath = '..'
#set global $topmenu = 'home'
#set $css = $getVar('css', '')
#set $has_art = $getVar('has_art', None)
#set $restart = 'Restart SickGear for new features on this page'
#set $show_message = (None, $restart)[not $varExists('fanart')]
#set global $page_body_attr  = 'episode-view" class="' + $css
#set theme_suffix = ('', '-dark')['dark' == $sg_str('THEME_NAME', 'dark')]
##
#import os.path
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_top.tmpl')

<script>
<!--
	var config = {hasArt: #echo ('!0', '!1')[not $has_art]#}
//-->
</script>

#set $sort = $sg_var('EPISODE_VIEW_SORT')
#set $table_sort_header_codes = {'time': 0, 'show': 1, 'network': 4}
#if $sort not in $table_sort_header_codes
    #set $sort = 'time'
#end if

#if $layout in ['daybyday', 'list']
<script type="text/javascript" src="$sbRoot/js/plotTooltip.js?v=$sbPID"></script>
#end if

#if 'daybyday' != $layout
<script type="text/javascript" src="$sbRoot/js/ajaxEpSearch.js?v=$sbPID"></script>
<input type="hidden" id="sbRoot" value="$sbRoot" />
#else
<script>
<!--
#raw
	$(document).ready(function(){
		$('#Carousel div[title], #Carousel span[title]').tooltip({placement: 'top', html: !0});

		$.sgDayContainer = [];
		$.each($('[id^=day]'), function(){$.sgDayContainer.push($('#' + $(this).attr('id')))});

		jQuery.each($.sgDayContainer, function(j) {
			this.isotope({
				itemSelector: '.daybyday-show',
				sortBy: '$sort',
				layoutMode: 'vertical',
				transitionDuration: 0,
				getSortData: {
					network: function(itemElem) {
						return $(itemElem).attr('data-network') || '';
					},
					showname: function(itemElem) {
						return $(itemElem).attr('data-name') || '';
					},
					season: function(itemElem) {
						var season = $(itemElem).attr('data-season') || '0';
						return season.length && parseInt(season, 10);
					},
					episode: function(itemElem) {
						var episode = $(itemElem).attr('data-episode') || '0';
						return episode.length && parseInt(episode, 10);
					},
					time: function(itemElem) {
						var time = $(itemElem).attr('data-time') || '0';
						return time.length && parseInt(time, 10);
					}
				}
			});
		});

		imagesLoaded('.daybyday-show', function() {
			jQuery.each($.sgDayContainer, function(j) {
				this.isotope('layout');
			});
		});

		$.sgUiSortBy = (function(sortBy) {
			var sortCriteria;
			switch (sortBy) {
				case 'network':
					sortCriteria = ['network', 'time', 'showname', 'season', 'episode'];
					break;
				case 'show':
					sortCriteria = ['showname', 'time', 'season', 'episode'];
					break;
				case 'time':
				default:
					sortCriteria = ['time', 'showname', 'season', 'episode'];
					break;
			}
			jQuery.each($.sgDayContainer, function(j) {
				this.isotope({
					sortBy: sortCriteria,
					sortAscending: 'asc' == $('#sort-dir').attr('data-sort-dir')
				});
			});
		});

		$('#sort').on('change', function() {
			$.sgUiSortBy(this.value);
			$.get(this.options[this.selectedIndex].getAttribute('data-sort'));
		});

		$('#sort-dir').on('click', function() {
			var sortdir = $(this).attr('data-sort-dir'),
				newdir = ('asc' == sortdir ? 'desc' : 'asc');
			$(this).attr('data-sort-dir', newdir);
			$(this).attr('title', 'Click to sort ' + sortdir + 'ending');
			$(this).removeClass(sortdir).addClass(newdir);
			$.sgUiSortBy($('#sort').val());
		});

		$('.carousel').on('slide.bs.carousel', function () {
			imagesLoaded('.daybyday-show', function() {
				jQuery.each($.sgDayContainer, function(j) {
					$(this).isotope('layout');
				});
			});
		});

		$('#card-layout').on('click', function(e) {
			var states$ = $('#episode-view.daybyday'), isPortrait = states$.hasClass('portrait'),
				state = isPortrait ? ['landscape', 'portrait'] : ['portrait', 'landscape'],
				img = isPortrait ? ['poster', 'banner'] : ['banner', 'poster'],
				old = img[0] + '_thumb', repl = img[1] + '_thumb',
				cachedImg = $.SickGear.Root + '/images/' + repl + '.jpg',
				tid, interval = 250, timeout = (5 * 1000)/interval;

			states$.addClass(state[0]).removeClass(state[1]);

			tid = setInterval(function() {
				if (0 < $('.poster').find('img[src*="' + old + '"]').length) {
					timeout--;
				} else {
					timeout = 0;
				}
				if (0 == timeout) {
					clearInterval(tid);
					$.each($('.poster').find('img[src*="' + cachedImg + '"]'), function() {
						$(this).attr('src', $(this).attr('data-src-new')).removeAttr('data-src-new');
					});
					$.sgUiSortBy($('#sort').val());
					$.get($.SickGear.Root + '/set_cards_daily_schedule');
				}
			}, interval);

			$.each($('.poster').find('img[src*="' + old + '"]'), function() {
				$(this).attr('data-src-new', $(this).attr('src').replace(old, repl));
				$(this).attr('src', cachedImg);
			});

			return !1;
		});

	});
#end raw
//-->
</script>
#end if

<style type="text/css">
#SubMenu{display:none}
#if 'daybyday' == $layout
.ep-caret{cursor:pointer; vertical-align:middle; margin-right:2px}
.asc{border-top:0; border-bottom:8px solid}
.desc{border-top:8px solid; border-bottom:0}
#end if
.bfr{position:absolute;left:-999px;top:-999px}.bfr img,img.spinner,.spinner2,img.queued,img.search{display:inline-block;width:16px;height:16px}img.spinner{background:url(${sbRoot}/images/loading16${theme_suffix}.gif) no-repeat 0 0}.spinner2{background:url(${sbRoot}/images/loading16-red.gif) no-repeat 0 0;margin-top:3px !important}img.queued{background:url(${sbRoot}/images/queued.png) no-repeat 0 0}img.search{background:url(${sbRoot}/images/search16.png) no-repeat 0 0}
</style>
<div class="bfr"><img src="$sbRoot/images/loading16${theme_suffix}.gif"><img src="$sbRoot/images/loading16-red.gif"><img src="$sbRoot/images/queued.png"><img src="$sbRoot/images/search16.png"><img src="$sbRoot/images/no16.png"><img src="$sbRoot/images/yes16.png"></div>
#if $show_message

	<div class="alert alert-info" style="margin:-40px 0 50px">$show_message</div>
#end if

#if $varExists('header')
	<h1 class="header" style="margin-bottom:0">$header</h1>
#else
	<h1 class="title" style="margin-bottom:0">$title</h1>
#end if

#set $selected = ' selected="selected"'
	<div id="HomeLayout" class="pull-right">
		<div id="top-row">
			<span>Layout
				<select name="layout" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;">
					<option value="$sbRoot/set-layout-daily-schedule/?layout=banner" #if 'banner' == $sg_str('EPISODE_VIEW_LAYOUT')#$selected#end if#>Banner</option>
					<option value="$sbRoot/set-layout-daily-schedule/?layout=daybyday" #if 'daybyday' == $sg_str('EPISODE_VIEW_LAYOUT', 'daybyday')#$selected#end if#>Day by Day</option>
					<option value="$sbRoot/set-layout-daily-schedule/?layout=list" #if 'list' == $sg_str('EPISODE_VIEW_LAYOUT')#$selected#end if#>List</option>
					<option value="$sbRoot/set-layout-daily-schedule/?layout=poster" #if 'poster' == $sg_str('EPISODE_VIEW_LAYOUT')#$selected#end if#>Poster</option>
				</select>
			</span>
			&nbsp;
			<span>Sort
#if 'daybyday' == $layout
				<span id="sort-dir" data-sort-dir="asc" class="caret ep-caret asc" title="Click to sort descending">&nbsp;</span>
#end if
			By
#if 'daybyday' == $layout
				<select name="sort" id="sort" class="form-control form-control-inline input-sm">
					<option value="network" data-sort="$sbRoot/set-sort-daily-schedule/?sort=network&redir=0" #if 'network' == $sort#$selected#end if#>Network</option>
					<option value="show" data-sort="$sbRoot/set-sort-daily-schedule/?sort=show&redir=0" #if 'show' == $sort#$selected#end if#>Show</option>
					<option value="time" data-sort="$sbRoot/set-sort-daily-schedule/?sort=time&redir=0" #if 'time' == $sort#$selected#end if#>Time</option>
#else
				<select name="sort" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;">
					<option value="$sbRoot/set-sort-daily-schedule/?sort=time" #if 'time' == $sort#$selected#end if#>Date/Time</option>
					<option value="$sbRoot/set-sort-daily-schedule/?sort=network" #if 'network' == $sort#$selected#end if#>Network</option>
					<option value="$sbRoot/set-sort-daily-schedule/?sort=show" #if 'show' == $sort#$selected#end if#>Show</option>
#end if
				</select>
			</span>
			&nbsp;
			<span class="no-marginr">View Paused
				<select name="viewpaused" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;" style="margin-bottom:10px">
					<option value="$sbRoot/set-display-paused-daily-schedule?state=0"#if 0 == $sg_var('EPISODE_VIEW_DISPLAY_PAUSED')#$selected#end if#>Hidden</option>
					<option value="$sbRoot/set-display-paused-daily-schedule?state=1"#if 1 == $sg_var('EPISODE_VIEW_DISPLAY_PAUSED')#$selected#end if#>Shown</option>
					<option value="$sbRoot/set-display-paused-daily-schedule?state=2"#if 2 == $sg_var('EPISODE_VIEW_DISPLAY_PAUSED')#$selected#end if#>Only</option>
				</select>
			</span>
		</div>

		<div class="key pull-right">
#if 'daybyday' != $layout
			<b>Key:</b>
			<span class="listing-key listing-overdue">Missed</span>
			<span class="listing-key listing-current">Current</span>
			<span class="listing-key listing-default">Future</span>
			<span class="listing-key listing-toofar">Distant</span>
#end if
#if 'daybyday' == $layout
			<a id="card-layout" class="btn btn-inline" name="">
				<span id="landscape">
					<i class="sgicon-img-landscape"></i> Collapse Cards
				</span>
				<span id="portrait">
					<i class="sgicon-img-portrait"></i> Expand Cards
				</span>
			</a>
#end if
			<a class="btn btn-inline forceBacklog" href="webcal://$sbHost:$sbHttpPort/$sbRoot/calendar">
			<i class="sgicon-cal" style="font-size:14px"></i> Webcal</a>
		</div>
	</div>


#if 'list' == $layout
<!-- start list view //-->

<script>
<!--
#raw
	$.tablesorter.addParser({
		id: 'loadingNames',
		is: function(s) {
			return false
		},
		format: function(s) {
			if(0 == s.indexOf('Loading...'))
				return s.replace('Loading...', '000')
			return (s || '')
		},
		type: 'text'
	});
	$.tablesorter.addParser({
		id: 'quality',
		is: function(s) {
			return false
		},
		format: function(s) {
			return s.replace('hd1080p', 5).replace('hd720p', 4).replace('hd', 3).replace('sd', 2).replace('any', 1).replace('best', 0).replace('custom', 7)
		},
		type: 'numeric'
	});
	$.tablesorter.addParser({
		id: 'cDate',
		is: function(s) {
			return false
		},
		format: function(s) {
			return s
		},
		type: 'numeric'
	});

	$(document).ready(function(){
#end raw
		var sortList = [[$table_sort_header_codes[$sort], 0]];
#raw
		$('#showListTable:has(tbody tr)').tablesorter({
			widgets: ['stickyHeaders'],
			sortList: sortList,
			textExtraction: {
				0: function(node) {return $(node).find('span').text().toLowerCase() || ''},
				1: function(node) {return $(node).find('a').attr('data-name') || ''},
				4: function(node) {return $(node).find('span').attr('data-network') || ''},
				5: function(node) {return $(node).find('span').text().toLowerCase() || ''}
			},
			headers: {
				0: {sorter: 'cDate'},
				1: {sorter: 'loadingNames'},
				2: {sorter: false},
				3: {sorter: false},
				4: {sorter: 'loadingNames'},
				5: {sorter: 'quality'},
				6: {sorter: false},
				7: {sorter: false},
				8: {sorter: false}
			}
		});

		$('#sbRoot').ajaxEpSearch();
#end raw

    #set $fuzzydate = 'airdate'
    #if $sg_var('FUZZY_DATING')
		fuzzyMoment({
			containerClass: '.${fuzzydate}',
			dateHasTime: !0,
			dateFormat: '$sg_str('DATE_PRESET', '%x')',
			timeFormat: '$sg_str('TIME_PRESET', '%I:%M %p')',
			trimZero: #echo ('!1', '!0')[$sg_var('TRIM_ZERO')]#
		});
    #end if

	});
//-->
</script>

    #set $show_div = 'listing-default'

<table id="showListTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">

	<thead>
		<tr>
			<th>Airdate</th>
			<th>Show</th>
			<th class="nowrap">Next Ep</th>
			<th>Next Ep Name</th>
			<th>Network</th>
			<th>Quality</th>
			<th>TV Info</th>
			<th>Search</th>
		</tr>
	</thead>

	<tbody style="text-shadow:none">

    #for $cur_result in $sql_results
        #set $tvid = int($cur_result['indexer'])
        #set $runtime = $cur_result['runtime']
        #set $display_name = (re.sub(r'^((?:A(?!\s+to)n?)|The)\s(\w)', r'<span class="article">\1</span> \2', $cur_result['show_name']), $cur_result['show_name'])[$sg_var('SORT_ARTICLE')]

        #if not view_paused($cur_result)
            #continue
        #end if

        #set $cur_ep_airdate = $cur_result['localtime'].date()

        #if $runtime
            #set $cur_ep_enddate = $cur_result['localtime'] + datetime.timedelta(minutes = $runtime)
            #if $cur_ep_enddate < $today
                #set $show_div = 'listing-overdue'
            #elif $cur_ep_airdate >= $next_week.date()
                #set $show_div = 'listing-toofar'
            #elif $cur_ep_airdate >= $today.date() and $cur_ep_airdate < $next_week.date()
                #if $cur_ep_airdate == $today.date()
                    #set $show_div = 'listing-current'
                #else
                    #set $show_div = 'listing-default'
                #end if
            #end if
        #end if

        #set $show_id = '%s_%sx%s' % ($cur_result['tvid_prodid'], $cur_result['season'], $cur_result['episode'])
		#set $id_sxe = '%s_%s_%sx%s' % ($cur_result['indexer'], $cur_result['showid'], $cur_result['season'], $cur_result['episode'])
		<!-- start $cur_result['show_name'] //-->
		<tr id="show-${show_id}" class="$show_div" data-rawname="$cur_result['show_name']" data-show-id="$id_sxe">
			## forced to use a div to wrap airdate, the column sort went crazy with a span
			<td align="center" class="nowrap">
				<div class="${fuzzydate}">$decode_str($SGDatetime.sbfdatetime($cur_result['localtime']), $sickgear.SYS_ENCODING)</div><span class="sort-data">$cur_result['localtime'].strftime('%Y%m%d%H%M')</span>
			</td>

			<td class="tvShow"><a href="$sbRoot/home/view-show?tvid_prodid=$cur_result['tvid_prodid']" data-name="$cur_result['data_show_name']">$display_name</a>
        #if int($cur_result['paused'])
				<span class="pause">[paused]</span>
        #end if
			</td>

			<td class="nowrap" align="center">
				<%= 'S%02iE%02i' % (int(cur_result['season']), int(cur_result['episode'])) %>
			</td>

			<td>
        #if $cur_result['description']
				<img alt="" src="$sbRoot/images/info32.png" height="16" width="16" class="plotInfo" id="plot-${show_id}" />
        #else
				<img alt="" src="$sbRoot/images/info32.png" width="16" height="16" class="plotInfoNone opacity40" />
        #end if
				$cur_result['name']
			</td>

			<td align="center">
				<span data-network="$cur_result['data_network']">$cur_result['network']</span>
			</td>

			<td align="center">
        #if int($cur_result['quality']) in $qualityPresets
				<span class="quality $qualityPresetStrings[int($cur_result['quality'])]">$qualityPresetStrings[int($cur_result['quality'])]</span>
        #else
				<span class="quality Custom">Custom</span>
        #end if
			</td>

			<td align="center" style="vertical-align:middle">
        #if $sg_var('USE_IMDB_INFO') and $cur_result['imdb_url']
				<a href="<%= anon_url(cur_result['imdb_url']) %>" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false" title="${cur_result['imdb_url']}"><img alt="[$sickgear.TVInfoAPI(TVINFO_IMDB).config.get('name')]" height="16" width="16" src="$sbRoot/images/$sickgear.TVInfoAPI(TVINFO_IMDB).config.get('icon')" /></a>
        #end if
				<a href="<%= anon_url(sickgear.TVInfoAPI(tvid).config['show_url'] % cur_result['showid']) %>" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false" title="${sickgear.TVInfoAPI($tvid).config['show_url'] % cur_result['showid']}"><img alt="$sickgear.TVInfoAPI($tvid).name" height="16" width="16" src="$sbRoot/images/$sickgear.TVInfoAPI($tvid).config['icon']" /></a>
			</td>

			<td align="center">
				<a class="ep-search" href="$sbRoot/home/search-episode?tvid_prodid=$cur_result['tvid_prodid']&amp;season=$cur_result['season']&amp;episode=$cur_result['episode']" title="Manual Search"><img title="[search]" alt="[search]" height="16" width="16" src="$sbRoot/images/search16.png" /></a>
			</td>
		</tr>
		<!-- end $cur_result['show_name'] //-->

    #end for

	</tbody>

	<tfoot>
		<tr>
			<th rowspan="1" colspan="10" align="center">&nbsp</th>
		</tr>
	</tfoot>

</table>
<!-- end list view //-->



#else if $layout in ['banner', 'poster']
<!-- start non list view //-->

<script>
<!--
#raw
	$(document).ready(function(){
		$('#sbRoot').ajaxEpSearch();
		$('.ep_summary').hide();
		$('.ep_summaryTrigger').click(function() {
			$(this).next('.ep_summary').slideToggle('normal', function() {
				$(this).prev('.ep_summaryTrigger').attr('src', function(i, src) {
					return $(this).next('.ep_summary').is(':visible') ? src.replace('plus','minus') : src.replace('minus','plus')
				});
			});
		});
#end raw

    #set $fuzzydate = 'airdate'
    #if $sg_var('FUZZY_DATING')
		fuzzyMoment({
			dtInline: !0,
			dtGlue: ' at ',
			containerClass: '.${fuzzydate}',
			dateHasTime: !0,
			dateFormat: '$sg_str('DATE_PRESET', '%x')',
			timeFormat: '$sg_str('TIME_PRESET', '%I:%M %p')',
			trimZero: #echo ('!1', '!0')[$sg_var('TRIM_ZERO')]#
		});
    #end if
	});
//-->
</script>

    #set $cur_segment = None
    #set $too_late_header = False
    #set $missed_header = False
    #set $today_header = False
    #set $show_div = 'ep_listing listing-default'

<div style="clear:both">
    #for $x, $cur_result in $enumerate($sql_results)
        #set $add_space = ('', ' add-space')[bool($x)]
        #set $tvid = int($cur_result['indexer'])
        #set $display_name = (re.sub(r'^((?:A(?!\s+to)n?)|The)\s(\w)', r'<span class="article">\1</span> \2', $cur_result['show_name']), $cur_result['show_name'])[$sg_var('SORT_ARTICLE')]
        ##
        #if not view_paused($cur_result)
            #continue
        #end if
        ##
        #set $runtime = $cur_result['runtime']
        ##
        #if 'network' == $sort
            ##
            #set $show_network = $cur_result['network'] if $cur_result['network'] else 'no network'
            #if $cur_segment != $show_network
                #set $cur_segment = $cur_result['network']
	<h2 class="network$add_space">$show_network</h2>
            #end if
            #set $cur_ep_airdate = $cur_result['localtime'].date()
            ##
            #if $runtime
                #set $cur_ep_enddate = $cur_result['localtime'] + datetime.timedelta(minutes = $runtime)
                #if $cur_ep_enddate < $today
                    #set $show_div = 'ep_listing listing-overdue'
                #elif $cur_ep_airdate >= $next_week.date()
                    #set $show_div = 'ep_listing listing-toofar'
                #elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date()
                    #if $cur_ep_airdate == $today.date()
                        #set $show_div = 'ep_listing listing-current'
                    #else
                        #set $show_div = 'ep_listing listing-default'
                    #end if
                #end if
            #end if
        #elif 'time' == $sort
            ##
            #set $cur_ep_airdate = $cur_result['localtime'].date()
            ##
            #if $cur_segment != $cur_ep_airdate
                #if $runtime
                    #set $cur_ep_enddate = $cur_result['localtime'] + datetime.timedelta(minutes = $runtime)
                    #if $cur_ep_enddate < $today and $cur_ep_airdate != $today.date() and not $missed_header
	<h2 class="day">Missed</h2>
                        #set $missed_header = True
                    #elif $cur_ep_airdate >= $next_week.date() and not $too_late_header
	<h2 class="day">Later</h2>
                        #set $too_late_header = True
                    #elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date()
                        #if $cur_ep_airdate == $today.date()
	<h2 class="day">$decode_str($SGDatetime.sbfdate($cur_ep_airdate, '%A'), $sickgear.SYS_ENCODING).capitalize() <span style="font-size:14px; vertical-align:top">[Today]</span></h2>
                            #set $today_header = True
                        #else
	<h2 class="day">$decode_str($SGDatetime.sbfdate($cur_ep_airdate, '%A'), $sickgear.SYS_ENCODING).capitalize()</h2>
                        #end if
                    #end if
                #end if
                #set $cur_segment = $cur_ep_airdate
            #end if
            ##
            #if $cur_ep_airdate == $today.date() and not $today_header
	<h2 class="day">$decode_str($SGDatetime.sbfdate($cur_ep_airdate, '%A'), $sickgear.SYS_ENCODING).capitalize() <span style="font-size:14px; vertical-align:top">[Today]</span></h2>
                #set $today_header = True
            #end if
            ##
            #if $runtime
                #set $cur_ep_enddate = $cur_result['localtime'] + datetime.timedelta(minutes = $runtime)
                #if $cur_ep_enddate < $today
                    #set $show_div = 'ep_listing listing-overdue'
                #elif $cur_ep_airdate >= $next_week.date()
                    #set $show_div = 'ep_listing listing-toofar'
                #elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date()
                    #if $cur_ep_airdate == $today.date()
                        #set $show_div = 'ep_listing listing-current'
                    #else
                        #set $show_div = 'ep_listing listing-default'
                    #end if
                #end if
            #end if

        #elif 'show' == $sort
            #set $cur_ep_airdate = $cur_result['localtime'].date()
#slurp
            #if $runtime
                #set $cur_ep_enddate = $cur_result['localtime'] + datetime.timedelta(minutes = $runtime)
                #if $cur_ep_enddate < $today
                    #set $show_div = 'ep_listing listing-overdue listingradius'
                #elif $cur_ep_airdate >= $next_week.date()
                    #set $show_div = 'ep_listing listing-toofar listingradius'
                #elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date()
                    #if $cur_ep_airdate == $today.date()
                        #set $show_div = 'ep_listing listing-current listingradius'
                    #else
                        #set $show_div = 'ep_listing listing-default listingradius'
                    #end if
                #end if
            #end if
        #end if
#slurp
	<!-- start $cur_result['show_name'] //-->
    #set $id_sxe = '%s_%s_%sx%s' % ($cur_result['indexer'], $cur_result['showid'], $cur_result['season'], $cur_result['episode'])
	<div class="$show_div" id="listing-$cur_result['tvid_prodid']" data-show-id="$id_sxe">
		<div class="tvshowDiv">
			<table width="100%" border="0" cellpadding="0" cellspacing="0">
				<tr>
					<th #if 'banner' == $layout then 'class="nobg"' else 'rowspan="2"'# valign="top">
						<a href="$sbRoot/home/view-show?tvid_prodid=$cur_result['tvid_prodid']"><img alt="" class="#if 'banner' == $layout then 'bannerThumb' else 'posterThumb'#" src="$sbRoot/show-poster/?tvid_prodid=$cur_result['tvid_prodid']&amp;which=#if 'poster' == $layout then 'poster_thumb' else $layout#" /></a>
					</th>

        #if 'banner' == $layout
				</tr>
				<tr>
        #end if
					<td class="next_episode">
						<div class="clearfix">
							<span class="tvshowTitle">
								<a href="$sbRoot/home/view-show?tvid_prodid=$cur_result['tvid_prodid']" data-name="$cur_result['data_show_name']">$display_name
        #if int($cur_result['paused'])
								<span class="pause">[paused]</span>
        #end if
							</a></span>

							<span class="tvshowTitleIcons">
        #if $sg_var('USE_IMDB_INFO') and $cur_result['imdb_url']
                				<a href="<%= anon_url(cur_result['imdb_url']) %>" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false" title="${cur_result['imdb_url']}"><img alt="[$sickgear.TVInfoAPI(TVINFO_IMDB).name]" height="16" width="16" src="$sbRoot/images/$sickgear.TVInfoAPI(TVINFO_IMDB).config.get('icon')" /></a>
        #end if
								<a href="<%= anon_url(sickgear.TVInfoAPI(tvid).config['show_url'] % cur_result['showid']) %>" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false" title="${sickgear.TVInfoAPI($tvid).config['show_url'] % cur_result['showid']}"><img alt="$sickgear.TVInfoAPI($tvid).name" height="16" width="16" src="$sbRoot/images/$sickgear.TVInfoAPI($tvid).config['icon']" /></a>
								<span><a class="ep-search" href="$sbRoot/home/search-episode?tvid_prodid=$cur_result['tvid_prodid']&amp;season=$cur_result['season']&amp;episode=$cur_result['episode']" title="Manual Search"><img title="[search]" alt="[search]" height="16" width="16" src="$sbRoot/images/search16.png" /></a></span>
							</span>
						</div>

						<span class="title">Next Episode:</span> <span><%= 'S%02iE%02i' % (int(cur_result['season']), int(cur_result['episode'])) %> - $cur_result['name']</span>

						<div class="clearfix">
							<span class="title">Airdate: </span><span class="${fuzzydate}">$decode_str($SGDatetime.sbfdatetime($cur_result['localtime']), $sickgear.SYS_ENCODING)</span><%= ('', '<span> on %s</span>' % str(cur_result['network']))[None is not cur_result['network']] %>
						</div>

						<div class="clearfix">
							<span class="title">Quality:</span>
        #if int($cur_result['quality']) in $qualityPresets
							<span class="quality $qualityPresetStrings[int($cur_result['quality'])]">$qualityPresetStrings[int($cur_result['quality'])]</span>
        #else
							<span class="quality Custom">Custom</span>
        #end if
						</div>
					</td>
				</tr>
				<tr>
					<td style="vertical-align:top">
						<div>
        #if $cur_result['description']
							<span class="title" style="vertical-align:middle">Plot:</span>
							<img class="ep_summaryTrigger" src="$sbRoot/images/plus.png" height="16" width="16" alt="" title="Toggle Summary" /><div class="ep_summary">$cur_result['description']</div>
        #else
							<span class="title ep_summaryTriggerNone" style="vertical-align:middle">Plot:</span>
							<img class="ep_summaryTriggerNone" src="$sbRoot/images/plus.png" height="16" width="16" alt="" />
        #end if
						</div>
					</td>
				</tr>
			</table>
		</div>
	</div>
	<!-- end $cur_result['show_name'] //-->
    #end for
</div>
<!-- end non list view //-->
#end if
##
#if 'daybyday' == $layout
##
    #set $shows_overdue = []
    #set $shows_soon = []
    #set $shows_future = []
    #set $onair = []
    #set $backart = []

    #set $state_overdue = 'listing-overdue'
    #set $state_current = 'listing-current'
    #set $state_soon = 'listing-soon'
    #set $state_future = 'listing-default'

    #for $cur_result in $sql_results
        #if not view_paused($cur_result)
            #continue
        #end if
        #if $cur_result['runtime']
            #set $air_date = $cur_result['localtime'].date()
            #set $end_datetime = $cur_result['localtime'] + datetime.timedelta(minutes = $cur_result['runtime'])
            #if $air_date >= $next_week.date()
                #set $cur_result['state'] = ''
                $shows_future.append($cur_result)
            #elif $cur_result['localtime'] > $today
                #set $cur_result['state'] = ''
                $shows_soon.append($cur_result)
                #set $dif = $cur_result['localtime'] - $today
                #set $until_hrs = (divmod($dif.days * 86400 + $dif.seconds, 60)[0]) / 60
                #if 24 >= $until_hrs and $cur_result['tvid_prodid'] not in $backart
                    $backart.append($cur_result['tvid_prodid'])
                #end if
            #elif $end_datetime > $today
                #set $cur_result['state'] = $state_current
                #set $cur_result['state-title'] = 'Currently On Air'
                $shows_soon.append($cur_result)
                #if $cur_result['tvid_prodid'] not in $onair
                    $onair.append($cur_result['tvid_prodid'])
                #end if
            #elif $air_date == $today.date()
                #set $cur_result['state'] = $state_overdue
                #set $cur_result['state-title'] = 'Overdue'
                $shows_soon.append($cur_result)
            #else
                #set $cur_result['state'] = $state_overdue
                #set $cur_result['state-title'] = 'Overdue'
                $shows_overdue.append($cur_result)
            #end if
        #else
            #set $cur_result['state'] = $state_soon
            #set $cur_result['state-title'] = ''
            $shows_soon.append($cur_result)
        #end if
    #end for

    ##set $state_init = [int(bool($shows_overdue)), ($state_soon, $state_overdue)[0 < len($shows_overdue)]] ## default overdue
    #set $state_init = [int(bool($shows_overdue)), $state_soon] ## default soon

    #set $dates_future = sorted({$i['localtime'].date():$i for $i in $shows_future})
    #set $rounded_week = int(len($dates_future)/7*7 + int(bool(len($dates_future)%7))*7)
<% dates_future += [dates_future[-1] + datetime.timedelta(days = 1 + i) for i in range(rounded_week - len(dates_future))] %>
    #set $num_weeks = int($rounded_week/7)
#slurp
<span style="position:absolute;left:-999px;height:0px">
	<img src="$sbRoot/images/poster_thumb.jpg" alt=""><img src="$sbRoot/images/banner_thumb.jpg" alt="">
</span>
#if $varExists('fanart')
<div id="background-container">
    #set $backlist = $backart
    #if $onair
        #import random
        $random.shuffle($onair)
        #set $backlist = $onair
    #end if

    #if len($backlist)
	<ul>
        #set $start_image = True
        #for $show_id in $backlist
            #for ($image, $rating) in $fanart.get($show_id, [])
		<li class="#echo ' '.join((x for x in ({10:'group', 20:'fave', 30:'avoid'}.get($rating, ''), ('', 'background first-load')[$start_image]) if x)) #" style="background-image:url($sbRoot/show-poster/?tvid_prodid=$show_id&which=fanart_$image)"></li>
                #set $start_image = False
            #end for
        #end for
	</ul>
    #end if
</div>
#end if

<div class="daybydayCarouselContainer">
	<div id="Carousel" class="carousel slide">

#set $wide = int(0 < len($shows_overdue)) + $num_weeks
		<div class="controlsBlock" style="#if $wide#width:#echo 42 + (($wide + 1) * 22) + 15 #px#else#background:transparent#end if#">
    #if $wide
			<a class="left carousel-control" href="#Carousel" data-slide="prev"><i class="glyphicon glyphicon-chevron-left"></i></a>
			<a class="right carousel-control" href="#Carousel" data-slide="next"><i class="glyphicon glyphicon-chevron-right"></i></a>
			<ul class="carousel-indicators">

        #set $slide_id = 0
        #if len($shows_overdue)
				<li data-target="#Carousel" data-slide-to="$slide_id" class="$state_overdue#if $state_init[1] == $state_overdue then ' active' else ''#"></li>
            #set $slide_id = 1
        #end if
				<li data-target="#Carousel" data-slide-to="$slide_id" class="$state_soon#if $state_init[1] == $state_soon then ' active' else ''#"></li>
        #set $slide_id += 1

        #for $i in range($slide_id, $slide_id + $num_weeks)
				<li data-target="#Carousel" data-slide-to="${i}" class="$state_future#if $state_init[1] == $state_future and $state_init[0] == $i then ' active' else ''#"></li>
        #end for
			</ul>
    #end if
		</div>

		<div class="carousel-inner">

    #for $shows, $state in [[$shows_overdue, $state_overdue], [$shows_soon, $state_soon], [$shows_future, $state_future]]
        #if 0 == len($shows) and ($state_overdue == $state or $state_future == $state)
            #continue
        #end if
        #set $week_num = 0
        #set $num_weeks = 1
        #while ($num_weeks)
            #if $state_future == $state
                #set $dates = $dates_future[$week_num*7:$week_num*7+7]
                #if 0 == $week_num
                    #set $num_weeks = int($rounded_week/7)
                #end if
                #set $week_num += 1
            #else
                ## hack to make var available in local context
                #set $today = $today
                <% dates = [(today + datetime.timedelta(days = (i, -7+i)[state_overdue == state])).date() for i in range(7)] %>
            #end if
            #set $num_weeks -= 1

			<div class="item#if $state_init[1] == $state then ' active' else ''#"> <!-- start $state -->
				<div class="daybydayWrapper">
            #set $tbl_day = 0
            #for $day in $dates
                ##
                #set $tbl_day += 1
                ##
                #set $col_class = ''
                #if 1 == $tbl_day and $state_soon == $state
                    #set $col_class = 'today '
                #end if
                #set $col_class = '%s%s' % ($col_class, ('even', 'odd')[1 == tbl_day % 2])

					<div class="day-of-week $col_class">
						<div class="day-number">
							<div class="number">$decode_str($SGDatetime.sbfdate($day, ' %d'), $sickgear.SYS_ENCODING).replace(' 0', ' ')</div>
							<div class="day">
								<span class="visible-lg">$decode_str($SGDatetime.sbfdate($day, '%A'), $sickgear.SYS_ENCODING).capitalize()</span>
								<span class="hidden-lg">$decode_str($SGDatetime.sbfdate($day, '%a'), $sickgear.SYS_ENCODING).capitalize()</span>
							</div>
							<div class="month">
								<span class="visible-lg">$decode_str($SGDatetime.sbfdate($day, '%B'), $sickgear.SYS_ENCODING).capitalize()</span>
								<span class="hidden-lg">$decode_str($SGDatetime.sbfdate($day, '%b'), $sickgear.SYS_ENCODING).capitalize()</span>
							</div>
						</div>

						<div id="$SGDatetime.sbfdate($day, 'day%j')">

                #set $day_has_show = False
                #for $cur_result in $shows
                    #if $day == $cur_result['localtime'].date()
                        #set $day_has_show = True
                        #set $airtime = $decode_str($SGDatetime.sbftime($cur_result['localtime'], markup=True), $sickgear.SYS_ENCODING)
                        #set $img_id = ''
                        #set $plot_class = ''
                        #set $title_text = ''
                        #set $show_id = '%s_%sx%s' % ($cur_result['tvid_prodid'], str($cur_result['season']), str($cur_result['episode']))
                        #set $img_id = ' id="plot-%s"' % $show_id
                        #set $plot_class = ' plot-daybyday'

							<div id="show-${show_id}" class="daybyday-show" data-name="$cur_result['data_show_name']" data-season="$cur_result['season']" data-episode="$cur_result['episode']" data-network="$cur_result['data_network']" data-time="$cur_result['localtime'].strftime('%Y%m%d%H%M')" data-rawname="$cur_result['show_name']">
								<div class="poster">
									<a${title_text} href="$sbRoot/home/view-show?tvid_prodid=$cur_result['tvid_prodid']">
									<img${img_id} class="img-responsive${plot_class}" alt="" src="$sbRoot/show-poster/?tvid_prodid=$cur_result['tvid_prodid']&amp;which=#echo ('banner', 'poster')[$bool($sg_var('EPISODE_VIEW_POSTERS', True))]#_thumb" /></a>
								</div>
								<div class="state#if len($cur_result['state']) then ' %s" title="%s"' % ($cur_result['state'], $cur_result['state-title']) else '"' #></div>
								<div class="text">
									<div class="airtime">
                        #set $match = None if not $cur_result['network'] else re.search(r'(.*)\s(\(\w+\))$', $cur_result['network'], re.I | re.M)
										<span class="time">${airtime}</span> <span class="network pull-right grey-text"#echo '>%s' % $cur_result['network'] if None is $match else ' title="%s">%s' % ($match.group(2), $match.group(1))#</span>
									</div>
									<div class="episode" title="$cur_result['name']">
										<span class="season"><%= '%i' % int(cur_result['season']) %></span>x<span class="number"><%= '%02i' % int(cur_result['episode']) %></span>
										<span class="name">$cur_result['name']</span>
									</div>
								</div>
                        #if int($cur_result['paused'])
								<span class="over-layer0">[paused]</span>
								<span class="over-layer1">[paused]</span>
                        #elif $state_current == $cur_result['state']
                            #set $endtime = $decode_str($SGDatetime.sbftime($cur_result['localtime'] + datetime.timedelta(minutes = $cur_result['runtime']), markup=True), $sickgear.SYS_ENCODING)
								<span class="over-layer0 on-air0">On Air until<br />$endtime</span>
								<span class="over-layer1 on-air1">On Air until<br />$endtime</span>
                        #end if
							</div><!-- end show-$cur_result['tvid_prodid'] //-->

                    #end if
                #end for
                #if not $day_has_show
							<div class="daybyday-show">
                    #set $theday = ('this ', 'to')[1 == $tbl_day and $state_soon == $state]
								<span class="episode-blank">No shows ${theday}day</span>
							</div>
                #end if
						</div>
					</div>
            #end for
				</div> <!-- end daybydayWrapper //-->
			</div> <!-- end $state //-->
        #end while
    #end for

		</div> <!-- end carouselinner //-->
	</div> <!-- end Carousel //-->
</div> <!-- end daybydayCarouselContainer //-->

<!-- end daybyday view //-->
#end if

<div class="clearfix"></div>

#raw
<script>
<!--
window.setInterval('location.reload(true)', 30*60000); // Refresh every xx minutes

$('#Carousel').carousel({interval: 0});

$(document).bind('keyup', function(e) {
	return (/undefined/i.test($.SickGear.PauseCarousel) &&
		(!('ctrlKey' in e && !!e.ctrlKey) && !('shiftKey' in e && !!e.shiftKey) && !(('altKey' in e && !!e.altKey) || ('metaKey' in e && !!e.metaKey))) && (
		(!(e.hasOwnProperty('ctrlKey') && e.ctrlKey) && !(e.hasOwnProperty('altKey') && e.altKey)) && (
		(39 == e.which && $('.carousel').carousel('next')) ||
		(37 == e.which && $('.carousel').carousel('prev'))) || !0));
});
//-->
</script>
#end raw

#if $varExists('fanart') and $layout in 'daybyday'
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_livepanel.tmpl')
#end if
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_bottom.tmpl')