document.addEventListener('DOMContentLoaded', function (){
const fields=document.querySelectorAll('.ae-dropdown-field');
fields.forEach(field=> {
const select=field.querySelector('.ae-select');
const valueEl=field.querySelector('.ae-value');
const radios=field.querySelectorAll('input[type="radio"]');
if(!select) return;
select.addEventListener('click', function (e){
e.preventDefault();
e.stopPropagation();
fields.forEach(f=> f!==field&&f.classList.remove('is-open'));
field.classList.toggle('is-open');
});
radios.forEach(radio=> {
radio.addEventListener('change', function (){
const label=field.querySelector(`label[for="${radio.id}"]`);
if(label){
valueEl.textContent=label.textContent.trim();
}
field.classList.add('is-selected');
field.classList.remove('is-open');
});
});
});
document.addEventListener('click', function (){
fields.forEach(field=> field.classList.remove('is-open'));
});
});
document.addEventListener('DOMContentLoaded', ()=> {
const months=[
'januari','februari','maart','april','mei','juni',
'juli','augustus','september','oktober','november','december'
];
function initDateBlock(block, baseDate, isFrom=false){
const dayEl=block.querySelector('.day');
const monthEl=block.querySelector('.month');
const yearEl=block.querySelector('.year');
const today=new Date();
const startYear=today.getFullYear();
for (let y=startYear; y <=startYear + 3; y++){
yearEl.add(new Option(y, y));
}
months.forEach((m, i)=> {
monthEl.add(new Option(m, i + 1));
});
function updateDays(){
dayEl.innerHTML='';
const y=+yearEl.value;
const m=+monthEl.value;
const days=new Date(y, m, 0).getDate();
for (let d=1; d <=days; d++){
dayEl.add(new Option(d, d));
}
if(+dayEl.value > days) dayEl.value=days;
}
function autoFixPastMonth(){
if(!isFrom) return;
if(+yearEl.value===today.getFullYear() &&
+monthEl.value - 1 < today.getMonth()
){
yearEl.value=today.getFullYear() + 1;
}}
function setDate(date){
yearEl.value=date.getFullYear();
monthEl.value=date.getMonth() + 1;
updateDays();
dayEl.value=date.getDate();
}
yearEl.addEventListener('change', updateDays);
monthEl.addEventListener('change', ()=> {
autoFixPastMonth();
updateDays();
});
setDate(baseDate);
return {
getDate: ()=>
new Date(+yearEl.value, +monthEl.value - 1, +dayEl.value),
setDate
};}
const today=new Date();
const from=initDateBlock(
document.querySelector('.date-block.from'),
today,
true
);
const to=initDateBlock(
document.querySelector('.date-block.to'),
new Date(today.getTime() + 7 * 86400000)
);
function syncHidden(){
const f=from.getDate();
const t=to.getDate();
const fmt=d =>
d.getFullYear() + '-' +
String(d.getMonth()+1).padStart(2,'0') + '-' +
String(d.getDate()).padStart(2,'0');
document.getElementById('start_date').value=fmt(f);
document.getElementById('end_date').value=fmt(t);
}
document
.querySelectorAll('.date-block.from select')
.forEach(sel=> {
sel.addEventListener('change', ()=> {
const newTo=new Date(from.getDate().getTime() + 7 * 86400000);
to.setDate(newTo);
syncHidden();
});
});
document
.querySelectorAll('.date-block select')
.forEach(sel=> sel.addEventListener('change', syncHidden));
syncHidden();
const dateWrapper=document.querySelector('.vtype');
const dateSelects=document.querySelectorAll('.date-block select');
if(!dateWrapper||!dateSelects.length) return;
function updateDateSelectedState(){
let allFilled=true;
dateSelects.forEach(sel=> {
if(!sel.value||sel.value==='0'){
allFilled=false;
}});
if(allFilled){
dateWrapper.classList.add('is-selected');
}else{
dateWrapper.classList.remove('is-selected');
}}
dateSelects.forEach(sel=> {
sel.addEventListener('change', updateDateSelectedState);
});
updateDateSelectedState();
});