/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Author: Ronald Everts * (c) Copyright 1999-2006 Starsale BV, Enschede, The Netherlands * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ var useragent = navigator.userAgent.toLowerCase(); var IE = useragent.indexOf('msie') > 0 ? true : false; var OPERA = useragent.indexOf('opera') > 0 ? true : false; document.onmousedown = ReadPosition var posX = new Array () var posY = new Array () var prevPosX = new Array () var prevPosY = new Array () var MAKEOURS = true; function PickDate(target, OURMAKER, viewYear, viewMonth, changeView) { document.onmousedown = '' MAKEOURS = OURMAKER /* HUIDIGE DATUM */ var thisDay = new Date() var haveValue /* VULLEN VAN DE DAG, MAAND, JAAR */ if (document.getElementById(target).value != '' && !changeView) { var tarDate = document.getElementById(target).value.split('-') viewDay = tarDate[0] viewMonth = parseInt(NoLeadingZero(tarDate[1])) - 1 viewYear = tarDate[2] haveValue = true; } else if(document.getElementById(target).value == '' && !changeView) { viewDay = thisDay.getDate(); viewMonth = thisDay.getMonth(); viewYear = thisDay.getFullYear(); haveValue = false; } /* BEPAAL DE POSITIE VAN DE CALENDAR */ if (!changeView) { document.onmousedown = ReadPosition; prevPosX['id_' + target] = posX prevPosY['id_' + target] = posY } else if (changeView) { posX = prevPosX['id_' + target] posY = prevPosY['id_' + target] } /* MAANDEN BY TELLEN EN AFTREKKEN */ if (viewMonth < 0) { viewMonth = 11 beginDate = false; viewYear-- } else if (viewMonth > 11) { viewMonth = 0 beginDate = false; viewYear++ } /* VERWIJDEREN VAN BESTAANDE CALENDAR */ if(document.getElementById ('id_' + target)) { document.body.removeChild (document.getElementById ('id_' + target)) if(document.getElementById('ie_fix_iframe_' + target)) { document.body.removeChild (document.getElementById ('ie_fix_iframe_' + target)) } } /* SETTEN VAN DE DAGEN VAN DE WEEK EN DE NAMEN VAN DE MAANDEN*/ var Days = new Array ('Ma'.charRefToUnicode(), 'Di'.charRefToUnicode(), 'Wo'.charRefToUnicode(), 'Do'.charRefToUnicode(), 'Vr'.charRefToUnicode(), 'Za'.charRefToUnicode(), 'Zo'.charRefToUnicode()); var Month = new Array ('Januari'.charRefToUnicode(), 'Februari'.charRefToUnicode(), 'Maart'.charRefToUnicode(), 'April'.charRefToUnicode(), 'Mei'.charRefToUnicode(), 'Juni'.charRefToUnicode(), 'Juli'.charRefToUnicode(), 'Augustus'.charRefToUnicode(), 'September'.charRefToUnicode(), 'Oktober'.charRefToUnicode(), 'November'.charRefToUnicode(), 'December'.charRefToUnicode()); /* HOOFD DIV VAN DE CALENDAR */ var tehDiv = document.createElement('div') tehDiv.setAttribute('id', 'id_' + target) tehDiv.className = 'Calendar' tehDiv.style.position = 'absolute' tehDiv.style.zIndex = '9999' tehDiv.style.left = posX.toString() + 'px' tehDiv.style.top = (posY + 10).toString() + 'px' /* HEAD VAN DE CALENDAR */ var tehDivHead = document.createElement('div') tehDivHead.className = 'CalendarHead' /* MAIN VAN DE CALENDAR */ var tehDivMain = document.createElement('div') tehDivMain.className = 'CalendarMain' /* BODEM VAN DE CALENDAR */ var tehDivFooter = document.createElement('div') tehDivFooter.className = 'CalendarFooter'; tehDivFooter.innerHTML = ' '; /* TABEWL VAN DE TITEL */ var tehTableTitle = document.createElement('table') tehTableTitle.setAttribute('cellPadding', '0') tehTableTitle.setAttribute('cellSpacing', '0') tehTableTitle.style.width = '100%' /* TABEL VAN DE MAIN */ var tehTableMain = document.createElement('table') tehTableMain.setAttribute('cellPadding', '0') tehTableMain.setAttribute('cellSpacing', '0') tehTableMain.style.margin = '15px 0px 15px 0px' /* BODYS */ var tehTableTitleContent = document.createElement('tbody') var tehTableMainContent = document.createElement('tbody') /* VERANDEREN VAN POSITIE VAN DE CALENDAR */ if (changeView) { document.onmousedown = ReadPosition; } /* AFSLUIT KNOP */ var closePicker = document.createElement('tr') var closePickertd = document.createElement('td') closePickertd.colSpan = '3' closePickertd.style.textAlign = 'right' var closePickerLink = document.createElement('span') closePickerLink.style.fontWeight = 'bold' closePickerLink.style.cursor = 'pointer' closePickerLink.style.fontSize = '11px' closePickerLink.style.padding = '0px 5px 0px 0px' if (IE) { closePickerLink.onclick = new Function('document.body.removeChild (document.getElementById (\"ie_fix_iframe_' + target + '\"));document.body.removeChild (document.getElementById (\"id_' + target + '\")); document.onmousedown = ReadPosition;') } else { closePickerLink.onclick = new Function('document.body.removeChild (document.getElementById (\"id_' + target + '\")); document.onmousedown = ReadPosition;') } closePickerLink.appendChild(document.createTextNode('X')) closePickertd.appendChild(closePickerLink) closePicker.appendChild(closePickertd) tehTableTitleContent.appendChild(closePicker) /* MAAND EN JAAR SELECTEREN */ var selectShit = document.createElement('tr') var selectMonth = document.createElement('td') var selectNothing = document.createElement('td') var selectYear = document.createElement('td') selectMonth.style.textAlign = 'center' selectYear.style.textAlign = 'center' selectMonth.style.border = '0px' selectYear.style.border = '0px' /* MAAND PIJL LINKS */ var span1 = document.createElement('img') span1.onclick = new Function('PickDate (\"' + target + '\", ' + MAKEOURS + ', ' + viewYear + ', ' + (viewMonth - 1) + ', true)') span1.setAttribute('src', '/bin/Modules/ST_Calendar/calLeft.gif'); span1.setAttribute('alt', ''); span1.style.border = '0px' span1.style.cursor = 'pointer' span1.style.marginLeft = '3px' selectMonth.appendChild(span1) /* MAAND NAAM */ selectMonth.appendChild(document.createTextNode(' ' + Month[viewMonth] + ' ')) /* MAAND PIJL RECHTS */ var span2 = document.createElement('img') span2.onclick = new Function('PickDate (\"' + target + '\", ' + MAKEOURS + ', ' + viewYear + ', ' + (viewMonth + 1) + ', true)') span2.setAttribute('src', '/bin/Modules/ST_Calendar/calRight.gif'); span2.setAttribute('alt', ''); span2.style.border = '0px' span2.style.cursor = 'pointer' selectMonth.appendChild(span2) /* JAAR PIJL LINKS */ var span3 = document.createElement('img') span3.onclick = new Function('PickDate (\"' + target + '\", ' + MAKEOURS + ', ' + (viewYear - 1) + ', ' + viewMonth + ', true)') span3.setAttribute('src', '/bin/Modules/ST_Calendar/calLeft.gif'); span3.setAttribute('alt', ''); span3.style.border = '0px' span3.style.cursor = 'pointer' span3.style.marginLeft = '20px' selectYear.appendChild (span3) /* JAAR */ selectYear.appendChild(document.createTextNode(' ' + viewYear + ' ')) /* JAAR PIJL RECHTS*/ var span4 = document.createElement('img') span4.onclick = new Function('PickDate (\"' + target + '\", ' + MAKEOURS + ', ' + (parseInt (viewYear) + 1) + ', ' + viewMonth + ', true)') span4.setAttribute('src', '/bin/Modules/ST_Calendar/calRight.gif'); span4.setAttribute('alt', ''); span4.style.border = '0px' span4.style.cursor = 'pointer' selectYear.appendChild(span4) selectShit.appendChild(selectMonth) selectShit.appendChild(selectNothing) selectShit.appendChild(selectYear) tehTableTitleContent.appendChild(selectShit) var tehHTR = document.createElement('tr') var tehHTH = document.createElement('th') tehHTR.appendChild(tehHTH) /* DAGEN VAN DE WEEK WEERGEVEN */ for (var d = 0; d < Days.length; d++) { var tehHTH = document.createElement('th') tehHTH.appendChild(document.createTextNode(Days[d])) tehHTR.appendChild(tehHTH) } tehTableMainContent.appendChild(tehHTR) var firstWeekFromYear = new Date(viewYear, viewMonth, 1); var startYearArray = new Date(viewYear, viewMonth, 1); var THISYEARSWEEKS = new Date(viewYear, 0, 1); if(firstWeekFromYear.getDay() == 0) { startYearArray.setDate(-5); } else if(firstWeekFromYear.getDay() > 1) { var verschil = (firstWeekFromYear.getDay() - 2) startYearArray.setDate(-verschil); } else if(firstWeekFromYear.getDay() == 1) { startYearArray.setDate(+1); } if(THISYEARSWEEKS.getDay() == 0) { THISYEARSWEEKS.setDate(-5); } else if(THISYEARSWEEKS.getDay() > 1) { var verschil = (THISYEARSWEEKS.getDay() - 2) THISYEARSWEEKS.setDate(-verschil); } else if(THISYEARSWEEKS.getDay() == 1) { THISYEARSWEEKS.setDate(+1); } var trs = new Array() var tds = new Array() var k = 1; var dayCounter = 0; var strCalendar = ""; var prefDate = 0; for(i = 1; i < 43; i++) { if(dayCounter == 0) { k++ trs[k] = tehTableMainContent.appendChild(document.createElement('tr')) var tehHTH = document.createElement('th') tehHTH.style.border = '0px' tehHTH.style.width = '15px' tehHTH.style.textAlign = 'right' if(getWeek(THISYEARSWEEKS) == 52) { if(i == 1) { if(getWeek(startYearArray) == 52) { strCalendar = getWeek(startYearArray) } else { strCalendar = getWeek(startYearArray) -1 } } else { strCalendar = getWeek(startYearArray) - 1 } } else { strCalendar = getWeek(startYearArray) } if(strCalendar == 0) { strCalendar = 1; } tehHTH.appendChild(document.createTextNode(strCalendar)) trs[k].appendChild(tehHTH) } tds[i] = document.createElement('td') tds[i].appendChild(document.createTextNode(startYearArray.getDate())) tds[i].onmouseover = new Function('this.style.fontWeight = \"bold\";this.style.backgroundColor = \"#bbb\"') tds[i].onmouseout = new Function('this.style.fontWeight = \"\";this.style.backgroundColor = \"' + (startYearArray.getMonth() == thisDay.getMonth() && thisDay.getYear() == startYearArray.getYear() && thisDay.getDate() == startYearArray.getDate() ? '#dddddd' : '#fff') + '\"') tds[i].style.cursor = 'pointer' if(startYearArray.getMonth() == thisDay.getMonth() && thisDay.getYear() == startYearArray.getYear() && thisDay.getDate() == startYearArray.getDate()) { tds[i].style.backgroundColor = '#dddddd'; } if(haveValue && startYearArray.getMonth() == viewMonth && startYearArray.getYear() == viewYear && startYearArray.getDate() == viewDay) { tds[i].style.border = '1px dotted #000'; } if(dayCounter == 5 || dayCounter == 6) { tds[i].style.color = '999999'; } if(startYearArray.getMonth() == (viewMonth + 1)) { tds[i].style.color = '#bbb'; } if(i < 7) { if(startYearArray.getDate() > 10) { tds[i].style.color = '#bbb'; } } if(i < 43 && i > 35) { if(startYearArray.getDate() < 10) { tds[i].style.color = '#bbb'; } } tds[i].startYearArray = startYearArray; tds[i].onclick = function() { document.getElementById(target).value = this.startYearArray.getDate() + '-' + (this.startYearArray.getMonth() + 1) + '-' + this.startYearArray.getFullYear(); document.body.removeChild(document.getElementById('id_' + target )); document.onmousedown = ReadPosition; fillHiddenFiles(target); if(document.getElementById('ie_fix_iframe_' + target) && typeof(document.getElementById('ie_fix_iframe_' + target)) != "undifined") { document.body.removeChild(document.getElementById('ie_fix_iframe_' + target)); } } trs[k].appendChild(tds[i]) if(dayCounter == 6){ dayCounter = 0; } else { dayCounter++; } //alert('?') startYearArray = new Date(viewYear, startYearArray.getMonth(), (startYearArray.getDate() + 1)); } if(IE) { var iframe = document.createElement('iframe') iframe.setAttribute('id', 'ie_fix_iframe_' + target) iframe.setAttribute('frameborder', 0) iframe.style.position = 'absolute' iframe.style.left = tehDiv.style.left iframe.style.top = tehDiv.style.top iframe.style.width = tehDiv.offsetWidth iframe.style.height = tehDiv.offsetHeight iframe.style.zIndex = '9998' document.body.appendChild(iframe) } tehTableMain.appendChild(tehTableMainContent) tehDivMain.appendChild(tehTableMain) tehTableTitle.appendChild(tehTableTitleContent) tehDivHead.appendChild(tehTableTitle) tehDiv.appendChild(tehDivHead) tehDiv.appendChild(tehDivMain) tehDiv.appendChild(tehDivFooter) document.body.appendChild(tehDiv) if(document.getElementById('ie_fix_iframe_' + target)) { document.getElementById('ie_fix_iframe_' + target).style.height = document.getElementById('id_' + target).offsetHeight document.getElementById('ie_fix_iframe_' + target).style.width = document.getElementById('id_' + target).offsetWidth } } function getWeek(curDate) { /* Most years have 52 weeks, but years that start on a Thursday(4) and leap years that start on a Wednesday(3) have 53 weeks. */ var theYear = curDate.getYear().toString() theYear = theYear < 1000 ? theYear < 100 ? 19 + theYear : "20" + theYear.substring(1) : theYear var startYear = new Date (theYear, 0, 1) var endYear = new Date (theYear, 11, 31) var prevYear = new Date ((theYear - 1), 11, 27) var leapYear = (endYear.getTime() - startYear.getTime()) / 1000 / 3600 / 24 > 364 ? true : false if ((leapYear && startYear.getDay() == 3) || (startYear.getDay() == 4)) { theTime = Math.ceil((curDate.getTime() - startYear.getTime()) / 1000 / 3600 / 24 / 7 + 1) } else { if (curDate.getDate() > 27 && curDate.getMonth() == 11) { theTime = 1 } else { theTime = Math.ceil((curDate.getTime() - startYear.getTime()) / 1000 / 3600 / 24 / 7) if (prevYear.getDay() > 1) { theTime++ } } } return theTime } function ReadPosition(e) { if (IE) { var scrollersX = 0 var scrollersY = 0 if(document.documentElement.scrollLeft > 0) { scrollersX = document.documentElement.scrollLeft scrollersY = document.documentElement.scrollTop } else { scrollersX = document.getElementsByTagName("HTML")[0].scrollLeft scrollersY = document.getElementsByTagName("HTML")[0].scrollTop } posX = event.clientX + scrollersX posY = event.clientY + scrollersY } else { posX = e.pageX posY = e.pageY } if (posX < 0){posX = 0} if (posY < 0){posY = 0} return true } function LeadingZero(input) { if (input < 10 && input > 0) { return '0' + input.toString() } else { return input } } function NoLeadingZero(input) { if (input.substring(0,1) == 0) { return input.substring(1) } else { return input } } function fillHiddenFiles(targets, autoCreate, MAKEOURS) { var Times = new Array() targets = document.getElementById(targets) Times = targets.value.split("-"); var parent = document.getElementById(targets.name + '_AANHANGER'); if(parent.childNodes.length > 1) { for(i = 1; i <= 4; i++){ parent.removeChild(parent.childNodes[1]); } } /**/ var hiddenYY = document.createElement('input') hiddenYY.setAttribute('name', targets.name + '_YY') hiddenYY.setAttribute('id', targets.name + '_YY') hiddenYY.setAttribute('value', '' + Times[2] + '') hiddenYY.setAttribute('type', 'hidden') var hiddenMM = document.createElement('input') hiddenMM.setAttribute('name', targets.name + '_MM') hiddenMM.setAttribute('id', targets.name + '_MM') hiddenMM.setAttribute('value', '' + Times[1] + '') hiddenMM.setAttribute('type', 'hidden') var hiddenDD = document.createElement('input') hiddenDD.setAttribute('name', targets.name + '_DD') hiddenDD.setAttribute('id', targets.name + '_DD') hiddenDD.setAttribute('value', '' + Times[0] + '') hiddenDD.setAttribute('type', 'hidden') var hiddenSE = document.createElement('input') hiddenSE.setAttribute('name', targets.name + '_SE') hiddenSE.setAttribute('id', targets.name + '_SE') hiddenSE.setAttribute('value', '0') hiddenSE.setAttribute('type', 'hidden') parent.appendChild(hiddenYY); parent.appendChild(hiddenMM); parent.appendChild(hiddenDD); parent.appendChild(hiddenSE); } function fillHiddenFilesTimes(parentName, NAMES){ var valHO = '00' var valMI = '00' var parent = '' var tmp = new Array() parent = document.getElementById(parentName) tmp = parentName.split("_") if(tmp[1] == "AANHANGERUUR") { if(parent.childNodes.length > 1) { for(i = 1; i <= 2; i++) { parent.removeChild(parent.childNodes[0]); } } } if(document.getElementById(NAMES + '_HOVAL')) { valHO = document.getElementById(NAMES + '_HOVAL').value } if(document.getElementById(NAMES + '_MIVAL')) { valMI = document.getElementById(NAMES + '_MIVAL').value } /**/ var hiddenHO = document.createElement('input') hiddenHO.setAttribute('name', NAMES + '_HO') hiddenHO.setAttribute('id', NAMES + '_HO') hiddenHO.setAttribute('value', '' + valHO + '') hiddenHO.setAttribute('type', 'hidden') var hiddenMI = document.createElement('input') hiddenMI.setAttribute('name', NAMES + '_MI') hiddenMI.setAttribute('id', NAMES + '_MI') hiddenMI.setAttribute('value', '' + valMI + '') hiddenMI.setAttribute('type', 'hidden') parent.appendChild(hiddenHO); parent.appendChild(hiddenMI); } function timeStamper(target, inputValue, stappen, afronding) { var tmp = new Array() tmp = target.split('_') var newTarget = document.getElementById(target) if(inputValue.length > 0) { if(isNaN(parseInt(inputValue))) { newTarget.value = '' } } if(inputValue.length > 1) { if(tmp[1] == 'HOVAL') { if(inputValue > 23) { newTarget.value = '00' } } else { if(inputValue >= 60) { newTarget.value = '00' var tmpVal = '' var newValue = document.getElementById(tmp[0] + "_HOVAL").value if(newValue == '') { newValue = 0 } else { if(parseInt(newValue.substr(0)) == 0) { if(parseInt(newValue.substr(1)) == 9) { newValue = 10 } else { newValue = parseInt(newValue.substr(1)) + 1 } } else { newValue = parseInt(newValue) + 1 } } document.getElementById(tmp[0] + "_HOVAL").value = (newValue == 24 ? '00' : (newValue > 9 ? newValue : '0' + newValue)) } else { if(stappen > 0) { var tmpVar = 0 var newVal = 0 tmpVar = (60 / stappen) + 1; for(i = 0; i < tmpVar; i++) { if(afronding) { if(newVal == 0) { if(inputValue <= (i*stappen)) { newVal = (i*stappen) if(newVal == 60 && inputValue != 0) { newVal = 0 var hour = document.getElementById(tmp[0] + "_HOVAL") var hourNewVal = 0 if(isNaN(parseInt(hour.value))) { hour.value = '01' } else { if(parseInt(hour.value.substr(0)) == 0) { hourNewVal = (parseInt(hour.value.substr(1)) +1) hour.value = (hourNewVal < 10 ? '0' + hourNewVal : hourNewVal) } else { hourNewVal = parseInt(hour.value) + 1 hour.value = (hourNewVal == 24 ? '00' : hourNewVal) } } } } if(inputValue == 0) { newVal = 0 } } } else { if(inputValue >= (i*stappen)) { newVal = (i*stappen) } } } newTarget.value = (newVal < 10 ? '0' + newVal : newVal) } } } fillHiddenFilesTimes(tmp[0] + '_AANHANGERUUR', tmp[0]) } } function emptyFields(name) { var arr = new Array(name,name+"_HO", name+"_MI", name+"_YY", name+"_DD", name+"_SE", name+"_MM"); for(var i = 0; i < arr.length; i++) { if(document.getElementById(arr[i])) { document.getElementById(arr[i]).value = ""; } } } function isValidDate(fld){ var RegExPattern = /^([1-9]|0[1-9]|[12][0-9]|3[01])[- /.]([1-9]|0[1-9]|1[012])[- /.]((19|20)\d\d)$/; if ((fld.value.match(RegExPattern)) && (fld.value != '')) { return true; } else { return false; } } //--------------------------------------// var dtCh= "-"; var minYear=1900; var maxYear=2100; function isInteger(s){ var i; for (i = 0; i < s.length; i++){ // Check that current character is number. var c = s.charAt(i); if (((c < "0") || (c > "9"))) return false; } // All characters are numbers. return true; } function stripCharsInBag(s, bag){ var i; var returnString = ""; // Search through string's characters one by one. // If character is not in bag, append to returnString. for (i = 0; i < s.length; i++){ var c = s.charAt(i); if (bag.indexOf(c) == -1) returnString += c; } return returnString; } function daysInFebruary (year){ // February has 29 days in any year evenly divisible by four, // EXCEPT for centurial years which are not also divisible by 400. return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 ); } function DaysArray(n) { for (var i = 1; i <= n; i++) { this[i] = 31 if (i==4 || i==6 || i==9 || i==11) {this[i] = 30} if (i==2) {this[i] = 29} } return this } function isDate(dtStr){ var daysInMonth = DaysArray(12) var pos1=dtStr.indexOf(dtCh) var pos2=dtStr.indexOf(dtCh,pos1+1) var strDay=dtStr.substring(0,pos1) var strMonth=dtStr.substring(pos1+1,pos2) var strYear=dtStr.substring(pos2+1) strYr=strYear if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1) if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1) for (var i = 1; i <= 3; i++) { if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1) } month=parseInt(strMonth) day=parseInt(strDay) year=parseInt(strYr) if (pos1==-1 || pos2==-1){ alert("Voer een datum in volgens formaat: dd-mm-yyyy") return false } if (strMonth.length<1 || month<1 || month>12){ alert("Voer een geldige maand in") return false } if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){ alert("Voer een geldige dag in") return false } if (strYear.length != 4 || year==0 || yearmaxYear){ var tmpValidYear = "Voer een geldig jaar in, met 4 cijfers tussen %MINYEAR% en %MAXYEAR%"; tmpValidYear = tmpValidYear.replace(/%MINYEAR%/, minYear); tmpValidYear = tmpValidYear.replace(/%MAXYEAR%/, maxYear); alert(tmpValidYear); return false } if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){ alert("Voer een geldige datum in") return false } return true } function ST_checkDate(obj){ if(obj.value!=""){ if (isDate(obj.value)==false){ //obj.value= ""; setTimeout(function(){obj.focus()},100); return false } } fillHiddenFiles(obj.id, true, true); return true }