diff --git a/gui/slick/css/style.css b/gui/slick/css/style.css
index c1fc73535bed00339e44ad523d418d56c44885d2..1b84437cb1aeb512ffcd58bbac3f996e910a6c75 100644
--- a/gui/slick/css/style.css
+++ b/gui/slick/css/style.css
@@ -4,139 +4,139 @@ fonts
 /* Open Sans */
 /* Regular */
 @font-face {
-	font-family: 'Open Sans';
+    font-family: 'Open Sans';
 
-	src: url('fonts/OpenSans-Regular-webfont.eot');
-	src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-Regular-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
-	font-weight: normal;
-	font-weight: 400;
-	font-style: normal;
+    src: url('fonts/OpenSans-Regular-webfont.eot');
+    src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-Regular-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
+    font-weight: normal;
+    font-weight: 400;
+    font-style: normal;
 }
 
 /* Italic */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-Italic-webfont.eot');
-	src: url('fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-Italic-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg');
-	font-weight: normal;
-	font-weight: 400;
-	font-style: italic;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Italic-webfont.eot');
+    src: url('fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-Italic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg');
+    font-weight: normal;
+    font-weight: 400;
+    font-style: italic;
 }
 
 /* Light */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-Light-webfont.eot');
-	src: url('fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-Light-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-Light-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
-	font-weight: 200;
-	font-style: normal;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Light-webfont.eot');
+    src: url('fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-Light-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Light-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+    font-weight: 200;
+    font-style: normal;
 }
 
 /* Light Italic */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-LightItalic-webfont.eot');
-	src: url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg');
-	font-weight: 200;
-	font-style: italic;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-LightItalic-webfont.eot');
+    src: url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg');
+    font-weight: 200;
+    font-style: italic;
 }
 
 /* Semibold */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-Semibold-webfont.eot');
-	src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-Semibold-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
-	font-weight: 600;
-	font-style: normal;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Semibold-webfont.eot');
+    src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-Semibold-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
+    font-weight: 600;
+    font-style: normal;
 }
 
 /* Semibold Italic */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-SemiboldItalic-webfont.eot');
-	src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg');
-	font-weight: 600;
-	font-style: italic;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-SemiboldItalic-webfont.eot');
+    src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg');
+    font-weight: 600;
+    font-style: italic;
 }
 
 /* Bold */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-Semibold-webfont.eot');
-	src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-Semibold-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
-	font-weight: bold;
-	font-weight: 700;
-	font-style: normal;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Semibold-webfont.eot');
+    src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-Semibold-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
+    font-weight: bold;
+    font-weight: 700;
+    font-style: normal;
 }
 
 /* Bold Italic */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-SemiboldItalic-webfont.eot');
-	src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg');
-	font-weight: bold;
-	font-weight: 700;
-	font-style: italic;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-SemiboldItalic-webfont.eot');
+    src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg');
+    font-weight: bold;
+    font-weight: 700;
+    font-style: italic;
 }
 
 /* Extra Bold */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-Bold-webfont.eot');
-	src: url('fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-Bold-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
-	font-weight: 900;
-	font-style: normal;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Bold-webfont.eot');
+    src: url('fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-Bold-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
+    font-weight: 900;
+    font-style: normal;
 }
 
 /* Extra Bold Italic */
 @font-face {
-	font-family: 'Open Sans';
-	src: url('fonts/OpenSans-BoldItalic-webfont.eot');
-	src: url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
-		 url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'),
-		 url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg');
-	font-weight: 900;
-	font-style: italic;
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-BoldItalic-webfont.eot');
+    src: url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg');
+    font-weight: 900;
+    font-style: italic;
 }
 
 /* Droid Sans */
 @font-face {
-	font-family: 'droid_sans_mono';
-	src: url('fonts/droidsansmono-webfont.eot');
-	src: url('fonts/droidsansmono-webfont.eot?#iefix') format('embedded-opentype'),
-		 url('fonts/droidsansmono-webfont.woff') format('woff'),
-		 url('fonts/droidsansmono-webfont.ttf') format('truetype'),
-		 url('fonts/droidsansmono-webfont.svg#droid_sans_monoregular') format('svg');
-	font-weight: normal;
-	font-style: normal;
+    font-family: 'droid_sans_mono';
+    src: url('fonts/droidsansmono-webfont.eot');
+    src: url('fonts/droidsansmono-webfont.eot?#iefix') format('embedded-opentype'),
+         url('fonts/droidsansmono-webfont.woff') format('woff'),
+         url('fonts/droidsansmono-webfont.ttf') format('truetype'),
+         url('fonts/droidsansmono-webfont.svg#droid_sans_monoregular') format('svg');
+    font-weight: normal;
+    font-style: normal;
 }
 
 
@@ -145,8 +145,8 @@ inc_top.mako
 ========================================================================== */
 
 .navbaricon {
-	margin-top: -15px;
-	margin-bottom: -15px;
+    margin-top: -15px;
+    margin-bottom: -15px;
 }
 
 #contentWrapper {
@@ -155,44 +155,44 @@ inc_top.mako
 
 [class^="icon-"],
 [class*=" icon-"] {
-	background-image: url("../images/glyphicons-halflings.png");
+    background-image: url("../images/glyphicons-halflings.png");
 }
 
 .icon-white {
-	background-image: url("../images/glyphicons-halflings-white.png");
+    background-image: url("../images/glyphicons-halflings-white.png");
 }
 
 .dropdown-menu li > a:hover > [class^="menu-icon-"],
 .dropdown-menu li > a:hover > [class*=" menu-icon-"] {
-	background-image: url("../images/menu/menu-icons-white.png");
+    background-image: url("../images/menu/menu-icons-white.png");
 }
 
 [class^="icon16-"],
 [class*=" icon16-"] {
-	background-image: url("../images/glyphicons-config.png");
+    background-image: url("../images/glyphicons-config.png");
 }
 
 .ui-autocomplete-loading {
-	background: white url("../images/loading16.gif") right center no-repeat;
+    background: white url("../images/loading16.gif") right center no-repeat;
 }
 
 .browserDialog.busy .ui-dialog-buttonpane {
-	background: url("../images/loading.gif") 10px 50% no-repeat !important;
+    background: url("../images/loading.gif") 10px 50% no-repeat !important;
 }
 
 .ui-progressbar .ui-progressbar-overlay {
-	background: url("../css/lib/images/animated-overlay.gif");
+    background: url("../css/lib/images/animated-overlay.gif");
 }
 
 .ui-dialog,
 .ui-dialog-buttonpane {
-	background: #eceadf url("../css/lib/images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat !important;
+    background: #eceadf url("../css/lib/images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat !important;
 }
 
 .ui-accordion-content,
 .ui-tabs-panel {
-	background: #ededed !important;
-	background-image: none !important;
+    background: #ededed !important;
+    background-image: none !important;
 }
 
 .ui-widget {
@@ -201,18 +201,18 @@ inc_top.mako
 }
 
 .ui-widget-content {
-	background: #dcdcdc url("../css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png") 50% top repeat-x;
+    background: #dcdcdc url("../css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png") 50% top repeat-x;
 }
 
 .ui-widget-header {
-	background: #ffffff url("../css/lib/images/ui-bg_flat_0_ffffff_40x100.png") 50% 50% repeat-x;
+    background: #ffffff url("../css/lib/images/ui-bg_flat_0_ffffff_40x100.png") 50% 50% repeat-x;
 }
 
 .ui-state-default,
 .ui-widget-content .ui-state-default,
 .ui-widget-header .ui-state-default {
-	background: #ffffff;
-	border: 1px solid #CCCCCC;
+    background: #ffffff;
+    border: 1px solid #CCCCCC;
 }
 
 .ui-state-hover,
@@ -221,262 +221,262 @@ inc_top.mako
 .ui-state-focus,
 .ui-widget-content .ui-state-focus,
 .ui-widget-header .ui-state-focus {
-	background: #ffffff;
+    background: #ffffff;
 }
 
 .ui-state-active,
 .ui-widget-content .ui-state-active,
 .ui-widget-header .ui-state-active {
-	background: #F7F7F7;
+    background: #F7F7F7;
 }
 
 .ui-state-highlight,
 .ui-widget-content .ui-state-highlight,
 .ui-widget-header .ui-state-highlight {
-	background: #fbf9ee url("../css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
+    background: #fbf9ee url("../css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
 }
 
 .ui-state-error,
 .ui-widget-content .ui-state-error,
 .ui-widget-header .ui-state-error {
-	background: #fef1ec url("../css/lib/images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
+    background: #fef1ec url("../css/lib/images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
 }
 
 .ui-icon,
 .ui-widget-content .ui-icon {
-	background-image: url("../css/lib/images/ui-icons_222222_256x240.png");
+    background-image: url("../css/lib/images/ui-icons_222222_256x240.png");
 }
 
 .ui-widget-header .ui-icon {
-	background-image: url("../css/lib/images/ui-icons_222222_256x240.png");
+    background-image: url("../css/lib/images/ui-icons_222222_256x240.png");
 }
 
 .ui-state-default .ui-icon {
-	background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png");
+    background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png");
 }
 
 .ui-state-hover .ui-icon,
 .ui-state-focus .ui-icon {
-	background-image: url("../css/lib/images/ui-icons_222222_256x240.png");
+    background-image: url("../css/lib/images/ui-icons_222222_256x240.png");
 }
 
 .ui-state-active .ui-icon {
-	background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png");
+    background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png");
 }
 
 .ui-state-highlight .ui-icon {
-	background-image: url("../css/lib/images/ui-icons_2e83ff_256x240.png");
+    background-image: url("../css/lib/images/ui-icons_2e83ff_256x240.png");
 }
 
 .ui-state-error .ui-icon,
 .ui-state-error-text .ui-icon {
-	background-image: url("../css/lib/images/ui-icons_cd0a0a_256x240.png");
+    background-image: url("../css/lib/images/ui-icons_cd0a0a_256x240.png");
 }
 
 .ui-widget-overlay {
-	background: #aaaaaa url("../css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
+    background: #aaaaaa url("../css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
 }
 
 .ui-widget-shadow {
-	background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x;
+    background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x;
 }
 
 .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
-	color: #140F06;
-	text-decoration: none;
+    color: #140F06;
+    text-decoration: none;
 }
 
 .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
-	color: #222;
-	text-decoration: none;
+    color: #222;
+    text-decoration: none;
 }
 
 .ui-tabs {
-	padding: 0px;
-	background: none;
-	border-width: 0px;
+    padding: 0px;
+    background: none;
+    border-width: 0px;
 }
 
 .ui-tabs .ui-tabs-nav {
-	padding-left: 0px;
-	background: transparent;
-	border-width: 0px 0px 0px 0px;
-	-moz-border-radius: 0px;
-	-webkit-border-radius: 0px;
-	border-radius: 0px;
+    padding-left: 0px;
+    background: transparent;
+    border-width: 0px 0px 0px 0px;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    border-radius: 0px;
 }
 
 .ui-tabs .ui-tabs-panel {
-	background-color: #F7F7F7 !important;
-	border: 1px solid #CCCCCC !important;
-	padding: 1em;
+    background-color: #F7F7F7 !important;
+    border: 1px solid #CCCCCC !important;
+    padding: 1em;
 }
 
 .ui-tabs .ui-tabs-nav li.ui-tabs-active {
-	border-top-left-radius: 5px;
-	border-top-right-radius: 5px;
+    border-top-left-radius: 5px;
+    border-top-right-radius: 5px;
 }
 
 .ui-tabs-nav > :not(.ui-tabs-active){
-	border-top-left-radius: 5px;
-	border-top-right-radius: 5px;
+    border-top-left-radius: 5px;
+    border-top-right-radius: 5px;
 }
 
 #content {
-	width: 95%;
-	min-width: 875px;
-	padding: 15px;
-	margin-left: auto;
-	margin-right: auto;
-	clear: both;
+    width: 95%;
+    min-width: 875px;
+    padding: 15px;
+    margin-left: auto;
+    margin-right: auto;
+    clear: both;
 }
 
 #SubMenu {
-	padding-right: 20px;
-	clear: both;
-	font-size: 12px;
-	float: right;
+    padding-right: 20px;
+    clear: both;
+    font-size: 12px;
+    float: right;
 }
 
 .upgrade-notification {
-	width: 600px;
-	text-align: center;
-	margin-left: auto;
-	margin-right: auto;
-	margin-top: 50px;
-	margin-bottom: 0px;
+    width: 600px;
+    text-align: center;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: 50px;
+    margin-bottom: 0px;
 }
 
 [class^="menu-icon-"], [class*=" menu-icon-"] {
-	background: url("../images/menu/menu-icons-black.png");
-	height: 16px;
-	width: 16px;
-	display: inline-block;
-	position: relative;
-	top: 2px;
-	float: left;
+    background: url("../images/menu/menu-icons-black.png");
+    height: 16px;
+    width: 16px;
+    display: inline-block;
+    position: relative;
+    top: 2px;
+    float: left;
 }
 
 @media(max-width:767px){
-	[class^="menu-icon-"], [class*=" menu-icon-"] {
-		background: url("../images/menu/menu-icons-white.png");
-		height: 16px;
-		width: 16px;
-		display: inline-block;
-		position: relative;
-		top: 2px;
-		float: left;
-	}
+    [class^="menu-icon-"], [class*=" menu-icon-"] {
+        background: url("../images/menu/menu-icons-white.png");
+        height: 16px;
+        width: 16px;
+        display: inline-block;
+        position: relative;
+        top: 2px;
+        float: left;
+    }
 }
 
 .menu-icon-addshow {
-	background-position: 0px 0px;
+    background-position: 0px 0px;
 }
 
 .menu-icon-anime {
-	background-position: -21px 0px;
+    background-position: -21px 0px;
 }
 
 .menu-icon-backlog-view {
-	background-position: -42px 0px;
+    background-position: -42px 0px;
 }
 
 .menu-icon-backlog {
-	background-position: -63px 0px;
+    background-position: -63px 0px;
 }
 
 .menu-icon-bittorrent {
-	background-position: -84px 0px;
+    background-position: -84px 0px;
 }
 
 .menu-icon-config-index {
-	background-position: -105px 0px;
+    background-position: -105px 0px;
 }
 
 .menu-icon-config {
-	background-position: -126px 0px;
+    background-position: -126px 0px;
 }
 
 .menu-icon-failed-download {
-	background-position: -147px 0px;
+    background-position: -147px 0px;
 }
 
 .menu-icon-home {
-	background-position: -168px 0px;
+    background-position: -168px 0px;
 }
 
 .menu-icon-manage {
-	background-position: -189px 0px;
+    background-position: -189px 0px;
 }
 
 .menu-icon-manage-searches {
-	background-position: -210px 0px;
+    background-position: -210px 0px;
 }
 
 .menu-icon-poster {
-	background-position: -231px 0px;
+    background-position: -231px 0px;
 }
 
 .menu-icon-postprocess {
-	background-position: -252px 0px;
+    background-position: -252px 0px;
 }
 
 .menu-icon-restart {
-	background-position: -273px 0px;
+    background-position: -273px 0px;
 }
 
 .menu-icon-shutdown {
-	background-position: -294px 0px;
+    background-position: -294px 0px;
 }
 
 .menu-icon-update {
-	background-position: -315px 0px;
+    background-position: -315px 0px;
 }
 
 .menu-icon-viewlog-errors {
-	background-position: -336px 0px;
+    background-position: -336px 0px;
 }
 
 .menu-icon-viewlog {
-	background-position: -357px 0px;
+    background-position: -357px 0px;
 }
 
 .menu-icon-kodi {
-	background-position: -378px 0px;
+    background-position: -378px 0px;
 }
 
 .menu-icon-help {
-	background-position: -399px 0px;
+    background-position: -399px 0px;
 }
 
 [class^="submenu-icon-"], [class*=" submenu-icon-"] {
-	background: url("../images/menu/menu-icons-black.png");
-	height: 16px;
-	width: 16px;
+    background: url("../images/menu/menu-icons-black.png");
+    height: 16px;
+    width: 16px;
 }
 
 .submenu-icon-anime {
-	background-position: -21px 0px;
+    background-position: -21px 0px;
 }
 
 .submenu-icon-bittorrent {
-	background-position: -84px 0px;
+    background-position: -84px 0px;
 }
 
 .submenu-icon-failed-download {
-	background-position: -147px 0px;
+    background-position: -147px 0px;
 }
 
 .submenu-icon-restart {
-	background-position: -273px 0px;
+    background-position: -273px 0px;
 }
 
 .submenu-icon-shutdown {
-	background-position: -294px 0px;
+    background-position: -294px 0px;
 }
 
 .submenu-icon-kodi {
-	background-position: -378px 0px;
+    background-position: -378px 0px;
 }
 
 /* =======================================================================
@@ -484,16 +484,16 @@ inc_bottom.mako
 ========================================================================== */
 
 .footer {
-	width: 100%;
-	padding: 20px 0;
-	color: #4e4e4e;
-	text-align: center;
-	font-size: 12px;
+    width: 100%;
+    padding: 20px 0;
+    color: #4e4e4e;
+    text-align: center;
+    font-size: 12px;
 }
 
 .footerhighlight {
-	color: #111;
-	display: inline;
+    color: #111;
+    display: inline;
 }
 
 /* =======================================================================
@@ -502,13 +502,13 @@ inc_rootDirs.mako
 .rootdir-selectbox,
 .rootdir-selectbox #rootDirs,
 .rootdir-controls {
-	width: 430px
+    width: 430px
 }
 .rootdir-selectbox {
-	padding: 0 0 5px
+    padding: 0 0 5px
 }
 .rootdir-controls {
-	text-align: center
+    text-align: center
 }
 
 /* =======================================================================
@@ -516,274 +516,274 @@ home.mako
 ========================================================================== */
 
 .imgbanner .banner {
-	border: 1px solid #ccc;
-	overflow: hidden;
-	height: 66px;
-	overflow: hidden;
-	border-radius: 8px;
-	vertical-align: top;
-	width: 360px;
-	display: block;
-	margin-left: auto;
-	margin-right: auto;
+    border: 1px solid #ccc;
+    overflow: hidden;
+    height: 66px;
+    overflow: hidden;
+    border-radius: 8px;
+    vertical-align: top;
+    width: 360px;
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
 }
 
 .imgsmallposter .small {
-	height: 66px;
-	overflow: hidden;
-	border-radius: 3px;
-	vertical-align: middle;
-	width: 45px;
-	border: 1px solid #ccc;
-	margin-right: 5px;
+    height: 66px;
+    overflow: hidden;
+    border-radius: 3px;
+    vertical-align: middle;
+    width: 45px;
+    border: 1px solid #ccc;
+    margin-right: 5px;
 }
 
 .search {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 
 .ui-progressbar {
-	height: 20px;
-	line-height: 18px;
+    height: 20px;
+    line-height: 18px;
 }
 
 .ui-progressbar .ui-progressbar-value {
-	box-sizing: content-box !important;
+    box-sizing: content-box !important;
 }
 
 .progressbarText {
-	position: absolute;
-	top: 0;
-	width: 100%;
-	height: 100%;
-	overflow: visible;
-	text-align: center;
-	text-shadow: 0 0 0.1em #fff;
-	vertical-align: middle;
-	font-size: 12px;
-	color: #000000;
+    position: absolute;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    overflow: visible;
+    text-align: center;
+    text-shadow: 0 0 0.1em #fff;
+    vertical-align: middle;
+    font-size: 12px;
+    color: #000000;
 }
 
 .progress-100 {
-	background-image: -moz-linear-gradient(#395f07, #2a4705) !important;
-	background-image: linear-gradient(#395f07, #2a4705) !important;
-	background-image: -webkit-linear-gradient(#395f07, #2a4705) !important;
-	background-image: -o-linear-gradient(#395f07, #2a4705) !important;
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
+    background-image: -moz-linear-gradient(#395f07, #2a4705) !important;
+    background-image: linear-gradient(#395f07, #2a4705) !important;
+    background-image: -webkit-linear-gradient(#395f07, #2a4705) !important;
+    background-image: -o-linear-gradient(#395f07, #2a4705) !important;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
 }
 
 .progress-80 {
-	background-image: -moz-linear-gradient(#a6cf41, #5b990d) !important;
-	background-image: linear-gradient(#a6cf41, #5b990d) !important;
-	background-image: -webkit-linear-gradient(#a6cf41, #5b990d) !important;
-	background-image: -o-linear-gradient(#a6cf41, #5b990d) !important;
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
+    background-image: -moz-linear-gradient(#a6cf41, #5b990d) !important;
+    background-image: linear-gradient(#a6cf41, #5b990d) !important;
+    background-image: -webkit-linear-gradient(#a6cf41, #5b990d) !important;
+    background-image: -o-linear-gradient(#a6cf41, #5b990d) !important;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
 }
 
 .progress-60 {
-	background-image: -moz-linear-gradient(#fad440, #f2a70d) !important;
-	background-image: linear-gradient(#fad440, #f2a70d) !important;
-	background-image: -webkit-linear-gradient(#fad440, #f2a70d) !important;
-	background-image: -o-linear-gradient(#fad440, #f2a70d) !important;
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
+    background-image: -moz-linear-gradient(#fad440, #f2a70d) !important;
+    background-image: linear-gradient(#fad440, #f2a70d) !important;
+    background-image: -webkit-linear-gradient(#fad440, #f2a70d) !important;
+    background-image: -o-linear-gradient(#fad440, #f2a70d) !important;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
 }
 
 .progress-40 {
-	background-image: -moz-linear-gradient(#fab543, #f2700d) !important;
-	background-image: linear-gradient(#fab543, #f2700d) !important;
-	background-image: -webkit-linear-gradient(#fab543, #f2700d) !important;
-	background-image: -o-linear-gradient(#fab543, #f2700d) !important;
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
+    background-image: -moz-linear-gradient(#fab543, #f2700d) !important;
+    background-image: linear-gradient(#fab543, #f2700d) !important;
+    background-image: -webkit-linear-gradient(#fab543, #f2700d) !important;
+    background-image: -o-linear-gradient(#fab543, #f2700d) !important;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
 }
 
 .progress-20 {
-	background-image: -moz-linear-gradient(#da5945, #b11a10) !important;
-	background-image: linear-gradient(#da5945, #b11a10) !important;
-	background-image: -webkit-linear-gradient(#da5945, #b11a10) !important;
-	background-image: -o-linear-gradient(#da5945, #b11a10) !important;
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
+    background-image: -moz-linear-gradient(#da5945, #b11a10) !important;
+    background-image: linear-gradient(#da5945, #b11a10) !important;
+    background-image: -webkit-linear-gradient(#da5945, #b11a10) !important;
+    background-image: -o-linear-gradient(#da5945, #b11a10) !important;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
 }
 
 #container, #container-anime {
-	margin: 0 auto;
+    margin: 0 auto;
 }
 
 .show {
-	margin: 12px;
-	width: 188px;
-	height: 352px;
-	background-color: #DFDACF;
-	border: 1px solid #111;
-	border-radius: 6px;
+    margin: 12px;
+    width: 188px;
+    height: 352px;
+    background-color: #DFDACF;
+    border: 1px solid #111;
+    border-radius: 6px;
 }
 
 .show-image {
-	overflow: hidden;
-	height: 273px;
-	width: 186px;
-	border-top-left-radius: 5px;
-	border-top-right-radius: 5px;
+    overflow: hidden;
+    height: 273px;
+    width: 186px;
+    border-top-left-radius: 5px;
+    border-top-right-radius: 5px;
 }
 
 .show .ui-progressbar {
-	height: 7px !important;
-	top: -2px;
+    height: 7px !important;
+    top: -2px;
 }
 
 .show .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br {
-	border-bottom-right-radius: 0px;
+    border-bottom-right-radius: 0px;
 }
 
 .show .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl {
-	border-bottom-left-radius: 0px;
+    border-bottom-left-radius: 0px;
 }
 
 .show .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr {
-	border-top-right-radius: 0px;
+    border-top-right-radius: 0px;
 }
 
 .show .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl {
-	border-top-left-radius: 0px;
+    border-top-left-radius: 0px;
 }
 
 .show .ui-widget-content {
-	border-top: 1px solid #111;
-	border-bottom: 1px solid #111;
-	border-left: 0px;
-	border-right: 0px;
+    border-top: 1px solid #111;
+    border-bottom: 1px solid #111;
+    border-left: 0px;
+    border-right: 0px;
 }
 .ui-progressbar .ui-progressbar-value {
-	height:20px
+    height:20px
 }
 .ui-progressbar .progress-20 {
-	border: none;
+    border: none;
 }
 .show .progress-20,
 .show .progress-40,
 .show .progress-60,
 .show .progress-80 {
-	border-radius: 0px;
-	height: 7px
+    border-radius: 0px;
+    height: 7px
 }
 
 .show-title {
-	position: relative;
-	overflow: hidden;
-	white-space: nowrap;
-	font-size: 11px;
-	margin: 4px 4px 0px 4px;
+    position: relative;
+    overflow: hidden;
+    white-space: nowrap;
+    font-size: 11px;
+    margin: 4px 4px 0px 4px;
 }
 
 .show-title:after {
-	content: "";
-	pointer-events: none;
-	position: absolute;
-	width: 20px;
-	height: 100%;
-	top: 0;
-	right: 0;
-	background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
-	background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
-	background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
-	background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
-	background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    content: "";
+    pointer-events: none;
+    position: absolute;
+    width: 20px;
+    height: 100%;
+    top: 0;
+    right: 0;
+    background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
 }
 
 .show-date {
-	position: relative;
-	overflow: hidden;
-	white-space: nowrap;
-	font-size: 11px;
-	margin: 0px 4px 4px 4px;
+    position: relative;
+    overflow: hidden;
+    white-space: nowrap;
+    font-size: 11px;
+    margin: 0px 4px 4px 4px;
 }
 
 .show-date:after {
-	content: "";
-	pointer-events: none;
-	position: absolute;
-	width: 20px;
-	height: 100%;
-	top: 0;
-	right: 0;
-	background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
-	background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
-	background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
-	background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
-	background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    content: "";
+    pointer-events: none;
+    position: absolute;
+    width: 20px;
+    height: 100%;
+    top: 0;
+    right: 0;
+    background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
+    background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0));
 }
 
 .show-table {
-	text-align:center;
-	vertical-align:middle;
-	width: 33%
+    text-align:center;
+    vertical-align:middle;
+    width: 33%
 }
 
 .show-add {
-	font-size: 11px;
-	text-align: left;
-	display: block;
+    font-size: 11px;
+    text-align: left;
+    display: block;
 }
 
 .show-status {
-	font-size: 11px;
-	text-align: left;
-	display: block;
+    font-size: 11px;
+    text-align: left;
+    display: block;
 }
 
 .show-network-image {
-	width: 50px;
-	height: auto;
+    width: 50px;
+    height: auto;
 }
 
 .show-dlstats {
-	font-size: 11px;
-	text-align: left;
-	display: block;
-	margin-left: 4px;
+    font-size: 11px;
+    text-align: left;
+    display: block;
+    margin-left: 4px;
 }
 
 .show-quality {
-	font-size: 11px;
-	text-align: right;
-	display: block;
-	margin-right: 4px;
+    font-size: 11px;
+    text-align: right;
+    display: block;
+    margin-right: 4px;
 }
 
 #sort-by {
-	display: inline;
-	list-style-type: none;
-	padding: 0;
-	margin-left: 5px;
+    display: inline;
+    list-style-type: none;
+    padding: 0;
+    margin-left: 5px;
 }
 
 #sort-by ul, #sort-by li {
-	display: inline;
-	margin: 0;
-	padding: 0;
+    display: inline;
+    margin: 0;
+    padding: 0;
 }
 
 .posterview {
-	margin: 0 auto;
+    margin: 0 auto;
 }
 
 td.tvShow a {
-	color: #000;
-	text-decoration: none;
+    color: #000;
+    text-decoration: none;
 }
 
 td.tvShow a:hover {
-	cursor: pointer;
-	color: #428BCA;
+    cursor: pointer;
+    color: #428BCA;
 }
 
 #popover-target label {
@@ -804,59 +804,59 @@ home_addShows.mako
 ========================================================================== */
 
 #addShowPortal {
-	width: 700px;
-	padding: 10px 0;
-	margin-right: auto;
-	margin-left: auto;
+    width: 700px;
+    padding: 10px 0;
+    margin-right: auto;
+    margin-left: auto;
 }
 
 #addShowPortal  a {
-	padding: 10px;
+    padding: 10px;
 }
 
 div.button {
-	display: table-cell;
-	vertical-align: middle;
-	padding-left: 10px;
+    display: table-cell;
+    vertical-align: middle;
+    padding-left: 10px;
 }
 
 div.buttontext {
-	display: table-cell;
-	padding-left: 20px;
-	text-align: left;
-	white-space: normal;
+    display: table-cell;
+    padding-left: 20px;
+    text-align: left;
+    white-space: normal;
 }
 
 div.buttontext h3 {
-	margin-top: 10px;
+    margin-top: 10px;
 }
 
 div.buttontext p {
-	font-size: 13px;
+    font-size: 13px;
 }
 
 .icon-addnewshow {
-	background-image: url("../images/addshows/add-new32-black.png");
-	width: 32px;
-	height: 32px;
+    background-image: url("../images/addshows/add-new32-black.png");
+    width: 32px;
+    height: 32px;
 }
 
 .icon-addtrendingshow {
-	background-image: url("../images/addshows/add-trending32-black.png");
-	width: 32px;
-	height: 32px;
+    background-image: url("../images/addshows/add-trending32-black.png");
+    width: 32px;
+    height: 32px;
 }
 
 .icon-addrecommendedshow {
-	background-image: url("../images/addshows/add-trakt32-black.png");
-	width: 32px;
-	height: 32px;
+    background-image: url("../images/addshows/add-trakt32-black.png");
+    width: 32px;
+    height: 32px;
 }
 
 .icon-addexistingshow {
-	background-image: url("../images/addshows/add-existing32-black.png");
-	width: 32px;
-	height: 32px;
+    background-image: url("../images/addshows/add-existing32-black.png");
+    width: 32px;
+    height: 32px;
 }
 
 /* =======================================================================
@@ -864,30 +864,30 @@ home_newShow.mako
 ========================================================================== */
 
 #addShowForm, #recommendedShowsForm {
-	width: 800px;
-	margin-left: auto;
-	margin-right: auto;
-	padding: 10px 0;
-	font-size:13px;
+    width: 800px;
+    margin-left: auto;
+    margin-right: auto;
+    padding: 10px 0;
+    font-size:13px;
 }
 
 #newShowPortal {
-	width: 960px;
-	padding: 10px 0;
-	margin-right: auto;
-	margin-left: auto;
+    width: 960px;
+    padding: 10px 0;
+    margin-right: auto;
+    margin-left: auto;
 }
 
 #displayText {
-	padding: 8px;
-	overflow: hidden;
-	font-size: 14px;
-	background-color: #efefef;
-	border: 1px solid #dfdede;
+    padding: 8px;
+    overflow: hidden;
+    font-size: 14px;
+    background-color: #efefef;
+    border: 1px solid #dfdede;
 }
 
 #searchResults input[type="radio"] {
-	vertical-align: -2px;
+    vertical-align: -2px;
 }
 
 /* =======================================================================
@@ -895,30 +895,30 @@ home_addExistingShow.mako
 ========================================================================== */
 
 .existingtabs {
-	padding: 1em 1.4em;
+    padding: 1em 1.4em;
 }
 
 ul#rootDirStaticList {
-	margin-right: auto;
-	margin-left: auto;
-	text-align: left;
+    margin-right: auto;
+    margin-left: auto;
+    text-align: left;
 }
 
 ul#rootDirStaticList li {
-	padding: 4px 5px 4px 5px;
-	margin: 2px;
-	list-style: none outside none;
-	cursor: pointer;
-	background: url('../css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png') repeat-x scroll 50% 50% #EFEFEF;
+    padding: 4px 5px 4px 5px;
+    margin: 2px;
+    list-style: none outside none;
+    cursor: pointer;
+    background: url('../css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png') repeat-x scroll 50% 50% #EFEFEF;
 }
 
 ul#rootDirStaticList li label {
-	margin-top: 5px;
-	margin-bottom: 5px;
+    margin-top: 5px;
+    margin-bottom: 5px;
 }
 
 ul#rootDirStaticList li input[type="checkbox"] {
-	vertical-align: -2px;
+    vertical-align: -2px;
 }
 
 /* =======================================================================
@@ -926,44 +926,44 @@ home_trendingShows.mako
 ========================================================================== */
 
 .traktShowTitleIcons {
-	float: right;
-	padding-right: 4px;
-	padding-bottom: 4px;
+    float: right;
+    padding-right: 4px;
+    padding-bottom: 4px;
 }
 
 .traktContainer p {
-	padding-top: 2px;
+    padding-top: 2px;
 }
 
 .traktContainer p img {
-	position: relative;
-	top: -2px;
+    position: relative;
+    top: -2px;
 }
 
 .traktContainer p, .traktContainer i {
-	white-space: nowrap;
-	font-size: 12px;
-	overflow: hidden;
+    white-space: nowrap;
+    font-size: 12px;
+    overflow: hidden;
 /*	text-shadow: 1px 1px 0px #000;*/
-	padding-left: 4px;
-	margin: 0;
+    padding-left: 4px;
+    margin: 0;
 }
 
 .traktContainer {
-	margin: 12px;
-	width: 188px;
-	background-color: #DFDACF;
-	border: 1px solid #111;
-	border-radius: 6px;
+    margin: 12px;
+    width: 188px;
+    background-color: #DFDACF;
+    border: 1px solid #111;
+    border-radius: 6px;
 }
 
 .trakt-image {
-	overflow: hidden;
-	height: 273px;
-	width: 186px;
-	border-top-left-radius: 5px;
-	border-top-right-radius: 5px;
-	border-bottom: 1px solid #111;
+    overflow: hidden;
+    height: 273px;
+    width: 186px;
+    border-top-left-radius: 5px;
+    border-top-right-radius: 5px;
+    border-bottom: 1px solid #111;
 }
 
 /* =======================================================================
@@ -971,10 +971,10 @@ home_postprocess.mako
 ========================================================================== */
 
 #postProcess {
-	width: 800px;
-	padding-top: 10px;
-	margin-right: auto;
-	margin-left: auto;
+    width: 800px;
+    padding-top: 10px;
+    margin-right: auto;
+    margin-left: auto;
 }
 
 /* =======================================================================
@@ -982,139 +982,139 @@ displayShow.mako
 ========================================================================== */
 
 #posterCol {
-	float: left;
-	margin-right: 10px;
-	margin-bottom: 20px;
+    float: left;
+    margin-right: 10px;
+    margin-bottom: 20px;
 }
 
 #showCol {
-	overflow: hidden;
-	margin-bottom: 20px;
+    overflow: hidden;
+    margin-bottom: 20px;
 }
 
 .navShow {
-	display: inline;
-	cursor: pointer;
+    display: inline;
+    cursor: pointer;
 }
 
 #prevShow,
 #nextShow,
 #topcontrol {
-	-webkit-filter: grayscale(100%);
-	filter: grayscale(100%);
-	filter: gray;
-	filter: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='0'><filter id='greyscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0' /></filter></svg>#greyscale");
+    -webkit-filter: grayscale(100%);
+    filter: grayscale(100%);
+    filter: gray;
+    filter: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='0'><filter id='greyscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0' /></filter></svg>#greyscale");
 }
 
 h1.title {
-	padding-bottom: 12px;
-	margin-bottom: 15px;
-	line-height: 30px;
-	text-align: left;
-	text-rendering: optimizelegibility;
-	border-bottom: 1px solid #888;
+    padding-bottom: 12px;
+    margin-bottom: 15px;
+    line-height: 30px;
+    text-align: left;
+    text-rendering: optimizelegibility;
+    border-bottom: 1px solid #888;
 }
 
 .displayspecials {
-	position: relative;
-	top: -24px;
+    position: relative;
+    top: -24px;
 }
 
 #showinfo {
-	cursor: default;
+    cursor: default;
 }
 
 #showinfo {
-	display: inline-block;
-	position: relative;
-	top: -3px;
+    display: inline-block;
+    position: relative;
+    top: -3px;
 }
 
 span.imdbstars {
-	display: inline-block;
-	vertical-align: top;
-	cursor: help;
-	margin-top: 4px;
+    display: inline-block;
+    vertical-align: top;
+    cursor: help;
+    margin-top: 4px;
 }
 
 span.imdbstars, span.imdbstars > * {
-	height: 12px;
-	background: url(../images/rating.png) 0 -12px repeat-x;
-	width: 120px;
-	display: inline-block;
-	vertical-align: top;
+    height: 12px;
+    background: url(../images/rating.png) 0 -12px repeat-x;
+    width: 120px;
+    display: inline-block;
+    vertical-align: top;
 }
 
 span.imdbstars > * {
-	background-position: 0 0;
-	max-width:120px;
+    background-position: 0 0;
+    max-width:120px;
 }
 
 ul.tags {
-	list-style-type: none;
-	position: relative;
-	top: -5px;
-	margin-left: -40px;
+    list-style-type: none;
+    position: relative;
+    top: -5px;
+    margin-left: -40px;
 }
 
 ul.tags li {
-	margin-right: 4px;
-	margin-bottom: 5px;
-	padding: 3px 4px 3px 25px;
-	background: url(../images/tag.png) no-repeat scroll 5px 4px #555;
-	border-radius: 3px;
-	border: 1px solid #111;
-	color: #FFF;
-	font: 14px/18px "Open Sans", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
-	text-shadow: 0px 1px rgba(0, 0, 0, 0.8);
-	float: left;
+    margin-right: 4px;
+    margin-bottom: 5px;
+    padding: 3px 4px 3px 25px;
+    background: url(../images/tag.png) no-repeat scroll 5px 4px #555;
+    border-radius: 3px;
+    border: 1px solid #111;
+    color: #FFF;
+    font: 14px/18px "Open Sans", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
+    text-shadow: 0px 1px rgba(0, 0, 0, 0.8);
+    float: left;
 }
 
 ul.tags li a{
-	color: #FFF;
+    color: #FFF;
 }
 
 .tvshowImg {
-	border: 1px solid #ccc;
-	border-radius: 5px;
-	height: 311px;
-	width: auto;
-	float: left;
+    border: 1px solid #ccc;
+    border-radius: 5px;
+    height: 311px;
+    width: auto;
+    float: left;
 }
 
 #summary {
-	padding: 10px;
-	background-color: #efefef;
-	border: 1px solid #dfdede;
-	width: 100%;
-	height: 250px;
-	overflow: auto;
-	cursor: default;
+    padding: 10px;
+    background-color: #efefef;
+    border: 1px solid #dfdede;
+    width: 100%;
+    height: 250px;
+    overflow: auto;
+    cursor: default;
 }
 
 .summaryTable {
-	max-width: 70%;
-	overflow: hidden;
+    max-width: 70%;
+    overflow: hidden;
 }
 
 #checkboxControls {
-	padding-top: 5px;
+    padding-top: 5px;
 }
 
 #checkboxControls span {
-	padding: 5px;
-	font-size: 13px;
-	font-weight: bold;
-	border-radius: 5px;
+    padding: 5px;
+    font-size: 13px;
+    font-weight: bold;
+    border-radius: 5px;
 }
 
 #checkboxControls label {
-	white-space: nowrap;
-	display: inline-block;
+    white-space: nowrap;
+    display: inline-block;
 }
 
 #checkboxControls input[type="checkbox"] {
-	vertical-align: -2px;
+    vertical-align: -2px;
 }
 
 .unaired {
@@ -1137,28 +1137,28 @@ ul.tags li a{
 }
 
 span.unaired {
-	color: #584b20;
-	border: 1px solid #584b20;
+    color: #584b20;
+    border: 1px solid #584b20;
 }
 span.skipped {
-	color: #1d5068;
-	border: 1px solid #1d5068;
+    color: #1d5068;
+    border: 1px solid #1d5068;
 }
 span.good {
-	color: #295730;
-	border: 1px solid #295730;
+    color: #295730;
+    border: 1px solid #295730;
 }
 span.qual {
-	color: #765100;
-	border: 1px solid #765100;
+    color: #765100;
+    border: 1px solid #765100;
 }
 span.wanted {
-	color: #890000;
-	border: 1px solid #890000;
+    color: #890000;
+    border: 1px solid #890000;
 }
 span.snatched {
-	color: #652164;
-	border: 1px solid #652164;
+    color: #652164;
+    border: 1px solid #652164;
 }
 
 span.unaired b,
@@ -1167,154 +1167,154 @@ span.good b,
 span.qual b,
 span.wanted b,
 span.snatched b {
-	color: #000000;
-	font-weight: 800;
+    color: #000000;
+    font-weight: 800;
 }
 
 .plotInfo {
-	cursor: help;
-	float: right;
-	position: relative;
-	top: 2px;
+    cursor: help;
+    float: right;
+    position: relative;
+    top: 2px;
 }
 
 .plotInfoNone {
-	cursor: help;
-	float: right;
-	position: relative;
-	top: 2px;
-	opacity: 0.4;
+    cursor: help;
+    float: right;
+    position: relative;
+    top: 2px;
+    opacity: 0.4;
 }
 
 .displayShowTable {
-	table-layout: auto;
-	width: 100%;
-	border-collapse: collapse;
-	border-spacing: 0;
-	text-align: center;
-	border: none;
-	empty-cells: show;
-	color: #000 !important;
+    table-layout: auto;
+    width: 100%;
+    border-collapse: collapse;
+    border-spacing: 0;
+    text-align: center;
+    border: none;
+    empty-cells: show;
+    color: #000 !important;
 }
 
 .displayShowTable.display_show {
-	clear:both
+    clear:both
 }
 
 .displayShowTable th.row-seasonheader {
-	border: none !important;
-	background-color: #222 !important;
-	color: #fff !important;
-	padding-top: 15px !important;
-	text-align: left !important;
+    border: none !important;
+    background-color: #222 !important;
+    color: #fff !important;
+    padding-top: 15px !important;
+    text-align: left !important;
 }
 
 .displayShowTable td.col-search {
-	text-align: center;
+    text-align: center;
 }
 
 .sickbeardTable {
-	table-layout: auto;
-	width: 100%;
-	border-collapse: collapse;
-	border-spacing: 0;
-	text-align: center;
-	border: none;
-	empty-cells: show;
+    table-layout: auto;
+    width: 100%;
+    border-collapse: collapse;
+    border-spacing: 0;
+    text-align: center;
+    border: none;
+    empty-cells: show;
 }
 
 .sickbeardTable.display_show {
-	clear:both
+    clear:both
 }
 
 .sickbeardTable th{
-	color: #fff;
-	text-align: center;
-	background-color: #333;
-	white-space: nowrap;
+    color: #fff;
+    text-align: center;
+    background-color: #333;
+    white-space: nowrap;
 }
 
 .sickbeardTable th,
 .sickbeardTable td {
-	border-top: 1px solid #fff;
-	border-left: 1px solid #fff;
-	padding: 4px;
+    border-top: 1px solid #fff;
+    border-left: 1px solid #fff;
+    padding: 4px;
 }
 
 th.row-seasonheader {
-	border: none;
-	background-color: #fff;
-	color: #000;
-	padding-top: 15px;
-	text-align: left;
+    border: none;
+    background-color: #fff;
+    color: #000;
+    padding-top: 15px;
+    text-align: left;
 }
 
 tr.seasonheader {
-	padding-bottom: 5px;
-	padding-top: 10px;
-	text-align: left;
-	border: none;
-	color: #fff;
+    padding-bottom: 5px;
+    padding-top: 10px;
+    text-align: left;
+    border: none;
+    color: #fff;
 }
 
 th.col-checkbox,
 td.col-checkbox {
-	width: 30px;
-	border-left: none;
-	text-align: center;
+    width: 30px;
+    border-left: none;
+    text-align: center;
 }
 
 th.col-checkbox input[type="checkbox"],
 td.col-checkbox input[type="checkbox"] {
-	vertical-align: -2px;
+    vertical-align: -2px;
 }
 
 th.col-metadata,
 td.col-metadata {
-	width: 28px;
+    width: 28px;
 }
 
 th.col-ep,
 td.col-ep {
-	width: 50px;
-	white-space: nowrap;
+    width: 50px;
+    white-space: nowrap;
 }
 
 th.col-airdate,
 td.col-airdate {
-	width: 86px;
-	white-space: nowrap;
+    width: 86px;
+    white-space: nowrap;
 }
 
 th.col-name,
 td.col-name {
-	min-width: 100px;
+    min-width: 100px;
 }
 
 td.col-name {
-	text-align: left;
+    text-align: left;
 }
 
 th.col-subtitles,
 td.col-subtitles {
-	width: 150px;
-	text-align: center;
+    width: 150px;
+    text-align: center;
 }
 
 th.col-status,
 td.col-status {
-	width: 210px;
-	text-align: center;
+    width: 230px;
+    text-align: center;
 }
 
 th.col-quality,
 td.col-quality {
-	width: 110px;
+    width: 110px;
 }
 
 th.col-legend,
 td.col-legend {
-	width: 80px;
+    width: 80px;
 }
 
 th.col-search,
@@ -1323,22 +1323,22 @@ td.col-search {
 }
 
 .showLegend {
-	padding-right: 6px;
-	padding-bottom: 1px;
-	width: 150px;
+    padding-right: 6px;
+    padding-bottom: 1px;
+    width: 150px;
 }
 
 .input-scene {
-	height: 20px;
-	line-height: 1.5;
-	border-radius: 3px;
+    height: 20px;
+    line-height: 1.5;
+    border-radius: 3px;
 }
 
 #editShow {
-	width: 700px;
-	padding-top: 10px;
-	margin-right: auto;
-	margin-left: auto;
+    width: 700px;
+    padding-top: 10px;
+    margin-right: auto;
+    margin-left: auto;
 }
 
 /* =======================================================================
@@ -1346,193 +1346,193 @@ comingEpisodes.mako
 ========================================================================== */
 
 .sort_data {
-	display: none;
+    display: none;
 }
 
 .key {
-	margin-bottom: 20px;
+    margin-bottom: 20px;
 }
 
 .listing-key {
-	padding: 5px;
-	font-size: 13px;
-	font-weight: bold;
-	border-radius: 5px;
+    padding: 5px;
+    font-size: 13px;
+    font-weight: bold;
+    border-radius: 5px;
 }
 
 .listing-default {
-	background-color: #f5f1e4;
+    background-color: #f5f1e4;
 }
 
 .listing-current {
-	background-color: #dfd;
+    background-color: #dfd;
 }
 
 .listing-overdue {
-	background-color: #fdd;
+    background-color: #fdd;
 }
 
 .listing-toofar {
-	background-color: #bedeed;
+    background-color: #bedeed;
 }
 
 span.listing-default {
-	color: #826f30;
-	border: 1px solid #826f30;
+    color: #826f30;
+    border: 1px solid #826f30;
 }
 
 span.listing-current {
-	color: #295730;
-	border: 1px solid #295730;
+    color: #295730;
+    border: 1px solid #295730;
 }
 
 span.listing-overdue {
-	color: #890000;
-	border: 1px solid #890000;
+    color: #890000;
+    border: 1px solid #890000;
 }
 
 span.listing-toofar {
-	color: #1d5068;
-	border: 1px solid #1d5068;
+    color: #1d5068;
+    border: 1px solid #1d5068;
 }
 
 h2.day, h2.network {
-	margin: 10px 0;
-	font-size: 24px;
-	line-height: 36px;
-	font-weight: bold;
-	letter-spacing: 1px;
-	color: #FFF;
-	text-align: center;
-	text-shadow: -1px -1px 0px rgba(0, 0, 0, 0.3);
-	background-color: #333;
+    margin: 10px 0;
+    font-size: 24px;
+    line-height: 36px;
+    font-weight: bold;
+    letter-spacing: 1px;
+    color: #FFF;
+    text-align: center;
+    text-shadow: -1px -1px 0px rgba(0, 0, 0, 0.3);
+    background-color: #333;
 }
 
 .tvshowDiv {
-	display: block;
-	clear: both;
-	border: 1px solid #ccc;
-	margin: auto;
-	padding: 0px;
-	text-align: left;
-	width: 750px;
-	border-radius: 5px;
-	background: #fff;
-	cursor: default;
-	overflow: hidden;
+    display: block;
+    clear: both;
+    border: 1px solid #ccc;
+    margin: auto;
+    padding: 0px;
+    text-align: left;
+    width: 750px;
+    border-radius: 5px;
+    background: #fff;
+    cursor: default;
+    overflow: hidden;
 }
 
 .tvshowDiv a:hover {
-	color: #428BCA;
+    color: #428BCA;
 }
 
 .tvshowDiv a, .tvshowDiv a:link, .tvshowDiv a:visited, .tvshowDiv a:hover  {
-	text-decoration: none;
-	background: none;
+    text-decoration: none;
+    background: none;
 }
 
 .tvshowTitle a {
-	color: #000000;
-	float: left;
-	line-height: 1.4em;
-	font-size: 1.4em;
-	text-shadow: -1px -1px 0 #FFF;
+    color: #000000;
+    float: left;
+    line-height: 1.4em;
+    font-size: 1.4em;
+    text-shadow: -1px -1px 0 #FFF;
 }
 
 .tvshowTitleIcons {
-	float: right;
-	padding: 3px 5px;
+    float: right;
+    padding: 3px 5px;
 }
 
 .tvshowDiv td {
-	padding: 5px 10px;
+    padding: 5px 10px;
 }
 
 .tvshowDiv td.next_episode {
-	width: 100%;
-	height: 90%;
-	border-bottom: 1px solid #ccc;
-	vertical-align: top;
-	color: #000;
+    width: 100%;
+    height: 90%;
+    border-bottom: 1px solid #ccc;
+    vertical-align: top;
+    color: #000;
 }
 
 .bannerThumb {
-	vertical-align: top;
-	height: auto;
-	width: 748px;
-	border-bottom: 1px solid #ccc;
+    vertical-align: top;
+    height: auto;
+    width: 748px;
+    border-bottom: 1px solid #ccc;
 }
 
 .posterThumb {
-	vertical-align: top;
-	height: auto;
-	width: 180px;
-	border-right: 1px solid #ccc;
+    vertical-align: top;
+    height: auto;
+    width: 180px;
+    border-right: 1px solid #ccc;
 }
 
 .ep_listing {
-	width: auto;
-	border: 1px solid #ccc;
-	margin-bottom: 10px;
-	padding: 10px;
+    width: auto;
+    border: 1px solid #ccc;
+    margin-bottom: 10px;
+    padding: 10px;
 }
 
 .ep_summary {
-	margin-left: 5px;
-	font-style: italic;
+    margin-left: 5px;
+    font-style: italic;
 }
 
 .ep_summaryTrigger {
-	cursor: pointer;
-	vertical-align: middle;
+    cursor: pointer;
+    vertical-align: middle;
 }
 
 .ep_summaryTriggerNone {
-	opacity: 0.4;
-	vertical-align: middle;
+    opacity: 0.4;
+    vertical-align: middle;
 }
 
 .calendarWrapper {
-	width:1000px;
-	margin:0 auto;
-	padding:0 3px
+    width:1000px;
+    margin:0 auto;
+    padding:0 3px
 }
 
 .calendarTable {
-	float:left;
-	width:142px !important;
-	white-space:nowrap;
-	table-layout:fixed !important;
+    float:left;
+    width:142px !important;
+    white-space:nowrap;
+    table-layout:fixed !important;
 }
 
 .calendarShow {
-	padding:0 !important
+    padding:0 !important
 }
 
 .calendarShow .poster {
-	padding-bottom:2px
+    padding-bottom:2px
 }
 
 .calendarShow .poster img {
-	width:142px;
-	height:auto
+    width:142px;
+    height:auto
 }
 
 .calendarShow .text {
-	padding:0 5px 10px 5px
+    padding:0 5px 10px 5px
 }
 
 .calendarShow .text .airtime,
 .calendarShow .text .episode-title {
-	overflow:hidden;
-	text-overflow:ellipsis;
-	display:block;
-	font-size:11px
+    overflow:hidden;
+    text-overflow:ellipsis;
+    display:block;
+    font-size:11px
 }
 
 .calendarShow .show-status {
-	padding:5px 10px 10px;
-	text-align:center
+    padding:5px 10px 10px;
+    text-align:center
 }
 
 /* =======================================================================
@@ -1540,180 +1540,180 @@ config*.mako
 ========================================================================== */
 
 #config-content {
-	display: block;
-	width: 960px;
-	padding: 0 0 40px;
-	margin: 0 auto;
-	clear: both;
-	text-align: left;
+    display: block;
+    width: 960px;
+    padding: 0 0 40px;
+    margin: 0 auto;
+    clear: both;
+    text-align: left;
 }
 
 .component-group {
-	padding: 15px 15px 25px;
-	border-bottom: 1px dotted #ccc;
-	min-height: 200px;
+    padding: 15px 15px 25px;
+    border-bottom: 1px dotted #ccc;
+    min-height: 200px;
 }
 
 .component-item {
-	border-bottom: 1px dotted #666;
-	min-height: 200px;
+    border-bottom: 1px dotted #666;
+    min-height: 200px;
 }
 
 .component-group-desc{
-	float: left;
-	width: 250px;
+    float: left;
+    width: 250px;
 }
 
 .component-group-desc h3{
-	margin-top: 5px;
+    margin-top: 5px;
 }
 
 .component-group-desc p {
-	width: 90%;
-	margin: 10px 0;
-	color: #666;
+    width: 90%;
+    margin: 10px 0;
+    color: #666;
 }
 
 #config div.field-pair {
-	padding: 12px 0px;
+    padding: 12px 0px;
 }
 
 #config div.field-pair select,
 #config div.field-pair input {
-	margin-right: 6px;
+    margin-right: 6px;
 }
 
 #config div.field-pair input {
-	float: left;
+    float: left;
 }
 
 #config .nocheck, #config div #customQuality, .metadataDiv {
-	padding-left: 20px;
+    padding-left: 20px;
 }
 
 #config span.component-title {
-	float: left;
-	width: 172px;
-	margin-right: 10px;
-	font-size: 13px;
-	font-weight: bold;
+    float: left;
+    width: 172px;
+    margin-right: 10px;
+    font-size: 13px;
+    font-weight: bold;
 }
 
 #config span.component-desc {
-	font-size: 12px;
-	font-weight: normal;
-	display:block;
-	width:475px;
-	margin-left:182px
+    font-size: 12px;
+    font-weight: normal;
+    display:block;
+    width:475px;
+    margin-left:182px
 }
 
 #config label.space-right {
-	margin-right:10px
+    margin-right:10px
 }
 
 #config .metadataDiv {
-	display: none;
+    display: none;
 }
 
 .component-group-save {
-	float: right;
-	padding-top: 10px;
+    float: right;
+    padding-top: 10px;
 }
 
 select .selected {
-	font-weight: 700;
+    font-weight: 700;
 }
 
 .jumbo {
-	font-size: 15px !important;
-	line-height: 24px;
+    font-size: 15px !important;
+    line-height: 24px;
 }
 
 .testNotification {
-	padding: 5px;
-	margin-bottom: 10px;
-	line-height: 20px;
-	border: 1px dotted #CCC;
+    padding: 5px;
+    margin-bottom: 10px;
+    line-height: 20px;
+    border: 1px dotted #CCC;
 }
 
 #providerOrderList {
-	width: 250px;
-	padding-left: 20px;
-	list-style-type: none;
+    width: 250px;
+    padding-left: 20px;
+    list-style-type: none;
 }
 
 #provider_order_list,
 #service_order_list {
-	width: 250px;
-	padding-left: 20px;
-	list-style-type: none;
+    width: 250px;
+    padding-left: 20px;
+    list-style-type: none;
 }
 
 #provider_order_list li,
 #service_order_list li {
-	padding: 5px;
-	margin: 5px 0;
-	font-size: 14px;
+    padding: 5px;
+    margin: 5px 0;
+    font-size: 14px;
 }
 
 #provider_order_list .ui-state-default.torrent-provider {
-	background-color: #FFFFFF !important;
+    background-color: #FFFFFF !important;
 }
 
 #provider_order_list .ui-state-default.nzb-provider {
-	background-color: #DDD !important;
+    background-color: #DDD !important;
 }
 
 #provider_order_list input,
 #service_order_list input {
-	margin: 0px 2px;
+    margin: 0px 2px;
 }
 
 #config .tip_scale label span.component-title {
-	width: 85px !important;
-	font-size: 12px !important;
-	margin-top: 2px !important;
+    width: 85px !important;
+    font-size: 12px !important;
+    margin-top: 2px !important;
 }
 
 #config .tip_scale label span.component-desc {
-	margin-left: 120px !important;
-	width: 220px !important;
+    margin-left: 120px !important;
+    width: 220px !important;
 }
 
 .infoTableHeader,
 .infoTableCell {
-	padding: 5px;
+    padding: 5px;
 }
 
 .infoTableSeperator {
-	border-top: 1px dotted #666666;
+    border-top: 1px dotted #666666;
 }
 
 [class^="icon16-"], [class*=" icon16-"] {
-	background-image: url("../images/glyphicons-config-black.png");
-	background-position: -40px 0;
-	background-repeat: no-repeat;
-	display: inline-block;
-	height: 16px;
-	line-height: 16px;
-	vertical-align: text-top;
-	width: 16px;
+    background-image: url("../images/glyphicons-config-black.png");
+    background-position: -40px 0;
+    background-repeat: no-repeat;
+    display: inline-block;
+    height: 16px;
+    line-height: 16px;
+    vertical-align: text-top;
+    width: 16px;
 }
 
 .icon16-github {
-	background-position: 0 0;
+    background-position: 0 0;
 }
 .icon16-mirc {
-	background-position: -20px 0;
+    background-position: -20px 0;
 }
 .icon16-sb {
-	background-position: -40px 0;
+    background-position: -40px 0;
 }
 .icon16-web {
-	background-position: -60px 0;
+    background-position: -60px 0;
 }
 .icon16-win {
-	background-position: -80px 0;
+    background-position: -80px 0;
 }
 
 /* =======================================================================
@@ -1721,42 +1721,42 @@ config_postProcessing.mako
 ========================================================================== */
 
 #config div.example {
-	padding: 10px; background-color: #efefef;
+    padding: 10px; background-color: #efefef;
 }
 
 .Key {
-	width: 100%;
-	padding: 6px;
-	font-size: 13px;
-	background-color: #f4f4f4;
-	border: 1px solid #ccc;
-	border-collapse: collapse;
-	border-spacing: 0;
+    width: 100%;
+    padding: 6px;
+    font-size: 13px;
+    background-color: #f4f4f4;
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    border-spacing: 0;
 }
 
 .Key th, .tableHeader {
-	padding: 3px 9px;
-	margin: 0;
-	color: #fff;
-	text-align: center;
-	background: none repeat scroll 0 0 #666;
+    padding: 3px 9px;
+    margin: 0;
+    color: #fff;
+    text-align: center;
+    background: none repeat scroll 0 0 #666;
 }
 
 .Key td {
-	padding: 1px 5px !important;
+    padding: 1px 5px !important;
 }
 
 .Key tr {
-	border-bottom: 1px solid #ccc;
+    border-bottom: 1px solid #ccc;
 }
 
 .Key tr.even {
-	background-color: #dfdede;
+    background-color: #dfdede;
 }
 
 .legend {
-	position: relative;
-	top: 2px;
+    position: relative;
+    top: 2px;
 }
 
 /* =======================================================================
@@ -1764,58 +1764,58 @@ config_notifications.mako
 ========================================================================== */
 
 div.metadata_options_wrapper {
-	float: left;
-	width: 190px;
+    float: left;
+    width: 190px;
 }
 
 div.metadata_example_wrapper {
-	float: right;
-	width: 325px;
+    float: right;
+    width: 325px;
 }
 
 div.metadata_options {
-	padding: 7px;
-	overflow: auto;
-	background: #f5f1e4;
-	border: 1px solid #ccc;
+    padding: 7px;
+    overflow: auto;
+    background: #f5f1e4;
+    border: 1px solid #ccc;
 }
 
 div.metadata_options label:hover {
-	color: #fff;
-	background-color: #57442b;
-	cursor: pointer;
+    color: #fff;
+    background-color: #57442b;
+    cursor: pointer;
 }
 
 div.metadata_options label {
-	display: block;
-	padding-left: 7px;
-	line-height: 20px;
-	color: #036;
+    display: block;
+    padding-left: 7px;
+    line-height: 20px;
+    color: #036;
 }
 
 div.metadata_example {
-	padding: 8px;
+    padding: 8px;
 }
 
 div.metadata_example label {
-	display: block;
-	line-height: 21px;
-	color: #000;
-	cursor: pointer;
+    display: block;
+    line-height: 21px;
+    color: #000;
+    cursor: pointer;
 }
 
 div.metadataDiv .disabled {
-	color: #ccc;
+    color: #ccc;
 }
 
 .notifier-icon {
-	float: left;
-	margin: 6px 4px 0px 0px;
+    float: left;
+    margin: 6px 4px 0px 0px;
 }
 
 .warning {
-	border-color: #F89406;
-	background: url("../images/warning16.png") no-repeat right 5px center #fff;
+    border-color: #F89406;
+    background: url("../images/warning16.png") no-repeat right 5px center #fff;
 }
 
 /* =======================================================================
@@ -1823,56 +1823,56 @@ manage*.mako
 ========================================================================== */
 
 .manageTable th {
-	white-space: normal;
-	line-height: 24px;
+    white-space: normal;
+    line-height: 24px;
 }
 
 .manageTable td.tableright {
-	text-align: left;
+    text-align: left;
 }
 
 td.tableright {
-	text-align: center;
+    text-align: center;
 }
 
 .optionWrapper {
-	width: 450px;
-	margin-left: auto;
-	margin-right: auto;
-	padding: 6px 12px;
+    width: 450px;
+    margin-left: auto;
+    margin-right: auto;
+    padding: 6px 12px;
 }
 
 .optionWrapper span.selectTitle {
-	float: left;
-	text-align: left;
-	vertical-align: middle;
-	width: 225px;
-	padding: 6px 0px;
+    float: left;
+    text-align: left;
+    vertical-align: middle;
+    width: 225px;
+    padding: 6px 0px;
 }
 
 .optionWrapper div.selectChoices {
-	float: left;
-	width: 175px;
-	margin-left: 25px;
+    float: left;
+    width: 175px;
+    margin-left: 25px;
 }
 
 .optionWrapper br {
-	clear: both;
+    clear: both;
 }
 
 .manageCustom {
-	text-align: center;
-	padding: 6px;
-	margin-left: 25px;
+    text-align: center;
+    padding: 6px;
+    margin-left: 25px;
 }
 
 .separator {
-	font-size: 90%;
-	color: #333333;
+    font-size: 90%;
+    color: #333333;
 }
 
 a.whitelink {
-	color: #fff;
+    color: #fff;
 }
 
 /* =======================================================================
@@ -1880,168 +1880,168 @@ Global
 ========================================================================== */
 
 span.path {
-	padding: 3px 6px;
-	color: #8b0000;
-	background-color: #f5f1e4;
+    padding: 3px 6px;
+    color: #8b0000;
+    background-color: #f5f1e4;
 }
 
 .align-left {
-	text-align: left;
+    text-align: left;
 }
 
 .h2footer {
-	margin: -45px 0 8px;
-	line-height: 18px;
+    margin: -45px 0 8px;
+    line-height: 18px;
 }
 
 span.quality {
-	font: 12px/13px "Open Sans", verdana, sans-serif;
-	background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25));
-	background-image:-moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25));
-	background-image:-o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25));
-	background-image:linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25));
-	-webkit-box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15);
-	box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15);
-	text-shadow: 0px 1px rgba(0, 0, 0, 0.8);
-	color: #FFFFFF;
-	display: inline-block;
-	padding: 2px 4px;
-	text-align: center;
-	vertical-align: baseline;
-	-webkit-border-radius: 4px;
-	-moz-border-radius: 4px;
-	border-radius: 4px;
+    font: 12px/13px "Open Sans", verdana, sans-serif;
+    background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25));
+    background-image:-moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25));
+    background-image:-o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25));
+    background-image:linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25));
+    -webkit-box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15);
+    box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15);
+    text-shadow: 0px 1px rgba(0, 0, 0, 0.8);
+    color: #FFFFFF;
+    display: inline-block;
+    padding: 2px 4px;
+    text-align: center;
+    vertical-align: baseline;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    border-radius: 4px;
 }
 
 span.any-hd {
-	background-color: #2672b6;
-	background: repeating-linear-gradient(
-		-45deg,
-		#2672b6,
-		#2672b6 10px,
-		#5b990d 10px,
-		#5b990d 20px
-	);
+    background-color: #2672b6;
+    background: repeating-linear-gradient(
+        -45deg,
+        #2672b6,
+        #2672b6 10px,
+        #5b990d 10px,
+        #5b990d 20px
+    );
 }
 
 span.Custom {
-	background-color: #621993;
+    background-color: #621993;
 }
 
 span.HD {
-	background-color: #2672B6;
+    background-color: #2672B6;
 }
 
 span.HDTV {
-	background-color: #2672B6;
+    background-color: #2672B6;
 }
 
 span.HD720p {
-	background-color: #5b990d;
+    background-color: #5b990d;
 }
 
 span.HD1080p {
-	background-color: #2672B6;
+    background-color: #2672B6;
 }
 
 span.RawHD {
-	background-color: #cd7300;
+    background-color: #cd7300;
 }
 
 span.RawHDTV {
-	background-color: #cd7300;
+    background-color: #cd7300;
 }
 
 span.SD {
-	background-color: #BE2625;
+    background-color: #BE2625;
 }
 
 span.SDTV {
-	background-color: #BE2625;
+    background-color: #BE2625;
 }
 
 span.SDDVD {
-	background-color: #BE2625;
+    background-color: #BE2625;
 }
 
 span.Any {
-	background-color: #666;
+    background-color: #666;
 }
 
 span.Unknown {
-	background-color: #999;
+    background-color: #999;
 }
 
 span.Proper {
-	background-color: #3F7F00;
+    background-color: #3F7F00;
 }
 
 span.false {
-	color: #993333;
-	/* red */
+    color: #993333;
+    /* red */
 }
 
 span.true {
-	color: #669966;
-	/* green */
+    color: #669966;
+    /* green */
 }
 
 option.flag {
-	padding-left: 35px;
-	background-repeat: no-repeat;
-	background-position: 10px 50%;
+    padding-left: 35px;
+    background-repeat: no-repeat;
+    background-position: 10px 50%;
 }
 
 /* Anime section for editShow */
 .bwlWrapper {
-	height:auto;
-	margin: 0 auto;
+    height:auto;
+    margin: 0 auto;
 }
 
 #Anime {
-	clear: both;
-	overflow-x: hidden;
-	overflow-y: hidden;
-	font-size: 14px;
+    clear: both;
+    overflow-x: hidden;
+    overflow-y: hidden;
+    font-size: 14px;
 }
 
 #Anime div.component-group-desc {
-	float: left;
-	width: 165px;
+    float: left;
+    width: 165px;
 }
 
 #Anime div.component-group-desc p {
-	margin-bottom: 0.4em;
-	margin-left: 0;
-	margin-right: 0;
-	margin-top: 0.4em;
-	width: 95%;
+    margin-bottom: 0.4em;
+    margin-left: 0;
+    margin-right: 0;
+    margin-top: 0.4em;
+    width: 95%;
 }
 
 div.blackwhitelist{
-	float:left;
-	text-align: center;
+    float:left;
+    text-align: center;
 }
 
 div.blackwhitelist input {
-	margin: 5px 0px;
+    margin: 5px 0px;
 }
 
 div.blackwhitelist.pool select{
-	width: 230px;
+    width: 230px;
 }
 
 div.blackwhitelist.white select, div.blackwhitelist.black select {
-	width: 150px;
+    width: 150px;
 }
 
 div.blackwhitelist span {
-	display: block;
-	text-align: center;
+    display: block;
+    text-align: center;
 }
 
 div.blackwhitelist.anidb, div.blackwhitelist.manual {
-	margin: 7px 0px;
+    margin: 7px 0px;
 }
 
 /* =======================================================================
@@ -2049,97 +2049,97 @@ bootstrap Overrides
 ========================================================================== */
 
 body {
-	padding-top: 60px;
-	overflow-y: scroll;
-	font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-	color: #000;
+    padding-top: 60px;
+    overflow-y: scroll;
+    font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+    color: #000;
 }
 
 html * {
-	outline: 0 !important;
+    outline: 0 !important;
 }
 
 input[type="checkbox"] {
-	margin: 2px 0px 0px;
-	line-height: normal;
+    margin: 2px 0px 0px;
+    line-height: normal;
 }
 
 input[type="radio"] {
-	margin: 2px 0px 0px;
-	line-height: normal;
+    margin: 2px 0px 0px;
+    line-height: normal;
 }
 
 input, textarea, select, .uneditable-input {
-	width: auto;
-	color: #000;
+    width: auto;
+    color: #000;
 }
 
 .container-fluid {
-	margin-left: 10px;
-	margin-right: 10px;
+    margin-left: 10px;
+    margin-right: 10px;
 }
 
 .navbar-brand {
-	padding: 0px;
+    padding: 0px;
 }
 
 /* navbar styling */
 .navbar-default .navbar-brand {
-	color: #ffffff;
+    color: #ffffff;
 }
 
 .navbar-default .navbar-brand:hover,
 .navbar-default .navbar-brand:focus {
-	color: #ffffff;
-	background-color: transparent;
+    color: #ffffff;
+    background-color: transparent;
 }
 
 .navbar-default .navbar-text {
-	color: #dddddd;
+    color: #dddddd;
 }
 
 .navbar-default .navbar-nav > li > a {
-	color: #dddddd;
+    color: #dddddd;
 }
 
 .navbar-default .navbar-nav > li > a:hover,
 .navbar-default .navbar-nav > li > a:focus {
-	color: #ffffff;
-	background-color: transparent;
+    color: #ffffff;
+    background-color: transparent;
 }
 
 .navbar-default .navbar-nav > .active > a,
 .navbar-default .navbar-nav > .active > a:hover,
 .navbar-default .navbar-nav > .active > a:focus {
-	color: #ffffff;
-	background-color: #333333;
+    color: #ffffff;
+    background-color: #333333;
 }
 
 .navbar-default .navbar-nav > .disabled > a,
 .navbar-default .navbar-nav > .disabled > a:hover,
 .navbar-default .navbar-nav > .disabled > a:focus {
-	color: #cccccc;
-	background-color: transparent;
+    color: #cccccc;
+    background-color: transparent;
 }
 
 .navbar-default .navbar-toggle {
-	border-color: #cccccc;
+    border-color: #cccccc;
 }
 
 .navbar-default .navbar-toggle:hover,
 .navbar-default .navbar-toggle:focus {
-	background-color: #333333;
+    background-color: #333333;
 }
 
 .navbar-default .navbar-toggle .icon-bar {
-	background-color: #333333;
+    background-color: #333333;
 }
 
 .navbar-default .navbar-nav > .open > a,
 .navbar-default .navbar-nav > .open > a:hover,
 .navbar-default .navbar-nav > .open > a:focus {
-	background-color: #333333;
-	color: #ffffff;
+    background-color: #333333;
+    color: #ffffff;
 }
 
 @media (max-width: 767px) {
@@ -2166,92 +2166,92 @@ input, textarea, select, .uneditable-input {
 }
 
 .navbar-default .navbar-link {
-	color: #dddddd;
+    color: #dddddd;
 }
 
 .navbar-default .navbar-link:hover {
-	color: #ffffff;
+    color: #ffffff;
 }
 
 .navbar-default .btn-link {
-	color: #98978b;
+    color: #98978b;
 }
 
 .navbar-default .btn-link:hover,
 .navbar-default .btn-link:focus {
-	color: #dddddd;
+    color: #dddddd;
 }
 
 .navbar-default .btn-link[disabled]:hover,
 fieldset[disabled] .navbar-default .btn-link:hover,
 .navbar-default .btn-link[disabled]:focus,
 fieldset[disabled] .navbar-default .btn-link:focus {
-	color: #cccccc;
+    color: #cccccc;
 }
 
 .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
-	color: #262626;
-	text-decoration: none;
-	background-color: #F5F5F5;
+    color: #262626;
+    text-decoration: none;
+    background-color: #F5F5F5;
 }
 
 .dropdown-menu > li > a {
-	padding: 4px 36px 4px 20px;
+    padding: 4px 36px 4px 20px;
 }
 
 .dropdown-menu {
-	background-color: #F5F1E4;
-	border: 1px solid rgba(0, 0, 0, 0.15);
-	box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176);
+    background-color: #F5F1E4;
+    border: 1px solid rgba(0, 0, 0, 0.15);
+    box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176);
 }
 
 .form-control {
-	color: #000000;
+    color: #000000;
 }
 
 .form-control-inline {
-	min-width: 0;
-	width: auto;
-	display: inline;
+    min-width: 0;
+    width: auto;
+    display: inline;
 }
 
 .btn {
-	display: inline-block;
-	*display: inline;
-	padding: 4px 10px 4px;
-	margin-bottom: 0;
-	*margin-left: .3em;
-	font-size: 12px;
-	line-height: 16px;
-	*line-height: 20px;
-	color: #333333;
-	text-align: center;
-	text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-	vertical-align: middle;
-	cursor: pointer;
-	background-color: #f5f5f5;
-	*background-color: #e6e6e6;
-	background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
-	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-	background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-	background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-	background-image: linear-gradient(top, #ffffff, #e6e6e6);
-	background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-	background-repeat: repeat-x;
-	border: 1px solid #cccccc;
-	*border: 0;
-	border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-	border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-	border-bottom-color: #b3b3b3;
-	-webkit-border-radius: 4px;
-	-moz-border-radius: 4px;
-	border-radius: 4px;
-	filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-	filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-	*zoom: 1;
-	-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-	-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+    display: inline-block;
+    *display: inline;
+    padding: 4px 10px 4px;
+    margin-bottom: 0;
+    *margin-left: .3em;
+    font-size: 12px;
+    line-height: 16px;
+    *line-height: 20px;
+    color: #333333;
+    text-align: center;
+    text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+    vertical-align: middle;
+    cursor: pointer;
+    background-color: #f5f5f5;
+    *background-color: #e6e6e6;
+    background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+    background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+    background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+    background-image: linear-gradient(top, #ffffff, #e6e6e6);
+    background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+    background-repeat: repeat-x;
+    border: 1px solid #cccccc;
+    *border: 0;
+    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+    border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+    border-bottom-color: #b3b3b3;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    border-radius: 4px;
+    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
+    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+    *zoom: 1;
+    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+    -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
 }
 
 .btn:hover,
@@ -2259,88 +2259,88 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn.active,
 .btn.disabled,
 .btn[disabled] {
-	background-color: #e6e6e6;
-	*background-color: #d9d9d9;
+    background-color: #e6e6e6;
+    *background-color: #d9d9d9;
 }
 
 .btn:active,
 .btn.active {
-	background-color: #cccccc \9;
+    background-color: #cccccc \9;
 }
 
 .btn:first-child {
-	*margin-left: 0;
+    *margin-left: 0;
 }
 
 .btn:hover {
-	color: #333333;
-	text-decoration: none;
-	background-color: #e6e6e6;
-	*background-color: #d9d9d9;
-	background-position: 0 -15px;
-	-webkit-transition: background-position 0.1s linear;
-	-moz-transition: background-position 0.1s linear;
-	-ms-transition: background-position 0.1s linear;
-	-o-transition: background-position 0.1s linear;
-	transition: background-position 0.1s linear;
+    color: #333333;
+    text-decoration: none;
+    background-color: #e6e6e6;
+    *background-color: #d9d9d9;
+    background-position: 0 -15px;
+    -webkit-transition: background-position 0.1s linear;
+    -moz-transition: background-position 0.1s linear;
+    -ms-transition: background-position 0.1s linear;
+    -o-transition: background-position 0.1s linear;
+    transition: background-position 0.1s linear;
 }
 
 .btn:focus {
-	outline: thin dotted #333;
-	outline: 5px auto -webkit-focus-ring-color;
-	outline-offset: -2px;
+    outline: thin dotted #333;
+    outline: 5px auto -webkit-focus-ring-color;
+    outline-offset: -2px;
 }
 
 .btn.active,
 .btn:active {
-	background-color: #e6e6e6;
-	background-color: #d9d9d9 \9;
-	background-image: none;
-	outline: 0;
-	-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-	-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-	box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+    background-color: #e6e6e6;
+    background-color: #d9d9d9 \9;
+    background-image: none;
+    outline: 0;
+    -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+    -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
 }
 
 .btn.disabled,
 .btn[disabled] {
-	cursor: default;
-	background-color: #e6e6e6;
-	background-image: none;
-	opacity: 0.65;
-	filter: alpha(opacity=65);
-	-webkit-box-shadow: none;
-	-moz-box-shadow: none;
-	box-shadow: none;
+    cursor: default;
+    background-color: #e6e6e6;
+    background-image: none;
+    opacity: 0.65;
+    filter: alpha(opacity=65);
+    -webkit-box-shadow: none;
+    -moz-box-shadow: none;
+    box-shadow: none;
 }
 
 .btn-large {
-	padding: 9px 14px;
-	font-size: 15px;
-	line-height: normal;
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	border-radius: 5px;
+    padding: 9px 14px;
+    font-size: 15px;
+    line-height: normal;
+    -webkit-border-radius: 5px;
+    -moz-border-radius: 5px;
+    border-radius: 5px;
 }
 
 .btn-large [class^="icon-"] {
-	margin-top: 1px;
+    margin-top: 1px;
 }
 
 .btn-small {
-	padding: 5px 9px;
-	font-size: 11px;
-	line-height: 16px;
+    padding: 5px 9px;
+    font-size: 11px;
+    line-height: 16px;
 }
 
 .btn-small [class^="icon-"] {
-	margin-top: -1px;
+    margin-top: -1px;
 }
 
 .btn-mini {
-	padding: 2px 6px;
-	font-size: 11px;
-	line-height: 14px;
+    padding: 2px 6px;
+    font-size: 11px;
+    line-height: 14px;
 }
 
 .btn-primary,
@@ -2355,8 +2355,8 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn-info:hover,
 .btn-inverse,
 .btn-inverse:hover {
-	color: #ffffff;
-	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+    color: #ffffff;
+    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 }
 
 .btn-primary.active,
@@ -2365,23 +2365,23 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn-success.active,
 .btn-info.active,
 .btn-inverse.active {
-	color: rgba(255, 255, 255, 0.75);
+    color: rgba(255, 255, 255, 0.75);
 }
 
 .btn-primary {
-	background-color: #0074cc;
-	*background-color: #0055cc;
-	background-image: -ms-linear-gradient(top, #0088cc, #0055cc);
-	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));
-	background-image: -webkit-linear-gradient(top, #0088cc, #0055cc);
-	background-image: -o-linear-gradient(top, #0088cc, #0055cc);
-	background-image: -moz-linear-gradient(top, #0088cc, #0055cc);
-	background-image: linear-gradient(top, #0088cc, #0055cc);
-	background-repeat: repeat-x;
-	border-color: #0055cc #0055cc #003580;
-	border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-	filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);
-	filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+    background-color: #0074cc;
+    *background-color: #0055cc;
+    background-image: -ms-linear-gradient(top, #0088cc, #0055cc);
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));
+    background-image: -webkit-linear-gradient(top, #0088cc, #0055cc);
+    background-image: -o-linear-gradient(top, #0088cc, #0055cc);
+    background-image: -moz-linear-gradient(top, #0088cc, #0055cc);
+    background-image: linear-gradient(top, #0088cc, #0055cc);
+    background-repeat: repeat-x;
+    border-color: #0055cc #0055cc #003580;
+    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);
+    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
 }
 
 .btn-primary:hover,
@@ -2389,29 +2389,29 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn-primary.active,
 .btn-primary.disabled,
 .btn-primary[disabled] {
-	background-color: #0055cc;
-	*background-color: #004ab3;
+    background-color: #0055cc;
+    *background-color: #004ab3;
 }
 
 .btn-primary:active,
 .btn-primary.active {
-	background-color: #004099 \9;
+    background-color: #004099 \9;
 }
 
 .btn-warning {
-	background-color: #faa732;
-	*background-color: #f89406;
-	background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-	background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-	background-image: -o-linear-gradient(top, #fbb450, #f89406);
-	background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-	background-image: linear-gradient(top, #fbb450, #f89406);
-	background-repeat: repeat-x;
-	border-color: #f89406 #f89406 #ad6704;
-	border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-	filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-	filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+    background-color: #faa732;
+    *background-color: #f89406;
+    background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+    background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+    background-image: -o-linear-gradient(top, #fbb450, #f89406);
+    background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+    background-image: linear-gradient(top, #fbb450, #f89406);
+    background-repeat: repeat-x;
+    border-color: #f89406 #f89406 #ad6704;
+    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
 }
 
 .btn-warning:hover,
@@ -2419,29 +2419,29 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn-warning.active,
 .btn-warning.disabled,
 .btn-warning[disabled] {
-	background-color: #f89406;
-	*background-color: #df8505;
+    background-color: #f89406;
+    *background-color: #df8505;
 }
 
 .btn-warning:active,
 .btn-warning.active {
-	background-color: #c67605 \9;
+    background-color: #c67605 \9;
 }
 
 .btn-danger {
-	background-color: #da4f49;
-	*background-color: #bd362f;
-	background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
-	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-	background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-	background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-	background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-	background-image: linear-gradient(top, #ee5f5b, #bd362f);
-	background-repeat: repeat-x;
-	border-color: #bd362f #bd362f #802420;
-	border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-	filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
-	filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+    background-color: #da4f49;
+    *background-color: #bd362f;
+    background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+    background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+    background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+    background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+    background-image: linear-gradient(top, #ee5f5b, #bd362f);
+    background-repeat: repeat-x;
+    border-color: #bd362f #bd362f #802420;
+    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
+    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
 }
 
 .btn-danger:hover,
@@ -2449,29 +2449,29 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn-danger.active,
 .btn-danger.disabled,
 .btn-danger[disabled] {
-	background-color: #bd362f;
-	*background-color: #a9302a;
+    background-color: #bd362f;
+    *background-color: #a9302a;
 }
 
 .btn-danger:active,
 .btn-danger.active {
-	background-color: #942a25 \9;
+    background-color: #942a25 \9;
 }
 
 .btn-success {
-	background-color: #5bb75b;
-	*background-color: #51a351;
-	background-image: -ms-linear-gradient(top, #62c462, #51a351);
-	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-	background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-	background-image: -o-linear-gradient(top, #62c462, #51a351);
-	background-image: -moz-linear-gradient(top, #62c462, #51a351);
-	background-image: linear-gradient(top, #62c462, #51a351);
-	background-repeat: repeat-x;
-	border-color: #51a351 #51a351 #387038;
-	border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-	filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-	filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+    background-color: #5bb75b;
+    *background-color: #51a351;
+    background-image: -ms-linear-gradient(top, #62c462, #51a351);
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+    background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+    background-image: -o-linear-gradient(top, #62c462, #51a351);
+    background-image: -moz-linear-gradient(top, #62c462, #51a351);
+    background-image: linear-gradient(top, #62c462, #51a351);
+    background-repeat: repeat-x;
+    border-color: #51a351 #51a351 #387038;
+    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
+    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
 }
 
 .btn-success:hover,
@@ -2479,29 +2479,29 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn-success.active,
 .btn-success.disabled,
 .btn-success[disabled] {
-	background-color: #51a351;
-	*background-color: #499249;
+    background-color: #51a351;
+    *background-color: #499249;
 }
 
 .btn-success:active,
 .btn-success.active {
-	background-color: #408140 \9;
+    background-color: #408140 \9;
 }
 
 .btn-info {
-	background-color: #49afcd;
-	*background-color: #2f96b4;
-	background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-	background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-	background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-	background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-	background-image: linear-gradient(top, #5bc0de, #2f96b4);
-	background-repeat: repeat-x;
-	border-color: #2f96b4 #2f96b4 #1f6377;
-	border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-	filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-	filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+    background-color: #49afcd;
+    *background-color: #2f96b4;
+    background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+    background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+    background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+    background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+    background-image: linear-gradient(top, #5bc0de, #2f96b4);
+    background-repeat: repeat-x;
+    border-color: #2f96b4 #2f96b4 #1f6377;
+    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
+    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
 }
 
 .btn-info:hover,
@@ -2509,29 +2509,29 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn-info.active,
 .btn-info.disabled,
 .btn-info[disabled] {
-	background-color: #2f96b4;
-	*background-color: #2a85a0;
+    background-color: #2f96b4;
+    *background-color: #2a85a0;
 }
 
 .btn-info:active,
 .btn-info.active {
-	background-color: #24748c \9;
+    background-color: #24748c \9;
 }
 
 .btn-inverse {
-	background-color: #414141;
-	*background-color: #222222;
-	background-image: -ms-linear-gradient(top, #555555, #222222);
-	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));
-	background-image: -webkit-linear-gradient(top, #555555, #222222);
-	background-image: -o-linear-gradient(top, #555555, #222222);
-	background-image: -moz-linear-gradient(top, #555555, #222222);
-	background-image: linear-gradient(top, #555555, #222222);
-	background-repeat: repeat-x;
-	border-color: #222222 #222222 #000000;
-	border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-	filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);
-	filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+    background-color: #414141;
+    *background-color: #222222;
+    background-image: -ms-linear-gradient(top, #555555, #222222);
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));
+    background-image: -webkit-linear-gradient(top, #555555, #222222);
+    background-image: -o-linear-gradient(top, #555555, #222222);
+    background-image: -moz-linear-gradient(top, #555555, #222222);
+    background-image: linear-gradient(top, #555555, #222222);
+    background-repeat: repeat-x;
+    border-color: #222222 #222222 #000000;
+    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);
+    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
 }
 
 .btn-inverse:hover,
@@ -2539,46 +2539,46 @@ fieldset[disabled] .navbar-default .btn-link:focus {
 .btn-inverse.active,
 .btn-inverse.disabled,
 .btn-inverse[disabled] {
-	background-color: #222222;
-	*background-color: #151515;
+    background-color: #222222;
+    *background-color: #151515;
 }
 
 .btn-inverse:active,
 .btn-inverse.active {
-	background-color: #080808 \9;
+    background-color: #080808 \9;
 }
 
 .btn-xs {
-	padding: 1px 5px;
-	font-size: 12px;
-	line-height: 1.5;
-	border-radius: 3px;
+    padding: 1px 5px;
+    font-size: 12px;
+    line-height: 1.5;
+    border-radius: 3px;
 }
 
 @media(min-width:768px){
-	.navbar .nav > li > .dropdown-menu:after {
-		position: absolute;
-		top: -6px;
-		right: 12px;
-		display: inline-block;
-		border-right: 6px solid transparent;
-		border-bottom: 6px solid #F5F1E4;
-		border-left: 6px solid transparent;
-		content: "";
-	}
+    .navbar .nav > li > .dropdown-menu:after {
+        position: absolute;
+        top: -6px;
+        right: 12px;
+        display: inline-block;
+        border-right: 6px solid transparent;
+        border-bottom: 6px solid #F5F1E4;
+        border-left: 6px solid transparent;
+        content: "";
+    }
 }
 
 label {
-	font-weight: normal;
+    font-weight: normal;
 }
 
 pre {
-	border: 1px solid;
+    border: 1px solid;
 }
 
 .alert {
-	padding: 10px;
-	text-align: center;
+    padding: 10px;
+    text-align: center;
 }
 
 /* =======================================================================
@@ -2586,49 +2586,49 @@ input sizing (for config pages)
 ========================================================================== */
 
 #config select {
-	min-width: 0;
-	width: auto;
-	display: inline;
-	margin-top: -4px;
+    min-width: 0;
+    width: auto;
+    display: inline;
+    margin-top: -4px;
 }
 
 .btn-inline {
-	margin-top: -3px;
+    margin-top: -3px;
 }
 
 .input75 {
-	width: 75px;
-	margin-top: -4px;
+    width: 75px;
+    margin-top: -4px;
 }
 
 .input100 {
-	width: 100px;
-	margin-top: -4px;
+    width: 100px;
+    margin-top: -4px;
 }
 
 .input150 {
-	width: 150px;
-	margin-top: -4px;
+    width: 150px;
+    margin-top: -4px;
 }
 
 .input200 {
-	width: 200px;
-	margin-top: -4px;
+    width: 200px;
+    margin-top: -4px;
 }
 
 .input250 {
-	width: 250px;
-	margin-top: -4px;
+    width: 250px;
+    margin-top: -4px;
 }
 
 .input300 {
-	width: 300px;
-	margin-top: -4px;
+    width: 300px;
+    margin-top: -4px;
 }
 
 .input350 {
-	width: 350px;
-	margin-top: -4px;
+    width: 350px;
+    margin-top: -4px;
 }
 
 /* =======================================================================
@@ -2636,43 +2636,43 @@ browser.css overrides
 ========================================================================== */
 
 #fileBrowserDialog {
-	overflow-y: auto;
+    overflow-y: auto;
 }
 
 #fileBrowserDialog ul li a:hover {
-	color: #00f;
-	background: none;
+    color: #00f;
+    background: none;
 }
 
 #fileBrowserDialog h2 {
-	font-size: 20px;
+    font-size: 20px;
 }
 
 .ui-autocomplete {
-	max-height: 180px;
-	overflow-x: hidden;
-	overflow-y: auto;
+    max-height: 180px;
+    overflow-x: hidden;
+    overflow-y: auto;
 }
 
 /* IE6 hack since it doesn't support max-height */
 * html .ui-autocomplete {
-	height: 180px;
-	padding-right: 20px;
+    height: 180px;
+    padding-right: 20px;
 }
 
 .ui-autocomplete .ui-menu-item .ui-state-focus {
-	color: #fff;
-	background: none;
-	background-color: #0a246a;
+    color: #fff;
+    background: none;
+    background-color: #0a246a;
 }
 
 /* restore 1.8.x resize handle on dialog button pane */
 .ui-dialog .ui-resizable-se {
-	width: 14px;
-	height: 14px;
-	right: 3px;
-	bottom: 3px;
-	background-position: -80px -224px;
+    width: 14px;
+    height: 14px;
+    right: 3px;
+    bottom: 3px;
+    background-position: -80px -224px;
 }
 
 /* =======================================================================
@@ -2680,120 +2680,120 @@ formWizard.css
 ========================================================================== */
 
 fieldset.sectionwrap {
-	width: 800px;
-	padding: 5px;
-	text-align: left;
-	border-width: 0;
+    width: 800px;
+    padding: 5px;
+    text-align: left;
+    border-width: 0;
 }
 
 legend.legendStep {
-	color: #57442b;
-	margin-bottom: 0px;
+    color: #57442b;
+    margin-bottom: 0px;
 }
 
 div.stepsguide {
-	margin-bottom: 15px;
-	overflow: hidden;
-	text-align: left;
-	cursor: pointer;
+    margin-bottom: 15px;
+    overflow: hidden;
+    text-align: left;
+    cursor: pointer;
 }
 
 div.stepsguide .step {
-	float: left;
-	width: 33%;
-	font: bold 24px Arial;
+    float: left;
+    width: 33%;
+    font: bold 24px Arial;
 }
 
 div.stepsguide .step p {
-	margin: 12px 0;
-	border-bottom: 4px solid #57442b;
+    margin: 12px 0;
+    border-bottom: 4px solid #57442b;
 }
 
 div.stepsguide .disabledstep {
-	color: #c4c4c4;
+    color: #c4c4c4;
 }
 
 div.stepsguide .disabledstep p {
-	border-bottom: 4px solid #8a775e;
+    border-bottom: 4px solid #8a775e;
 }
 
 div.stepsguide .step .smalltext {
-	font-size: 13px;
-	font-weight: normal;
+    font-size: 13px;
+    font-weight: normal;
 }
 
 div.formpaginate {
-	width: 800px;
-	margin-top: 1em;
-	overflow: auto;
-	font-weight: bold;
-	text-align: center;
+    width: 800px;
+    margin-top: 1em;
+    overflow: auto;
+    font-weight: bold;
+    text-align: center;
 }
 
 div.formpaginate .prev, div.formpaginate .next {
-	padding: 3px 6px;
-	color: #fff;
-	cursor: hand;
-	cursor: pointer;
-	background: #57442b;
-	-webkit-border-radius: 6px;
-		-moz-border-radius: 6px;
-			border-radius: 6px;
+    padding: 3px 6px;
+    color: #fff;
+    cursor: hand;
+    cursor: pointer;
+    background: #57442b;
+    -webkit-border-radius: 6px;
+        -moz-border-radius: 6px;
+            border-radius: 6px;
 }
 
 .stepDiv {
-	padding: 15px 0;
+    padding: 15px 0;
 }
 
 #tabs .nocheck,
 .stepDiv .nocheck {
-	padding-left: 16px;
+    padding-left: 16px;
 }
 
 #tabs label span.component-title,
 .stepDiv label span.component-title {
-	padding-bottom: 10px;
-	float: left;
-	width: 172px;
-	margin-right: 10px;
-	font-size: 13px;
-	font-weight: bold;
+    padding-bottom: 10px;
+    float: left;
+    width: 172px;
+    margin-right: 10px;
+    font-size: 13px;
+    font-weight: bold;
 }
 
 #tabs label span.component-desc,
 .stepDiv label span.component-desc {
-	padding-bottom: 10px;
-	font-size: 12px;
-	font-weight: normal;
-	display: block;
-	width: 475px;
-	margin-left: 182px;
+    padding-bottom: 10px;
+    font-size: 12px;
+    font-weight: normal;
+    display: block;
+    width: 475px;
+    margin-left: 182px;
 }
 
 div.field-pair input {
-	margin-right: 6px;
-	float: left;
+    margin-right: 6px;
+    float: left;
 }
 
 /* step 3 related */
 #customQuality {
-	display: block;
-	padding: 10px 0;
-	overflow: hidden;
-	clear: both;
+    display: block;
+    padding: 10px 0;
+    overflow: hidden;
+    clear: both;
 }
 
 #customQualityWrapper div.component-group-desc {
-	float: left;
-	width: 172px;
-	margin-right: 10px;
+    float: left;
+    width: 172px;
+    margin-right: 10px;
 }
 
 #customQualityWrapper div.component-group-desc p {
-	width: 85%;
-	margin: .8em 0;
-	font-size: 1.13em;
-	color: #666;
+    width: 85%;
+    margin: .8em 0;
+    font-size: 1.13em;
+    color: #666;
 }
 
 /* =======================================================================
@@ -2801,51 +2801,51 @@ tablesorter.css
 ========================================================================== */
 
 .tablesorter {
-	width: 100%;
-	margin-right: auto;
-	margin-left: auto;
-	color: #000;
-	text-align: left;
-	background-color: #fff;
-	border-spacing: 0;
+    width: 100%;
+    margin-right: auto;
+    margin-left: auto;
+    color: #000;
+    text-align: left;
+    background-color: #fff;
+    border-spacing: 0;
 }
 
 .tablesorter th,
 .tablesorter td {
-	padding: 4px;
-	border-top: #fff 1px solid;
-	border-left: #fff 1px solid;
-	vertical-align: middle;
+    padding: 4px;
+    border-top: #fff 1px solid;
+    border-left: #fff 1px solid;
+    vertical-align: middle;
 }
 
 /* remove extra border from left edge */
 .tablesorter th:first-child,
 .tablesorter td:first-child {
-	border-left: none;
+    border-left: none;
 }
 
 .tablesorter th {
-	color: #fff;
-	text-align: center;
-	text-shadow: -1px -1px 0 rgba(0,0,0,0.3);
-	background-color: #333;
-	border-collapse: collapse;
-	font-weight: normal;
+    color: #fff;
+    text-align: center;
+    text-shadow: -1px -1px 0 rgba(0,0,0,0.3);
+    background-color: #333;
+    border-collapse: collapse;
+    font-weight: normal;
 }
 
 .tablesorter .tablesorter-header {
-	padding: 4px 18px 4px 18px;
-	cursor: pointer;
-	background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
-	background-position: center right;
-	background-repeat: no-repeat;
-	/* background-image: url(../images/tablesorter/bg.gif); */
+    padding: 4px 18px 4px 18px;
+    cursor: pointer;
+    background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
+    background-position: center right;
+    background-repeat: no-repeat;
+    /* background-image: url(../images/tablesorter/bg.gif); */
 }
 
 .tablesorter thead .tablesorter-headerDesc {
-	background-color: #555;
-	background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
-	/* background-image: url(../images/tablesorter/asc.gif); */
+    background-color: #555;
+    background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
+    /* background-image: url(../images/tablesorter/asc.gif); */
 }
 
 .tablesorter thead .tablesorter-headerAsc {
@@ -2855,66 +2855,66 @@ tablesorter.css
 }
 
 .tablesorter thead .sorter-false {
-	background-image: none;
-	padding: 4px;
-	cursor: default;
+    background-image: none;
+    padding: 4px;
+    cursor: default;
 }
 
 thead.tablesorter-stickyHeader {
-	border-top: 2px solid #fff;
-	border-bottom: 2px solid #fff;
+    border-top: 2px solid #fff;
+    border-bottom: 2px solid #fff;
 }
 
 /* Zebra Widget - row alternating colors */
 .tablesorter tr.odd, .sickbeardTable tr.odd {
-	background-color: #f5f1e4;
+    background-color: #f5f1e4;
 }
 
 .tablesorter tr.even, .sickbeardTable tr.even {
-	background-color: #dfdacf;
+    background-color: #dfdacf;
 }
 
 /* filter widget */
 .tablesorter .filtered {
-	display: none;
+    display: none;
 }
 
 .tablesorter input.tablesorter-filter {
-	width: 98%;
-	height: auto;
-	-webkit-box-sizing: border-box;
-		-moz-box-sizing: border-box;
-			box-sizing: border-box;
+    width: 98%;
+    height: auto;
+    -webkit-box-sizing: border-box;
+        -moz-box-sizing: border-box;
+            box-sizing: border-box;
 }
 
 .tablesorter tr.tablesorter-filter-row,
 .tablesorter tr.tablesorter-filter-row td {
-	text-align: center;
-	background: #eee;
-	border-bottom: 1px solid #ddd;
+    text-align: center;
+    background: #eee;
+    border-bottom: 1px solid #ddd;
 }
 
 /* optional disabled input styling */
 .tablesorter input.tablesorter-filter-row .disabled {
-	display: none;
+    display: none;
 }
 
 .tablesorter-header-inner {
-	padding: 0 2px;
-	text-align: center;
+    padding: 0 2px;
+    text-align: center;
 }
 
 .tablesorter tfoot tr {
-	color: #fff;
-	text-align: center;
-	text-shadow: -1px -1px 0 rgba(0,0,0,0.3);
-	background-color: #333;
-	border-collapse: collapse;
+    color: #fff;
+    text-align: center;
+    text-shadow: -1px -1px 0 rgba(0,0,0,0.3);
+    background-color: #333;
+    border-collapse: collapse;
 }
 
 .tablesorter tfoot a {
-	color:#fff;
-	text-decoration: none;
+    color:#fff;
+    text-decoration: none;
 }
 
 /* =======================================================================
@@ -2922,138 +2922,138 @@ token-input.css
 ========================================================================== */
 
 ul.token-input-list {
-	overflow: hidden;
-	height: auto !important;
-	height: 1%;
-	width: 273px;
-	border: 1px solid #ccc;
-	cursor: text;
-	font-size: 10px;
-	font-family: Verdana;
-	z-index: 999;
-	margin: 0;
-	padding: 0 0 1px 0;
-	background-color: #fff;
-	list-style-type: none;
+    overflow: hidden;
+    height: auto !important;
+    height: 1%;
+    width: 273px;
+    border: 1px solid #ccc;
+    cursor: text;
+    font-size: 10px;
+    font-family: Verdana;
+    z-index: 999;
+    margin: 0;
+    padding: 0 0 1px 0;
+    background-color: #fff;
+    list-style-type: none;
 /*    clear: left; */
-	border-top-left-radius: 3px;
-	border-top-right-radius: 3px;
-	border-bottom-left-radius: 3px;
-	border-bottom-right-radius: 3px;
+    border-top-left-radius: 3px;
+    border-top-right-radius: 3px;
+    border-bottom-left-radius: 3px;
+    border-bottom-right-radius: 3px;
 }
 
 ul.token-input-list li {
-	list-style-type: none;
+    list-style-type: none;
 }
 
 ul.token-input-list li input {
-	border: 0;
-	padding: 3px 4px;
-	background-color: white;
+    border: 0;
+    padding: 3px 4px;
+    background-color: white;
 /*    -webkit-appearance: caret; */
 }
 
 li.token-input-token {
-	overflow: hidden;
-	height: auto !important;
-	height: 1%;
-	margin: 3px;
-	padding: 3px 5px 0 5px;
-	background-color: #d0efa0;
-	color: #000;
-	font-weight: bold;
-	cursor: default;
-	display: block;
+    overflow: hidden;
+    height: auto !important;
+    height: 1%;
+    margin: 3px;
+    padding: 3px 5px 0 5px;
+    background-color: #d0efa0;
+    color: #000;
+    font-weight: bold;
+    cursor: default;
+    display: block;
 }
 
 li.token-input-token img {
-	padding-top: 7px;
-	padding-right: 4px;
-	float: left;
+    padding-top: 7px;
+    padding-right: 4px;
+    float: left;
 }
 
 li.token-input-token input {
-	padding-top: 2px !important;
-	padding-right: 4px !important;
-	float: left;
+    padding-top: 2px !important;
+    padding-right: 4px !important;
+    float: left;
 }
 
 li.token-input-token p {
-	float: left;
-	padding: 0;
-	margin: 0;
-	line-height: 2.0 !important;
+    float: left;
+    padding: 0;
+    margin: 0;
+    line-height: 2.0 !important;
 }
 
 li.token-input-token span {
-	float: right;
-	color: #777;
-	cursor: pointer;
+    float: right;
+    color: #777;
+    cursor: pointer;
 }
 
 li.token-input-selected-token {
-	background-color: #08844e;
-	color: #fff;
+    background-color: #08844e;
+    color: #fff;
 }
 
 li.token-input-selected-token span {
-	color: #bbb;
+    color: #bbb;
 }
 
 li.token-input-input-token input {
-	margin: 3px 3px 3px 3px !important;
+    margin: 3px 3px 3px 3px !important;
 }
 
 div.token-input-dropdown {
-	position: absolute;
-	width: 273px;
-	overflow: hidden;
-	border-left: 1px solid;
-	border-right: 1px solid;
-	border-bottom: 1px solid;
-	cursor: default;
-	font-size: 11px;
-	font-family: Verdana;
-	z-index: 1;
+    position: absolute;
+    width: 273px;
+    overflow: hidden;
+    border-left: 1px solid;
+    border-right: 1px solid;
+    border-bottom: 1px solid;
+    cursor: default;
+    font-size: 11px;
+    font-family: Verdana;
+    z-index: 1;
 }
 
 div.token-input-dropdown p {
-	margin: 0;
-	padding: 3px;
-	font-weight: bold;
-	color: #777;
+    margin: 0;
+    padding: 3px;
+    font-weight: bold;
+    color: #777;
 }
 
 div.token-input-dropdown ul {
-	margin: 0;
-	padding: 0;
+    margin: 0;
+    padding: 0;
 }
 
 div.token-input-dropdown ul li {
-	background-color: #fff;
-	padding: 3px;
-	list-style-type: none;
+    background-color: #fff;
+    padding: 3px;
+    list-style-type: none;
 }
 
 div.token-input-dropdown ul li.token-input-dropdown-item {
-	background-color: #fafafa;
+    background-color: #fafafa;
 }
 
 div.token-input-dropdown ul li.token-input-dropdown-item2 {
-	background-color: #fff;
+    background-color: #fff;
 }
 
 div.token-input-dropdown ul li em {
-	font-weight: bold;
-	font-style: normal;
+    font-weight: bold;
+    font-style: normal;
 }
 
 div.token-input-dropdown ul li.token-input-selected-dropdown-item {
-	background-color: #6196c2;
+    background-color: #6196c2;
 }
 
 span.token-input-delete-token {
-	margin: 0 1px;
+    margin: 0 1px;
 }
 
 .red-text {color:#d33}
@@ -3061,11 +3061,11 @@ span.token-input-delete-token {
 .nextline-block {display:block}
 
 .trakt-image {
-	display: block;
-	width: 100%;
-	height: 100%;
-	z-index: 0;
-	background-image: url(/images/poster-dark.jpg)
+    display: block;
+    width: 100%;
+    height: 100%;
+    z-index: 0;
+    background-image: url(/images/poster-dark.jpg)
 }
 
 /* =======================================================================
@@ -3073,94 +3073,94 @@ jquery.confirm.css
 ========================================================================== */
 
 #confirmOverlay{
-	width: 100%;
-	height: 100%;
-	position: fixed;
-	top: 0;
-	left: 0;
-	background: url('../images/bg.gif');
-	background: -moz-linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)) repeat-x rgba(0,0,0,0.5);
-	background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.5))) repeat-x rgba(0,0,0,0.5);
-	z-index: 100000;
+    width: 100%;
+    height: 100%;
+    position: fixed;
+    top: 0;
+    left: 0;
+    background: url('../images/bg.gif');
+    background: -moz-linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)) repeat-x rgba(0,0,0,0.5);
+    background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.5))) repeat-x rgba(0,0,0,0.5);
+    z-index: 100000;
 }
 
 #confirmBox{
-	background: #F5F1E4;
-	width: 460px;
-	position: fixed;
-	left: 50%;
-	top: 50%;
-	margin: -130px 0 0 -230px;
-	border: 1px solid #111;
-	box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.175);
+    background: #F5F1E4;
+    width: 460px;
+    position: fixed;
+    left: 50%;
+    top: 50%;
+    margin: -130px 0 0 -230px;
+    border: 1px solid #111;
+    box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.175);
 }
 
 #confirmBox h1,
 #confirmBox p{
-	padding: 6px 10px;
+    padding: 6px 10px;
 }
 
 #confirmBox h1 {
-	background-color: #333;
-	border-bottom: 1px solid #111;
-	color: #fff;
-	margin: 0;
-	font-size: 22px;
-	text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75);
+    background-color: #333;
+    border-bottom: 1px solid #111;
+    color: #fff;
+    margin: 0;
+    font-size: 22px;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75);
 }
 
 #confirmBox p {
-	padding-top: 20px;
-	color: #000;
-	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.75);
+    padding-top: 20px;
+    color: #000;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.75);
 }
 
 #confirmButtons {
-	padding: 15px 0;
-	text-align: center;
+    padding: 15px 0;
+    text-align: center;
 }
 
 #confirmBox .button {
-	margin-right: 15px;
-	padding: 2px 20px;
-	text-decoration: none;
-	display: inline-block;
-	color: #fff;
-	text-align:center;
-	text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75);
-	background-clip: padding-box;
-	border: 1px solid #111;
-	border-radius: 3px;
-	cursor: pointer;
-	-webkit-box-sizing: border-box;
-	-moz-box-sizing: border-box;
-	box-sizing: border-box;
-	background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25));
-	background-image: -moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25));
-	background-image: -o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25));
-	background-image: linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25));
-	-webkit-box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15);
-	box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15);
+    margin-right: 15px;
+    padding: 2px 20px;
+    text-decoration: none;
+    display: inline-block;
+    color: #fff;
+    text-align:center;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75);
+    background-clip: padding-box;
+    border: 1px solid #111;
+    border-radius: 3px;
+    cursor: pointer;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25));
+    background-image: -moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25));
+    background-image: -o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25));
+    background-image: linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25));
+    -webkit-box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15);
+    box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15);
 }
 
 #confirmBox .button:last-child {
-	margin-right:0;
+    margin-right:0;
 }
 
 #confirmBox .green {
-	background-color: #3F7636;
+    background-color: #3F7636;
 }
 
 #confirmBox .green:hover {
-	background-color: #48873E;
+    background-color: #48873E;
 }
 
 #confirmBox .red {
-	background-color: #8D2D2B;
+    background-color: #8D2D2B;
 }
 
 #confirmBox .red:hover {
-	background-color: #A13331;
+    background-color: #A13331;
 }
 
 /* =======================================================================
@@ -3168,12 +3168,12 @@ pnotify.css
 ========================================================================== */
 
 .ui-pnotify-sticker {
-	margin-top: -12px;
+    margin-top: -12px;
 }
 
 .ui-pnotify-closer {
-	margin-top: -12px;
-	margin-right: -10px;
+    margin-top: -12px;
+    margin-right: -10px;
 }
 
 /* =======================================================================
@@ -3181,7 +3181,7 @@ login.css
 ========================================================================== */
 
 .login {
-	display: block;
+    display: block;
 }
 
 .login h1 {
@@ -3251,43 +3251,43 @@ IMDB Popular
 ========================================================================== */
 
 .popularShow{
-	margin-bottom:30px;
+    margin-bottom:30px;
 }
 
 .popularShow h3{
-	padding:0px;
-	margin:0px;
-	display:inline-block;
-	margin-right:30px;
+    padding:0px;
+    margin:0px;
+    display:inline-block;
+    margin-right:30px;
 }
 
 .popularShow .left{
-	float:left;
-	width:100px;
+    float:left;
+    width:100px;
 }
 
 .popularShow .right{
-	float:left;
-	width:600px;
+    float:left;
+    width:600px;
 }
 
 .popularShow .year{
-	font-style:italic;
-	opacity:0.7;
+    font-style:italic;
+    opacity:0.7;
 }
 
 .popularShow .coverImage{
-	width:80%;
-	padding-left:20px;
-	margin-top:4px;
+    width:80%;
+    padding-left:20px;
+    margin-top:4px;
 }
 
 .popularShow .rating{
-	font-size:90%;
-	display:inline-block;
-	margin-left:0px;
+    font-size:90%;
+    display:inline-block;
+    margin-left:0px;
 }
 
 .popularShow p{
-	margin-bottom:0px;
+    margin-bottom:0px;
 }
diff --git a/gui/slick/images/network/rtp internacional.png b/gui/slick/images/network/rtp internacional.png
new file mode 100644
index 0000000000000000000000000000000000000000..ffc2db9a10bb4eb8c761adcef5f18f3828bc4a8e
Binary files /dev/null and b/gui/slick/images/network/rtp internacional.png differ
diff --git a/gui/slick/images/network/rtp madeira.png b/gui/slick/images/network/rtp madeira.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5c4bb7e8de00f5869c8147bf067f94dbfb5fb55
Binary files /dev/null and b/gui/slick/images/network/rtp madeira.png differ
diff --git a/gui/slick/images/network/rtp n.png b/gui/slick/images/network/rtp n.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6ea131131caac2b0e5b0abd9d982af2df782605
Binary files /dev/null and b/gui/slick/images/network/rtp n.png differ
diff --git a/gui/slick/images/network/rtp1.png b/gui/slick/images/network/rtp1.png
new file mode 100644
index 0000000000000000000000000000000000000000..923298feedb8695e30feb0b31166db580aa96834
Binary files /dev/null and b/gui/slick/images/network/rtp1.png differ
diff --git a/gui/slick/images/network/sic mulher.png b/gui/slick/images/network/sic mulher.png
new file mode 100644
index 0000000000000000000000000000000000000000..14e0f69ae0e084b85f039dec40970b990faf6cd4
Binary files /dev/null and b/gui/slick/images/network/sic mulher.png differ
diff --git a/gui/slick/images/network/sic radical.png b/gui/slick/images/network/sic radical.png
new file mode 100644
index 0000000000000000000000000000000000000000..092352ae34545ba78be78a34839682dd4723c444
Binary files /dev/null and b/gui/slick/images/network/sic radical.png differ
diff --git a/gui/slick/images/network/sic sempre gold.png b/gui/slick/images/network/sic sempre gold.png
new file mode 100644
index 0000000000000000000000000000000000000000..c53aa2de4d03ee6278e13ec20a9356406556e6e8
Binary files /dev/null and b/gui/slick/images/network/sic sempre gold.png differ
diff --git a/gui/slick/images/network/sic.png b/gui/slick/images/network/sic.png
new file mode 100644
index 0000000000000000000000000000000000000000..38af9aa5459b9e8e9bf9f9906f621f28042fe098
Binary files /dev/null and b/gui/slick/images/network/sic.png differ
diff --git a/gui/slick/images/network/tv cabo.png b/gui/slick/images/network/tv cabo.png
new file mode 100644
index 0000000000000000000000000000000000000000..fab4bb32abee7fc1074bd5cf689112fd4f29d519
Binary files /dev/null and b/gui/slick/images/network/tv cabo.png differ
diff --git a/gui/slick/js/new/config_backuprestore.js b/gui/slick/js/new/config_backuprestore.js
new file mode 100644
index 0000000000000000000000000000000000000000..774e7e39dda07a91c29487ea9768e0c3037fb740
--- /dev/null
+++ b/gui/slick/js/new/config_backuprestore.js
@@ -0,0 +1,5 @@
+$(document).load(function(){
+    $('#backupDir').fileBrowser({ title: 'Select backup folder to save to', key: 'backupPath' });
+    $('#backupFile').fileBrowser({ title: 'Select backup files to restore', key: 'backupFile', includeFiles: 1 });
+    $('#config-components').tabs();
+});
diff --git a/gui/slick/js/new/config_general.js b/gui/slick/js/new/config_general.js
new file mode 100644
index 0000000000000000000000000000000000000000..98b5a603ce851ec8a6643d9abd1c682cdcdb485a
--- /dev/null
+++ b/gui/slick/js/new/config_general.js
@@ -0,0 +1,18 @@
+$(document).ready(function(){
+    if ($("input[name='proxy_setting']").val().length === 0) {
+        $("input[id='proxy_indexers']").prop('checked', false);
+        $("label[for='proxy_indexers']").hide();
+    }
+
+    $("input[name='proxy_setting']").on('input', function() {
+        if($(this).val().length === 0) {
+            $("input[id='proxy_indexers']").prop('checked', false);
+            $("label[for='proxy_indexers']").hide();
+        } else {
+            $("label[for='proxy_indexers']").show();
+        }
+    });
+
+    $('#log_dir').fileBrowser({ title: 'Select log file folder location' });
+    $('#config-components').tabs();
+});
diff --git a/gui/slick/js/new/config_notifications.js b/gui/slick/js/new/config_notifications.js
new file mode 100644
index 0000000000000000000000000000000000000000..c9762b0429a8f53ef0ce419bba01c493bd9eedc1
--- /dev/null
+++ b/gui/slick/js/new/config_notifications.js
@@ -0,0 +1,3 @@
+$(document).load(function(){
+    $('#config-components').tabs();
+});
diff --git a/gui/slick/js/new/editShow.js b/gui/slick/js/new/editShow.js
new file mode 100644
index 0000000000000000000000000000000000000000..4742e1631810440b6259ee9fc1465711707aba30
--- /dev/null
+++ b/gui/slick/js/new/editShow.js
@@ -0,0 +1,56 @@
+var all_exceptions = [];
+
+$('#location').fileBrowser({ title: 'Select Show Location' });
+
+$('#submit').click(function(){
+    all_exceptions = [];
+
+    $("#exceptions_list option").each  ( function() {
+        all_exceptions.push( $(this).val() );
+    });
+
+    $("#exceptions_list").val(all_exceptions);
+
+    if($('meta[data-var="show.is_anime"]').data('content') === 'True') generate_bwlist();
+});
+$('#addSceneName').click(function() {
+    var scene_ex = $('#SceneName').val();
+    var option = $("<option>");
+    all_exceptions = [];
+
+    $("#exceptions_list option").each  ( function() {
+       all_exceptions.push($(this).val());
+    });
+
+    $('#SceneName').val('');
+
+    if ($.inArray(scene_ex, all_exceptions) > -1 || (scene_ex === '')) return;
+
+    $("#SceneException").show();
+
+    option.attr("value",scene_ex);
+    option.html(scene_ex);
+    return option.appendTo('#exceptions_list');
+});
+
+$('#removeSceneName').click(function() {
+    $('#exceptions_list option:selected').remove();
+
+    $(this).toggle_SceneException();
+});
+
+$.fn.toggle_SceneException = function() {
+    all_exceptions = [];
+
+    $("#exceptions_list option").each  ( function() {
+        all_exceptions.push( $(this).val() );
+    });
+
+    if (all_exceptions === ''){
+        $("#SceneException").hide();
+    } else {
+        $("#SceneException").show();
+    }
+};
+
+$(this).toggle_SceneException();
diff --git a/gui/slick/js/new/history.js b/gui/slick/js/new/history.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1fda4e62418a0715859b5f54162a9a73765bfc0
--- /dev/null
+++ b/gui/slick/js/new/history.js
@@ -0,0 +1,76 @@
+$.tablesorter.addParser({
+    id: 'cDate',
+    is: function(s) {
+        return false;
+    },
+    format: function(s) {
+        return s;
+    },
+    type: 'numeric'
+});
+
+$(document).ready(function(){
+    $("#historyTable:has(tbody tr)").tablesorter({
+        widgets: ['zebra', 'filter'],
+        sortList: [[0,1]],
+        textExtraction: (function(){
+            if($('meta[data-var="layout"]').data('content') == 'detailed'){
+                return {
+                    0: function(node) { return $(node).find("span").text().toLowerCase(); },
+                    4: function(node) { return $(node).find("span").text().toLowerCase(); }
+                };
+            } else {
+                return {
+                    0: function(node) { return $(node).find("span").text().toLowerCase(); },
+                    1: function(node) { return $(node).find("span").text().toLowerCase(); },
+                    2: function(node) { return $(node).attr("provider").toLowerCase(); },
+                    5: function(node) { return $(node).attr("quality").toLowerCase(); }
+                };
+            }
+        }),
+        headers: (function(){
+            if($('meta[data-var="layout"]').data('content') == 'detailed'){
+                return {
+                    0: { sorter: 'cDate' },
+                    4: { sorter: 'quality' }
+                };
+            } else {
+                return {
+                    0: { sorter: 'cDate' },
+                    4: { sorter: false },
+                    5: { sorter: 'quality' }
+                };
+            }
+        })
+    });
+
+    $('#history_limit').on('change', function() {
+        var url = sbRoot + '/history/?limit=' + $(this).val();
+        window.location.href = url;
+    });
+
+    if(['True', 1].indexOf($('meta[data-var="sickbeard.FUZZY_DATING"]').data('content')) >= 0){
+        $.timeago.settings.allowFuture = true;
+        $.timeago.settings.strings = {
+            prefixAgo: null,
+            prefixFromNow: 'In ',
+            suffixAgo: "ago",
+            suffixFromNow: "",
+            seconds: "less than a minute",
+            minute: "about a minute",
+            minutes: "%d minutes",
+            hour: "about an hour",
+            hours: "about %d hours",
+            day: "a day",
+            days: "%d days",
+            month: "about a month",
+            months: "%d months",
+            year: "about a year",
+            years: "%d years",
+            wordSeparator: " ",
+            numbers: []
+        };
+        $("[datetime]").timeago();
+    }
+
+});
diff --git a/gui/slick/js/new/home.js b/gui/slick/js/new/home.js
index a71dc84faca2a3a929846ee095d6b4313b329e1a..30ece0195542a13156644d703c2615992f33a54a 100644
--- a/gui/slick/js/new/home.js
+++ b/gui/slick/js/new/home.js
@@ -56,13 +56,18 @@ $.tablesorter.addParser({
 });
 
 $(document).ready(function(){
+    // Resets the tables sorting, needed as we only use a single call for both tables in tablesorter
+    $('.resetsorting').on('click', function(){
+        $('table').trigger('filterReset');
+    });
+
     // This needs to be refined to work a little faster.
     $('.progressbar').each(function(progressbar){
         var showId = $(this).data('show-id');
         var percentage = $(this).data('progress-percentage');
         var classToAdd = percentage == 100 ? 100 : percentage > 80 ? 80 : percentage > 60 ? 60 : percentage > 40 ? 40 : 20;
         $(this).progressbar({ value:  percentage });
-        $(this).data('progress-text') ? $(this).append('<div class="progressbarText" title="' + $(this).data('progress-tip') + '">' + $(this).data('progress-text') + '</div>') : '';
+        if($(this).data('progress-text')) $(this).append('<div class="progressbarText" title="' + $(this).data('progress-tip') + '">' + $(this).data('progress-text') + '</div>');
         $(this).find('.ui-progressbar-value').addClass('progress-' + classToAdd);
     });
 
@@ -71,7 +76,7 @@ $(document).ready(function(){
         $(this).remove();
     });
 
-    $("#showListTableShows:has(tbody tr)").tablesorter({
+    $("#showListTableShows:has(tbody tr), #showListTableAnime:has(tbody tr)").tablesorter({
         sortList: [[7,1],[2,0]],
         textExtraction: {
             0: function(node) { return $(node).find("span").text().toLowerCase(); },
@@ -136,112 +141,7 @@ $(document).ready(function(){
                                     }
                                 }
 
-                                var result = f.match(/(\d+)\s(-|to)\s(\d+)/i);
-                                if (result) {
-                                    if ((result[2] === "-") || (result[2] === "to")) {
-                                        if ((pct >= parseInt(result[1])) && (pct <= parseInt(result[3]))) {
-                                            test = true;
-                                        }
-                                    }
-                                }
-
-                                var result = f.match(/(=)?\s?(\d+)\s?(=)?/i);
-                                if (result) {
-                                    if ((result[1] === "=") || (result[3] === "=")) {
-                                        if (parseInt(result[2]) === pct) {
-                                            test = true;
-                                        }
-                                    }
-                                }
-
-                                if (!isNaN(parseFloat(f)) && isFinite(f)) {
-                                    if (parseInt(f) === pct) {
-                                        test = true;
-                                    }
-                                }
-                            }
-                            return test;
-                        }
-                    },
-                    filter_reset: '.resetshows',
-                    columnSelector_mediaquery: false
-                };
-            } else {
-                return {
-                    filter_columnFilters: false
-                };
-            }
-        }()),
-        sortStable: true,
-        sortAppend: [[2,0]]
-    });
-
-    $("#showListTableAnime:has(tbody tr)").tablesorter({
-        sortList: [[6,1],[2,0]],
-        textExtraction: {
-            0: function(node) { return $(node).find("span").text().toLowerCase(); },
-            1: function(node) { return $(node).find("span").text().toLowerCase(); },
-            3: function(node) { return $(node).find("span").prop("title").toLowerCase(); },
-            4: function(node) { return $(node).find("span").text().toLowerCase(); },
-            5: function(node) { return $(node).find("span:first").text(); },
-            6: function(node) { return $(node).find("img").attr("alt"); }
-        },
-        widgets: ['saveSort', 'zebra', 'stickyHeaders', 'filter', 'columnSelector'],
-        headers: (function(){
-            if($('meta[data-var="sickbeard.FILTER_ROW"]').data('content') == 'True'){
-                return {
-                    0: { sorter: 'isoDate' },
-                    1: { columnSelector: false },
-                    2: { sorter: 'loadingNames' },
-                    4: { sorter: 'quality' },
-                    5: { sorter: 'eps' },
-                    6: { filter : 'parsed' }
-                };
-            } else {
-                return {
-                    0: { sorter: 'isoDate' },
-                    1: { columnSelector: false },
-                    2: { sorter: 'loadingNames' },
-                    4: { sorter: 'quality' },
-                    5: { sorter: 'eps' }
-                };
-            }
-        }()),
-        widgetOptions: (function(){
-            if($('meta[data-var="sickbeard.FILTER_ROW"]').data('content') == 'True'){
-                return {
-                    filter_columnFilters: true,
-                    filter_hideFilters : true,
-                    filter_saveFilters : true,
-                    filter_functions : {
-                       5:function(e, n, f, i, r, c) {
-                            var test = false;
-                            var pct = Math.floor((n % 1) * 1000);
-                            if (f === '') {
-                               test = true;
-                            } else {
-                                var result = f.match(/(<|<=|>=|>)\s(\d+)/i);
-                                if (result) {
-                                    if (result[1] === "<") {
-                                        if (pct < parseInt(result[2])) {
-                                            test = true;
-                                        }
-                                    } else if (result[1] === "<=") {
-                                        if (pct <= parseInt(result[2])) {
-                                            test = true;
-                                        }
-                                    } else if (result[1] === ">=") {
-                                        if (pct >= parseInt(result[2])) {
-                                            test = true;
-                                        }
-                                    } else if (result[1] === ">") {
-                                        if (pct > parseInt(result[2])) {
-                                            test = true;
-                                        }
-                                    }
-                                }
-
-                                var result = f.match(/(\d+)\s(-|to)\s(\d+)/i);
+                                result = f.match(/(\d+)\s(-|to)\s(\d+)/i);
                                 if (result) {
                                     if ((result[2] === "-") || (result[2] === "to")) {
                                         if ((pct >= parseInt(result[1])) && (pct <= parseInt(result[3]))) {
@@ -250,7 +150,7 @@ $(document).ready(function(){
                                     }
                                 }
 
-                                var result = f.match(/(=)?\s?(\d+)\s?(=)?/i);
+                                result = f.match(/(=)?\s?(\d+)\s?(=)?/i);
                                 if (result) {
                                     if ((result[1] === "=") || (result[3] === "=")) {
                                         if (parseInt(result[2]) === pct) {
@@ -268,7 +168,6 @@ $(document).ready(function(){
                             return test;
                         }
                     },
-                    filter_reset: '.resetanime',
                     columnSelector_mediaquery: false
                 };
             } else {
diff --git a/gui/slick/js/new/home_trendingShows.js b/gui/slick/js/new/home_trendingShows.js
new file mode 100644
index 0000000000000000000000000000000000000000..b96203a3ce019dc4e0f1fec3848f1dddf9aa2c5b
--- /dev/null
+++ b/gui/slick/js/new/home_trendingShows.js
@@ -0,0 +1,55 @@
+$(document).ready(function(){
+    $( "#tabs" ).tabs({
+        collapsible: true,
+        // selected: ${('0', '-1')[bool(sickbeard.ROOT_DIRS)]}
+    });
+
+    // initialise combos for dirty page refreshes
+    $('#showsort').val('original');
+    $('#showsortdirection').val('asc');
+
+    $('#container').isotope({
+        itemSelector: '.trakt_show',
+        sortBy: 'original-order',
+        layoutMode: 'fitRows',
+        getSortData: {
+            name: function( itemElem ) {
+                var name = $(itemElem).attr('data-name') || '';
+                return ($('meta[data-var="sickbeard.SORT_ARTICLE"]').data('content') == 'False' ? name.replace(/^(The|A|An)\s/i, '') : name).toLowerCase();
+            },
+            rating: '[data-rating] parseInt',
+            votes: '[data-votes] parseInt',
+        }
+    });
+
+    $('#showsort').on( 'change', function() {
+        var sortCriteria;
+        switch (this.value) {
+            case 'original':
+                sortCriteria = 'original-order';
+                break;
+            case 'rating':
+                /* randomise, else the rating_votes can already
+                 * have sorted leaving this with nothing to do.
+                 */
+                $('#container').isotope({sortBy: 'random'});
+                sortCriteria = 'rating';
+                break;
+            case 'rating_votes':
+                sortCriteria = ['rating', 'votes'];
+                break;
+            case 'votes':
+                sortCriteria = 'votes';
+                break;
+            default:
+                sortCriteria = 'name';
+                break;
+        }
+        $('#container').isotope({sortBy: sortCriteria});
+    });
+
+    $('#showsortdirection').on( 'change', function() {
+        $('#container').isotope({sortAscending: ('asc' == this.value)});
+    });
+});
+window.setInterval('location.reload(true)', 600000); // Refresh every 10 minutes
diff --git a/gui/slick/js/new/manage.js b/gui/slick/js/new/manage.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a6754dd7f5c81187d6d4231161e2165b1d643e6
--- /dev/null
+++ b/gui/slick/js/new/manage.js
@@ -0,0 +1,56 @@
+$.tablesorter.addParser({
+    id: 'showNames',
+    is: function(s) {
+        return false;
+    },
+    format: function(s) {
+        return ($('meta[data-var="sickbeard.SORT_ARTICLE"]').data('content') == 'True' ? (s || '') : (s || '').replace(/^(The|A|An)\s/i,''));
+    },
+    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'
+});
+
+$(document).ready(function(){
+    $("#massUpdateTable:has(tbody tr)").tablesorter({
+        sortList: [[1,0]],
+        textExtraction: {
+            2: function(node) { return $(node).find("span").text().toLowerCase(); },
+            3: function(node) { return $(node).find("img").attr("alt"); },
+            4: function(node) { return $(node).find("img").attr("alt"); },
+            5: function(node) { return $(node).find("img").attr("alt"); },
+            6: function(node) { return $(node).find("img").attr("alt"); },
+            7: function(node) { return $(node).find("img").attr("alt"); },
+            8: function(node) { return $(node).find("img").attr("alt"); },
+        },
+        widgets: ['zebra'],
+        headers: {
+            0: { sorter: false},
+            1: { sorter: 'showNames'},
+            2: { sorter: 'quality'},
+            3: { sorter: 'sports'},
+            4: { sorter: 'scene'},
+            5: { sorter: 'anime'},
+            6: { sorter: 'flatfold'},
+            7: { sorter: 'paused'},
+            8: { sorter: 'subtitle'},
+            9: { sorter: 'default_ep_status'},
+           10: { sorter: 'status'},
+           11: { sorter: false},
+           12: { sorter: false},
+           13: { sorter: false},
+           14: { sorter: false},
+           15: { sorter: false},
+           16: { sorter: false},
+           17: { sorter: false}
+        }
+    });
+});
diff --git a/gui/slick/js/new/trendingShows.js b/gui/slick/js/new/trendingShows.js
new file mode 100644
index 0000000000000000000000000000000000000000..9b50dfc2da1c3eaa7c52d77059e43760dfb1baa8
--- /dev/null
+++ b/gui/slick/js/new/trendingShows.js
@@ -0,0 +1,57 @@
+$(document).ready(function(){
+    // initialise combos for dirty page refreshes
+    $('#showsort').val('original');
+    $('#showsortdirection').val('asc');
+
+    var $container = [$('#container')];
+    $.each($container, function (j) {
+        this.isotope({
+            itemSelector: '.trakt_show',
+            sortBy: 'original-order',
+            layoutMode: 'fitRows',
+            getSortData: {
+                name: function(itemElem) {
+                    var name = $(itemElem).attr('data-name') || '';
+                    return ($('meta[data-var="sickbeard.SORT_ARTICLE"]').data('content') == 'False' ? name.replace(/^(The|A|An)\s/i, '') : name).toLowerCase();
+                },
+                rating: '[data-rating] parseInt',
+                votes: '[data-votes] parseInt',
+            }
+        });
+    });
+
+    $('#showsort').on( 'change', function() {
+        var sortCriteria;
+        switch (this.value) {
+            case 'original':
+                sortCriteria = 'original-order';
+                break;
+            case 'rating':
+                /* randomise, else the rating_votes can already
+                 * have sorted leaving this with nothing to do.
+                 */
+                $('#container').isotope({sortBy: 'random'});
+                sortCriteria = 'rating';
+                break;
+            case 'rating_votes':
+                sortCriteria = ['rating', 'votes'];
+                break;
+            case 'votes':
+                sortCriteria = 'votes';
+                break;
+            default:
+                sortCriteria = 'name';
+                break;
+        }
+        $('#container').isotope({sortBy: sortCriteria});
+    });
+
+    $('#showsortdirection').on( 'change', function() {
+        $('#container').isotope({sortAscending: ('asc' == this.value)});
+    });
+});
+
+setTimeout(function () {
+    "use strict";
+    location.reload(true);
+}, 60000);
diff --git a/gui/slick/js/new/viewlogs.js b/gui/slick/js/new/viewlogs.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f94159940bd158ecfad41bf4f2edb2950161994
--- /dev/null
+++ b/gui/slick/js/new/viewlogs.js
@@ -0,0 +1,59 @@
+$(document).ready(function(){
+    $('#minLevel,#logFilter,#logSearch').on('change', function(){
+        if ($('#logSearch').val().length > 0){
+            $('#logSearch').prop('disabled', true);
+            $('#logFilter option[value="<NONE>"]').prop('selected', true);
+            $('#minLevel option[value=5]').prop('selected', true);
+        }
+        $('#minLevel').prop('disabled', true);
+        $('#logFilter').prop('disabled', true);
+        $('#logSearch').prop('disabled', true);
+        url = sbRoot + '/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val();
+        $.get(url, function(data){
+            history.pushState('data', '', url);
+            $('pre').html($(data).find('pre').html());
+            $('#minLevel').removeProp('disabled');
+            $('#logFilter').removeProp('disabled');
+            $('#logSearch').removeProp('disabled');
+        });
+    });
+
+    $(window).load(function(){
+        if ( $('#logSearch').val().length === 0 ) {
+            $('#minLevel').prop('disabled', false);
+            $('#logFilter').prop('disabled', false);
+            $('#logSearch').prop('disabled', false);
+        } else {
+            $('#minLevel').prop('disabled', true);
+            $('#logFilter').prop('disabled', true);
+            $('#logSearch').prop('disabled', false);
+        }
+
+        document.body.style.cursor='default';
+    });
+
+    $('#logSearch').on('keyup', function() {
+        if ( $('#logSearch').val().length === 0 ) {
+            $('#logFilter option[value=<NONE>]').prop('selected', true);
+            $('#minLevel option[value=20]').prop('selected', true);
+            $('#minLevel').prop('disabled', false);
+            $('#logFilter').prop('disabled', false);
+            url = sbRoot + '/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val();
+            $.get(url, function(data){
+                history.pushState('data', '', url);
+                $('pre').html($(data).find('pre').html());
+                $('#minLevel').removeProp('disabled');
+                $('#logFilter').removeProp('disabled');
+                $('#logSearch').removeProp('disabled');
+            });
+        } else {
+            $('#minLevel').prop('disabled', true);
+            $('#logFilter').prop('disabled', true);
+        }
+    });
+});
+
+setTimeout(function () {
+    "use strict";
+    location.reload(true);
+}, 60000);
diff --git a/gui/slick/views/comingEpisodes.mako b/gui/slick/views/comingEpisodes.mako
index fa1b562f193914fbfbab14f823b0cb448ef8107a..d462f4dba77eb0a5764c0d9cc9c62fc9f73bd446 100644
--- a/gui/slick/views/comingEpisodes.mako
+++ b/gui/slick/views/comingEpisodes.mako
@@ -79,7 +79,7 @@
 
     <thead>
         <tr>
-            <th>Airdate</th>
+            <th>Airdate (${('local', 'network')[sickbeard.TIMEZONE_DISPLAY == 'network']})</th>
             <th>Show</th>
             <th nowrap="nowrap">Next Ep</th>
             <th>Next Ep Name</th>
diff --git a/gui/slick/views/config_backuprestore.mako b/gui/slick/views/config_backuprestore.mako
index 793d998a860cf0176df2afa9aa5882da6baab5db..1813c2d6af58fa510d452891c47f7a41ff379bea 100644
--- a/gui/slick/views/config_backuprestore.mako
+++ b/gui/slick/views/config_backuprestore.mako
@@ -12,11 +12,7 @@
 %>
 <%block name="scripts">
 <script type="text/javascript" src="${sbRoot}/js/configBackupRestore.js?${sbPID}"></script>
-<script type="text/javascript" charset="utf-8">
-    $('#backupDir').fileBrowser({ title: 'Select backup folder to save to', key: 'backupPath' });
-    $('#backupFile').fileBrowser({ title: 'Select backup files to restore', key: 'backupFile', includeFiles: 1 });
-    $('#config-components').tabs();
-</script>
+<script type="text/javascript" src="${sbRoot}/js/new/config_backuprestore.js"></script>
 </%block>
 <%block name="content">
 % if not header is UNDEFINED:
diff --git a/gui/slick/views/config_general.mako b/gui/slick/views/config_general.mako
index 304dc291731a5b94667156ce63da5ce9e5d6ec5c..2ac46d862ca57dcc39f675d07220f5497674571a 100644
--- a/gui/slick/views/config_general.mako
+++ b/gui/slick/views/config_general.mako
@@ -15,26 +15,7 @@
 <script type="text/javascript" src="${sbRoot}/js/config.js?${sbPID}"></script>
 <script type="text/javascript" src="${sbRoot}/js/rootDirs.js?${sbPID}"></script>
 <script type="text/javascript" src="${sbRoot}/js/lib/bootstrap-formhelpers.min-2.3.0.js?${sbPID}"></script>
-<script type="text/javascript" charset="utf-8">
-    $(document).ready(function(){
-        if ($("input[name='proxy_setting']").val().length == 0) {
-            $("input[id='proxy_indexers']").prop('checked', false);
-            $("label[for='proxy_indexers']").hide();
-        }
-
-        $("input[name='proxy_setting']").on('input', function() {
-            if( $(this).val().length === 0 ) {
-                $("input[id='proxy_indexers']").prop('checked', false);
-                $("label[for='proxy_indexers']").hide();
-            } else {
-                $("label[for='proxy_indexers']").show();
-            }
-        });
-    });
-
-    $('#log_dir').fileBrowser({ title: 'Select log file folder location' });
-    $('#config-components').tabs();
-</script>
+<script type="text/javascript" src="${sbRoot}/js/new/config_general.js"></script>
 </%block>
 <%block name="content">
 % if not header is UNDEFINED:
@@ -95,10 +76,10 @@
                                 <span class="component-desc">
                                     <select id="default_page" name="default_page" class="form-control input-sm">
                                         <option value="news" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'news']}>News</option>
-                                        <option value="home" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'home']}>Home</option>
+                                        <option value="IRC" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'IRC']}>IRC</option>
+                                        <option value="home" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'home']}>Shows</option>
                                         <option value="comingEpisodes" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'comingEpisodes']}>Coming Episodes</option>
                                         <option value="history" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'history']}>History</option>
-                                        <option value="IRC" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'IRC']}>IRC</option>
                                     </select>
                                     <span>when launching SickRage interface</span>
                                 </span>
@@ -375,7 +356,12 @@
                                 <label for="network">
                                     <input type="radio" name="timezone_display" id="network" value="network" ${('', 'checked="checked"')[sickbeard.TIMEZONE_DISPLAY == "network"]} />Network
                                 </label>
-                                <div class="clear-left"><p>display dates and times in either your timezone or the shows network timezone</p></div>
+                                <div class="clear-left">
+                                <p>display dates and times in either your timezone or the shows network timezone</p>
+                                </div>
+                                <div class="clear-left">
+                                <p> <b>Note:</b> Use local timezone to start searching for episodes minutes after show ends (depends on your dailysearch frequency)</p>
+                                </div>
                             </span>
                         </div>
 
diff --git a/gui/slick/views/config_notifications.mako b/gui/slick/views/config_notifications.mako
index b0060b5ee35a8bbb0b6d5f255f9af82bcbbd0e85..f3e88e477ca0b5df6e599be1415abdf7d6471096 100644
--- a/gui/slick/views/config_notifications.mako
+++ b/gui/slick/views/config_notifications.mako
@@ -10,9 +10,7 @@
 <%block name="scripts">
 <script type="text/javascript" src="${sbRoot}/js/configNotifications.js?${sbPID}"></script>
 <script type="text/javascript" src="${sbRoot}/js/config.js?${sbPID}"></script>
-<script type="text/javascript" charset="utf-8">
-    $('#config-components').tabs();
-</script>
+<script type="text/javascript" src="${sbRoot}/js/new/config_notifications.js"></script>
 </%block>
 <%block name="content">
 % if not header is UNDEFINED:
diff --git a/gui/slick/views/editShow.mako b/gui/slick/views/editShow.mako
index ffce6c2fa4cddf409af077790c63d3b165ce45a0..09e724a965f9adfffbdb714c17add6da110a52e5 100644
--- a/gui/slick/views/editShow.mako
+++ b/gui/slick/views/editShow.mako
@@ -8,69 +8,13 @@
     from sickrage.helper import exceptions
     from sickbeard import scene_exceptions
 %>
+<%block name="metas">
+<meta data-var="show.is_anime" data-content="${show.is_anime}">
+</%block>
 <%block name="scripts">
 <script type="text/javascript" src="${sbRoot}/js/qualityChooser.js?${sbPID}"></script>
 <script type="text/javascript" src="${sbRoot}/js/lib/bootstrap-formhelpers.min-2.3.0.js?${sbPID}"></script>
-<script type="text/javascript" charset="utf-8">
-    var all_exceptions = new Array;
-
-    $('#location').fileBrowser({ title: 'Select Show Location' });
-
-    $('#submit').click(function(){
-        all_exceptions = []
-
-        $("#exceptions_list option").each  ( function() {
-            all_exceptions.push( $(this).val() );
-        });
-
-        $("#exceptions_list").val(all_exceptions);
-
-        % if show.is_anime:
-            generate_bwlist()
-        % endif
-        });
-    $('#addSceneName').click(function() {
-        var scene_ex = $('#SceneName').val()
-        var option = $("<option>")
-        all_exceptions = []
-
-        $("#exceptions_list option").each  ( function() {
-           all_exceptions.push( $(this).val() )
-        });
-
-        $('#SceneName').val('')
-
-        if ($.inArray(scene_ex, all_exceptions) > -1 || (scene_ex == ''))
-            return
-
-        $("#SceneException").show()
-
-        option.attr("value",scene_ex)
-        option.html(scene_ex)
-        return option.appendTo('#exceptions_list');
-    });
-
-    $('#removeSceneName').click(function() {
-        $('#exceptions_list option:selected').remove();
-
-        $(this).toggle_SceneException()
-    });
-
-   $.fn.toggle_SceneException = function() {
-        all_exceptions = []
-
-        $("#exceptions_list option").each  ( function() {
-            all_exceptions.push( $(this).val() );
-        });
-
-        if (all_exceptions == '')
-            $("#SceneException").hide();
-        else
-            $("#SceneException").show();
-    }
-
-    $(this).toggle_SceneException();
-</script>
+<script type="text/javascript" src="${sbRoot}/js/new/editShow.js"></script>
 % if show.is_anime:
     <script type="text/javascript" src="${sbRoot}/js/blackwhite.js?${sbPID}"></script>
 % endif
diff --git a/gui/slick/views/history.mako b/gui/slick/views/history.mako
index 875b93ac441b36c28a193e8dc0358c00458748c4..3a603206118cb526ab7a1a7985f490a2549814c4 100644
--- a/gui/slick/views/history.mako
+++ b/gui/slick/views/history.mako
@@ -25,64 +25,14 @@
 .sort_data {display:none;}
 </style>
 </%block>
+<%block name="metas">
+<meta data-var="sickbeard.FUZZY_DATING" data-content="${sickbeard.FUZZY_DATING}">
+<meta data-var="layout" data-content="${layout}">
+<meta data-var="fuzzydate" data-content="${fuzzydate}">
+</%block>
 <%block name="scripts">
-<script type="text/javascript">
-$.tablesorter.addParser({
-    id: 'cDate',
-    is: function(s) {
-        return false;
-    },
-    format: function(s) {
-        return s;
-    },
-    type: 'numeric'
-});
-
-$(document).ready(function(){
-    $("#historyTable:has(tbody tr)").tablesorter({
-        widgets: ['zebra', 'filter'],
-        sortList: [[0,1]],
-      textExtraction: {
-        % if ( layout == 'detailed'):
-            0: function(node) { return $(node).find("span").text().toLowerCase(); },
-            4: function(node) { return $(node).find("span").text().toLowerCase(); }
-        % else:
-            0: function(node) { return $(node).find("span").text().toLowerCase(); },
-            1: function(node) { return $(node).find("span").text().toLowerCase(); },
-            2: function(node) { return $(node).attr("provider").toLowerCase(); },
-            5: function(node) { return $(node).attr("quality").toLowerCase(); }
-        % endif
-      },
-        headers: {
-        % if ( layout == 'detailed'):
-          0: { sorter: 'cDate' },
-          4: { sorter: 'quality' }
-        % else:
-          0: { sorter: 'cDate' },
-          4: { sorter: false },
-          5: { sorter: 'quality' }
-        % endif
-      }
-
-    });
-    $('#history_limit').on('change', function() {
-        var url = '${sbRoot}/history/?limit=' + $(this).val()
-        window.location.href = url
-    });
-
-    % if sickbeard.FUZZY_DATING:
-    fuzzyMoment({
-        containerClass : '.${fuzzydate}',
-        dateHasTime : true,
-        dateFormat : '${sickbeard.DATE_PRESET}',
-        timeFormat : '${sickbeard.TIME_PRESET_W_SECONDS}',
-        trimZero : ${('false', 'true')[bool(sickbeard.TRIM_ZERO)]},
-        dtGlue : ', ',
-    });
-    % endif
-
-});
-</script>
+<script type="text/javascript" src="${sbRoot}/js/lib/jquery.timeago.js"></script>
+<script type="text/javascript" src="${sbRoot}/js/new/history.js"></script>
 </%block>
 <%block name="content">
 <%namespace file="/inc_defs.mako" import="renderQualityPill"/>
@@ -93,6 +43,9 @@ $(document).ready(function(){
 % endif
 <div class="h2footer pull-right"><b>Limit:</b>
     <select name="history_limit" id="history_limit" class="form-control form-control-inline input-sm">
+        <option value="10" ${('', 'selected="selected"')[limit == 10]}>10</option>
+        <option value="25" ${('', 'selected="selected"')[limit == 25]}>25</option>
+        <option value="50" ${('', 'selected="selected"')[limit == 50]}>50</option>
         <option value="100" ${('', 'selected="selected"')[limit == 100]}>100</option>
         <option value="250" ${('', 'selected="selected"')[limit == 250]}>250</option>
         <option value="500" ${('', 'selected="selected"')[limit == 500]}>500</option>
diff --git a/gui/slick/views/home.mako b/gui/slick/views/home.mako
index 9acb800665c78346dfbe8721bd371c2dbff60e80..b6d954ca0505e3420c88ed5a5d774acc4ed08c1a 100644
--- a/gui/slick/views/home.mako
+++ b/gui/slick/views/home.mako
@@ -40,7 +40,7 @@
 
     max_download_count = max_download_count * 100
 %>
-<%block name="scripts">
+<%block name="metas">
 <meta data-var="sickbeard.SORT_ARTICLE" data-content="${sickbeard.SORT_ARTICLE}">
 <meta data-var="sickbeard.FILTER_ROW" data-content="${sickbeard.FILTER_ROW}">
 <meta data-var="sickbeard.ANIME_SPLIT_HOME" data-content="${sickbeard.ANIME_SPLIT_HOME}">
@@ -53,6 +53,8 @@
 <meta data-var="max_download_count" data-content="${max_download_count}">
 <meta data-var="layout" data-content="${layout}">
 <meta data-var="fuzzydate" data-content="${fuzzydate}">
+</%block>
+<%block name="scripts">
 <script type="text/javascript" src="${sbRoot}/js/lib/jquery.timeago.js"></script>
 <script type="text/javascript" src="${sbRoot}/js/new/home.js"></script>
 </%block>
@@ -78,7 +80,7 @@
         % if layout != 'poster':
         Search:
             <input class="search form-control form-control-inline input-sm input200" type="search" data-column="2" placeholder="Search Show Name">
-            <button type="button" class="resetshows resetanime btn btn-inline">Reset Search</button>
+            <button type="button" class="resetsorting btn btn-inline">Reset Search</button>
         % endif
     </span>
 
diff --git a/gui/slick/views/home_popularShows.mako b/gui/slick/views/home_popularShows.mako
index d54a204a69697361e9b259f0e8c72b1af16329bf..81128fa81f018e69cb349a53f62922be50e6176a 100644
--- a/gui/slick/views/home_popularShows.mako
+++ b/gui/slick/views/home_popularShows.mako
@@ -1,6 +1,8 @@
 <%inherit file="/layouts/main.mako"/>
 <%!
     from sickbeard.helpers import anon_url
+    import sickbeard    
+    imdb_tt = [show.imdbid for show in sickbeard.showList if show.imdbid]
 %>
 <%block name="content">
 <h2>Popular Shows</h2>
@@ -27,8 +29,12 @@
 
                 <p>${cur_result['outline']}<span class="year"> - Released ${cur_result['year']}<span></p>
                 <span class="imdb_url"><a href="${anon_url(cur_result['imdb_url'])}">View on IMDB</a></span>&nbsp;&nbsp;|&nbsp;&nbsp;
+                % if cur_result['imdb_tt'] not in imdb_tt:
                 <span class="imdb_sickrage_search"><a href="${sbRoot}/home/addShows/newShow/?search_string=${cur_result['name']}">
                     Add Show</a></span>
+                % else:
+                <span> Already added </span>
+                % endif    
 
             </div>
             <br style="clear:both" />
diff --git a/gui/slick/views/home_trendingShows.mako b/gui/slick/views/home_trendingShows.mako
index d6aa8d55d5aa80798f429482d7e53a35fdf698da..da97bd52feed048ebae3069fb19829d283e941d2 100644
--- a/gui/slick/views/home_trendingShows.mako
+++ b/gui/slick/views/home_trendingShows.mako
@@ -8,73 +8,14 @@
     from sickbeard import sbdatetime
     from sickbeard.helpers import anon_url
 %>
+<%block name="metas">
+<meta data-var="sickbeard.SORT_ARTICLE" data-content="${sickbeard.SORT_ARTICLE}">
+</%block>
 <%block name="scripts">
 <script type="text/javascript" src="${sbRoot}/js/addTrendingShow.js?${sbPID}"></script>
 <script type="text/javascript" src="${sbRoot}/js/rootDirs.js?${sbPID}"></script>
 <script type="text/javascript" src="${sbRoot}/js/plotTooltip.js?${sbPID}"></script>
-<script type="text/javascript">
-$(document).ready(function(){
-    $( "#tabs" ).tabs({
-        collapsible: true,
-        selected: ${('0', '-1')[bool(sickbeard.ROOT_DIRS)]}
-    });
-
-    // initialise combos for dirty page refreshes
-    $('#showsort').val('original');
-    $('#showsortdirection').val('asc');
-
-    var $container = [$('#container')];
-    $.each($container, function (j) {
-        this.isotope({
-            itemSelector: '.trakt_show',
-            sortBy: 'original-order',
-            layoutMode: 'fitRows',
-            getSortData: {
-                name: function( itemElem ) {
-                    var name = $( itemElem ).attr('data-name') || '';
-% if not sickbeard.SORT_ARTICLE:
-                    name = name.replace(/^(The|A|An)\s/i, '');
-% endif
-                    return name.toLowerCase();
-                },
-                rating: '[data-rating] parseInt',
-                votes: '[data-votes] parseInt',
-            }
-        });
-    });
-
-    $('#showsort').on( 'change', function() {
-        var sortCriteria;
-        switch (this.value) {
-            case 'original':
-                sortCriteria = 'original-order'
-                break;
-            case 'rating':
-                /* randomise, else the rating_votes can already
-                 * have sorted leaving this with nothing to do.
-                 */
-                $('#container').isotope({sortBy: 'random'});
-                sortCriteria = 'rating';
-                break;
-            case 'rating_votes':
-                sortCriteria = ['rating', 'votes'];
-                break;
-            case 'votes':
-                sortCriteria = 'votes';
-                break;
-            default:
-                sortCriteria = 'name'
-                break;
-        }
-        $('#container').isotope({sortBy: sortCriteria});
-    });
-
-    $('#showsortdirection').on( 'change', function() {
-        $('#container').isotope({sortAscending: ('asc' == this.value)});
-    });
-});
-window.setInterval('location.reload(true)', 600000); // Refresh every 10 minutes
-</script>
+<script type="text/javascript" src="${sbRoot}/js/new/home_trendingShows.js"></script>
 </%block>
 <%block name="content">
 % if not header is UNDEFINED:
diff --git a/gui/slick/views/layouts/main.mako b/gui/slick/views/layouts/main.mako
index 5052f020324b5504447aa4ca21bcfc1d0cf4abf8..e7d3bc29b2b41634c14b67689ed04ab0043f6b18 100644
--- a/gui/slick/views/layouts/main.mako
+++ b/gui/slick/views/layouts/main.mako
@@ -1,7 +1,7 @@
 <%!
     import sickbeard
     import datetime
-    from sickbeard import db
+    from sickbeard import db, network_timezones
     from sickbeard.common import Quality, SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED
     from sickbeard.common import qualityPresets, qualityPresetStrings
     import calendar
@@ -280,7 +280,8 @@
                     Memory used: <span class="footerhighlight">${sickbeard.helpers.pretty_filesize(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss)}</span> |
                     % endif
                     Load time: <span class="footerhighlight">${"%.4f" % (time() - sbStartTime)}s</span> / Mako: <span class="footerhighlight">${"%.4f" % (time() - makoStartTime)}s</span> |
-                    Branch: <span class="footerhighlight">${sickbeard.BRANCH}</span>
+                    Branch: <span class="footerhighlight">${sickbeard.BRANCH}</span> |
+                    Now: <span class="footerhighlight">${datetime.datetime.now(network_timezones.sb_timezone)}</span>
                 </div>
             </div>
         </footer>
diff --git a/gui/slick/views/manage.mako b/gui/slick/views/manage.mako
index bf51d4b3a0a55177dcc4985c4fce700b9c2bebc6..8d9c213dc7fd902331e7d50e4952981981f4931a 100644
--- a/gui/slick/views/manage.mako
+++ b/gui/slick/views/manage.mako
@@ -6,68 +6,7 @@
 %>
 <%block name="scripts">
 <script type="text/javascript" src="${sbRoot}/js/lib/bootbox.min.js?${sbPID}"></script>
-<script type="text/javascript" charset="utf-8">
-$.tablesorter.addParser({
-    id: 'showNames',
-    is: function(s) {
-        return false;
-    },
-    format: function(s) {
-        % if not sickbeard.SORT_ARTICLE:
-            return (s || '').replace(/^(The|A|An)\s/i,'');
-        % else:
-            return (s || '');
-        % endif
-    },
-    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'
-});
-
-$(document).ready(function(){
-    $("#massUpdateTable:has(tbody tr)").tablesorter({
-        sortList: [[1,0]],
-        textExtraction: {
-            2: function(node) { return $(node).find("span").text().toLowerCase(); },
-            3: function(node) { return $(node).find("img").attr("alt"); },
-            4: function(node) { return $(node).find("img").attr("alt"); },
-            5: function(node) { return $(node).find("img").attr("alt"); },
-            6: function(node) { return $(node).find("img").attr("alt"); },
-            7: function(node) { return $(node).find("img").attr("alt"); },
-            8: function(node) { return $(node).find("img").attr("alt"); },
-        },
-        widgets: ['zebra'],
-        headers: {
-            0: { sorter: false},
-            1: { sorter: 'showNames'},
-            2: { sorter: 'quality'},
-            3: { sorter: 'sports'},
-            4: { sorter: 'scene'},
-            5: { sorter: 'anime'},
-            6: { sorter: 'flatfold'},
-            7: { sorter: 'paused'},
-            8: { sorter: 'subtitle'},
-            9: { sorter: 'default_ep_status'},
-           10: { sorter: 'status'},
-           11: { sorter: false},
-           12: { sorter: false},
-           13: { sorter: false},
-           14: { sorter: false},
-           15: { sorter: false},
-           16: { sorter: false},
-           17: { sorter: false}
-        }
-    });
-});
-</script>
+<script type="text/javascript" src="${sbRoot}/js/new/manage.js"></script>
 <script type="text/javascript" src="${sbRoot}/js/massUpdate.js?${sbPID}"></script>
 </%block>
 <%block name="content">
diff --git a/gui/slick/views/trendingShows.mako b/gui/slick/views/trendingShows.mako
index d953abca5648e85a390e4dd1f21c843c901b45d9..55c227204d4f1fa8380637d4804fe8b8b0a320ed 100644
--- a/gui/slick/views/trendingShows.mako
+++ b/gui/slick/views/trendingShows.mako
@@ -8,64 +8,11 @@
     from sickbeard import sbdatetime
     from sickbeard.helpers import anon_url
 %>
+<%block name="metas">
+<meta data-var="sickbeard.SORT_ARTICLE" data-content="${sickbeard.SORT_ARTICLE}">
+</%block>
 <%block name="scripts">
-<script type="text/javascript">
-$(document).ready(function(){
-    // initialise combos for dirty page refreshes
-    $('#showsort').val('original');
-    $('#showsortdirection').val('asc');
-
-    var $container = [$('#container')];
-    $.each($container, function (j) {
-        this.isotope({
-            itemSelector: '.trakt_show',
-            sortBy: 'original-order',
-            layoutMode: 'fitRows',
-            getSortData: {
-                name: function( itemElem ) {
-                    var name = $( itemElem ).attr('data-name') || '';
-% if not sickbeard.SORT_ARTICLE:
-                    name = name.replace(/^(The|A|An)\s/i, '');
-% endif
-                    return name.toLowerCase();
-                },
-                rating: '[data-rating] parseInt',
-                votes: '[data-votes] parseInt',
-            }
-        });
-    });
-
-    $('#showsort').on( 'change', function() {
-        var sortCriteria;
-        switch (this.value) {
-            case 'original':
-                sortCriteria = 'original-order'
-                break;
-            case 'rating':
-                /* randomise, else the rating_votes can already
-                 * have sorted leaving this with nothing to do.
-                 */
-                $('#container').isotope({sortBy: 'random'});
-                sortCriteria = 'rating';
-                break;
-            case 'rating_votes':
-                sortCriteria = ['rating', 'votes'];
-                break;
-            case 'votes':
-                sortCriteria = 'votes';
-                break;
-            default:
-                sortCriteria = 'name'
-                break;
-        }
-        $('#container').isotope({sortBy: sortCriteria});
-    });
-
-    $('#showsortdirection').on( 'change', function() {
-        $('#container').isotope({sortAscending: ('asc' == this.value)});
-    });
-});
-</script>
+<script type="text/javascript" src="${sbRoot}/js/new/trendingShows.js"></script>
 </%block>
 <%block name="content">
 <div id="container">
diff --git a/gui/slick/views/viewlogs.mako b/gui/slick/views/viewlogs.mako
index c9b955c6d18e88681873c355c31eebf7d19c85c1..7037ddcf8b5a17daba7f8b65d0c0205e70f0e34b 100644
--- a/gui/slick/views/viewlogs.mako
+++ b/gui/slick/views/viewlogs.mako
@@ -5,64 +5,7 @@
     from sickbeard.logger import reverseNames
 %>
 <%block name="scripts">
-<script type="text/javascript">
-$(document).ready(
-function(){
-    $('#minLevel,#logFilter,#logSearch').on('change', function(){
-        if ($('#logSearch').val().length > 0){
-            $('#logSearch').prop('disabled', true);
-            $('#logFilter option[value="<NONE>"]').prop('selected', true);
-            $('#minLevel option[value=5]').prop('selected', true);
-        }
-        $('#minLevel').prop('disabled', true);
-        $('#logFilter').prop('disabled', true);
-        $('#logSearch').prop('disabled', true);
-        url = '${sbRoot}/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val()
-        $.get(url, function(data){
-            history.pushState('data', '', url);
-            $('pre').html($(data).find('pre').html());
-            $('#minLevel').removeProp('disabled');
-            $('#logFilter').removeProp('disabled');
-            $('#logSearch').removeProp('disabled');
-        });
-    });
-
-    $(window).load(function(){
-        if ( $('#logSearch').val().length == 0 ) {
-            $('#minLevel').prop('disabled', false);
-            $('#logFilter').prop('disabled', false);
-            $('#logSearch').prop('disabled', false);
-        } else {
-            $('#minLevel').prop('disabled', true);
-            $('#logFilter').prop('disabled', true);
-            $('#logSearch').prop('disabled', false);
-        }
-
-        document.body.style.cursor='default';
-    });
-
-    $('#logSearch').on('keyup', function() {
-        if ( $('#logSearch').val().length == 0 ) {
-            $('#logFilter option[value=<NONE>]').prop('selected', true);
-            $('#minLevel option[value=20]').prop('selected', true);
-            $('#minLevel').prop('disabled', false);
-            $('#logFilter').prop('disabled', false);
-            url = '${sbRoot}/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val()
-            $.get(url, function(data){
-                history.pushState('data', '', url);
-                $('pre').html($(data).find('pre').html());
-                $('#minLevel').removeProp('disabled');
-                $('#logFilter').removeProp('disabled');
-                $('#logSearch').removeProp('disabled');
-            });
-        } else {
-            $('#minLevel').prop('disabled', true);
-            $('#logFilter').prop('disabled', true);
-        }
-    });
-});
-window.setInterval( "location.reload(true)", 600000); // Refresh every 10 minutes
-</script>
+<script type="text/javascript" src="${sbRoot}/js/new/viewlogs.js"></script>
 </%block>
 <%block name="content">
 % if not header is UNDEFINED:
diff --git a/sickbeard/dailysearcher.py b/sickbeard/dailysearcher.py
index db774959516f560504ef73f4a4aac88f8ea7897a..50304f68327556837d7fe793b8db3794b887dc9e 100644
--- a/sickbeard/dailysearcher.py
+++ b/sickbeard/dailysearcher.py
@@ -27,7 +27,7 @@ from sickbeard import logger
 from sickbeard import db
 from sickbeard import common
 from sickbeard import helpers
-from sickbeard import network_timezones
+from sickbeard import sbdatetime, network_timezones
 from sickrage.helper.exceptions import MultipleShowObjectsException
 
 
@@ -80,9 +80,12 @@ class DailySearcher():
                 continue
 
             try:
-                end_time = network_timezones.parse_date_time(sqlEp['airdate'], show.airs,
-                                                             show.network) + datetime.timedelta(
+                end_time = sbdatetime.sbdatetime.convert_to_setting(network_timezones.parse_date_time(sqlEp['airdate'], show.airs,
+                                                             show.network)) + datetime.timedelta(
                     minutes=helpers.tryInt(show.runtime, 60))
+                #Keep this for future debug
+                #logger.log(u"Show %s ends at %s and now it is %s. Runtime is %s and airs %s" % (show.name, end_time, curTime, show.runtime, show.airs),logger.DEBUG )
+
                 # filter out any episodes that haven't aried yet
                 if end_time > curTime:
                     continue
diff --git a/sickbeard/db.py b/sickbeard/db.py
index 5fa1fdff9ad245ed4afd2a2d53dbc39b6fa9acd1..eb81bd2dfcf5e2052475033fc9b9ae8f3257e7fa 100644
--- a/sickbeard/db.py
+++ b/sickbeard/db.py
@@ -264,13 +264,13 @@ class DBConnection(object):
 
         genParams = lambda myDict: [x + " = ?" for x in myDict.keys()]
 
-        query = "UPDATE " + tableName + " SET " + ", ".join(genParams(valueDict)) + " WHERE " + " AND ".join(
+        query = "UPDATE [" + tableName + "] SET " + ", ".join(genParams(valueDict)) + " WHERE " + " AND ".join(
             genParams(keyDict))
 
         self.action(query, valueDict.values() + keyDict.values())
 
         if self.connection.total_changes == changesBefore:
-            query = "INSERT INTO " + tableName + " (" + ", ".join(valueDict.keys() + keyDict.keys()) + ")" + \
+            query = "INSERT INTO [" + tableName + "] (" + ", ".join(valueDict.keys() + keyDict.keys()) + ")" + \
                     " VALUES (" + ", ".join(["?"] * len(valueDict.keys() + keyDict.keys())) + ")"
             self.action(query, valueDict.values() + keyDict.values())
 
@@ -281,7 +281,7 @@ class DBConnection(object):
         :param tableName: name of table
         :return: array of name/type info
         """
-        sqlResult = self.select("PRAGMA table_info(%s)" % tableName)
+        sqlResult = self.select("PRAGMA table_info(`%s`)" % tableName)
         columns = {}
         for column in sqlResult:
             columns[column['name']] = {'type': column['type']}
@@ -335,8 +335,8 @@ class DBConnection(object):
         :param type: Column type to add
         :param default: Default value for column
         """
-        self.action("ALTER TABLE %s ADD %s %s" % (table, column, type))
-        self.action("UPDATE %s SET %s = ?" % (table, column), (default,))
+        self.action("ALTER TABLE [%s] ADD %s %s" % (table, column, type))
+        self.action("UPDATE [%s] SET %s = ?" % (table, column), (default,))
 
 def sanityCheckDatabase(connection, sanity_check):
     sanity_check(connection).check()
@@ -431,8 +431,8 @@ class SchemaUpgrade(object):
         return column in self.connection.tableInfo(tableName)
 
     def addColumn(self, table, column, type="NUMERIC", default=0):
-        self.connection.action("ALTER TABLE %s ADD %s %s" % (table, column, type))
-        self.connection.action("UPDATE %s SET %s = ?" % (table, column), (default,))
+        self.connection.action("ALTER TABLE [%s] ADD %s %s" % (table, column, type))
+        self.connection.action("UPDATE [%s] SET %s = ?" % (table, column), (default,))
 
     def checkDBVersion(self):
         return self.connection.checkDBVersion()
diff --git a/sickbeard/imdbPopular.py b/sickbeard/imdbPopular.py
index a4a51c57ce33cb1bf98be94a4c643adade091fcd..3d09ec4b0b999080631489d3555dca4fc6819b7d 100644
--- a/sickbeard/imdbPopular.py
+++ b/sickbeard/imdbPopular.py
@@ -54,6 +54,7 @@ class imdbPopular:
             if td:
                 show['name'] = td.find("a").contents[0]
                 show['imdb_url'] = "http://www.imdb.com" + td.find("a")["href"]
+                show['imdb_tt'] =  show['imdb_url'][-10:][0:9]
                 show['year'] = td.find("span", {"class": "year_type"}).contents[0].split(" ")[0][1:]
 
                 rating_all = td.find("div", {"class": "user_rating"})
diff --git a/sickbeard/providers/btdigg.py b/sickbeard/providers/btdigg.py
index f0be007a4a5981b0117a8031d5227e570b987929..b608613f80904e7d11c4064bb72e9c00dec389f7 100644
--- a/sickbeard/providers/btdigg.py
+++ b/sickbeard/providers/btdigg.py
@@ -36,8 +36,12 @@ class BTDIGGProvider(generic.TorrentProvider):
 
         self.supportsBacklog = True
         self.public = True
-        self.url = 'https://api.btdigg.org/'
-
+        
+        self.urls = {'url': u'https://btdigg.org/',
+                     'api': u'https://api.btdigg.org/',
+                     }
+        self.url = self.urls['url']
+        
         self.cache = BTDiggCache(self)
 
     def isEnabled(self):
@@ -131,7 +135,7 @@ class BTDIGGProvider(generic.TorrentProvider):
         logger.log("Performing Search: {0}".format(search_params))
 
         # TODO: Make order configurable. 0: weight, 1: req, 2: added, 3: size, 4: files, 5
-        searchUrl = self.url + "api/private-341ada3245790954/s02?q=" + search_params + "&p=0&order=1"
+        searchUrl = self.urls['api'] + "api/private-341ada3245790954/s02?q=" + search_params + "&p=0&order=1"
 
         jdata = self.getURL(searchUrl, json=True)
         if not jdata:
diff --git a/sickbeard/providers/btn.py b/sickbeard/providers/btn.py
index 70b7e8a3a293bc64e4acee477e4a00f52704bdcd..e38484ad05b45c51b197a45327b1f4f4796901b6 100644
--- a/sickbeard/providers/btn.py
+++ b/sickbeard/providers/btn.py
@@ -54,10 +54,10 @@ class BTNProvider(generic.TorrentProvider):
 
         self.cache = BTNCache(self)
 
-        self.urls = {'base_url': "http://api.btnapps.net"}
+        self.urls = {'base_url': u'http://api.btnapps.net',
+                     'website': u'http://broadcasthe.net/',}
 
-
-        self.url = self.urls['base_url']
+        self.url = self.urls['website']
 
     def isEnabled(self):
         return self.enabled
@@ -141,7 +141,7 @@ class BTNProvider(generic.TorrentProvider):
 
     def _api_call(self, apikey, params={}, results_per_page=1000, offset=0):
 
-        server = jsonrpclib.Server(self.url)
+        server = jsonrpclib.Server(self.urls['base_url'])
         parsedJSON = {}
 
         try:
diff --git a/sickbeard/providers/fnt.py b/sickbeard/providers/fnt.py
index a86b796e513e4e1804cede53a91245415afe638d..b94e2b82398ec77a8d6dc54b03a1f78270c08468 100644
--- a/sickbeard/providers/fnt.py
+++ b/sickbeard/providers/fnt.py
@@ -201,6 +201,7 @@ class FNTProvider(generic.TorrentProvider):
 
                                     #Filter unseeded torrent
                                     if not seeders or seeders < self.minseed or leechers < self.minleech:
+                                        logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
                                         continue
 
                                     item = title, download_url , id, seeders, leechers
diff --git a/sickbeard/providers/freshontv.py b/sickbeard/providers/freshontv.py
index 859e0a097f8baba9ffa11a8a6aa684d91c77341a..dd7ab17ef0781bde80c97336f8821ffc8105e25d 100644
--- a/sickbeard/providers/freshontv.py
+++ b/sickbeard/providers/freshontv.py
@@ -295,6 +295,7 @@ class FreshOnTVProvider(generic.TorrentProvider):
 
                                 #Filter unseeded torrent
                                 if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                                    logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
                                     continue
 
                                 if not title or not download_url:
diff --git a/sickbeard/providers/kat.py b/sickbeard/providers/kat.py
index 50fb3a9f3299b39d405b5dd6d6ddb03f432397ba..0f142b056037a45255b05ccc1395b59ae5d55f6a 100644
--- a/sickbeard/providers/kat.py
+++ b/sickbeard/providers/kat.py
@@ -141,6 +141,7 @@ class KATProvider(generic.TorrentProvider):
                             continue
 
                         if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                            logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
                             continue
 
                         if self.confirmed and not verified:
diff --git a/sickbeard/providers/libertalia.py b/sickbeard/providers/libertalia.py
index 8424a0b9e978ea224537d2f78d62105164433e62..f7a7220faf343c3a0a4782efbc9a1f929a2996e5 100644
--- a/sickbeard/providers/libertalia.py
+++ b/sickbeard/providers/libertalia.py
@@ -139,7 +139,7 @@ class LibertaliaProvider(generic.TorrentProvider):
             logger.log(u'Login to ' + self.name + ' was successful.', logger.DEBUG)
             return True
         else:
-            logger.log(u'Login to ' + self.name + ' was unsuccessful.', logger.DEBUG)
+            logger.log(u'Login to ' + self.name + ' was unsuccessful.', logger.WARNING)
             return False
 
         return True
diff --git a/sickbeard/providers/morethantv.py b/sickbeard/providers/morethantv.py
index 9560408783ad1ceaff9012ad3103a3df112407a8..1dbebd06c1ce9de0a89ebfda68cff0c741b11978 100644
--- a/sickbeard/providers/morethantv.py
+++ b/sickbeard/providers/morethantv.py
@@ -230,6 +230,7 @@ class MoreThanTVProvider(generic.TorrentProvider):
 
                             #Filter unseeded torrent
                             if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                                logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
                                 continue
 
                             if not title or not download_url:
diff --git a/sickbeard/providers/scc.py b/sickbeard/providers/scc.py
index e70fceb5cdd5124c00c424783d34b4086f7c1753..f71151790b156fa06be28ced2e4b420bd2d662f8 100644
--- a/sickbeard/providers/scc.py
+++ b/sickbeard/providers/scc.py
@@ -213,6 +213,7 @@ class SCCProvider(generic.TorrentProvider):
                             continue
 
                         if not title or not download_url or seeders < self.minseed or leechers < self.minleech:
+                            logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
                             continue
 
                         item = title, download_url, id, seeders, leechers
diff --git a/sickbeard/providers/scenetime.py b/sickbeard/providers/scenetime.py
index acf01e7b4843d8357f05dff98aad7c8b7b8ee002..bad45bd4f3a23811445a352e20e1613cf884d515 100644
--- a/sickbeard/providers/scenetime.py
+++ b/sickbeard/providers/scenetime.py
@@ -201,6 +201,7 @@ class SceneTimeProvider(generic.TorrentProvider):
 
                             #Filter unseeded torrent
                             if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                                logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
                                 continue
 
                             if not title or not download_url:
diff --git a/sickbeard/providers/shazbat.py b/sickbeard/providers/shazbat.py
index d1cb5aa92bb1cd1786361bb6f61740b03f34b481..282c706e63c593c70ab8e31c5d4da9599afefa74 100644
--- a/sickbeard/providers/shazbat.py
+++ b/sickbeard/providers/shazbat.py
@@ -38,8 +38,9 @@ class ShazbatProvider(generic.TorrentProvider):
 
         self.cache = ShazbatCache(self)
 
-        self.urls = {'base_url': 'http://www.shazbat.tv/'}
-        self.url = self.urls['base_url']
+        self.urls = {'base_url': u'http://www.shazbat.tv/',
+                     'website': u'http://www.shazbat.tv/login',}
+        self.url = self.urls['website']
 
     def isEnabled(self):
         return self.enabled
@@ -76,7 +77,7 @@ class ShazbatCache(tvcache.TVCache):
 
     def _getRSSData(self):
 
-        rss_url = self.provider.url + 'rss/recent?passkey=' + provider.passkey + '&fname=true'
+        rss_url = self.provider.urls['base_url'] + 'rss/recent?passkey=' + provider.passkey + '&fname=true'
         logger.log(self.provider.name + u" cache update URL: " + rss_url, logger.DEBUG)
 
         return self.getRSSFeed(rss_url, items=['entries', 'feed'])
diff --git a/sickbeard/providers/speedcd.py b/sickbeard/providers/speedcd.py
index 4533e94d22c389bd1eba5f3a52f0a23778d062a1..a57b7e430a73cb75d92899338a29819a784b7193 100644
--- a/sickbeard/providers/speedcd.py
+++ b/sickbeard/providers/speedcd.py
@@ -176,6 +176,7 @@ class SpeedCDProvider(generic.TorrentProvider):
                     leechers = int(torrent['leech'])
 
                     if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                        logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
                         continue
 
                     if not title or not url:
diff --git a/sickbeard/providers/strike.py b/sickbeard/providers/strike.py
index 18f39be7a024d26407c454e72ca3102356bb7b19..a4af145aa9e928dd5bfe3a3218fc956fc42fb436 100644
--- a/sickbeard/providers/strike.py
+++ b/sickbeard/providers/strike.py
@@ -143,9 +143,10 @@ class STRIKEProvider(generic.TorrentProvider):
         for item in jdata['torrents']:
             seeders = ('seeds' in item and item['seeds']) or 0
             leechers = ('leeches' in item and item['leeches']) or 0
+            name = ('torrent_title' in item and item['torrent_title']) or ''
             if seeders < self.minseed or leechers < self.minleech:
+                logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG)
                 continue
-            name = ('torrent_title' in item and item['torrent_title']) or ''
             magnet = ('magnet_uri' in item and item['magnet_uri']) or ''
             if name and magnet:
                 results.append((name, magnet, seeders))
diff --git a/sickbeard/providers/thepiratebay.py b/sickbeard/providers/thepiratebay.py
index 3cf73da813aef876a7909bdb412cdbfaf2cb691e..682994d3061237df87f5a65cd232121b7a9d2714 100644
--- a/sickbeard/providers/thepiratebay.py
+++ b/sickbeard/providers/thepiratebay.py
@@ -149,6 +149,7 @@ class ThePirateBayProvider(generic.TorrentProvider):
 
                     #Filter unseeded torrent
                     if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                        logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG)
                         continue
 
                     #Accept Torrent only from Good People for every Episode Search
diff --git a/sickbeard/providers/tntvillage.py b/sickbeard/providers/tntvillage.py
index 4c357a674423cb0416088c08920588bb10324730..ebaf4ef2ed335b7170958cf9968551c056c1145f 100644
--- a/sickbeard/providers/tntvillage.py
+++ b/sickbeard/providers/tntvillage.py
@@ -404,6 +404,7 @@ class TNTVillageProvider(generic.TorrentProvider):
                                     continue
 
                                 if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                                    logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG)
                                     continue
 
                                 if not title or not download_url:
diff --git a/sickbeard/providers/torrentbytes.py b/sickbeard/providers/torrentbytes.py
index 95400ea00eea41691bbad992b760984e6431cbe0..c0fac96dd69bb46e6124e84a94e52898308930f7 100644
--- a/sickbeard/providers/torrentbytes.py
+++ b/sickbeard/providers/torrentbytes.py
@@ -195,6 +195,7 @@ class TorrentBytesProvider(generic.TorrentProvider):
 
                             #Filter unseeded torrent
                             if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                                logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG)
                                 continue
 
                             if not title or not download_url:
diff --git a/sickbeard/providers/torrentleech.py b/sickbeard/providers/torrentleech.py
index d46ba094d32c4fbe6d14d3bf86eba309ee1f3f2d..2446e18499dfd6fb14d8dd1c393f74c42f71695b 100644
--- a/sickbeard/providers/torrentleech.py
+++ b/sickbeard/providers/torrentleech.py
@@ -194,6 +194,7 @@ class TorrentLeechProvider(generic.TorrentProvider):
 
                             #Filter unseeded torrent
                             if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech):
+                                logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG)
                                 continue
 
                             if not title or not download_url:
diff --git a/sickbeard/providers/transmitthenet.py b/sickbeard/providers/transmitthenet.py
index b9113e3f98e889a2b1ef31aaf441835f5b4b1cca..e1deb3fee7c67a2bdb126fee2ab7a0434702a6ba 100644
--- a/sickbeard/providers/transmitthenet.py
+++ b/sickbeard/providers/transmitthenet.py
@@ -195,6 +195,7 @@ class TransmitTheNetProvider(generic.TorrentProvider):
 
                             #Filter unseeded torrent
                             if seeders < self.minseed:
+                                logger.log(u"Discarding torrent because it doesn't meet the minimum seeders: {0} (S:{1})".format(name, seeders), logger.DEBUG)
                                 continue
 
                             if not title or not download_href:
diff --git a/sickbeard/providers/tvchaosuk.py b/sickbeard/providers/tvchaosuk.py
index 297762280af09d14429e5a1e68dfb4bee0b33c65..6c14551887e7026d450fc49f07aaeb8d570060be 100644
--- a/sickbeard/providers/tvchaosuk.py
+++ b/sickbeard/providers/tvchaosuk.py
@@ -171,6 +171,7 @@ class TVChaosUKProvider(generic.TorrentProvider):
 
                             #Filter unseeded torrent
                             if not seeders or seeders < self.minseed or leechers < self.minleech:
+                                logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG)
                                 continue
 
                             if not title or not url:
diff --git a/sickbeard/providers/xthor.py b/sickbeard/providers/xthor.py
index ebbfec0598b9143d820b04d178680a168f86457c..350b5c98011086636be3df6e21fb46b480882d6f 100644
--- a/sickbeard/providers/xthor.py
+++ b/sickbeard/providers/xthor.py
@@ -47,7 +47,7 @@ class XthorProvider(generic.TorrentProvider):
         self.cj = cookielib.CookieJar()
 
         self.url = "https://xthor.bz"
-        self.urlsearch = "https://xthor.bz/browse.php?search=%s%s"
+        self.urlsearch = "https://xthor.bz/browse.php?search=\"%s%s\""
         self.categories = "&searchin=title&incldead=0"
 
         self.enabled = False
diff --git a/sickbeard/subtitles.py b/sickbeard/subtitles.py
index 3bb9cc2e4c70d23ef0548c70510750d97836d168..3850a5333537fe9954fbef69fa2fa7df9482ad3c 100644
--- a/sickbeard/subtitles.py
+++ b/sickbeard/subtitles.py
@@ -94,7 +94,7 @@ def subtitlesLanguages(video_path):
     resultList = []
 
     # Serch for embedded subtitles
-    embedded_languages = subliminal.video.scan_video(video_path, subtitles=False, embedded_subtitles=not sickbeard.EMBEDDED_SUBTITLES_ALL)
+    embedded_languages = subliminal.scan_video(video_path, subtitles=False, embedded_subtitles=not sickbeard.EMBEDDED_SUBTITLES_ALL)
 
     # Search subtitles in the absolute path
     if sickbeard.SUBTITLES_DIR and ek(os.path.exists, sickbeard.SUBTITLES_DIR):
diff --git a/sickbeard/traktChecker.py b/sickbeard/traktChecker.py
index 7d0d4e11ef0a20e30ede2e12e4a481c091f3120b..7fb995cdaaf5a699f3c04b648346ad06005f29a9 100644
--- a/sickbeard/traktChecker.py
+++ b/sickbeard/traktChecker.py
@@ -425,10 +425,12 @@ class TraktChecker():
                 else:
                     helpers.chmodAsParent(showPath)
 
-                sickbeard.showQueueScheduler.action.addShow(int(indexer), int(indexer_id), showPath, status,
-                                                            int(sickbeard.QUALITY_DEFAULT),
-                                                            int(sickbeard.FLATTEN_FOLDERS_DEFAULT),
-                                                            paused=sickbeard.TRAKT_START_PAUSED)
+                sickbeard.showQueueScheduler.action.addShow(int(indexer), int(indexer_id), showPath,
+                                                            default_status=status,
+                                                            quality=int(sickbeard.QUALITY_DEFAULT),
+                                                            flatten_folders=int(sickbeard.FLATTEN_FOLDERS_DEFAULT),
+                                                            paused=sickbeard.TRAKT_START_PAUSED,
+                                                            default_status_after=status)
             else:
                 logger.log(u"There was an error creating the show, no root directory setting found", logger.ERROR)
                 return
diff --git a/sickbeard/tv.py b/sickbeard/tv.py
index 31059dfd32fa319e0f92415d50a7896f80955bb0..442677c1324ff75b574f65425dbb8bff6708de0f 100644
--- a/sickbeard/tv.py
+++ b/sickbeard/tv.py
@@ -1433,6 +1433,13 @@ class TVEpisode(object):
         """Look for subtitles files and refresh the subtitles property"""
         self.subtitles = subtitles.subtitlesLanguages(self.location)
 
+    def getWantedLanguages(self):
+        languages = set()
+        for language in frozenset(subtitles.wantedLanguages()).difference(subtitles.subtitlesLanguages(self.location)):
+            languages.add(subtitles.fromietf(language))
+        self.refreshSubtitles()
+        return languages
+
     def downloadSubtitles(self, force=False):
         if not ek(os.path.isfile, self.location):
             logger.log(u"%s: Episode file doesn't exist, can't download subtitles for S%02dE%02d" %
@@ -1449,15 +1456,11 @@ class TVEpisode(object):
         #logging.getLogger('subliminal').setLevel(logging.DEBUG)
 
         try:
-            languages = set()
-            for language in frozenset(subtitles.wantedLanguages()).difference(self.subtitles):
-                languages.add(subtitles.fromietf(language))
-
+            providers = sickbeard.subtitles.getEnabledServiceList()
+            languages = self.getWantedLanguages();
             if not languages:
                 logger.log(u'%s: No missing subtitles for S%02dE%02d' % (self.show.indexerid, self.season, self.episode), logger.DEBUG)
                 return
-
-            providers = sickbeard.subtitles.getEnabledServiceList()
             vname = self.location
             video = None
             try:
diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py
index 4659f5db1489bfcef009b79fc40ee8126758cb3b..8f98be9a042776185c3982e47bad6e9e22222ad8 100644
--- a/sickbeard/webapi.py
+++ b/sickbeard/webapi.py
@@ -92,7 +92,6 @@ result_type_map = {
 class ApiHandler(RequestHandler):
     """ api class that returns json results """
     version = 5  # use an int since float-point is unpredictable
-    intent = 4
 
     def __init__(self, *args, **kwargs):
         super(ApiHandler, self).__init__(*args, **kwargs)
@@ -110,8 +109,9 @@ class ApiHandler(RequestHandler):
 
         # set the output callback
         # default json
-        outputCallbackDict = {'default': self._out_as_json,
-                              'image': lambda x: x['image'],
+        outputCallbackDict = {
+            'default': self._out_as_json,
+            'image': self._out_as_image,
         }
 
         accessMsg = u"API :: " + self.request.remote_ip + " - gave correct API KEY. ACCESS GRANTED"
@@ -149,20 +149,23 @@ class ApiHandler(RequestHandler):
         try:self.finish(outputCallback(outDict))
         except:pass
 
+    def _out_as_image(self, dict):
+        self.set_header('Content-Type', dict['image'].get_media_type())
+        return dict['image'].get_media()
+
     def _out_as_json(self, dict):
         self.set_header("Content-Type", "application/json;charset=UTF-8")
         try:
-            out = json.dumps(dict, indent=self.intent, ensure_ascii=False, sort_keys=True)
+            out = json.dumps(dict, ensure_ascii=False, sort_keys=True)
             callback = self.get_query_argument('callback', None) or self.get_query_argument('jsonp', None)
-            if callback != None:
+            if callback is not None:
                 out = callback + '(' + out + ');'  # wrap with JSONP call if requested
         except Exception, e:  # if we fail to generate the output fake an error
             logger.log(u"API :: " + traceback.format_exc(), logger.DEBUG)
-            out = '{"result":"' + result_type_map[RESULT_ERROR] + '", "message": "error while composing output: "' + ex(
-                e) + '"}'
+            out = '{"result": "%s", "message": "error while composing output: %s"}' %\
+                  (result_type_map[RESULT_ERROR], ex(e))
         return out
 
-
     def call_dispatcher(self, args, kwargs):
         """ calls the appropriate CMD class
             looks for a cmd in args and kwargs
@@ -268,7 +271,7 @@ class ApiHandler(RequestHandler):
 
 
 class ApiCall(ApiHandler):
-    _help = {"desc": "No help message available. Please tell the devs that a help msg is missing for this cmd"}
+    _help = {"desc": "This command is not documented. Please report this to the developers."}
 
     def __init__(self, args, kwargs):
         # missing
@@ -450,7 +453,7 @@ class ApiCall(ApiHandler):
 
 
 class TVDBShorthandWrapper(ApiCall):
-    _help = {"desc": "this is an internal function wrapper. call the help command directly for more information"}
+    _help = {"desc": "This is an internal function wrapper. Call the help command directly for more information."}
 
     def __init__(self, args, kwargs, sid):
         self.origArgs = args
@@ -626,20 +629,21 @@ class IntParseError(Exception):
 
 
 class CMD_Help(ApiCall):
-    _help = {"desc": "display help information for a given subject/command",
-             "optionalParameters": {"subject": {"desc": "command - the top level command"},
-             }
+    _help = {
+        "desc": "Get help about a given command",
+        "optionalParameters": {
+            "subject": {"desc": "The name of the command to get the help of"},
+        }
     }
 
     def __init__(self, args, kwargs):
         # required
         # optional
-        self.subject, args = self.check_params(args, kwargs, "subject", "help", False, "string",
-                                               _functionMaper.keys())
+        self.subject, args = self.check_params(args, kwargs, "subject", "help", False, "string", _functionMaper.keys())
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display help information for a given subject/command """
+        """ Get help about a given command """
         if self.subject in _functionMaper:
             out = _responds(RESULT_SUCCESS, _functionMaper.get(self.subject)((), {"help": 1}).run())
         else:
@@ -649,10 +653,10 @@ class CMD_Help(ApiCall):
 
 class CMD_ComingEpisodes(ApiCall):
     _help = {
-        "desc": "Display the coming episodes",
+        "desc": "Get the coming episodes",
         "optionalParameters": {
             "sort": {"desc": "Change the sort order"},
-            "type": {"desc": "One or more of allowedValues separated by |"},
+            "type": {"desc": "One or more categories of coming episodes, separated by |"},
             "paused": {
                 "desc": "0 to exclude paused shows, 1 to include them, or omitted to use SickRage default value"
             },
@@ -665,13 +669,13 @@ class CMD_ComingEpisodes(ApiCall):
         self.sort, args = self.check_params(args, kwargs, "sort", "date", False, "string", ComingEpisodes.sorts.keys())
         self.type, args = self.check_params(args, kwargs, "type", '|'.join(ComingEpisodes.categories), False, "list",
                                             ComingEpisodes.categories)
-        self.paused, args = self.check_params(args, kwargs, "paused", sickbeard.COMING_EPS_DISPLAY_PAUSED, False, "int",
-                                              [0, 1])
+        self.paused, args = self.check_params(args, kwargs, "paused", sickbeard.COMING_EPS_DISPLAY_PAUSED, False,
+                                              "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ Display the coming episodes """
+        """ Get the coming episodes """
         grouped_coming_episodes = ComingEpisodes.get_coming_episodes(self.type, self.sort, True, self.paused)
         data = {section: [] for section in grouped_coming_episodes.keys()}
 
@@ -698,17 +702,19 @@ class CMD_ComingEpisodes(ApiCall):
 
 
 class CMD_Episode(ApiCall):
-    _help = {"desc": "display detailed info about an episode",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-                 "season": {"desc": "the season number"},
-                 "episode": {"desc": "the episode number"}
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-                 "full_path": {
-                     "desc": "show the full absolute path (if valid) instead of a relative path for the episode location"}
-             }
+    _help = {
+        "desc": "Get detailed information about an episode",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+            "season": {"desc": "The season number"},
+            "episode": {"desc": "The episode number"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "full_path": {
+                "desc": "Return the full absolute show location (if valid, and True), or the relative show location"
+            },
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -722,7 +728,7 @@ class CMD_Episode(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display detailed info about an episode """
+        """ Get detailed information about an episode """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -763,15 +769,16 @@ class CMD_Episode(ApiCall):
 
 
 class CMD_EpisodeSearch(ApiCall):
-    _help = {"desc": "search for an episode. the response might take some time",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-                 "season": {"desc": "the season number"},
-                 "episode": {"desc": "the episode number"}
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
+    _help = {
+        "desc": "Search for an episode. The response might take some time.",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+            "season": {"desc": "The season number"},
+            "episode": {"desc": "The episode number"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -784,7 +791,7 @@ class CMD_EpisodeSearch(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ search for an episode """
+        """ Search for an episode """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -813,18 +820,18 @@ class CMD_EpisodeSearch(ApiCall):
 
 
 class CMD_EpisodeSetStatus(ApiCall):
-    _help = {"desc": "set status of an episode or season (when no ep is provided)",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-                 "season": {"desc": "the season number"},
-                 "status": {"desc": "the status values: wanted, skipped, ignored, failed"}
-             },
-             "optionalParameters": {
-                 "episode": {"desc": "the episode number"},
-                 "force": {"desc": "should we replace existing (downloaded) episodes or not"},
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
-
+    _help = {
+        "desc": "Set the status of an episode or a season (when no episode is provided)",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+            "season": {"desc": "The season number"},
+            "status": {"desc": "The status of the episode or season"}
+        },
+        "optionalParameters": {
+            "episode": {"desc": "The episode number"},
+            "force": {"desc": "True to replace existing downloaded episode or season, False otherwise"},
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -840,7 +847,7 @@ class CMD_EpisodeSetStatus(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ set status of an episode or a season (when no ep is provided) """
+        """ Set the status of an episode or a season (when no episode is provided) """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -932,15 +939,16 @@ class CMD_EpisodeSetStatus(ApiCall):
 
 
 class CMD_SubtitleSearch(ApiCall):
-    _help = {"desc": "search episode subtitles. the response might take some time",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-                 "season": {"desc": "the season number"},
-                 "episode": {"desc": "the episode number"}
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
+    _help = {
+        "desc": "Search for an episode subtitles. The response might take some time.",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+            "season": {"desc": "The season number"},
+            "episode": {"desc": "The episode number"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -953,7 +961,7 @@ class CMD_SubtitleSearch(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ search episode subtitles """
+        """ Search for an episode subtitles """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -987,11 +995,12 @@ class CMD_SubtitleSearch(ApiCall):
 
 
 class CMD_Exceptions(ApiCall):
-    _help = {"desc": "display scene exceptions for all or a given show",
-             "optionalParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
+    _help = {
+        "desc": "Get the scene exceptions for all or a given show",
+        "optionalParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1003,7 +1012,7 @@ class CMD_Exceptions(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display scene exceptions for all or a given show """
+        """ Get the scene exceptions for all or a given show """
         myDB = db.DBConnection("cache.db", row_type="dict")
 
         if self.indexerid == None:
@@ -1032,10 +1041,10 @@ class CMD_Exceptions(ApiCall):
 
 class CMD_History(ApiCall):
     _help = {
-        "desc": "display SickRage downloaded/snatched history",
+        "desc": "Get the downloaded and/or snatched history",
         "optionalParameters": {
-            "limit": {"desc": "limit returned results"},
-            "type": {"desc": "only show a specific type of results"},
+            "limit": {"desc": "The maximum number of results to return"},
+            "type": {"desc": "Only get some entries. No value will returns every type"},
         }
     }
 
@@ -1043,15 +1052,14 @@ class CMD_History(ApiCall):
         # required
         # optional
         self.limit, args = self.check_params(args, kwargs, "limit", 100, False, "int", [])
-        self.type, args = self.check_params(args, kwargs, "type", None, False, "string",
-                                            ["downloaded", "snatched"])
+        self.type, args = self.check_params(args, kwargs, "type", None, False, "string", ["downloaded", "snatched"])
         self.type = self.type.lower() if isinstance(self.type, str) else ''
 
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display SickRage downloaded/snatched history """
+        """ Get the downloaded and/or snatched history """
         data = History().get(self.limit, self.type)
         results = []
 
@@ -1080,7 +1088,7 @@ class CMD_History(ApiCall):
 
 
 class CMD_HistoryClear(ApiCall):
-    _help = {"desc": "clear SickRage's history"}
+    _help = {"desc": "Clear the entire history"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1089,14 +1097,14 @@ class CMD_HistoryClear(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ clear SickRage's history """
+        """ Clear the entire history """
         History().clear()
 
         return _responds(RESULT_SUCCESS, msg="History cleared")
 
 
 class CMD_HistoryTrim(ApiCall):
-    _help = {"desc": "trim SickRage's history by removing entries greater than 30 days old"}
+    _help = {"desc": "Trim history entries older than 30 days"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1105,16 +1113,18 @@ class CMD_HistoryTrim(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ trim SickRage's history """
+        """ Trim history entries older than 30 days """
         History().trim()
 
         return _responds(RESULT_SUCCESS, msg='Removed history entries older than 30 days')
 
 
 class CMD_Failed(ApiCall):
-    _help = {"desc": "display failed downloads",
-             "optionalParameters": {"limit": {"desc": "limit returned results"}
-             }
+    _help = {
+        "desc": "Get the failed downloads",
+        "optionalParameters": {
+            "limit": {"desc": "The maximum number of results to return"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1125,7 +1135,7 @@ class CMD_Failed(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display failed downloads """
+        """ Get the failed downloads """
 
         myDB = db.DBConnection('failed.db', row_type="dict")
 
@@ -1137,8 +1147,9 @@ class CMD_Failed(ApiCall):
 
         return _responds(RESULT_SUCCESS, sqlResults)
 
+
 class CMD_Backlog(ApiCall):
-    _help = {"desc": "display backlogged episodes"}
+    _help = {"desc": "Get the backlogged episodes"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1147,7 +1158,7 @@ class CMD_Backlog(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display backlogged episodes """
+        """ Get the backlogged episodes """
 
         shows = []
 
@@ -1176,10 +1187,17 @@ class CMD_Backlog(ApiCall):
 
         return _responds(RESULT_SUCCESS, shows)
 
+
 class CMD_Logs(ApiCall):
-    _help = {"desc": "view sickrage's log",
-             "optionalParameters": {"min_level ": {
-                 "desc": "the minimum level classification of log entries to show, with each level inherting its above level"}}
+    _help = {
+        "desc": "Get the logs",
+        "optionalParameters": {
+            "min_level": {
+                "desc":
+                    "The minimum level classification of log entries to return. "
+                    "Each level inherits its above levels: debug < info < warning < error"
+            },
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1191,7 +1209,7 @@ class CMD_Logs(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ view sickrage's log """
+        """ Get the logs """
         # 10 = Debug / 20 = Info / 30 = Warning / 40 = Error
         minLevel = logger.reverseNames[str(self.min_level).upper()]
 
@@ -1237,15 +1255,17 @@ class CMD_Logs(ApiCall):
 
 
 class CMD_PostProcess(ApiCall):
-    _help = {"desc": "Manual postprocess TV Download Dir",
-             "optionalParameters": {"path": {"desc": "Post process this folder"},
-                                    "force_replace": {"desc": "Force already Post Processed Dir/Files"},
-                                    "return_data": {"desc": "Returns result for the process"},
-                                    "process_method": {"desc": "Symlink, hardlink, move or copy the file"},
-                                    "is_priority": {"desc": "Replace the file even if it exists in a higher quality"},
-                                    "failed": {"desc": "Mark download as failed"},
-                                    "type": {"desc": "What type of postprocess request is this, auto of manual"}
-             }
+    _help = {
+        "desc": "Manually post-process the files in the download folder",
+        "optionalParameters": {
+            "path": {"desc": "The path to the folder to post-process"},
+            "force_replace": {"desc": "Force already post-processed files to be post-processed again"},
+            "return_data": {"desc": "Returns the result of the post-process"},
+            "process_method": {"desc": "How should valid post-processed files be handled"},
+            "is_priority": {"desc": "Replace the file even if it exists in a higher quality"},
+            "failed": {"desc": "Mark download as failed"},
+            "type": {"desc": "The type of post-process being requested"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1254,17 +1274,16 @@ class CMD_PostProcess(ApiCall):
         self.path, args = self.check_params(args, kwargs, "path", None, False, "string", [])
         self.force_replace, args = self.check_params(args, kwargs, "force_replace", 0, False, "bool", [])
         self.return_data, args = self.check_params(args, kwargs, "return_data", 0, False, "bool", [])
-        self.process_method, args = self.check_params(args, kwargs, "process_method", False, False,
-                                                      "string", ["copy", "symlink", "hardlink", "move"])
+        self.process_method, args = self.check_params(args, kwargs, "process_method", False, False, "string",
+                                                      ["copy", "symlink", "hardlink", "move"])
         self.is_priority, args = self.check_params(args, kwargs, "is_priority", 0, False, "bool", [])
         self.failed, args = self.check_params(args, kwargs, "failed", 0, False, "bool", [])
-        self.type, args = self.check_params(args, kwargs, "type", "auto", None, "string",
-                                            ["auto", "manual"])
+        self.type, args = self.check_params(args, kwargs, "type", "auto", None, "string", ["auto", "manual"])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ Starts the postprocess """
+        """ Manually post-process the files in the download folder """
         if not self.path and not sickbeard.TV_DOWNLOAD_DIR:
             return _responds(RESULT_FAILURE, msg="You need to provide a path or set TV Download Dir")
 
@@ -1284,7 +1303,7 @@ class CMD_PostProcess(ApiCall):
 
 
 class CMD_SickBeard(ApiCall):
-    _help = {"desc": "display misc sickrage related information"}
+    _help = {"desc": "Get miscellaneous information about SickRage"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1293,18 +1312,21 @@ class CMD_SickBeard(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display misc sickrage related information """
+        """ dGet miscellaneous information about SickRage """
         data = {"sr_version": sickbeard.BRANCH, "api_version": self.version,
                 "api_commands": sorted(_functionMaper.keys())}
         return _responds(RESULT_SUCCESS, data)
 
 
 class CMD_SickBeardAddRootDir(ApiCall):
-    _help = {"desc": "add a sickrage user's parent directory",
-             "requiredParameters": {"location": {"desc": "the full path to root (parent) directory"}
-             },
-             "optionalParameters": {"default": {"desc": "make the location passed the default root (parent) directory"}
-             }
+    _help = {
+        "desc": "Add a new root (parent) directory to SickRage",
+        "requiredParameters": {
+            "location": {"desc": "The full path to the new root (parent) directory"},
+        },
+        "optionalParameters": {
+            "default": {"desc": "Make this new location the default root (parent) directory"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1316,7 +1338,7 @@ class CMD_SickBeardAddRootDir(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ add a parent directory to sickrage's config """
+        """ Add a new root (parent) directory to SickRage """
 
         self.location = urllib.unquote_plus(self.location)
         location_matched = 0
@@ -1356,8 +1378,9 @@ class CMD_SickBeardAddRootDir(ApiCall):
         sickbeard.ROOT_DIRS = root_dirs_new
         return _responds(RESULT_SUCCESS, _getRootDirs(), msg="Root directories updated")
 
+
 class CMD_SickBeardCheckVersion(ApiCall):
-    _help = {"desc": "check if a new version of SickRage is available"}
+    _help = {"desc": "Check if a new version of SickRage is available"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1386,8 +1409,9 @@ class CMD_SickBeardCheckVersion(ApiCall):
 
         return _responds(RESULT_SUCCESS, data)
 
+
 class CMD_SickBeardCheckScheduler(ApiCall):
-    _help = {"desc": "query the scheduler"}
+    _help = {"desc": "Get information about the scheduler"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1396,7 +1420,7 @@ class CMD_SickBeardCheckScheduler(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ query the scheduler """
+        """ Get information about the scheduler """
         myDB = db.DBConnection()
         sqlResults = myDB.select("SELECT last_backlog FROM info")
 
@@ -1411,8 +1435,11 @@ class CMD_SickBeardCheckScheduler(ApiCall):
 
 
 class CMD_SickBeardDeleteRootDir(ApiCall):
-    _help = {"desc": "delete a sickrage user's parent directory",
-             "requiredParameters": {"location": {"desc": "the full path to root (parent) directory"}}
+    _help = {
+        "desc": "Delete a root (parent) directory from SickRage",
+        "requiredParameters": {
+            "location": {"desc": "The full path to the root (parent) directory to remove"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1423,7 +1450,7 @@ class CMD_SickBeardDeleteRootDir(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ delete a parent directory from sickrage's config """
+        """ Delete a root (parent) directory from SickRage """
         if sickbeard.ROOT_DIRS == "":
             return _responds(RESULT_FAILURE, _getRootDirs(), msg="No root directories detected")
 
@@ -1457,7 +1484,7 @@ class CMD_SickBeardDeleteRootDir(ApiCall):
 
 
 class CMD_SickBeardGetDefaults(ApiCall):
-    _help = {"desc": "get sickrage user defaults"}
+    _help = {"desc": "Get SickRage's user default configuration value"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1466,7 +1493,7 @@ class CMD_SickBeardGetDefaults(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ get sickrage user defaults """
+        """ Get SickRage's user default configuration value """
 
         anyQualities, bestQualities = _mapQuality(sickbeard.QUALITY_DEFAULT)
 
@@ -1477,7 +1504,7 @@ class CMD_SickBeardGetDefaults(ApiCall):
 
 
 class CMD_SickBeardGetMessages(ApiCall):
-    _help = {"desc": "get all messages"}
+    _help = {"desc": "Get all messages"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1495,7 +1522,7 @@ class CMD_SickBeardGetMessages(ApiCall):
 
 
 class CMD_SickBeardGetRootDirs(ApiCall):
-    _help = {"desc": "get sickrage user parent directories"}
+    _help = {"desc": "Get all root (parent) directories"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1504,14 +1531,17 @@ class CMD_SickBeardGetRootDirs(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ get the parent directories defined in sickrage's config """
+        """ Get all root (parent) directories """
 
         return _responds(RESULT_SUCCESS, _getRootDirs())
 
 
 class CMD_SickBeardPauseBacklog(ApiCall):
-    _help = {"desc": "pause the backlog search",
-             "optionalParameters": {"pause ": {"desc": "pause or unpause the global backlog"}}
+    _help = {
+        "desc": "Pause or unpause the backlog search",
+        "optionalParameters": {
+            "pause ": {"desc": "True to pause the backlog search, False to unpause it"}
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1522,7 +1552,7 @@ class CMD_SickBeardPauseBacklog(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ pause the backlog search """
+        """ Pause or unpause the backlog search """
         if self.pause:
             sickbeard.searchQueueScheduler.action.pause_backlog()  # @UndefinedVariable
             return _responds(RESULT_SUCCESS, msg="Backlog paused")
@@ -1532,7 +1562,7 @@ class CMD_SickBeardPauseBacklog(ApiCall):
 
 
 class CMD_SickBeardPing(ApiCall):
-    _help = {"desc": "check to see if sickrage is running"}
+    _help = {"desc": "Ping SickRage to check if it is running"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1541,7 +1571,7 @@ class CMD_SickBeardPing(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ check to see if sickrage is running """
+        """ Ping SickRage to check if it is running """
         if sickbeard.started:
             return _responds(RESULT_SUCCESS, {"pid": sickbeard.PID}, "Pong")
         else:
@@ -1549,7 +1579,7 @@ class CMD_SickBeardPing(ApiCall):
 
 
 class CMD_SickBeardRestart(ApiCall):
-    _help = {"desc": "restart SickRage"}
+    _help = {"desc": "Restart SickRage"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1558,7 +1588,7 @@ class CMD_SickBeardRestart(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ restart SickRage """
+        """ Restart SickRage """
         if not Restart.restart(sickbeard.PID):
             return _responds(RESULT_FAILURE, msg='SickRage can not be restarted')
 
@@ -1566,12 +1596,14 @@ class CMD_SickBeardRestart(ApiCall):
 
 
 class CMD_SickBeardSearchIndexers(ApiCall):
-    _help = {"desc": "search for show on the indexers with a given string and language",
-             "optionalParameters": {"name": {"desc": "name of the show you want to search for"},
-                                    "indexerid": {"desc": "unique id of a show"},
-                                    "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-                                    "lang": {"desc": "the 2 letter abbreviation lang id"}
-             }
+    _help = {
+        "desc": "Search for a show with a given name on all the indexers, in a specific language",
+        "optionalParameters": {
+            "name": {"desc": "The name of the show you want to search for"},
+            "indexerid": {"desc": "Unique ID of a show"},
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "lang": {"desc": "The 2-letter language code of the desired show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1579,15 +1611,15 @@ class CMD_SickBeardSearchIndexers(ApiCall):
         # required
         # optional
         self.name, args = self.check_params(args, kwargs, "name", None, False, "string", [])
-        self.lang, args = self.check_params(args, kwargs, "lang", sickbeard.INDEXER_DEFAULT_LANGUAGE, False, "string", self.valid_languages.keys())
-
+        self.lang, args = self.check_params(args, kwargs, "lang", sickbeard.INDEXER_DEFAULT_LANGUAGE, False, "string",
+                                            self.valid_languages.keys())
         self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, False, "int", [])
 
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ search for show at tvdb with a given string and language """
+        """ Search for a show with a given name on all the indexers, in a specific language """
 
         results = []
         lang_id = self.valid_languages[self.lang]
@@ -1654,14 +1686,15 @@ class CMD_SickBeardSearchIndexers(ApiCall):
 
 
 class CMD_SickBeardSearchTVDB(CMD_SickBeardSearchIndexers):
-    _help = {"desc": "search for show on theTVDB with a given string and language",
-             "optionalParameters": {"name": {"desc": "name of the show you want to search for"},
-                                    "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-                                    "lang": {"desc": "the 2 letter abbreviation lang id"}
-             }
+    _help = {
+        "desc": "Search for a show with a given name on The TVDB, in a specific language",
+        "optionalParameters": {
+            "name": {"desc": "The name of the show you want to search for"},
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "lang": {"desc": "The 2-letter language code of the desired show"},
+        }
     }
 
-
     def __init__(self, args, kwargs):
         CMD_SickBeardSearchIndexers.__init__(self, args, kwargs)
         self.indexerid, args = self.check_params(args, kwargs, "tvdbid", None, False, "int", [])
@@ -1672,10 +1705,14 @@ class CMD_SickBeardSearchTVRAGE(CMD_SickBeardSearchIndexers):
     Deprecated, TVRage is no more.
     """
 
-    _help = {"desc": "search for show on TVRage with a given string and language",
-             "optionalParameters": {"name": {"desc": "name of the show you want to search for"},
-                                    "lang": {"desc": "the 2 letter abbreviation lang id"}
-             }
+    _help = {
+        "desc":
+            "Search for a show with a given name on TVRage, in a specific language. "
+            "This command should not longer be used, as TVRage was shut down.",
+        "optionalParameters": {
+            "name": {"desc": "The name of the show you want to search for"},
+            "lang": {"desc": "The 2-letter language code of the desired show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1684,13 +1721,17 @@ class CMD_SickBeardSearchTVRAGE(CMD_SickBeardSearchIndexers):
     def run(self):
         return _responds(RESULT_FAILURE, msg="TVRage is no more, invalid result")
 
+
 class CMD_SickBeardSetDefaults(ApiCall):
-    _help = {"desc": "set sickrage user defaults",
-             "optionalParameters": {"initial": {"desc": "initial quality for the show"},
-                                    "archive": {"desc": "archive quality for the show"},
-                                    "flatten_folders": {"desc": "flatten subfolders within the show directory"},
-                                    "status": {"desc": "status of missing episodes"}
-             }
+    _help = {
+        "desc": "Set SickRage's user default configuration value",
+        "optionalParameters": {
+            "initial": {"desc": "The initial quality of a show"},
+            "archive": {"desc": "The archive quality of a show"},
+            "future_show_paused": {"desc": "True to list paused shows in the coming episode, False otherwise"},
+            "flatten_folders": {"desc": "Flatten sub-folders within the show directory"},
+            "status": {"desc": "Status of missing episodes"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1701,19 +1742,16 @@ class CMD_SickBeardSetDefaults(ApiCall):
                                                 "fullhdwebdl", "hdbluray", "fullhdbluray", "unknown"])
         self.archive, args = self.check_params(args, kwargs, "archive", None, False, "list",
                                                ["sddvd", "hdtv", "rawhdtv", "fullhdtv", "hdwebdl",
-                                                "fullhdwebdl",
-                                                "hdbluray", "fullhdbluray"])
-        self.future_show_paused, args = self.check_params(args, kwargs, "future_show_paused", None, False,
-                                                          "bool", [])
-        self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders", None, False,
-                                                       "bool", [])
+                                                "fullhdwebdl", "hdbluray", "fullhdbluray"])
+        self.future_show_paused, args = self.check_params(args, kwargs, "future_show_paused", None, False, "bool", [])
+        self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders", None, False, "bool", [])
         self.status, args = self.check_params(args, kwargs, "status", None, False, "string",
                                               ["wanted", "skipped", "ignored"])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ set sickrage user defaults """
+        """ Set SickRage's user default configuration value """
 
         quality_map = {'sdtv': Quality.SDTV,
                        'sddvd': Quality.SDDVD,
@@ -1763,7 +1801,7 @@ class CMD_SickBeardSetDefaults(ApiCall):
 
 
 class CMD_SickBeardShutdown(ApiCall):
-    _help = {"desc": "shutdown SickRage"}
+    _help = {"desc": "Shutdown SickRage"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1772,7 +1810,7 @@ class CMD_SickBeardShutdown(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ shutdown SickRage """
+        """ Shutdown SickRage """
         if not Shutdown.stop(sickbeard.PID):
             return _responds(RESULT_FAILURE, msg='SickRage can not be shut down')
 
@@ -1780,7 +1818,7 @@ class CMD_SickBeardShutdown(ApiCall):
 
 
 class CMD_SickBeardUpdate(ApiCall):
-    _help = {"desc": "update SickRage to the latest version available"}
+    _help = {"desc": "Update SickRage to the latest version available"}
 
     def __init__(self, args, kwargs):
         # required
@@ -1801,15 +1839,16 @@ class CMD_SickBeardUpdate(ApiCall):
 
         return _responds(RESULT_FAILURE, msg="SickRage is already up to date")
 
-class CMD_Show(ApiCall):
-    _help = {"desc": "display information for a given show",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
 
+class CMD_Show(ApiCall):
+    _help = {
+        "desc": "Get detailed information about a show",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -1820,7 +1859,7 @@ class CMD_Show(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display information for a given show """
+        """ Get detailed information about a show """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -1893,23 +1932,24 @@ class CMD_Show(ApiCall):
 
 
 class CMD_ShowAddExisting(ApiCall):
-    _help = {"desc": "add a show in sickrage with an existing folder",
-             "requiredParameters": {"indexerid": {"desc": "unique id of a show"},
-                                    "location": {"desc": "full path to the existing folder for the show"}
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-                 "initial": {"desc": "initial quality for the show"},
-                 "archive": {"desc": "archive quality for the show"},
-                 "flatten_folders": {"desc": "flatten subfolders for the show"},
-                 "subtitles": {"desc": "allow search episode subtitle"}
-             }
+    _help = {
+        "desc": "Add an existing show in SickRage",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+            "location": {"desc": "Full path to the existing shows's folder"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "initial": {"desc": "The initial quality of the show"},
+            "archive": {"desc": "The archive quality of the show"},
+            "flatten_folders": {"desc": "True to flatten the show folder, False otherwise"},
+            "subtitles": {"desc": "True to search for subtitles, False otherwise"},
+        }
     }
 
     def __init__(self, args, kwargs):
         # required
         self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "", [])
-
         self.location, args = self.check_params(args, kwargs, "location", None, True, "string", [])
         # optional
         self.initial, args = self.check_params(args, kwargs, "initial", None, False, "list",
@@ -1917,18 +1957,16 @@ class CMD_ShowAddExisting(ApiCall):
                                                 "fullhdwebdl", "hdbluray", "fullhdbluray", "unknown"])
         self.archive, args = self.check_params(args, kwargs, "archive", None, False, "list",
                                                ["sddvd", "hdtv", "rawhdtv", "fullhdtv", "hdwebdl",
-                                                "fullhdwebdl",
-                                                "hdbluray", "fullhdbluray"])
+                                                "fullhdwebdl", "hdbluray", "fullhdbluray"])
         self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders",
-                                                       str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False,
-                                                       "bool", [])
+                                                       str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, "bool", [])
         self.subtitles, args = self.check_params(args, kwargs, "subtitles", int(sickbeard.USE_SUBTITLES),
                                                  False, "int", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ add a show in sickrage with an existing folder """
+        """ Add an existing show in SickRage """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if showObj:
             return _responds(RESULT_FAILURE, msg="An existing indexerid already exists in the database")
@@ -1984,29 +2022,30 @@ class CMD_ShowAddExisting(ApiCall):
 
 
 class CMD_ShowAddNew(ApiCall):
-    _help = {"desc": "add a new show to sickrage",
-             "requiredParameters": {"indexerid": {"desc": "unique id of a show"}
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-                 "initial": {"desc": "initial quality for the show"},
-                 "location": {"desc": "base path for where the show folder is to be created"},
-                 "archive": {"desc": "archive quality for the show"},
-                 "flatten_folders": {"desc": "flatten subfolders for the show"},
-                 "status": {"desc": "status of missing episodes"},
-                 "lang": {"desc": "the 2 letter lang abbreviation id"},
-                 "subtitles": {"desc": "allow search episode subtitle"},
-                 "anime": {"desc": "set show to anime"},
-                 "scene": {"desc": "show searches episodes by scene numbering"},
-                 "future_status": {"desc": "status of future episodes"}
-             }
+    _help = {
+        "desc": "Add a new show to SickRage",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "initial": {"desc": "The initial quality of the show"},
+            "location": {"desc": "The path to the folder where the show should be created"},
+            "archive": {"desc": "The archive quality of the show"},
+            "flatten_folders": {"desc": "True to flatten the show folder, False otherwise"},
+            "status": {"desc": "The status of missing episodes"},
+            "lang": {"desc": "The 2-letter language code of the desired show"},
+            "subtitles": {"desc": "True to search for subtitles, False otherwise"},
+            "anime": {"desc": "True to mark the show as an anime, False otherwise"},
+            "scene": {"desc": "True if episodes search should be made by scene numbering, False otherwise"},
+            "future_status": {"desc": "The status of future episodes"},
+        }
     }
 
     def __init__(self, args, kwargs):
         self.valid_languages = sickbeard.indexerApi().config['langabbv_to_id']
         # required
         self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "int", [])
-
         # optional
         self.location, args = self.check_params(args, kwargs, "location", None, False, "string", [])
         self.initial, args = self.check_params(args, kwargs, "initial", None, False, "list",
@@ -2014,32 +2053,27 @@ class CMD_ShowAddNew(ApiCall):
                                                 "fullhdwebdl", "hdbluray", "fullhdbluray", "unknown"])
         self.archive, args = self.check_params(args, kwargs, "archive", None, False, "list",
                                                ["sddvd", "hdtv", "rawhdtv", "fullhdtv", "hdwebdl",
-                                                "fullhdwebdl",
-                                                "hdbluray", "fullhdbluray"])
+                                                "fullhdwebdl", "hdbluray", "fullhdbluray"])
         self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders",
-                                                       str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False,
-                                                       "bool", [])
+                                                       str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, "bool", [])
         self.status, args = self.check_params(args, kwargs, "status", None, False, "string",
                                               ["wanted", "skipped", "ignored"])
         self.lang, args = self.check_params(args, kwargs, "lang", sickbeard.INDEXER_DEFAULT_LANGUAGE, False, "string",
                                             self.valid_languages.keys())
         self.subtitles, args = self.check_params(args, kwargs, "subtitles", int(sickbeard.USE_SUBTITLES),
-                                                 False, "int",
-            [])
+                                                 False, "bool", [])
         self.anime, args = self.check_params(args, kwargs, "anime", int(sickbeard.ANIME_DEFAULT), False,
-                                             "int",
-            [])
+                                             "bool", [])
         self.scene, args = self.check_params(args, kwargs, "scene", int(sickbeard.SCENE_DEFAULT), False,
-                                             "int",
-            [])
+                                             "bool", [])
         self.future_status, args = self.check_params(args, kwargs, "future_status", None, False, "string",
-                                              ["wanted", "skipped", "ignored"])
+                                                     ["wanted", "skipped", "ignored"])
 
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ add a show in sickrage with an existing folder """
+        """ Add a new show to SickRage """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if showObj:
             return _responds(RESULT_FAILURE, msg="An existing indexerid already exists in database")
@@ -2153,13 +2187,14 @@ class CMD_ShowAddNew(ApiCall):
 
 
 class CMD_ShowCache(ApiCall):
-    _help = {"desc": "check sickrage's cache to see if the banner or poster image for a show is valid",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"}
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
+    _help = {
+        "desc": "Check SickRage's cache to see if the images (poster, banner, fanart) for a show are valid",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -2170,7 +2205,7 @@ class CMD_ShowCache(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ check sickrage's cache to see if the banner or poster image for a show is valid """
+        """ Check SickRage's cache to see if the images (poster, banner, fanart) for a show are valid """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -2195,11 +2230,13 @@ class CMD_ShowDelete(ApiCall):
     _help = {
         "desc": "Delete a show in SickRage",
         "requiredParameters": {
-            "indexerid": {"desc": "Unique id of a show"},
+            "indexerid": {"desc": "Unique ID of a show"},
         },
         "optionalParameters": {
-            "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-            "removefiles": {"desc": "Deletes the files, there is no going back! Default if false"},
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "removefiles": {
+                "desc": "True to delete the files associated with the show, False otherwise. This can not be undone!"
+            },
         }
     }
 
@@ -2207,7 +2244,7 @@ class CMD_ShowDelete(ApiCall):
         # required
         self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "int", [])
         # optional
-        self.removefiles, args = self.check_params(args, kwargs, "removefiles", 0, False, "int", [0, 1])
+        self.removefiles, args = self.check_params(args, kwargs, "removefiles", 0, False, "bool", [])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
@@ -2222,13 +2259,14 @@ class CMD_ShowDelete(ApiCall):
 
 
 class CMD_ShowGetQuality(ApiCall):
-    _help = {"desc": "get quality setting for a show in sickrage",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"}
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
+    _help = {
+        "desc": "Get the quality setting of a show",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -2239,7 +2277,7 @@ class CMD_ShowGetQuality(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ get quality setting for a show in sickrage """
+        """ Get the quality setting of a show """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -2251,12 +2289,12 @@ class CMD_ShowGetQuality(ApiCall):
 
 class CMD_ShowGetPoster(ApiCall):
     _help = {
-        "desc": "get the poster stored for a show in sickrage",
+        "desc": "Get the poster of a show",
         "requiredParameters": {
-            "indexerid": {"desc": "unique id of a show"}
+            "indexerid": {"desc": "Unique ID of a show"},
         },
         "optionalParameters": {
-            "tvdbid": {"desc": "thetvdb.com unique id of a show"},
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
         }
     }
 
@@ -2268,21 +2306,21 @@ class CMD_ShowGetPoster(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ get the poster for a show in sickrage """
+        """ Get the poster a show """
         return {
             'outputType': 'image',
-            'image': ShowPoster(self.indexerid).get_media()
+            'image': ShowPoster(self.indexerid),
         }
 
 
 class CMD_ShowGetBanner(ApiCall):
     _help = {
-        "desc": "get the banner stored for a show in sickrage",
+        "desc": "Get the banner of a show",
         "requiredParameters": {
-            "indexerid": {"desc": "unique id of a show"}
+            "indexerid": {"desc": "Unique ID of a show"},
         },
         "optionalParameters": {
-            "tvdbid": {"desc": "thetvdb.com unique id of a show"},
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
         }
     }
 
@@ -2294,26 +2332,22 @@ class CMD_ShowGetBanner(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ get the banner for a show in sickrage """
+        """ Get the banner of a show """
         return {
             'outputType': 'image',
-            'image': ShowBanner(self.indexerid).get_media()
+            'image': ShowBanner(self.indexerid),
         }
 
 
 class CMD_ShowGetNetworkLogo(ApiCall):
     _help = {
-        "desc": "Get the network logo stored for a show in SickRage",
+        "desc": "Get the network logo of a show",
         "requiredParameters": {
-            "indexerid": {
-                "desc": "Unique id of a show",
-            },
+            "indexerid": {"desc": "Unique ID of a show"},
         },
         "optionalParameters": {
-            "tvdbid": {
-                "desc": "TheTVDB.com unique id of a show",
-            },
-        },
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -2325,23 +2359,23 @@ class CMD_ShowGetNetworkLogo(ApiCall):
 
     def run(self):
         """
-        :return: The network logo for a show in SickRage
+        :return: Get the network logo of a show
         """
         return {
             'outputType': 'image',
-            'image': ShowNetworkLogo(self.indexerid).get_media()
+            'image': ShowNetworkLogo(self.indexerid),
         }
 
 
 class CMD_ShowGetFanArt(ApiCall):
     _help = {
-        "desc": "Get the fan art stored for a show in SickRage",
+        "desc": "Get the fan art of a show",
         "requiredParameters": {
-            "indexerid": {"desc": "Unique id of a show"}
+            "indexerid": {"desc": "Unique ID of a show"},
         },
         "optionalParameters": {
-            "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-        },
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -2352,22 +2386,22 @@ class CMD_ShowGetFanArt(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ Get the fan art for a show in SickRage """
+        """ Get the fan art of a show """
         return {
             'outputType': 'image',
-            'image': ShowFanArt(self.indexerid).get_media()
+            'image': ShowFanArt(self.indexerid),
         }
 
 
 class CMD_ShowPause(ApiCall):
     _help = {
-        "desc": "Set a show's paused state in SickRage",
+        "desc": "Pause or unpause a show",
         "requiredParameters": {
-            "indexerid": {"desc": "Unique id of a show"},
+            "indexerid": {"desc": "Unique ID of a show"},
         },
         "optionalParameters": {
-            "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-            "pause": {"desc": "1 to pause the show, 0 to resume the show"}
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "pause": {"desc": "True to pause the show, False otherwise"},
         }
     }
 
@@ -2380,7 +2414,7 @@ class CMD_ShowPause(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ Set a show's paused state in SickRage """
+        """ Pause or unpause a show """
         error, show = Show.pause(self.indexerid, self.pause)
 
         if error is not None:
@@ -2393,10 +2427,10 @@ class CMD_ShowRefresh(ApiCall):
     _help = {
         "desc": "Refresh a show in SickRage",
         "requiredParameters": {
-            "indexerid": {"desc": "Unique id of a show"},
+            "indexerid": {"desc": "Unique ID of a show"},
         },
         "optionalParameters": {
-            "tvdbid": {"desc": "thetvdb.com unique id of a show"},
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
         }
     }
 
@@ -2418,28 +2452,27 @@ class CMD_ShowRefresh(ApiCall):
 
 
 class CMD_ShowSeasonList(ApiCall):
-    _help = {"desc": "display the season list for a given show",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-                 "sort": {"desc": "change the sort order from descending to ascending"}
-             }
+    _help = {
+        "desc": "Get the list of seasons of a show",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "sort": {"desc": "Return the seasons in ascending or descending order"}
+        }
     }
 
     def __init__(self, args, kwargs):
         # required
         self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "int", [])
         # optional
-        self.sort, args = self.check_params(args, kwargs, "sort", "desc", False, "string",
-                                            ["asc",
-                                             "desc"])  # "asc" and "desc" default and fallback is "desc"
+        self.sort, args = self.check_params(args, kwargs, "sort", "desc", False, "string", ["asc", "desc"])
         # super, missing, help
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display the season list for a given show """
+        """ Get the list of seasons of a show """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -2459,14 +2492,15 @@ class CMD_ShowSeasonList(ApiCall):
 
 
 class CMD_ShowSeasons(ApiCall):
-    _help = {"desc": "display a listing of episodes for all or a given season",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-                 "season": {"desc": "the season number"},
-             }
+    _help = {
+        "desc": "Get the list of episodes for one or all seasons of a show",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "season": {"desc": "The season number"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -2478,7 +2512,7 @@ class CMD_ShowSeasons(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display a listing of episodes for all or a given show """
+        """ Get the list of episodes for one or all seasons of a show """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -2530,14 +2564,14 @@ class CMD_ShowSeasons(ApiCall):
 
 class CMD_ShowSetQuality(ApiCall):
     _help = {
-        "desc": "set desired quality of a show in sickrage. if neither initial or archive are provided then the config default quality will be used",
+        "desc": "Set the quality setting of a show. If no quality is provided, the default user setting is used.",
         "requiredParameters": {
-            "indexerid": {"desc": "unique id of a show"}
+            "indexerid": {"desc": "Unique ID of a show"},
         },
         "optionalParameters": {
-            "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-            "initial": {"desc": "initial quality for the show"},
-            "archive": {"desc": "archive quality for the show"}
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+            "initial": {"desc": "The initial quality of the show"},
+            "archive": {"desc": "The archive quality of the show"},
         }
     }
 
@@ -2558,9 +2592,7 @@ class CMD_ShowSetQuality(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ set the quality for a show in sickrage by taking in a deliminated
-            string of qualities, map to their value and combine for new values
-        """
+        """ Set the quality setting of a show. If no quality is provided, the default user setting is used. """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -2597,13 +2629,14 @@ class CMD_ShowSetQuality(ApiCall):
 
 
 class CMD_ShowStats(ApiCall):
-    _help = {"desc": "display episode statistics for a given show",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
+    _help = {
+        "desc": "Get episode statistics for a given show",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -2614,7 +2647,7 @@ class CMD_ShowStats(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display episode statistics for a given show """
+        """ Get episode statistics for a given show """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -2705,13 +2738,14 @@ class CMD_ShowStats(ApiCall):
 
 
 class CMD_ShowUpdate(ApiCall):
-    _help = {"desc": "update a show in sickrage",
-             "requiredParameters": {
-                 "indexerid": {"desc": "unique id of a show"},
-             },
-             "optionalParameters": {
-                 "tvdbid": {"desc": "thetvdb.com unique id of a show"},
-             }
+    _help = {
+        "desc": "Update a show in SickRage",
+        "requiredParameters": {
+            "indexerid": {"desc": "Unique ID of a show"},
+        },
+        "optionalParameters": {
+            "tvdbid": {"desc": "thetvdb.com unique ID of a show"},
+        }
     }
 
     def __init__(self, args, kwargs):
@@ -2722,7 +2756,7 @@ class CMD_ShowUpdate(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ update a show in sickrage """
+        """ Update a show in SickRage """
         showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid))
         if not showObj:
             return _responds(RESULT_FAILURE, msg="Show not found")
@@ -2736,11 +2770,12 @@ class CMD_ShowUpdate(ApiCall):
 
 
 class CMD_Shows(ApiCall):
-    _help = {"desc": "display all shows in sickrage",
-             "optionalParameters": {
-                 "sort": {"desc": "sort the list of shows by show name instead of indexer unique id"},
-                 "paused": {"desc": "only show the shows that are set to paused"},
-             },
+    _help = {
+        "desc": "Get all shows in SickRage",
+        "optionalParameters": {
+            "sort": {"desc": "The sorting strategy to apply to the list of shows"},
+            "paused": {"desc": "True to include paused shows, False otherwise"},
+        },
     }
 
     def __init__(self, args, kwargs):
@@ -2752,7 +2787,7 @@ class CMD_Shows(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display_is_int_multi( self.indexerid )shows in sickrage """
+        """ Get all shows in SickRage """
         shows = {}
         for curShow in sickbeard.showList:
 
@@ -2796,8 +2831,7 @@ class CMD_Shows(ApiCall):
 
 
 class CMD_ShowsStats(ApiCall):
-    _help = {"desc": "display the global shows and episode stats"
-    }
+    _help = {"desc": "Get the global shows and episodes statistics"}
 
     def __init__(self, args, kwargs):
         # required
@@ -2806,7 +2840,7 @@ class CMD_ShowsStats(ApiCall):
         ApiCall.__init__(self, args, kwargs)
 
     def run(self):
-        """ display the global shows and episode stats """
+        """ Get the global shows and episodes statistics """
         stats = {}
 
         myDB = db.DBConnection()
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index bf8538388d0a1e8dc13f38d9c9987694b0c2d64e..2805537dc992c2a2620ee0ab2550ea6d5cd992e4 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -3496,9 +3496,19 @@ class History(WebRoot):
 
         self.history = HistoryTool()
 
-    def index(self, limit=100):
-        limit = int(limit)
+    def index(self, limit=None):
+    
+        if limit is None:
+            if sickbeard.HISTORY_LIMIT:
+                limit = int(sickbeard.HISTORY_LIMIT)
+            else:
+                limit = 100
+        else:
+            limit = int(limit)
+            
         sickbeard.HISTORY_LIMIT = limit
+        
+        sickbeard.save_config()
 
         compact = []
         data = self.history.get(limit)