320 lines
13 KiB
JavaScript
320 lines
13 KiB
JavaScript
/*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: bez.js
|
|
*/
|
|
var toon_telefoon, toon_email, toon_kenteken, toon, terrein_prk = {};
|
|
// show/hide and required/not required for telefoon/email/kenteken
|
|
function getToonInfo() {
|
|
toon_telefoon = parseInt($("#prktype").attr("toon_telefoon"));
|
|
toon_email = parseInt($("#prktype").attr("toon_email"));
|
|
toon_kenteken = parseInt($("#prktype").attr("toon_kenteken"));
|
|
}
|
|
// Check whether parking place is used in the selected table row
|
|
function parkingPlace($this)
|
|
{
|
|
var $prkCheck = $("td div input[type=checkbox]", $this.closest("tr"));
|
|
var $prkSelect = $("td div input[id^=gebouw].fld", $this.closest("tr"));
|
|
return ($prkCheck.is(":visible") && $prkCheck.prop("checked") || $prkSelect.is(":visible") && $prkSelect.val() != "");
|
|
}
|
|
// Determine show and require properties of telefoon/email/kenteken fields in a table row selected by an .each()
|
|
function showRequire()
|
|
{
|
|
var save_toon = toon;
|
|
var $this = $(this);
|
|
var $this_div = $this.closest("div");
|
|
var $this_tr = $this.closest("tr");
|
|
var $this_bez = $("td input[name^=bez]:first", $this_tr);
|
|
var $prk_check = $("td div input[type=checkbox]", $this_tr);
|
|
var $prk_select = $("td div input[id^=gebouw].fld", $this_tr);
|
|
|
|
function _doUpdateToon(key)
|
|
{
|
|
if ($this_div.attr("name").indexOf("telefoon") != -1)
|
|
{
|
|
if (terrein_prk[key])
|
|
toon = Math.max(terrein_prk[key].toon_telefoon, toon);
|
|
}
|
|
else if ($this_div.attr("name").indexOf("email") != -1)
|
|
{
|
|
if (terrein_prk[key])
|
|
toon = Math.max(terrein_prk[key].toon_email, toon);
|
|
}
|
|
else if ($this_div.attr("name").indexOf("kenteken") != -1)
|
|
{
|
|
if (terrein_prk[key])
|
|
toon = Math.max(terrein_prk[key].toon_kenteken, toon);
|
|
}
|
|
}
|
|
|
|
var current_bld_key = $prk_select.attr("sgkey"); // Het (parkeer)terrein (kan in theorie ook een gebouw zijn)
|
|
if ($prk_check.is(":visible") && $prk_check.prop("checked")) // Checkbox
|
|
{
|
|
current_bld_key = $("#prktype").data("parkeer_terrein");
|
|
if (current_bld_key > 0)
|
|
_doUpdateToon(current_bld_key);
|
|
}
|
|
else if ($prk_select.is(":visible") && current_bld_key > 0) // Suggest
|
|
{
|
|
_doUpdateToon(current_bld_key);
|
|
}
|
|
$this_div.toggle(toon > 0);
|
|
if (toon == 0)
|
|
{
|
|
$this.val("");
|
|
}
|
|
// Set group (check) dependency for bezoeker, kenteken, email and telefoon
|
|
// by adding required10Sx class if applicable. The x is the row number taken from the bez column.
|
|
// Telefoon/email/kenteken is only required if visitor is filled for the particular row
|
|
$this.toggleClass($this_bez.attr("name").replace("bez", "required10S"), toon == 3 || (toon == 2 && parkingPlace($this)));
|
|
$this.toggleClass("required", !!$this_bez.val() && (toon == 3 || (toon == 2 && parkingPlace($this))));
|
|
// Make [parking place select] or [parking checkbox] group-required when "kenteken" has a value
|
|
if ($this_div.attr("name").indexOf("kenteken") != -1)
|
|
{
|
|
var $prkCheck = $("td div input[type=checkbox]", $this_tr);
|
|
if ($prkCheck.is(":visible"))
|
|
{
|
|
$prkCheck.toggleClass($this_bez.attr("name").replace("bez", "required10S"), $this.val() != "");
|
|
if ($this.val() == "") // Dan mag ook de required er af, als die er al op zit
|
|
$prkCheck.removeClass("required");
|
|
}
|
|
var $prkSelect = $("td div input[id^=gebouw].fld", $this_tr);
|
|
if ($prkSelect.is(":visible"))
|
|
{
|
|
$prkSelect.toggleClass($this_bez.attr("name").replace("bez", "required10S"), $this.val() != "");
|
|
if ($this.val() == "") // Dan mag ook de required er af, als die er al op zit
|
|
$prkSelect.removeClass("required");
|
|
}
|
|
}
|
|
toon = save_toon;
|
|
}
|
|
// Determine show and require properties of telefoon/email/kenteken fields for one selected table row
|
|
function showRequireOne($this)
|
|
{
|
|
var $this_tr = $this.closest("tr");
|
|
var $this_bez = $("td input[name^=bez]:first", $this_tr);
|
|
|
|
var $prk_check = $("td div input[type=checkbox]", $this_tr);
|
|
// LPNL#68932; 'Een kenteken zonder vinkje heeft geen waarde.' -> leegmaken
|
|
if ($this.is($prk_check) && $prk_check.is(":visible") && !$prk_check.prop("checked"))
|
|
$("td div[name=bezoeker_kenteken] input", $this_tr).val("");
|
|
|
|
getToonInfo();
|
|
toon = toon_telefoon;
|
|
$("td div[name=bezoeker_telefoon] input", $this_tr).each(showRequire);
|
|
toon = toon_email;
|
|
$("td div[name=bezoeker_email] input", $this_tr).each(showRequire);
|
|
toon = toon_kenteken;
|
|
$("td div[name=bezoeker_kenteken] input", $this_tr).each(showRequire);
|
|
$("th div[name=bezoeker_telefoon_th]").toggle($("td div[name=bezoeker_telefoon]:visible").length > 0);
|
|
$("th div[name=bezoeker_email_th]").toggle($("td div[name=bezoeker_email]:visible").length > 0);
|
|
$("th div[name=bezoeker_kenteken_th").toggle($("td div[name=bezoeker_kenteken]:visible").length > 0);
|
|
if ($this_bez.length)
|
|
{
|
|
$this_bez.addClass($this_bez.attr("name").replace("bez", "required10S"));
|
|
checkRequiredGroup($this_bez.attr("name").replace("bez", "10S"));
|
|
}
|
|
}
|
|
function showRequireChange()
|
|
{
|
|
showRequireOne($(this));
|
|
}
|
|
function showRequireEventhandler()
|
|
{
|
|
$('td div input[type=checkbox], td div input[id^=gebouw].fld, td input[name^=bez]').off().on("change", showRequireChange);
|
|
}
|
|
// initial setting of show and require properties for all visitor table rows
|
|
function showRequireAll()
|
|
{
|
|
getToonInfo();
|
|
toon = toon_telefoon;
|
|
$("div[name=bezoeker_telefoon]").toggle(toon_telefoon > 0);
|
|
$("td div[name=bezoeker_telefoon] input").each(showRequire);
|
|
toon = toon_email;
|
|
$("div[name=bezoeker_email]").toggle(toon_email > 0);
|
|
$("td div[name=bezoeker_email] input").each(showRequire);
|
|
toon = toon_kenteken;
|
|
$("div[name=bezoeker_kenteken]").toggle(toon_kenteken > 0);
|
|
$("td div[name=bezoeker_kenteken] input").each(showRequire);
|
|
$("th div[name=bezoeker_telefoon_th]").toggle($("td div[name=bezoeker_telefoon]:visible").length > 0);
|
|
$("th div[name=bezoeker_email_th]").toggle($("td div[name=bezoeker_email]:visible").length > 0);
|
|
$("th div[name=bezoeker_kenteken_th]").toggle($("td div[name=bezoeker_kenteken]:visible").length > 0);
|
|
showRequireEventhandler();
|
|
}
|
|
|
|
function printBadge(pbez_key)
|
|
{ // Printen van de bezoekers badge
|
|
FcltMgr.windowopen("bez_xml.asp?badge=1&bez_key=" + pbez_key, "", "resizable=0,scrollbars=0,menubar=0,width=500,height=400");
|
|
}
|
|
|
|
function bezPoolCallback(data, text)
|
|
{
|
|
FcltMgr.openDetail("appl/bez/bez_afspraak.asp?urole=bo&res_key=" + data.res_key, L("lcl_add"));
|
|
}
|
|
function process_freeprk_info(data, textStatus)
|
|
{
|
|
if (textStatus == "success")
|
|
{
|
|
if (data)
|
|
{
|
|
// Zet de <th> tekst goed;
|
|
if (data.prk_vrij > 0)
|
|
{
|
|
$("#bezPrkFree").text("[" + data.prk_vrij + L("lcl_bez_vrije_plaatsen") + "]");
|
|
}
|
|
else
|
|
{
|
|
if (data.prk_array && data.prk_array.length == 0)
|
|
// Geen parkeerterrein aanwezig
|
|
$("#bezPrkFree").text("[" + L("lcl_bez_geen_aanwezig") + "]");
|
|
else
|
|
// Alle aanwezige parkeerterrein zijn bezet
|
|
$("#bezPrkFree").text("[" + L("lcl_bez_vol") + "]");
|
|
}
|
|
|
|
// Zet de parkeerplaats-keuze velden goed (Checkbox / Suggest / Geen keuze);
|
|
if (data.prk_array?.length == 1 && $("#gebouwkey").val() == data.prk_array[0].key) // We hebben 1 gebouw met parkeerplaatsen en die is ingevuld
|
|
{ // Checkboxen lopen synchroon met suggestboxen en zijn altijd goed gezet
|
|
// Checkboxen tonen voor parkeerterrein
|
|
$('div[name^="selectgebterdiv"]').css("display", "none");
|
|
$('div[name^="selectprkdiv"]').css("display", "block");
|
|
$('input[name^="prkselect"]').val("C");
|
|
$("#prktype").val("C"); // Checkbox voor parkeerterrein
|
|
}
|
|
else if (data.prk_array?.length >= 1)
|
|
{ // Gebruik data om de suggest velden bij parkeerterrein te updaten.
|
|
var next_vis = $("#next_vis").val();
|
|
for (var i = 1; i < next_vis; i++)
|
|
{
|
|
// Was mijn [oude] checkbox aangevinkt? Dan wil ik vast een parkeerplaats -> Kies er automatisch vast 1;
|
|
if ($("#prk" + i) && $("#prk" + i).prop("checked"))
|
|
{
|
|
// Vindt parkeerterrein voor nieuwe locatie (loc_key) of vernieuw de text van de geselecteerde parkeerterrein
|
|
var usegebter = 0; // Selecteer standaard de eerste ook al is die vol
|
|
for (var j = 0; j < data.prk_array.length; j++)
|
|
{
|
|
if (data.prk_array[j].key == $("#gebouwkey" + i).val())
|
|
{
|
|
usegebter = j; // Selecteer dezelfde parkeerterrein
|
|
break;
|
|
}
|
|
}
|
|
// Selecteer de eerste ook al is die vol
|
|
psObject[i].sgBld.setValue(data.prk_array[usegebter].key, data.prk_array[usegebter].naam, false, false, null, true);
|
|
}
|
|
}
|
|
// Suggestboxen tonen voor parkeerterrein
|
|
$('div[name^="selectprkdiv"]').css("display", "none");
|
|
$('div[name^="selectgebterdiv"]').css("display", "block");
|
|
$('input[name^="prkselect"]').val("S");
|
|
$("#prktype").val("S"); // Suggestbox voor parkeerterrein
|
|
}
|
|
else
|
|
{
|
|
// Geen vinkboxen en suggestboxen tonen voor parkeerterrein
|
|
$('div[name^="selectprkdiv"]').css("display", "none");
|
|
$('div[name^="selectgebterdiv"]').css("display", "none");
|
|
$('input[name^="prkselect"]').val("");
|
|
$("#prktype").val("N"); // Geen parkeerplaatsen/parkeerterrein reserveren
|
|
}
|
|
|
|
// Het terrein_prk object vullen.
|
|
terrein_prk = {};
|
|
update_terrein_prk(data.prk_array);
|
|
|
|
showRequireAll();
|
|
}
|
|
}
|
|
else
|
|
FcltMgr.alert("process_freeprk_info: " + textStatus);
|
|
|
|
if (data.init) {
|
|
if (typeof onChangeGebouw === "function")
|
|
onChangeGebouw();
|
|
else if (typeof onChangeLocation === "function")
|
|
onChangeLocation();
|
|
}
|
|
}
|
|
|
|
// Dit object wordt gevuld zodat we naar deze instellingen kunnen kijken zodra deze parkeerplaats gekozen wordt
|
|
function update_terrein_prk(parkeer_terreinen)
|
|
{ // Dit kunnen in theorie overigens ook gebouwen zijn
|
|
for (var i = 0; i < parkeer_terreinen.length; i++)
|
|
{
|
|
terrein_prk[parkeer_terreinen[i].key] = {
|
|
toon_telefoon: parkeer_terreinen[i].toon_telefoon,
|
|
toon_email: parkeer_terreinen[i].toon_email,
|
|
toon_kenteken: parkeer_terreinen[i].toon_kenteken
|
|
};
|
|
}
|
|
// Voor de checkbox onToggle, de parkeerterrein-key hier opslaan
|
|
if (parkeer_terreinen.length === 1 && $("#gebouwkey").val() == parkeer_terreinen[0].key) // We hebben 1 gebouw met parkeerplaatsen en die is ingevuld
|
|
$("#prktype").data("parkeer_terrein", parkeer_terreinen[0].key);
|
|
}
|
|
|
|
function update_show_fields(bld_arr)
|
|
{
|
|
var bez_fields = { toon_telefoon: 0, toon_email: 0, toon_kenteken: 0 };
|
|
for (var i = 0; i < bld_arr.length; i++)
|
|
{
|
|
bez_fields.toon_telefoon = Math.max(bez_fields.toon_telefoon, bld_arr[i].toon_telefoon);
|
|
bez_fields.toon_email = Math.max(bez_fields.toon_email, bld_arr[i].toon_email);
|
|
bez_fields.toon_kenteken = Math.max(bez_fields.toon_kenteken, bld_arr[i].toon_kenteken);
|
|
}
|
|
$("#prktype").attr(bez_fields);
|
|
showRequireAll();
|
|
}
|
|
|
|
function get_freeprk_info(init)
|
|
{
|
|
if (vis_parking_key != -1 && canWritePrk) // Parkeerterrein kolom is zichtbaar
|
|
{
|
|
var date_from = parseInt($("#date_from").val(), 10) || window.var_date_from?.getTime();
|
|
var date_to = parseInt($("#date_to").val(), 10) || window.var_date_to?.getTime();
|
|
|
|
|
|
if (date_from && date_to)
|
|
{
|
|
if (typeof bez_multiday !== "undefined" && bez_multiday != 1 && (new Date(date_from)).midnight() != (new Date(date_to)).midnight())
|
|
{ // De datum is verborgen en de tijd is zichtbaar. Datum date_to hetzelfde als datum date_from.
|
|
date_to = new Date(date_to);
|
|
date_to.setYear(new Date(date_from).getFullYear());
|
|
date_to.setMonth(new Date(date_from).getMonth());
|
|
date_to.setDate(new Date(date_from).getDate());
|
|
|
|
// Maak einddatum gelijk aan begindatum.
|
|
$("#show_date_to").datepicker('setDate', date_to);
|
|
$("#show_date_to").val($("#show_date_from").val());
|
|
date_to = date_to.getTime();
|
|
$("#date_to").val(date_to);
|
|
}
|
|
|
|
// Bepaal aantal vrije parkeerterrein.
|
|
$.getJSON("get_bez_info_ajax.asp",
|
|
{ req_info: "bez_freeprk",
|
|
loc_key: $("#locatiekey").val(),
|
|
date_from: date_from,
|
|
date_to: date_to,
|
|
init: init || 0
|
|
},
|
|
process_freeprk_info);
|
|
}
|
|
else
|
|
{
|
|
if (init) {
|
|
if (typeof onChangeGebouw === "function")
|
|
onChangeGebouw();
|
|
else if (typeof onChangeLocation === "function")
|
|
onChangeLocation();
|
|
}
|
|
$("#bezPrkFree").text("");
|
|
}
|
|
} // Als process_freeprk_info niet word uitgevoerd, moet alsnog onChangeGebouw worden uitgevoerd tijdens initialisatie (init)
|
|
else if (init) {
|
|
if (typeof onChangeGebouw === "function")
|
|
onChangeGebouw();
|
|
else if (typeof onChangeLocation === "function")
|
|
onChangeLocation();
|
|
}
|
|
} |