Пример #1
0
function AJupdateDashboard()
{
    $data = array();
    $data['cont'] = addContinuationsEntry('AJupdateDashboard', array(), 90, 1, 0);
    $data['status'] = getStatusData();
    $data['topimages'] = getTopImageData();
    $data['toplongimages'] = getTopLongImageData();
    $data['toppastimages'] = getTopPastImageData();
    $data['topfailed'] = getTopFailedData();
    $data['topfailedcomputers'] = getTopFailedComputersData();
    $data['reschart'] = getActiveResChartData();
    $data['blockallocation'] = getBlockAllocationData();
    $data['newreservations'] = getNewReservationData();
    $data['failedimaging'] = getFailedImagingData();
    $data['managementnodes'] = getManagementNodeData();
    sendJSON($data);
}
Пример #2
0
function blockAllocationForm()
{
    global $user, $days, $mode;
    $blockid = getContinuationVar('blockid', '');
    $data = getBlockAllocationData($blockid);
    if ($mode == 'newBlockAllocation') {
        $brname = '';
        $imageid = '';
        print "<h2>" . i("New Block Allocation") . "</h2>\n";
    } elseif ($mode == 'editBlockAllocation') {
        print "<h2>" . i("Edit Block Allocation") . "</h2>\n";
    } elseif ($mode == 'requestBlockAllocation') {
        print "<h2>" . i("Request New Block Allocation") . "</h2>\n";
        print i("Complete the following form to request a new block allocation. Your request will need to be approved by a VCL admin before it is created.");
        print "<br><br>\n";
    }
    $resources = getUserResources(array("imageAdmin", "imageCheckOut"));
    $resources["image"] = removeNoCheckout($resources["image"]);
    print "<table summary=\"\">\n";
    if ($mode != 'requestBlockAllocation') {
        print "  <tr>\n";
        print "    <th align=right>" . i("Name:") . "</th>\n";
        print "    <td>\n";
        print "      <input type=\"text\" value=\"{$data['name']}\" dojoType=\"dijit.form.ValidationTextBox\" ";
        print "id=\"brname\" required=\"true\" invalidMessage=\"";
        print i("Name can only contain letters, numbers, spaces, dashes(-), parenthesis, and periods(.) and can be from 3 to 80 characters long");
        print "\" regExp=\"^([-a-zA-Z0-9\\. \\(\\)]){3,80}\$\" style=\"width: 300px\" ";
        print "postCreate=\"dijit.byId('brname').focus();\">\n";
        print "    </td>\n";
        print "  </tr>\n";
        print "  <tr>\n";
        print "    <th align=right>" . i("Owner:") . "</th>\n";
        print "    <td>\n";
        $initval = $data['owner'];
        if (empty($initval)) {
            $initval = "{$user['unityid']}@{$user['affiliation']}";
        }
        print "      <input type=\"text\" value=\"{$initval}\" dojoType=\"dijit.form.ValidationTextBox\" ";
        print "id=\"browner\" required=\"true\" invalidMessage=\"" . i("Unknown user") . "\" style=\"width: 300px\" ";
        print "validator=\"checkOwner\" onFocus=\"ownerFocus\">\n";
        print "    </td>\n";
        print "  </tr>\n";
    }
    print "  <tr>\n";
    print "    <th align=right>" . i("Environment") . ":</th>\n";
    print "    <td>\n";
    if (USEFILTERINGSELECT && count($resources['image']) < FILTERINGSELECTTHRESHOLD) {
        print "      <select dojoType=\"dijit.form.FilteringSelect\" id=imagesel style=\"width: 300px\" ";
        print "queryExpr=\"*\${0}*\" highlightMatch=\"all\" autoComplete=\"false\" ";
        print "onChange=\"clearCont2();\">\n";
    } else {
        print "      <select id=imagesel onChange=\"clearCont2();\">";
    }
    foreach ($resources['image'] as $id => $name) {
        if ($id == $data['imageid']) {
            print "        <option value=\"{$id}\" selected>{$name}</option>\n";
        } else {
            print "        <option value=\"{$id}\">{$name}</option>\n";
        }
    }
    print "      </select>\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("User group") . ":</th>\n";
    print "    <td>\n";
    $groups = getUserGroups(0, $user['affiliationid']);
    if (USEFILTERINGSELECT && count($groups) < FILTERINGSELECTTHRESHOLD) {
        print "      <select dojoType=\"dijit.form.FilteringSelect\" id=groupsel style=\"width: 300px\" ";
        print "queryExpr=\"*\${0}*\" highlightMatch=\"all\" autoComplete=\"false\" ";
        print "onChange=\"clearCont2();\">\n";
    } else {
        print "      <select id=groupsel onChange=\"clearCont2();\">";
    }
    $extragroups = array();
    if ($mode == 'requestBlockAllocation') {
        print "        <option value=\"0\">(" . i("group not listed") . ")</option>\n";
    }
    if (!empty($data['usergroupid']) && !array_key_exists($data['usergroupid'], $groups)) {
        $groups[$data['usergroupid']] = array('name' => getUserGroupName($data['usergroupid'], 1));
        $extragroups[$data['usergroupid']] = array('name' => getUserGroupName($data['usergroupid'], 1));
        uasort($groups, "sortKeepIndex");
    }
    foreach ($groups as $id => $group) {
        if ($group['name'] == ' None@') {
            continue;
        }
        if ($id == $data['usergroupid']) {
            print "        <option value=\"{$id}\" selected>{$group['name']}</option>\n";
        } else {
            print "        <option value=\"{$id}\">{$group['name']}</option>\n";
        }
    }
    print "      </select>\n";
    print "      <img src=\"images/helpicon.png\" id=\"grouphelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("Number of seats") . ":</th>\n";
    print "    <td>\n";
    print "      <input dojoType=\"dijit.form.NumberSpinner\" value=\"{$data['seats']}\" ";
    print "smallDelta=1 largeDelta=5 constraints=\"{min:" . MIN_BLOCK_MACHINES . ", max:";
    print MAX_BLOCK_MACHINES . "}\" id=machinecnt required=\"true\" style=\"width: 70px\" filter=\"machinecntfilter\"/>\n";
    print "      <img src=\"images/helpicon.png\" id=\"seathelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "</table>\n";
    print i("Specify dates/times by:\n");
    print "<img src=\"images/helpicon.png\" id=\"repeattypehelp\" /><br>\n";
    print "<input type=\"radio\" name=\"datetime\" id=\"weeklyradio\" onClick=\"blockFormChangeTab('weekly');\" {$data['type']['weekly']} />\n";
    print "<label for=\"weeklyradio\">" . i("Repeating Weekly") . "</label><br>\n";
    print "<input type=\"radio\" name=\"datetime\" id=\"monthlyradio\" onClick=\"blockFormChangeTab('monthly');\" {$data['type']['monthly']} />\n";
    print "<label for=\"monthlyradio\">" . i("Repeating Monthly") . "</label><br>\n";
    print "<input type=\"radio\" name=\"datetime\" id=\"listradio\" onClick=\"blockFormChangeTab('list');\" {$data['type']['list']} />\n";
    print "<label for=\"listradio\">" . i("List of Dates/Times") . "</label><br><br>\n";
    print "<div style=\"border: 1px solid; margin-right: 8px;\">\n";
    print "<div id=\"timeTypeContainer\" dojoType=\"dijit.layout.StackContainer\"\n";
    print "     style=\"width:550px; height:240px; margin: 5px;\">\n";
    # repeating weekly
    print "<div id=\"weeklytab\" dojoType=\"dijit.layout.ContentPane\" ";
    print "title=\"" . i("Repeating Weekly") . "\" {$data['type2']['weekly']}>\n";
    print "<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("First Date of Usage") . ":</th>\n";
    print "    <td>\n";
    print "      <input type=\"text\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" id=\"wkfirstdate\" value=\"{$data['swdate']}\" />\n";
    print "    <img src=\"images/helpicon.png\" id=\"wkfdhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("Last Date of Usage") . ":</th>\n";
    print "    <td>\n";
    print "      <input type=\"text\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" id=\"wklastdate\" value=\"{$data['ewdate']}\" />\n";
    print "    <img src=\"images/helpicon.png\" id=\"wkldhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "</table>\n";
    print "<table summary=\"\">\n";
    print "<tr>\n";
    print "<th>" . i("Days") . " <img src=\"images/helpicon.png\" id=\"wkdayshelp\" /></th>\n";
    print "<th>" . i("Times") . " <img src=\"images/helpicon.png\" id=\"wktimeshelp\" /></th>\n";
    print "</tr>\n";
    print "<tr>\n";
    print "<td valign=top>\n";
    foreach ($days as $id => $day) {
        print "  <INPUT type=checkbox id=\"wdays{$id}\" value=\"{$day}\" {$data['wdayschecked'][$day]}>\n";
        print "  <label for=\"wdays{$day}\">" . i($day) . "</label><br>\n";
    }
    print "</td>\n";
    print "<td>\n";
    print i("Start") . ":<div type=\"text\" id=\"weeklyaddstart\" dojoType=\"dijit.form.TimeTextBox\" ";
    print "required=\"true\" onChange=\"blockFormWeeklyAddBtnCheck(1);\" style=\"width: 78px\"></div>\n";
    print i("End") . ":<div type=\"text\" id=\"weeklyaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" ";
    print "required=\"true\" onChange=\"blockFormWeeklyAddBtnCheck(0);\" startid=\"weeklyaddstart\" ";
    print "style=\"width: 78px\"></div>\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" ";
    print "id=\"requestBlockWeeklyAddBtn\">\n";
    print i("Add") . "\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormAddWeeklyTime();\n";
    print "  </script>\n";
    print "</button>\n";
    print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"requestBlockAddWeeklyStore\" ";
    print "data=\"blockFormAddWeeklyData\"></div>\n";
    print "<table dojoType=\"dojox.grid.DataGrid\" jsId=\"requestBlockAddWeeklyGrid\" sortInfo=1 ";
    print "store=\"requestBlockAddWeeklyStore\" style=\"width: 330px; height: 120px;\">\n";
    print "<thead>\n";
    print "<tr>\n";
    print "<th field=\"start\" width=\"102px\" formatter=\"gridTimePrimary\">";
    print i("Start") . "</th>\n";
    print "<th field=\"end\" width=\"102px\" formatter=\"timeFromTextBox\">";
    print i("End") . "</th>\n";
    print "<th field=\"remove\" width=\"80px\">" . i("Remove") . "</th>\n";
    print "</tr>\n";
    print "</thead>\n";
    print "</table>\n";
    print "</td>\n";
    print "</tr>\n";
    print "</table>\n";
    print "</div>\n";
    # repeating weekly
    # repeating monthly
    print "<div id=\"monthlytab\" dojoType=\"dijit.layout.ContentPane\" ";
    print "title=\"" . i("Repeating Monthly") . "\" {$data['type2']['monthly']}>\n";
    print "<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("First Date of Usage") . ":</th>\n";
    print "    <td>\n";
    print "      <input type=\"text\" id=\"mnfirstdate\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" value=\"{$data['smdate']}\"/>\n";
    print "    <img src=\"images/helpicon.png\" id=\"mnfdhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("Last Date of Usage") . ":</th>\n";
    print "    <td>\n";
    print "      <input type=\"text\" id=\"mnlastdate\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" value=\"{$data['emdate']}\" />\n";
    print "    <img src=\"images/helpicon.png\" id=\"mnldhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "</table>\n";
    $weeknumArr = array(1 => i("1st"), 2 => i("2nd"), 3 => i("3rd"), 4 => i("4th"), 5 => i("5th"));
    $dayArr = array(1 => i("Sunday"), 2 => i("Monday"), 3 => i("Tuesday"), 4 => i("Wednesday"), 5 => i("Thursday"), 6 => i("Friday"), 7 => i("Saturday"));
    print i("Repeat on the") . " ";
    printSelectInput('weeknum', $weeknumArr, $data['mnweeknumid'], 0, 0, 'mnweeknum');
    printSelectInput('day', $dayArr, $data['mndayid'], 0, 0, 'mnday');
    print " " . i("of every month") . "<br><br>\n";
    print i("Start") . ":<div type=\"text\" id=\"monthlyaddstart\" dojoType=\"dijit.form.TimeTextBox\" ";
    print "required=\"true\" onChange=\"blockFormMonthlyAddBtnCheck(1)\" style=\"width: 78px\"></div>\n";
    print i("End") . ":<div type=\"text\" id=\"monthlyaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" ";
    print "required=\"true\" onChange=\"blockFormMonthlyAddBtnCheck(0)\" startid=\"monthlyaddstart\" ";
    print "style=\"width: 78px\"></div>\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" ";
    print "id=\"requestBlockMonthlyAddBtn\">\n";
    print i("Add") . "\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormAddMonthlyTime();\n";
    print "  </script>\n";
    print "</button>\n";
    print "<img src=\"images/helpicon.png\" id=\"mntimeshelp\" />\n";
    print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"requestBlockAddMonthlyStore\" ";
    print "data=\"blockFormAddMonthlyData\"></div>\n";
    print "<table dojoType=\"dojox.grid.DataGrid\" jsId=\"requestBlockAddMonthlyGrid\" sortInfo=1 ";
    print "store=\"requestBlockAddMonthlyStore\" style=\"width: 330px; height: 120px;\">\n";
    print "<thead>\n";
    print "<tr>\n";
    print "<th field=\"start\" width=\"102px\" formatter=\"gridTimePrimary\">";
    print i("Start") . "</th>\n";
    print "<th field=\"end\" width=\"102px\" formatter=\"timeFromTextBox\">";
    print i("End") . "</th>\n";
    print "<th field=\"remove\" width=\"80px\">" . i("Remove") . "</th>\n";
    print "</tr>\n";
    print "</thead>\n";
    print "</table>\n";
    print "</div>\n";
    # repeating monthly
    # list of times
    print "<div id=\"listtab\" dojoType=\"dijit.layout.ContentPane\" ";
    print "title=\"" . i("List of Times") . "\" {$data['type2']['list']}>\n";
    print i("Date") . ":<div type=\"text\" id=\"listadddate\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" style=\"width: 95px\"></div>\n";
    print i("Start") . ":<input type=\"text\" id=\"listaddstart\" dojoType=\"dijit.form.TimeTextBox\" ";
    print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" />\n";
    print i("End") . ":<input type=\"text\" id=\"listaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" ";
    print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" startid=\"listaddstart\" />\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" ";
    print "id=\"requestBlockListAddBtn\">\n";
    print i("Add") . "\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormAddListSlot();\n";
    print "  </script>\n";
    print "</button>\n";
    print "<img src=\"images/helpicon.png\" id=\"listhelp\" />\n";
    print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"requestBlockAddListStore\" ";
    print "data=\"blockFormAddListData\"></div>\n";
    print "<div>\n";
    # grid wrapper
    print "<table dojoType=\"dojox.grid.DataGrid\" jsId=\"requestBlockAddListGrid\" sortInfo=1 ";
    print "store=\"requestBlockAddListStore\" style=\"width: 465px; height: 200px;\">\n";
    print "<thead>\n";
    print "<tr>\n";
    print "<th field=\"date1\" width=\"115px\" formatter=\"gridDateTimePrimary\">";
    print i("Date") . "</th>\n";
    print "<th field=\"start\" width=\"115px\" formatter=\"timeFromTextBox\">";
    print i("Start") . "</th>\n";
    print "<th field=\"end\" width=\"108px\" formatter=\"timeFromTextBox\">";
    print i("End") . "</th>\n";
    print "<th field=\"remove\" width=\"80px\">" . i("Remove") . "</th>\n";
    print "</tr>\n";
    print "</thead>\n";
    print "</table>\n";
    print "</div>\n";
    # grid wrapper
    print "</div>\n";
    # list of times
    print "</div>\n";
    # tabcontainer
    print "</div><br>\n";
    if ($mode == 'requestBlockAllocation') {
        print "<strong><big>" . i("Additional comments") . ":</big></strong>\n";
        print "<img src=\"images/helpicon.png\" id=\"commenthelp\" /><br>\n";
        print "<textarea id=\"comments\" dojoType=\"dijit.form.Textarea\" style=\"width: 400px;\">\n";
        print "</textarea><br><br>\n";
    }
    print "<button dojoType=\"dijit.form.Button\" type=\"button\" ";
    print "id=\"requestBlockSubmitBtn\">\n";
    if ($mode == 'requestBlockAllocation') {
        $btntxt = i("Submit Block Allocation Request") . "\n";
        $arg = 'request';
    } elseif ($mode == 'newBlockAllocation') {
        $btntxt = i("Submit New Block Allocation") . "\n";
        $arg = 'new';
    } elseif ($mode == 'editBlockAllocation') {
        $btntxt = i("Submit Block Allocation Changes") . "\n";
        $arg = 'edit';
    }
    print "  {$btntxt}\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormConfirm('{$arg}');\n";
    print "  </script>\n";
    print "</button>\n";
    $cont = addContinuationsEntry('AJvalidateUserid');
    print "<input type=\"hidden\" id=\"valuseridcont\" value=\"{$cont}\">\n";
    print "<div id=\"confirmDialog\" dojoType=\"dijit.Dialog\" title=\"";
    print i("Confirm Block Allocation") . "\">\n";
    print "<h2>" . i("Confirm Block Allocation") . "</h2>\n";
    if ($mode == 'requestBlockAllocation') {
        print i("Please confirm the following values and then click <strong>Submit Block Allocation Request</strong>");
    } else {
        printf(i("Please confirm the following values and then click <strong>%s</strong>"), $btntxt);
    }
    print "<br><br>\n<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=\"right\"><span id=\"confnametitle\"></span></th>\n";
    print "    <td><span id=\"confname\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\"><span id=\"confownertitle\"></span></th>\n";
    print "    <td><span id=\"confowner\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\">" . i("Environment") . ":</th>\n";
    print "    <td><span id=\"confimage\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\">" . i("User group") . ":</th>\n";
    print "    <td><span id=\"confgroup\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\">" . i("Seats") . ":</th>\n";
    print "    <td><span id=\"confseats\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\">" . i("Repeating") . ":</th>\n";
    print "    <td><span id=\"confrepeat\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr valign=\"top\">\n";
    print "    <th align=\"right\"><span id=\"conftitle1\"></span></th>\n";
    print "    <td><span id=\"confvalue1\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr valign=\"top\">\n";
    print "    <th align=\"right\"><span id=\"conftitle2\"></span></th>\n";
    print "    <td><span id=\"confvalue2\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr valign=\"top\">\n";
    print "    <th align=\"right\"><span id=\"conftitle3\"></span></th>\n";
    print "    <td><span id=\"confvalue3\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr valign=\"top\">\n";
    print "    <th align=\"right\"><span id=\"conftitle4\"></span></th>\n";
    print "    <td><span id=\"confvalue4\"></span></td>\n";
    print "  </tr>\n";
    print "</table>\n";
    print "<span id=\"commentsnote\" class=\"hidden\">" . i("Your additional comments will be submitted.") . "<br><br></span>\n";
    $data = array('extragroups' => $extragroups);
    if ($mode == 'newBlockAllocation') {
        $data['method'] = 'new';
    } elseif ($mode == 'editBlockAllocation') {
        $data['method'] = 'edit';
        $data['blockid'] = $blockid;
    } elseif ($mode == 'requestBlockAllocation') {
        $data['method'] = 'request';
    }
    $cont = addContinuationsEntry('AJblockAllocationSubmit', $data, SECINWEEK, 1, 0);
    print "<input type=\"hidden\" id=\"submitcont\" value=\"{$cont}\">\n";
    print "<input type=\"hidden\" id=\"submitcont2\">\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\">\n";
    print "  {$btntxt}\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormSubmit('{$arg}');\n";
    print "  </script>\n";
    print "</button>\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\">\n";
    print i("Cancel") . "\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    clearHideConfirmForm();\n";
    print "  </script>\n";
    print "</button>\n";
    print "</div>\n";
    # confirm dialog
    # tooltips
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"seathelp\">\n";
    print "<div style=\"width: 440px;\">\n";
    print i("This is the number of environments that will be loaded for the Block Allocation.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"grouphelp\">\n";
    print "<div style=\"width: 440px;\">\n";
    print i("User in this user group will be able to make reservations for the computers set aside for this block allocation.  If you do not see an applicable user group listed, please select \"<font color=\"blue\">(group not listed)</font>\" and describe the group you need in the <strong>Additional Comments</strong> section at the bottom of the page. If this is for a class, make sure to list the course and section number.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"repeattypehelp\">\n";
    print "<div style=\"width: 440px;\">\n";
    print i("For repeating block allocations, there are three ways you can enter the dates and times:") . "<br>\n";
    print "<ul>\n";
    print "<li>" . i("Repeating Weekly - Use this if the block allocation needs to occur every week.") . " ";
    print i("You can make it repeat on a single day each week or on multiple days.  The time(s) that it occurs will be the same on all days. You can list as many times as needed.") . "</li>\n";
    print "<li>" . i("Repeating Monthly - Use this if the block allocation needs to occur on a certain day of the month (i.e. 2nd Tuesday each month). You can list as many times as needed for that day of the month.") . "</li>\n";
    print "<li>" . i("List of Dates/Times - Use this to specify any other cases, including single events.") . " ";
    print i("You can specify as many date/time combinations as needed.") . "</li>\n";
    print "</ul>\n";
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkfdhelp\">\n";
    print i("This is the first date the block allocation will be used.\n");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkldhelp\">\n";
    print i("This is the last date the block allocation will be used.\n");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkdayshelp\">\n";
    print "<div style=\"width: 340px;\">\n";
    print i("Select the checkbox for each of the days you would like the block allocation to occur. For example, check Monday, Wednesday, and Friday for a class that meets on those days.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"wktimeshelp\">\n";
    print "<div style=\"width: 340px;\">\n";
    print i("Here you specify the start and end times of the block allocation. The times will occur on each of the selected days. You might specify more than one start/end combination if you had multiple sections that met on the same day.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"mnfdhelp\">\n";
    print i("This is the first date the block allocation will be used.\n");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"mnldhelp\">\n";
    print i("This is the last date the block allocation will be used.\n");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"mntimeshelp\">\n";
    print "<div style=\"width: 340px;\">\n";
    print i("Here you specify the start and end times of the block allocation. You might specify more than one start/end combination if you had multiple sections that met on the same day.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"listhelp\">\n";
    print "<div style=\"width: 300px;\">\n";
    print i("Specify individual dates and times during which the block allocation will occur.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"commenthelp\">\n";
    print "<div style=\"width: 340px;\">\n";
    print i("Enter any additional information about this block allocation. &lt; and &gt; are not allowed. If you selected \"<font color=\"blue\">(group not listed)</font>\" as the User group, make sure to clearly describe the requirements of a new user group that will be created for this block allocation.");
    print "</div></div>\n";
}