/** Global MooTools additions **/
Element.implement({
	getSiblings: function(match) {
		return this.getParent().getChildren(match).erase(this);
	}
});

function slidemessage(flashmsg) {
	var msgfx = new Fx.Slide(flashmsg, {duration:800});
	msgfx.hide().slideIn().chain(function(){
    	this.slideOut.delay(2000, this);
	}).chain(function(){
		flashmsg.setStyle('display', 'none');
	});
}
var smallformshowing;
function showsmallform(formurl, timedout, removeoverlay) {
	$$('.item object,.item embed').each(function(obj) {
		obj.setStyle('visibility', 'hidden');
	});
	if (document.body.hasChild('sfloader')) {
		$('sfloader').setStyle('display', 'none');
	}
	var onlyform = false;
	var suboverlay;
	var subformpage;
	if (!document.body.hasChild('ddoverlay')) {
		suboverlay = new Element('div', {'id': 'ddoverlay'}).injectInside(document.body).setStyles({
			'height': window.getScrollSize().y,
			'opacity': 0
		});
	} else {
		suboverlay = $('ddoverlay');
	}
	if (!suboverlay.getStyle('opacity')) {
		onlyform = true;
		suboverlay.fade(0.8);
	}
	if (!document.body.hasChild('overlaypage')) {
		subformpage = new Element('div', {'id': 'overlaypage', 'class':'overlaypage'}).injectInside(document.body)
	} else {
		subformpage = $('overlaypage');
	}
	subformpage.set('text', '').setStyles({
		'display': 'block',
		'top': window.getScrollTop() + window.getHeight()/2 -100,
		'height': 200,
		'left': window.getWidth()/2 - 250,
		'width': 500
	});
	var showformRequest = new Request.HTML({
		update: subformpage,
		evalScripts: false,
		onComplete: function(rtree, relements, rhtml, rjscript){
			if ($('user_login') != null) {
				$('user_login').focus();
			}
			if (timedout != null) {
				new Element('p', {
					'class': 'error',
					'text' : 'For your security, you have been logged out due to inactivity.'
				}).inject($('blueink-login-box'), 'top');
			}
			new Element('input', {
				'type': 'hidden',
				'name': 'data[extra][v2inline]',
				'value': cakeurl
			}).injectInside(subformpage.getElement('form'));
			$$('.item-cancel').each(function(cancelbutton){
				cancelbutton.addEvents({
					'click': function(e) {
						smallformshowing = false;
						subformpage.setStyle('display', 'none');
						suboverlay.fade(0);
						$$('.item object,.item embed').each(function(obj) {
							obj.setStyle('visibility', 'visible');
						});
					}
				});
			});
			document.addEvent('keydown', function(event) {
				if (event.key == 'esc') $$('.item-cancel')[0].fireEvent('click');
			});
			subformpage.getElement('form').addEvent('submit', function(e){
				subformpage.setStyle('display', 'none');
				new Element('div', {'id': 'sfloader'}).injectInside(document.body).set('text', 'logging in...').setStyles({
					'display': 'block',
					'top': 100,
					'left': window.getWidth()/2 - 200
				});
			});
		}
	}).get(formurl);
}
window.addEvent('domready', function() {
	$$('.message').each(slidemessage);
	smallformshowing = false;
	document.addEvent('keydown', function(e){
		if ($('adminmenu') == null && !smallformshowing && e.control && e.shift && e.key == 'l') {
			e.stop();
			smallformshowing = true;
			showsmallform(loginurl);
		}
	});
});
