var formIndex = 1; /** * Validera formulärdata för sökning av ärenden * * @return boolean Ärende form status */ function validateArende() { clearErrors(); if (!checkDate(document.forms[formIndex].from) || !checkDate(document.forms[formIndex].tom)) { return false; } if (document.forms[formIndex].arendenummer.value.length != 0) { var conf = confirm('Sökningen kommer bara att ske på ärendenummer'); document.forms[formIndex].arendenummer.focus(); return conf; } if (document.forms[formIndex].arendemening.value.length != 0 && document.forms[formIndex].avsandare.value.length != 0) { document.forms[formIndex].arendemening.parentNode.className = 'error'; document.forms[formIndex].avsandare.parentNode.className = 'error'; alert('Sökning på Ärendemening + Avsändare/mottagare ej möjlig!'); document.forms[formIndex].arendemening.focus(); return false; } /** if (document.forms[formIndex].avsandare.value.length != 0 && document.forms[formIndex].myndighet.selectedIndex == 0) { document.forms[formIndex].myndighet.parentNode.className = 'error'; alert('Myndighet ej vald!'); document.forms[formIndex].myndighet.focus(); return false; } **/ return true; } /** * Ta bort className = error från alla fält i formuläret */ function clearErrors() { for (i=0; i document.forms[formIndex].tom.selectedIndex) { document.forms[formIndex].tom.selectedIndex = document.forms[formIndex].from.selectedIndex; } } /** * Till år i publikationer ändrat */ function publikationTomChanged() { if (document.forms[formIndex].tom.selectedIndex < document.forms[formIndex].from.selectedIndex) { document.forms[formIndex].from.selectedIndex = document.forms[formIndex].tom.selectedIndex; } } /** * Testa om angivet datum är korrekt * * @param field Datumfält * @return boolean Datum field status */ function checkDate(field) { var feltext = "Felaktigt datum!\n\nAnvänd kalendern eller ange datum som åååå-mm-dd"; var str = field.value.replace(/-/g, ""); var reg = /^[0-9]{6}$/; if (reg.test(str)) { if (eval("20" + str.substring(0,2)) > (new Date()).getFullYear() + 80) { str = "19" + str; } else { str = "20" + str; } } reg = /^[0-9]{8}$/; if (!reg.test(str)) { alert(feltext); field.parentNode.className = 'error'; field.focus(); return false; } var year = eval(str.substring(0, 4)); var month = eval(str.substring(4, 6)-1); var day = eval(str.substring(6,8)); var date = new Date (eval(str.substring(0, 4)), eval(str.substring(4, 6)-1), eval(str.substring(6,8))); if (date.getFullYear() != year || date.getMonth() != month || date.getDate() != day) { alert(feltext); field.parentNode.className = 'error'; field.focus(); return false; } field.value = formatDate(date); field.parentNode.className = 'nowrap'; return true; } /** * Testa om from datum efter tom datum * Ändra isåfall tom till 30 dagar efter from */ function fromDateChanged() { if (document.forms[formIndex].from.value.length == 0) { var date = parseDate(document.forms[formIndex].tom); date = new Date(date.getTime() - timeDiff); document.forms[formIndex].from.value = formatDate(date) } if (checkDate(document.forms[formIndex].from) && checkDate(document.forms[formIndex].tom)) { var fromDate = parseDate(document.forms[formIndex].from); var tomDate = parseDate(document.forms[formIndex].tom); if (tomDate < fromDate) { if (fromDate > new Date()) { fromDate = new Date(); document.forms[formIndex].from.value = formatDate(fromDate); } var date = new Date(fromDate.getTime() + timeDiff); if (date > new Date()) { date = new Date(); } document.forms[formIndex].tom.value = formatDate(date); } } var date = parseDate(document.forms[formIndex].from); if (date < new Date(2005,9,1)) { date = new Date(2005,9,1); document.forms[formIndex].from.value = formatDate(date); } } /** * Testa om tom datumet är före from datum * Ändra isåfall from till 30 dagar innan tom */ function tomDateChanged() { if (document.forms[formIndex].tom.value.length == 0) { document.forms[formIndex].tom.value = formatDate(new Date()) } if (checkDate(document.forms[formIndex].tom) && checkDate(document.forms[formIndex].from)) { var fromDate = parseDate(document.forms[formIndex].from); var tomDate = parseDate(document.forms[formIndex].tom); if (tomDate > new Date()) { tomDate = new Date(); document.forms[formIndex].tom.value = formatDate(tomDate); } if (tomDate < fromDate) { var date = new Date(tomDate.getTime() - timeDiff); document.forms[formIndex].from.value = formatDate(date); } } } /** * Formatera ett datum som yyyy-MM-dd * @param date Datum som ska formateras * @return String Formaterat datum */ function formatDate(date) { return date.getFullYear() + "-" + (date.getMonth()+1<10?"0" + (date.getMonth()+1):(date.getMonth()+1)) + "-" + (date.getDate()<10?"0" + date.getDate():date.getDate()); } /** * Retunerar ett datum från värdet på ett inmatningsfält * * @param field input som innehåller ett datum * @return Date Datum från fältet */ function parseDate(feild) { str = feild.value.replace(/-/g, ""); return new Date (eval(str.substring(0, 4)), eval(str.substring(4, 6)-1), eval(str.substring(6,8))); } var timeDiff = 2592000000; // 30 dagar i millisekunder, 30*24*60*60*10000