var CalendarObjFrom = null;
var CalendarObjTo = null;
var CalendarObjBRWR = null;

function initAdjudicationCalendar() {
  if (CalendarObjFrom == null) {  
	  CalendarObjFrom = Calendar.setup(
		{
			"inputField":"searchperiodfrom",
			"button":"buttondatefrom",
			"ifFormat":"%d.%m.%Y",
			"align":"Tl"
	    }
	  );
  }
  
  if (CalendarObjTo == null) {  
	  CalendarObjTo = Calendar.setup(
		{
			"inputField":"searchperiodto",
			"button":"buttondateto",
			"ifFormat":"%d.%m.%Y",
			"align":"Tl" 
	    }
	  );
  }
}

function initBRWRCalendar() {
  if (CalendarObjBRWR == null) {  
	  CalendarObjBRWR = Calendar.setup(
		{
			"inputField":"brwr_datum",
			"button":"buttondatum",
			"ifFormat":"%d.%m.%Y",
			"align":"Br"
	    }
	  );
  }
}

/********************************************/
function setRequestSync(url, parameters) {
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.open("POST", url, false);
		try {
			req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			req.setRequestHeader("Content-length", parameters.length);
			req.setRequestHeader("Connection", "close");
			req.send(parameters);
			return req.responseText;
		}
		catch(e) {
			if (e.name == 'NS_ERROR_FILE_NOT_FOUND') {
				alert('Serverskript nicht vorhanden: ' + url);
			}
		}
	}
	else {
		if (window.ActiveXObject) {
			req = new ActiveXObject("Microsoft.XMLHTTP");
			if (req) {
				req.open("POST", url, false);
				try {
					req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
					req.setRequestHeader("Content-length", parameters.length);
					req.setRequestHeader("Connection", "close");		
					req.send(parameters);
					return req.responseText;
				}
				catch(e) {
					if (e.name == 'NS_ERROR_FILE_NOT_FOUND') {
						alert('Serverskript nicht vorhanden: ' + url);
					}
				}
			}
		}
	}
}

function parseJSON(res) {
	try {
		obj = eval(res);
		for (var i in obj) {
			var html = decodeURIComponent(obj[i]);
			var el = document.getElementById(i);
			if (el != null) {      	
				el.innerHTML = html;
			}
			
			var script = "";
			var res = html.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function() {
				if (res !== null)
			    	script += arguments[1] + '\n';
				return '';
			});
		
			if (script != '') {
				if (window.execScript) {
					window.execScript(script)
				}
				else {
					window.setTimeout(script, 0);
				}
			}
		}
		return true;
	}
	catch(e) {
		alert('Parsing Fehler');
		alert(res);
		return false;
	}
}

function buildQuery() { 
	var query = ""; 
	for (var i=0; i<document.buchungsdaten.length; i++) {
		var el = document.buchungsdaten[i];
		switch (el.type) {
			case 'text':
				query += el.name + '=' + encodeURIComponent(el.value) + '&';
				break;
			case 'hidden':
				query += el.name + '=' + encodeURIComponent(el.value) + '&';
				break;
			case 'checkbox':
				if (el.checked) {
					query += el.name + '=' + encodeURIComponent(el.value) + '&';
				}
				break;
			case 'radio':
				if (el.checked) {
					query += el.name + '=' + encodeURIComponent(el.value) + '&';
				}
				break;
			case 'select-one':
				query += el.name + '=' + encodeURIComponent(el.value) + '&';
				break;
			case 'textarea':
				query += el.name + '=' + encodeURIComponent(el.value) + '&';
				break;				
		}
	}
	return query;
}
 
function doAction(url, isnew, dodelete) {
	var query = buildQuery();
	if (isnew) {
		query += 'newParticipant=1';
	}
	if (dodelete) {
		query += 'deleteParticipant=1';
	}	
	var res = setRequestSync(url, query);
	
	var result = parseJSON(res);
	if (!result) {
		res = setRequestSync(url, query);
		result = parseJSON(res);
	}

	return !result;
}
/********************************************/

function getClientWH() {
	var x,y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
		y = document.body.scrollHeight;
	}
	else // Explorer Mac;
	     //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
		y = document.body.offsetHeight;
	}
	
	return new Array(x, y);
}

function getWindowWH() {
  var x,y;
  if (self.innerHeight) // all except Explorer  
  {
	  x = self.innerWidth;
	  y = self.innerHeight;
  }
  else if (document.documentElement && document.documentElement.clientHeight)
	  // Explorer 6 Strict Mode
  {
	  x = document.documentElement.clientWidth;
	  y = document.documentElement.clientHeight;
  }
  else if (document.body) // other Explorers
  {
	  x = document.body.clientWidth;
	  y = document.body.clientHeight;
  }
 	return new Array(x, y);
}

function getScrollingWH() {
	var x,y;
	if (self.pageYOffset) // all except Explorer
	{	
		x = self.pageXOffset;
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{	
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}
 	return new Array(x, y);	
}

function doResizeLayer() {
  var element = document.getElementById('opaqueHideDiv');
  if (element != null && element.style.display == 'block') {
    element.style.width = '100%';
    element.style.height = '100%';
    var arrSize = getClientWH();
    var arrSizeWin = getWindowWH();
    element.style.width = parseInt(Math.max(arrSize[0], arrSizeWin[0])) + 'px';
    element.style.height = parseInt(Math.max(arrSize[1], arrSizeWin[1])) + 'px';
   }             
}

function checkHideDiv() {
  var arrSize = getClientWH();
  var arrSize1 = getWindowWH();
  var element = document.getElementById('opaqueHideDiv');
  if (element != null) {
    var w = Math.max(arrSize[0], arrSize1[0]);
    var h = Math.max(arrSize[1], arrSize1[1]);
    element.style.width = w + 'px';
    element.style.height = h + 'px';            
  }  
}

function setScreenCenter(divElement) {
  var top = 0;
  var h = parseInt(divElement.style.height);
  
  var arrSize = getWindowWH();  
  var arrScrolling = getScrollingWH();
  
  if (arrSize[1] > h) {
    top = Math.floor((arrSize[1] - h) / 2) + arrScrolling[1];
  }

  divElement.style.top = top + 'px';  
}

// ******************************************************************
// ******************************************************************

function scrollToTop() {
	window.scrollTo(0,0);
}

function showOverlay(link) {

	var element = document.getElementById('opaqueHideDiv');
	if (element != null) {
		element.style.display = 'block';     
	}
	
	var overlayDiv = document.getElementById('overlayBigDiv');
	if (overlayDiv != null) {
		setScreenCenter(overlayDiv);  
		overlayDiv.style.display = 'block';
	}  
				
	var overlayIFrame = document.getElementById('overlayIFrame');
	if (overlayIFrame != null) {
	  link = '/index.php/layout/set/tpo/' + link;
	  top['overlayIFrame'].location.href = link;
	}
	scrollToTop();
}

function showSOverlay(bestellnr, tab) {

	var element = document.getElementById('opaqueHideDiv');
	if (element != null) {
		element.style.display = 'block';     
	}
	
	var overlayDiv = document.getElementById('overlayBigDiv');
	if (overlayDiv != null) {
		setScreenCenter(overlayDiv);  
		overlayDiv.style.display = 'block';
	}  
				
	var overlayIFrame = document.getElementById('overlayIFrame');
	if (overlayIFrame != null) {
	  link = '/seminare/details/' + bestellnr + '/' + tab;
	  top['overlayIFrame'].location.href = link;
	}
	scrollToTop();
}

function closeOverlayDiv() {
	var element = document.getElementById('opaqueHideDiv');
	if (element != null) {
		element.style.display = 'none';     
	}

	var overlayDiv = document.getElementById('overlayBigDiv');
	if (overlayDiv != null) {
		overlayDiv.style.display = 'none';
	}  
}

function setOverlayTitle(title) {
	var titleDiv = top.document.getElementById('iframetitle');
	if (titleDiv != null) {
		if (title != '' && title != null) {
			titleDiv.innerHTML = 'Poko ' + title;
		}
	}
}

function showSmallOverlay(title, height, link, topPos) {
	var element = document.getElementById('opaqueHideDiv');
	if (element != null) {
		element.style.display = 'block';     
	}
	setSmallOverlayTitle(title);
		
	var heightDiv = document.getElementById('overlaySmallHeight');
	if (heightDiv != null) {
		heightDiv.style.height = height + 'px';
	}
		
	var overlayDiv = document.getElementById('overlaySmallDiv');
	if (overlayDiv != null) {
		setScreenCenter(overlayDiv);  
		overlayDiv.style.display = 'block';
		overlayDiv.style.top = topPos + 'px';
	}  
				
	var overlayDiv = document.getElementById('overlaySmallIFrame');
	if (overlayIFrame != null) {
	  top['overlaySmallIFrame'].location.href = link;
	}
	scrollToTop();
}

function showHolidaysCalandar(link) {
	showSmallOverlay('Ferienkalender', 400, link, 88);
}

function showCalendar(link) {
	showSmallOverlay('Kalender', 700, link, 88);
}

function showQuotenrechner(link) {
	showSmallOverlay('Quotenrechner', 350, link, 88);
}

function showBetriebsratswahlrechner(link) {
	showSmallOverlay('Betriebsratswahlrechner', 600, link, 0);
}

function closeSmallOverlayDiv() {
	var element = document.getElementById('opaqueHideDiv');
	if (element != null) {
		element.style.display = 'none';     
	}

	var overlayDiv = document.getElementById('overlaySmallDiv');
	if (overlayDiv != null) {
		overlayDiv.style.display = 'none';
	}
	
	var overlayDiv = document.getElementById('overlaySmallIFrame');
	if (overlayIFrame != null) {
	  top['overlaySmallIFrame'].location.href = '/layout/set/wait';
	}	  
}

function setSmallOverlayTitle(title) {
	var titleDiv = top.document.getElementById('smalliframetitle');
	if (titleDiv != null) {
		if (title != '' && title != null) {
			titleDiv.innerHTML = title;
		}
	}
}

function showAddedOverlay() {

	var element = document.getElementById('opaqueHideDiv');
	if (element != null) {
		element.style.display = 'block';     
	}
	
	var overlayDiv = document.getElementById('overlayProductAddedDiv');
	if (overlayDiv != null) {
		var arrScrolling = getScrollingWH();
		overlayDiv.style.top = (arrScrolling[1] + 100) + 'px';  
		overlayDiv.style.display = 'block';
	}
	//scrollToTop();
}

function closeAddedOverlayDiv() {
	var element = document.getElementById('opaqueHideDiv');
	if (element != null) {
		element.style.display = 'none';     
	}

	var overlayDiv = document.getElementById('overlayProductAddedDiv');
	if (overlayDiv != null) {
		overlayDiv.style.display = 'none';
	}  
}

function toggleTermine(id) {
	var el = document.getElementById('termine_' + id);
	if (el != null) {
		var klasse = el.className;
		if (klasse == 'inactive') {
			el.className = 'active';
		}
		else {
			el.className = 'inactive';
		}
	}
}

function toggleHeadingRow(el) {
	if (el != null) {
		var klasse = el.className;
		if (klasse == 'inactive') {
			el.className = 'active';
		}
		else {
			el.className = 'inactive';
		}
	}
}

function toggleList(id) {
	var el = document.getElementById('toggle-element_' + id);
	if (el != null) {
		var klasse = el.className;
		if (klasse == 'toggle-inactive') {
			el.className = 'toggle-active';
		}
		else {
			el.className = 'toggle-inactive';
		}
	}
}

function selectDuration(el) {
	if (el.id == 'duration_tp') {
		var el = document.getElementById('smoking_yes');
		el.disabled = true;
		el.checked = false;
		var el = document.getElementById('smoking_no');
		el.disabled = true;
		el.checked = false;
		var el = document.getElementById('barrierefrei');
		el.disabled = true;
		el.checked = false;
	}
	else {
		var el = document.getElementById('smoking_yes');
		el.disabled = false;
		var el = document.getElementById('smoking_no');
		el.disabled = false;
		var el = document.getElementById('barrierefrei');
		el.disabled = false;	
	}
}

function doAddProduct(nodeId) {
	var url = '/emajax/addproduct/' + nodeId;
	var res = setRequestSync(url, '');
	
	var result = parseJSON(res);
	if (!result) {
		res = setRequestSync(url, '');
		result = parseJSON(res);
	}

	if (result) {
		showAddedOverlay();
	}
	return !result;
}

function toggleBlock(el, id) {
	var content = document.getElementById(id);
	if (el.className == 'active') {
		el.className = 'inactive';
		content.style.display = 'none';
	}
	else {
		el.className = 'active';
		content.style.display = 'block';
	}
}

function rewriteClassById(id,newClass) {

	var e = document.getElementById(id);
	if(e) {
		e.setAttribute('className', newClass);
		e.setAttribute('class', newClass);
	}
}

function resetJSIsEnabledWrapper() {
	var e = null;
	if(e = document.getElementById('js_is_enabled_wrapper')) {
		e.setAttribute('className', 'js-enabled');
		e.setAttribute('class', 'js-enabled');
	}
}

function showEBForm(link) {
	var el = document.getElementById('express_buchung_form');
	if (el != null) {
		if (el.style.display == 'block') {
			el.style.display = 'none';
		}
		else {
			el.style.display = 'block';
		}
	}
}

function changeTeaser(dir) {
	if (winTeaserTO != null) {
		window.clearTimeout(winTeaserTO);
		winTeaserTO = null;
	}
	actTPOTeaserNr = actTPOTeaserNr + dir;
	if (actTPOTeaserNr < 0) {
		actTPOTeaserNr = 0;
	}
	if (actTPOTeaserNr >= tpoPool.length) {
		actTPOTeaserNr = tpoPool.length-1;
	}
	
	winTeaserTO = window.setTimeout('doAutomaticChange()', 10000);
	return doChangeTeaser();
}

function doChangeTeaser() {
	var rand = Math.floor(Math.random() * picPool.length);
	var newPic = picPool[rand];
	var el = document.getElementById('teaserPic');
	if (el != null) {
		el.src = newPic;
	}
	
	var obj = tpoPool[actTPOTeaserNr];
	var nEl = document.getElementById('tpo_name');
	if (nEl != null) {
		nEl.innerHTML = obj.d;
	}
	var lEl = document.getElementById('tpo_link');
	if (lEl != null) {
		lEl.href = obj.u;
	}
	
	var elT = document.getElementById("grad_link_left");
	if (elT != null) {
		if (actTPOTeaserNr <= 0) {
			elT.style.display = 'none';
		}
		else {
			elT.style.display = 'block';
			elT.href = orgNode + '/(tpo)/' + (actTPOTeaserNr-1);
		}
	}
	
	var elT = document.getElementById("grad_link_right");
	if (elT != null) {
		if (actTPOTeaserNr >= tpoPool.length-1) {
			elT.style.display = 'none';
		}
		else {
			elT.style.display = 'block';
			elT.href = orgNode + '/(tpo)/' + (actTPOTeaserNr+1); 
		}
	}
	
	return false;
}

function doAutomaticChange() {
	actTPOTeaserNr = Math.floor(Math.random() * tpoPool.length);
	doChangeTeaser();
	winTeaserTO = window.setTimeout('doAutomaticChange()', 5000);
}

function jumpTo(anchor) {
	window.location.href = "#"+anchor;
}

function doScroll(type) {
	var parentEl = document.getElementById('parent_slide_' + type);
	var l = parseInt(parentEl.style.left);
	l -= 15;
	if (l <= -300) {
		var el0 = document.getElementById('homepage_teaser_' + type + '_0');
		var textArray = window['teaserText_' + type];
		var linkArray = window['teaserLink_' + type];
		var act = window['teaserAct_' + type];
		l = 0; 
		el0.href = linkArray[act];
		el0.innerHTML = textArray[act];
	}
	else {
		window.setTimeout('doScroll(\'' + type + '\')', 10);
	}
	parentEl.style.left = l + 'px';
}

function scrollHomeTeaser(type) {
	var act = window['teaserAct_' + type];
	var textArray = window['teaserText_' + type];
	var linkArray = window['teaserLink_' + type];
	var max = textArray.length;
	if (max > 1) {
		act++;
		if (act >= max) {
			act = 0;
		}
		window['teaserAct_' + type] = act;
		
		var parentEl = document.getElementById('parent_slide_' + type);
		var el1 = document.getElementById('homepage_teaser_' + type + '_1');
		if (el1 != null && parentEl != null) {
			el1.href = linkArray[act];
			el1.innerHTML = textArray[act];
			parentEl.style.left = '0px';
			window.setTimeout('doScroll(\'' + type + '\')', 10);
		}
	}
	window.setTimeout('scrollHomeTeaser(\'' + type + '\')', 10000);
}

function showDates(id, el) {
	var arrE = document.getElementsByTagName('tr');
	for (var i=0; i<arrE.length; i++) {
		var e = arrE[i];
		var cssClass = e.className;
		var res = cssClass.search('closeable_' + id);
		if (res != -1) {
			try {
				e.style.display = 'table-row';
			}
			catch (ex) {
				e.style.display= "block";
			}
		}
	}
	
	if (el != null) {
		el.style.visibility = 'hidden';
	}
}