//INIT
jQT = new $.jQTouch({
	icon: 'img/istreamdev.png',
	addGlossToIcon: true,
	useFastTouch: true,
	startupScreen: 'img/startup.png',
	statusBar: 'black',
	iconIsGlossy: true,
	fullscreen: true,
	preloadImages: [
	'themes/jqt/img/chevron.png',
	'themes/jqt/img/back_button.png',
	'themes/jqt/img/back_button_clicked.png',
	'themes/jqt/img/button_clicked.png',
	'themes/jqt/img/button.png',
	'themes/jqt/img/button_clicked.png',
	'themes/jqt/img/loading.gif',
	'themes/jqt/img/toolbar.png',
	'themes/jqt/img/on_off.png',
	'img/loading.gif',
	'img/audio.png',
	'img/epg.png',
	'img/media.png',
	'img/record.png',
	'img/timers.png',
	'img/timeron.png',
	'img/timeroff.png',
	'img/timerrec.png',
	'img/tv.png',
	'img/video.png',
	'img/stream.png',
	'img/stream_clicked.png',
	'img/istreamdev.png',
	'img/mask.png',
	'img/nologoTV.png',
	'img/nologoREC.png',
	'img/nologoMEDIA.png',
	'img/rec.png',
	'img/rec_clicked.png',
	'img/sw-alpha.png',
	'img/sw-button-cancel.png',
	'img/sw-button-done.png',
	'img/sw-header.png',
	'img/sw-slot-border.png'
	]
});

// [GENERIC STUFF]
// Global variable

dataString = "action=getGlobals";
$.getJSON("bin/backend.php",
			dataString,
			function(data){	
			streamdev_server = data.streamdev_server;
			rec_path = data.rec_path;
			video_path = data.video_path;
			audio_path = data.audio_path;
			}
		);

//Goto home
$('#home_but').tap(function(event) {
	event.preventDefault();
	jQT.goTo('#home','flip');
});

//JSON query loading handler
function json_start(button) {
		$(button).addClass('active');
		$('#loader').addClass("loader");

}
function json_complete(destination,effect) {
		$('#loader').removeClass("loader");
		$('a').removeClass('active');
		jQT.goTo(destination,effect);
}
function hide_loader() {
	$('#loader').removeClass("loader");
	$('a').removeClass('active');
}

function reinitDivs() {
	$('#categories #cat_menu').html('');
	$('#channels #chan_menu').html('');
	$('#timers ul[rel="timers"]').html('');
}



//  [/GENERIC STUFF]

//	[HOME SECTION]
//buttons
$('#categories_but').tap(function(event) {
	event.preventDefault();
	json_start(this);
	gen_categories();	
	return false;
});

$('#recording_but').tap(function(event) {
	event.preventDefault();
	json_start(this);
	browser = 1;
	gen_browser(rec_path,browser,"Recordings","rec");
	return false;
});

$('#timers_but').tap(function(event) {
	event.preventDefault();
	json_start(this);
	gen_timers();
	return false;
});

$('#video_but').tap(function(event) {
	event.preventDefault();
	json_start(this);
	browser = 1;
	gen_browser(video_path,browser,"Videos","vid");
	return false;
});

$('#audio_but').tap(function(event) {
	event.preventDefault();
	json_start(this);
	browser = 1;
	gen_browser(audio_path,browser,"Audio","aud");
	return false;
});

$('#runningsessions li a').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var session = $(this).attr('rel');
	if (session=="killsessions") {
		var dataString = 'action=stopBroadcast&session=all';
		$.getJSON("bin/backend.php",
		dataString,
		function(data) {
				var status = data.status;
				var message = data.message;
				hide_loader();
				getRunningSessions();
				});
	} else {
	gen_streaming(session);
	}
	return false;
});

// show active sessions
$(document).ready(function(e){ 
getRunningSessions();
});

//reinit RunningSessions when going to Home:
$(document).ready(function(e){ 
$('#home').bind('pageAnimationStart', function(event, info){ 
	if (info.direction == 'in') {
		getRunningSessions()
		}  
	})
});

function getRunningSessions() {
var dataString = "action=getRunningSessions";
	$('#home #runningsessions').html('');
	//Json call to get category array
	$.getJSON("bin/backend.php",
	dataString,
	function(data){
		$('#home #runningsessions').append('<li><span class="menutitle">SESSIONS</span></li>');
		if ( data.broadcast.length >= 1 ) {
			$.each(data.broadcast, function(i,broadcast){
			session = broadcast.session;
			name = broadcast.name;
			type = broadcast.type;
			encoding = broadcast.encoding;
			if (encoding == 1) { encstatus = '*'; }
			else { encstatus = ''; }
			if (type == 'tv') { var pic='tv.png'; }
			else if (type == 'rec') { var pic='record.png'; }
			else if (type == 'vid') { var pic='video.png'; }
			$('#home #runningsessions').append('<li class="arrow"><a rel="' + session + '" href="#"><img class="menuicon" src="img/' + pic + '" /><span class="menuname">' + encstatus + name + '</span></a></li>');
			});
			$('#home #runningsessions').append('<li><a rel="killsessions" href="#"><span class="menuname">Stop all sessions</span></a></li>');
		}
		else {
		$('#home #runningsessions').append('<li><span class="menuname">No running session</span></li>');
		}
	});
}
//	[/HOME SECTION]

//	[TV SECTION]
//buttons
$('#categories ul#cat_menu a').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var category = $(this).text();
	gen_channels(category);
	return false;
});

$('#channels ul#chan_menu .chan_but').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var channame = $(this).find('span[class="name"]').text();
	var channumber = $(this).find('small[class="counter"]').text();
	gen_streamchannel(channame,channumber);
	return false;
});

$('#channels ul#chan_menu .toggleLink').tap(function(event) {
	event.preventDefault();
	$('#channels ul#chan_menu li[rel="toggle"]').show();
	$('#channels ul#chan_menu li[rel="showbut"]').remove();
});
//Gen Categories
function gen_categories() {
	$("#cat_menu").html('');
	var dataString = "action=getTvCat";
		//Json call to get category array
		$.getJSON("bin/backend.php",
		dataString,
		function(data){
			$.each(data.categories, function(i,categories){
			$("#cat_menu").append('<li class="arrow"><a class="cat_but" href="#">' + categories.name  + '</a><small class="counter">' + categories.channels + '</small></li>');
			});
		json_complete('#categories','cube');
		})
}

//Gen Channels
function gen_channels(category) {
		$("#chan_menu").html('');
		var dataString = "action=getTvChan&cat=" + encodeURIComponent(category);
		//Json call to get category array
		$.getJSON("bin/backend.php",
		dataString,
		function(data){
			$.each(data.channel,function(i,channel){
				if ( i <= 10 ) {
					$("#chan_menu").append('<li class="channellist"><a class="chan_but" href="#"><img src="logos/' + channel.name + '.png"/><small class="counter">' + channel.number + '</small><span class="name">' + channel.name + '</span><span class="comment">' + channel.now_title + '</span></a></li>');
					}
				else {
					$("#chan_menu").append('<li class="channellist" rel="toggle"><a class="chan_but" href="#"><img src="logos/' + channel.name + '.png"/><small class="counter">' + channel.number + '</small><span class="name">' + channel.name + '</span><span class="comment">' + channel.now_title + '</span></a></li>');
					}
				});
				$('li[rel="toggle"]').hide();
				if ( data.channel.length > 10 ) {
				$("#chan_menu").append('<li rel="showbut"><a href="#" class="toggleLink">Show all</a></li>');
				}
				json_complete('#channels','cube');
		})
}


//	[/TV SECTION]
//	[STREAM SECTION]
//buttons
$('#streamchannel span.streamButton a').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var type = $("#streamchannel").find('span[rel="type"]').text();
    var url = $("#streamchannel").find('span[rel="url"]').text();
    var mode = $(this).attr('id');
    start_broadcast(type,url,mode);
	return false;
});
$('#streamrec span.streamButton a').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var type = $("#streamrec").find('span[rel="type"]').text();
    var url = $("#streamrec").find('span[rel="url"]').text();
    var mode = $(this).attr('id');
    start_broadcast(type,url,mode);
	return false;
});
$('#streamvid span.streamButton a').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var type = $("#streamvid").find('span[rel="type"]').text();
    var url = $("#streamvid").find('span[rel="url"]').text();
    var mode = $(this).attr('id');
    start_broadcast(type,url,mode);
	return false;
});
$('#streaming span.streamButton a[rel="stopbroadcast"]').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var session = $("#streaming").find('span[rel="session"]').text();
    stop_broadcast(session);
	return false;
});
//Gen tv start stream
function gen_streamchannel(channame,channumber) {
	$('#streamchannel').find('h1').html( '<img class="menuicon" src="img/tv.png" /> ' +channame);
	$('#streamchannel').find('#thumbnail').attr('src','logos/' + channame + ".png");
	var dataString = "action=getChanInfo&chan=" + channumber;
	//Json call to get tv program info
	$.getJSON("bin/backend.php",
			dataString,
			function(data){
			var program = data.program;
			$("#streamchannel").find('span[class="name_now"]').html( 'Now: ' + program.now_title );
			$("#streamchannel").find('span[class="epgtime_now"]').html( program.now_time );
			$("#streamchannel").find('span[class="desc_now"]').html( program.now_desc );
			$("#streamchannel").find('span[class="name_next"]').html( 'Next: ' + program.next_title );
			$("#streamchannel").find('span[class="epgtime_next"]').html( program.next_time );
			$("#streamchannel").find('span[rel="url"]').html(streamdev_server + channumber);
            $("#streamchannel").find('span[rel="type"]').html('tv');
			json_complete('#streamchannel','cube');
		});
}

function gen_streamrec(folder,path) {
	var dataString = "action=getRecInfo&rec=" + encodeURIComponent(path) + "/" + encodeURIComponent(folder);
	//Json call to get rec info
	$.getJSON("bin/backend.php",
			dataString,
			function(data){
			var program = data.program;
			$('#streamrec').find('h1').html('<img class="menuicon" src="img/record.png" /> ' + program.name);
			$('#streamrec').find('#thumbnail').attr('src','logos/' + program.channel + ".png");
			$("#streamrec").find('span[class="name_now"]').html( program.name );
			$("#streamrec").find('span[class="epgtime_now"]').html( 'Recorded: ' + program.recorded );
			$("#streamrec").find('span[class="desc_now"]').html( program.desc );
			$("#streamrec").find('span[rel="url"]').html( path + "/" + folder );
            $("#streamrec").find('span[rel="type"]').html('rec');
			json_complete('#streamrec','cube');
		});
}

function gen_streamvid(filename,path) {
	var dataString = "action=getVidInfo&file=" + encodeURIComponent(path) + "/" + encodeURIComponent(filename);
	//Json call to get rec info
	$.getJSON("bin/backend.php",
			dataString,
			function(data){
			var program = data.program;
			var time = new Date();

			$('#streamvid').find('h1').html('<img class="menuicon" src="img/video.png" /> ' + program.name);
			$('#streamvid').find('#thumbnail').attr('src','ram/temp-logo.png?'+time);
			$("#streamvid").find('span[class="name_now"]').html( program.name );
			$("#streamvid").find('span[class="epgtime_now"]').html( 'Duration: ' + program.duration );
			desc='<b>format: </b>' + program.format + '<br><b>video: </b>' + program.video + '<br><b>audio: </b>' + program.audio + '<br><b>resolution: </b>' + program.resolution;
			$("#streamvid").find('span[class="desc_now"]').html( desc );
			$("#streamvid").find('span[rel="url"]').html( path + "/" + filename );
            $("#streamvid").find('span[rel="type"]').html('vid');
			json_complete('#streamvid','cube');
			});
}
//Gen streaming page
function gen_streaming(session) {
	$("#streaming").find('span[rel="session"]').html(session);
	var dataString = "action=getStreamInfo&session=" + session;
	//Json call to start streaming 
	$.getJSON("bin/backend.php",
			dataString,
			function(data){	
			var stream = data.stream;
			$('#streaming').find('#thumbnail').attr('src','ram/session' + stream.session + '/thumb.png');
			$("#streaming").find('span[rel="thumbwidth"]').html(stream.thumbwidth);
			$("#streaming").find('span[rel="thumbheight"]').html(stream.thumbheight);
			if (stream.type == "tv") 
				{
				$('#streaming').find('h1').html('<img class="menuicon" src="img/tv.png" /> ' + stream.name );
				$('#streaming').find('#player').css('width', '90px');
				var streaminfo = '<li><span class="name_now">Now: ' + stream.now_title + '</span>';
				streaminfo += '<span class="epgtime_now">' + stream.now_time + '</span>';
				streaminfo += '<span class="desc_now">' + stream.now_desc + '</span></li>';
				streaminfo += '<li><span class="name_next">Next: ' + stream.next_title + '</span>';
				streaminfo += '<span class="epgtime_next">' + stream.next_time + '</span></li>';
				$("#streaming").find('ul[class="streaminfo"]').html(streaminfo);
				}
			else if (stream.type == "rec") 
				{
				$('#streaming').find('h1').html('<img class="menuicon" src="img/record.png" /> ' + stream.name );
				$('#streaming').find('#player').css('width', '90px');
				var streaminfo = '<li><span class="name_now">' + stream.name + '</span>';
				streaminfo += '<span class="epgtime_now">Recorded: ' + stream.recorded + '</span>';
				streaminfo += '<span class="desc_now">' + stream.desc + '</span></li>';
				$("#streaming").find('ul[class="streaminfo"]').html(streaminfo);
				}
			else if (stream.type == "vid") 
				{
				$('#streaming').find('h1').html('<img class="menuicon" src="img/video.png" /> ' + stream.name );
				$('#streaming').find('#player').css('width', '190px');
				var streaminfo = '<li><span class="name_now">' + stream.name + '</span>';
				streaminfo += '<span class="epgtime_now">Duration: ' + stream.duration + '</span>';
				desc='<b>format: </b>' + stream.format + '<br><b>video: </b>' + stream.video + '<br><b>audio: </b>' + stream.audio + '<br><b>resolution: </b>' + stream.resolution;
				streaminfo += '<span class="desc_now">' + desc + '</span></li>';
				$("#streaming").find('ul[class="streaminfo"]').html(streaminfo);
				}
			$('ul[class="streamstatus"]').find('span[class="mode"]').html('Please wait.'); 
			$("#streaming").find('span[rel="name"]').html(stream.name);
			json_complete('#streaming','cube');
		});
}

//Start broadcast
function start_broadcast(type,url,mode) {
     var dataString = 'action=startBroadcast&type='+type+'&url='+encodeURIComponent(url)+'&mode=' + mode;
	 $.getJSON("bin/backend.php",
	 dataString,
	 function(data){
			var session = data.session;
			gen_streaming(session);	
		});

}
//Stop broadcast

function stop_broadcast(session) {
	var dataString = 'action=stopBroadcast&session='+session;
	$.getJSON("bin/backend.php",
	dataString,
	function(data) {
			var status = data.status;
			var message = data.message;
			hide_loader();
			jQT.goBack();
    });
}

//trick to prevent animation bug with object.
$(document).ready(function(e){ 
$('#streaming').bind('pageAnimationEnd', function(event, info){ 
	if (info.direction == 'in') {
		var session = $("#streaming").find('span[rel="session"]').text();
		var name = $("#streaming").find('span[rel="name"]').text();
		playvideo(session,name);
		} 
})

$('#streaming').bind('pageAnimationStart', function(event, info){ 
	var session = $("#streaming").find('span[rel="session"]').text();
	if (info.direction == 'out') {
		$('#player').html('<img class="thumbnail" id="thumbnail" src="ram/session' + session + '/thumb.png"></img>');
		}  
	})
});

//Get server status & Play video
function playvideo(session,name) {
	var prevmsg="";
	var status_OnComplete = function(data) {
		var status = data.status;
		var message = data.message;
		var url = data.url;
		var thumbwidth = $('#streaming span[rel="thumbwidth"]').text();
		var thumbheight = $('#streaming span[rel="thumbheight"]').text();
		$('#streaming ul[class="streamstatus"]').find('span[class="mode"]').html(message);
		if ( status == "ready" ) {
			$('#player').html('<video id="videofeed" width="' + thumbwidth + '" height="' + thumbheight + '" poster="ram/session' + session + '/thumb.png" src="' + url + '" ></video><span rel="ready"></span>');
			return false;
			}
		prevmsg = message;
		status_Start(session,prevmsg);
	}
	
	var status_Start = function(session,prevmsg) {
		dataString = "action=getStreamStatus&session=" + session + "&msg=" + encodeURIComponent(prevmsg);
		$.getJSON("bin/backend.php",
		dataString,
		function(data){	
			status_OnComplete(data)
		});
	}
	status_Start(session,prevmsg);
}
//	[/STREAM SECTION]

//	[BROWSER SECTION]
//buttons
$('ul[rel="filelist"] li[class="arrow"] a').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var type = $(this).attr('rel');
	if ( type == 'audio' ) {
	var name = $(this).find('span[class="tracktitle"]').text();
	}
	else {
	var name = $(this).find('span[class="menuname"]').text();
	}
	var browser = $(this).parents('div').find('span[rel="currentbrowser"]').html();
	var foldertype = $('#browser'+browser+' span[rel="foldertype"]').html();
	var path = $('#browser'+browser+' span[rel="path"]').text();
	browser = parseInt(browser);
	browser++;
	if ( type == "folder" ) 
		{
		newpath=path+name+'/';
		gen_browser(newpath,browser,name,foldertype);
		}
	else if ( type == "rec" )
		{
		gen_streamrec(name,path);
		}
	else if ( type == "video" )
		{
		gen_streamvid(name,path);
		}
	return false;
});




$('div[rel="browser"] a[class="back"]').tap(function(event) {
	event.preventDefault();
	$(this).parents('div[rel="browser"]').remove();
});

$('div[rel="browser"] #home_but').tap(function(event) {
	event.preventDefault();
	$('#home').bind('pageAnimationEnd', function(event, info){ 
			$('#jqt div[rel="browser"]').remove();
			$('#home').unbind('pageAnimationEnd');
		});
});



//Generate browser div according to type
function gen_browser(path,browser,name,foldertype) {
	browser_template = '<div class="toolbar"></div>';
	browser_template += '<ul rel="filelist" class="rounded"></ul>';
	browser_template += '<div rel="dataholder" style="visibility:hidden">'
	browser_template += '<span rel="path"></span>';
	browser_template += '<span rel="currentbrowser"></span>';
	browser_template += '<span rel="foldertype">' + foldertype + '</span>';
	browser_template += '</div>';
	$('#jqt').append('<div id="browser' + browser + '" rel="browser"></div>'),
	$('#browser'+browser).html(browser_template);
	if ( path == rec_path || path == video_path || path == audio_path ) {
		toolbar = '<a href="#" class="back">Home</a>';
		if ( foldertype == 'rec' ){
		toolbar += '<h1><img class="menuicon" src="img/record.png" /> ' + name + '</h1>';
		} 
		else if ( foldertype == 'vid' ){
			toolbar += '<h1><img class="menuicon" src="img/video.png" /> ' + name + '</h1>';
		}
		else if ( foldertype == 'aud' ){
			toolbar += '<h1><img class="menuicon" src="img/audio.png" /> ' + name + '</h1>';
		}
		$('#browser' + browser + ' div[class="toolbar"]').html(toolbar);
	}
	else {
		toolbar = '<a href="#" class="back">Back</a>';
		toolbar += '<a href="#home" id="home_but" class="button">Home</a>';
		if ( foldertype == 'rec' ){
			toolbar += '<h1><img class="menuicon" src="img/record.png" /> ' + name + '</h1>';
		} 
		else if ( foldertype == 'vid' ){
			toolbar += '<h1><img class="menuicon" src="img/video.png" /> ' + name + '</h1>';
		}
		else if ( foldertype == 'aud' ){
			toolbar += '<h1><img class="menuicon" src="img/audio.png" /> ' + name + '</h1>';
		}
		$('#browser' + browser + ' div[class="toolbar"]').html(toolbar);
	}
	var dataString = 'action=browseFolder&path='+encodeURIComponent(path);
	$.getJSON("bin/backend.php",
	dataString,
	function(data) {
			$("#browser" + browser).find('ul').html('');
			$("#browser" + browser).find('span[rel="path"]').html(path);
			$("#browser" + browser).find('span[rel="currentbrowser"]').html(browser);
			$.each(data.list, function(i,list){
				if (list.type == "folder") {
				$("#browser" + browser).find('ul').append('<li class="arrow"><a href="#" rel="folder"><span class="menuname">' + list.name + '</span></a></li>');			
				}
				else if (list.type == "rec") {
				$("#browser" + browser).find('ul').append('<li class="arrow"><a href="#" rel="rec"><img class="menuicon" src="img/record.png" /><span class="menuname">' + list.name + '</span></a></li>');	
				}
				else if ( list.type == "video" ) {
				$("#browser" + browser).find('ul').append('<li class="arrow"><a href="#" rel="video"><img class="menuicon" src="img/video.png" /><span class="menuname">' + list.name + '</span></a></li>');	
				}
				else if ( list.type == "audio" ) {
				$("#browser" + browser).find('ul').append('<li class="track"><a href="javascript:document.player.Play();" onclick="addplayer(this);" rel="audio"><div class="numberbox"><span class="number">' + list.number + '</span></div><span class="tracktitle">' + list.name + '</span><div class="timebox"><span class="time">' + list.length +'</span></div></a></li>');
				}
			});
			json_complete('#browser' + browser,'cube');
    });
}

//Add audio player code when needed
function addplayer(button) {
	json_start(button);
	var name = $(button).find('span[class="tracktitle"]').text();
	var browser = $(button).parents('div').find('span[rel="currentbrowser"]').html();
	var path = $('#browser'+browser+' div[rel="dataholder"] span[rel="path"]').text();
	browser = parseInt(browser);
	$('#browser'+browser+' #div_player').remove();
	$('#browser'+browser).append('<div style="position:absolute; left:0; top:0" name="div_player" id="div_player"></div>');
	//get playlist data
	dataString = 'action=streamAudio&path=' + encodeURIComponent(path) + '&file=' + encodeURIComponent(name);
	$.ajax({
	url: "bin/backend.php",
	dataType: 'json',
	data: dataString,
	async: false,
	success: function(json) {
		var track = json.track;
		playercode = "<embed id='musicplayer' enablejavascript='true' id='musicplayer' src='" + track[0].file + "' width='0' height='0' autoplay='false' name='player' type='audio/mp3' loop='true' controller='false'"; 
		for ( var i=1; i<track.length; i+=1 ) {
			qtattr = "'<" + track[i].file + ">'";
			playercode += "qtnext" + i + "=" + qtattr;
			}
		playercode += "></embed>";
		$('#div_player').html(playercode);
		hide_loader();
		return true;
		}

	});
}
//	[/BROWSER SECTION]

//  [TIMER SECTION]
//get fullchannel list onload

$(document).ready(function(e){ 
gen_formchanlist();
});

// buttons
$('#timers li[class="arrow"] a').tap(function(event) {
	event.preventDefault();
	$(this).addClass('active');
	if ( $(this).attr('rel') == "new" ) {
	gen_edittimer();
	} else {
	timerid = $(this).attr('rel');
	timerdata = $('#timers ul[rel="timers"] li a[rel="' + timerid + '"]').data("timerdata");
	id = timerdata.id;
	name = timerdata.name;
	active = timerdata.active;
	channumber = timerdata.channumber;
	channame = timerdata.channame;
	date = timerdata.date;
	starttime = timerdata.starttime;
	endtime = timerdata.endtime;
	gen_edittimer(id,name,active,channumber,channame,date,starttime,endtime);
	}
});	

$('#edittimer a[rel="deletetimer"]').tap(function(event) {
	event.preventDefault();
	json_start(this);
	var timer_id = $("input#timer_id").val();
	dataString = 'action=delTimer&id=' + timer_id;
	$.getJSON("bin/backend.php",
	dataString,
	function(data) {
		message = data.status + ": " + data.message;
		gen_timers("true");
		showStatus( 0,message );
		return false;
	});
});
	

// gen Timers
function gen_timers(edit) {
	$('#timers ul[rel="timers"]').html('');
	var dataString = 'action=getTimers';
	$.getJSON("bin/backend.php",
	dataString,
	function(data) {
		$('#timers ul[rel="timers"]').append('<li><span class="menutitle">Current timers</span></li>');
		$.each(data.timer, function(i,timer){
		if ( timer.running == "1" ) {
			timerli = '<li class="arrow"><a rel="' + timer.id + '" href="#"><img class="menuicon" src="img/timerrec.png" /><span class="menuname">' + timer.date + ' ' + timer.name + '</span></a></li>';
			}
			else
			{
				if ( timer.active == "1" ) {
					timerli = '<li class="arrow"><a rel="' + timer.id + '" href="#"><img class="menuicon" src="img/timeron.png" /><span class="menuname">' + timer.date + ' ' + timer.name + '</span></a></li>';
				} else {
					timerli = '<li class="arrow"><a rel="' + timer.id + '" href="#"><img class="menuicon" src="img/timeroff.png" /><span class="menuname">' + timer.date + ' ' + timer.name + '</span></a></li>';
				}
			}
		$('#timers ul[rel="timers"]').append(timerli);
		$('#timers ul[rel="timers"] li a[rel="' + timer.id + '"]').data("timerdata", timer);
		});
		if ( edit ) {
		hide_loader();
		jQT.goBack();
		}
		else {
		json_complete('#timers','cube');
		}
	});
}

function gen_edittimer(id,name,active,channumber,channame,date,starttime,endtime) {
	$('ul[ref="submitbut"]').remove();
	if (id) {
		$('#edittimer h1').html('<img class="menuicon" src="img/timers.png" / > EDIT TIMER');
		if (active == 1) 
		{
				$('#timer_active').attr('checked', true);

		}
		else {
		$('#timer_active').attr('checked', false);
		}
		
		$('#timer_id').val(id);
		$('#timer_name').val(name);
		$('#timer_chan option[value="' + channumber + '"]').attr("selected", "selected");
		$('#timer_date').val(date);
		var wheeldate = date;
		while (wheeldate.indexOf("-") > -1)
		wheeldate = wheeldate.replace("-", ",");
		$('#a_date').attr('href', "javascript:openSelectDate(" + wheeldate + ");");
		$('#layer_date').html(date);
		$('#timer_starttime').val(starttime);
		$('#timer_endtime').val(endtime);
		wheelstart_h = starttime.substring(0,2);
		wheelstart_m = starttime.substring(2,4);
		$('#layer_starttime').html(wheelstart_h + 'h' + wheelstart_m);
		$('#a_starttime').attr('href', "javascript:openSelectTime('layer_starttime','" + wheelstart_h + "','" + wheelstart_m + "')");
		wheelend_h = endtime.substring(0,2);
		wheelend_m = endtime.substring(2,4);
		$('#layer_endtime').html(wheelend_h + 'h' + wheelend_m);
		$('#a_endtime').attr('href', "javascript:openSelectTime('layer_endtime','" + wheelend_h + "','" + wheelend_m + "')");
		submitbuttons = '<ul ref="submitbut" class="individual">';
		submitbuttons += '<li><a class="submit_form" href="#">Edit</a></li>';
		submitbuttons += '<li><a class="abutton" rel="deletetimer" href="#">Delete</a></li></ul>';
		$('#timer').append(submitbuttons);
	}
	else {
	$('#edittimer h1').html('<img class="menuicon" src="img/timers.png" / > NEW TIMER');
	$('#timer_active').attr("checked", "checked");
	$('#timer_id').val(null);
	$('#timer_name').val(null);
	$('#timer_chan option').removeAttr("selected");
	$('#timer_chan option[value="1"]').attr("selected", "selected");
	$('#a_date').attr('href', "javascript:openSelectDate();");
	$('#layer_date').html("Select date");
	$('#timer_date').val(null);
	$('#timer_starttime').val(null);
	$('#timer_endtime').val(null);
	$('#a_starttime').attr('href', "javascript:openSelectTime('layer_starttime')");
	$('#layer_starttime').html('Select start time');
	$('#a_endtime').attr('href', "javascript:openSelectTime('layer_endtime')");
	$('#layer_endtime').html('select end time');
	submitbutton = '<ul ref="submitbut" class="rounded">';
	submitbutton +=	'<li><center><a class="submit_form" href="#">Create</a></center></li></ul>';
	$('#timer').append(submitbutton);
	}
	$('.formerror').hide(); 
	json_complete('#edittimer','cube');
}
//get full chanlist for timer page ( doing it one time on document load ).
function gen_formchanlist() {
	var dataString = 'action=getFullChanList';
	$.getJSON("bin/backend.php",
	dataString,
	function(data) {
	$('#jqt').data('channellist',data);
	$.each(data.category, function(i,category){
		$('#timer_chan').append('<optgroup label="' + category.name + '">');
			var catname = category.name;
			$.each(category.channel, function(j, channel){
				$('#timer_chan optgroup[label="' + catname +'"]').append('<option value="' + channel.number + '">' + channel.name +'</option>');
			});
		$('#timer_chan').append('</optgroup>');
		});
	});
}

// TIMER FORM VALIDATION & SUBMIT
$('.submit_form').tap(function(event) {  
		event.preventDefault();
		$('.formerror').hide();  
		$(this).removeClass('active');
		var timer_name = $("input#timer_name").val();   
		if (timer_name == "") {   
			$("li#timer_name_error").show();   
			$.scrollTo('#edittimer #ul[rel="name"]');
		return false;   
		}   
		var timer_date = $("input#timer_date").val();   
		if (timer_date == "") {   
			$("li#timer_date_error").show();
			$.scrollTo('#edittimer #timer_date_error');
		return false;   
		}
		var timer_starttime = $("input#timer_starttime").val();   
		if (timer_starttime == "") {   
			$("li#timer_starttime_error").show();
			$.scrollTo('#edittimer #timer_starttime_error');
		return false;   
		}   
		var timer_endtime = $("input#timer_endtime").val();   
		if (timer_endtime == "") {   
			$("li#timer_endtime_error").show();   
			$.scrollTo('#edittimer #timer_endtime_error');
		return false;   
		}
		var timer_id = $("input#timer_id").val();
		var timer_chan = $("select#timer_chan").val();
		var timer_active = $("input#timer_active").attr('checked')?1:0;
		var dataString = 'action=editTimer&id=' + timer_id + '&active=' + timer_active + '&name=' + encodeURIComponent(timer_name) + '&channumber=' + timer_chan + '&date=' + timer_date + '&starttime=' + timer_starttime + '&endtime=' + timer_endtime; 
		$.getJSON("bin/backend.php",
		dataString,
		function(data) {
				message = data.status + ": " + data.message;
				gen_timers("true");
				json_start(this);
				showStatus( 0,message );
				return false;
				});
		return false;
}); 

function showStatus( timeout, message ) { 
    if( timeout == 0 ) { 
		$('#timer_status').html(message);
		$('#timer_status').show();
        setTimeout( function() { showStatus( 1, message ); }, 4000 ); 
    } else if( timeout == 1 ) { 
	$('#timer_status').hide();
    } 
}
//  [/TIMER SECTION]

//   [EPG SECTION]
function gen_epgchanlist() {
	data = $('#jqt').data('channellist');
	$.each(data.category, function(i,category){
		$('#epg_chan').append('<optgroup label="' + category.name + '">');
			var catname = category.name;
			$.each(category.channel, function(j, channel){
				$('#epg_chan optgroup[label="' + catname +'"]').append('<option value="' + channel.number + '">' + channel.name +'</option>');
			});
		$('#epg_chan').append('</optgroup>');
		});
}

// check if chan is slected
function epg_selectchan() {
	selectedchan = $('#epg_chan').val();
}

//   [/EPG SECTION]