//debug
function L(x){
	if (Browser.Engine.name != "trident" )return console.log(x);else alert(x);
}

function decision(message){
if(confirm(message)) location.href = 'http://www.mozilla-europe.org/de/firefox/';
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//INIT
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var _self;
var _direction ='up';
var mouseX;
var contPos = 1;

window.addEvent('domready', function(){
	if (Browser.Engine.name == "trident" && Browser.Engine.version < 5) {
		decision('Um diese Seite korrekt betrachten zu können brauchen Sie einen aktuellen Browser');
	}
	if(AKTIVNAV[0] !='home'){
		$('cHold').setStyle('padding','0 0 0 180px');
	}
	deskJS = new deskJS();
	farbmuehle = new farbmuehle();
	
});


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//MAIN CLASS/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
farbmuehle = new Class({
	
	Implements: addDeskJS,
	
	options:{
		_verzLocal: 0
		,_verzUser: 'farbmuehle'
		,_verzDebug:1
	},
	
	//init functions und global vars
	initialize: function(){
		
		_self = this;
		
		_self.BUILD = true;
		_self.BUILDcnt = 0;
		
		_self.switcher = 1;
		
		_self.aniStatus = 'play';
		
		this._verzReqStr = {
			'type': 'all',
			'user': this.options._verzUser,
			'table': {
				'listingdatas': 'ld'
				,'listingrows': 'lr'
				,'listings': 'l'
			},
			
			'condition': {
				'lr.rubrikname': 'Aktuell'
			},
			
			'fields': 'ld.*',
			'order': 'ld.position ASC'
			
		};
		
		_self.specialLinkEvents();
		
		_self.ElCounter = 1;
		
		_self.bgPos = 0;
//		_self.aniSpeed = 10;
		_self.aniSpeed = 30;
		
		_self.createNav();
		_self.showcaseInit();
		
	},
	
	//ajax links
	specialLinkEvents: function(){
		$('logo').addEvents({
			'click': function(){
				$('loader').setStyle('display','block');
				$$('.subNavElement').destroy();
				_self.resetNav();
				_self.loadPage.delay(300,this,1)
			}
		});
		
		$$('#socMed img').addEvents({
			'mouseover': function(){
				_self.showInfo(this.getPosition().x,this.getAttribute('alt'))
			},
			'mouseout': function(){
				try{
					$('infobox').destroy();	
				}catch(err){}
				
			}
		});
		
		$$('.ajLink').addEvents({
			'click': function(){
				$('loader').setStyle('display','block');
				$$('.subNavElement').destroy();
				_self.resetNav();
				_self.loadPage.delay(300,this,this.getProperty('alt'));
				return false;
			}
		})
	},
	
	//aufbau mainnav
	createNav: function(){
		
		JSnav.each(function(nav,key){
			
			navTemplate = '<img class="nav_'+key+' navElement ID_'+nav.id+'" src="'+ROOT+'images/nav/'+key+'.png" style="cursor:pointer" /><br/>';
			
			navTemplate = navTemplate.toDOM();
			
			if(nav.sub){
				nav.sub.each(function(sID){
					navTemplate.addClass('ID_'+sID.id);
				})
			}
			
			navTemplate[0].addEvents({
				'click'	: function(){
					
					$('loader').setStyle('display','block');
					//L(nav)
					_self.loadPage.delay(300,this,nav.id)
					_self.showSubNav(key);
					_self.highlightNav(key,'');
					
				}
			});
			
			navTemplate.inject($('menu'));
			
		})
	},
	
	//aufbau subnav
	showSubNav: function(itm){
		
		$('submenu').empty();
		
		if(JSnav[itm].sub){
			
			JSnav[itm].sub.each(function(subNav,key){
				
				//navTemplate = '<img class="subnav_'+key+' subNavElement" src="'+ROOT+'images/nav/'+itm+'_'+key+'.png" style="cursor:pointer" /><br/>';
				navTemplate = '<div class="subnav_'+key+' subNavElement">'+subNav.link_text+'</div>';
				
				if(key == 0 && subNav.link_text.indexOf('NEUE KURSE') != -1){
					navTemplate = '<div class="subnav_'+key+' subNavElement" style="color:#E41A35 !important">'+subNav.link_text+'</div>';
				}
				
				navTemplate = navTemplate.toDOM();
				
				navTemplate[0].addEvents({
					'click'	: function(){
						
						$('loader').setStyle('display','block');
						
						_self.loadPage.delay(300,this,subNav.id)
						_self.highlightNav(itm,key);
						
					}
				});
				
				navTemplate.inject($('submenu'));	

			})
			
		}
		
	},
	
	//ajax page request
	loadPage: function(id){
		try{
			$('BoxOverlay').destroy();
			$('pop').destroy();
		}catch(err){}
		
		
		_self.genInternalLinks();

		new Request.JSON({
			url: 'index.php',
			method: 'post',
			data: 'mode=ajax&id=' + id + '&reqCol=text',
			onComplete: function(response){
				
				cont = response;
				
				$('loader').setStyle('display','none');

				$('cHold').setStyle('opacity',0);
				
				//cont = JSON.decode(response);

				cont.text = cont.text.stripScripts(true);
				
				cont.text = cont.text.replace('<<','&laquo;');
				cont.text = cont.text.replace('>>','&raquo;');
				cont.text = cont.text.replace('&lt;&lt;','&laquo;');
				cont.text = cont.text.replace('&gt;&gt;','&raquo;');

				$('cHold').set('html',cont.text);
				
				if(id==1){
					$('cHold').setStyle('padding',0);
				}
				else{
					$('cHold').setStyle('padding','0 0 0 180px');
				}
				_self.blend($('cHold'),300,1);		
				
			},
			onRequest: function(){
				$('cHold').empty();
			}			
		}).send();
	},
	
	//interne Links finden und ajaxLinks erstellen
	genInternalLinks: function(){
		$$('#cHold a').each(function(iLink){
			//L(iLink.href)
		});
	},
	
	//navigation highlighten wenn aktiv
	highlightNav: function(main,sub){
		
		_self.resetNav(main,sub);
		
		$$('.nav_'+main)[0].src = ROOT+'images/nav/'+main+'_a.png';
		
		if(sub !== ''){
			//$$('.subnav_'+sub)[0].src = ROOT+'images/nav/'+main+'_'+sub+'_a.png';
			
			
			$$('.subnav_'+sub)[0].setStyle('color','#E41A35');
			
			
		}
	},
	
	//nav zurücksetzen
	resetNav: function(main,sub){
		$$('.navElement').each(function(nav,key){
			
			nav.src = ROOT+'images/nav/'+key+'.png';
		});
		

		$$('.subNavElement').each(function(nav,key){
			
			//nav.src = ROOT+'images/nav/'+main+'_'+key+'.png';
			nav.setStyle('color','#868686');
		});
	},
	
	//stopper für cases
	showcaseInit: function(){
		if (Browser.Engine.trident != true) {
			var mousemove = window;
		}
		else{
			var mousemove = window.document;
		}
		mousemove.addEvent('mousemove', function(event){
			mouseX = event.page.x;
			if (mouseX >= 730) {
				if ($defined(_self.mO) && $defined(_self.mO2)) {
					_self.aniStatus = 'pause';
					_self.mO.pause();
					_self.mO2.pause();
				}
			}
			else {
				if (_self.aniStatus == 'pause') {
					try {
						_direction = 'up';
						posiNew = $('showHolder').getStyle('top')
						
						_self.aniStatus = 'play';
						
						_self.mO2.options.duration = 999999 * _self.aniSpeed;
						_self.mO.options.duration = 999999 * _self.aniSpeed;
						_self.mO2.start({
							'top': [posiNew, -999999]
						})
						if (Browser.Engine.trident) {
							_self.mO.start({
								'background-position-y': [posiNew, -999999]
							})
						}
						else {
							_self.mO.start({
								'background-position': ['0 ' + posiNew, '0 ' + -999999]
							})
						}
					} 
					catch (e) {
					}
				}
			}
		});
		
		$('goUp').addEvents({
			'click': function(){
				_direction = 'up';
				_self.aniStatus = 'pause';
				_self.mO.pause();
				_self.mO2.pause();
				
				var posi_old = $('showHolder').getPosition().y;
				var elemHeight = 420;
				var posiNew = ((((posi_old / elemHeight).toInt()) * elemHeight) - elemHeight);
				
				morphObjectHolder = new Fx.Morph($('showHolder'), {
					duration: 500
				});
				morphObjectHolder.start({
					'top': posiNew
				});
				
				morphObject = new Fx.Morph($('container'), {
					duration: 500
				});
				if (Browser.Engine.trident) {
					morphObject.start({
						'background-position-y': posiNew + 'px'
					});
				}
				else {
					morphObject.start({
						'background-position': '0 ' + posiNew + 'px'
					});
				}
			}
		});
		$('goDown').addEvents({
			'click': function(e){
				_direction = 'down';
				_self.aniStatus = 'pause';
				_self.mO.pause();
				_self.mO2.pause();
				
				var posi_old = $('showHolder').getPosition().y;
				var elemHeight = 420;
				var posiNew = ((((posi_old / elemHeight).toInt()) * elemHeight) + elemHeight);
				
				morphObject = new Fx.Morph($('showHolder'), {
					duration: 500
				});
				morphObject.start({
					'top': posiNew
				});
				morphObject = new Fx.Morph($('container'), {
					duration: 500
				});
				if (Browser.Engine.trident) {
					morphObject.start({
						'background-position-y': posiNew + 'px'
					});
				}
				else {
					morphObject.start({
						'background-position': '0 ' + posiNew + 'px'
					});
				}
			}
		})
		this._verzReq('buildBox');
	},
	
	//aufbau kreativbox und duplikate (wird 2mal durchlaufen)
	buildBox: function(res){
		
		obj = res.result;
		
		titel = '<div class="showtitle"></div>';
		titel = titel.toDOM();
		
		titel.inject($$('.box')[_self.BUILDcnt]);
		
		var picarr = [];
		
		obj.each(function(e){
			
			if($defined(e.ld.bilder)){
				
				e.ld.bilder.media.each(function(bPic){
					
					picarr.push('http://www.farbmuehle.ch/upload/325x_verz_'+bPic.name);
				})

			}
			
		});
		
		picarr.push('http://www.farbmuehle.ch/images/bg.png');

		//prelaod images
		new Asset.images(picarr, {
			onComplete: function(){
				
				obj.each(function(e,key){
					mPic = e.ld.bilder.media[0].name;
					
					bMore = e.ld.bilder.media.length > 1 ? '<div class="boxmore" style="background-image:url('+ROOT+'images/more'+key+'.png);"></div>' : '';
	
					var imgStr = '';
					
					e.ld.bilder.media.each(function(sPic,pKey){
						imgStr += '<img id="pic_'+key+'_'+pKey+'" style="cursor:pointer;position:absolute;left:'+pKey*325+'px" src="http://www.farbmuehle.ch/upload/325x_verz_'+sPic.name+'" width="325" alt="" border="0" />';
					});
					
					marg = key == 0 ? 20 : 40;
					
					titelCol = ['4a2a2d','6f1e27','2d2b14','791b11','5d440c','09ac97'];
					
					var itm = '<div class="showitem" style="margin-top:'+marg+'px"><div class="picHolder">'+imgStr+'</div><div class="boxtitle"><div class="titletxt"><div style="font-size:13px;font-weight:bold;color:#'+titelCol[key]+'">'+e.ld.titel+'</div></div>'+bMore+'</div><div class="boxtxt">'+e.ld.text.text[0]+'</div></div>'
					
					itm = itm.toDOM();
					
					itm.inject($$('.box')[_self.BUILDcnt]);
					
					//event für slider wenn mehrere bilder vorhanden
					bm = itm[0].getChildren()[1].getChildren()[1];
					
					if($defined(bm)){
						
						var scroll = new Fx.Scroll( itm[0].getChildren()[0], {
							wait: false,
							duration: 700,
							transition: Fx.Transitions.Quad.easeInOut
						});
						var totPic = itm[0].getChildren()[0].getChildren().length-1;
						
						var x =1;
									
						bm.addEvent('click',function(){

							if (x > totPic)x = 0;

							scroll.start(325*x, 0);
							
							x++;
						});
					}
					
					//event für pop-up funktion den bildern zuweisen
					allPics = itm[0].getChildren()[0].getChildren();
					
					var picarr2 = [];
					
					allPics.each(function(aPic){
						
						pPic = aPic.clone(true,true);
						pPic.src = pPic.src.replace('325x','800x');
						pPic.width = 800;
						
						picarr2.push(pPic);
					})
					
					allPics.each(function(aPic,key2){
						aPic.addEvent('click',function(){
							
							popHolder = new Element('div',{'id':'popHolder','styles':{'position': 'relative','width': 800,'height': 600,'overflow': 'hidden'}});
							
							_self.activePic = key2;
										
							picarr2.each(function(p,key3){
								p.setStyles({
									'position': 'absolute'
									,'left': 800*key3
								})
								p.inject(popHolder);
							})
							
							_self.showPop(800,620,'Detailansicht',popHolder,key);
							
						})
					})
					
				});
				
				if (_self.BUILD == true) {
					_self.BUILDcnt = 1;
					_self.BUILD = false;
					_self.buildBox(res);
				}
				else {
					$$('.box')[1].setStyle('top', $$('.box')[0].getStyle('height').toInt() + 19);
					_self.bgSlide.delay(3000);
					_self.collision.periodical(200);
				}

			}
		});

	},
	
	//animation bg & showcase
	bgSlide: function(){
		
		_self.bgPos++;
		x = _self.bgPos * 999999;
		
		_self.mO = new Fx.Morph($('container'), {
			transition: Fx.Transitions.linear,
			duration: 999999 * _self.aniSpeed		//,fps:50
			,
			onComplete: function(){
				_self.bgSlide();
				
			}
		});
		
		
		
		
		_self.mO2 = new Fx.Morph($('showHolder'), {
			transition: Fx.Transitions.linear		//,fps:50
			,
			duration: 999999 * _self.aniSpeed
		
		});
		_self.mO2.start({
			'top':  - 999999 + 'px'
		});
		
		if (Browser.Engine.trident) {
			_self.mO.start({
				'background-position-y': '-' + x + 'px'
			});
		}
		else {
			_self.mO.start({
				'background-position': '0 -' + x + 'px'
			});
		}
		
		
	},
	
	//abfrage wann box zum bildrand raus ist
	collision: function(){
		if (_direction != 'down') {
			
			pos = -($('showcase').getChildren()[0].getPosition().y);
			
			actTop = ($('showHolder').getChildren()[_self.switcher].getStyle('top').toInt() * _self.ElCounter).toInt();
			
			if (pos > actTop) {
			
				h = $$('.box')[0].getStyle('height').toInt();
				
				x = _self.switcher;
				_self.switcher = _self.switcher == 0 ? 1 : 0;
				cl = $('showHolder').getChildren()[_self.switcher];
				
				//cl.inject($('showHolder'));
				
				cl.setStyle('top', $('showHolder').getChildren()[x].getStyle('top').toInt() + h + 19);
			}
			
		}
		else {
			pos = -($('showcase').getChildren()[0].getPosition().y);
			
			actTop = ($('showHolder').getChildren()[_self.switcher].getStyle('top').toInt() * _self.ElCounter).toInt();
			
			if (pos < actTop) {
			
				h = $$('.box')[0].getStyle('height').toInt();

				x = _self.switcher;
				_self.switcher = _self.switcher == 1 ? 0 : 1;
				cl = $('showHolder').getChildren()[_self.switcher];

				cl.setStyle('top', $('showHolder').getChildren()[x].getStyle('top').toInt() - h-19);
			}
		}		
	},
	
	//tooltip
	showInfo: function(x,txt){
		
		if($defined($('infobox')))$('infobox').destroy();
		
		infobox = '<div id="infobox"></div>';
		infobox = infobox.toDOM();
		
		
		infobox.inject(document.body);
		
		infobox.set('html',txt);
		
		infobox.setStyles({
			'left': x+20
		})
	},
	
	//Ein- Ausblend FX
	blend: function(mE,dur,val){

		mO = new Fx.Morph(mE, {
			duration: dur
		});
		mO.start({
			'opacity': val
		});
		
	},
	
	showPop: function(w,h,t,cont,key){
		
		if(_self.mO != null){
				try{
				_self.aniStatus = 'pause';
				_self.mO.pause();
				_self.mO2.pause();
			}catch(err){}
		}
		
		
		if(!$defined($('BoxOverlay'))){
			overlay = new Element('div', {
				'id': 'BoxOverlay'
				,'styles': {'display': 'block','z-index': '998','position': 'absolute','top': '0','left': '0','background-color': '#000','opacity': 0}
			}).inject(document.body);
			
			$('BoxOverlay').setStyles({
				width: window.getScrollWidth() + 'px',
				height: window.getScrollHeight() + 'px'
			});
			
			win = new Element('div', {
				'id': 'pop'
				,'styles': {'position': 'fixed','width': w,'top': 100,'left': '50%','z-index': '999','height': h + 'px','overflow':'hidden','margin-left': '-' + w/2 + 'px','padding': '40px 20px 20px 20px','text-align': 'left','display': 'block','opacity': 0,'color': '#999','background-color': '#fff'}
			});
			
			winTitel = new Element('div',{
				'id': 'winTitle'
				,'html':t
				,'styles': {'position':'absolute','top':0,'left':0,'height':16,'width':w+40,'background-color':'#E41A35','color':'#fff','padding':'4px 0 0 10px','font-weight':'bold'}
			}).inject(win);
			
			winRes = new Element('div',{
				'id': 'winRes'
			}).inject(win);
			
			win.inject(document.body);
			
			closer = new Element('div', {
				'id': 'closer',
				'styles': {
					'position': 'absolute'
					,'top': 0
					,'right': 0
					,'cursor': 'pointer'
				},events:{
					'click': function(){
						this.closePop();
					}.bind(this)
				}
			}).inject(win);
			
			new Element('div', {
				'html': 'schliessen'
				,'styles': {
					'position': 'absolute'
					,'top': 0
					,'right': 21
					,'cursor': 'pointer'
					,'background-color': '#fff'
					,'height': 17
					,'padding': '3px 5px 0 5px'
				},events:{
					'click': function(){
						this.closePop();
					}.bind(this)
				}
			}).inject(win);

		}else{
			$('pop').setStyles({
				'width': w
				,'height': h
				,'margin-left': '-'+w/2+'px'
			})
			
			$('BoxOverlay').setStyles({
				width: window.getScrollWidth() + 'px',
				height: window.getScrollHeight() + 'px'
			});
			
			$('winTitle').set('html',t);
		}
		

		
		
		cont.inject(winRes);
		
		if(cont.getChildren().length > 1){
			
			bm = '<div class="boxmorePop" style="z-index:999;background-image:url('+ROOT+'images/more'+key+'.png);"></div>';
			bm = bm.toDOM();

			var totPic = cont.getChildren().length-1;
						
			bm.addEvent('click',function(){
				_self.activePic++;
				if (_self.activePic > totPic)_self.activePic = 0;

				scroll.start(800*_self.activePic, 0);
				
				
			})
			
			bm.inject(winRes);
		}
		
		var scroll = new Fx.Scroll($('popHolder'), {
			wait: false,
			duration: 700,
			transition: Fx.Transitions.Quad.easeInOut
		
		});
		
		scroll.start(800 * _self.activePic,0)
		
		//winRes.set('html',cont);
		
		this.blend($('BoxOverlay'),350,0.7);
		this.blend($('pop'),350,1);
		
	},
	
	//PopUp schliessen
	closePop: function(){
		this.blend($('BoxOverlay'),450,0);
		this.blend($('pop'),350,0);
		$('winRes').empty();
		
		
	}
});



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//DESK JS
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
deskJS = new Class({
	
	Implements: addDeskJS
	
	,options: {
		_verzUser: ''
	}
	
	,initialize: function(options) {
		
		this.setOptions(options);
		
		HistoryManager = new HistoryManager();
		
		this.history = HistoryManager.register(
			'verz'
			,['']
			,function(values){
				if(values.length > 1) this._directLink('verz', values[0], values[1], values[2])
			}.bind(this)
			,function(values){
				return 'verz(' + values[0] + '_' + values[1] + '_' + values[2] + ')';
			}.bind(this)
			,/verz\((.*)_(.*)_(.*)\)/
		);
		
		HistoryManager.start();
	},
	
	_directLink: function(mode, DBstr, lrID, ldID){
		
	}
});




