


function _log(value) {
	//return false;
	if (typeof(console) != 'undefined')
		console.log(value);
}

function jsonError(error) {
	switch (error['error']) {
		case 'loginrequired':
			LayerContainer.showLayer('layerlogin');
			break;
			
		default:
			if (error['html']) {
				var title = (error['title']) ? error['title'] : ( (error['success'] == false) ? 'Es sind Fehler aufgetreten' : 'Hinweis' );
				var msg = new Element('div');
				
				msg.setHTML( error['msgbox'] ? error['msgbox'] : error['html'] );
				if (error['success'] == false) {
					//if (error['errorBox'] == true) {
						msg.addClass('errorBox');
					//}
				} else{
					msg.addClass('infoBox infoBoxOK');
				}
				
				var buttonClose = $E('button', 'msgboxButtonClose');
				if (error['callBackFunction']) {
					//_log($E('button', 'msgboxButtonClose'));
					buttonClose.onclick = function() {
						eval(error['callBackFunction']);
					}
					if (error['callBackTitle'])
						buttonClose.setHTML(error['callBackTitle']);
				} else {
					buttonClose.onclick = function() {
						LayerContainer.hideLayer();
					}
				}
				
				msgBox(title, msg);
			} else if (error['htmlContent']) {
				LayerContainer.layerContent.setHTML(error['htmlContent']);
				LayerContainer.posLayer();
			} else {
				msgBox('Unbekannter Fehler', error);
			}
	}
}

function parseJson(responseString) {
	if (responseString.substr(0,4) != "JSON") {
		var response = {success: false, html: responseString};
		jsonError(response);
		return;
	} else {
		var parseCode = responseString.substr(4);
		var response = Json.evaluate(parseCode);
	}
	return response;
}

function getContent(layer, params, url, callBackFuntion, closeFunction) {

	if (typeof params != 'undefined')
		var postBody = params;
	else
		var postBody = {'getContent' : layer};

	if (typeof url == 'undefined') 
		var url = '/index.php';

	var req = new Ajax((url), { 
		method: 'post',
		postBody: postBody,
		onComplete: function(response) {
			var json = parseJson(response);
			if (json.success) {
				$('layer'+layer.toLowerCase()).setHTML(json.html);
				if (typeof callBackFuntion == 'function')
					callBackFuntion();
			} else {
				jsonError(json);
			}
			LayerContainer.posLayer();
		}
	});
	LayerContainer.showLayer('layer'+layer.toLowerCase(), true, closeFunction);
	req.request();	
}

function msgBox(title, content, callback, param) {
	$('msgboxTitle').setHTML(title);
	if ($type(content) == 'element') {
		$('msgboxContent').empty();
		content.injectInside('msgboxContent');
	} else {
		$('msgboxContent').empty();
		var div = new Element('div');
		div.setHTML(content);
		div.setStyle('padding','15px');
		div.injectInside('msgboxContent');
	}
	if ($type(callback) == 'function') {
	  $('msgboxButtonClose').addClass('hide');
	  $('msgboxButtonYesNo').removeClass('hide');
	  var b = $ES('button', $('msgboxButtonYesNo'));
	  b[0].onclick = msgBoxCB.bind({'callback':callback,'result':true,'param':param});
	  b[1].onclick = msgBoxCB.bind({'callback':callback,'result':false,'param':param});
	} else {
	  $('msgboxButtonClose').removeClass('hide');
	  $('msgboxButtonYesNo').addClass('hide');
	}
	LayerContainer.showLayer('layermsgbox');
}

function msgBoxCB() {
  //setTimeout('LayerContainer.hideLayer()', 100);
  LayerContainer.hideLayer(false, true);
  var self = this;
  setTimeout(function() {self.callback(self.result, self.param)}, 10);
}

/*
function showHelp(id) {
	var ns4up = (document.layers) ? 1 : 0
	var ie4up = (document.all) ? 1 : 0
	var xsize = screen.width
	var ysize = screen.height
	var width = 400
	var height = 300
	var xpos = (xsize-width)
	var ypos = 0
	var winHelp = window.open('help.php?id='+id, 'help', "scrollbars=yes,status=no,toolbar=no,location=no,directories=no,resizable=yes,menubar=no,width="+width+",height="+height+",screenX="+xpos+",screenY="+ypos+",top="+ypos+",left="+xpos);
	winHelp.focus();
}
*/


function popup(url) {
	var ns4up = (document.layers) ? 1 : 0
	var ie4up = (document.all) ? 1 : 0
	var xsize = screen.width
	var ysize = screen.height
	var width = 500
	var height = 500
	var xpos = (xsize-width)
	var ypos = 0
	var popup = window.open(url, 'popup', "scrollbars=yes,status=no,toolbar=no,location=no,directories=no,resizable=yes,menubar=no,width="+width+",height="+height+",screenX="+xpos+",screenY="+ypos+",top="+ypos+",left="+xpos);
	popup.focus();
}

function showDatePicker(element) {
	var element = $(element);
	if ($('datePickerDrop')) {
		var dtp = $('datePickerDrop');
		if (!dtp.hasClass('hide')) {
			dtp.empty();
			dtp.addClass('hide');
			hiddenIFrame.close();
			return;
		}
		var datePicker = new Calendar('datePickerDrop', 
				function(date){ 
					var uYear = parseInt(date.substr(0,4));
					var uMonth = date.substr(5,2);
					var uDay = date.substr(8,2);
					element.value = uDay + '.' + uMonth + '.' + uYear;
					showDatePicker(element);
				}
		);
		datePicker.setDate(element.value);
		dtp.removeClass('hide');
		dtp.setStyle('top', element.getTop().toInt() + 20 + 'px');
		dtp.setStyle('left', element.getLeft());
		//dtp.setStyle('width', element.getStyle('width').toInt() + 'px');
		//dtpParseDate(element.id);
		hiddenIFrame.init(dtp);
	}			
}
/*
var DatePicker = {
	calendar: new Calendar('datePickerDrop', function(ttt){ DatePicker.click(ttt); }),
	
	show: function() {
	
	},
	hide: function() {
		
	},
	click: function() {
		
	}
}
*/

/* tabs */
var tabs;
var lastI = 0;
var curI = 0;
var tabFX = [];
var tabBlocks;

function tabInit() {
	tabs = $$('.tabs div');
		
	if (tabs.length < 2) {
		if (tabs.length > 0) tabs[0].addEvent('click', stopEvent);
		return;
	}
	
	tabBlocks = $$('.tabscontent div.tabcontent');
	tabs.each(function(tab, i) {
		
		if (tab.title != '') {		
						
			tabFX[i] = new Fx.Style(tabBlocks[i], 'height', {duration:150, wait: false});
			if (i!=0) tabFX[i].hide();
	
			tab.addEvent('click', function(clickEV) {
				if (tab.className == "active") return stopEvent(clickEV);
	
				tabFX[lastI].start(0);
				lastI = i;
	
				tabFX[i].start(tabBlocks[i].scrollHeight);
	
				tabs.each(function(otherTab){otherTab.className = "";});
				tab.className = "active";
	
				return stopEvent(clickEV);
				
			});
			
			if (window.location.href.indexOf(tab.title) > 0) {
				curI = i;
			}		
			
		} // title
		
	});
	
	if (curI != 0)
		tabs[curI].fireEvent('click');	
	
}

function stopEvent(el) {
	if (!el)	
		return false;
	
	if (el.stopPropagation){
		el.stopPropagation();
		el.preventDefault();
	} else {
		el.returnValue = false;
		el.cancelBubble = true;
	}
	return false;
}



var hiddenIFrame = {
	
	iframe: null,
	
	init: function(layerID)	{
		// build hidden iframe into dom
		if (!window.ie6)	return;
		var layer = $(layerID);
		var iframe = new Element('iframe');
		iframe.id = '_hiddenIFrame';
		var newLeft = layer.getLeft();// - layer.getParent().getLeft();
		var newTop = layer.getTop();
		iframe.setStyles({ width: layer.offsetWidth + 'px', height: layer.offsetHeight + 'px', top: newTop + 'px', left: newLeft + 'px', 'z-index': '29', position: 'absolute', display: 'block', 'border': '0px', background: '#fff' });
		iframe.injectBefore(layerID);
		this.iframe = iframe.id;
	},
	
	close: function()	{
		if (this.iframe)	$('_hiddenIFrame').remove();
		this.iframe = null;
	}
	
};



var loginBox = {
	login: function(button) {
		//var button = $(button);
		var req = new Ajax('login.php', {
			method: 'post', 
			postBody: $('formLogin').toQueryString(),
			onComplete: function(response) {			
				var json = parseJson(response);
				if (json.success) {
					if (json.actions) {
						//LayerContainer.hideLayer();
						var actions = eval(json.actions[0]);
						actions();
					}
				} else {
					$('loginResponse').setHTML(json.html);
					for (elem in json.errorFields) {							
						if ($('formLogin' + elem))
							$('formLogin' + elem).addClass('error');
					}
					LayerContainer.shakeMe(-133);
				}
				//button.setHTML(button.title);
			}
		});		
		//$('loginResponse').empty();
		//button.setHTML('<img src="images/anim.gif" /> Bitte warten ...');
		req.request();
	},
	
	show: function() {
		LayerContainer.showLayer('layerlogin');
	}
}



var toggleBox = new Class({
	container: false,
	content: false,
	isopen: false,
	
	initialize: function(container) {
		this.container = $(container);
		//_log(this.container);
		if (this.container) {
			this.content = this.container.getFirst();
			this.isopen = this.container.getStyle('height') == 'auto';
		}
	},
	open: function() {
		if (this.isopen)
			return;
		this.toggle();
		
	},
	close: function() {
		if (!this.isopen)
			return;			
		this.toggle();
	},
	toggle: function() {
		//_log(this.isopen);
		if (this.isopen) {
			this.container.effect('height', {duration: 100, onComplete: this.toggleComplete.bind(this)}).custom(this.container.scrollHeight, 0);			
		} else {
			var height = this.container.offsetHeight;			
			this.container.setStyle('display', 'block');	//$('msgContainer').setStyle('display', 'block');
			var scrollHeight = this.container.scrollHeight;	//var scrollHeight = $('msgContainer').scrollHeight;
			this.container.setStyle('height', height + 'px');	//$('msgContainer').setStyle('height', height + 'px');
			this.content.setStyle('display', 'block');	//$('msgContainerContent').setStyle('display', 'block');			
			this.container.effect('height', {duration: 100, onComplete: this.toggleComplete.bind(this)}).custom(30);
			this.container.effect('opacity', {duration: 500}).start(0, 1);
		}
		
	},	
	toggleComplete: function() {		
		this.isopen = (this.isopen) ? false : true;
		if (!this.isopen) {
			//this.container.setStyle('height', 'auto');
			//this.container.setStyle('display', '');			
		} else {
			this.container.setStyle('height', 'auto');
		}
	}
		
});