Files
Facilitor/APPL/RES/res_plan_obj.inc
Peter Feij 413498318a 0-versie
svn path=/Website/trunk/; revision=6
2009-10-05 06:44:06 +00:00

633 lines
25 KiB
HTML
Raw Blame History

<% /*
$Revision: 1 $
$Modtime: 3-09-09 13:42 $
File: obj_schedule.inc
Status: 75%
Description: Create small planboard for reservable objects
At the body.onload it copies its entire innerHTML to the parent
Parameters: ???
Context: Called in hidden frame of reserv_Objects_js.asp clientside when user 'opens' object categorie
as well serverside when object categorie should be open initially
??Let wel: 'onder het grote planbord' en 'na drukken knop voorzieningen bij een
bestaande of nieuwe reservering' geeft iets ander gedrag??
Notes: See also cons_objects.asp for consumable objects. Solved differently
though.
*/
%>
<%
var res_color_free = "#b0b0b0"; // Vrij: licht grijs
var res_color_resv = "#990000"; // Definitief: rood
var res_color_optie = "#31398C"; // Optie: blauw
var res_color_techb = "#808080"; // Schoonmaak: donker grijs
var res_color_blok = "#000000"; // Blokkade: zwart
var res_color_verv = "#990099"; // Vervallen: paars
var res_color_na = "#D6D80E"; // Niet beschikbaar: geel
%>
<script type="text/javascript">
var res_color_free = "<%=res_color_free%>";
var res_color_resv = "<%=res_color_resv%>";
var res_color_optie = "<%=res_color_optie%>";
var res_color_techb = "<%=res_color_techb%>";
var res_color_blok = "<%=res_color_blok%>";
res_t1 = <% = " " + res_t1 %>;
res_t2 = <% = " " + res_t2 %>;
res_h = <% = " " + res_h %>;
res_intervals = <% = res_intervals %>;
</script>
<script type="text/javascript" src="room_schedule.js"></script>
<%
function EmitTimeHeader() // Kopregel plantable
{
if (isEdit) {
%>
<td></td>
<%
}
%>
<td></td>
<td></td>
<td align='right'></td>
<%
var showOnlyOddHours = ((res_t2 - res_t1) >= res_roomplan_skiplimit)
var mod_t1 = (res_t1 % (showOnlyOddHours?2:1)); // bepaal restwaarde
if (mod_t1 == 0) mod_t1 = (showOnlyOddHours?2:1); // als even dan restwaarde is 1 of 2
s0 = res_t1 - (mod_t1);
//s0 = res_t1 - 1;
s = res_t1;
i0 = -1;
m ="";
for (i=0; i<=res_intervals; i++)
{
if (s - s0 >= (showOnlyOddHours?2:1)) // Elke 1 of 2 uur de tijd weergeven
//if (s - s0 >= 1)
{
h = Math.floor(s);
if (h < 10) h = "0" + h;
%>
<td colspan="<%=(i-i0)%>" align="right" class=header>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left" class="room_sched_cap"><%=m%></td>
<td align="right" class="room_sched_cap"><%=h%></td>
</tr>
</table>
</td>
<%
m = Math.floor((s - h)*60);
if (m < 10) m = "0" + m;
i0 = i;
s0 = s;
}
s += res_h;
}
%>
<td colspan="2" class="room_sched_cap"><%=m%></td>
<%
}
function h_seg( h1, m1, h2, m2, res_key, rsv_ruimte_key, optie, blokkade, vervallen, rsv_deel_key, alg_ruimte_key, cur_res, bez_key, res_status ) {
this.h_start = h1 + m1/60;
this.h_end = h2 + m2/60;
this.res_key = res_key;
this.rsv_ruimte_key = rsv_ruimte_key;
this.optie = optie;
this.blokkade = blokkade;
this.vervallen = vervallen;
this.rsv_deel_key = rsv_deel_key;
this.alg_ruimte_key = alg_ruimte_key;
this.cur_res = cur_res;
this.bez_key = bez_key;
this.h1 = h1;
this.h2 = h2;
this.m1 = m1;
this.m2 = m2;
this.res_status = res_status;
}
// rsv_ruimte_key altijd verplicht!
function objSchedule(fronto, backo, jumped, sdisc,
rsv_ruimte_key1,
res_van, res_tot, ch_obj_mode) {
if(isNaN(rsv_ruimte_key1) || rsv_ruimte_key1 <= 0)
INTERNAL_ERROR_OBJ_SCHEDULE;
var readwrite = func_enabled[ "WEB_RESFOF"] || func_enabled[ "WEB_RESUSE"];
if( readwrite || func_enabled[ "WEB_RESFO2"] )
{ // MGE UWVA#12468: In FE planbord wordt obj_schedule.asp niet aangeroepen (Er wordt gechecked op !frontend).
// Bij invullen voorzieningen heeft FE wel recht op invoer als FE ALGwrite rechten heeft voor WEB_RESUSE
readwrite=(ALGwritelevel<9); // Ondersteun (FE) gebruikers met *alleen* FO-leesrechten: kijken planbord
sql = "SELECT COALESCE(ru.res_ruimte_begintijd, " + res_t1 + ") res_t1"
+ ", COALESCE(ru.res_ruimte_eindtijd, " + res_t2 + ") res_t2"
+ ", rr.alg_ruimte_key"
+ " FROM res_v_aanwezigruimte ru"
+ ", res_rsv_ruimte rr"
+ ", res_ruimte_opstelling ro"
+ " WHERE ru.res_ruimte_key = ro.res_ruimte_key"
+ " AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key"
+ " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key1;
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
var alg_ruimte_key = oRs("alg_ruimte_key").value;
var starttime_room = oRs("res_t1").value;
var endtime_room = oRs("res_t2").value;
if (starttime_room < res_t1) starttime_room = res_t1;
if (endtime_room > res_t2) endtime_room = res_t2;
if (starttime_room > endtime_room) starttime_room = endtime_room;
starttime_room = toJsNumber(starttime_room);
endtime_room = toJsNumber(endtime_room);
}
else // CV reserverering
{
sql = "SELECT alg_ruimte_key"
+ " FROM res_rsv_ruimte"
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key1;
oRs = Oracle.Execute(sql);
var alg_ruimte_key = oRs("alg_ruimte_key").value;
starttime_room = res_t1;
endtime_room = res_t2;
}
var loc_key = -1;
pref = 1;
if (isNaN(ch_obj_mode)) ch_obj_mode = 0;
isEdit = (ch_obj_mode > 0);
if (rsv_ruimte_key1<0){
ch_obj_mode = 0;
}
if (isNaN(sdisc)) {
%>
<p><%=lcl_internal_error%>: obj_schedule.inc</p>
<%
}
else
{
ora_date1 = res_van.beginToSQL();
ora_date2 = res_tot.endToSQL();
var res_color_free = "#b0b0b0"; // Vrij: licht grijs
var res_color_resv = "#990000"; // Definitief: rood
var res_color_optie = "#31398C"; // Optie: blauw
var res_color_techb = "#808080"; // Schoonmaak: donker grijs
var res_color_blok = "#000000"; // Blokkade: zwart
var res_color_verv = "#990099"; // Vervallen: paars
var res_color_na = "#D6D80E"; // Niet beschikbaar: geel
%>
<html>
<body onload="parent.document.getElementById('div_dis<%=sdisc%>').innerHTML = document.body.innerHTML
parent.document.getElementById('div_dis<%=sdisc%>').style.display = 'block';
if(parent.parent && parent.parent.ExpandFrame) {
parent.parent.ExpandFrame(parent.name); // objFrame
if(parent.parent.parent.ExpandFrame)
parent.parent.parent.ExpandFrame(parent.parent.name); // workFrame
}
if (parent.obj_schedule_done) parent.obj_schedule_done();
parent.res_color_free = res_color_free;">
<%
//oude functie CreateObjSchedule ingevoegd
var sql, Autfunction;
var existing_res = {};
if (isEdit) { // Tijdstip edit velden toevoegen
// Bepaal de standaard duur van de reservering
var res_duur = res_dur; // initial reserving duration
var sql = "SELECT COALESCE(rac.res_activiteit_duur, " + res_dur + ") duur"
+ " FROM res_rsv_ruimte rr"
+ ", res_activiteit rac"
+ " WHERE rr.res_rsv_ruimte_key = " + rsv_ruimte_key1
+ " AND rac.res_activiteit_key = rr.res_activiteit_key";
var oRsDuur = Oracle.Execute(sql);
if (!oRsDuur.eof) {
res_duur = oRsDuur("duur").value;
}
oRsDuur.close();
}
// Determine all existing reserved objects and store them in an array 'existing_res'
sql = "SELECT " // Via gewone reserveringen, die hebben res_rsv_ruimte_key
+ " rrd.RES_RSV_DEEL_VAN, rrd.RES_RSV_DEEL_TOT"
+ ", rd.res_deel_key"
+ ", rr.res_status_fo_key"
+ ", rr.res_reservering_key"
+ ", rrd.res_rsv_deel_key"
+ ", rrd.res_rsv_ruimte_key"
+ ", rr.alg_ruimte_key"
+ ", -1 bez_bezoekers_key"
+ ", rrd.res_status_bo_key"
+ " FROM res_v_aanwezigrsv_ruimte rr"
+ ", res_v_aanwezigdeel rd" //PF: aanwezig?
+ ", res_v_aanwezigrsv_deel rrd"
+ " WHERE rrd.res_rsv_deel_tot BETWEEN " + ora_date1 + " AND " + ora_date2
+ " AND rrd.res_deel_key = rd.res_deel_key"
+ " AND rrd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
+ " AND rd.res_discipline_key = " + sdisc
if (sdisc==vis_parking_key)
sql = sql + " UNION ALL " //Die via afspraak/bezoekers (parkeerplaatsen)
+ "SELECT rrd.RES_RSV_DEEL_VAN, rrd.RES_RSV_DEEL_TOT"
+ ", rd.RES_DEEL_KEY"
+ ", -1 res_status_fo_key"
+ ", -1" // RES_RESERVERING_key
+ ", rrd.res_rsv_deel_key"
+ ", rrd.RES_RSV_RUIMTE_KEY"
+ ", -1 ALG_RUIMTE_KEY"
+ ", rrd.bez_bezoekers_key"
+ ", rrd.res_status_bo_key"
+ " FROM RES_V_AANWEZIGDEEL RD"
+ ", RES_V_AANWEZIGRSV_DEEL rrd"
+ ", bez_bezoekers b"
+ ", bez_afspraak a"
+ " WHERE rrd.RES_RSV_DEEL_TOT BETWEEN " + ora_date1 + " AND " + ora_date2
+ " AND rrd.res_deel_key = rd.res_deel_key"
+ " AND rrd.bez_bezoekers_key = b.bez_bezoekers_key"
+ " AND b.bez_afspraak_key = a.bez_afspraak_key"
+ " AND rrd.res_rsv_ruimte_key is null"
+ " AND rd.RES_DISCIPLINE_KEY="+sdisc
oRs = Oracle.Execute(sql);
while( !oRs.eof ) {
var res_d_key = oRs("RES_DEEL_KEY").Value;
if (! existing_res[res_d_key]) existing_res[res_d_key]=new Array();
existing_res[res_d_key].push(new h_seg(new Date(oRs("RES_RSV_DEEL_VAN").Value).getHours(),
new Date(oRs("RES_RSV_DEEL_VAN").Value).getMinutes(),
new Date(oRs("RES_RSV_DEEL_TOT").Value).getHours(),
new Date(oRs("RES_RSV_DEEL_TOT").Value).getMinutes(),
oRs("RES_RESERVERING_key").Value, oRs("RES_RSV_RUIMTE_KEY").Value,
oRs("res_status_fo_key").Value == "1",
oRs("res_status_fo_key").Value == "3",
oRs("res_status_fo_key").Value == "4",
oRs("res_rsv_deel_key").Value,
oRs("ALG_RUIMTE_KEY").Value,
(rsv_ruimte_key1 == oRs("res_rsv_ruimte_key").Value), // "oude" code - nog rekening houden
oRs("bez_bezoekers_key").Value,
oRs("res_status_bo_key").Value));
oRs.MoveNext(); // met "Blokkade"
}
oRs.close();
%>
<table id="table_dis<%=sdisc%>" class="tab_obj_sched" border="0" cellspacing="0" cellpadding="0"
<%=(readwrite&&!jumped?('onClick="doTClick('+(isEdit?'1':'')+')"'):'')%>>
<%//// Extra regel met losse cellen om afmetingen te forceren%>
<%
// Laat 20% over voor ruimteomschrijving e.d.
var t_w = (80 / res_intervals)+"%";
%>
<tr>
<td colspan=5></td>
<%
for (i=0; i<=res_intervals+2; i++) {
%> <td width="<%=t_w%>"></td><% // dezelfde breedte voor elke vakje
}
%>
</tr>
<tr><% EmitTimeHeader() %></tr>
<!-- <tr><td width="16"></td><td colspan="<% = res_intervals * 2 + 1 %>" height="1" bgcolor="#ffffff"></td><td width="13"></td></tr> -->
<%
var showOnlyOddHours = ((res_t2 - res_t1) >= res_roomplan_skiplimit)
var mod_t1 = (res_t1 % (showOnlyOddHours?2:1)); // bepaal restwaarde
if (mod_t1 == 0) mod_t1 = (showOnlyOddHours?2:1); // als even dan restwaarde is 1 of 2
var select_fields = " r.res_deel_key"
+ ", r.res_deel_opmerking"
+ ", d.ins_deel_omschrijving"
+ ", r.res_deel_prijs"
+ ", r.res_deel_eenheid"
+ ", r.res_deel_prijs_vast ";
var group_by = " GROUP BY " + select_fields + " ORDER BY 3 "; // d.ins_deel_omschrijving: Don't use column alias with UNION ...
if (!isNaN(rsv_ruimte_key1) || (!isNaN(alg_ruimte_key))) {
// Iterate through all reservable objects (vertically) and show schedule for them (horizontally)
var n=0,res_deel_key,free,res_key,rsv_ruimte_key;
%>
<!--#include file="../Res/res.inc"-->
<%
var sql1 = getReservedObjectTypes(alg_ruimte_key, rsv_ruimte_key1, select_fields, loc_key, sdisc, group_by);
} else {
// We hebben dus g<><67>n alg_ruimte_key <20>n g<><67>n res_rsv_ruimte_key
// Deze tak wordt o.a. gebruikt in het grote planbord als je onderin openklapt
// Scope is hierbij heel anders?
// Iterate through all reservable objects (vertically) and show schedule for them (horizontally)
// Er geldt: rsv_ruimte_key1 == NULL en alg_ruimte_key == NULL
var n=0, res_deel_key, free, res_key, rsv_ruimte_key;
var sql1 = "SELECT " + select_fields
+ " FROM ins_deel d, res_v_aanwezigdeel r "
+ " WHERE r.res_discipline_key="+sdisc
+ " AND r.res_ins_deel_key=d.ins_deel_key"
+ ((loc_key > -1)
? " AND d.ins_alg_locatie_key=" + loc_key
: "")
+ " AND d.ins_alg_ruimte_type IN ('R','T')"
+ ((ALGreadlevel>-1)
? " AND d.ins_alg_locatie_key IN "
+ " (SELECT alg_locatie_key "
+ " FROM fac_v_my_locations l, fac_v_webgebruiker gg "
+ " WHERE l.prs_perslid_key="+user_key
+ " AND l.prs_perslid_key = gg.prs_perslid_key "
+ " AND niveau = gg.fac_gebruiker_alg_level_write "
+ " AND gg.ins_discipline_key=" + sdisc
+ " AND gg.fac_functie_key = " + autfunctionkey+")"
: "")
+ " UNION "
+ " SELECT"
+ " r.res_deel_key"
+ ", r.res_deel_opmerking"
+ ", d.ins_deel_omschrijving"
+ ", r.res_deel_prijs"
+ ", r.res_deel_eenheid"
+ ", r.res_deel_prijs_vast"
+ " FROM ins_deel d, res_v_aanwezigdeel r "
+ " WHERE r.res_discipline_key="+sdisc
+ " AND r.res_ins_deel_key = d.ins_deel_key "
+ " AND d.ins_alg_ruimte_type = 'T' "
+ ((ALGreadlevel>-1)
? "AND d.ins_alg_locatie_key IN "
+ " (SELECT alg_locatie_key "
+ " FROM fac_v_my_locations l, fac_v_webgebruiker gg "
+ " WHERE l.prs_perslid_key = " + user_key
+ " AND l.prs_perslid_key = gg.prs_perslid_key "
+ " AND niveau = gg.fac_gebruiker_alg_level_write "
+ " and gg.ins_discipline_key = " + sdisc
+ " and gg.fac_functie_key = " + autfunctionkey+")"
: "")
+ group_by;
}
oRs = Oracle.Execute(sql1);
var cnt = 0;
while( !oRs.eof ) { // Doorloop reserveerbare delen binnen filter
res_deel_key = oRs("RES_DEEL_KEY").value;
str1 = escape2(oRs("INS_DEEL_OMSCHRIJVING").value);
str1 = replace( str1 , "\n" , "<br>" );
str9 = parseFloat(oRs("RES_DEEL_PRIJS").Value);
str10 = oRs("RES_DEEL_EENHEID").Value;
vast = oRs("RES_DEEL_PRIJS_VAST").Value;
var res_deel_opm = escape_js(oRs("RES_DEEL_OPMERKING").value);
var res_deel_opm2 = oRs("RES_DEEL_OPMERKING").value; //escape2(oRs("RES_DEEL_OPMERKING").value);
res_deel_opm2 = replace( res_deel_opm2 , "\n" , "<br>" );
res_deel_opm2 = replace( res_deel_opm2 , "\r" , "" );
res_deel_opm2 = replace( res_deel_opm2 , "'" , "\\'" );
res_deel_opm2 = escape2(res_deel_opm2);
if (str10 == null) str10='';
else str10='/'+str10;
res_dag_name = "Dag"; // values RES_DEEL.RES_DEEL_EENHEID
res_uur_name = "Uur"; // used for calculate price/minuut in obj_schedule.asp
if( !isNaN(str9) && str9 != 0)
{
str16 = currency_pref + num2curr(str9)+currency_suff+str10;
str16 = escape2(str16);
if(vast == 0)
{
if(oRs(10).Value == res_dag_name)
{
str9 = parseFloat(parseFloat(str9)/1440); // parseFloat(str9)/1440 prijs per minite
}
else if(oRs(10).Value == res_uur_name)
{
str9 = parseFloat(parseFloat(str9)/60); // parseFloat(str9)/60 prijs per minite
}
}
else
{
str16 = currency_pref + num2curr(str9)+currency_suff;
str16 = escape2(str16);
}
}
else
{
str16 = '';
str9 = 0.0;
}
var ar = existing_res[res_deel_key]; // Bestaande reserveringen op dit deel
var v1 = "", v2 = "", v3 = "", v4 = "", v5 = "", v6 = 'style="visibility:hidden"', ro = " readonly ", st = false;
__Log("isEdit: " + res_deel_key)
if (isEdit) {
// check whether the current resource is reserved for the current reservation
for (ci=0; ar != null && ci<ar.length; ci++)
{
if (ar[ci].cur_res == true) { // it is
v1 = "-1_" + ar[ci].rsv_deel_key;
v2 = ar[ci].h1 < 10 ? '0' + ar[ci].h1: ar[ci].h1;
v3 = ar[ci].h2 < 10 ? '0' + ar[ci].h2: ar[ci].h2;
v4 = ar[ci].m1 < 10 ? '0' + ar[ci].m1: ar[ci].m1;
v5 = ar[ci].m2 < 10 ? '0' + ar[ci].m2: ar[ci].m2;
v6 = 'style="visibility:visible"';
ro = (ar[ci].res_status==6?" readonly ":"");
st = (ar[ci].res_status==6);
}
}
}
%>
<tr class=planbord id='tr_rdeel<%=res_deel_key%>'>
<td width="<%=pref*20%>"></td>
<td>
<div class="ref" id='a_<%=res_deel_key%>_img' style='display:block'
<% if (!st&&!jumped) { %>
onClick="javascript:rdeelChoosen('rdeel<%=res_deel_key%>',null,'<%=res_deel_key%>', '')"
<% } %>>
<img src="../Pictures/tree_ok.gif" border="0" id="plus" align="middle" hspace="2" <%=v6%>>
</div>
</td>
<td title="<%=res_deel_opm%>" onMouseOver="javascript:ShowObjectRemark('<%="<b>" + str1 + ":</b><br>" + res_deel_opm2%>')">
<div class="ref" id='a_<%=res_deel_key%>' style='display:block'
<% if (!st&&!jumped) { %>
onClick="javascript:rdeelChoosen('rdeel<%=res_deel_key%>',null,'<%=res_deel_key%>', '')"
<% } %>>
<nobr><%=str1 + (isEdit ? '':(str16?' ('+str16+')':'')) %></nobr>
</div>
</td>
<%
if (isEdit) { // Tijdstip edit velden toevoegen
%>
<td>
<input type=hidden id='inhedt_<%=res_deel_key%>' name='inhedt_<%=res_deel_key%>' value='<%=v1%>'>
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td class='selectable'><input type=text id='inpbh1_<%=res_deel_key%>' name='inpbh1_<%=res_deel_key%>' value='<%=v2%>' class='smallinputs' maxlength='2' size='1' <%=ro%> <%=st?"style='background-color: #dddddd;'":""%> onBlur="objTimeChanged(<%=res_deel_key%>, <%=res_duur%>, 'inpbh1_')"></td>
<td class='selectable'><input type=text id='inpbm1_<%=res_deel_key%>' name='inpbm1_<%=res_deel_key%>' value='<%=v4%>' class='smallinputs' maxlength='2' size='1' <%=ro%> <%=st?"style='background-color: #dddddd;'":""%> onBlur="objTimeChanged(<%=res_deel_key%>, <%=res_duur%>, 'inpbm1_')"></td>
<td class='selectable'>-</td>
<td class='selectable'><input type=text id='inpbh2_<%=res_deel_key%>' name='inpbh2_<%=res_deel_key%>' value='<%=v3%>' class='smallinputs' maxlength='2' size='1' <%=ro%> <%=st?"style='background-color: #dddddd;'":""%> onBlur="objTimeChanged(<%=res_deel_key%>, <%=res_duur%>, 'inpbh2_')"></td>
<td class='selectable'><input type=text id='inpbm2_<%=res_deel_key%>' name='inpbm2_<%=res_deel_key%>' value='<%=v5%>' class='smallinputs' maxlength='2' size='1' <%=ro%> <%=st?"style='background-color: #dddddd;'":""%> onBlur="objTimeChanged(<%=res_deel_key%>, <%=res_duur%>, 'inpbm2_')"></td>
</tr>
</table>
</td>
<%
}
%>
<td width='1'>&nbsp;</td>
<%
cnt++;
var cl = res_t1;
var begin_res_intervals = 0;
var eind_res_intervals = 0;
if (cl < starttime_room) begin_res_intervals = (starttime_room - cl) / res_h;
if (res_t2 > endtime_room) eind_res_intervals = (res_t2 - endtime_room) / res_h;
for (i = 0; i < res_intervals; i++)
{
bez_key = -1;
theSpan = "";
free = true; optie=false; blokkade=false; yellow = false;
for (ci=0; ar && ci<ar.length; ci++)
{
if( !( cl+res_h<=ar[ci].h_start || cl>=ar[ci].h_end ) )
{
free = false;
res_key = ar[ci].res_key;
rsv_ruimte_key = ar[ci].rsv_ruimte_key;
rsv_deel_key = ar[ci].rsv_deel_key;
alg_ruimte_key = isNaN(ar[ci].alg_ruimte_key) ? -1 :ar[ci].alg_ruimte_key;
bez_key = ar[ci].bez_key;
optie = ar[ci].optie;
blokkade = ar[ci].blokkade;
vervallen = ar[ci].vervallen;
// Over hoeveel blokjes spant deze reservering
var spanBlk = 1;
while( cl + res_h < ar[ci].h_end && cl + res_h < res_t2)
{
spanBlk ++;
cl += res_h;
i++;
}
if (spanBlk == 1)
theSpan = "";
else
{
theSpan = " colspan=" + spanBlk;
}
break;
}
}
cl += res_h;
var before_starttime = false;
if (free && (begin_res_intervals > i || eind_res_intervals >= res_intervals - i)) {
yellow = true;
free = false;
before_starttime = true;
}
th = Math.floor(res_t1 + res_h * i);
tm = Math.floor((res_t1 + res_h * i - th) * 60);
sTime = ''+th+":"+(tm<10?'0':'')+tm
var theBgcolor=(free?res_color_free:optie?res_color_optie:blokkade?res_color_blok:vervallen?res_color_verv:res_color_resv);
var theTitle, theRest;
theClick = "";
if (free) // MGE UWVA#12468: (free&&readwrite) readwrite voor tijd is niet nodig
{
theTitle = " title=" + sTime;
}
else if (before_starttime) {
theBgcolor = res_color_na;
theClick = " onClick=noCClick()";
theTitle = "";
}
else
{
if (bez_key > 0)
theTitle = " onMouseOver='setBezBezoekersTitle(this, "+bez_key+")'";
else
theTitle = " onMouseOver='setResRsvDeelTitle(this, "+rsv_deel_key+")'";
if (readwrite&&bez_key==-1&&!jumped)
theClick = ' onClick=doCClick('+res_key+','+rsv_ruimte_key+',true,'+(isEdit?'1':'0')+','
+rsv_deel_key+','+alg_ruimte_key+')';
else
if (readwrite&&!jumped)
theClick =" onClick=noCClick()"
}
if (free)
{
var stl;
if (!readwrite)
stl='freeNC';
else
if (((i+1+(mod_t1/res_h))%(1/res_h))==0) // (((i+1+(mod_t1/res_h))%(1/res_h))==0?"otherH":"other")
stl='freeH'; // Uurblokje heeft twee pixels
else
stl='free';
%> <td id="<%=i%>" class=<%=stl%> title=<%=sTime%> style="width:<%=t_w%>"></td>
<%
}
else
{
%>
<td class='<%=yellow && (((i+1+(mod_t1/res_h))%(1/res_h))==0)?"otherH":"other"%>' <%=theSpan%> id="<%=i%>"
<%= readwrite&&!jumped&&!yellow?'style="cursor:hand" ':'onClick="noCClick()"' %>
<%=' bgcolor='+theBgcolor + theTitle + theClick + ' style="width:' + t_w + '"'%>>
</td>
<%
}
}
%>
<td></td>
</tr>
<tr>
<td></td><td></td><td colspan="<% = res_intervals * 2 + 1 %>" height="1" bgcolor="#ffffff"></td><td></td>
</tr>
<%
oRs.MoveNext();
n++;
} //end while
oRs.close();
%>
<tr><% EmitTimeHeader() %></tr>
<tr>
<td colspan="6"></td><td colspan="<% = res_intervals * 2 + 1 %>">
<table width="100%" border="0">
<tr>
<td align="right"><img src="../Pictures/room_free.gif"></td>
<td><% = lcl_free %></td>
<td align="right"><img src="../Pictures/room_opt.gif"></td>
<td><% = lcl_optie %></td>
<td align="right"><img src="../Pictures/room_def.gif"></td>
<td><% = lcl_def %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_blk.gif"></td>
<td><% = lcl_blokkade %></td>
<td align="right"><img src="../Pictures/room_vvl.gif"></td>
<td><% = lcl_vervallen %></td>
</tr>
</table>
</td>
</tr>
</table>
<%
}
%>
</body>
</html>
<%
}//readwrite
} // function objSchedule()
%>