/************************************
 * Datei      	:   cool_confirm.js
 * Projekt   	:   emisweb
 * Beschreibung	:	alert-Methode
 * Author    	:   mario alves/511
 ************************************/


// BASE
var	UserAgent =	{};

if (navigator.userAgent.indexOf('AppleWebKit') > -1) {
	UserAgent.WEBKIT = true;
}
else if	(navigator.userAgent.indexOf('Opera') >	-1)	{
	UserAgent.OPERA	= true;
	UserAgent.VERSION =	navigator.userAgent.match(/Opera.(\d)/)[1];
}
else if	(navigator.userAgent.indexOf('KHTML') >	-1)	{
	UserAgent.KHTML	= true;
}
else if	(navigator.userAgent.indexOf("Gecko") >	-1)	{
	UserAgent.GECKO	= true;
}
else if	(navigator.userAgent.indexOf("MSIE") > -1) {
	UserAgent.MSIE = true;
	if (window.XMLHttpRequest) {
		UserAgent.VERSION = 7;
	}
	else {
		UserAgent.VERSION = 6;
	}
}


// bug in effects.js
Element.setOpacity = function(element, value){
  element= $(element);
  if (value	== 1){
	Element.setStyle(element, {	opacity:
	  (/Gecko/.test(navigator.userAgent) &&	!/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ?
	  0.999999 : 1 });
	if(/MSIE/.test(navigator.userAgent))
	  Element.setStyle(element,	{filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});
  }	else {
	if(value < 0.00001)	value =	0;
	Element.setStyle(element, {opacity:	value});
	if(/MSIE/.test(navigator.userAgent))
	 Element.setStyle(element,
	   { filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')	+
				 'alpha(opacity='+value*100+')'	});
  }
};


Position.getViewPortBounds =
	function() {
	var	left;
	var	top;
	var	width;
	var	height;

	if (UserAgent.OPERA || UserAgent.WEBKIT) {
		left = self.pageXOffset;
		top	= self.pageYOffset;
		width = window.innerWidth;
		height = window.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) {
		left = document.documentElement.scrollLeft;
		top	= document.documentElement.scrollTop;
		width =	document.documentElement.clientWidth;
		height = document.documentElement.clientHeight;
	}
	else if (document.body) {
		left = document.body.scrollLeft;
		top = document.body.scrollTop;
		width = document.body.clientWidth;
		height = document.body.clientHeight;
	}

	return { left: left, top: top, width: width, height: height	};
	};


var Overlay = {
	start:
	function(options) {
		this.options = options || {};
		if (UserAgent.MSIE)	{
			var	selects	= document.getElementsByTagName('select');
			for	(i = 0;	i <	selects.length;	i++) {
				selects[i].style.visibility	= 'hidden';
			}
		}
		if (!this.overlay) {
			this.refreshDisplayEL = this.refreshDisplay.bind(this);
			this.overlay = document.createElement('div');
			this.overlay.id = 'modal-background';
			this.overlay.className = 'modal-background';
			document.body.appendChild(this.overlay);
		}
		Element.setStyle(this.overlay, { visibility: 'hidden', width: '0', height: '0', display: '' });

		this.refreshDisplay();
		Element.setStyle(this.overlay, { visibility: '' });		

		Event.observe(window, 'resize', this.refreshDisplayEL);
		Event.observe(window, 'scroll', this.refreshDisplayEL);
	},
	
	stop:
	function() {
		Event.stopObserving(window, 'resize', this.refreshDisplayEL);
		Event.stopObserving(window, 'scroll', this.refreshDisplayEL);
		Element.hide(this.overlay);
		if (UserAgent.MSIE)	{
			var	selects	= document.getElementsByTagName('select');
			for	(i = 0;	i <	selects.length;	i++) {
				selects[i].style.visibility	= '';
			}
		}
	},

	refreshDisplay:
	function() {
		var	vB = Position.getViewPortBounds();
		Element.setStyle(this.overlay, { width: (vB.left + vB.width) + 'px', height: (vB.top + vB.height) + 'px' });
		if (this.options.dialog) {
			var left = (vB.left + ((vB.width - this.options.dialog.offsetWidth) / 2));
			var top = (vB.top + ((vB.height - this.options.dialog.offsetHeight) / 2));
			if (left < 0) left = 0;
			if (top < 0) top = 0;
			Element.setStyle(this.options.dialog, { left:  left + 'px', top: top + 'px' });
		}
	}
};

// callback
var	do_confirm;

function cool_confirm(args)	{
	if (!args['id']) {
		if (!cool_confirm.initalized) {
			cool_confirm.initalized = true;
			cool_confirm.okLabel = document.getElementById('modal-window:ok_label').innerHTML;
			cool_confirm.cancelLabel = document.getElementById('modal-window:cancel_label').innerHTML;
		}
		else {
			document.getElementById('modal-window:title').innerHTML = '';
			document.getElementById('modal-window:text').innerHTML = '';
			document.getElementById('modal-window:ok_label').innerHTML = cool_confirm.okLabel;
			document.getElementById('modal-window:cancel_label').innerHTML = cool_confirm.cancelLabel;
			document.getElementById('modal-window:title').style.backgroundImage = 'url(../bilder/icn_help.gif)';
		}
	}
	var	id		= args['id'] ||	'modal-window';
	var	element	= args['element'];
	var	op		= args['op'];
	var	href		= args['href'];
	var	callback	= args['callback'];

	do_confirm = _do_confirm;

	var	modalWindow	= document.getElementById(id);
	modalWindow.className =	'modal-window';
	Element.setStyle(modalWindow, {	visibility:	'hidden', position:	'absolute',	left: '0', top:	'0', display: '' });
	if (modalWindow.parentNode != document.body) document.body.appendChild(modalWindow);

	if (args['icon']) {
		var	div	= document.getElementById(id + ':title');
		if (div) {
			div.style.backgroundImage =	'url(' + args['icon'] +	')';
		}
	}
	for	(var k in {	title: true, text: true, ok_label: true, cancel_label: true	}) {
		if (args[k]) {
			var	div	= document.getElementById(id + ':' + k);
			if (div) {
				div.innerHTML =	args[k];
			}
		}
	}

	Overlay.start({ dialog: modalWindow });
	Element.setStyle(modalWindow, {	visibility:	'' });

	var firstButton = modalWindow.getElementsByTagName('button')[0];
	if (firstButton) firstButton.focus();

	return false;

	function _do_confirm(returncode) {
		Element.hide(modalWindow);
		Overlay.stop();

		if (returncode)	{
			if (callback) {
				callback(returncode);
			}
			else if	(element) {
				if (element.tagName	== 'A')	{
					var	uriComponent;
					var	form = modalWindow.getElementsByTagName('form')[0];
					if (form) {
						uriComponent = Form.serialize(form);
					}
					else {
						uriComponent = '';
					}
					if(uriComponent)
					{
						location.href = element.href + '&' + uriComponent;
					}
					else
					{
						location.href = element.href;
					}
				}
				else if	(element.tagName == 'BUTTON' || element.tagName == 'INPUT') {
					if (element.type == 'submit') {
						if (op)	element.form.op.value = op;
						element.form.submit();
					}
					else if	(element.type == 'button' && href) {
						location.href = href;
					}
				}
			}
		}
	}
}

