/**
 * @copyright  amisso - Gewiese & Irmscher GbR 2010
 * @author     Maik Irmscher <mi@amisso.de>
 * @license    EULA
 */

var Magnifier = new Class({
	Implements: [Events, Options],
	
	initialize: function() {
		var params = Array.link(arguments, {options: Object.type, elements: $defined});
		this.setOptions(params.options || null);
		
		$$(params.elements).each(function(element) {
			var bigImgDiv = new Element('div', {'class': 'bigImgDiv'}).inject(element, 'after');
			
			var bigImgInnerDiv = new Element('div', {'class': 'bigImgInnerDiv'}).inject(bigImgDiv);
			
			var src = element.get('src').replace('-thumbnail', '');
			
			if (typeof src == 'string') {
				var bigImg = new Element('img', {
					src: element.get('src').replace('-thumbnail', ''),
					'class': 'bigImg'
				}).inject(bigImgInnerDiv);
			}
			
			bigImgInnerDiv.setStyles({
				height: bigImg.offsetHeight,
				width: bigImg.offsetWidth
			});
			
			var enter = element.retrieve('magnifier:enter', this.elementEnter.bindWithEvent(this, element));
			var leave = element.retrieve('magnifier:leave', this.elementLeave.bindWithEvent(this, element));
			element.addEvents({mouseenter: enter, mouseleave: leave});
		}, this);
	},
	
	elementEnter: function(event, element) {
		var bigImgDiv = element.getNext('.bigImgDiv');
		bigImgDiv.position({
			relativeTo: $('main'),
			position: 'upperLeft'
		});
		bigImgDiv.setStyles({visibility: 'visible', opacity: 0});
		bigImgDiv.fade('in');
	},
	
	elementLeave: function(event, element) {
		var bigImgDiv = element.getNext('.bigImgDiv');
		bigImgDiv.fade('out');
	}
});


var Timer = new Class({
	Implements: [Events, Options],
	
	initialize: function() {
		var params = Array.link(arguments, {options: Object.type, elements: $defined});
		this.setOptions(params.options || null);
		
		$$(params.elements).each(function(element) {
			var time = new Element('span', {
				id: 'time',
				html: '0 Sekunden'
			}).inject(element, 'bottom');
			
			time.data = {};
			time.data.time = 0;
			time.data.tid = 0;
			Timer.timeup();
		}, this);
	}
});


Timer.timeup = function() {
	var elem	= $('time');
	var time	= elem.data.time || 0;
	var tid	= elem.data.tid || 0;
	
	time += 1;
	elem.data.time = time;
	var secounds = time % 60;
	var minutes = Math.floor(time / 60);
	
	if (minutes > 0) {
		minStr = (minutes === 1) ? '1 Minute' : minutes + ' Minuten';
		secStr = (secounds === 1) ? ' und 1 Sekunde' : ' und ' + secounds + ' Sekunden';
		$('time').set('html', minStr + secStr);
	}
	else {
		$('time').set('html', (secounds === 1) ? '1 Sekunde' : secounds + ' Sekunden');
	}
	
	if (minutes > 30) {
		clearTimeout(tid);
		elem.data.tid = 0;
		$('time').set('html', '&uuml;ber 30 Minuten');
		return;
	}
	elem.data.tid = setTimeout(function() { Timer.timeup(); }, 1000);
}


function scrollBox(box) {
	var scroll = 0;
	
	if (typeof box.data == 'undefined' || !box.data) {
		box.data = {};
		var pos = box.getPosition();
		box.data.oldY = pos.y;
	}
	
	if (document.body && document.body.scrollTop) {
		scroll = document.body.scrollTop;
	}
	else if (window.pageYOffset) {
		scroll =  window.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop) {
		scroll = document.documentElement.scrollTop;
	}
	
	if (scroll > box.data.oldY - 20) {
		box.setStyles({
			position: 'fixed',
			marginTop: '20px'
		});
	}
	else {
		box.setStyles({
			position: 'static',
			marginTop: '0px'
		});
	}
}


function showMail(veil) {
	var pre = '&#109;a';
	pre = pre + 'i&#108;' + '&#116;o';
	var path = 'hr' + 'ef' + '=';
	veil = veil + '&#64;';
	veil = veil + '&#97;m&#105;ss&#111;' + '&#46;' + 'd&#101;';
	document.write( '<a ' + path + '\'' + pre + ':' + veil + '\'>' );
	document.write( veil );
	document.write( '<\/a>' );
}


function addMagnification(element, setup) {
	var relativeTo	= setup.relativeTo;
	var position	= setup.position	|| 'upperLeft';
	var offset		= setup.offset		|| {x: 0, y: 0};
	
	var src = element.get('src').replace('-thumbnail', '');		
	if (typeof src == 'string') {
		var bigImgDiv = new Element('div', {'class': 'bigImgDiv'}).inject(element, 'after');
		
		var bigImg = new Element('img', {
			'src': src,
			'class': 'bigImg'
		}).inject(bigImgDiv);
		
		bigImgDiv.setStyles({
			'visibility': 'visible',
			'opacity': 0
		});
		
		if (position === 'below') {
			bigImgDiv.position({
				'relativeTo': $(relativeTo),
				'position': 'centerBottom',
				'offset': {x: -bigImgDiv.offsetWidth / 2, y: 0}
			});
		}
		else {
			bigImgDiv.position({
				'relativeTo': $(relativeTo),
				'position': position,
				'offset': offset
			});
		}
		
		element.addEvents({
			mouseenter: function(event) {
				var bigImgDiv = this.getNext('.bigImgDiv');
				bigImgDiv.fade('in');
			},
			mouseleave:  function(event) {
				var bigImgDiv = this.getNext('.bigImgDiv');
				bigImgDiv.fade('out');
			}
		});
	}
}


window.addEvent('domready', function() {
	new Magnifier($$('.referenz'));
	new Timer($$('.timer'));
	
	$$('.jumpContact').setStyle('cursor', 'pointer');
	$$('.jumpContact').addEvent('click', function() {
		window.location.href = '/kontakt.html';
	});
	
	if ($('scrollBox')) {
		window.addEvent('scroll', function() {
			scrollBox($('scrollBox'));
		});
		window.addEvent('resize', function() {
			scrollBox($('scrollBox'));
		});
	}
	
	
	$$('#landing_referenzen img').each(function(element) {
		addMagnification(element, {relativeTo: 'landing_referenzen', position: 'below'});
	});
	
	
// 	if ($('hostingbestellung_form')) {
// 		var removedElement = "";
// 		$$('#hostingbestellung_form select.paket').addEvent('change', function() {
// 			if (
// 					this.get('value') == 'business_s'
// 					|| this.get('value') == 'business_m'
// 					|| this.get('value') == 'business_l'
// 					|| this.get('value') == 'profi_s'
// 					|| this.get('value') == 'profi_m'
// 				) {
// 				removedElement = $$('select.zahlungsturnus option[value=1]').dispose();
// 			}
// 			else {
// 				if (removedElement) {
// 					removedElement.inject($$('select.zahlungsturnus option[value=3]'), 'top');
// 				}
// 			}
// 		});
// 		
// 		$$('#hostingbestellung_form select.paket').fireEvent('change');
// 	}
});
