var notIgnoredImage = '../../Content/Images/notIgnored.png' ;
var ignoredImage = '../../Content/Images/ignored.png' ;
var notAiredImage = '../../Content/Images/NotAired.png' ;
var readyImage = '../../Content/Images/Ready.png' ;
var downloadingImage = '../../Content/Images/Downloading.png' ;
var seriesId = 0 ;
var saveSeasonIgnoreUrl = '../Series/SaveSeasonIgnore' ;
var saveEpisodeIgnoreUrl = '../Series/SaveEpisodeIgnore' ;
var renameEpisodeUrl = '../Episode/Rename' ;
var renameSeasonUrl = '../Episode/RenameSeason' ;
var searchSeasonUrl = '../Episode/SearchSeason' ;
//Episode Ignore Functions
$ ( ".ignoreEpisode" ) . live ( "click" , function ( ) {
var toggle = $ ( this ) ;
var ignored = toggle . hasClass ( 'ignored' ) ;
if ( ignored ) {
toggle . removeClass ( 'ignored' ) ;
toggle . attr ( 'src' , notIgnoredImage ) ;
}
else {
toggle . addClass ( 'ignored' ) ;
toggle . attr ( 'src' , ignoredImage ) ;
}
var seasonNumber = 0 ;
//Flip the ignored to the new state (We want the new value moving forward)
ignored = ! ignored ;
if ( toggle . hasClass ( 'ignoredEpisodesMaster' ) ) {
//seasonNumber = toggle.attr('id').replace('master_', '');
seasonNumber = toggle . attr ( 'class' ) . split ( /\s+/ ) [ 2 ] . replace ( 'ignoreSeason_' , '' ) ;
toggleChildren ( seasonNumber , ignored ) ;
toggleMasters ( seasonNumber , ignored ) ;
saveSeasonIgnore ( seasonNumber , ignored ) ;
}
else {
//Check to see if this is the last one ignored or the first not ignored
seasonNumber = toggle . attr ( 'class' ) . split ( /\s+/ ) [ 1 ] . replace ( 'ignoreEpisode_' , '' ) ;
var episodeId = toggle . attr ( 'id' ) ;
toggleMaster ( seasonNumber , ignored ) ;
saveEpisodeIgnore ( episodeId , ignored ) ;
}
} ) ;
function toggleChildren ( seasonNumber , ignored ) {
var ignoreEpisodes = $ ( '.ignoreEpisode_' + seasonNumber ) ;
if ( ignored ) {
ignoreEpisodes . each ( function ( index ) {
$ ( this ) . addClass ( 'ignored' ) ;
$ ( this ) . attr ( 'src' , ignoredImage ) ;
} ) ;
}
else {
ignoreEpisodes . each ( function ( index ) {
$ ( this ) . removeClass ( 'ignored' ) ;
$ ( this ) . attr ( 'src' , notIgnoredImage ) ;
} ) ;
}
}
function toggleMaster ( seasonNumber ) {
//Toggles all master toggles when the childen changes or the grid is loaded
var ignoreEpisodes = $ ( '.ignoreEpisode_' + seasonNumber ) ;
var ignoredCount = ignoreEpisodes . filter ( '.ignored' ) . length ;
var masters = $ ( '.ignoreSeason_' + seasonNumber ) ;
masters . each ( function ( index ) {
if ( ignoreEpisodes . length == ignoredCount ) {
$ ( this ) . attr ( 'src' , ignoredImage ) ;
$ ( this ) . addClass ( 'ignored' ) ;
}
else {
$ ( this ) . attr ( 'src' , notIgnoredImage ) ;
$ ( this ) . removeClass ( 'ignored' ) ;
}
} ) ;
}
function toggleMasters ( seasonNumber , ignored ) {
//Toggles the other master(s) to match the one that was just changed
var masters = $ ( '.ignoreSeason_' + seasonNumber ) ;
if ( ignored ) {
masters . each ( function ( index ) {
$ ( this ) . addClass ( 'ignored' ) ;
$ ( this ) . attr ( 'src' , ignoredImage ) ;
} ) ;
}
else {
masters . each ( function ( index ) {
$ ( this ) . removeClass ( 'ignored' ) ;
$ ( this ) . attr ( 'src' , notIgnoredImage ) ;
} ) ;
}
}
//Functions called by the Telerik Season Grid
function grid _rowBound ( e ) {
var dataItem = e . dataItem ;
var ignored = dataItem . Ignored ;
var episodeId = dataItem . EpisodeId ;
var ignoredIcon = $ ( '#' + episodeId ) ;
if ( ignored ) {
ignoredIcon . attr ( 'src' , ignoredImage ) ;
}
else {
ignoredIcon . attr ( 'src' , notIgnoredImage ) ;
ignoredIcon . removeClass ( 'ignored' ) ;
}
if ( seriesId == 0 )
seriesId = dataItem . SeriesId ;
}
function grid _dataBound ( e ) {
var id = $ ( this ) . attr ( 'id' ) ;
var seasonNumber = id . replace ( 'seasons_' , '' ) ;
toggleMaster ( seasonNumber ) ;
setMasterStatus ( this ) ;
}
//Episode Ignore Saving
function saveSeasonIgnore ( seasonNumber , ignored ) {
$ . ajax ( {
type : "POST" ,
url : saveSeasonIgnoreUrl ,
data : jQuery . param ( { seriesId : seriesId , seasonNumber : seasonNumber , ignored : ignored } ) ,
error : function ( req , status , error ) {
alert ( "Sorry! We could save the ignore settings for Series: " + seriesId + ", Season: " + seasonNumber + " at this time. " + error ) ;
}
} ) ;
}
function saveEpisodeIgnore ( episodeId , ignored ) {
$ . ajax ( {
type : "POST" ,
url : saveEpisodeIgnoreUrl ,
data : jQuery . param ( { episodeId : episodeId , ignored : ignored } ) ,
error : function ( req , status , error ) {
alert ( "Sorry! We could save the ignore settings for Episode: " + episodeId + " at this time. " + error ) ;
}
} ) ;
}
//Episode Renaming
function renameEpisode ( id ) {
$ . ajax ( {
type : "POST" ,
url : renameEpisodeUrl ,
data : jQuery . param ( { episodeFileId : id } ) ,
error : function ( req , status , error ) {
alert ( "Sorry! We could rename " + id + " at this time. " + error ) ;
}
} ) ;
}
function renameSeason ( seriesId , seasonNumber ) {
$ . ajax ( {
type : "POST" ,
url : renameSeasonUrl ,
data : jQuery . param ( { seriesId : seriesId , seasonNumber : seasonNumber } ) ,
error : function ( req , status , error ) {
alert ( "Sorry! We could rename series: " + seriesId + " season: " + seasonNumber + " at this time. " + error ) ;
}
} ) ;
}
//Season Search
function searchSeason ( seriesId , seasonNumber ) {
$ . ajax ( {
type : "POST" ,
url : searchSeasonUrl ,
data : jQuery . param ( { seriesId : seriesId , seasonNumber : seasonNumber } ) ,
error : function ( req , status , error ) {
alert ( "Sorry! We could search for series: " + seriesId + " season: " + seasonNumber + " at this time. " + error ) ;
}
} ) ;
}
//Set master status to match children
function setMasterStatus ( grid ) {
//Get children of this grid
var masterStatus = $ ( grid ) . find ( '.statusImageMaster' ) ;
var statuses = $ ( grid ) . find ( '.statusImage' ) . filter ( ':not(.statusImageMaster)' ) ;
var episodeCount = statuses . length ;
//Get missing count
if ( statuses . filter ( '.status-Missing' ) . length == episodeCount ) {
//Leave as is (default is missing)
return ;
}
if ( statuses . filter ( '.status-NotAired' ) . length == episodeCount ) {
masterStatus . attr ( 'src' , notAiredImage ) ;
return ;
}
if ( statuses . filter ( '.status-Ready' ) . length == episodeCount ) {
masterStatus . attr ( 'src' , readyImage ) ;
return ;
}
if ( statuses . filter ( '.status-Downloading' ) . length == episodeCount ) {
masterStatus . attr ( 'src' , downloadingImage ) ;
return ;
}
}