//
// Module Listing Page
//

function serializeFields() {
	var form_fields = $('sort_form_fields');
	
	// Get each of the modules in the sortable listing
	var modules = $('module_list').getChildren('li');
	
	// Get slide & question list under each module
	modules.each(function(module, index) {
		var module_id = module.getProperty('moduleid');
		
		var elems = module.getElements('li');

		elems.each(function(elem, x) {
			if ( elem.getProperty('slideid') ) {
				var slideid = elem.getProperty('slideid');
				form_fields.adopt(new Element('input', {	'name': 	'slides[' + module_id + '][]',
															'type':		'hidden',
															'value':	elem.getProperty('slideid')
										}));

				// Get and process the question elements
				var qElems = elem.getElements('li');
				
				
				qElems.each(function(qElem, y) {
					if ( qElem.getProperty('questionid') ) {
						form_fields.adopt(new Element('input', {	'name': 	'questions[' + slideid + '][]',
																	'type':		'hidden',
																	'value':	qElem.getProperty('questionid')
												}));
					}
				});
			}
		});
		
		form_fields.adopt(new Element('input', {	'name': 	'modules[]',
													'type':		'hidden',
													'value':	module_id
								}));
	});
	
	return true;
}


var questionStateCookie = null;

function loadQuestionStateCookie(cookieName, cookieDomain) {
	questionStateCookie = new Hash.Cookie(cookieName, {		duration: 60,
															domain: cookieDomain,
															path: '/'
													});
	if ( !questionStateCookie.get('questionState') ) {
		questionStateCookie.set('questionState', 'closed');
		questionStateCookie.save();
	}
	
	toggleQuestions(true);
}


function toggleQuestions(init) {
	var elems = $$('ul.question_sortable');
	
	if ( questionStateCookie.get('questionState') != 'open' ) {
		var cookieState = 'closed';
		if ( !init ) {
			questionStateCookie.set('questionState', 'open');
			questionStateCookie.save();
		}
	} else {
		var cookieState = 'open';
		if ( !init ) {
			questionStateCookie.set('questionState', 'closed');
			questionStateCookie.save();
		}
	}
	
	elems.each(function(elem, idx) {
		if ( !elem.fx ) {
			elem.fx = new TMSlide(elem, {'duration': 1000, 'wait': false, 'transition': Fx.Transitions.Quad.easeOut});
		}
		
		if ( questionStateCookie ) {
			if ( cookieState != 'open' ) {
				if ( init ) {		elem.fx.hide();			} else {		elem.fx.slideIn();		}
			} else {
				if ( init ) {		elem.fx.show();			} else {		elem.fx.slideOut();		}
			}
		} else {
			if ( elem.fx.open ) {
				elem.fx.slideOut();
			} else {
				elem.fx.slideIn();
			}
		}
	});
}


function doCourseContext(event, elem, id, status) {
	if ( checkRightClick(event) ) {
		switch ( status ) {
			case 1:
				var status_opt1 = {	'title':		'Hide Course',
									'url':			'/admin/f/Training/Courses/Status/'+id+'/Hidden/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Disable Course',
									'url':			'/admin/f/Training/Courses/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			case 0:
				var status_opt1 = {	'title':		'Activate Course',
									'url':			'/admin/f/Training/Courses/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Hide Course',
									'url':			'/admin/f/Training/Courses/Status/'+id+'/Hidden/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			case 2:
				var status_opt1 = {	'title':		'Activate Course',
									'url':			'/admin/f/Training/Courses/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Disable Course',
									'url':			'/admin/f/Training/Courses/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
		}
			
		switch ( status ) {
			case 1:
			case 0:
			case 2:
				var menus = {	0: {	'title':		'Edit Course',
										'url':			'/admin/f/Training/Courses/Edit/'+id+'/',
										'icon':			'/images/interface/icon_edit.gif'
									},
								1: {	'breakRow':		true	},
								2: status_opt1,
								3: status_opt2,
								4: {	'breakRow':		true	},
								5: {	'title':		'Add Module',
										'url':			'/admin/f/Training/Modules/Add/'+id+'/',
										'icon':			'/images/interface/icon_add.gif'
									}
							}
				break;
			default: 
				var menus = {	0: {	'title':	'Restore Course',
										'url':		'/admin/f/Training/Courses/Restore/'+id+'/',
										'icon':		'/images/interface/icon_restore.gif'
									},
								1: {	'title':	'Delete Course',
										'url':		'/admin/f/Training/Courses/Delete/'+id+'/',
										'icon':		'/images/interface/icon_delete.gif'
									}
							}
				break;
		}
		
		var params = {	'optionTransition': Fx.Transitions.Quad.easeOut
					};
		
		ContextMenu.doContext(event, elem, menus, params)
	}
	
	return false;
}


function doModuleContext(event, elem, id, status) {
	if ( checkRightClick(event) ) {
		switch ( status ) {
			case 1:
				var status_opt1 = {	'title':		'Hide Module',
									'url':			'/admin/f/Training/Modules/Status/'+id+'/Hidden/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Disable Module',
									'url':			'/admin/f/Training/Modules/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			case 0:
				var status_opt1 = {	'title':		'Activate Module',
									'url':			'/admin/f/Training/Modules/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Hide Module',
									'url':			'/admin/f/Training/Modules/Status/'+id+'/Hidden/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			case 2:
				var status_opt1 = {	'title':		'Activate Module',
									'url':			'/admin/f/Training/Modules/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Disable Module',
									'url':			'/admin/f/Training/Modules/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
		}
			
		switch ( status ) {
			case 1:
			case 0:
			case 2:
				var menus = {	0: {	'title':		'Edit Module',
										'url':			'/admin/f/Training/Modules/Edit/'+id+'/',
										'icon':			'/images/interface/icon_edit.gif'
									},
								1: {	'title':		'Copy Module',
										'url':			'/admin/f/Training/Modules/Copy/'+id+'/',
										'icon':			'/images/interface/icon_copy.gif'
									},
								2: {	'title':		'Remove Module',
										'url':			'/admin/f/Training/Modules/Remove/'+id+'/',
										'icon':			'/images/interface/icon_remove.gif'
									},
								3: {	'breakRow':		true	},
								4: status_opt1,
								5: status_opt2,
								6: {	'breakRow':		true	},
								7: {	'title':		'Add Slide',
										'url':			'/admin/f/Training/Slides/Add/'+id+'/',
										'icon':			'/images/interface/icon_add.gif'
									},
								8: {	'title':		'Add Question',
										'url':			'/admin/f/Training/Questions/Add/',
										'icon':			'/images/interface/icon_add.gif'
									},
								9: {	'breakRow':		true	},
								10: {	'title':		'Add Module',
										'url':			'/admin/f/Training/Modules/Add/',
										'icon':			'/images/interface/icon_add.gif'
									}
							}
				break;
			default: 
				var menus = {	0: {	'title':	'Restore Module',
										'url':		'/admin/f/Training/Modules/Restore/'+id+'/',
										'icon':		'/images/interface/icon_restore.gif'
									},
								1: {	'title':	'Delete Module',
										'url':		'/admin/f/Training/Modules/Delete/'+id+'/',
										'icon':		'/images/interface/icon_delete.gif'
									}
							}
				break;
		}
		
		var params = {	'optionTransition': Fx.Transitions.Quad.easeOut
					};
		
		ContextMenu.doContext(event, elem, menus, params)
	}
	
	return false;
}


function doSlideContext(event, elem, id, status) {
	if ( checkRightClick(event) ) {
		switch ( status ) {
			case 1:
				var status_opt1 = {	'title':		'Hide Slide',
									'url':			'/admin/f/Training/Slides/Status/'+id+'/Hidden/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Disable Slide',
									'url':			'/admin/f/Training/Slides/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			case 0:
				var status_opt1 = {	'title':		'Activate Slide',
									'url':			'/admin/f/Training/Slides/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Hide Slide',
									'url':			'/admin/f/Training/Slides/Status/'+id+'/Hidden/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			case 2:
				var status_opt1 = {	'title':		'Activate Slide',
									'url':			'/admin/f/Training/Slides/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Disable Slide',
									'url':			'/admin/f/Training/Slides/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
		}
		
		
		switch ( status ) {
			case 1:
			case 0:
			case 2:
				var menus = {	0: {	'title':	'Edit Slide',
										'url':		'/admin/f/Training/Slides/Edit/'+id+'/',
										'icon':		'/images/interface/icon_edit.gif'
									},
								1: {	'title':	'Copy Slide',
										'url':		'/admin/f/Training/Slides/Copy/'+id+'/',
										'icon':		'/images/interface/icon_copy.gif'
									},
								2: {	'title':	'Remove Slide',
										'url':		'/admin/f/Training/Slides/Remove/'+id+'/',
										'icon':		'/images/interface/icon_remove.gif'
									},
								3: {	'breakRow':		true	},
								4: status_opt1,
								5: status_opt2,
								6: {	'breakRow':		true	},
								7: {	'title':		'Add Question',
										'url':			'/admin/f/Training/Questions/Add/'+id+'/',
										'icon':			'/images/interface/icon_add.gif'
									}
							}
				break;
			default: 
				var menus = {	0: {	'title':	'Restore Slide',
										'url':		'/admin/f/Training/Slides/Restore/'+id+'/',
										'icon':		'/images/interface/icon_restore.gif'
									},
								1: {	'title':	'Delete Slide',
										'url':		'/admin/f/Training/Slides/Delete/'+id+'/',
										'icon':		'/images/interface/icon_delete.gif'
									}
							}
				break;
		}
		
		var params = {	'optionTransition': Fx.Transitions.Quad.easeOut
					};
		
		ContextMenu.doContext(event, elem, menus, params)
	}
	
	return false;
}


function doQuestionContext(event, elem, id, status) {
	if ( checkRightClick(event) ) {
		switch ( status ) {
			case 1:
				var status_opt1 = {	'title':		'Hide Question',
									'url':			'/admin/f/Training/Questions/Status/'+id+'/Hidden/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Disable Question',
									'url':			'/admin/f/Training/Questions/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			case 0:
				var status_opt1 = {	'title':		'Activate Question',
									'url':			'/admin/f/Training/Questions/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Hide Question',
									'url':			'/admin/f/Training/Questions/Status/'+id+'/Hidden/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			case 2:
				var status_opt1 = {	'title':		'Activate Question',
									'url':			'/admin/f/Training/Questions/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				var status_opt2 = {	'title':		'Disable Question',
									'url':			'/admin/f/Training/Questions/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
		}
		
		
		switch ( status ) {
			case 1:
			case 0:
			case 2:
				var menus = {	0: {	'title':	'Edit Question',
										'url':		'/admin/f/Training/Questions/Edit/'+id+'/',
										'icon':		'/images/interface/icon_edit.gif'
									},
								1: {	'title':	'Copy Question',
										'url':		'/admin/f/Training/Questions/Copy/'+id+'/',
										'icon':		'/images/interface/icon_copy.gif'
									},
								2: {	'title':	'Remove Question',
										'url':		'/admin/f/Training/Questions/Remove/'+id+'/',
										'icon':		'/images/interface/icon_remove.gif'
									},
								3: {	'breakRow':		true	},
								4: status_opt1,
								5: status_opt2
							}
				break;
			default: 
				var menus = {	0: {	'title':	'Restore Question',
										'url':		'/admin/f/Training/Questions/Restore/'+id+'/',
										'icon':		'/images/interface/icon_restore.gif'
									},
								1: {	'title':	'Delete Question',
										'url':		'/admin/f/Training/Questions/Delete/'+id+'/',
										'icon':		'/images/interface/icon_delete.gif'
									}
							}
				break;
		}
		
		var params = {	'optionTransition': Fx.Transitions.Quad.easeOut
					};
		
		ContextMenu.doContext(event, elem, menus, params)
	}
	
	return false;
}


function doUserContext(event, elem, id, status) {
	
	if ( checkRightClick(event) ) {
		switch ( status ) {
			case 1:
				var status_opt1 = {	'title':		'Disable User',
									'url':			'/admin/f/Main/Users/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			default:
				var status_opt1 = {	'title':		'Activate User',
									'url':			'/admin/f/Main/Users/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
		}
		
		
		switch ( status ) {
			case 1:
			case 0:
			case 2:
				var menus = {	0: {	'title':	'Edit User',
										'url':		'/admin/f/Main/Users/Edit/'+id+'/',
										'icon':		'/images/interface/icon_edit.gif'
									},
								1: {	'title':	'Remove User',
										'url':		'/admin/f/Main/Users/Remove/'+id+'/',
										'icon':		'/images/interface/icon_remove.gif'
									},
								2: {	'breakRow':		true	},
								3: status_opt1
							}
				break;
			default: 
				var menus = {	0: {	'title':	'Restore User',
										'url':		'/admin/f/Main/Users/Restore/'+id+'/',
										'icon':		'/images/interface/icon_restore.gif'
									},
								1: {	'title':	'Delete User',
										'url':		'/admin/f/Main/Users/Delete/'+id+'/',
										'icon':		'/images/interface/icon_delete.gif'
									}
							}
				break;
		}
		
		var params = {	'optionTransition': Fx.Transitions.Quad.easeOut
					};
		
		ContextMenu.doContext(event, elem, menus, params)
	}
	
	return false;
}



function doManagerContext(event, elem, id, status) {
	
	if ( checkRightClick(event) ) {
		switch ( status ) {
			case 1:
				var status_opt1 = {	'title':		'Disable Manager',
									'url':			'/admin/f/Supanews/Managers/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			default:
				var status_opt1 = {	'title':		'Activate Manager',
									'url':			'/admin/f/Supanews/Managers/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
		}
		
		
		switch ( status ) {
			case 1:
			case 0:
			case 2:
				var menus = {	0: {	'title':	'Edit Manager',
										'url':		'/admin/f/Supanews/Managers/Edit/'+id+'/',
										'icon':		'/images/interface/icon_edit.gif'
									},
								1: {	'title':	'Remove Manager',
										'url':		'/admin/f/Supanews/Managers/Remove/'+id+'/',
										'icon':		'/images/interface/icon_remove.gif'
									},
								2: {	'breakRow':		true	},
								3: status_opt1
							}
				break;
			default: 
				var menus = {	0: {	'title':	'Restore Manager',
										'url':		'/admin/f/Supanews/Managers/Restore/'+id+'/',
										'icon':		'/images/interface/icon_restore.gif'
									},
								1: {	'title':	'Delete Manager',
										'url':		'/admin/f/Supanews/Managers/Delete/'+id+'/',
										'icon':		'/images/interface/icon_delete.gif'
									}
							}
				break;
		}
		
		var params = {	'optionTransition': Fx.Transitions.Quad.easeOut
					};
		
		ContextMenu.doContext(event, elem, menus, params)
	}
	
	return false;
}


function doStoreContext(event, elem, id, status) {
	
	if ( checkRightClick(event) ) {
		switch ( status ) {
			case 1:
				var status_opt1 = {	'title':		'Disable Store',
									'url':			'/admin/f/Supanews/Stores/Status/'+id+'/Disabled/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
			default:
				var status_opt1 = {	'title':		'Activate Store',
									'url':			'/admin/f/Supanews/Stores/Status/'+id+'/Active/',
									'icon':			'/images/interface/icon_edit.gif'
									};
				break;
		}
		
		
		switch ( status ) {
			case 1:
			case 0:
			case 2:
				var menus = {	0: {	'title':	'Edit Store',
										'url':		'/admin/f/Supanews/Stores/Edit/'+id+'/',
										'icon':		'/images/interface/icon_edit.gif'
									},
								1: {	'title':	'Copy Store',
										'url':		'/admin/f/Supanews/Stores/Copy/'+id+'/',
										'icon':		'/images/interface/icon_copy.gif'
									},
								2: {	'title':	'Remove Store',
										'url':		'/admin/f/Supanews/Stores/Remove/'+id+'/',
										'icon':		'/images/interface/icon_remove.gif'
									},
								3: {	'breakRow':		true	},
								4: status_opt1
							}
				break;
			default: 
				var menus = {	0: {	'title':	'Restore Store',
										'url':		'/admin/f/Supanews/Stores/Restore/'+id+'/',
										'icon':		'/images/interface/icon_restore.gif'
									},
								1: {	'title':	'Delete Store',
										'url':		'/admin/f/Supanews/Stores/Delete/'+id+'/',
										'icon':		'/images/interface/icon_delete.gif'
									}
							}
				break;
		}
		
		var params = {	'optionTransition': Fx.Transitions.Quad.easeOut
					};
		
		ContextMenu.doContext(event, elem, menus, params)
	}
	
	return false;
}





var answerCount = 0;

function trainingAddAnswer(answer, correct, aid) {
	var answerFrame = $('answers');
	
	var answerContainer = new Element('div', {	'id':	'form_answer_'+answerCount,		'class': 'answer_row'}	);
	var answerLabel = new Element('div', {	'class':	'form_label answer'} );
	var answerField = new Element('div', {	'class':	'form_field answer'} );
	var answerRemove = new Element('div', {	'class':	'form_remove answer'} );
	
	answerLabel.adopt(new Element('input',	{		'type':	'checkbox',
													'class': 'checkbox',
													'name': 'answers['+answerCount+'][correct]',
													'checked': (correct) ? true : false,
													'value': '1'
												}));
											
	answerField.adopt(new Element('textarea',	{	'class': 'medium',
													'name': 'answers['+answerCount+'][answer]',
													'text': (answer) ? answer : ''
												}));
											
	answerField.adopt(new Element('input',	{		'type': 'hidden',
													'name': 'answers['+answerCount+'][aid]',
													'value': (aid) ? aid : 0
												}));
											
	var answerRemoveLink = new Element('a',	{		'text': 'Remove',
													'class': 'remove_answer',
													'answerNum': answerCount
												});
	answerRemoveLink.addEvent('click', function() {	trainingRemoveAnswer(this.getProperty('answerNum'))}	);
	
	answerRemove.adopt(answerRemoveLink);
									
	answerContainer.adopt(answerLabel, answerField, answerRemove);
	answerFrame.adopt(answerContainer);
	answerCount++;
}


function trainingRemoveAnswer(answer) {
	$('form_answer_'+answer).destroy();
}
