/*  
* Version: 2008-05-06  
* Author: Tomasz Ulanowski <tomasz@ulanowski.info>
* All rights reserved.
*/
var initialExpandedMenu;
var abortRestoration;
Element.addMethods('DIV', {
	initDynMenu: function(el) {
		var menuItems, subs, i, j;
		
		// save initially expanded  menu nodes
		initialExpandedMenu = $$('.expanded');
		
		menuItems = el.childElements();
		for(i=0; i < menuItems.length; i++) {
			// set event handlers

			menuItems[i].onmouseover = function () {
				// clear initially expanded node for the first time (only!) 
				var initialState = true;
				for(j=0; j<initialExpandedMenu.length; j++ ) {
					initialState &= initialExpandedMenu[j].hasClassName('expanded');
				}
				if ( initialState ) {
					for(j=0; j<initialExpandedMenu.length; j++ ) {
						initialExpandedMenu[j].removeClassName('expanded');
					}
				}
				// expand this node
				subs = this.childElements();
				for(j=0; j<subs.length; j++) { 
					if (subs[j].tagName=='DIV') {
						subs[j].addClassName('expanded');
						subs[j].previous('A').addClassName('expanded');
					}
				}
				// abort restoring to initial state
				abortRestoration = true;
			} // onmouseover
			
			menuItems[i].onmouseout = function () {
				// collapse this node
				subs = this.childElements();
				for(j=0; j<subs.length; j++) { 
					if (subs[j].tagName=='DIV') {
						subs[j].removeClassName('expanded');
						subs[j].previous('A').removeClassName('expanded');
					}
				}
				
				// is this the last collapsed node?
				if ( $$('.expanded').length == 0 ) {
					// schedule initially expanded nodes restoration (if nothing new happens)
					abortRestoration = false;
					setTimeout(function() {
							if ( !abortRestoration && $$('.expanded').length == 0 ) { 
								for(j=0; j<initialExpandedMenu.length; j++ ) {
									initialExpandedMenu[j].addClassName('expanded');
								}
							}
						}, 3000);
				}
			} // onmouseout
			
			// recursively init child nodes
			subs = menuItems[i].childElements();
			for(j=0; j<subs.length; j++) { 
				if (subs[j].tagName=='DIV') {
					subs[j].initDynMenu();
				}
			}
		}
	}
});

function initSelector(select, idPrefix) {
	select.onchange = function updateSelector () {
		select.childElements().each(function(item) {
			if(item.selected) 
				$(idPrefix + item.value).show(); 
			else 
				$(idPrefix + item.value).hide();
		}); 
	}
	select.onchange();
}

/* temporary copy title attribute to the text field value */
document.observe("dom:loaded", function() {
	$$('input[title]').each(function(item) {
		// copy from title to value
		if (item.value == '') {
			item.value = item.title;
			if (item.type == 'password') {
				item.type = 'text';
				item.revertToPassword = true;
			}
		} // if 
		// set focus and blur event handlers
		Event.observe(item, 'focus', function() {
			if (this.value == item.title) {
				this.value = '';
				if (this.revertToPassword) this.type = 'password';
			} 
			//new Effect.Highlight(this, {startcolor:'#eeeeee', endcolor:'#ffffff'})
		}); //Event.observe
		Event.observe(item, 'blur', function() {
			if (this.value == '') {
				this.value = item.title;
				if (this.revertToPassword) this.type = 'text';
			}
		}); //Event.observe
	});
});

/* dynamic tabs initialize */
var dyntabs = new Hash();
document.observe("dom:loaded", function() {
	$$('a[rel]').each(function(item) {
		var tabDivId, tabId, tabsArray;
		if ( tabId = item.rel.match(/^dyntabs\[(.*)\]$/) ) if (tabId = tabId[1]) {
			if ( !(tabsArray = dyntabs.get(tabId)) ) tabsArray = dyntabs.set(tabId, new Array());
			tabsArray.push(item);

			if ( tabDivId = item.href.split('#') ) if (tabDivId = tabDivId[1]) {
				
				if ( item.hasClassName('selected') ) {
					if ( $(tabDivId) ) $(tabDivId).show();
				}
				else {
					if ( $(tabDivId) ) $(tabDivId).hide();
				}
	
				item.onclick = function () {
					dyntabs.get(tabId).each(function(sel) {
						var tab;
						if ( tab = sel.href.split('#') ) if (tab = tab[1]) {
							//alert(tab);
							if ( sel === item) {
								sel.addClassName('selected');
								if ( $(tab) ) $(tab).show();
							}
							else {
								sel.removeClassName('selected');
								if ( $(tab) ) $(tab).hide();
							}
						}
					});
					return false; 
				} // onclick
				
				Event.observe(item, 'focus', function () 
				{
					this.blur();
				}); // onfocus

			
			} 
			
		} // if
	}); // each
});

/* switching selected className */
Element.addMethods({
	setSelectedInGroup: function(el, group) {
		group.each(function (item) {
			if ( el === item ) {
				item.addClassName('selected');
			}
			else {
				item.removeClassName('selected');
			}
		});
	}
});

var currentFont=4;
function increaseFont()
{
	if(currentFont<9)
		setFontSize(currentFont+1);
}
function decreaseFont()
{
	if(currentFont>0)
		setFontSize(currentFont-1);
}
function setFontSize(size)
{
	
	if($('midPane').hasClassName('A'+currentFont))
		$('midPane').removeClassName('A'+currentFont);
	$('midPane').addClassName('A'+size);
	currentFont=size;
}


var Slideshow = { 
	currentSlide: 0,
	slides: null,
	startup: function(selector, cycletime) { 
		Slideshow.slides = $$(selector);
		Slideshow.slides.each(Element.hide);
		new Effect.Appear(Slideshow.slides[Slideshow.currentSlide], {  
			duration: 1, 
			fps: 50
		}); 
		new PeriodicalExecuter(Slideshow.cycle, cycletime=5) 
	}, 
	cycle: function() {
		new Effect.Fade(Slideshow.slides[Slideshow.currentSlide], {  
			duration: 1, 
			fps: 50, 
			afterFinish: function() {
				Slideshow.currentSlide = ++Slideshow.currentSlide %  Slideshow.slides.length;
				new Effect.Appear(Slideshow.slides[Slideshow.currentSlide], {
					duration: 1,
					fps: 50,
					queue:'end'
				})
			}	
		})
	} 
} 
