function popupWindow(url, win_name, w, h) {
	var wx = 760;
	var hy = 570;
	if (typeof(w) != 'undefined') {
		if (!isNaN(w) && w > 0) {
			wx = w;
		}		
	}
	if (typeof(h) != 'undefined') {
		if (!isNaN(h) && h > 0) {
			hy = h;
		}
	}	
	window.open(url, win_name, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=' + wx + ',height=' + hy +',screenX=10,screenY=10,top=10,left=10');
}

function linkSubmit(formname, varname, varvalue) {
	var frm = eval('document.' + formname);
	if (typeof(varname) != 'undefined' && varname != '' && typeof(varvalue) != 'undefined') {
		var obj = frm.elements[varname];
		obj.value = varvalue;
	}
	frm.submit();
}

// Compatibility function
function submitLink(formname, varname, varvalue) {
	linkSubmit(formname, varname, varvalue);
}

function checkMultiSelect(formname, selname) {
	var frm = eval('document.' + formname);
	var sel = frm.elements[selname];
	var count = 0;
	
	for (var i = 1; i < sel.length; i++) {
		if (sel.options[i].selected == true) {
			count++;
		}
	}
	if (sel.options[0].selected == true && count == 1) {
		sel.options[0].selected = false;
	}
	else if (sel.options[0].selected == true && count > 1) {
		for (var i = 1; i < sel.length; i++) {
			sel.options[i].selected = false;
		}
	}
	else if (sel.options[0].selected == false && count == 0) {
		sel.options[0].selected = true;
	}
}

function checkMultiBoxes(formname, boxgroup, boxid) {
	var frm = eval('document.' + formname);
	var box = frm.elements[boxgroup];
	var count = 0;

	for (var i = 1; i < box.length; i++) {
		if (box[i].checked == true) {
			count++;
		}
	}
	
	if (boxid == 0) {
		if (box[0].checked == true) {
			for (var i = 1; i < box.length; i++) {
				box[i].checked = false;
			}
		}
		else if (count == 0) {
			box[0].checked = true;
		}
	}
	else if (box[0].checked == true) {
		box[0].checked = false;
	}
}

function setSelectIndex(formname, selname, selindex) {
	var frm = eval('document.' + formname);
	frm.elements[selname].selectedIndex = selindex;
}

function changeToSelect(formname, selname, textname) {
	var frm = eval('document.' + formname);
	var choice = frm.elements[selname].selectedIndex;
	if (choice >= 0) {
		var selval = frm.elements[selname].options[choice].value;
		if (selval != '') {
			frm.elements[textname].value = selval;
		}
	}
}

function strToUpper(formname, textname) {
	var frm = eval('document.' + formname);
	var val = frm.elements[textname].value.toUpperCase();
	frm.elements[textname].value = val;
}

function strToLower(formname, textname) {
	var frm = eval('document.' + formname);
	var val = frm.elements[textname].value.toLowerCase();
	frm.elements[textname].value = val;
}

function syncSelect(formname, textname, selname, exacton) {
	var frm = eval('document.' + formname);
	var val = frm.elements[textname].value.toString();
	var found = false;
	
	for (var i = 0; i < frm.elements[selname].length; i++) {	
		var check1 = val;
		var check2 = frm.elements[selname].options[i].value.toString();
		if (exacton == false) {
			check2 = check2.slice(0, check1.length);
		}
		if (check2 == check1) {
			found = true;
			break;
		}
	}
	
	if (found == false) {
		i = 0;
	}
	frm.elements[selname].selectedIndex = i;
}

function parseDate(datum) {
	var fmtdat = '';
	var test1 = 0;
	var test2 = 0;
	
	datum = datum.toString();
	
	if (datum.length < 2) {
		return datum;
	}

	var jetzt = new Date();
	
	switch (datum.length) {		
		case 2:
			fmtdat = '0' + datum.substr(0, 1) + '.0' + datum.substr(1, 1) + '.' + jetzt.getFullYear();
			break;
			
		case 3:
			test1 = parseInt(datum.substr(0,2), 10);
			test2 = parseInt(datum.substr(1,2), 10);
			if (test1 == NaN || test2 == NaN) {
				return;
			}				
			if (test1 < 32) {
				fmtdat = datum.substr(0, 2) + '.0' + datum.substr(2, 1) + '.' + jetzt.getFullYear();
			}
			else if (test2 < 13) {
				fmtdat = '0' + datum.substr(0, 1) + '.' + datum.substr(1, 2) + '.' + jetzt.getFullYear();
			}
			else {
				fmtdat = '0' + datum.substr(0, 1) + '.0' + datum.substr(1, 1) + '.';
				var jahr = jetzt.getFullYear();
				fmtdat += jahr.toString().substr(0, 2) + '0' + datum.substr(2, 1);
			}
			break;
				
		case 4:
			test1 = parseInt(datum.substr(0, 2), 10);
			test2 = parseInt(datum.substr(2, 2), 10);
			if (test1 == NaN || test2 == NaN) {
				return;
			}	
			if (test1 < 32) {
				if (test2 < 13) {
					fmtdat = datum.substr(0, 2) + '.' + datum.substr(2, 2) + '.' + jetzt.getFullYear();
				}
				else {
					fmtdat = datum.substr(0, 2) + '.0' + datum.substr(2, 1) + '.';
					var jahr = jetzt.getFullYear();
					fmtdat += jahr.toString().substr(0, 2) + '0' + datum.substr(3, 1);
				}
			}
			else {
				test2 = parseInt(datum.substr(1, 2), 10);
				if (test2 == NaN) {
					return;
				}
				if (test2 < 13) {
					fmtdat = '0' + datum.substr(0, 1) + '.' + datum.substr(1, 2) + '.';
					var jahr = jetzt.getFullYear();
					fmtdat += jahr.toString().substr(0, 2) + '0' + datum.substr(3, 1);
				}
				else {
					fmtdat = '0' + datum.substr(0, 1) + '.0' + datum.substr(1, 1) + '.';
					test1 = parseInt(datum.substr(2, 2), 10);
			 		if (test1 < 32) {
			 			fmtdat += '20' + datum.substr(2, 2);
			 		}
			 		else {
			 			fmtdat += '19' + datum.substr(2, 2);
			 		}
				}
			}	 
			break;
				
		case 5:
			test1 = parseInt(datum.substr(0, 2), 10);
			test2 = parseInt(datum.substr(2, 2), 10);
			if (test1 == NaN || test2 == NaN) {
				return;
			}	
			if (test1 < 32) {
				if (test2 < 13) {
					fmtdat = datum.substr(0, 2) + '.' + datum.substr(2, 2) + '.';
					var jahr = jetzt.getFullYear();
					fmtdat += jahr.toString().substr(0, 2) + '0' + datum.substr(4, 1);
				}
				else {
					fmtdat = datum.substr(0, 2) + '.0' + datum.substr(2, 1) + '.';
					test1 = parseInt(datum.substr(3, 2), 10);
			 		if (test1 < 32) {
			 			fmtdat += '20' + datum.substr(3, 2);
			 		}
			 		else {
			 			fmtdat += '19' + datum.substr(3, 2);
			 		}
				}
			}
			else {
				fmtdat = '0' + datum.substr(0, 1) + '.' + datum.substr(1, 2) + '.';
				test1 = parseInt(datum.substr(3, 2), 10);
		 		if (test1 < 32) {
		 			fmtdat += '20' + datum.substr(3, 2);
		 		}
		 		else {
		 			fmtdat += '19' + datum.substr(3, 2);
		 		}
			}
			break;
			
		case 6:
			fmtdat = datum.substr(0, 2) + '.' + datum.substr(2, 2) + '.';
			test1 = parseInt(datum.substr(4, 2), 10);
	 		if (test1 < 32) {
	 			fmtdat += '20' + datum.substr(4, 2);
	 		}
	 		else {
	 			fmtdat += '19' + datum.substr(4, 2);
	 		}
			break;
			
		case 7:
			fmtdat = datum.substr(0, 2) + '.' + datum.substr(2, 2) + '.';
			test1 = parseInt(datum.substr(5, 2), 10);
	 		if (test1 < 32) {
	 			fmtdat += '20' + datum.substr(5, 2);
	 		}
	 		else {
	 			fmtdat += '19' + datum.substr(5, 2);
	 		}
			break;
			
		case 8:
			fmtdat = datum.substr(0, 2) + '.' + datum.substr(2, 2) + '.' + datum.substr(4, 4);
			break;
	}

	return fmtdat;
}

function parseTime(zeit) {
	var fmtts = '';
	var test1 = 0;
	var test2 = 0;
	
	zeit = zeit.toString();
	
	if (zeit.length == 0) {
		return zeit;
	}

	switch (zeit.length) {		
		case 1:
			fmtts = '0' + zeit + ':00:00';
			break;
			
		case 2:
			test1 = parseInt(zeit, 10);
			if (test1 == NaN) {
				return;
			}				
			if (test1 < 25) {
				fmtts = zeit + ':00:00';
			}
			else {
				fmtts = '0' + zeit.substr(0, 1) + ':0' + zeit.substr(1, 1) + ':00';
			}
			break;
			
		case 3:
			test1 = parseInt(zeit.substr(0,2), 10);
			test2 = parseInt(zeit.substr(1,2), 10);
			if (test1 == NaN || test2 == NaN) {
				return;
			}				
			if (test1 < 25) {
				fmtts = zeit.substr(0, 2) + ':0' + zeit.substr(2, 1) + ':00';
			}
			else if (test2 < 60) {
				fmtts = '0' + zeit.substr(0, 1) + ':' + zeit.substr(1, 2) + ':00';
			}
			else {
				fmtts = '0' + zeit.substr(0, 1) + ':0' + zeit.substr(1, 1) + ':0' + zeit.substr(2, 1);
			}
			break;
				
		case 4:
			test1 = parseInt(zeit.substr(0, 2), 10);
			test2 = parseInt(zeit.substr(2, 2), 10);
			if (test1 == NaN || test2 == NaN) {
				return;
			}	
			if (test1 < 25) {
				if (test2 < 60) {
					fmtts = zeit.substr(0, 2) + ':' + zeit.substr(2, 2) + ':00';
				}
				else {
					fmtts = zeit.substr(0, 2) + ':0' + zeit.substr(2, 1) + ':0' + zeit.substr(3, 1);
				}
			}
			else {
				test2 = parseInt(zeit.substr(1, 2), 10);
				if (test2 == NaN) {
					return;
				}
				if (test2 < 60) {
					fmtts = '0' + zeit.substr(0, 1) + ':' + zeit.substr(1, 2) + ':0' + zeit.substr(3, 1);
				}
				else {
					fmtts = '0' + zeit.substr(0, 1) + ':0' + zeit.substr(1, 1) + ':' + zeit.substr(2, 2);
				}
			}	 
			break;
				
		case 5:
			test1 = parseInt(zeit.substr(0, 2), 10);
			test2 = parseInt(zeit.substr(2, 2), 10);
			if (test1 == NaN || test2 == NaN) {
				return;
			}	
			if (test1 < 25) {
				if (test2 < 60) {
					fmtts = zeit.substr(0, 2) + ':' + zeit.substr(2, 2) + ':0' + zeit.substr(4, 1);
				}
				else {
					fmtts = zeit.substr(0, 2) + ':0' + zeit.substr(2, 1) + ':' + zeit.substr(3, 2);
				}
			}
			else {
				fmtts = '0' + zeit.substr(0, 1) + ':' + zeit.substr(1, 2) + ':' + zeit.substr(3, 2);
			}
			break;
			
		case 6:
			fmtts = zeit.substr(0, 2) + ':' + zeit.substr(2, 2) + ':' + zeit.substr(4, 2);
			break;			
	}

	return fmtts;
}

function fillDate(sFormName, theField) {
	var theForm = eval('document.' + sFormName);
	var datum = theForm.elements[theField].value.toString();
	
	if (datum.indexOf('.') == -1) {
		datum = parseDate(datum);
	}
				
	datum = datum.split('.');
	if (datum.length < 2 || datum.length > 3) {
		return;
	}

	var jetzt = new Date();
	var filled = new Array(3);
	
	if (datum.length == 2) {	
		filled[2] = jetzt.getFullYear();
	}
	else {
	 	if (datum[2].length == 2) {
	 		var chk = parseInt(datum[2]);
	 		if (chk < 32) {
	 			datum[2] = '20' + datum[2];
	 		}
	 		else {
	 			datum[2] = '19' + datum[2];
	 		}
	 	} 	
		filled[2] = datum[2];
	}

	filled[0] = ((datum[0].length == 1) ? '0' + datum[0] : datum[0]);
	filled[1] = ((datum[1].length == 1) ? '0' + datum[1] : datum[1]);
	
	var jahr = parseInt(filled[2], 10);
	var monat = parseInt(filled[1], 10) - 1;
	var tag = parseInt(filled[0], 10);
	var d = new Date(jahr, monat, tag);
 	 	
 	if (d.getDate() == tag && d.getMonth() == monat && d.getFullYear() == jahr) {
		theForm.elements[theField].value = filled[0] + '.' + filled[1] + '.' + filled[2];
	}	
}

function fillTime(sFormName, theField) {
	var theForm = eval('document.' + sFormName);
	var zeit = theForm.elements[theField].value.toString();
	
	if (zeit.indexOf(':') == -1) {
		zeit = parseTime(zeit);
	}
				
	zeit = zeit.split(':');
	if (zeit.length < 2 || zeit.length > 3) {
		return;
	}

	var filled = new Array(3);
	
	if (zeit.length == 2) {
		filled[2] = '00';
	}
	else {
		filled[2] = ((zeit[2].length == 1) ? '0' + zeit[2] : zeit[2]);
	}

	filled[0] = ((zeit[0].length == 1) ? '0' + zeit[0] : zeit[0]);
	filled[1] = ((zeit[1].length == 1) ? '0' + zeit[1] : zeit[1]);
	
	// Sonderfall 24:00:00
	if (filled[0] == '24' && filled[1] == '00' && filled[2] == '00') {
		theForm.elements[theField].value = filled[0] + ':' + filled[1];
	}
	else {
		var stunden = parseInt(filled[0], 10);
		var minuten = parseInt(filled[1], 10);
		var sekunden = parseInt(filled[2], 10);
		var d = new Date(2003, 0, 1, stunden, minuten, sekunden);
 	 	if (d.getHours() == stunden && d.getMinutes() == minuten && d.getSeconds() == sekunden) {
			theForm.elements[theField].value = filled[0] + ':' + filled[1]; // + filled[0]
		}
	}
}

function checkEmail(email) {
	var proto  = "(mailto:)?";
  	var usr    = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
  	var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
  	var regex  = "^" + proto + "?" + usr + "\@" + domain + "$";
  	var rgx = new RegExp(regex);
  	return rgx.exec(email) ? true : false;
}
