#import sickbeard
#import datetime
#from sickbeard.common import *
#from sickbeard import db, sbdatetime, network_timezones

#set global $title="Home"
#set global $header="Show List"

#set global $sbPath = ".."

#set global $topmenu="home"#
#import os.path
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl")

#set $myDB = $db.DBConnection()
#set $today = str($datetime.date.today().toordinal())
#set $layout = $sickbeard.HOME_LAYOUT

#set status_quality = '(' + ','.join([str(x) for x in $Quality.SNATCHED + $Quality.SNATCHED_PROPER]) + ')'
#set status_download = '(' + ','.join([str(x) for x in $Quality.DOWNLOADED + [$ARCHIVED]]) + ')'

#set $sql_statement = 'SELECT showid, '

#set $sql_statement += '(SELECT COUNT(*) FROM tv_episodes WHERE showid=tv_eps.showid AND season > 0 AND episode > 0 AND airdate > 1 AND status IN ' + $status_quality + ') AS ep_snatched, '
#set $sql_statement += '(SELECT COUNT(*) FROM tv_episodes WHERE showid=tv_eps.showid AND season > 0 AND episode > 0 AND airdate > 1 AND status IN ' + $status_download + ') AS ep_downloaded, '

#set $sql_statement += '(SELECT COUNT(*) FROM tv_episodes WHERE showid=tv_eps.showid AND season > 0 AND episode > 0 AND airdate > 1 '
#set $sql_statement += ' AND ((airdate <= ' + $today + ' AND (status = ' + str($SKIPPED) + ' OR status = ' + str($WANTED) + ')) '
#set $sql_statement += ' OR (status IN ' + status_quality + ') OR (status IN ' + status_download + '))) AS ep_total, '

#set $sql_statement += ' (SELECT airdate FROM tv_episodes WHERE showid=tv_eps.showid AND airdate >= ' + $today + ' AND (status = ' + str($UNAIRED) + ' OR status = ' + str($WANTED) + ') ORDER BY airdate ASC LIMIT 1) AS ep_airs_next '
#set $sql_statement += ' FROM tv_episodes tv_eps GROUP BY showid'

#set $sql_result = $myDB.select($sql_statement)

#set $show_stat = {}
#set $max_download_count = 1000

#for $cur_result in $sql_result:
    #set $show_stat[$cur_result['showid']] = $cur_result
    #if $cur_result['ep_total'] > $max_download_count:
        #set $max_download_count = $cur_result['ep_total']
    #end if
#end for

#set $max_download_count = $max_download_count * 100

<style type="text/css">
.sort_data {display:none}
</style>

<script type="text/javascript" charset="utf-8">
<!--

\$.tablesorter.addParser({
    id: 'loadingNames',
    is: function(s) {
        return false;
    },
    format: function(s) {
        if (s.indexOf('Loading...') == 0)
        	return s.replace('Loading...','000');
		else
		#if not $sickbeard.SORT_ARTICLE:
			return (s || '').replace(/^(The|A|An)\s/i,'');
		#else:
			return (s || '');
		#end if	
    },
    type: 'text'
});

\$.tablesorter.addParser({
    id: 'cDate',
    is: function(s) {
        return false;
    },
    format: function(s) {
        return s; 
    },
    type: 'numeric'
});


\$.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: 'eps',
    is: function(s) {
        return false;
    },
    format: function(s) {
        match = s.match(/^(.*)/);

        if (match == null || match[1] == "?")
          return -10;

        var nums = match[1].split(" / ");
        if (nums[0].indexOf("+") != -1) {
            var num_parts = nums[0].split("+");
            nums[0] = num_parts[0];
        }

        nums[0] = parseInt(nums[0])
        nums[1] = parseInt(nums[1])

        if (nums[0] === 0)
          return nums[1];

        var finalNum = parseInt($max_download_count*nums[0]/nums[1]);
        if (finalNum > 0)
          finalNum += nums[0];

        return finalNum;
    },
    type: 'numeric'
});

\$(document).ready(function(){ 

    \$("img#network").on('error', function(){
    	\$(this).parent().text(\$(this).attr('alt'));
    	\$(this).remove();
    });

    \$("#showListTableShows:has(tbody tr)").tablesorter({
	
	        sortList: [[6,1],[2,0]],
	        textExtraction: {
				0: function(node) { return \$(node).find("span").text().toLowerCase(); },			
	        #if ( $layout != 'simple'):
		        3: function(node) { return \$(node).find("img").attr("alt"); },
	        #end if
	            4: function(node) { return \$(node).find("span").text(); },
	            6: function(node) { return \$(node).find("img").attr("alt"); }
	        },
	        widgets: ['saveSort', 'zebra'],
	        headers: {
				0: { sorter: 'cDate' },
	            2: { sorter: 'loadingNames' },
	            3: { sorter: 'network' },
	            4: { sorter: 'quality' },
	            5: { sorter: 'eps' },
	        }
    });

    \$("#showListTableAnime:has(tbody tr)").tablesorter({

	        sortList: [[6,1],[2,0]],
	        textExtraction: {
				0: function(node) { return \$(node).find("span").text().toLowerCase(); },
	        #if ( $layout != 'simple'):
		        3: function(node) { return \$(node).find("img").attr("alt"); },
	        #end if
	            4: function(node) { return \$(node).find("span").text(); },
	            6: function(node) { return \$(node).find("img").attr("alt"); }
	        },
	        widgets: ['saveSort', 'zebra'],
	        headers: {
				0: { sorter: 'cDate' },
	            2: { sorter: 'loadingNames' },
	            3: { sorter: 'network' },
	            4: { sorter: 'quality' },
	            5: { sorter: 'eps' },
	        }
    });

    #set $fuzzydate = 'airdate'
    #if $sickbeard.FUZZY_DATING:
    fuzzyMoment({
        containerClass : '.${fuzzydate}',
        dateHasTime : false,
        dateFormat : '${sickbeard.DATE_PRESET}',
        timeFormat : '${sickbeard.TIME_PRESET}',
        trimZero : #if $sickbeard.TRIM_ZERO then "true" else "false"#
    });
    #end if

});

//-->
</script>

#if $varExists('header') 
	<h1 class="header">$header</h1>
#else 
	<h1 class="title">$title</h1>
#end if

<div id="HomeLayout" style="float: right; margin-top: -25px;">
	<span><b>Layout:</b>
		<a class="inner" href="$sbRoot/setHomeLayout/?layout=poster" style="font-size: 12px;">Poster</a> &middot;
		<a class="inner" href="$sbRoot/setHomeLayout/?layout=banner" style="font-size: 12px;">Banner</a> &middot;
		<a class="inner" href="$sbRoot/setHomeLayout/?layout=simple" style="font-size: 12px;">Simple</a>
	</span>
</div>

#for $curShowlist in $showlists:
#set $curListType = $curShowlist[0]
#set $myShowList = $list($curShowlist[1])
#if $curListType == "Anime":
<h2>Anime List</h2>
#end if

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

  <thead><tr><th class="nowrap">Next Ep</th>#if $layout=="poster" then "<th>Poster</th>" else "<th style='display: none;'></th>"#<th>$curListType</th><th>Network</th><th>Quality</th><th>Downloads</th><th>Active</th><th>Status</th></tr></thead>
  <tfoot>
    <tr>
      <th rowspan="1" colspan="1" align="center"><a href="$sbRoot/home/addShows/">&nbsp Add Show</a></th>
      <th rowspan="1" colspan="7"></th>
    </tr>
  </tfoot>
  <tbody>

#for $curLoadingShow in $sickbeard.showQueueScheduler.action.loadingShowList:

  #if $curLoadingShow.show != None and $curLoadingShow.show in $sickbeard.showList:
    #continue
  #end if

  <tr>
    <td align="center">(loading)</td>
    <td></td>
    <td>
    #if $curLoadingShow.show == None:
    Loading... ($curLoadingShow.show_name)
    #else:
    <a href="displayShow?show=$curLoadingShow.show.indexerid">$curLoadingShow.show.name</a>
    #end if
    </td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
#end for

$myShowList.sort(lambda x, y: cmp(x.name, y.name))
#for $curShow in $myShowList:

    #set $cur_airs_next = ''
    #set $cur_snatched = 0
    #set $cur_downloaded = 0
    #set $cur_total = 0
    #set $download_stat_tip = ''

    #if $curShow.indexerid in $show_stat:
        #set $cur_airs_next = $show_stat[$curShow.indexerid]['ep_airs_next']

        #set $cur_snatched = $show_stat[$curShow.indexerid]['ep_snatched']
        #if not $cur_snatched:
            #set $cur_snatched = 0
        #end if

        #set $cur_downloaded = $show_stat[$curShow.indexerid]['ep_downloaded']
        #if not $cur_downloaded:
            #set $cur_downloaded = 0
        #end if

        #set $cur_total = $show_stat[$curShow.indexerid]['ep_total']
        #if not $cur_total:
            #set $cur_total = 0
        #end if
    #end if

    #if $cur_total != 0:
        #set $download_stat = str($cur_downloaded)
        #set $download_stat_tip = "Downloaded: " + str($cur_downloaded)
        #if $cur_snatched > 0:
            #set $download_stat = download_stat + "+" + str($cur_snatched)
            #set $download_stat_tip = download_stat_tip + "&#013;" + "Snatched: " + str($cur_snatched)
        #end if
        #set $download_stat = download_stat + " / " + str($cur_total)
        #set $download_stat_tip = download_stat_tip + "&#013;" + "Total: " + str($cur_total)
    #else
        #set $download_stat = '?'
        #set $download_stat_tip = "no data"
    #end if

    #set $nom = $cur_downloaded
    #set $den = $cur_total
    #if $den == 0:
        #set $den = 1
    #end if

#set $progressbar_percent = $nom * 100 / $den

#set $which_thumb = $layout+"_thumb"

  <tr>
    #if $cur_airs_next:
	#set $ldatetime = $network_timezones.parse_date_time($cur_airs_next,$curShow.airs,$curShow.network)
    	<td align="center" class="nowrap" style="color: #555555;font-weight:bold;"><div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdate($ldatetime)</div><span class="sort_data">$time.mktime($ldatetime.timetuple())</span> </td>
    #else:
    	<td align="center" class="nowrap" style="color: #555555;font-weight:bold;"></td>
    #end if
    #if $layout == 'poster':
	    <td>
	    	<div class="imgHomeWrapper $layout">
		    	<a href="$sbRoot/showPoster/?show=$curShow.indexerid&amp;which=$layout" rel="dialog" title="$curShow.name">
		    		<img src="$sbRoot/showPoster/?show=$curShow.indexerid&amp;which=$which_thumb" class="$layout" alt="$curShow.indexerid"/>
		    	</a>
	    	</div>
	    </td>
    	<td class="tvShow"><a href="$sbRoot/home/displayShow?show=$curShow.indexerid">$curShow.name</a></td>
	#else if $layout == 'banner':
    	<td style="display: none;"/>
	    <td>
	    	<span style="display: none;">$curShow.name</span>
	    	<div class="imgHomeWrapper imgHomeWrapperRounded $layout">
	    		<a href="$sbRoot/home/displayShow?show=$curShow.indexerid">
	    		<img src="$sbRoot/showPoster/?show=$curShow.indexerid&amp;which=$which_thumb" class="$layout" alt="$curShow.indexerid" title="$curShow.name"/>
	    	</div>
	    </td>
	#else if $layout == 'simple':
	    <td style="display: none;"/>
	    <td class="tvShow"><a href="$sbRoot/home/displayShow?show=$curShow.indexerid">$curShow.name</a></td>
    #end if
    <!--<td align="center">$curShow.network</td>//-->
    <td align="center" style="color: #555555;font-weight:bold;">
    #if $layout != 'simple':	
        #if $curShow.network:
        	<img id="network" width="44.8" height="22.4" src="$sbRoot/images/network/${curShow.network.lower()}.png" alt="$curShow.network" title="$curShow.network" />
    	#else:
    		<img id="network" width="44.8" height="22.4" src="$sbRoot/images/network/nonetwork.png" alt="No Network" title="No Network" />
		#end if
	#else:
		$curShow.network
	#end if		
    </td>
    
#if $curShow.quality in $qualityPresets:
    <td align="center"><span class="quality $qualityPresetStrings[$curShow.quality]">$qualityPresetStrings[$curShow.quality]</span></td>
#else:
    <td align="center"><span class="quality Custom">Custom</span></td>
#end if
    <td align="center"><span style="display: none;">$download_stat</span><div id="progressbar$curShow.indexerid" style="position:relative;"></div>
        <script type="text/javascript">
          <!--
                \$(function() {
                 \$("\#progressbar$curShow.indexerid").progressbar({
                     value: $progressbar_percent
                 });
                 \$("\#progressbar$curShow.indexerid").append("<div class='progressbarText' title='$download_stat_tip'>$download_stat</div>")
                });
          //-->
        </script>
    </td>
    <td align="center"><img src="$sbRoot/images/#if int($curShow.paused) == 0 and $curShow.status != "Ended" then "yes16.png\" alt=\"Y\"" else "no16.png\" alt=\"N\""# width="16" height="16" /></td>
    <td align="center" style="color: #555555; font-weight: bold;">$curShow.status</td>
  </tr>


#end for
</tbody>
</table>
#end for

#include $os.path.join($sickbeard.PROG_DIR,"gui/slick/interfaces/default/inc_bottom.tmpl")