/*	blueV - fce_widgets.js
*	helpers for widgets, mostly supported by mootools.
*	090300	to@blue-v.de
*/	

function of_formReset () 
{
	var inputFields = $ES('input','of_form');
	for (var i=0;i < inputFields.length;i++) {
		inputFields[i].setProperty('value','');
		inputFields[i].setProperty('checked','');
	}
	var selectFields = $ES('select','of_form');
	for (var i=0;i < selectFields.length;i++) {
		options = $ES('option',selectFields[i]);
		for (var j=0;j<options.length;j++) {
			if (j==0) {options[j].setProperty('selected','selected'); }
			else {options[j].setProperty('selected','');}
		}
	}
}

function init_accordion(style) {
	startitem = '';
	switch (style) {

	case 'vertical':
	window.addEvent('domready', function() {
		var szNormal = 32, szSmall  = 32, szFull = 483;
		var kwicks = $$("#kwicks .kwick");
		var fx = new Fx.Elements(kwicks, {wait: false, duration: 2000, transition: Fx.Transitions.Back.easeOut});
		kwicks.each(function(kwick, i) {
			kwick.addEvent("mouseenter", function(event) {
				var o = {};
				o[i] = {width: [kwick.getStyle("width").toInt(), szFull]}
				$E('div',kwick).setStyle('display','block');
//				var fade = new Fx.Element ($E('div',kwick), {wait: false, duration: 800, transition: Fx.Transitions.Back.easeOut}).set(0);
				kwicks.each(function(other, j) {
					if(i != j) {
						var w = other.getStyle("width").toInt();
						$E('div',other).setStyle('display','none');
						if(w != szSmall) o[j] = {width: [w, szSmall]};
					}
				});
				fx.start(o);
			});
		});
		kwicks[0].fireEvent('mouseenter');
	 
/*
		$("kwicks").addEvent("mouseleave", function(event) {
			var o = {};
			kwicks.each(function(kwick, i) {
				o[i] = {width: [kwick.getStyle("width").toInt(), szNormal]}
			});
			fx.start(o);
		});
*/
	});
	break;
	
	case 'horizontal':
	default:
	window.addEvent('domready', function(){
		this.accordion = new Accordion('.toggler', '.element', {
		opacity: true,
	
		show: startitem,
		onActive: function(toggler, element){
			toggler.addClass('active');
		},

		onBackground: function(toggler, element){
			toggler.removeClass('active');
		}
  		}, $('accordion'));
  	});
	 break;
  } // switch
}

function init_togglebox() {
	window.addEvent('domready', function(){
		$$('.toggleGroupContent').setStyle('display', 'block');
		
		var selected = $('toggleSelected');
		var current = (selected) ? selected.getParent() : false;
	 
		$$('div.toggleGroup').each(function(div){
			var link = div.getElement('div');
			var block = link.getNext();
			var fx = new Fx.Slide(block);
			
			if (block != current) fx.hide();
			link.addEvent('click', function(){
				fx.toggle();
				reloadAccordion();
			});
		});
		//new SmoothScroll();
	});
	document.write('<style type="text/css" media="screen">div.toggleGroupContent{display: none}</style>');
}

function reloadAccordion() {
	this.accordion.display(1);
	setTimeout(function(){this.accordion.display(0);},500);
}


function init_tabs() {
	var tabs = $$('.tab');
	var pages = $$('.tabpage').setStyle('display','none');
	var pageVisible = $E('.tabpage').setStyle('display','block');
	var activeTab = $$('.activeTab');
	
	tabs.each(function(tab) {
		var page = $('tabpage_'+tab.getProperty('id'));
		var fx = new Fx.Styles(page ,{duration : 200, wait: false});
		tab.addEvent('click', function() {
			if ($$('.activeTab')!=null) {
				$$('.activeTab').removeClass('activeTab');
			}
			this.addClass('activeTab');
			var activeTab = this;
			
			pageVisible.setStyle('display','none');
			page.setStyle('display','block');
			page.setOpacity(0);
			fx.start ( {opacity:1} );
			pageVisible = page;

		});
	});
}

function init_mouseGallery() {
	window.addEvent('domready', function(){
		var mg = new MouseGallery($$('.mousegallery'));
	});
}

function init_tooltips() {
	window.addEvent('domready', function(){
		var tooltips = new Tips($$('.tooltip'), {
			initialize:function(){
				this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
			},
			onShow: function(toolTip) {
				this.fx.start(0.8);
			},
			onHide: function(toolTip) {
				this.fx.start(0);
			},
			fixed: true,
			maxTitleChars: 100,
			offsets: {'x': 185, 'y': 0}
//			offsets: {'x': 0, 'y': 0}
		});
	});
}

var MouseGallery = new Class({
	options: {	
	},
	
	initialize: function(elements, options){
		this.setOptions(options);
		$$(elements).each(this.build, this);
	},
	
	build: function (el) {
		el.addEvent('mousemove', function(event){
			this.locate(event,el);		
		}.bind(this));
	},
	
	locate: function(event,el){
	// 			var event = new Event();
			var mouseposition = event.clientX; // where is my mouse
			var images = $ES('.gallery_img',el); //found images as child elms. in DOM
			var images_no = images.length; // size of returned image array
			var elem_size_x = el.getSize().size.x; // size-x of rollover field 
			var elem_size_y = el.getSize().size.y; // size-y of rollover field 
			var elem_pos = el.getPosition().x; // x-pos of elem for relativation
			var elem_offset_y = el.getPosition().y;
			var elem_offset_y = '';
			var changeAfterPx = Math.round(elem_size_x / images_no)+0.1; // change images after x px
			var relpos = mouseposition - elem_pos+0.1;
			var act_image_no = Math.ceil((relpos / changeAfterPx))-1;
			var act_image_obj = images[act_image_no];
			
			for (i=0;i<images_no;i++) {
			if (i != act_image_no) {
				images[i].setStyle('position','absolute');
	 			images[i].setStyle('display','none');
	 			images[i].setOpacity(0);
	 		} else {
	 			images[i].setStyle('display','block');
	 			images[i].setStyle('z-index','998');
	
				// with fx
					if (images[i].getStyle('opacity')==0) {
					this.fx = new Fx.Style(images[i], 'opacity', {duration: 400, wait: false});
					this.fx.start(1);
				 }
				
	
				// without fx
				
				//images[i].setOpacity(1);
	 			images[i].setStyle('top',elem_offset_y);
	 			imageSizeY = $E('img',images[i]).getSize().size.y;
		// Korrektur der Höhen bei höheren Bilder - auskommentiert da Problem mit Tooltip, der von der Pos des Bildes abhängt und somit mitspringt	
	 	//		if (imageSizeY>elem_size_y) {
		// 			imageSizeX = $E('img',images[i]).getSize().size.x;
	 	//			$E('img',images[i]).setStyle('height',elem_size_y);
	 	//			$E('img',images[i]).setStyle('width','auto');
	 	//			$E('img',images[i]).setStyle('margin-top',-50);
	 	//		}		 			
	 		}
		}		
	}
});
MouseGallery.implement(new Events, new Options);