function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function hoursum(arrObj) {
  var sum = parseFloat(0);
  for (var i = 0; i < arrObj.length; i++) {
    //z = parseFloat(arrObj[i].value.replace(/,/,"."));
	sum += Math.round(parseFloat(arrObj[i].value.replace(/,/,".")) * 100)/100;
    }
  return (sum);
  }

function sumcalcupdate (obj) {

var hourid = obj.id.match(/\d+$/);

var hourintern = document.getElementById("hourintern_" + hourid).value;
if (hourintern == '') {hourintern = 0;} else {hourintern = hourintern.replace(/,/,".");}
var hourextern = document.getElementById("hourextern_" + hourid).value;
if (hourextern == '') {hourextern = 0;} else {hourextern = hourextern.replace(/,/,".");}
var hourtravel = document.getElementById("hourtravel_" + hourid).value;
if (hourtravel == '') {hourtravel = 0;} else {hourtravel = hourtravel.replace(/,/,".");}

var rowsum = parseFloat(hourintern) + parseFloat(hourextern) + parseFloat(hourtravel);
rowsum = Math.round(rowsum * 100)/100;
document.getElementById("hoursum_" + hourid).value = rowsum.toString().replace(".",",");


var x = getElementsByClass("tt_hour_input_sum");
var y = hoursum(x);
y = y.toString().replace(".",",");

//document.getElementById("sum").value = y;
document.getElementById("sum_top").value = y;


}

function sumcalcinsert (obj) {

var hourid = obj.id.match(/\d+$/);

var hourintern = document.getElementById("hourintern_" + hourid).value;
if (hourintern == '') {hourintern = 0;} else {hourintern = hourintern.replace(/,/,".");}
var hourextern = document.getElementById("hourextern_" + hourid).value;
if (hourextern == '') {hourextern = 0;} else {hourextern = hourextern.replace(/,/,".");}
var hourtravel = document.getElementById("hourtravel_" + hourid).value;
if (hourtravel == '') {hourtravel = 0;} else {hourtravel = hourtravel.replace(/,/,".");}

var rowsum = parseFloat(hourintern) + parseFloat(hourextern) + parseFloat(hourtravel);
rowsum = Math.round(rowsum * 100)/100;
document.getElementById("hoursum_" + hourid).value = rowsum.toString().replace(".",",");

var x = getElementsByClass("tt_hour_input_sum");
var y = hoursum(x);
y = y.toString().replace(".",",");
//document.getElementById("sum").value = y;
document.getElementById("sum_top").value = y;

}


/***********************************************
* Disable "Enter" key in Form script- By Nurul Fadilah(nurul@REMOVETHISvolmedia.com)
* This notice must stay intact for use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

function handleEnter (field, event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if ((keyCode == 13) || (keyCode == 3)) {
			var i;
			for (i = 0; i < field.form.elements.length; i++)
				if (field == field.form.elements[i])
					break;
			i = (i + 1) % field.form.elements.length;
			field.form.elements[i].focus();
			return false;
		}
		else
		return true;
	}

function stundenzettelcancel (url) {
	var cancel = confirm ("Stundeneingabe abbrechen? Alle neuen Eingaben und Änderungen gehen verloren.");
	if (cancel) {
		location.href = url;
	}
}

function stundenzettelCancelClose () {
	var cancel = confirm ("Stundeneingabe abbrechen? Alle neuen Eingaben und Änderungen gehen verloren.");
	if (cancel) {
		opener.document.forms[0].target = '_self';
		opener.document.forms[0].action = '';
		window.close();
	}
}

function updatetime (url) {

	check = check_marked_checkboxes();

	if ( check == true ) {

		var x = document.getElementById("tt_form");
		var w = window.open('about:blank','Popup_Window','width=1100,height=700,scrollbars=yes,status=yes,resizable=yes,screenx=30,screeny=30');
		x.target = 'Popup_Window';
		x.action = url;
		x.submit();
		x.target = '';
		x.action = '';

	}

}

function submittime (url) {

	check = check_marked_checkboxes();

	if ( check == true ) {

		var cancel = confirm ("Markierte Stunden einreichen?");
		if (cancel) {

			var x = document.getElementById("tt_form");
			x.action = url;
			x.submit();

		}

	}

}

function deletetime (url) {

	check = check_marked_checkboxes();

	if ( check == true ) {

		var cancel = confirm ("Markierte Stunden wirklich löschen? \n\nEingereichte und exportierte Stunden können nicht gelöscht werden! ");
		if (cancel) {

			var x = document.getElementById("tt_form");
			x.action = url;
			x.submit();

		}

	}

}

// Generates a downloadable job report

function exporttime (url) {

	checkboxes = getElementsByClass('checkboxes');

	var status = false;

	for (var i = 0; i < checkboxes.length; i++) {
		if (checkboxes[i].checked == true) {
			status = true;
		}
	}

	if (status == true) {

		var cancel = confirm ("Report mit ausgewählten Stunden generieren?");
		if (cancel) {

			var x = document.getElementById("tt_form");
			var oldurl = x.action;
			x.action = url;
			x.submit();
			x.action = oldurl;

		}

	} else {
		alert('Es wurden keine Stunden ausgewählt!');
	}
}


function check_marked_checkboxes () {

	checkboxes = getElementsByClass('checkboxes');

	var status = false;

	for (var i = 0; i < checkboxes.length; i++) {
		if (checkboxes[i].checked == true) {
			status = true;
		}
	}

	if (status == true ) {

		return true;

	} else {

		alert('Es wurden keine Stunden ausgewählt!');
		return false;

	}

}

/* Checks if a string exists in an array, similar to php function in_array() */

function string_in_array(arrObj, string) {

	for (var i = 0; i < arrObj.length; i++) {
		if (arrObj[i].toLowerCase() == string.toLowerCase()) {

			return true;
		}
	}
	return false;
}


// inline confirm url

function inline_confirm_url (url,top_text_content,content_text_content) {

	var top_text = document.getElementById('js_inline_box_top_text');
	top_text.innerHTML = top_text_content;

	var content_text = document.getElementById('js_inline_box_content');
	content_text.innerHTML = content_text_content;

	var confirm_button_url = document.getElementById('confirm_button_url');
	confirm_button_url.style.display = 'inline';
	confirm_button_url.href = url;

	var confirm_button_action = document.getElementById('confirm_button_action');
	confirm_button_action.style.display = 'none';

	var confirm_button = document.getElementById('confirm_button');
	confirm_button_action.style.display = 'none';

	showdeadcenterdiv (400,300,'inline_confirmation_box_wrapper');

	var wrapper = document.getElementById('inline_confirmation_box_wrapper');
	wrapper.style.display = 'block';

}



// inline confirm action

function inline_confirm_action (form,url,top_text_content,content_text_content) {


	var top_text = document.getElementById('js_inline_box_top_text');
	var content_text = document.getElementById('js_inline_box_content');
	var confirm_button_action = document.getElementById('confirm_button_action');
	var form_to_submit = document.getElementById(form);
	var clipboard = document.getElementById('inline_clipboard');
	var confirm_button_url = document.getElementById('confirm_button_url');
	var wrapper = document.getElementById('inline_confirmation_box_wrapper');

	var confirm_button = document.getElementById('confirm_button');
	confirm_button_action.style.display = 'none';


	checkboxes = getElementsByClass('checkboxes');

	var status = false;

	for (var i = 0; i < checkboxes.length; i++) {
		if (checkboxes[i].checked == true) {
			status = true;
		}
	}


	if (status == true) {

		top_text.innerHTML = top_text_content;
		content_text.innerHTML = content_text_content;
		confirm_button_action.style.display = 'inline';
		clipboard.value = form_to_submit.action;
		form_to_submit.action = url;
		confirm_button_url.style.display = 'none';
		showdeadcenterdiv (400,300,'inline_confirmation_box_wrapper');
		wrapper.style.display = 'block';

	} else {


		top_text.innerHTML = 'Achtung!';
		content_text.innerHTML = 'Keine Datensätze markiert!';
		confirm_button_action.style.display = 'none';
		confirm_button_url.style.display = 'none';
		showdeadcenterdiv (400,300,'inline_confirmation_box_wrapper');
		wrapper.style.display = 'block';

	}


}


function hide_confirmation_box () {

	var clipboard = document.getElementById('inline_clipboard');

	if (clipboard.value != '') {
		document.forms[0].action = clipboard.value;
	}

	var wrapper = document.getElementById('inline_confirmation_box_wrapper');
	wrapper.style.display = 'none';

}


function showdeadcenterdiv(Xwidth,Yheight,divid) {
	// First, determine how much the visitor has scrolled

	var scrolledX, scrolledY;
	if( self.pageYoffset ) {
		scrolledX = self.pageXoffset;
		scrolledY = self.pageYoffset;
	} else if( document.documentElement && document.documentElement.scrollTop ) {
		scrolledX = document.documentElement.scrollLeft;
		scrolledY = document.documentElement.scrollTop;
	} else if( document.body ) {
		scrolledX = document.body.scrollLeft;
		scrolledY = document.body.scrollTop;
	}

	// Next, determine the coordinates of the center of browser's window

	var centerX, centerY;
	if( self.innerHeight ) {
		centerX = self.innerWidth;
		centerY = self.innerHeight;
	} else if( document.documentElement && document.documentElement.clientHeight ) {
		centerX = document.documentElement.clientWidth;
		centerY = document.documentElement.clientHeight;
	} else if( document.body ) {
		centerX = document.body.clientWidth;
		centerY = document.body.clientHeight;
	}

	// Xwidth is the width of the div, Yheight is the height of the
	// div passed as arguments to the function:
	var leftoffset = scrolledX + (centerX - Xwidth) / 2;
	var topoffset = scrolledY + (centerY - Yheight) / 2;
	// The initial width and height of the div can be set in the
	// style sheet with display:none; divid is passed as an argument to // the function
	var o=document.getElementById(divid);
	var r=o.style;
	r.position='absolute';
	r.top = topoffset + 'px';
	r.left = leftoffset + 'px';
	r.display = 'block';
}