// JavaScript Document

var numChild = 0;




var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		},
		{
			string: navigator.appName,
			subString: "Microsoft Internet Explorer",
			identity: "Explorer8",
			versionSearch: "MSIE"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
		
	]

};
BrowserDetect.init();
/*
		function padZero(num) {
				  return ((num < 10) ? ("0" + num) : num);
			}
			
			function displayDate(Date) {
				return padZero(Date.getDate()) + "/" + padZero(Date.getMonth()+1) + "/" + Date.getFullYear();
			}
			
			function winopen(url) {
				window.open (url, "NewWin", "top=0, left=100, width=770, height=545, status=no, scrollbars=no, resizeable=yes, location=no");
			}
	*/		
var monthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var monthLeap = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
var months = new Array(1,2,3,4,5,6,7,8,9,10,11,12);
var monthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

var calTextField = '';
var calHidden = '';
var calHide = '';
var calText = '';
var display = '';
var onClickTab = false;
function isLeap(theYear) { // Check for a Leap Year and return True if not return false
	if (theYear % 400 == 0){
		return true;
	}
	if (theYear % 100 == 0){
		return false;
	}
	if (theYear % 4 == 0){
	return true;
	}
	return false;
}

function hideTable(tabName){
document.getElementById(tabName).style.display = "none";
calHidden = '';
calTextField = '';
calHide = '';
calText = '';
display = '';
}



function showTable(element,tabName,displayType,hiddenVal,textField){

	var positions = [0,0];
	var elementToSet = document.getElementById(tabName);
	
	var positions = getParentOffset(element, positions);	// nieuw
 
	//var parent = element.offsetParent;
	//positions[0] += element.offsetLeft; // To set the position of the table to the link or image first get the position of the link or image
	
	//positions[1] += element.offsetTop;
	
/*
	if(parent){
		positions[0] += parent.offsetLeft; // Next set the postion of the table relative to the offset of the parent element 
		positions[1] += parent.offsetTop;
	}	*/
	
	

 if(document.getElementById(hiddenVal).value){
	 if(BrowserDetect.browser == 'Safari' || BrowserDetect.browser == 'Explorer8'){
		
				
		positions[0] = positions[0] - element.offsetLeft + 3;
		positions[1] = positions[1] - 14;	
		
		//positions[1] = positions[1] - 14;
	}
		
	elementToSet.style.left = positions[0]+'px';		// nieuw
	elementToSet.style.top = positions[1]+'px';	
	elementToSet.style.display = "block";
	
 	var matchDate = document.getElementById(hiddenVal).value; // Find and match the date string 
	
	if(matchDate.split('-')){
		var m = matchDate.split('-'); // Find sting value and return the position
	}else{
		var m = matchDate.split('/');	
	}
	
	if (m[1].substr(0, 1) == 0){
		m[1] = m[1].substr(1, 1); // Remove any leading 0's
		
	}
	if (m[2].substr(0, 1) == 0){
		m[2] = m[2].substr(1, 1); // Remove any leading 0's
	}
		m[1] = m[1] - 1;
		
		
		showCal(m[0], m[1], m[2],displayType,hiddenVal,textField);
	
 	
 	}else{
		if(BrowserDetect.browser == 'Safari'){
			
				positions[0] = positions[0] - element.offsetLeft + 3;
				positions[1] = positions[1] - 14;	
			
		}
	elementToSet.style.left = positions[0]+'px';		// nieuw
	elementToSet.style.top = positions[1]+'px';	
	elementToSet.style.display = "block";
	
		x=new Date(); //create a new date object
		
		//x = addDate(x,8);
		curDay = x.getDate();
		curMonth = x.getMonth()
		curYear = x.getFullYear();
		
	
		showCal(curYear,curMonth,curDay,displayType,hiddenVal,textField);
		
	}
}

function popYears(startYear,endYear,listId){
	var k=0;
	
		for(var m=endYear;m>=startYear;m--){
			document.getElementById(listId).options[k++] = new Option(m,m);
		}
}

function retLeapMonth(yearLeap,leapMonth){
	if(isLeap(yearLeap)){
	
		var newMonth = monthLeap;
	}else{
		
		var newMonth = monthDays;
		}
	return newMonth[leapMonth];
}

function addDate(dateObj,daysAdd){

// Add x days to currently set date.

	dateObj.setDate(dateObj.getDate()+daysAdd);
	
	return dateObj;


}

function createCal(year,month,day,displayType,hidden,textField){
	
	if(displayType != ''){
		display = displayType;
	}else{
		
		displayType = display;	
	}
	if(hidden == ''){
		hidden = calHide;
	}
	if(textField == ''){
		textField = calText;
		
	}
	if(calHide == '' || calHide != hidden){
		calHide = hidden;	
	}
	if(calText == '' || calText != textField){
		calText = textField;
	}
	
	if(calTextField == '' || calTextField != textField){
		calTextField = textField;
	}
	if(calHidden == '' || calHidden != hidden){
	   calHidden = hidden;
	}
	if(month < 0)
					{
						month++;
					}
	x=new Date(); //create a new date object
	
	//x = addDate(x,8);
	curDay = x.getDate();
	curMonth = x.getMonth()
	curYear = x.getFullYear();
	if(!day){
		day = curDay;	
	}

	
	if(!year){
		alert('test3');
		year = curYear;
		month = curMonth;
		
	}
	
	var foundYear =0	
	
	for(var i=0;i<document.getElementById('calYears').options.length;i++){
		if(document.getElementById('calYears').options[i].value == year){
			document.getElementById('calYears').options.selectedIndex = i;
			foundYear = true;
		}
	}
	 
	if(!foundYear){
		document.getElementById('calYears').options.selectedIndex = 0;
		year = document.getElementById('calYears').options.selectedIndex
	}
	
	
	for(var i=0; i<document.getElementById('calMonths').options.length; i++){
		if(document.getElementById('calMonths').options[i].value == months[parseInt(month,10)]){ 
			
			document.getElementById('calMonths').selectedIndex = i;
		}
	}
	
	var firstDayOfMonthObj = new Date(year,month,1);
	var firstDayOfMonth = firstDayOfMonthObj.getDay();
	var tabRows = [];
	var numCells = 0;
	var numDays =0;
	var numCols =0;
	var firstWeek = true;
	while(numDays <= retLeapMonth(year,month)){
	
		if(firstWeek){
			
			tabRows[numCells] = document.createElement('TR'); // Create the first table row element
			
			if(firstDayOfMonth > 0){
				
				while(numCols < firstDayOfMonth){
		
					tabRows[numCells].appendChild(document.createElement('TD')); // Create the first cell and append it to the first row.
					numCols++;
				}	
			}
			numDays =1;
		}
		firstWeek = false;
		
		if(numCols % 7 == 0){
			numCells++;
			tabRows[numCells]=document.createElement('TR');
		}
		if (day && numDays == day)
		{
			var setID = 'calenderChoosenDay';
			var styleClass = 'choosenDay';
			var setTitle = 'Currently Selected';
		}
		/*else if (numDays == curDay && month == curMonth && year == curYear)
		{
			var setID = 'calenderToDay';
			var styleClass = 'toDay';
			//var setTitle = 'this day today';
		}*/
		else
		{
			var setID = false;
			var styleClass = 'normalDay';
			var setTitle = false;
		}
		var td = document.createElement("TD");
		td.className = styleClass;
		if (setID)
			{
				td.id = setID;
			}
			if (setTitle)
			{
				td.title = setTitle;
			}
			
		td.onclick = new Function('chooseDate('+year+','+month+','+numDays+','+displayType+',"'+calHidden+'","'+calTextField+'")');
		
		
		td.style.curser = 'default';
		td.appendChild(document.createTextNode(numDays));
		
		tabRows[numCells].appendChild(td);
		numCols++;
		numDays++;
	}

	return tabRows;
}
function getParentOffset(el, positions)
{


	positions[0] += el.offsetLeft; // Find the left vale of link or image
	
	positions[1] += el.offsetTop; // Find the top value of link or image
	if (el.offsetParent){ // Set the table to the top left of the link or image displaying the calender
		positions = getParentOffset(el.offsetParent, positions);
	}
	return positions;
}

function showCalenderBody(calRows)
{
	var calTBody = document.getElementById('calender');
	
	while (calTBody.childNodes[0])
	{
		calTBody.removeChild(calTBody.childNodes[0]);
	}
	
	for (var i = 0; i < calRows.length; i++)
	{
		calTBody.appendChild(calRows[i]);
	}
}
function showCal(year,month,day,displayType,hidden,textField){
		if(year){
		var cal = createCal(year,month,day,displayType,hidden,textField);
		showCalenderBody(cal);
	}else{
		
		var cal = createCal(false,false,false,displayType,hidden,textField);
		showCalenderBody(cal);
	}
}
function chooseDate(year,month,day,outType,hidden,textField){
	
	day	= day < 10 ? '0'+day : day;
	switch(outType){
		case 1 :
				
				document.getElementById('day').options.length =0;
				
			
				for(var i=0; i<retLeapMonth(year,month); i++){
					
					document.getElementById('day').options[i] = new Option(i+1,i+1);
				}
				var k = 0;
				
				for(var i=0; i<document.getElementById('month').options.length; i++){
				
					if(document.getElementById('month').options[i].value == months[parseInt(month,10)]){ 
						
						document.getElementById('month').selectedIndex = i;
					}
				
				
				
				}
				if(document.getElementById('year').options.length < 1){
					document.getElementById('year').options.length =0;	
					document.getElementById('year').options[0] = new Option(year,year);
				}
				
				for(var i=0; i<document.getElementById('day').options.length; i++){
					
					if(document.getElementById('day').options[i].value == parseInt(day,10)){ 
					
						document.getElementById('day').selectedIndex = i;
					break;
					}
				}
				for(var i=0; i<document.getElementById('month').options.length; i++){
					if(document.getElementById('month').options[i].value == months[parseInt(month,10)]){ 
						
						document.getElementById('month').selectedIndex = i;
					}
				}
			
				for(var i=0; i<document.getElementById('year').options.length; i++){
					if(document.getElementById('year').options[i].value == year){ 
						
						document.getElementById('year').selectedIndex = i;
					}
				}
				month	= months[parseInt(month,10)] < 10 ? '0'+months[parseInt(month,10)] : months[parseInt(month,10)];
			document.getElementById(hidden).value = year+"-"+month+"-"+day;
			document.getElementById(textField).value = day+"/"+month+"/"+year;
			hideTable('myTable');
			textField = '';
			hidden = '';
			calTextField = '';
			calHidden = '';
			calHide = '';
			calText = '';
			outType = '';
			display = '';
			break;
		case 2 :
			month	= months[parseInt(month,10)] < 10 ? '0'+months[parseInt(month,10)] : months[parseInt(month,10)];
			document.getElementById(textField).value = year+"-"+month+"-"+day;
			document.getElementById(hidden).value = year+"-"+month+"-"+day;
			textField = '';
			hidden = '';
			calTextField = '';
			calHidden = '';
			calhide = '';
			calText = '';
			outType = '';
			display = '';
			hideTable('myTable');
			break;
		case 3 :
		
			month	= months[parseInt(month,10)] < 10 ? '0'+months[parseInt(month,10)] : months[parseInt(month,10)];
			document.getElementById(textField).value = day+"/"+month+"/"+year;
			document.getElementById(hidden).value = year+"-"+month+"-"+day;
			textField = '';
			hidden = '';
			calTextField = '';
			calHidden = '';
			calHide = '';
			calText = '';
			outType = '';
			display = '';
			hideTable('myTable');
			break;
		case 4 :
	
			month	= months[parseInt(month,10)] < 10 ? '0'+months[parseInt(month,10)] : months[parseInt(month,10)];
			document.getElementById(hidden).value = year+"-"+month+"-"+day;
			textfield = '';
			hidden = '';
			calTextField = '';
			calHidden = '';
			calHide = '';
			calText = '';
			outType = '';
			display = '';
			hideTable('myTable');
			break;
		default :
			
			alert("Missing input field or select fields");
			break;
	}
		
	
}

