<?php

// ------ requires -----------------

require_once( drupal_get_path('module', 'sabreTools') . '/sabreTools.lib.inc');
require_once('sabreScheduler.classes.inc');
require_once('sabreScheduler.groups.inc');
require_once('sabreScheduler.homepages.inc');
require_once('sabreScheduler.simulators.inc');
require_once('sabreScheduler.schedules.inc');
require_once('sabreScheduler.utils.inc');
require_once('sabreScheduler.users.inc');


// ------ globals ------------------
$customer_colors;  // lookup array for customer colors used by PHPExcel report



// ------ constants ------------------


// caches
define('SCH_MONTH_LIST', 'sch_month_list');
//define('SCH_YEAR_LIST', 'sch_year_list');
define('SCH_INTERVAL_LIST', 'sch_interval_list');
define('SCH_CUSTOMER_LIST', 'sch_customer_list');
define('SCH_SESSION_TYPE_LIST', 'sch_session_type_list');
define('SCH_FLIGHT_ROLES_LIST', 'sch_flight_roles_list');
define('SCH_SESSION_NAME_LIST', 'sch_session_name_list');
define('SCH_USER_CLIPBOARD', 'sch_clipboard');
define('SCH_EXCEPTIONS_SEARCH_FORM', 'sch_exceptions_search_form');
define('SCH_EXCEPTIONS_SEARCH_RESULTS', 'sch_exceptions_search_results');
define('SCH_EXCEPTIONS_SEARCH_KEY', 'sch_exceptions_search_key');
define('SCH_ELOGS_SEARCH_FORM', 'sch_elogs_search_form');
define('SCH_ELOGS_SEARCH_RESULTS', 'sch_elogs_search_results');
define('SCH_ELOGS_SEARCH_KEY', 'sch_elogs_search_key');


// grid bleed-over threshold before another assignment is created
define('SCH_THRESHOLD', 15 * 60);
define('SCH_ONE_TS_DAY', 86400);


// grid mode
//define('GRID_NORMAL', 0);
//define('GRID_CUSTOMER', 1);

// app name for log files
define('SCH_SCHEDULER', 'sabreScheduler');
define('SCHEDULER_APP', 'sabreScheduler');

define('SCH_SIM_PREFLIGHT', '1');
define('SCH_SIM_OPENITEMS', '2');
define('SCH_SIM_CLOSEDITEMS', '3');
define('SCH_SIM_MMIITEMS', '4');


/**
**		Sabre Updates Scheduler module for plugin to Drupal 7.x Framework
*/

function sabreScheduler_theme() {
  return array(
    'sabreScheduler_javascript' => array(
      'arguments' => array(),
    ),
  );
}


function sabreScheduler_init() {
  $sabreScheduler = drupal_get_path('module', 'sabreScheduler');
	drupal_add_css($sabreScheduler . '/css/sch-style.css');
  drupal_add_css($sabreScheduler . '/css/sch-print.css');
}


/**
 * Implements hook_permission().
 */
function sabreScheduler_permission() {
  return array( 
    // basic access for Scheduler users
		'access sabreScheduler' => array(
			'title' => t('Access Scheduler'), 
			'description' => t('Scheduler standard access'),
			), 
//    'kiosk mode' => array(
//			'title' => t('Kiosk Mode'), 
//			'description' => t('Customer access to kiosk for custom schedules and E-Logs.'),
//			), 
    // manager-level access
		'view manage menu' => array(
			'title' => t('View Reports & Settings'), 
			'description' => t('View Scheduler Reports & Settings'),
			), 
    'edit schedules' => array(
			'title' => t('Edit Schedules'), 
			'description' => t('Administer schedules from the scheduling grid.'),
			),
    'edit settings' => array(
			'title' => t('Edit Settings'), 
			'description' => t('Administer settings in the Manage menu.'),
			),
    // admin/full access
		'administer sabreScheduler' => array(
			'title' => t('Administer Scheduler, full access'), 
			'description' => t('Scheduler full access ' .
												'(includes:  System Core Administration)'),
			),
	);
}

/**
 * Implements hook_library_alter().
 */
function sabreScheduler_library_alter(&$libraries, $module) {
	
	$jquery_ui_theme = variable_get('jquery_ui_theme', '');
										
	// don't unset if the css file doesn't exist
	if ( strlen($jquery_ui_theme) > 0 ) {
		unset($libraries['ui']['css']['misc/ui/jquery.ui.theme.css']);
		$libraries['ui']['css'][$jquery_ui_theme] = array();
	}
	 
	// use the 'redmond' css theme for jquery ui rather than the default
  //unset($libraries['ui']['css']['misc/ui/jquery.ui.theme.css']);
  //$libraries['ui']['css']['sites/all/themes/redmond/jquery-ui-1.8.16.custom.css'] = array();
}


/*
 * This function defines the URL to the page created etc.
 * See http://api.drupal.org/api/function/hook_menu/6
 */


function sabreScheduler_menu() {
  
  $items = array();

	//------- Scheduler Menu Items -----
  
  
  // Kiosk Mode
  
//  $items['kiosk'] = array(
//		'title' => t('Welcome'),
//	  'page callback' => 'drupal_get_form',
//    'page arguments' => array('kiosk_home_form'),
//	  'access arguments' => array('kiosk mode'),
//	  'description' => 'Home',
//		'type' => MENU_CALLBACK,
//		'file' => 'sabreScheduler.homepages.inc',
//	);	
	
	
	// Home Pages
  
  $items['front_page'] = array(
	  'title' => t('Home'),
	  'page callback' => 'front_page',
    'access callback' => True,
	  'description' => 'Home',
		'type' => MENU_NORMAL_ITEM,
		'menu_name' => 'main-menu',
    'plid' => 0,
	  'weight' => 0,
    
	);	
  

	$items['manager/home'] = array(
	  'title' => t('Today\'s Sessions'),
		'title callback' => 'manager_home_page_title_callback',
	  'page callback' => 'manager_home_page',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Home',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.homepages.inc',
	);	
  
  /*
  $items['user/home'] = array(
		//'title' => t('Current Sessions'),
    //'title callback' => 'user_home_page_title_callback',
    //'title arguments' => array(),
	  'page callback' => 'user_home_redirect',
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Home',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.homepages.inc',
	);	
   * */
   
	
	$items['user/home'] = array(
		'title' => t('Current Sessions'),
	  //'title callback' => 'user_home_page_title_callback',
    //'title arguments' => array(2),
	  'page callback' => 'current_schedule',
    //'page arguments' => array(2),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Home',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.homepages.inc',
	);	
	
  /*
	$items['user/home/pager'] = array(
	  //'title' => t('Current Sessions'),
		'title callback' => 'user_home_page_title_callback',
    'title arguments' => array(3),
	  'page callback' => 'user_home_page',
		'page arguments' => array(3, True),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Home',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.homepages.inc',
	);	
   * */
   
	
  /*
	$items['user/view90days/%'] = array(
		//'title' => t('Scheduled Sessions (Next 90 Days)'),
	  'title callback' => 'user_home_page_title_callback',
    'title arguments' => array(2),
	  'page callback' => 'user_upcoming_schedule_display',
    'page arguments' => array(2),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Home',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.homepages.inc',
	);	
   * */
   
	/*
	$items['user/view90days/pager/%'] = array(
	  //'title' => t('Scheduled Sessions (Next 90 Days)'),
		'title callback' => 'user_home_page_title_callback',
    'title arguments' => array(3),
	  'page callback' => 'user_upcoming_schedule_display',
		'page arguments' => array(3, True),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Home',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.homepages.inc',
	);	
   * 
   */
	
	// -------------- E-Logs  ------------------
		
	$items['elog/assign/%'] = array(
		'title' => t('E-Log'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('elog_form', '0', 2),  // elog_id=0, assignment_id
		'access arguments' => array('access sabreScheduler'),
		'description' => 'Access E-Log',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.elogs.inc',
	);
  
  $items['elog/edit/%'] = array(
		'title' => t('E-Log'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('elog_form', 2),  // elog_id
		'access arguments' => array('access sabreScheduler'),
		'description' => 'Access E-Log',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.elogs.inc',
	);
  
  $items['elog/view/%'] = array(
		'title' => t('E-Log'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('view_elog_form', 2),  // elog_id
		'access arguments' => array('access sabreScheduler'),
		'description' => 'Access E-Log',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.elogs.inc',
	);
	
	$items['elog/view/%/%'] = array(
		'title' => t('E-Log'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('view_elog_form', 2, 3),  // elog_id, assignment_id
		'access arguments' => array('access sabreScheduler'),
		'description' => 'Access E-Log',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.elogs.inc',
	);
  
	
	$items['elogs/search'] = array(
		'title' => t('E-Logs'),
		'page callback' => 'elogs_search_callback',
		'access arguments' => array('view manage menu'),
		'description' => 'Display E-Log search results',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.elogs.inc',
	);

	$items['elogs/pager'] = array(
		'title' => t('E-Logs'),
		'page callback' => 'elogs_pager_callback',
		'access arguments' => array('view manage menu'),
		'description' => 'Display another page of E-Log search results',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.elogs.inc',
	);

	$items['elogs/clear'] = array(
		'title' => t('E-Logs'),
		'page callback' => 'elogs_clear_callback',
		'access arguments' => array('view manage menu'),
		'description' => 'Clears the cache for the E-Log search results page',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.elogs.inc',
	);
  
  // -------------- Discrepancy  ------------------
		
	$items['discrepancy/%/%'] = array(
		'title' => t('Report a Discrepancy'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('customer_discrepancy_form', 1, 2), 
                                    // assignment_id, elog_id
		'access arguments' => array('access sabreScheduler'),
		'description' => 'Access E-Log',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.discrepancy.inc',
	);

	
	
	
	// Management Menu
		
	
	$items['manage'] = array(
	  'title' => t('Manage'),
	  'page callback' => 'display_manager_links_menu',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Schedule Management Links',
		'type' => MENU_NORMAL_ITEM,
		'menu_name' => 'main-menu',
	  'weight' => 8,
	);	
	
	
	
	// Reports
  
  /* ------------- E-Logs ---------------------------- */
  
  $items['reports/search/elogs'] = array(
	  'title' => t('E-Logs'),
	  'page callback' => 'elogs_search',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Search E-Logs',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.elogs.inc',
	);
  
  $items['reports/elogs'] = array(
		'title' => t('Elog Reports'),
		'page callback' => 'report_elogs',
		'access arguments' => array('view manage menu'),
		'description' => 'Elog list by customer & date range',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
	
	$items['reports/elogs/%/%/%/%'] = array(
		'title' => t('Elog Report'),
		'page callback' => 'report_elogs',
		'page arguments' => array(2, 3, 4, 5, False), 
        // customer_id, report_type, begin_date, end_date, show_form_only
		'access arguments' => array('view manage menu'),
		'description' => 'Elog list by customer & date range',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
   
  
  /* -------------- Open Time Report -----------------*/
	
	$items['reports/opentime'] = array(
	  'title' => t('Simulator Open Time Report'),
	  'page callback' => 'report_open_time',
		//'page arguments' => array('', '', '', True),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Simulator Open time Report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);	
	
	$items['reports/opentime/%/%/%/%'] = array(
	  'title' => t('Simulator Open Time Report'),
	  'page callback' => 'report_open_time',
    // sim_id, interval, begin_date, end_date, show_form_only
		'page arguments' => array(2, 3, 4, 5, False), 
	  'access arguments' => array('view manage menu'),
	  'description' => 'Simulator Open time Report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);	
	
	/*
	$items['reports/customer/grid'] = array(
		'title' => t('Customer Schedule & Session Availability Report'),
		'page callback' => 'customer_grid_display',
		'access arguments' => array('view manage menu'),
		'description' => 'Customer schedule & availability report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
	
	$items['reports/customer/grid/%/%/%/%'] = array(
		'title' => t('Customer Schedule & Session Availability Report'),
		'title callback' => 'customer_schedule_title',
		'title arguments' => array(3, t('Customer Schedule & Session Availability Report')),
		'page callback' => 'customer_grid_display',
		'page arguments' => array(3, 4, 5, 6),  // customer_id, simulator_id, view_month, view_year
		'access arguments' => array('view manage menu'),
		'description' => 'Customer schedule & availability report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
	*/
	/*
	$items['reports/customer/detail'] = array(
		'title' => t('Customer Schedule Detail Report'),
		'page callback' => 'report_customer_detail',
		'access arguments' => array('view manage menu'),
		'description' => 'Customer schedule detail report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
	
	$items['reports/customer/detail/%/%/%/%'] = array(
		'title' => t('Customer Schedule Detail Report'),
		'title callback' => 'customer_schedule_title',
		'title arguments' => array(3, t('Customer Schedule Detail Report')),
		'page callback' => 'report_customer_detail',
		'page arguments' => array('DETAIL', 3, 4, 5, 6),  // customer_id, simulator_id, view_month, view_year
		'access arguments' => array('view manage menu'),
		'description' => 'Customer schedule & availability report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
   * */
   
	
	$items['reports/customer/cutbill'] = array(
		'title' => t('Customer Cut/Billable Report'),
		'page callback' => 'report_customer_detail',
		'page arguments' => array('CUTBILL'),
		'access arguments' => array('view manage menu'),
		'description' => 'Customer schedule detail report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
	
	$items['reports/customer/cutbill/%/%/%/%'] = array(
		'title' => t('Customer Cut/Billable Report'),
		'title callback' => 'customer_schedule_title',
		'title arguments' => array(3, t('Customer Cut/Billable Report')),
		'page callback' => 'report_customer_detail',
		'page arguments' => array('CUTBILL', 3, 4, 5, 6),  // customer_id, simulator_id, view_month, view_year
		'access arguments' => array('view manage menu'),
		'description' => 'Customer cut/billable report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
  
  
	
	
	$items['reports/summary/monthly'] = array(
		'title' => t('Monthly Summary of Hours'),
		'page callback' => 'report_monthly_summary',
		'page arguments' => array('', '', True),  // view_month, view_year
		'access arguments' => array('view manage menu'),
		'description' => 'Monthly summary of hours by simulator & customer',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
	
	$items['reports/summary/monthly/%/%'] = array(
		'title' => t('Monthly Summary of Hours'),
		'page callback' => 'report_monthly_summary',
		'page arguments' => array(3, 4, False),  // view_month, view_year
		'access arguments' => array('view manage menu'),
		'description' => 'Monthly summary of hours by simulator & customer',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
  
  $items['reports/grid/%/%/%'] = array(
		'title' => t('Schedule Report'),
		'title callback' => 'schedule_grid_title',
		'title arguments' => array('', 2, 3, 4),
		'page callback' => 'report_schedule_by_month',
		'page arguments' => array(2, 3, 4),  // simulator_id, schedule_id, customer_id
		'access arguments' => array('view manage menu'),
		'description' => 'Schedule Report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
	
	$items['reports/grid/%/%/%/%/%'] = array(
		'title' => t('Schedule Report'),
		'title callback' => 'schedule_grid_title',
		'title arguments' => array('', 2, 3, 4),
		'page callback' => 'report_schedule_by_month',
		'page arguments' => array(2, 3, 4, 5, 6),  // simulator_id, schedule_id, customer_id, view_month, view_year
		'access arguments' => array('view manage menu'),
		'description' => 'Schedule Report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
  
  $items['reports/grid/excel/%/%/%'] = array(
		'title' => t('Schedule Report'),
		'title callback' => 'schedule_grid_title',
		'title arguments' => array(t('Export to Excel'),3, 4, 5),
		'page callback' => 'drupal_get_form',     // simulator_id, $schedule_id, customer_id
		'page arguments' => array('report_schedule_excel_export_form', 3, 4, 5),  
		'access arguments' => array('view manage menu'),
		'description' => 'Schedule Report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
	
	$items['reports/grid/excel/%/%/%/%/%'] = array(
		'title' => t('Schedule Report'),
		'title callback' => 'schedule_grid_title',
		'title arguments' => array(t('Export to Excel'),3, 4, 5),
		'page callback' => 'drupal_get_form',     // simulator_id, schedule_id, customer_id, view_month, view_year
		'page arguments' => array('report_schedule_excel_export_form', 3, 4, 5, 6, 7),  
		'access arguments' => array('view manage menu'),
		'description' => 'Schedule Report',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
  
  //------ excel file download ------
  
  $items['excel/file/download/%'] = array(
	  'title' => t('Download Excel Report File'),
	  'page callback' => 'excel_file_download',
		'page arguments' => array(3),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Download Excel report file',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);	
  
  
  $items['reports/customer/sessions'] = array(
		'title' => t('Customer Scheduled Sessions Report'),
		'page callback' => 'report_customer_sessions',
		//'page arguments' => array('', ''),  // customer_id, begin, end, show_form_only (default all)
		'access arguments' => array('view manage menu'),
		'description' => 'Scheduled sessions list by customer & date range',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
	
	$items['reports/customer/sessions/%/%/%'] = array(
		'title' => t('Customer Scheduled Sessions Report'),
		'page callback' => 'report_customer_sessions',
		'page arguments' => array(3, 4, 5, False), // customer_id, begin_date, end_date, show_form_only
		'access arguments' => array('view manage menu'),
		'description' => 'Scheduled sessions list by customer & date range',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.reports.inc',
	);
	
	
	// Customers
	
	$items['customers'] = array(
	  'title' => t('Customers'),
	  'page callback' => 'customer_display',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Display customers',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.customers.inc',
	);
	
	$items['customer/add'] = array(
	  'title' => t('Add Customer'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('customer_form'),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add customer',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.customers.inc',
	);
	
	$items['customer/edit/%'] = array(
	  'title' => t('Edit Customer'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('customer_form', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Edit customer',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.customers.inc',
	);

	$items['customer/delete/%'] = array(
	  'title' => t('Delete Customer'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('customer_delete_confirm', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Delete customer',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.customers.inc',
	);
	
	// Customer User Groups
	
	$items['group/add/%'] = array(
	  'title' => t('Add User Group'),
		'title callback' => 'group_form_title_callback',
		'title arguments' => array('ADD', 2),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('customer_group_form', 2, '0'),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add a Customer User Group',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.groups.inc',
	);
	
	$items['group/edit/%/%'] = array(
	  'title' => t('Edit User Group'),
		'title callback' => 'group_form_title_callback',
		'title arguments' => array('EDIT', 3),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('customer_group_form', 2, 3),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Edit user group for simulator activity email notifications',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.groups.inc',
	);
	
	$items['group/delete/%/%'] = array(
	  'title' => t('Delete User Group'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('customer_group_delete_confirm', 2, 3),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Delete user group',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.groups.inc',
	);
	
	$items['group/user/add'] = array(
	  'title' => t('Add User to Group'),
	  'page callback' => 'customer_group_add_user_callback',
		//'page arguments' => array(3),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add user to group',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.groups.inc',
	);
	
	$items['group/user/remove/%'] = array(
	  'title' => t('Remove User from Group'),
	  'page callback' => 'customer_group_remove_user_callback',
		'page arguments' => array(3),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Remove user from group',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.groups.inc',
	);
	
	$items['group/user/refresh'] = array(
	  'title' => t('Refresh Users Table'),
	  'page callback' => 'customer_group_user_table_refresh_callback',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Refresh users table',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.groups.inc',
	);
	
	// ----------------- EXCEPTIONS ----------------------
	
	$items['exceptions'] = array(
	  'title' => t('Exceptions'),
	  'page callback' => 'exceptions_search',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Search scheduling exception dates',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	);
	
	$items['exceptions/search'] = array(
		'title' => t('Exceptions'),
		'page callback' => 'exceptions_search_callback',
		'access arguments' => array('view manage menu'),
		'description' => 'Display scheduling exceptions search results',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	);

	$items['exceptions/pager'] = array(
		'title' => t('Exceptions'),
		'page callback' => 'exceptions_pager_callback',
		'access arguments' => array('view manage menu'),
		'description' => 'Display another page of scheduling exception search results',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	);

	$items['exceptions/clear'] = array(
		'title' => t('Exceptions'),
		'page callback' => 'exceptions_clear_callback',
		'access arguments' => array('view manage menu'),
		'description' => 'Clears the cache for the scheduling exceptions search results page',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	);
	
	$items['exception/add'] = array(
	  'title' => t('Add Exception'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('exception_form'),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add exception',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	);
	
  /*  REVISED HANDLER -- add exceptions 7/2013
   *  exceptions added by single or multiple selection
   *  grid display now contains hidden form to store list of any selected sessions
   *  form is submitted, data is stored in $_SESSION['sel_grid_sessions'] variable 
   *  browser is then redirected to menu path for exception/add/% (exception_form)
   *  exception_form checks for existence of $_SESSION['sel_grid_sessions'] to
   *  retrieve list
   */
	$items['exception/add/%/%'] = array(
	  'title' => t('Add Exception'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('exception_form', '0', 2, 3), //  exception_id=0, simulator_id, schedule_id
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add exception',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	);
  
  // DEPRECATED - add exception 7/2013
  /*
	$items['exception/add/%/%'] = array(
	  'title' => t('Add Exception'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('exception_form', '0', 2, 3),  // exception_id=0, simulator_id, sel_sessions
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add exception',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	); */
	
	$items['exception/edit/%'] = array(
	  'title' => t('Edit Exception'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('exception_form', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Edit exception',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	);

	$items['exception/delete/%'] = array(
	  'title' => t('Delete Exception'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('exception_delete_confirm', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Delete exception',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.exceptions.inc',
	);
	
	
	
	
	//------- Schedules -----
	
	$items['schedules'] = array(
	  'title' => t('Schedules'),
	  'page callback' => 'schedules_display',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Search and view Schedules',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.schedules.inc',
	);
	
	$items['schedules/pager'] = array(
		'title' => t('Schedules'),
		'page callback' => 'schedules_display',
		'page arguments' => array(True),		// flag indicates this is a pager call
		'access arguments' => array('view manage menu'),
		'description' => 'Display another Discrepancy search results page',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.schedules.inc',
	);
	
	$items['schedule/add'] = array(
		'title' => t('Add Schedule'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_form'),
		'access arguments' => array('view manage menu'),
		'description' => 'Create a new schedule',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.schedules.inc',
	);
	
	$items['schedule/edit/%'] = array(
		'title' => t('Edit Schedule'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_form', 2),
		'access arguments' => array('view manage menu'),
		'description' => 'Edit schedule',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.schedules.inc',
	);
	
	$items['schedule/delete/%'] = array(
		'title' => t('Delete Schedule'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_delete_confirm', 2),
		'access arguments' => array('view manage menu'),
		'description' => 'Delete schedule',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.schedules.inc',
	);
	
	// -------------- Schedule Grid ------------------
	
	$items['schedule/grid/%/%'] = array(
		'title' => t('Schedule Assignments'),
		'title callback' => 'schedule_grid_title',
		'title arguments' => array('', 2, 3),
		'page callback' => 'schedule_grid_display',
		'page arguments' => array(2, 3),  // simulator_id, schedule_id
		'access arguments' => array('view manage menu'),
		'description' => 'Scheduling grid',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
	
  
	$items['schedule/grid/%/%/%'] = array(
		'title' => t('Schedule Assignments'),
		'title callback' => 'schedule_grid_title',
		'title arguments' => array('', 2, 3, 4),
		'page callback' => 'schedule_grid_display',
		'page arguments' => array(2, 3, 4),  // simulator_id, schedule_id, customer_id
		'access arguments' => array('view manage menu'),
		'description' => 'Scheduling grid',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);

	
	$items['schedule/grid/%/%/%/%/%'] = array(
		'title' => t('Schedule Assignments'),
		'title callback' => 'schedule_grid_title',
		'title arguments' => array('', 2, 3, 4),
		'page callback' => 'schedule_grid_display',
		'page arguments' => array(2, 3, 4, 5, 6),  // simulator_id, schedule_id, customer_id, view_month, view_year
		'access arguments' => array('view manage menu'),
		'description' => 'Scheduling grid',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
  
  $items['schedule/grid/delete'] = array(
		'title' => t('Delete Assignments & Exceptions'),
		'page callback' => 'cut_copy_delete',
		'page arguments' => array('DELETE'),
		'access arguments' => array('view manage menu'),
		'description' => 'Delete schedule assignments & exceptions',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
	
	$items['schedule/grid/cut'] = array(
		'title' => t('Cut Assignments'),
		'page callback' => 'cut_copy_delete',
		'page arguments' => array('CUT'),
		'access arguments' => array('view manage menu'),
		'description' => 'Cut assignments',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
	
	$items['schedule/grid/copy'] = array(
		'title' => t('Copy Assignments or Exceptions'),
		'page callback' => 'cut_copy_delete',
		'page arguments' => array('COPY'),
		'access arguments' => array('view manage menu'),
		'description' => 'Copy assignments or exceptions',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
  
  $items['schedule/grid/paste/%'] = array(
		'title' => t('Paste Items from Clipboard'),
		'page callback' => 'paste_from_clipboard',
		'page arguments' => array(3),
		'access arguments' => array('view manage menu'),
		'description' => 'Paste Assignments or an Exception into schedule from the clipboard',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
  
  $items['schedule/grid/move/%'] = array(
		'title' => t('Move Schedule Items'),
		'page callback' => 'move_schedule_items',
		'page arguments' => array(3),
		'access arguments' => array('view manage menu'),
		'description' => 'Move schedule items',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.grid.inc',
	);
	
	
		
	
	// ----------- Schedule Assignments -----------------
  
  /*  REVISED HANDLER -- add assignments 7/2013
   *  assignments added by single or multiple selection
   *  grid display now contains hidden form to store list of any selected sessions
   *  form is submitted, data is stored in $_SESSION['sel_grid_sessions'] variable 
   *  browser is then redirected to menu path for schedule/assignment/add/% (schedule_assignment_form)
   *  schedule_assignment_form checks for existence of $_SESSION['sel_grid_sessions'] to
   *  retrieve list
   */
  $items['schedule/assignment/add/%'] = array(
		'title' => t('Add Schedule Assignment'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_assignment_form', '0', 3),  // assigment_id=0, schedule_id
		'access arguments' => array('view manage menu'),
		'description' => 'Add schedule assignment',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.assignments.inc',
	);
	
  
  /*
   *    DEPRECATED - add assignments 7/2013
   */
  /*
	$items['schedule/assignment/add/%/%'] = array(
		'title' => t('Add Schedule Assignment'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_assignment_form', '0', 3, 4),  
                                     // assigment_id=0, schedule_id, sel_sessions
		'access arguments' => array('view manage menu'),
		'description' => 'Add schedule assignment',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.assignments.inc',
	); */
	
	$items['schedule/assignment/edit/%'] = array(
		'title' => t('Edit Schedule Assignment'),
		'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_assignment_form', 3),
		'access arguments' => array('view manage menu'),
		'description' => 'Edit schedule assignment',
		'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.assignments.inc',
	);


	
	// ----------- Sessions Patterns
	
	$items['patterns'] = array(
	  'title' => t('Schedule Patterns'),
	  'page callback' => 'session_patterns_display',
	  'access arguments' => array('view manage menu'),
	  'description' => 'View settings for new schedule sessions',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.patterns.inc',
	);
	
	$items['pattern/add'] = array(
	  'title' => t('Add Schedule Pattern'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_pattern_form'),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add a schedule pattern',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.patterns.inc',
	);
	
	$items['pattern/edit/%'] = array(
	  'title' => t('Edit Schedule Pattern'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_pattern_form', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Edit a schedule pattern',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.patterns.inc',
	);
	
	$items['pattern/delete/%'] = array(
	  'title' => t('Delete Schedule Pattern'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('schedule_pattern_delete_confirm', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Delete a schedule pattern',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.patterns.inc',
	);
	
	$items['sessions'] = array(
	  'title' => t('Sessions'),
	  'page callback' => 'session_definitions_display',
	  'access arguments' => array('view manage menu'),
	  'description' => 'View session definitions',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.sessions.inc',
	);
	
	$items['session/add'] = array(
	  'title' => t('Add Session'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('session_definition_form'),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add a schedule pattern session',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.sessions.inc',
	);
	
	$items['session/edit/%'] = array(
	  'title' => t('Edit Session'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('session_definition_form', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Edit a schedule pattern session',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.sessions.inc',
	);
	
	$items['session/delete/%'] = array(
	  'title' => t('Delete Session'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('session_definition_delete_confirm', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Delete a schedule pattern session',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.sessions.inc',
	);	
	
	//------- Schedules -----
	
	$items['simulators'] = array(
	  'title' => t('Simulators'),
	  'page callback' => 'simulators_display',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Display simulators',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);
	
	$items['simulator/view/%'] = array(
	  'title' => t('Simulator'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('simulator_view_form', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'View simulator',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);
		

	$items['simulator/add'] = array(
	  'title' => t('Add Simulator'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('simulator_form'),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Add simulator',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);

	$items['simulator/edit/%'] = array(
	  'title' => t('Edit Simulator'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('simulator_form', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Edit simulator',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);

	$items['simulator/delete/%'] = array(
	  'title' => t('Delete Simulator'),
	  'page callback' => 'drupal_get_form',
		'page arguments' => array('simulator_delete_confirm', 2),
	  'access arguments' => array('view manage menu'),
	  'description' => 'Delete simulator',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);
  
  //------ simulator file download ------
  
  $items['simulator/file/download/%'] = array(
	  'title' => t('Download Simulator File'),
	  'page callback' => 'simulator_file_download',
		'page arguments' => array(3),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Download file attached to simulator',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);	
  
  
  //------ simulator status ------------
  
  $items['simulator/status/preflight/%'] = array(
	  'title' => t('Preflight'),
	  'page callback' => 'simulator_status_display',
    'page arguments' => array(SCH_SIM_PREFLIGHT, 3),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Display simulator preflight items',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);
  
  $items['simulator/status/openitems/%'] = array(
	  'title' => t('Open Items'),
	  'page callback' => 'simulator_status_display',
    'page arguments' => array(SCH_SIM_OPENITEMS, 3),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Display simulator open items',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);
  
  $items['simulator/status/mmi/%'] = array(
	  'title' => t('MMI Items'),
	  'page callback' => 'simulator_status_display',
    'page arguments' => array(SCH_SIM_MMIITEMS, 3),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Display simulator MMI items',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);
  
  $items['simulator/status/closeditems/%'] = array(
	  'title' => t('Recently Closed'),
	  'page callback' => 'simulator_status_display',
    'page arguments' => array(SCH_SIM_CLOSEDITEMS, 3),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Display simulator recently closed items',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);
  
  $items['simulator/status/files/%'] = array(
	  'title' => t('Simulator Documents'),
	  'page callback' => 'simulator_files_display',
    'page arguments' => array(3),
	  'access arguments' => array('access sabreScheduler'),
	  'description' => 'Display simulator viewable documents',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.simulators.inc',
	);
	
	
	//------ admin functions -------------
	
	$items['admin/link/QMS'] = array(
	  'title' => t('Link Scheduler to QMS'),
	  'page callback' => 'link_qms',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Link Scheduler to QMS',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.admin.inc',
	);
	
	$items['admin/load/holidays'] = array(
	  'title' => t('Load Holidays'),
	  'page callback' => 'load_holidays',
	  'access arguments' => array('view manage menu'),
	  'description' => 'Load US Holidays',
	  'type' => MENU_CALLBACK,
		'file' => 'sabreScheduler.admin.inc',
	);
	
	
  return $items;

}


//------------------------------------------------------------------------------------


// ----------- Admin Menu ---------------------------

/*
 * 	sabreScheduler_menu_alter()
 *
 *	implements hook_menu_alter to switch the menu from 'Management' to 'Main' which gets displayed in
 *  a tab at the top of the page if the user has adminstrator permissions
 */

function sabreScheduler_menu_alter(&$items) {
  // Example - disable the page at node/add
	$items['admin']['title'] = t('System');
  $items['admin']['access arguments'] = array('administer sabreScheduler');
	$items['admin']['menu_name'] = 'main-menu';
	$items['admin']['weight'] = 10;
	
	$items['admin/people']['title'] = t('User Accounts');
  //$items['admin/people']['access arguments'] = array('view manage menu');
	$items['admin/people']['menu_name'] = 'manage';
	$items['admin/people']['weight'] = 0;
	//$items['admin/people']['type'] = MENU_CALLBACK;
	
	//$items['admin/people/permissions']['title'] = t('User Permissions');
  $items['admin/people/permissions']['access arguments'] = array('administer sabreScheduler');
	
	//$items['admin/people/permissions/roles']['title'] = t('User Roles');
  $items['admin/people/permissions/roles']['access arguments'] = array('administer sabreScheduler');
	
}




//------------------------------------------------------------------------------------



/*
 * display_manager_links_menu()
 *
 */
function display_manager_links_menu() {
	
	if ( user_access('view manage menu') == FALSE ) {
    drupal_set_message( t('Unauthorized:  Permission is required'), 'status');
		drupal_goto('');
		return;
  }

	
	$content = _create_simulator_grid_links();
			
		
	// -------------- REPORTS ------------------------
	
	$content .= '<h3>' . t('Reports') . '</h3>';
	
	$content .= '<dl class="admin-list">';
  
  
	
	
	
	$content .=
		'<dt><a href="' . url('reports/customer/cutbill') . '">Customer Cut/Billable Report</a></dt>' . 
		'<dd>Listing by month of a customer\'s cut/billable sessions</dd>';
  
  $content .=
		'<dt><a href="' . url('reports/customer/sessions') . '">Customer Scheduled Sessions</a></dt>' . 
		'<dd>Scheduled sessions report by customer and date range</dd>';

	/*
	$content .=
		'<dt><a href="' . url('reports/customer/detail') . '">Customer Schedule Detail Report</a></dt>' . 
		'<dd>Listing by month of a customer\'s sessions</dd>';
   * 
   */
  
  $content .=
		'<dt><a href="' . url('reports/search/elogs') . '">E-Logs</a></dt>' . 
		'<dd>Search, view and edit E-Logs</dd>';
  
  $content .=
		'<dt><a href="' . url('reports/elogs') . '">E-Logs Report</a></dt>' . 
		'<dd>E-Logs report by customer and date range</dd>';
		
	$content .=
		'<dt><a href="' . url('reports/summary/monthly') . '">Monthly Summary</a></dt>' . 
		'<dd>Report of training sessions recorded by month</dd>';
  
  $content .=
		'<dt><a href="' . url('reports/opentime') . '">Simulator Open Time Report</a></dt>' . 
		'<dd>Listing of open sessions by simulator (all or one)</dd>';

		
	$content .= '</dl>';
		
	
	// -------------- SETTINGS -----------------------
	
	$content .= '<h3><hr />' . t('Settings') . '</h3>';
	
	$content .= '<dl class="admin-list">';
	
	$content .=
		'<dt><a href="' . url('customers') . '">Customers</a></dt>' . 
		'<dd>Administer Customers</dd>';

	$content .=
		'<dt><a href="' . url('exceptions') . '">Exceptions</a></dt>' . 
		'<dd>Administer Exceptions</dd>';
		
	$content .=
		'<dt><a href="' . url('schedules') . '">Schedules</a></dt>' . 
		'<dd>Administer Schedules</dd>';
		
	$content .=
		'<dt><a href="' . url('patterns') . '">Schedule Patterns</a></dt>' . 
		'<dd>Administer Patterns for Creating New Schedules</dd>';
		
	$content .=
		'<dt><a href="' . url('sessions') . '">Sessions</a></dt>' . 
		'<dd>Administer Session Definitions</dd>';
	
	$content .=
		'<dt><a href="' . url('simulators') . '">Simulators</a></dt>' . 
		'<dd>Display Simulators</dd>';
	
	if ( user_access('administer users') == True )  {
		$content .= 
			'<dt><a href="' . url('admin/people') . '">User Accounts</a></dt>' . 
			'<dd>Administer User Accounts</dd>';
	}
	$content .= '</dl>';
		
	return $content;
}

/*
 *		schedule_grid_title()
 */
function schedule_grid_title($prefix = '', $simulator_id, $schedule_id, $customer_id = 0) {
  
  $title = '';
  if (strlen($prefix)) {
    $title = $prefix . ', ';
  }
  
	$sim = _get_simulator_name($simulator_id);
	if ( !$customer_id ) {
    $title .= $sim;
		return $title;
	}
	$cust_name = _get_customer_name($customer_id);
	if ( strlen($cust_name) ) {
		$title .= $sim . ' : ' . $cust_name;
    return $title;
	}
  $title .= $sim;
	
	return $title;
}

/*
 *		customer_schedule_title()
 */

function customer_schedule_title($customer_id, $default_title) {
	if ( !$customer_id ) {
		return $default_title;
	}
	return _get_customer_name($customer_id);
}



/*
 *		group_form_title_callback()
 */
function group_form_title_callback($mode, $id) {

	if ($mode == 'ADD') {  // add - send the customer_id
		return _get_customer_name($id) . ': ' . t('Add Group');
	}
	else {  //edit - send the group_id
		$group = _get_customer_group($id);
		return  $group->customer . ': ' . t('Edit') . ' "' . $group->group_name . '"';
	}
}

/*
 *		user_home_page_title_callback()
 */
function user_home_page_title_callback($customer_id = 0) {
  
	global $user;
	return _get_customer_name($customer_id, $user->uid);
}

/*
 *		manager_home_page_title_callback()
 */
function manager_home_page_title_callback() {
	return t('Today\'s Sessions') . ', ' . date('n/j/Y');
}



/*
 *    confirm_form FIX
 * 
 *    sabreScheduler_form_alter()
 * 
 *    convert all confirm_form 'Cancel' links to buttons and 
 *    redirects the link href on button submit
 *    forces submit button style to bold for all forms
 * 
 */

function sabreScheduler_form_alter(&$form, &$form_state, &$form_id) {
  // Converting all links to form buttons
  if (isset($form['#theme']) && ($form['#theme'] == 'confirm_form')) {
    $cancel_href = $form['actions']['cancel']['#href'];
    $cancel_title = $form['actions']['cancel']['#title'];
    if (!is_null($cancel_href)) {
//-+ REPLACED:
      $form['actions']['cancel']['#href'] = '';
//-+ Hide the old cancel link
      // Add our own button
      $form['actions']['cancel'] = array(
        '#type' => 'button',
        '#value' => $cancel_title,
        '#attributes' => array('onclick' => 'window.location="' . 
                              url($cancel_href) . '"; return false;'),
      );
      // needs to be set before confirm_form is called or wrong path triggered
      //$_GET['destination'] = $cancel_href;
    }
    
  }
  
  // this applies to ALL form submit buttons in QMS
  //$form['actions']['submit']['#attributes']['class'][] = 'qms-btn-submit';
  if ( isset($form['actions']['submit'])) {
    $form['actions']['submit']['#attributes']['style'] = 'font-weight:bolder;';
  }
                                                         
  return $form;
}


/*
 *  adjust display of block for scheduler (when it's connecting to QMS)
 * 
 */
//function sabreScheduler_block_view_alter(&$data, $block) {
//  //$debug = 1;
//  if ($block->delta == 'no_javascript') {
//    $block->region = 'sidebar_second';
//  }
//  
//}









