var scroll;
var scroll2;
var scrollPosition 		= 1;
var scrollVideoPosition = 1;

var Site = {
	
	init: function(){
		
		Site.removeBorders();
		
		Site.initSubmit();
		
		Site.initVerify();
		
		if ($('notification')) Site.hideNotification();
		
		if ($('nodes')) Site.browseNodes($('path').getValue());
		
		if ($('navigation')) Site.initNavigation();
		
		if ($('imagesContainer')) Site.imagesScroller();
		
		if ($('videosContainer')) Site.videosScroller();

	},
	
	start: function(){
		setupZoom();
		
		Site.preloadImages();
		
		if ($('google-maps')) Site.googleMaps();
	},
	
	preloadImages: function(){
		var images = [];
		
		$$('.over').each(function(el){
			var src			= el.getProperty('src');
			var extension 	= src.substring(src.lastIndexOf('.'), src.length)
			
			images.push(src.replace(extension, '_over'+extension));
		});
		
		new Asset.images(images, {
    		onComplete: function(){
        		Site.initMouseovers();
    		}
		});
	},
	
	initMouseovers: function(){
		var src;
		
		$$('.over').each(function(el){
			el.addEvent('mouseover', function(){
				src				= el.getProperty('src');
				var extension 	= src.substring(src.lastIndexOf('.'), src.length)
								
				el.setProperty('src', src.replace(extension, '_over'+extension));
			});
			
			el.addEvent('mouseout', function(){
				el.setProperty('src', src);
			});                                                   
		});
	},
	
	removeBorders: function(){
		$$('a').each(function(el){
			el.addEvent('focus', function(){
				el.blur();
			});
		});
	},
	
	initSubmit: function(){
		$$('.submit').each(function(el){
			var button 	= el.getElement('a');
			var form	= $(button.get('rel'));
			
			function submit(){
				el.getElements('a').each(function(button){
					button.remove();
				});
				
				el.setHTML('');
				
				var loader = $('loader').clone().injectInside(el).setStyle('display', 'block');
				
				form.submit();
			}
			
			form.addEvent('submit', function(e){
				e = new Event(e).stop();
				
				submit();
			});
			
			button.addEvent('click', function(e){
				e = new Event(e).stop();
				
				submit();
			});
		});
	},
	
	initVerify: function(){
		$$('a').each(function(el){
			if (el.get('rel') == 'confirm') {
				el.addEvent('click', function(e){
					if (confirm('Sind Sie sicher?') == false) {
						e = new Event(e).stop();
					}
				});
			}
		});
	},
	
	deleteObject: function(url, query, object){
		var request = new Request.HTML({
			method: 'post',
			url: site_url+url,
			update: $(object)
		}).send(query);
	},
	
	alternating: function(object){
		var i = 1;
		
		object.getElements('tr').each(function(el){
			if (el.hasClass('odd')) {
				el.removeClass('odd');
			} else if (el.hasClass('even')) {
				el.removeClass('even');
			}
			
			if (i == 1) {
				el.addClass('odd');
				
				i = 2;
			} else {
				el.addClass('even');
				
				i = 1;
			}
		});
	},
	
	sortables: function(object, url, alternating){
		var sortables = new Sortables(object, {
			handle: 'u',
			onComplete: function(){
				if (alternating == true) Site.alternating(object);
				
				var order 		= 1;
				var elements 	= new Array();
				
				object.getElements('li').each(function(el){
					elements.push(el.get('id')+'_'+order);
					
					order++;
				});
	
				var request = new Request.HTML({
					method: 'post',
					url: site_url+url
				}).send('elements='+elements.join(';'));
			}
		});
	},
	
	hideNotification: function(){
		var slide = new Fx.Slide($('notification'));
		
		(function(){ slide.slideOut(); }).delay(2000);
	},
	
	browseNodes: function(path, node, redirect){
		if (redirect == true) {
			location.href = site_url+'products/browse/'+node;
		} else {
			var request = new Request.HTML({
				method: 'post',
				url: site_url+'products/nodes',
				update: $('nodes')
			}).send('selected='+path);
		}
	},
	
	initNavigation: function(){
		var elements = $$('#navigation a');
		
		elements.each(function(element) {
		 
			var fx = new Fx.Styles(element, {duration:200, wait:false});
		 
			element.addEvent('mouseenter', function(){
				fx.start({
					'margin-left': 5
				});
			});
		 
			element.addEvent('mouseleave', function(){
				fx.start({
					'margin-left': 0
				});
			});
		 
		});
	},
	
	imagesScroller: function(){
		scroll = new Fx.Scroll('imagesContainer', {
			wait: false,
			duration: 500,
			offset: {'x': 0, 'y': 0},
			transition: Fx.Transitions.Quad.easeInOut
		});
	},

	videosScroller: function(){
		scroll2 = new Fx.Scroll('videosContainer', {
			wait: false,
			duration: 500,
			offset: {'x': 0, 'y': 0},
			transition: Fx.Transitions.Quad.easeInOut
		});
	},
	
	scrollLeft: function(num){
		if (scrollPosition > 1) {
			scrollPosition = scrollPosition-1;
			
			position = (scrollPosition*140)-140;
			
			scroll.scrollTo(0, position);
			
			$('position').setHTML(scrollPosition);
		}
	},
	
	scrollRight: function(num){
		if (scrollPosition < num) {
			scroll.scrollTo(0, scrollPosition*140);
			
			scrollPosition = scrollPosition+1;
			
			$('position').setHTML(scrollPosition);
		}
	},

	scrollVideoLeft: function(num){
		if (scrollVideoPosition > 1) {
			scrollVideoPosition = scrollVideoPosition-1;
			
			position = (scrollVideoPosition*140)-140;
			
			scroll2.scrollTo(0, position);
			
			$('positionVideo').setHTML(scrollVideoPosition);
		}
	},
	
	scrollVideoRight: function(num){
		if (scrollVideoPosition < num) {
			scroll2.scrollTo(0, scrollVideoPosition*140);
			
			scrollVideoPosition = scrollVideoPosition+1;
			
			$('positionVideo').setHTML(scrollVideoPosition);
		}
	},
		
	googleMaps: function(){
		var map 		= null;
		var geocoder 	= null;
		
		if (GBrowserIsCompatible()) {
			var map = new GMap2($('google-maps'));
			map.setCenter(new GLatLng(37.4419, -122.1419), 13);
			geocoder = new GClientGeocoder();
			
			if (geocoder) {
				geocoder.getLatLng('Frankfurter Str. 174, 34134 Kassel', function(point) {
					if (!point) {
						$('googleMaps').remove();
					} else {
						map.setCenter(point, 15);
						var marker = new GMarker(point);
						map.addOverlay(marker);
						map.addControl(new GSmallMapControl());
						map.addControl(new GMapTypeControl());
						
						map.openInfoWindow(map.getCenter(), '<img src="'+base_url+'assets/images/logo-google-maps.gif" style="margin-top: 3px; margin-left: 5px;" alt="" />');
					}
				});
			}
		}
	},
	
	getPerson: function(id){
		$('person-text').setHTML('<img src="' + base_url + 'assets/images/ajax-loader.gif" alt="" />');
		
		var request = new Request.HTML({
			method: 'post',
			url: site_url+'site/get_person',
			update: $('person-text'),
			evalScripts: true
		}).send('id='+id);
	},
	
	showPerson: function(person){
		if (person == '') {
			$('person-image').fade(0);
		} else {
			$('person-image').setProperty('src', base_url + 'storage/images/' + person);
			$('person-image').fade(1);
		}
	},

	videoBox: function(id, title){	
		var width 	= document.body.offsetWidth;
		var height 	= document.body.offsetHeight;
		
		var videobox 	= new Element('div').addClass('videobox').setStyle('width', width).setStyle('height', height).setProperty('id', 'videoBox_'+id).setOpacity('.6').injectInside(document.body);                                                                                                                     
	
		var cTop	= (height/2)-200;
		var cLeft	= (width/2)-250;
		
		var html	= $('container_' + id).getHTML() + '<div class="videoInfo"><div class="left"><h3>'+title+'</h3></div><div class="right"><a href="javascript:Site.handleVideoBox('+id+');" class="grey2">schliessen</a></div></div>';
		
		var container 	= new Element('div').setProperty('id', 'c_' + id).addClass('container').setStyle('left', cLeft).setStyle('top', cTop).setHTML(html).injectInside(document.body);
	},
	
	handleVideoBox: function(id){
		$('c_' + id).remove();
		$('videoBox_' + id).remove();
	},
	
	resizeLightbox: function(){
		var width 	= document.body.offsetWidth;
		var height 	= document.body.offsetHeight;
		
		$$('.videobox').setStyle('width', width).setStyle('height', height);
		
		var cTop	= (height/2)-200;
		var cLeft	= (width/2)-250;
		
		$$('.container').setStyle('left', cLeft).setStyle('top', cTop);

	}
	
}

window.addEvent('domready', Site.init);
window.addEvent('load', Site.start);
window.addEvent('resize', Site.resizeLightbox);
