(function($){	
	EYE.search = function() {
		var el, placeholderVal;
		var focus = function() {
		    el.addClass('focused');
		    if (el.val() == placeholderVal) {
			el.val('');
		    }
		};
		var blur = function() {
		    if (el.val() == '' || el.val() == placeholderVal) {
			el.val(placeholderVal).removeClass('focused');
		    }
		};
		return {
			init: function() {
				el = $('#searchQuery');
				placeholderVal = el.attr('placeholder');
				if (el.val() == '') {
				    el.val(placeholderVal)
				}
				el.bind('focus', focus).bind('blur', blur);
			}
		};
	}();
	EYE.register(EYE.search.init, 'init');
	
	EYE.slideshow = function() {
		var slides,
			navigation,
			time = 5000,
			timer;
		var goToNext = function(ev) {
			clearTimeout(timer);
			var current = slides.filter('.active');
			var indx = navigation.index(
				    navigation
					.filter('.active')
					.removeClass('active')
				);
			current
				.stop()
				.animate({
					opacity: 0
				}, 500, function(){
				    this.className = '';
				});
			if (ev && ev.target) {
				var targetEl = $(ev.target).closest('span');
				if (targetEl.size() == 1) {
					indx = navigation.index(targetEl);
				}
			} else {
				indx += 1;
				if (indx >= navigation.length) {
					indx = 0;
				}
			}
			var next = slides.eq(indx);
			next
				.addClass('active')
				.stop()
				.animate({
					opacity: 1
				}, 500);
			navigation.eq(indx).addClass('active');
			timer = setTimeout(goToNext, time);
			
		};
		
		var clickEv = function() {
			
		};
		return {
			init: function() {
				slides = $('#slideshowSlides a');
				slides
					.css('opacity', 0)
					.filter(':first')
					.css('opacity', 1)
					.addClass('active');
				var nav = [];
				for (var i=0, cnt = slides.length; i<cnt; i++) {
					nav[nav.length] = '<span />';
				}
				navigation = $('#slideshowNavigation')
						.bind('click', goToNext)
						.append(nav.join(''))
						.find('span');
				navigation
					.filter(':first')
					.addClass('active');
				timer = setTimeout(goToNext, time);
			}
		};
	}();
	EYE.register(EYE.slideshow.init, 'init');
	
	EYE.logos = function() {
		var maxLeft, current = 0;
		var clickEv = function() {
			var newLeft = current + 900 * (this.id == 'logosLeft' ? -1 : 1);
			newLeft = Math.max(0, Math.min(maxLeft, newLeft));
			var diff = Math.abs(newLeft - current) / 150;
			current = newLeft;
			$('#logosWrapper ul').stop().animate({left: -newLeft}, diff * 100);
		};
		return {
			init: function() {
				maxLeft = $('#logosWrapper li').length * 150 - 900;
				$('#logosLeft, #logosRight').bind('click', clickEv);
			}
		};
	}();
	EYE.register(EYE.logos.init, 'init');
	
	EYE.contact = function() {
		var clickEv = function(ev) {
			var indx = $('#sideContactNav li').removeClass('active').index(ev.target);
			ev.target.className = 'active';
			$('#sideContact>div').removeClass('active').eq(indx).addClass('active');
		};
		var map, point, marker;
		return {
			init: function() {
				var mapEl = document.getElementById('contactMap');
				$('#sideContactNav').bind('click', clickEv);
				if (mapEl) {
					map = new GMap2(mapEl);
					point = new GLatLng(52.027893, 5.079980);
					map.setCenter(point);
					map.setZoom(15);
					map.enableScrollWheelZoom();
					marker = new GMarker(point);
					map.addOverlay(marker);
					map.addControl(new GSmallMapControl());
					map.addControl(new GMapTypeControl());
				}
			}
		}
	}();
	EYE.register(EYE.contact.init, 'init');
	
	EYE.formToggler = function() {
		var wrapper;
		var frm;
		var toggleForm = function(ev) {
			console.log('toggle form')
			wrapper.toggleClass('hidden');
			//window.location.hash = wrapper.is('.hidden') ? '' : '#'+frm[0].id;
			return false;
		};
		
		return {
			init: function() {
				wrapper = $('#formTrigger');
				if (wrapper.size() == 1) {
					console.log('toggle init');
					frm = wrapper.find('form');
					console.log(frm);
					$('#openForm').bind('click', toggleForm);
					if (window.location.hash === '#'+frm[0].id) {
						toggleForm();
					}
				}
			}
		};
	}();
	EYE.register(EYE.formToggler.init, 'init');
	
	
})(jQuery);
