var Site = {
	init: function(){
		
		Site.removeBorders();
		
		Site.initSubmit();
		
		Site.initVerify();
		
		Site.remooz();
		
		if ($('notification')) Site.hideNotification();
		
		if ($('accordion')) Site.faqAccordion();
		
		if ($('newsletterSend')) Site.ajaxNewsletter();
	},
	
	start: function(){

		Site.preloadImages();

	},
	
	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(){
					
		$$('.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);
			});                                                   
		});
			
	},
	
	ajaxNewsletter: function() {
		
		$('newsletterSend').addEvent('click', function(e) {
			new Event(e).stop();
			
			var postdata = 'adress='+$('newsletterAdress').get('value');
			
			var req = new Request.HTML({url:site_url+language+'/ajax_newsletter',method: 'post', 
				onSuccess: function(html) {
					//Clear the text currently inside the results div.
					$('newsletterInfo').set('text', '');
					//Inject the new DOM elements into the results div.
					$('newsletterInfo').adopt(html);
				},
				//Our request will most likely succeed, but just in case, we'll add an
				//onFailure method which will let the user know what happened.
				onFailure: function() {
					$('newsletterInfo').set('text', 'The request failed.');
				}
			}).send(postdata);
		});
		
		
		
	},
	
	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;
			}
		});
	},
	
	hideNotification: function(){
		var slide = new Fx.Slide($('notification'));
		
		(function(){ slide.slideOut(); }).delay(2000);
	},
	
	remooz: function(){
	
		$$('.zoom').each(function(element) {
	 
	        // Constructor, takes the element and options as arguments
	        new ReMooz(element, {
	            centered: true, // Zoom the center of the screen
	            origin: element.getElement('img') // Take the image inside as origin for the zooming element
	        });
	 
	    });
	},
	
	galleryScroller: function(){
		var scroll = new Fx.Scroll('galleryBox', {
			wait: true,
			duration: 700,
			offset: {'x': 0, 'y': 0},
			transition: Fx.Transitions.Circ.easeInOut,
			onComplete: function(){
				$('arrowLeft').setStyle('visibility', 'visible');
				$('arrowRight').setStyle('visibility', 'visible');
			}
		});	
		
		$('arrowLeft').addEvent('click', function(event){
			event 	= new Event(event).stop();
			active 	= $('scrollGallery').get('rel').toInt();
	
			if (active > 1) {
				next   = active-1;
				
				if (scroll.toElement('container_'+next+'')) {
					$('arrowLeft').setStyle('visibility', 'hidden');
					$('arrowRight').setStyle('visibility', 'hidden');
					$('scrollGallery').set('rel', next);
				}
			}
		});
	
		$('arrowRight').addEvent('click', function(event){
			event 	= new Event(event).stop();
			active 	= $('scrollGallery').get('rel').toInt();
			
			if (active < maxContainer) {
				if (active == maxContainer) {
					next   = 1;
				} else {
					next   = active+1;
				}
				
				if (scroll.toElement('container_'+next+'')) {
					$('arrowRight').setStyle('visibility', 'hidden');
					$('arrowLeft').setStyle('visibility', 'hidden');
					$('scrollGallery').set('rel', next);
				}
			}
		});
	},
	
	faqAccordion: function() {
	
		var myAccordion = new Accordion($('accordion'), 'span.toggler', 'div.element', {
			opacity: 0
		});
	
	}
}

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