/*
 * Author: Miguel Torrez ignitecast.com
 * Date: 01-28-2015
 *
 * IgniteCast JavaScript Player Program Over View(IC_JSP_Views_ProgramOver)
 *
 * jQuery Dependent
 *
 * Constructor object that creates, and handles the Ignite Cast JavaScript player.
 */
function IC_JSP_Views_ProgramOver(obj, $el) {
	var ui, c, d, f;
	ui = this;
	ui.$el = null;
	ui.$player = null;
	ui.$po_btnWrapper = null;
	ui.$po_playFromBeginningBtn = null;
	ui.$po_playFromLastVisitBtn = null;
	ui.appendTo = null;
	ui.config = {
		flags : {
			created : false,
			debug : true,
			init : false,
			setup : false,
			showing : false
		}
	};
	ui.currentView = null;
	ui.create = function() {
		if(d) {
			console.warn('RUNNING create METHOD IN PLAYER ProgramOver OBJECT!');
		}
		var tpl;
		ui.remove();
		tpl = '<div class="ip-programOverScreen-wrapper">';
		tpl += '	<table>';
		tpl += '		<tbody>';
		tpl += '			<tr>';
		tpl += '				<td>';
		tpl += '					<div class="ip-programOverScreen-btnWrapper">';
		tpl += '						<button class="ip-programOverScreen-playFromLastBtn ip-player-standard-btn"><i></i><span>PLAY FROM LAST VISIT</span></button>';
		tpl += '						<button class="ip-programOverScreen-playFromBeginningBtn ip-player-standard-btn"><i></i><span>PLAY FROM BEGINNING</span></button>';
		tpl += '					</div>';
		tpl += '				</td>';
		tpl += '			</tr>';
		tpl += '		</tbody>';
		tpl += '	</table>';
		tpl += '</div>';
		if(d) {
			console.warn('RUNNING create METHOD IN PLAYER ProgramOver OBJECT!');
		}
		ui.$el = $(tpl);
		ui.appendTo.append(ui.$el);
		ui.$po_btnWrapper = ui.$el.find('.ip-programOverScreen-btnWrapper');
		ui.$po_playFromLastVisitBtn = ui.$el.find('.ip-programOverScreen-playFromLastBtn');
		ui.$po_playFromBeginningBtn = ui.$el.find('.ip-programOverScreen-playFromBeginningBtn');
		f.created = true;
		if(d) {
			console.warn('SUCCESSFULLY RAN create METHOD IN PLAYER stage OBJECT!');
		}
		return;
	};
	ui.hide = function() {
		if(d) {
			console.warn('RUNNING hide METHOD IN PLAYER ProgramOver OBJECT!');
		}
		ui.$player.removeClass('showingJSPlayerProgramOverScreen');
		f.showing = false;
		if(d) {
			console.warn('SUCCESSFULLY RAN hide METHOD IN PLAYER ProgramOver OBJECT!');
		}
		return;
	};
	ui.init = function(obj) {
		if(d) {
			console.warn('RUNNING init METHOD ON PLAYER ProgramOver OBJECT!');
		}
		ui.$player = $el;
		ui.create();
		f.init = true;
		if(d) {
			console.warn('SUCCESSFULLY RAN init METHOD ON PLAYER ProgramOver OBJECT!');
		}
		return;
	};
	ui.remove = function(obj) {
		if(d) {
			console.warn('RUNNING remove METHOD IN PLAYER ProgramOver OBJECT!');
		}
		if(ui.$el === undefined || ui.$el === null) {
			if(d) {
				console.warn('FAILED TO REMOVE ProgramOver DOM ELEMENT IN PLAYER OBJECT! ProgramOver ELEMENT IS NULL || UNDEFINED!');
			}
			return;
		}
		ui.$el.remove();
		f.created = false;
		if(d) {
			console.warn('SUCCESSFULLY RAN remove METHOD IN PLAYER ProgramOver OBJECT!');
		}
		return;
	};
	ui.setup = function(obj) {
		if( typeof (obj) === 'object') {
			$.extend(true, ui, obj);
		}
		ui = this;
		c = ui.config;
		f = c.flags;
		d = f.debug;
		if(d && !f.setup) {
			console.warn('RUNNING PLAYER ProgramOver CONSTRUCTOR OBJECT!');
			console.warn('RUNNING INITIAL setup METHOD ON PLAYER ProgramOver OBJECT!');
		} else if(d && f.setup) {
			console.warn('RUNNING setup METHOD ON PLAYER ProgramOver OBJECT!');
		}
		if(d && !f.setup) {
			console.warn('SUCCESSFULLY RAN INITIAL setup METHOD ON PLAYER ProgramOver OBJECT!');
		} else if(d && f.setup) {
			console.warn('SUCCESSFULLY RAN setup METHOD ON PLAYER ProgramOver OBJECT!');
		}
		f.setup = true;
		return;
	};
	ui.show = function() {
		if(d) {
			console.warn('RUNNING show METHOD IN PLAYER ProgramOver OBJECT!');
		}
		ui.$player.addClass('showingJSPlayerProgramOverScreen');
		f.showing = true;
		if(d) {
			console.warn('SUCCESSFULLY RAN show METHOD IN PLAYER ProgramOver OBJECT!');
		}
		return;
	};
	ui.update = function(obj) {
		var exerciseName, exerciseNumber, showNextBtn, showTOCBtn;
		showTOCBtn = true;
		showNextBtn = true;
		if( typeof (obj) === 'object') {
			if(obj.exerciseName !== undefined && obj.exerciseName !== null) {
				exerciseName = obj.exerciseName;
			}
			if(obj.exerciseNumber !== undefined && obj.exerciseNumber !== null) {
				exerciseNumber = obj.exerciseNumber;
			}
			if(obj.showTOCBtn !== undefined && obj.showTOCBtn !== null) {
				showTOCBtn = obj.showTOCBtn;
			}
			if(obj.showNextBtn !== undefined && obj.showNextBtn !== null) {
				showNextBtn = obj.showNextBtn;
			}
		}
		ui.$ts_exerciseName.text(exerciseName);
		ui.$ts_exerciseNumber.text(exerciseNumber);
		if(!showTOCBtn) {
			ui.$ts_TOCBtn.hide();
		} else {
			ui.$ts_TOCBtn.show();
			ui.$ts_btnWrapper.show();
		}
		if(!showNextBtn) {
			ui.$ts_nextBtn.hide();
		} else {
			ui.$ts_nextBtn.show();
			ui.$ts_btnWrapper.show();
		}
		if(!showTOCBtn && !showNextBtn) {
			ui.$ts_btnWrapper.hide();
		}
		if( typeof (obj) === 'object') {
			if( typeof (obj.complete) === 'function') {
				obj.complete();
			}
		}
	};
	ui.setup(obj);
	ui.init(obj);
};