// JavaScript Document

// Set document root
var g_root = "/hr/trainingapp/";

var m_key = "";
function workshopEditor(win, key) {
	//alert(win + "\n" + key);
	
	ColdFusion.Window.show(win);
	if (m_key == "") {
		m_key = key;
		initManagerTabs();
	} else {
		m_key = key;
	}
	

	if (ColdFusion.Layout.getTabLayout('workshops_editor').getActiveTab().id != "ws_edit_main_t") {
		ColdFusion.Layout.selectTab('workshops_editor', 'ws_edit_main_t');
		navTab(g_root + 'workshop/edit/', 'ws_edit_main', true);
	} else {
		navTab(g_root + 'workshop/edit/', 'ws_edit_main', false);
	}
	return false;
}

function facilitatorEditor(win, key) {
	//alert(win + "\n" + key);
	ColdFusion.Window.show(win);
	if (m_key == "") {
		m_key = key;
		initManagerTabs(true);
	} else {
		m_key = key;
	}

	if (ColdFusion.Layout.getTabLayout('fac_editor').getActiveTab().id != "ws_fac_edit_main_t")
		ColdFusion.Layout.selectTab('fac_editor', 'ws_fac_edit_main_t');
	else {
		navTab(g_root + 'workshop/edit_facilitator/', 'ws_fac_edit_main', false);
	}
	return false;
}

function toggleAttendees() {
	if (document.getElementById("workshop-copydates").checked) {
		document.getElementById("workshop-copyattendees-p").style.display = "";
	} else {
		document.getElementById("workshop-copyattendees-p").style.display = "none";
		document.getElementById("workshop-copyattendees").checked = false;
	}
}

function workshopViewDetails(type_name) {
	ws_id = document.getElementById("workshop-id").value;
	if (ws_id == "") return false;
	
	if (type_name == "dates") {
		url = g_root + "workshop/listdates?key=" + ws_id;
		try {
			ColdFusion.Window.show('listdates');
			ColdFusion.navigate(url, 'listdates');
		} catch (e) {
			ColdFusion.Window.create('listdates', 'Workshop Date List', url,
    	    	{height:350,width:500,modal:true,closable:true,
	        	draggable:true,resizable:true,center:true,initshow:true,
    		    minheight:200,minwidth:200 })
		}
	} else if (type_name == "attendees") {
		url = g_root + "workshop/listattendees?key=" + ws_id;
		try {
			ColdFusion.Window.show('listattendees');
			ColdFusion.navigate(url, 'listattendees');
		} catch (e) {
			ColdFusion.Window.create('listattendees', 'Attendee List', url,
    	    	{height:350,width:500,modal:true,closable:true,
	        	draggable:true,resizable:true,center:true,initshow:true,
    		    minheight:200,minwidth:200 })
		}
	}
}

function workshopEditorClose(win) {
	try {
		ColdFusion.Window.hide(win);
		// Need to set main editor div to blank so.  If div remains populated and an "Add Workshop" window is opened,
		// the elements of the "Editor" will conflict with the elements of the "Add" window.
		document.getElementById("ws_edit_main").innerHTML = '';
		ColdFusion.navigate(g_root + 'workshop?layout=table', 'divWorkshops');
	} catch (e) {}
}
function facEditorClose(win) {
	try {
		ColdFusion.Window.hide(win);
	} catch (e) {}
}
function workshopEditorSave() {
	if (tab_current_id == 'ws_edit_main') {
		var frm_edit = document.forms["editworkshop_main"];
		if (frm_edit != null) {
			var action = frm_edit.action + "?layout=xml";
			ColdFusion.navigate(action, "save_results", navTabSuccess, navTabError, "POST", frm_edit.name);
		}
	}
}
function workshopEditorReset() {
	if (tab_current_id == 'ws_edit_main') {
		document.forms['editworkshop_main'].reset();
	}
}

function initManagerTabs(bFacilitator) {
	try {
		if (! bFacilitator) {
			ColdFusion.Layout.getTabLayout('workshops_editor').getItem('ws_edit_main_t').addListener('activate', function() { navTab(g_root + 'workshop/edit/', 'ws_edit_main', true); });
			ColdFusion.Layout.getTabLayout('workshops_editor').getItem('ws_edit_dates_t').addListener('activate', function() { navTab(g_root + 'workshop/editdates/', 'ws_edit_dates', true); });
			ColdFusion.Layout.getTabLayout('workshops_editor').getItem('ws_edit_attendees_t').addListener('activate', function() { navTab(g_root + 'workshop/editattendees/', 'ws_edit_attendees', true); });
			ColdFusion.Layout.getTabLayout('workshops_editor').getItem('ws_edit_waitinglist_t').addListener('activate', function() { navTab(g_root + 'workshop/editwaitinglist/', 'ws_edit_waitinglist', true); });
			ColdFusion.Layout.getTabLayout('workshops_editor').getItem('ws_edit_messaging_t').addListener('activate', function() { navTab(g_root + 'workshop/messaging/', 'ws_edit_messaging', true); });
		} else {
			ColdFusion.Layout.getTabLayout('fac_editor').getItem('ws_fac_edit_main_t').addListener('activate', function() { navTab(g_root + 'workshop/edit_facilitator/', 'ws_fac_edit_main', false); });
			ColdFusion.Layout.getTabLayout('fac_editor').getItem('ws_fac_edit_attendees_t').addListener('activate', function() { navTab(g_root + 'workshop/editattendees/', 'ws_fac_edit_attendees', false); });
			ColdFusion.Layout.getTabLayout('fac_editor').getItem('ws_fac_edit_waitinglist_t').addListener('activate', function() { navTab(g_root + 'workshop/editwaitinglist/', 'ws_fac_edit_waitinglist', false); });
			ColdFusion.Layout.getTabLayout('fac_editor').getItem('ws_fac_edit_messaging_t').addListener('activate', function() { navTab(g_root + 'workshop/messaging/', 'ws_fac_edit_messaging', false); });
		}
	} catch (e) {
		alert(e);
	}
}

var tab_current_id = "";
var tab_current_url = "";
var tab_previous_id = "";
function navTab(url, tab, bSave) {
	
	// Clear tab
	url = url + m_key;
	try {
		document.getElementById(tab).innerHTML = '';
	} catch (e) {}
	
	// First, save changes
	if (bSave) {
		bSave = false;
		tab_previous_id = tab_current_id;
		switch (tab_current_id) {
			case 'ws_edit_main':
				var frm_edit = document.forms["editworkshop_main"];
				bSave = true;
				break;
		}
	}
	
	Ext.get("b_ws_save").dom.disabled = (tab != "ws_edit_main");

	if (bSave && frm_edit != null) {
		var action = frm_edit.action + "?layout=xml";
		tab_current_id = tab;
		tab_current_url = url;
		//alert(tab_current_id + "\n" + tab_current_url);
		ColdFusion.navigate(action, "save_results", navTabSuccess, navTabError, "POST", frm_edit.name);
	} else {
		tab_current_id = tab;
		tab_current_url = url;
		//alert("Initial: " + tab + "\n" + url);
		ColdFusion.navigate(url, tab, navTabDefault, navTabError);
		
	}
	
	// See navTabSuccess function for actual loading of new tab.
	return false;
}

function navTabSuccess(text) {
	try {
		var div = document.getElementById("save_results");
		var divFlash = document.getElementById("flash2");
		var success = document.getElementById("result_success").innerHTML;
		var message = document.getElementById("flash_message").innerHTML;
		var errors = document.getElementById("flash_errors").innerHTML;
	} catch (e) {
		alert("Error: " + e.message);
	}
	if (success) {
		divFlash.innerHTML = message;
//		alert(tab_current_url + "\n" + tab_current_id);
		ColdFusion.navigate(tab_current_url, tab_current_id, navTabDefault);
	} else {
		ColdFusion.Layout.selectTab('workshops_editor', tab_previous_id);
	}
	
}
function navTabDefault(text) {
	// Attempt to load date controls
	try {
		//if (tab_current_id == "ws_edit_dates") {
			//ColdFusion.Window.getWindowObject('workshop_editor_window').doLayout();
			initCalendars('workshopdate-date', 'div_cal', 'cal', 'workshopdate-date_time', 'workshopdate-time');
			initTime('workshopdate-time', 'div_time', 'workshopdate-time_select', 'workshopdate-date_time', 'workshopdate-date');
		//}
	} catch (e) {}
}
function navTabError(code, msg) {
	alert("Error " + code + ": " + msg);
}

function initTime(ctl, div, drop, hdn, datectl) {
	// position time selector
	var o = document.getElementById(ctl);
	var cal = document.getElementById(div);
	cal.style.top = measureTop(o) + o.offsetHeight;
	cal.style.left = measureLeft(o);
	cal.style.display = "none";
	
	var clickHandler = function(e) {
		var sel = document.getElementById(drop);
		var txt = document.getElementById(ctl);
		txt.value = sel.options[sel.selectedIndex].text;
		var oH = document.getElementById(hdn);
		var oD = document.getElementById(datectl);
		oH.value = oD.value + " " + txt.value;
		cal.style.display = "none";
	};
	
	var popHandler = function() {
		var cal = document.getElementById(div);
		if (cal.style.display == "none")
			cal.style.display = "";
		else
			cal.style.display = "none";
	};

	var changeHandler = function() {
		var oH = document.getElementById(hdn);
		var oD = document.getElementById(datectl);
		var oT = document.getElementById(ctl);
		oH.value = oD.value + " " + oT.value;
	}

	Ext.EventManager.on(drop, 'click', clickHandler);
	Ext.EventManager.on(ctl, 'click', popHandler);
	Ext.EventManager.on(ctl, 'change', changeHandler);
}

function initCalendars(ctl, div, btn, hdn, timectl) {
	// position calendar
	var o = document.getElementById(ctl);
	var cal = document.getElementById(div);
	cal.style.top = measureTop(o) + o.offsetHeight;
	cal.style.left = measureLeft(o);
	
	var selectHandler = function(myDP, date) {
		var field = document.getElementById(ctl);
		field.value = date.format('m/d/Y');
		myDP.hide();
		var oH = document.getElementById(hdn);
		var oT = document.getElementById(timectl);
		oH.value = field.value + " " + oT.value;
	};

	var myDP = new Ext.DatePicker( {
		startDay: 7,
		listeners: {
			'select':selectHandler
		}
	});
	myDP.render(div);
	myDP.hide();
	
	var clickHandler = function() {
		myDP.show();
	};
	
	var changeHandler = function() {
		var oH = document.getElementById(hdn);
		var oD = document.getElementById(ctl);
		var oT = document.getElementById(timectl);
		oH.value = oD.value + " " + oT.value;
	}

	Ext.EventManager.on(btn, 'click', clickHandler);
	Ext.EventManager.on(ctl, 'change', changeHandler);
}

function ajaxEditDate(id, current_date_time, date_tbd) {

	// Current date, time of item
	var oldDateTime = new Date(current_date_time);
	if (date_tbd)
		oldDateTime = new Date();
	var oldDate = oldDateTime.format("m/d/Y");
	var oldTime = oldDateTime.format("g:i A");
	
	// Create array of times from 12:00 AM to 11:55 PM
	var dteCur = new Date("1/10/2007 23:55:00");
	var times = [];
	for (var i=0; i<288; i++) {
		dteCur = dteCur.add(Date.MINUTE, 5);
		var txt = dteCur.format('g:i A');
		times[i] = [txt, txt];
	}
	
	// Checkbox for DATE TBD
	var chkTBD = new Ext.form.Checkbox({
			fieldLabel: 'TBD',
			name: 'date_tbd',
			boxLabel: 'Date to be determined',
			checked: date_tbd
	});


	/*-------------------------------------------------
	 * Add a new Date
	 *-------------------------------------------------*/
	var frm = new Ext.form.FormPanel({
		defaultType: 'textfield',
		bodyStyle: 'padding:15px 15px 0',
		frame: false,
		//height: 200,
		items: [{
			xtype: 'fieldset',
			title: 'Edit Date/Time',
			items: [
				chkTBD,
				new Ext.form.DateField({
					fieldLabel: 'Date',
					name: 'date',
					format: 'm/d/Y',
					width:190,
					allowBlank:false,
					value: oldDate,
					disabled: date_tbd
				}),
				new Ext.form.ComboBox({
					fieldLabel: 'Time',
					hiddenName:'time',
					name: 'time',
					store: new Ext.data.SimpleStore({
						fields: ['val', 'time'],
						data : times
					}),
					displayField:'time',
					typeAhead: true,
					maxHeight: 150,
					mode: 'local',
					triggerAction: 'all',
					forceSelection: true,
					emptyText:'Select a time...',
					selectOnFocus:true,
					width:190,
					value: oldTime,
					disabled: date_tbd
				})
			]
		}]
	});
	
	chkTBD.addListener('check', function(obj) { tbd_ui(obj, false, frm); }, chkTBD);

	var win = new Ext.Window({
		title: 'Edit Workshop Date',
		layout : 'form',
		width: 363,
		//height: 270,
		closeAction: 'close', //default
		modal: true,
		items: [frm],
		buttons: [{
			text: 'Edit Date',
			handler: function() {
				
				sDate = frm.getForm().findField('date').value;
				sTime = frm.getForm().findField('time').value;
				sId = frm.getForm().getEl().id;
		
				var url = g_root + "workshop/updatedates/" + id + "?layout=table";
				ColdFusion.navigate(
					url, 'divEditDates',
					function (response) {
						ajaxSubmitSuccess(response);
						win.close();
					},
					function (code, message) {
						alert("Error " + code + ": " + message);
					},
					'POST', sId
				);
	
			}
		}, {
			text: 'Cancel',
			handler: function() {
				win.close();
			}
		}]
	});
	win.show();
	
}

function tbd_ui(obj, init, frm) {
	var b = obj.getValue();

	// Disable or enable fields
	frm.getForm().findField('date').setDisabled(b)
	frm.getForm().findField('time').setDisabled(b);
	
	if (b && init) {
		var oldDateTime = new Date();
		var oldDate = oldDateTime.format("m/d/Y");
		frm.getForm().findField('date').setValue(oldDate);
		frm.getForm().findField('time').setValue("9:00 AM");
	}
}

function ajaxNewDate(workshop_id) {
	// Current date, time
	var oldDateTime = new Date();
	var oldDate = oldDateTime.format("m/d/Y");

	// Create array of times from 12:00 AM to 11:55 PM
	var dteCur = new Date("1/10/2007 23:55:00");
	var times = [];
	for (var i=0; i<288; i++) {
		dteCur = dteCur.add(Date.MINUTE, 5);
		var txt = dteCur.format('g:i A');
		times[i] = [txt, txt];
	}
	
	// Checkbox for DATE TBD
	var chkTBD = new Ext.form.Checkbox({
			fieldLabel: 'TBD',
			name: 'date_tbd',
			boxLabel: 'Date to be determined',
			checked: false
	});


	/*-------------------------------------------------
	 * Add a new Date
	 *-------------------------------------------------*/
	var frm = new Ext.form.FormPanel({
		defaultType: 'textfield',
		bodyStyle: 'padding:15px 15px 0',
		frame: false,
		//height: 200,
		items: [{
			xtype: 'fieldset',
			title: 'Edit Date/Time',
			items: [
				chkTBD,
				new Ext.form.DateField({
					fieldLabel: 'Date',
					name: 'date',
					format: 'm/d/Y',
					width:190,
					allowBlank:false,
					value: oldDate
				}),
				new Ext.form.ComboBox({
					fieldLabel: 'Time',
					hiddenName:'time',
					name: 'time',
					store: new Ext.data.SimpleStore({
						fields: ['val', 'time'],
						data : times
					}),
					displayField:'time',
					typeAhead: true,
					maxHeight: 150,
					mode: 'local',
					triggerAction: 'all',
					forceSelection: true,
					emptyText:'Select a time...',
					selectOnFocus:true,
					width:190,
					value: "9:00 AM"
				}),
				new Ext.form.Field({
					name: 'workshop_id',
					inputType: "hidden",
					value: workshop_id
				})

			]
		}]
	});

	chkTBD.addListener('check', function(obj) { tbd_ui(obj, false, frm); }, chkTBD);


	var win = new Ext.Window({
		title: 'Add New Workshop Date',
		layout : 'form',
		width: 363,
		//height: 200,
		closeAction: 'close', //default
		modal: true,
		items: [frm],
		buttons: [{
			text: 'Add Date',
			handler: function() {
				
				sDate = frm.getForm().findField('date').value;
				sTime = frm.getForm().findField('time').value;
				sId = frm.getForm().getEl().id;
		
				var url = g_root + "workshop/newdate?layout=table";
				ColdFusion.navigate(
					url, 'divEditDates',
					function (response) {
						ajaxSubmitSuccess(response);
						win.close();
					},
					function (code, message) {
						alert("Error " + code + ": " + message);
					},
					'POST', sId
				);
	
			}
		}, {
			text: 'Cancel',
			handler: function() {
				win.close();
			}
		}]
	});
	win.show();
	
}

