/*
$Author: sjors $
$LastChangedDate: 2006-07-06 13:51:34 +0200 (do, 06 jul 2006) $
$Id: javascripts.js 20 2006-07-06 11:51:34Z sjors $
$Rev: 20 $
*/

window.addEvent('domready', function() {
	$$('.imageslider').each(function(sliderdiv) {
		sliderdiv.setStyle('opacity', 0);
	});
});
window.addEvent('load',function() {
	if ($('ticker')) {
		$('ticker').setStyle('overflow', 'scroll');
		var tickerpos = 0;
		var tickertextel = $('ticker').getElement('ul');
		var tickersize = $('ticker').getScrollSize().x;
		$('ticker').setStyle('overflow', 'hidden');
		var tickertimer;
		
		tickertextel.set('html', tickertextel.get('html') + tickertextel.get('html'));
		function ticker() {
			tickerpos -= 3;
			$('ticker').getFirst().setStyle('margin-left', tickerpos);
			if (-1 * (tickersize) > tickerpos) {
				tickerpos = -3;
			}
		}

		$('ticker').addEvent('mouseenter', function(e) {
			$clear(tickertimer);
		});
		$('ticker').addEvent('mouseleave', function(e) {
			tickertimer = ticker.periodical(50);
		});
		$('ticker').fireEvent.delay(200, $('ticker'), 'mouseleave');
	}

	if ($('mainimg')) {
		var defsrc = $('mainimg').get('src');
		$$('.teammembers li').each(function(li) {
			li.addEvent('mouseover', function(e) {
				var img = li.getElement('img');
				if (img) {
					$('mainimg').set('src', img.get('src'));
				} else {
					$('mainimg').set('src', defsrc);
				}
			});
		});
		$$('.teammembers', '#content').addEvent('mouseleave', function(img) {
			$('mainimg').set('src', defsrc);
		});
	}

	$$('.imageslider').each(function(sliderdiv) {
		sliderdiv.tween('opacity', 1);
		var slide = new slider(sliderdiv, sliderdiv.getElements('.control'), sliderdiv.getElements('img'), {
			duration: 1000
		});
		slide.init();
	});
});

/* Menu */
var menuimgid   = 'menuimg_';
var menucursub  = new Array();
var menuimgs_dw = new Array();
var menuimgs_ov = new Array();
var menuimgs_up = new Array();

function getEvent(event)
{
  var cleanevent;
  if (event)
  {
    cleanevent=event+'';
    cleanevent=cleanevent.slice(cleanevent.indexOf('{')+1, cleanevent.indexOf('}'));
    cleanevent=trim(cleanevent);
  }
  return cleanevent;
}

function preload(preloadimgs)
{
  document.pl = new Array();
  for (var j=i=0; i<preloadimgs.length; i++)
  {
    document.pl[j] = new Image;
    document.pl[j++].src = preloadimgs[i];
  }
}

function getmenulevel(curel)
{
  var level = 0;
  while (curel.id != 'menu' && curel.tagName != 'BODY')
  {
    if (curel.tagName == 'UL')
    {
      level++;
    }
    curel = curel.parentNode;
  }
  return level;
}

function buildmenu()
{
  // Locate our menu
  var menuid = document.getElementById('menu');

  if (!menuid)
  {
    // Menu not found
    return;
  }

  // Index all images in menu
  var imgs = menuid.getElementsByTagName('img');
  for (var i=0; i<imgs.length; i++)
  {
    menuimgs_dw[i] = imgs[i].src;
    menuimgs_ov[i] = imgs[i].onmouseover?getEvent(imgs[i].onmouseover).replace(/this\.src\s*=\s*['|"](.*)['|"];?/, "$1"):null;
    menuimgs_up[i] = imgs[i].onmouseout ?getEvent(imgs[i].onmouseout). replace(/this\.src\s*=\s*['|"](.*)['|"];?/, "$1"):null;
    imgs[i].id = menuimgid + i;
  }

  // Preload the images
  preload(menuimgs_ov);
  preload(menuimgs_up);

  // Attach event on menuitems and open current item
  var lis = menuid.getElementsByTagName('li');
  for (var i=0; i<lis.length; i++)
  {
    lis[i].onclick = function(event) {showsub(this); (window.event?window.event:event).cancelBubble=true;}
    if (lis[i].className == 'curpage')
    {
      opencurrentmenu(lis[i]);
    }
  }
}

function opencurrentmenu(curpageel)
{
  if (curpageel.id != "menu")
  {
    if (curpageel.tagName == 'LI')
    {
      var imgs   = curpageel.getElementsByTagName('img');
      var imgid  = imgs[0].id.replace(menuimgid, '');

      imgs[0].src = menuimgs_ov[imgid]?menuimgs_ov[imgid]:imgs[0].src;
      imgs[0].onmouseout  = null;
      imgs[0].onmouseover = null;

      if (curpageel.getElementsByTagName('ul').length > 0)
      {
        showsub(curpageel);
        menuimgs_dw[imgid] = imgs[0].src;
        menuimgs_ov[imgid] = imgs[0].src;
        menuimgs_up[imgid] = imgs[0].src;
      }
    }
    opencurrentmenu(curpageel.parentNode);
  }
}

function hidecursub(level)
{
  if (menucursub[level]) hidesub(menucursub[level]);
}

function showsub(curel)
{
  var uls = curel.getElementsByTagName('ul');
  var level = getmenulevel(curel);

  if (uls.length == 0 || menucursub[level] == curel)
  {
    hidecursub(level);
  }
  else
  {
    var imgs   = curel.getElementsByTagName('img');
    var imgid  = imgs[0].id.replace(menuimgid, '');
    imgs[0].src = menuimgs_ov[imgid]?menuimgs_ov[imgid]:imgs[0].src;
    imgs[0].onmouseout  = null;
    imgs[0].onmouseover = null;

    hidecursub(level);
    for (var i=0; i<uls.length; i++)
    {
      if (getmenulevel(uls[i]) == level+1)
      {
        uls[i].className = 'shown';
      }
    }

    menucursub[level] = curel;
  }
}

function hidesub(closeel)
{
  var level = getmenulevel(closeel);

  if (menucursub[level+1])
  {
    hidesub(menucursub[level+1]);
  }

  var imgs  = closeel.getElementsByTagName('img');
  var imgid = imgs[0].id.replace(menuimgid, '');

  imgs[0].src = menuimgs_dw[imgid]?menuimgs_dw[imgid]:imgs[0].src;
  if (menuimgs_up[imgid])
  {
    imgs[0].onmouseout  = function () {this.src = menuimgs_up[this.id.replace(menuimgid, '')];};
  }
  if (menuimgs_ov[imgid])
  {
    imgs[0].onmouseover = function () {this.src = menuimgs_ov[this.id.replace(menuimgid, '')];};
  }

  var uls = closeel.getElementsByTagName('ul');
  for (var i=0; i<uls.length; i++)
  {
    uls[i].className = '';
  }

  menucursub[level] = '';
}
/* Menu */

var slider = new Class({

	Implements: [Options],
	Extends: Fx.Elements,

	options: {
		autotimer: 5000,
		link: 'cancel'
	},

	initialize: function(element, controls, elements, options) {
		this.element = element;
		this.setOptions(options);
		this.nextel = 0;
		this.controls = controls;
		this.elements = elements;
		this.started = false;

		var maxheight = 0;
		this.elements.each(function(el) {
			maxheight = maxheight > el.getSize().y ? maxheight : el.getSize().y;
		}, this);

		this.element.setStyle('height', maxheight);

		if (this.elements.length == 1) {
			return;
		}

		this.elements.setStyle('opacity', 0);

		var auto = this.element.get('class').match(/auto_([0-9]+)/);
		if (auto) {
			this.options.autotimer = auto[1];
		} else if (this.element.hasClass('noauto')) {
			this.options.autotimer = 0;
		}

		this.controlcont = false;
		if ($('controls-'+this.element.get('id'))) {
			this.controlcont = $('controls-'+this.element.get('id'));
		}

		this.controls.each(function(head, i) {
			if (this.controlcont) {
				head.inject(this.controlcont);
			} else {
				head.inject(this.elements[0], 'before');
			}
			head.addEvent('mouseover', this.slide.bindWithEvent(this, i));
			head.addEvent('click', function(e){e.stop();});
			if (head.hasClass('sliderinit')) {
				this.nextel = i;
			}
		}, this);

		var me = this;
		this.element.addEvent('mouseleave', function() {
			if (me.options.autotimer > 0) {
				this.autoslide = me.doSlide.periodical(me.options.autotimer, me);
			}
		});

		this.element.addEvent('mouseenter', function() {
			$clear(this.autoslide);
		});
	},

	slide: function(e, curel) {
		this.nextel = curel;
		this.doSlide();
		this.element.fireEvent('mouseenter');
	},

	doSlide: function() {
		if (this.controls.length == 0 || this.elements.length == 0) {
			return;
		}
		if (!this.controls[this.nextel]) {
			this.nextel = 0;
		}

		var obj = {};
		this.elements.each(function(el, i) {
			if (el.getStyle('opacity') != 0 && i != this.nextel) {
				el.setStyle('z-index', 1);
				obj[i] = {'opacity': [el.getStyle('opacity'), 0]};
			} else if (i == this.nextel) {
				obj[i] = {'opacity': [el.getStyle('opacity'), 1]};
				el.setStyle('z-index', 2);
			}
		}, this);
		this.start(obj);

		this.controls.removeClass('active');
		this.controls[this.nextel].addClass('active');
		this.nextel++;
	},

	init: function() {
		if (!this.started) {
			this.started = true;
			this.element.fireEvent('mouseleave');
			this.doSlide();
		}
	}
});
