/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*  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', 'Di', 'Wo', 'Do', 'Vr', 'Za', 'Zo')
	var Month = new Array ('Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December')
	
	/* 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 = '&nbsp;';
	
	/* 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', '../Static/Common/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', '../Static/Common/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', '../Static/Common/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', '../Static/Common/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 (d in Days) {
		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';
			}
		}
		if(IE) {
			tds[i].onclick = new Function("document.getElementById('" + target + "').value = '" + startYearArray.getDate() + '-' + (startYearArray.getMonth() + 1) + '-' + startYearArray.getYear() + "'; document.body.removeChild(document.getElementById('" + 'ie_fix_iframe_' + target + "')); document.body.removeChild(document.getElementById('" + 'id_' + target + "')); document.onmousedown = ReadPosition; fillHiddenFiles('" + target + "')"); //  ')
		} else {
			tds[i].onclick = new Function("document.getElementById('" + target + "').value = '" + startYearArray.getDate() + '-' + (startYearArray.getMonth() + 1) + '-' + startYearArray.getFullYear() + "'; document.body.removeChild(document.getElementById('" + 'id_' + target + "')); document.onmousedown = ReadPosition; fillHiddenFiles('" + target + "')");
		}     
		trs[k].appendChild(tds[i])
		
		if(dayCounter == 6){
			dayCounter = 0;
		}
		else {
			dayCounter++;
		}
		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.body.scrollLeft > 0) {
			scrollersX = document.body.scrollLeft
			scrollersY = document.body.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('value', '' + Times[2] + '')
	hiddenYY.setAttribute('type', 'hidden')
	
	var hiddenMM = document.createElement('input')
	hiddenMM.setAttribute('name', 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('value', '' + Times[0] + '')
	hiddenDD.setAttribute('type', 'hidden')
	
	var hiddenSE = document.createElement('input')
	hiddenSE.setAttribute('name', 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('value', '' + valHO + '')
	hiddenHO.setAttribute('type', 'hidden')
		
	var hiddenMI = document.createElement('input')
	hiddenMI.setAttribute('name', 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])
	}
}
