
window.addEvent('domready', function() {
	
	// Navigation
	
	var openNavElements = new Array();
	var clickLocked = false;
	
	var maximalHeight = 0;
	
	var dontClose = false;
	
	var addOpener = function(opener, box, boxinner) {
	
		if(!opener) return;
		if(!box) return;
		if(!boxinner) return;
		
		opener.box = box;
		opener.boxinner = boxinner;
		
		var heightUsed = parseInt(boxinner.offsetHeight);
		var padding = parseInt(boxinner.getComputedStyle('paddingBottom')) +  parseInt(boxinner.getComputedStyle('paddingTop'));
		
		if(heightUsed < 10) return;
		
		if(heightUsed > maximalHeight) {
			maximalHeight = heightUsed;
		}
		
		boxinner.setStyle('top', -maximalHeight);
		
		boxinner.fx = new Fx.Morph(boxinner, {
			duration: 500, 
			transition: Fx.Transitions.Quad.easeInOut, 
			wait: false
		});
		
		opener.close = function() {
			if(dontClose) return;
			clickLocked = true;
			boxinner.fx.start({
				top: -(maximalHeight + 40) 
			}).chain(function() {
				clickLocked = false;
			});
		}
		opener.open = function() {
			boxinner.setStyle('height', maximalHeight - padding);
			clickLocked = true;
			boxinner.fx.start({
				top: 2
			}).chain(function() {
				clickLocked = false;
			});
		}
		
		boxinner.getElements('a').each(function(a) {
			a.addEvent('click', function() {
				dontClose = true;
			});
		});
		
		openNavElements[openNavElements.length] = opener;
		
	}
	
	if($('navigation')) addOpener($('navigation'), $('navigationOpen'), $('navigationOpenInner')); 
	if($('loginfo')) addOpener($('loginfo'), $('loginfoOpen'), $('loginfoOpenInner')); 
	
	var opened = false;
	var blockCloseElement = $('header');
	
	openNavElements.each(function(opener) {
		
		var toggleAll = function(e) {
			 if(opened) closeAll();
			 else openAll();
		}
		
		var openAll = function(e) {
			opened = true;
			openNavElements.each(function(opener2) {
				opener2.open();
			});
		}
		
		var closeAll = function(e) {
			opened = true;
			if(e) {
				var target = e.relatedTarget;
				while(target) {
					if(target == blockCloseElement) return;
					if(!target.getParent) {
						break;
					}
					target = target.getParent();
				}
			}
			opened = false;
			openNavElements.each(function(opener2) {
				opener2.close();
			});
		}
		
		var toggleAllByClick = function(e) {
			if(clickLocked) return;
			toggleAll(e);
		}
		
		opener.addEvent('mouseenter', openAll);
		
		opener.addEvent('mouseleave', closeAll);
		opener.box.addEvent('mouseleave', closeAll);
		
		blockCloseElement.addEvent('mouseleave', closeAll);
		
		opener.addEvent('click', toggleAllByClick);
		opener.boxinner.addEvent('click', toggleAllByClick);
	});	
	
});

window.addEvent('load', function() {
	$$('.navigationHighlight').each(function(el) {
		return;
		var left = 0;
		var top = 0;
		
		if(el.getComputedStyle('position') == 'static') {
			el.setStyle('position', 'relative');
		}
		left = el.getPosition(el.getParent()).x;
		top = el.getPosition(el.getParent()).y;
		
		el.backgroundDiv = new Element('div', {
			styles: {
				position: 'absolute',
				left: left,
				top: top,
				width: el.getSize().x,
				height: el.getSize().y,
				zIndex: 5,
				backgroundColor: '#F1F1F1',
				opacity: 0
			}
		});
		el.setStyle('z-index', 6);
		el.backgroundDiv.inject(el.getParent());
		
		el.backgroundDiv.fx = new Fx.Morph(el.backgroundDiv, { duration:500, wait:false });
		el.addEvent('mouseenter', function() {
			el.backgroundDiv.fx.start({
				opacity: 1
			});
		});
		el.addEvent('mouseleave', function() {
			el.backgroundDiv.fx.start({
				opacity: 0
			});	
		});
	});
});
	
window.addEvent('domready', function() {
	
	// SlideDDShow
	$$('img').each(function(img) {
		var parent = img.getParent();
		if(parent.get('tag') == 'a' && parent.getAttribute('rel') && parent.getAttribute('rel').match(/lightbox/)) {
			var div = parent.getParent();
			if(div.slided) {
				return;
			}
			div.slided = true;
			new SlideDDShow(div, {
					glow: true,
					glowSize:40,
					margin: 0,
					bgColor: '#FFFFFF',
					arrowOpacity: 0.1,
					speed: 500,
					
					createTitleDisplay: function(slideDDShow) {
						var titletable = new Element('table');
						var titletablebody = new Element('tbody').inject(titletable);
						var tr = new Element('tr').inject(titletablebody);
						var td = new Element('td', { 
							'class': slideDDShow.options.cssPrefix + "_title_bg_a"
						}).inject(tr);
						td.set('html', slideDDShow.currentTitle);
						new Element('td', { 
							'class': slideDDShow.options.cssPrefix + "_title_bg_b"
						}).inject(tr);
						titletable.inject(slideDDShow.titlediv);
					},
					
					createTitleBar: function(slideDDShow) {
						var b = new Element('a', {
							'class': 'sdd_close'	
						});
						b.addEvent('click', slideDDShow.close.bind(slideDDShow));
						b.inject(slideDDShow.titlebar);
					}
				});
		};
	});
	
	$$('.popopen').each(function(a) {
		a.addEvent('click', function(e) {
			new Event(e).stop();
			var href = a.href;
			href += href.indexOf('?') == -1 ? '?' : '&';
			href += 'opener=1';
			var width = 600;
			if(a.getAttribute('popwidth')) width = a.getAttribute('popwidth');
			var wind = window.open(href, "_blank", "width=" + width + ",height=800,scrollbars=yes");
			wind.focus();
		});
	});
	
	if(window.opener) {
		$$('.popclose').each(function(a) {
			a.addEvent('click', function(e) {
				new Event(e).stop();
				var href = a.href;
				window.opener.location.href = href;
				window.close();
			});
		});
	}
	
	$$('.help').each(function(a) {
		a.addEvent('click', function(e) {
			new Event(e).stop();
			var href = a.href;
			href += href.indexOf('?') == -1 ? '?' : '&';
			href += 'opener=1';
			var width = 600;
			if(a.getAttribute('popwidth')) width = a.getAttribute('popwidth');
			var wind = window.open(href, "window", "width=" + width + ",height=800,scrollbars=yes");
			wind.focus();
		});
	});
	
	// MenuCookies
	if($('sidemenu')) {
		$('sidemenu').getElements('a, span.file_link').each(function(a, i) {
	    	var openId = a.getAttribute('open');
	    	var ul = $(openId);     	
	    	if(openId == '' || !ul) {
	    		var img = new Element('img', {
		    		src: '/graphics/menu/page01.gif'	    		
		    	});
		    	img.injectBefore(a);
	    	}
	    	else {
	    		var status = ul.get('class').match(/menu_active/);
	    		var off = '/graphics/menu/plus01.gif';
		    	var onn = '/graphics/menu/minus01.gif';
		    	var img = new Element('img', {
		    		src: status ? onn : off,
		    		styles: {
		    			cursor: 'pointer',
		    			marginRight: 5
		    		}
		    	});
		    	img.addEvent('click', function() {
		    		if(ul.getStyle('display') == 'none') {
		    			ul.setStyle('display', 'block');
		    			img.src = onn; 
		    		}
		    		else {
		    			ul.setStyle('display', 'none');
		    			img.src = off;
		    		}
				});
		    	img.injectBefore(a);
		    }
	    });
	}
	
});


var openCal = null;

window.showCalendarEntry = function(id, entry, parent, pos, task) {
	if(openCal != null) {
		openCal.close();
	}
	
	var outer = new Element('div', {
		'class': 'calendarDisplay' + (task ? ' calendarDisplayTask' : ''),
		styles: {
			position: 'absolute',
			top: entry.getPosition(parent).y - 50
		}
	});
	outer.inject(parent);
	
	if(pos) {
		var left = 0;
	}
	else {
		var left = entry.getPosition(parent).x + entry.getSize().x / 2 - outer.getSize().x / 2;
		left = Math.max(0, left);
		left = Math.min(left, parent.getSize().x - outer.getSize().x);
	}
	
	outer.setStyle('left', left);
	
	outer.set('html', 'loading...');
	
	new Request({
		url: '/account/calendar.html?getDetails=' + id,
		method: 'get', 
		onSuccess: function(response) {
			outer.set('html', response);
			outer.getElement('.editmenow').addEvent('click', function(e) {
				new Event(e).stop();
				document.location.href = '/account/calendar.html?edit=' + id;
			});
			outer.getElement('.closemenow').addEvent('click', function(e) {
				new Event(e).stop();
				outer.close();
			});
		}
	}).send();
	
	outer.close = function() {
		outer.dispose();
		if(openCal == outer) {
			openCal = null;
		}
	}
	
	openCal = outer; 
}

