var site = {
	options: {
		server: {
			name: 'cche'
		},
		slideshow: {
			duration: 1500, 
			delay: 2000
		},
		slide: {
			scrollSteps: 8,
			periodical: 5
		}	
	},
	start: function() {
		var menu = $(document.body).getElement('.menuproject');
		if (menu) 
			site.handleMenuproject(menu);
		else {
			site.handleMenu();	
		} 
		
	
		
		if (typeof(IFInterface) == 'undefined' && $(document.body).getElement('.footer .mainmenu')) {
			$(document.body).getElement('.footer .mainmenu').setStyle('display','none');
		} else {
			this.handleGridMenu();	
			
		}
		// handle project mosaic

		this.handleProjectArchiv();
		
		// handle project mosaic
		if ($(document.body).getElement('.mosaic')) 
			site.handleMosaic();

		// handle project slide
		
		var tabs = $(document.body).getElement('.tabs');
		if (tabs) 
			site.handleTabs(tabs);

		site.handleLanguage();

	},
	
	handleLanguage: function() {
		var language = $(document.body).getElement('.language');
		langs = language.getChildren();
		
		langs.each(function(l,i) {
			if (i+1 == langs.length) {
				l.addClass('last')
			}
		});
	},
	
	handleMosaic: function(target,container) {
		var mosaic = document.body.getElement('.mosaic');
		var top = 185;
		
		
		mosaic.getChildren().each(function(el, i){
			if (i) {
				t = el.getCoordinates().top;
				
				if (t > top) 
					el.setStyle('margin-right',0)
				
				top = t;
			}
		},this);
	},

	handleSlide: function() {
		var self = this;
		
		var panels = new Array();
		var content = $(document.body).getElement('.content');
		var inner = content.getElement('.inner');
		
		var width = 0;

		inner.getChildren('div.pan').each(function(pan){
			var deleted = false;
			var img = pan.getElement('img.main');
			if (img) {
				var src = img.get('src');
				
				var r=new RegExp("nophoto","g");
				if (src.match(r)) {
					pan.destroy();
					deleted = true;
				} 
			} 
			
			if (deleted != true) {
				panels.push(pan.getSize().x);
				width += pan.getSize().x;	
			}
		});
		
		inner.setStyle('width',width+'px');
		
		var slide = content.getElement('.slide');
		var size = slide.getScrollSize().x - slide.getSize().x;
		
		var browser=self.getBrowser();
		
		var scrollSteps = self.options.slide.scrollSteps;
		var periodical = self.options.slide.periodical;
		
		if (browser == 'chrome') {
			scrollSteps = (scrollSteps/1.5).toInt();
			periodical = self.options.slide.periodical;
		}
		
		if (browser == 'msie'){
			
			if (navigator.appVersion > 8) {
				scrollSteps = (scrollSteps/5).toInt();;
				periodical = self.options.slide.periodical*2;
			} else {
				scrollSteps = (scrollSteps).toInt();;
				periodical = self.options.slide.periodical;
			}
		}
		
		if (browser == 'safari'){
			scrollSteps = scrollSteps.toInt();
			periodical = self.options.slide.periodical;
			periodical = 5;
		}
		
		
		var scroller = new MooScroller(slide, 'scrollKnob', {
			mode:'horizontal',
			scrollSteps:scrollSteps,
			periodical:periodical,
			scrollLinks: {
				forward: 'scrollForward',
				back: 'scrollBack'
			},
			onScroll: function(){
				if (slide.scrollLeft == 0) {
					$('scrollBack').setStyle('visibility','hidden');
				} else {
					$('scrollBack').setStyle('visibility','visible');
				}
				
				if (slide.scrollLeft == size) {
					$('scrollForward').setStyle('visibility','hidden');
				} else {
					$('scrollForward').setStyle('visibility','visible');
				}
			}
		});
		
		/*$('scrollBack').addEvent('click', function(e) {
			e.stop();
			console.log(slide.scrollLeft);
			
		});
		
		$('scrollForward').addEvent('click', function(e) {
			e.stop();
			console.log(slide.scrollLeft);
		});*/
		
		$('scrollBack').unselectable();
		$('scrollForward').unselectable();
		
		if (inner) 
			if (slide.getSize().x == inner.getSize().x)
				$('scrollForward').setStyle('visibility','hidden');

		if ($('projectback'))
		$('projectback').addEvent('click', function(e) {
			e.stop();
			self.handleBackProject(slide);
		});
	},
	
		
	handleSlideMobile: function() {
			var self = this;
		
		var panels = new Array();
		var content = $(document.body).getElement('.content');
		var inner = content.getElement('.inner');
		
		var width = 0;

		inner.getChildren('div.pan').each(function(pan){
			var deleted = false;
			var img = pan.getElement('img.main');
			if (img) {
				var src = img.get('src');
				
				var r=new RegExp("nophoto","g");
				if (src.match(r)) {
					pan.destroy();
					deleted = true;
				} 
			} 
			
			if (deleted != true) {
				panels.push(pan.getSize().x);
				width += pan.getSize().x;	
			}
		});
		
		inner.setStyle('width',width+'px');
		
		var slide = content.getElement('.slide');
		var size = slide.getScrollSize().x - slide.getSize().x;
		
		$(document.body).setStyle('overflow','hidden');
		
		$('scrollBack').setStyle('width','200px');
		$('scrollForward').setStyle('width','200px');
		
		var fx = new Fx.Scroll(slide,{
			onComplete: function() {
				if (slide.scrollLeft == 0) {
					$('scrollBack').setStyle('visibility','hidden');
				} else {
					$('scrollBack').setStyle('visibility','visible');
				}
				
				if (slide.scrollLeft == size) {
					$('scrollForward').setStyle('visibility','hidden');
				} else {
					$('scrollForward').setStyle('visibility','visible');
				}
			}	
		});
		
		$('scrollBack').addEvent('click', function(e) {
			e.stop();
			fx.start(slide.scrollLeft-950,0);
			
		});
		
		$('scrollForward').addEvent('click', function(e) {
			e.stop();
			fx.start(slide.scrollLeft+950,0);
		});
		
		$('scrollBack').unselectable();
		$('scrollForward').unselectable();
		
		if (inner) 
			if (slide.getSize().x == inner.getSize().x)
				$('scrollForward').setStyle('visibility','hidden');

		if ($('projectback'))
		$('projectback').addEvent('click', function(e) {
			e.stop();
			self.handleBackProject(slide);
		});
	},
	
	handleBackProject: function(slide) {
		if (slide.scrollLeft == 0) {
			window.history.back();
		} else {
			slide.scrollLeft = 0;
			$('scrollBack').setStyle('visibility','hidden');
			$('scrollForward').setStyle('visibility','visible');
		}
	},
	
	handleSlideshow: function(slideshows) {
		var self = this;
		
		slideshows.each(function(slideshow) {
			
			var img = new Array();
			var url = new Array();
			
			var cnt = new Array();
			
			var data = new Hash();
			var data_container = $('slideshowdata');
			
			var r=/nophoto/g;
		
			data_container.getChildren().each(function(d){
				var href = d.get('href');
				var src = d.get('html');
				img.push(src);
				url.push(href);
			});
			
			var foldercount = img.length/10;
			var imgbyfolder = new Array();

			for (var x = 0; x < foldercount; x++){
				imgbyfolder[x] = new Array();
				for (var y = 0; y <= 9; y++){
					
					if (!img[x*10+y].match(r)) {
						
						imgbyfolder[x][y] = x*10+y;
					
					}	
				}	
				imgbyfolder[x].shuffle();
				//console.log(imgbyfolder[x]);	
			}
			
			var i=0;
			for (var x = 0; x <= 9; x++){
				for (var y = 0; y <= foldercount-1; y++){
					
					i++;
					
					if (imgbyfolder[y].length > x) {
						var index = imgbyfolder[y][x];
						var info = {
							'href': url[index]
						}
					
						if (img[index]) {
							data.include(img[index],info);
							cnt.push(img[index]);
						}
						
					}
				}
			}
			
			if (cnt.length > 1) {
				new Slideshow('slideshow', data, { 
					duration: self.options.slideshow.duration, 
					delay: self.options.slideshow.delay, 
					resize:false,
					loop: true,
					center: false
				});
			} else {
				slideshow.getElement('img').set('src',img[0]);
			}
			
			
		});
		

	},
	
	handleTabs: function(tabs) {
		var selected = 'description';
		var selectedtab = tabs.getElement('.'+selected);
		var tablist = new Array();
		var panels = $(document.body).getElement('.panels')
		
		tabs.getChildren().each(function(tab) {
			var klass = tab.get('class');
			//console.log(tab);
			var html = panels.getElement('.'+tab.get('class')).getChildren();

			if (html.length > 1)
				tablist.push(klass);
			else tab.destroy();
		});
		
		buttons = tabs.getChildren();
		buttons[buttons.length-1].addClass('last');
		
		tablist.each(function(tab){
			tabs.getElement('.'+tab)
			.setStyle('cursor','pointer')
			.addEvent('click', function(){
				if (this != selectedtab) {
					panels.getElement('.'+tab).setStyle('display','block');
					panels.getElement('.'+selected).setStyle('display','none');
					this.setStyle('fontWeight','bold');
					selectedtab.setStyle('fontWeight','normal')
					selected = tab;
					selectedtab = this;
				}
			}).unselectable();
			
		});	
	},
	
	handleMenuproject: function(menu) {
		col1 = menu.getElement('ul');
		menu2 = menu.getNext();
		
		col2 = new Element('ul').inject(menu2); 
		
		var children = col1.getChildren();
		
		if (children.length > 5) {
			children.each(function(li,i) {
				if (i> 3) {
					col2.adopt(li);
				}
			}) 
		}
	},
	
	handleMenu: function() {
		var menus = $(document.body).getElements('.header div.menu');
		var size = menus[0].getSize();
		//console.log(size);
		menus.each(function(menu,i) {
			if (i > 0) {
				var height = size.y - menu.getSize().y; 
				menu.setStyle('margin-top',height+'px')
			}
		})
	},
	
	handleProjectArchiv: function() {
		var archiv = $(document.body).getElement('.archiv');
		if (!archiv) return;
		var projectlist = archiv.getElements('[id^="item"]');
		projectlist.each(function(project) {
			if (Cookie.read(project.id) == '1') {
				project.setStyle('opacity','.4');
			}
			project.addEvent('click', function(e) {
				Cookie.write(project.id, '1',{duration: 365});
			});
		})
	},
	
	handleGridMenu: function() {
		var self = this;
		if (!$('IFInterfaceMenu')) return;
		
		var ul = $('IFInterfaceMenu').getElement('ul');
		
		ul.getChildren().each(function(li) {
			if (li.get('html') == 'Canvas') {
				li.destroy();
			}
			
			if (li.get('html') == 'Context') {
				new Element('li',{ html: 'Grid'}).addEvent('click',function() {
					self.toggleGrid();	
				}).addClass('IFBlue').inject(li,'after');
			}
		});
		
		
	},
	
	handleGrid: function() {
		
	},
	
	toggleGrid: function() {
		if ($(document.body).getElement('.container').hasClass('showgrid'))
			this.hideGrid();
		else 
			this.showGrid();
	},
	
	showGrid: function() {
		$(document.body).getElements('.container').each(function(el){
			el.addClass('showgrid')	
		})
	},
	
	hideGrid: function() {
		$(document.body).getElements('.container').each(function(el){
			el.removeClass('showgrid');
		})
	},
	
	getBrowser: function(){
		
		var browser = false;
		var UA = navigator.userAgent.toLowerCase();
		
		if (UA.indexOf("firefox") + 1) browser = 'firefox';
		else if (UA.indexOf("msie") + 1) browser = 'msie';
		else if (UA.indexOf("chrome") + 1) browser = 'chrome';
		else if (UA.indexOf("safari") + 1) browser = 'safari';
		else browser = 'other'; 
		
		return browser;
		
	}
};



window.addEvent('domready',function() { 
	site.start();
});

window.addEvent('load',function() { 
	// handle slide show
		
	var slideshows = $(document.body).getElements('.slideshow-images');
	if (slideshows) 
		site.handleSlideshow(slideshows);
		
	// handle project slide
	var slide = $(document.body).getElement('.slide');
	if (slide) {
		if(
		(navigator.userAgent.match(/iPhone/i)) || 
 		(navigator.userAgent.match(/iPod/i)) || 
		(navigator.userAgent.match(/iPad/i))) {
			site.handleSlideMobile();
			
		} else {
			site.handleSlide();
		}
	}
});



Element.implement({
	unselectable: function(){
		if (typeof $(this).onselectstart != 'undefined') {
			$(this).addEvent('selectstart',function() { return false; });
		} else if (typeof $(this).style.MozUserSelect != 'undefined') {
			$(this).setStyle('MozUserSelect', 'none');
		} else if (typeof $(this).style.WebkitUserSelect != 'undefined') {
			$(this).setStyle('WebkitUserSelect', 'none');
		} else if (typeof $(this).unselectable  != 'undefined') {
			$(this).setProperty('unselectable','on');
		}		
	}
});


