// $Id: general.js,v 1.29 2008/07/08 16:04:06 marko Exp $

function CenteredWindow(myurl, myname, mywidth, myheight, scroll) {
	var winl = (screen.width - mywidth) / 2;
	var wint = ((screen.height - myheight) / 2) - 20;
	winprops = 'height='+myheight+',width='+mywidth+',top='+wint+',left='+winl+',screenX'+winl+',screenY='+wint+',scrollbars='+scroll+',resizable=no,status=no'
	mywin = window.open(myurl, myname, winprops);
	if (parseInt(navigator.appVersion) >= 4) { mywin.window.focus(); }
}


function reloadForNewResolution(omslagpunt) {
	if ((clW > omslagpunt && document.body.clientWidth <= omslagpunt) || 
	    (clW <= omslagpunt && document.body.clientWidth > omslagpunt)) {
		      clW = document.body.clientWidth;
		      document.location.href=document.URL;
	}
}


function clearFormField(field, default_value) {
    if (field.value == default_value) {
        field.value = '';   
    }   
}


function restoreFormField(field, default_value) {
    if (field.value == '') {
        field.value = default_value;   
    }   
}


function autoTab(input,len,e) {
	var keyCode = (isNN()) ? e.which : e.keyCode; 
	var filter  = (isNN()) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if (input.value.length >= len && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len);
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
	return true;
}


function containsElement(arr,ele) {
	var found = false, index = 0;
	while (!found && index < arr.length) {
		if (arr[index] == ele) {
			found = true;
		} else {
			index++;
		}
	}
	return found;
}


function getIndex(input) {
	var index = -1, i = 0, found = false;
	while (i < input.form.length && index == -1) {
		if (input.form[i] == input) {
			index = i;
		} else {
			i++;
		}
	}
	return index;
}


function isNN() {
    return (navigator.appName.indexOf("Netscape")!=-1);
}


function formatDecimalEuropean(num) {
	num = num.toString().replace(/\,/g,'.');
	if(isNaN(num)) return num;
	if (num == '') return '';
	if (num == 0) return '0,00';
	if (num < 0) {
   		var cents = Math.abs(Math.ceil((num*100-0.5)%100));
		num = Math.ceil((num*100-0.5)/100).toString();
		if (num >= 0) {
			num = '-' + num;
		}
	} else {
   		var cents = Math.floor((num*100+0.5)%100);
		num = Math.floor((num*100+0.5)/100).toString();
	}
	if(cents < 10) cents = "0" + cents;
	return (num + ',' + cents);
}


function formatDecimalAmerican(num) {
	num = formatDecimalEuropean(num);
	return num.replace(/\,/g,'.');
}


function explodeJsCalendarDate(dateValue, idDay, idMonth, idYear) {
    dateArray = dateValue.split('-');
    document.getElementById(idDay).value=dateArray[0];    
    document.getElementById(idMonth).value=dateArray[1];    
    document.getElementById(idYear).value=dateArray[2];    
}


function isOpera() {
    return navigator.appName.indexOf('Opera') > -1;   
}


function isMSIE() {
    return navigator.appName.indexOf('Microsoft Internet Explorer') > -1;   
}


function isMozilla() {
    return navigator.appName.indexOf('Netscape') > -1;   
}


function calculateTotalOffset(element) {
	var totalOffset = 0;
	while (element) {
		totalOffset += element.offsetTop;
		element = element.offsetParent;
	}
	return totalOffset;
}


function calculateTotalOffsetLeft(element) {
	var totalOffset = 0;
	while (element) {
		totalOffset += element.offsetLeft;
		element = element.offsetParent;
	}
	return totalOffset;
}


function trimString(sString) {
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}


function trimField(fieldId) {
	if ($(fieldId) && $F(fieldId)) {
		$(fieldId).value = trimString($F(fieldId));
	}
}


function externalLinks() {
	var hrefs = document.getElementsByTagName('a');
	for (var i=0; i<hrefs.length; i++) {
		if (hrefs[i].rel && hrefs[i].rel == 'external') {
			hrefs[i].target = '_blank';	
		}	
	}
}


function clearAllChildren(parent) {
	if ($(parent)) {
		while($(parent).firstChild) {
			$(parent).removeChild($(parent).firstChild);
		}	
	}	
}


function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime) {
 			return;
		}
	}
}


function prettyTime(time, timeNotation, showZero) {
	time = time.toString().replace(/,/g, '.').replace(/;/g, ':');
	if (time != '') {
		if (timeNotation == 'decimal') {
			if (time == "0") {
				time = "0:00";	
			}
			if (time.indexOf('.') == -1) {
				// van 'hour' naar 'decimal'
				var colon = time.indexOf(':');
				if (colon == 0) {
					time = "0" + time;
				}
				var timeArray = time.split(':');
				var hours = parseInt(timeArray[0], 10);
				var minutes = (timeArray[1] ? parseInt(timeArray[1], 10) : 0);
				if (isNaN(hours) || isNaN(minutes)) {
					return '';	
				} else {
					time =  hours + (minutes/60);
				}
			}
			time = Math.round(time*100)/100;
			if (time == parseInt(time)) {
				time = time+".00";	
			}
			var timeArray = time.toString().split('.');
			if (timeArray[1].length == 1) {
				time = time+"0";	
			}		
			if (currentLanguage == 'nl') {
				time = time.toString().replace('.', ',');	
			}
		} else if (timeNotation == 'hour') {
			if (time.indexOf(':') == -1) {
				// van 'decimal' naar 'hour'
				var point = time.indexOf('.');
				if (point == 0) {
					time = "0" + time;
				}
				var timeArray = time.split('.');
				var hours = parseInt(timeArray[0], 10);
				var minutes = Math.round((time - hours)*100);
				minutes = Math.round(minutes * 0.6);
				if (isNaN(hours) || isNaN(minutes)) {
					return '';	
				} else {
					if (minutes == 60) {
						hours++;
						minutes = 0;	
					}
					if (minutes.toString().length == 0) {
						minutes = '00';	
					} else if (minutes.toString().length == 1) {
						minutes = '0' + minutes;	
					}
					time = hours + ":" + minutes;
				}
			} else {
				var timeArray = time.split(':');
				var hours = parseInt(timeArray[0], 10);
				if (isNaN(hours)) {
					hours = 0;	
				}
				var minutes = (timeArray[1] ? parseInt(timeArray[1], 10) : 0);
				if (minutes > 60) {
					var moreHours = parseInt(minutes/60);
					hours += moreHours;
					minutes = minutes - (moreHours*60);
				}
				if (minutes == 60) {
					hours++;
					minutes = 0;	
				}
				if (minutes.toString().length == 0) {
					minutes = '00';	
				} else if (minutes.toString().length == 1) {
					minutes = '0' + minutes;	
				}
				time = hours + ":" + minutes;	
			}
		}	
	}
	if ((time == '0.00' || time == '0:00') && !showZero) {
		time = '';	
	}
	return time;
}


function _fixYear(year) { 
	return (year < 1000) ? year + 1900 : year;
}


function isValidDate(year, month, day) {
	// month argument must be in the range 1-12
	month = month - 1;  // javascript month range : 0-11
	var tempDate = new Date(year,month,day);
	if ((_fixYear(tempDate.getYear()) == year) && (month == tempDate.getMonth()) && (day == tempDate.getDate())) {
		return true;
	} else {
		return false;
	}
}


function datumDeel(datum, deel) {
	var j, m, d, datumArray = datum.split('-');
	deel = deel.toLowerCase();
	if (datum.toString().match(/^\d{4}-\d{1,2}-\d{1,2}$/)) {
		j = datumArray[0];
		d = datumArray[2];
	} else if (datum.toString().match(/^\d{1,2}-\d{1,2}-\d{4}$/)) {
		d = datumArray[0];
		j = datumArray[2];
	} else {
		return '';	
	}
	m = datumArray[1];
	if (deel == 'dag' || deel == 'day' || deel == 'd') {
		return d;	
	} else 	if (deel == 'maand' || deel == 'month' || deel == 'm') {
		return m;
	} else 	if (deel == 'jaar' || deel == 'year' || deel == 'j' || deel == 'y') {
		return j;
	} else {
		return '';	
	}
}


