/*
* Buildclass berggasthof.ch
*/

var reqDmy = {
	'type': 'all',
	'user': 'berggasthof',
	'table': {
		'listingdatas': 'ld',
		'listingrows': 'lr',
		'listings': 'l'
	},
	'condition': {},
	'fields': 'lr.*,ld.*',
	'order': 'ld.datum DESC',
	'language': 'de'
};
	
var gluecklich = new Class({
	
	//implements
	Implements: addDeskJS
	
	//options
	,options: {
		
	}
	
	//initialization
	,initialize: function(options) {
		
		// set options
		this.setOptions(options);
		
		// HistoryManager
		HistoryManager = new HistoryManager();
		
		// Textspeicherung
		this.infoTxt = $('infoBox').get('html');
		
		//Anzeige der Einträge
		this.startEntry = 0;
		this.showEntries = 7;
		
		if(LMODE == 'login' || ID == 435 || ID == 438 || ID == 440 || ID == 441){
			setMain = 'home'
			HistoryManager.noLoad = 1;
		}
		
		// history
		if(top.location.hash != ''){
			
			var reqRul = /main\((.*)-(.*)\)/;
			reqRul.exec(top.location.hash);
			
			setMain = RegExp.$1;
			setSub = RegExp.$2.toInt();
		}else if($defined(HistoryManager.noLoad) && HistoryManager.noLoad == 1){
			
			setMain = 'noload';
			setSub = '';
		}else{
			
			setMain = 'home';
			setSub = '';
		}
		
		this.history = HistoryManager.register(
			'main',
			[setMain, setSub], // default, page 0
			function(values){
				this.loadPart(values[0], parseInt(values[1]));
			}.bind(this)
			,function(values){
				return 'main(' + values[0] + '-' + values[1] + ')';
			},
			/main\((.*)-(.*)\)/ // the regexp to match "page-index(0)"
		);
		
		if(setMain == 'home') this.loadPart('home');
		HistoryManager.start();
	}
	
	// Aufruf durch Verzeichnisverlinkung
	,_directLink: function(DBstr, lrID, ldID){
		if(DBstr == 'agentur') DBstr = '';
		this.loadPart(DBstr, parseInt(ldID));
	}
		
	,changePart: function(main, sub){
		
		if(main == '') main = 'agentur';
		else if(main == 'inspiration') main = 'wissen';
				
		$$('.topnav').each(function(items, key){
			items.getFirst().set('src', items.getFirst().get('src').replace('_a.gif', '.gif'));
		});
		
		if(main != 'home' && $defined($('n' + main))) $('n' + main).getFirst().set('src', $('n' + main).getFirst().get('src').replace('.gif', '_a.gif'));
	}
	
	,detailRequest: function(main, id){
		
		this.historyMain = main;
		
		if(main == 'agentur') tblName = '';
		else tblName = main;
		
		reqOver = {
			'table': tblName
			,'condition': {
				'ld.id': id
			}
		};
		reqObj = this._verReqChange(reqDmy, reqOver);
		this._verzTempReqStr = reqObj;
		this._verzReq('detailLoad');
	}
	
	,detailLoad: function(req){
		
		newReq = req.result[0];
		
		partName = req.tblName[0];
		newReq["ld"]["tableName"] = partName;
		newReq["lr"]["tableName"] = partName;
		
		
		this.loadPart(this.tmpMain, newReq, 'noload');
	}
	
	// loadPart content
	,loadPart: function(main, sub, filter){
		
		var noOut = 0;
		
		if(main == 'noload'){
			noOut = 1;
			this.historyMain = main;
		}else if($type(sub) == 'number'){
			
			this.tmpMain = main;
			this.subPart = true;
			
			this.detailRequest(main, sub);
			return;
		}
		
		if(main != 'home' && $defined($('tmp-home'))) $('tmp-home').destroy();
		
		// Historyset
		if($defined(sub) && ($type(sub) == 'hash' || $type(sub) == 'object')) subId = sub.ld.id;
		else subId = '';
		if(!filter || filter == 'noload') HistoryManager.setState('main(' + main + '-' + subId + ')');
		this.changePart(main, sub);
		
		this.archreq = false;
		this.filterreq = false;
		this.querverweis = false;
		
		// rücksetzen blättern
		if(this.historyMain != main){
			this.startEntry = 0;
			this.showEntries = 7;
		}
		
		if(sub == 'quer'){
			this.querverweis = true;
			noOut = 1;
		}else if(sub == 'filter'){
			this.filterreq = true;
			noOut = 1;
		}else if(sub == 'archiv'){
			this.archreq = true;
			this.archObj = filter;
			noOut = 1;
		}
		
		//Backlinks
		try{$('backLink').destroy();}catch (e) {}
		
		if(sub == 'clientlist'){
			
			reqOver = {
				'table': 'arbeit'
				,'order': 'ld.kunde, lr.rubrikname ASC'
				,'condition': {}
			};
			reqObj = this._verReqChange(reqDmy, reqOver);
			this._verzTempReqStr = reqObj;
			this._verzReq('showAllClients');
			noOut = 1;
			
			
		}else if(main != 'home'){
			this.subPart = true;
		}else{
			this.subPart = false;
		}
		
		if(noOut == 0){
			
			if(this.historyMain == main && sub){
				this.detailOut(sub);
				this.buildTop();
				
				new Element('br').inject($('innerC'));
				new Element('br').inject($('innerC'));
			}else{
				if(main == 'agentur') main = '';
				
				// Standart RequestDummy
				this._verzReqData();
				
				if(main != 'home'){
					
					// Rubrik Request
					this.partStr = main;
					
					if(this.partStr && this.partStr != 'agentur'){
						
						this._verzReqStr['table'] = {};
						this._verzReqStr['table']['listings' + '_' + this.partStr] = 'l';
						this._verzReqStr['table']['listingrows' + '_' + this.partStr] = 'lr';
						this._verzReqStr['table']['listingdatas' + '_' + this.partStr] = 'ld';
					}
				}else{
					
					// Home Multirequest
					var multiReqObj = [];
					this.options._verzTables.each(function(items, key){
						
						this.partStr = items;
						
						reqObj = {
							'type': 'all'
							,'user': 'berggasthof'
							,'table': {
								listingdatas: 'ld'
								,listingrows: 'lr'
								,listings: 'l'
							}
							,'condition': {}
							,'fields': 'lr.*,ld.*'
							,'order': 'ld.datum DESC'
							,'language': 'de'
						};
						
						
						multiReqObj.push(this.setUserPart(reqObj));
					}, this);
					
					this._verzReqStr = multiReqObj;
				}
				
				// Aufruf Request
				this._verzReq('mainOut');
			}
		}
		
		// PartLevels
		if(main == '') main = 'agentur';
		this.activeSubPart = sub;
		this.historyMain = main;
		
		// Layoutbox rechts
		if(main == 'noload'){
			main = 'home';
			this.historyMain = main;
		}
		if(sub != 'filter') this.layoutBuild(main, sub, filter);
	}
	
	,layoutBuild: function(main, sub, filter){
		
		var txtiEl = $('infoBox');
		var txtfEl = $('filterBox');
		
		var filterEl = $('filterDiv');
		
		var atEl = $('archiv-text');
		var txtaEl = $('archivBox');
		var alEl = $('archiv-loader');
		
		var txtT = 'Bitte warten...';
		var textA = 'ARCHIV';
		var textB = 'KUNDEN'
		var subDetail = 0;
		
		if(main == 'home') txtiEl.set('html', this.infoTxt);
		else if(main == 'agentur') txtiEl.set('html', 'Was, wer, wann, wie und wo und überhaupt und noch einiges mehr, berichten, dokumentieren und zeigen wir hier. Direkt, offen und bodenständig.');
		else if(main == 'arbeit') txtiEl.set('html', 'Am Ende einer gelungenen Arbeit steht der Lohn. Unser Lohn ist die Freude unserer Kunden an unserer täglichen Arbeit. Und deshalb zeigen wir hier unsere Arbeiten mit Freude. Nehmen Sie selbst einen Einblick – oder zwei oder drei – und wer weiss, vielleicht wird schon bald Ihre Freude auch zu unserer Freude... Wir freuen uns drauf.');
		else if(main == 'wissen') txtiEl.set('html', 'Die Welt ist voller Ideen, Überraschungen, Abbildungen, Farben, Texte, Aussagen und Wissen. Wenn Sie wissen möchten, was uns bewegt, dann sind Sie hier genau richtig.');
		
		// Detailansicht
		var buildFilter = 0;
		if(this.historyMain == 'arbeit' && sub && sub != 'quer' && sub != 'clientlist'){
			
			(function(){
				$('mTitle').set('html', 'empfehlung'.toUpperCase());
				
				txtiEl.empty();
			
				var kundlink = new Element ('a', {
				 	'html': '» Weitere Projekte dieses Kunden'
				 	,'styles': {
				 		'color': '#666666'
				 		,'text-decoration': 'none'
				 		,'font-size': '11px'
				 		,'cursor': 'pointer'
				 	}
				});
				if($defined($('knamelink'))){
					kundlink.cloneEvents($('knamelink'));
					kundlink.inject(txtiEl);
					new Element('br').inject(txtiEl);
				}
				
				if($defined($('rnamelink'))){
					var partlink = new Element ('a', {
					 	'html': '» Weitere Projekte / ' + $('rnamelink').get('text')
					 	,'styles': {
					 		'color': '#666666'
					 		,'text-decoration': 'none'
					 		,'font-size': '11px'
					 		,'cursor': 'pointer'
					 	}
					});
					
					partlink.cloneEvents($('rnamelink'));
					partlink.inject(txtiEl);
				}
				
				if($defined($('rnamelink'))){
					txtfEl.empty();
					var partlink = new Element ('a', {
					 	'html': '» ' + $('rnamelink').get('text')
					 	,'styles': {
					 		'color': '#666666'
					 		,'text-decoration': 'none'
					 		,'font-size': '11px'
				 			,'cursor': 'pointer'
					 	}
					});
					
					partlink.cloneEvents($('rnamelink'));
					partlink.inject(txtfEl);
				}
				subDetail = 1;
				
			}.bind(this)).delay(1);
			
			$('filter-loader').set('styles', {
				opacity: 0
			});
			
			buildFilter = 1;
		}else if(this.historyMain == main && sub && filter != 'noload' && main != 'wissen'){
			subDetail = 1;
		}
		
		
		$('mTitle').set('html', 'info'.toUpperCase());
		
		filterEl.set('styles', {
			display: 'block'
		});
		
		// Filterbereich
		if (main == 'home'){
			
			filterEl.set('styles', {
				display: 'none'
			});
			
		}else if(!subDetail && !buildFilter){
			
			txtfEl.empty();
			txtfEl.set('text', txtT);
			
			filterEl.set('styles', {
				display: 'block'
			});
			$('filter-loader').set('styles', {
				opacity: 1
			});
			
			(function(){
				
				// Filterrequest
				if(main == 'agentur') main = '';
				reqOver = {
					'table': main
				};
				reqObj = this._verReqChange(reqDmy, reqOver);
				if(main != ''){
					reqOver = {
						'condition': {
							'lr.parentrID !=': 0
						}
						,'order': 'lr.parentrID, lr.position ASC'
					};
				}else{
					reqOver = {
						'condition': {}
						,'order': 'ld.datum DESC'
					}
				}
				reqObj = this._verReqChange(reqObj, reqOver);
				
				this._verzTempReqStr = reqObj;
				this._verzReq('filterBuild');
				
			}.bind(this)).delay(200);
		}
		
		if(main != 'arbeit' && sub != 'archiv'){
			
			txtaEl.empty();
			atEl.set('html', textA);
			txtaEl.set('text', txtT);
			
			$('archiv-loader').set('styles', {
				opacity: 1
			});
			
			(function(){	
				
				// Home Multirequest
				var multiReqObj = [];
				this.options._verzTables.each(function(items, key){
					
					if(items != '') tnAdd = 'listingdatas' + '_' + items;
					else tnAdd = 'listingdatas';
					
					reqObj = {
						'type': 'all'
						,'user': 'berggasthof'
						,'table': {}
						,'condition': {}
						,'fields': 'ld.datum, ld.id'
						,'order': 'ld.datum DESC'
						,'language': 'de'
					};
					reqObj['table'][tnAdd] = 'ld';
					
					multiReqObj.push(reqObj);
				}, this);
				
				this._verzTempReqStr = multiReqObj;
				
				this._verzReq('archivBuild');
				
			}.bind(this)).delay(400);
		}
		if(main == 'arbeit' || main == 'home'){
			
			if (main == 'home') {
				var atEl = $('tmp-text');
				var txtaEl = $('tmpBox');
				var alEl = $('tmp-loader');
			}
			if($defined(atEl) && atEl.get('text') != textB){
				
				atEl.set('html', textB);
				txtaEl.set('text', txtT);
				
				$('archiv-loader').set('styles', {
					opacity: 1
				});
			}
			
			if($defined(txtaEl)){
				txtaEl.empty();
				alEl.set('styles', {
					opacity: '0'
				});
				
				new Element ('a', {
				 	'html': '» Kundenliste'
				 	,'styles': {
				 		'color': '#666666'
				 		,'text-decoration': 'none'
				 		,'font-size': '11px'
				 		,'cursor': 'pointer'
				 	}
				 	,'events': {
				 		'click': function(){
				 			this.historyMain = 'home';
				 			this.loadPart(this.historyMain , 'clientlist');
				 		}.bind(this)
				 	}
				}).inject(txtaEl);
				
				new Element('br').inject(txtaEl);
			}
		}
	},
	
	//Kundenliste
	showAllClients: function(req){
		
		$('innerC').empty();
		
		clientList = $H();
		
		req.result.each(function(item, key){
			if (!$defined(clientList[item.ld.kunde])) {
				clientList.include(item.ld.kunde, $H({
					kunde: item.ld.kunde
					,rubrikname: [
						item.lr.rubrikname
					]
				}));
			}else{
				if(clientList[item.ld.kunde]["rubrikname"].indexOf(item.lr.rubrikname) != 0) clientList[item.ld.kunde]["rubrikname"].combine([item.lr.rubrikname]);
			}
		});
		
		clientList.each(function(item, key){
			
			new Element ('b', {
			 	'html': item.kunde
			 	,'styles': {
			 		'color': '#666666'
			 		,'text-decoration': 'none'
			 		,'font-size': '12px'
					,'font-weight': 'bold'
					,'cursor': 'pointer'
			 	},events: {
					'click': function(){
						
						this.loadPart('arbeit', 'quer', item.kunde);
						
						reqOver = {
							'table': 'arbeit'
							,'condition': {
								'ld.kunde': item.kunde
							}
						};
						reqObj = this._verReqChange(reqDmy, reqOver);
						this.querObj = reqObj;
						
						this._verzTempReqStr = reqObj;
						
						// Aufruf Request
						this._verzReq('mainOut');
						
					}.bind(this)
				}
			},this).inject($('innerC'));
			
			new Element('br').inject($('innerC'));
						
			temp = true;
			clientList[item.kunde]["rubrikname"].each(function(wrk, key2){
				
				if(temp == true) wrkStr = wrk;
				else wrkStr = ' | '+wrk
				
				new Element ('span', {
				 	'html': wrkStr
				 	,'styles': {
				 		'color': '#666666'
				 		,'text-decoration': 'none'
				 		,'font-size': '11px'
						,'cursor': 'pointer'
				 	},events:{
						'click':function(){
								
							reqObj = {
								'type': 'all',
								'user': 'berggasthof',
								'table': {
									'listingdatas_arbeit': 'ld',
									'listingrows_arbeit': 'lr',
									'listings_arbeit': 'l'
								},
								'condition': {
									'lr.rubrikname': wrk
									,'ld.kunde': item.kunde
									,'lr.id =': 'l.rowID'
								},
								'fields': 'lr.*,ld.*',
								'order': 'ld.datum DESC',
								'language': 'de'
							}
							
							this._verzTempReqStr = reqObj;
						
							// Aufruf Request
							this._verzReq('mainOut');
						}.bind(this)
					}
				},this).inject($('innerC'));
				
				temp = false;
			},this);
			
			new Element('br').inject($('innerC'));
			new Element('br').inject($('innerC'));
			
		},this);
	}
	
	// Filteraufbau
	,filterBuild: function(req){
		
		var txtfEl = $('filterBox');
		txtfEl.empty();
		
		var boxTxt = '';
		
		filterList = $H();
		req.result.each(function(item, key){
			if(this.historyMain != 'agentur'){
				fitem = item.lr.rubrikname;
				fitemN = fitem;
			}else{
				fitem = item.ld.verfasser;
				fitemN = 'Beiträge von ' + item.ld.verfasser
			}
			if (!$defined(filterList[fitem])) {
				filterList.include(fitem, $H({
					name: fitemN
				}));
			}
		}, this);
				
		filterList.each(function(item, key){
			
			new Element ('a', {
			 	'html': '» ' + item.name + '<br />'
			 	,'styles': {
			 		'color': '#666666'
			 		,'text-decoration': 'none'
			 		,'font-size': '11px'
					,'cursor': 'pointer'
			 	},events:{
					'click':function(){
						
						this.loadPart(this.historyMain, 'filter', item.name)
						this.filterRequest(item.name);
					}.bind(this)
				}
			}).inject(txtfEl);
		}, this)
		
		$('filter-loader').set('styles', {
			opacity: 0
		});
	},
	
	filterRequest: function(itemname){
				
		this.itemname = itemname;
		this.archreq = false;
		this.querverweis = false;
		
		if (this.historyMain == 'wissen') {
			reqOver = {
				'table': 'wissen'
				,'condition': {
					'lr.rubrikname': itemname,
					'lr.id =': 'l.rowID'
				}
			};
			reqObj = this._verReqChange(reqDmy, reqOver);
		}else if(this.historyMain == 'arbeit'){
			
			reqOver = {
				'table': 'arbeit'
				,'condition': {
					'lr.rubrikname': itemname,
					'lr.id =': 'l.rowID'
				}
			};
			reqObj = this._verReqChange(reqDmy, reqOver);
		}else if(this.historyMain == 'agentur'){
			
			reqOver = {
				'table': ''
				,'condition': {
					'ld.verfasser': itemname.replace('Beiträge von ','')
					,'lr.id =': 'l.rowID'
				}
			};
			reqObj = this._verReqChange(reqDmy, reqOver);
		}
		
		
		this._verzTempReqStr = reqObj;
		
		// Aufruf Request
		this._verzReq('mainOut');

		
	}
	
	// Archivaufbau / Datum
	,archivBuild: function(req){
		
		var archEl = $('archivBox');
		archEl.empty();
		$('archiv-loader').set('styles', {
			opacity: '0'
		});
		
		req = this._verzFormMulti(req, 'ld.datum', 'desc');
		
		datumList = $H();
		
		req.result.each(function(items, key){
			
			if(this.historyMain == 'agentur') f = '';
			else f = this.historyMain;
						
			if (items.ld.tableName == f || this.historyMain == 'home') {
						
				dtemp = items.ld.datum.replace(' 00:00:00', '');
				dSplit = dtemp.split('-');
				
				datumStr = this.options.monthArr[(dSplit[1].toInt() - 1)] + ' ' + dSplit[0];
				if (!$defined(datumList[datumStr])) {
					datumList.include(datumStr, $H({
						count: 1,
						id: [items.ld.id],
						tableName: [items.ld.tableName]
					}));
				}else{
					datumList[datumStr].set('count', datumList[datumStr]['count'] + 1);
					datumList[datumStr]['id'].extend([items.ld.id]);
					datumList[datumStr]['tableName'].extend([items.ld.tableName]);
				}
			}
		}, this);
		
		var allYears = [];
		var yDiv;
		var x = 0;
		datumList.each(function(value, key){
				
			y = key.split(' ');
			y = y[1];
			
			if(allYears.indexOf(y) == -1){
				
				
				allYears.push(y);
				
				yDiv = new Element('div',{
					'html': '» '+y+'<br/>'
					,'class': 'year'
					,'styles':{
						'height': 20
						,'overflow': 'hidden'
						,'cursor': 'pointer'
						,'color': '#666666'
					},events:{
						'click': function(e){
							
							e.stop();
							
							$$('.year').each(function(yItm){
								if(yItm.getStyle('height').toInt() > 20){
									morphObject = new Fx.Morph(yItm, {
										duration: 300
									});
									morphObject.start({
										'height': 20
									});
								}	
							})
							
							aniH = this.getStyle('height').toInt() > 20 ? 20 :  this.getScrollSize().y.toInt();
							
							morphObject = new Fx.Morph(this, {
								duration: 700
							});
							morphObject.start({
								'height': aniH
							});
							
							
						}
					}
				}).inject(archEl);

				
			}
			
				
			var partObj =  new Element ('a', {
			 	'html': '&nbsp;&nbsp;» ' + key + ' (' + value['count'] + ')<br />'
			 	,'styles': {
			 		'color': '#666666'
			 		,'text-decoration': 'none'
			 		,'font-size': '11px'
			 		
			 	}
			 	,'events': {
			 		'click': function(e){
			 			
						e.stop();
						
						this.loadPart(this.historyMain, 'archiv', value);
						this.archivRequest(value);
			 		}.bind(this)
			 	}
			}).inject(yDiv);
			
			x++;
			
		}, this);
		
		$$('.year')[0].setStyle('height',$$('.year')[0].getScrollSize().y);
	}
	
	,archivRequest: function(obj){
		
		this.filterreq = false;
		this.querverweis = false;	
		var reqCond = $H({});
		obj.tableName.each(function(value, key){
			
			if(value == '') value = 'agentur';
			
			// Erstellend des Obj falls tableobj nicht vorhanden / Build Request Table
			if (!$defined(reqCond[value])) reqCond[value] = [];
			reqCond[value].include(obj.id[key]);
		});
		
		var multiReqObj = [];
		

		reqCond.each(function(items, key){
			
			reqObj = {
				'type': 'all'
				,'user': 'berggasthof'
				,'table': {
					'listings': 'l'
					,'listingrows': 'lr'
					,'listingdatas': 'ld'
				}
				,'condition': {}
				,'fields': 'ld.*, lr.*'
				,'order': 'ld.datum DESC'
				,'language': 'de'
			};
			
			if (key != 'agentur') {
				reqObj['table'] = {};
				reqObj.table['listings' + '_' + key] = 'l';
				reqObj.table['listingrows' + '_' + key] = 'lr';
				reqObj.table['listingdatas' + '_' + key] = 'ld';
			}
			
			if(items.length > 1) reqObj.condition['ld.id'] = items;
			else reqObj.condition['ld.id'] = items[0];
			
			multiReqObj.push(reqObj);
		});
		
		this._verzTempReqStr = multiReqObj;
		this._verzReq('mainOut');
	}
	
	// Überschreiben des Tablepart
	,setUserPart: function(obj){
		
		if(this.partStr && this.partStr != 'agentur'){
			
			obj['table'] = {};
			obj['table']['listings' + '_' + this.partStr] = 'l';
			obj['table']['listingrows' + '_' + this.partStr] = 'lr';
			obj['table']['listingdatas' + '_' + this.partStr] = 'ld';
		}
		
		return obj;
	}
	
	// Übersichtbereich
	,mainOut: function(req) {
		
		$('innerC').setStyle('opacity',0);
		
		// reqResult in globalvar setzten
		this.reqArr = req;
		
		// Vorbereitung nach Multireq
		this.reqArr = this._verzFormMulti(this.reqArr, 'ld.datum', 'desc');
				
		$('innerC').empty();
		
		if(this.reqArr.result.length < this.startEntry) this.startEntry = 0;
		
		this.reqArr.result.each(function(items, key){
			this.buildMainDetail(items, key, 0);
		}, this);
		
		
		this.buildTop();
		
		//GERNERIERUNG BLÄTTERFUNKTION
			
		
		bTrail = new Element('div', {
			'id': 'overw'
			,'styles':{
				'width': 450
				,'height': 20
				,'text-align': 'center'
				,'padding-bottom': '5px'
			}
		}).inject($('innerC'));
		
		new Element('div', {
			'html': '<'
			,'styles': {
				'width': 17
				,'height': 14
				,'text-align':'center'
				,'float': 'left'
				,'padding': '3px 0 0 0'
				,'cursor': 'pointer'
				//,'border': '1px #CC9966 solid'
				,'margin': '0 1px 0 0'
			},events:{
				'click': function(){
					
					this.startEntry = this.startEntry-1 * this.showEntries;
					
					if(this.startEntry < 0) this.startEntry  = (this.totalPages-1) * this.showEntries;
					
					if(this.totalPages > 1){
						if(this.archreq == true){
				 			this.archivRequest(this.archObj);
						}else if(this.filterreq == true){
							
							this.filterRequest(this.itemname);
							
						}else if(this.querverweis == true){
							
							this._verzTempReqStr = this.querObj;
							
							this._verzReq('mainOut');
						}else{
							this.loadPart(this.historyMain);
						}
					}
						
					
				}.bind(this)
			}
		},this).inject(bTrail);
		
		
		n = 1;
		for(i = 0; i < this.reqArr.count; i++){
			
			if(i % this.showEntries == 0){
				
				bPage = new Element('div', {
					'html': n
					,'class': 'page'
					,'styles': {
						'width': 17
						,'height': 14
						,'text-align':'center'
						,'float': 'left'
						,'padding': '3px 0 0 0'
						,'cursor': 'pointer'
						,'color': '#CC9966'
						//,'border': '1px #CC9966 solid'
						,'margin': '0 1px 0 0'
					}
				},this).inject(bTrail);
				
				n++;
			}
		}
		
		$$('.page').each(function(itm,key){
			itm.addEvent('click',function(){
				
				this.startEntry = (key) * this.showEntries;
				
				if (this.totalPages > 1) {
					
					if(this.archreq == true){
			 			this.archivRequest(this.archObj);
					}else if(this.filterreq == true){
						
						this.filterRequest(this.itemname);
					}else if(this.querverweis == true){
							
						this._verzTempReqStr = this.querObj;
						
						this._verzReq('mainOut');	
						
					}else{
						this.loadPart(this.historyMain);
					}
	
				}
				
			}.bind(this,key));
			
			itm.addEvent('mouseover',function(){
				
				if($$('.page')[key].getStyle('background-color') != '#cc9966'){
					$$('.page')[key].setStyles({
						//'background-color': '#EFC9A4'
					});
				}
				
			}.bind(this,key));
			
			itm.addEvent('mouseout',function(){
				
				
				if($$('.page')[key].getStyle('background-color') != '#cc9966'){
					$$('.page')[key].setStyles({
						'background-color': '#fff'
					});
				}
				
				
				
			}.bind(this,key));
			
			this.totalPages = key+1;
			
			if(this.totalPages < 2){
				bTrail.setStyle('opacity',0);
			}else{
				bTrail.setStyle('opacity',1);
			}
			
		},this);
		
		
		$$('.page')[this.startEntry/this.showEntries].setStyles({
			//'background-color': '#CC9966'
			'color': '#333333'
		});
		
		new Element('div', {
			'html': '>'
			,'styles': {
				'width': 17
				,'height': 14
				,'text-align':'center'
				,'float': 'left'
				,'padding': '3px 0 0 0'
				,'cursor': 'pointer'
				//,'border': '1px #CC9966 solid'
				,'margin': '0 1px 0 0'
			},events:{
				'click': function(){
					
					this.startEntry = this.startEntry+1 * this.showEntries;
					if(this.startEntry > (this.totalPages-1) * this.showEntries) this.startEntry = 0;	
					if(this.totalPages > 1){
						if(this.archreq == true){
				 			this.archivRequest(this.archObj);
						}else if(this.filterreq == true){
							
							this.filterRequest(this.itemname);
							
						}else if(this.querverweis == true){
							
							this._verzTempReqStr = this.querObj;
							
							this._verzReq('mainOut');
						
						}else{
							this.loadPart(this.historyMain);
						}
	
					}
				}.bind(this)
			}
		},this).inject(bTrail);
		
		new FX().fadeIt($('innerC'),300,1);
	}
	
	// Übersichtbereich
	,detailOut: function(item) {
		
		$('innerC').empty();
		this.buildMainDetail(item, 0, 1);
	}
	
	// Detailansicht für overview/detail
	,buildMainDetail: function(items, key, detail){
		
//		if(items == false){
//			this.loadPart('home');
//			return;
//		}
		
		//Reduzierung für Blätterfunktion
		$('innerC').setStyle('opacity',0);
		if (key >= this.startEntry && key < this.startEntry + this.showEntries || detail) {
				
			// List-Container
			new Element('div', {
				'id': 'list_' + key
			}).inject($('innerC'));
			
			listEl = $('list_' + key);
			
			// Subtitle
			var knamestr;
			
			if(items.ld.tableName == 'arbeit'){
				knamestr = items.ld.kunde;
				rnamelink = items.lr.rubrikname;
			}else{
				knamestr = items.lr.rubrikname;
				rnamelink = "Beitrag von " + items.ld.verfasser;
			}
			
			subtStr = new Element('a',{
				'id': 'knamelink'
				,'html': knamestr
				,'events': {
					'click':function(){
						
						this.loadPart(items.ld.tableName, 'quer', knamestr);
						
						reqOver = {
							'table': items.ld.tableName
							,'condition': {}
						};
						if(items.ld.tableName == 'arbeit') reqOver['condition']['ld.kunde'] = items.ld.kunde;
						else reqOver['condition']['lr.rubrikname'] = items.lr.rubrikname;
						
						reqObj = this._verReqChange(reqDmy, reqOver);
						this.querObj = reqObj;
						
						this._verzTempReqStr = reqObj;
						
						// Aufruf Request
						this._verzReq('mainOut');
						
					}.bind(this, items)
				}
				,styles: {
					'color': '#666666'
					,'text-decoration': 'none'
					,'cursor': 'pointer'
				}
			});
			
			subtStr2 = new Element('a',{
				'id': 'rnamelink'
				,'html': rnamelink
				,'events': {
					'click':function(){
						
						this.loadPart(items.ld.tableName, 'quer', rnamelink.replace('Beitrag von ', ''));
						
						reqOver = {
							'table': items.ld.tableName
							,'condition': {}
						};
						if(items.ld.tableName == 'arbeit') reqOver['condition']['lr.rubrikname'] = items.lr.rubrikname;
						else reqOver['condition']['ld.verfasser'] = items.ld.verfasser;
						
						reqObj = this._verReqChange(reqDmy, reqOver);
						this.querObj = reqObj;
						
						this._verzTempReqStr = reqObj;
						
						// Aufruf Request
						this._verzReq('mainOut');
						
					}.bind(this, items)
				}
				,styles: {
					'color': '#666666'
					,'text-decoration': 'none'
					,'cursor': 'pointer'
				}
			});
						
			// Bereichsname
			//if ($defined(items.lr) && items.lr.tableName) 
				partStr = items.lr.tableName;
			//else 
				//partStr = this.partStr;
			var partName = this.options.partKeyName[this.options._verzTables.indexOf(partStr)];
			
			if(this.subPart == true){
				if(this.historyMain == 'wissen') partName = 'inspiration'.toUpperCase(); 
			}
			
			// this.setNavigation(partName.toLowerCase());
			
			dStr = Date.parse(items.ld.datum);
			dStr = dStr.format('%d.%m.%Y');
			
			eHeader = new Element('div', {
				'id': 'head_' + dStr,
				'styles': {
					'margin': '0'
				}
			}).inject(listEl);
			
			new Element('a', {
				'html': partName,
				'styles': {
					'float': 'left',
					'color': '#CC9966',
					'font-weight': 'bold',
					'text-decoration': 'none',
					'cursor': 'pointer'
				},
				events: {
					'click': function(){
					
						if (partName == 'INSPIRATION') t = 'wissen';
						else  t = partName;
						
						this.loadPart(t.toLowerCase());
						return false;
					}.bind(this)
				}
			}).inject(eHeader);
			
			// Datum
			new Element('div', {
				'html': '&nbsp;|&nbsp;' + dStr,
				'styles': {
					'float': 'left'
				}
			}).inject(eHeader);
			
			// nicht falls keine Rubrik vorhanden
			if(items.ld.tableName != '' && items.lr.rubrikname.toLowerCase != 'kategorie'){
				
				// 1 Bereich Adding
				new Element('span', {
					'html': '&nbsp;|&nbsp;'
				}).inject(eHeader);
				
				subtStr.inject(eHeader);
			}
			
			new Element('span', {
				'html': '&nbsp;|&nbsp;'
			}).inject(eHeader);
			
			// 2 Bereich Adding
			subtStr2.inject(eHeader);
			
			new Element('div', {
				'styles': {
					'clear': 'both'
				}
			}).inject(eHeader);
			
			// Titel
			new Element('div', {
				'html': items.ld.titel,
				'class': 'title',
				'styles': {
					'margin': '5px 0 7px 0',
					'font-weight': 'bold'
				}
			}).inject(listEl);
			
			
			
			// Overview Bereiche
			listPic = items.ld.medien;
			if (!detail) {
				
				var dn = listPic.media[0].name;
				var fend = dn.substring(dn.length-3, dn.length);
				if(fend == "flv"){
					
					// movie
					var flvPath = this.options.root + 'upload/' + listPic.media[0].name;
					var pic = new Element('a', {
						id: 'flvplayer'
						,href: flvPath
						,styles: {
							display: 'block'
							,width: listPic.media[0].width
							,height: listPic.media[0].height
						}
					}).inject(listEl);
					flowplayer("flvplayer", "_tplinc/jsfw/tools/flowplayer/flowplayer_brand.swf");
				}else{
					
					// bild
					var pic = new Element('img', {
						'src': this.options.root + 'upload/450x_verz_' + listPic.media[0].name,
						'width': 450,
						'border': 0
					}).inject(listEl);
					
					if ((items.ld.text != '' && items.ld.text.length > 25) || $defined(listPic.media[1])){
						
						pic.addEvent('click', function(){
							
							partName = items.ld.tableName;
							if(partName == '') partName = 'agentur';
							
							this.historyMain = partName;
							this.loadPart(partName, items);
							
						}.bind(this, items));
						
						pic.set('styles', {
							'cursor': 'pointer'
						});
					}
				}
				
				// Shorttext
				if (items.ld.shorttext == '') {
					shortTxt = {
						'text': ''
					};
				}else{
					shortTxt = items.ld.shorttext;
				}
				
				var overwObj = new Element('div', {
					'html': shortTxt.text + ' ',
					'class': 'text',
					'styles': {
						'margin': '17px 0 0 0'
					}
				}).inject(listEl);
				
				if ((items.ld.text != '' && items.ld.text.length > 25) || $defined(listPic.media[1])){
					
					var marg = new Element('div', {
						'styles': {
							'margin': '7px 0 0 0'
						}
					}).inject(listEl);
					
					var overwMore = new Element('a', {
						'text': 'WEITER >',
						'styles': {
							'color': '#cc9966',
							'text-decoration': 'none',
							'font-weight': 'bold',
							'cursor': 'pointer'
						},
						'events': {
							'click': function(){
								
								partName = items.ld.tableName;
								if(partName == '') partName = 'agentur';
								
								this.historyMain = partName;
								this.loadPart(partName, items);
								
							}.bind(this, items)
						}
					}).inject(marg);
				}
				
				
			// Details jeweiligen Bereiche
			} else {
				
				//Backlinks
				var bLink = $('backLink');
				if($defined(bLink)) $('backLink').destroy();
				
				new Element ('div',{
					'id': 'backLink'
					,'html': '« zurück'
					,'styles': {
						'position': 'absolute'
						,'top':80
						,'color':'#CC9966'
						,'cursor': 'pointer'
					},events:{
						'click': function(){
							this.loadPart(this.historyMain)
						}.bind(this)
					}
				}).inject($('headlines'));
				
				// Bildlist
				listPic.media.each(function(picItem, picCount){
				
					if (picCount > 0) {
					
						if (picItem.objtext != '') picbp = 0
						else picbp = 27;
						
						var dn = picItem.name;
						var fend = dn.substring(dn.length-3, dn.length);
						if(fend == "flv"){
							
							// movie
							var flvPath = this.options.root + 'upload/' + picItem.name;
							var pic = new Element('a', {
								id: 'flvplayerlist_' + picCount
								,href: flvPath
								,styles: {
									display: 'block'
									,width: picItem.width
									,height: picItem.height
								}
							}).inject(listEl);
							flowplayer("flvplayerlist_" + picCount, "_tplinc/jsfw/tools/flowplayer/flowplayer_brand.swf");
						}else{
							
							// bild
							new Element('img', {
								'src': this.options.root + 'upload/450x_verz_' + picItem.name,
								'width': 450,
								'border': 0,
								'styles': {
									'margin': '0 0 ' + picbp + 'px 0'
								}
							}).inject(listEl);
						}
					}
					
					if (picCount == 0) {
					
						// Text
						longTxt = items.ld.text;
						if ($defined(longTxt) && longTxt.text[0].length > 5) {
							new Element('div', {
								'html': longTxt.text[0],
								'class': 'text',
								'styles': {
									'margin': '0 0 14px 0'
								}
							}).inject(listEl);
						}
					}
					
					if (picItem.objtext != '') {
						new Element('div', {
							'html': picItem.objtext,
							'class': 'text',
							'styles': {
								'margin': '0 0 17px 0',
								'color': '#CC9966'
							}
						}).inject(listEl);
					}
				}, this);
				
				// Notizaufbau
				if ($defined(items.ld.notizen)) {
				
					// Notizen
					noteTxt = items.ld.notizen;
					if ($defined(noteTxt)) {
						// spacer
						new Element('hr', {
							'styles': {
								'height': '1px',
								'margin': '0 0 9px 0'
							}
						}).inject(listEl);
						new Element('div', {
							'html': noteTxt.text,
							'class': 'text',
							'styles': {
								'margin': '0 0 9px 0'
							}
						}).inject(listEl);
					}
				}
			}
			
			// spacer
			new Element('hr', {
				'styles': {
					'height': '1px',
					'margin': '11px 0 10px 0'
				}
			}).inject(listEl);
		}
		
		new FX().fadeIt($('innerC'), 300, 1);
	}
	
	,topScroll: function(){
		new Fx.Scroll(window).toTop()
	}
	
	,buildTop: function(){
		
		StopDiv = new Element('div', {
			'styles': {
				'position': 'absolute'
				,'left': '425px'
				,'margin': '3px 0 0 0'
				,'text-align': 'right'
			}
		}).inject($('innerC'));
		
		new Element('a', {
			'html': 'Top',
			'styles': {
				'cursor': 'pointer'
				,'color':'#CC9966'
				,'text-decoration': 'none'
				,'font-weight': 'bold'
				,'cursor': 'pointer'
			},
			events: {
				'click': function(){
					this.topScroll();
					return false;
				}.bind(this)
			}
		}).inject(StopDiv);
		
		this.topScroll();
	}
});


// Expand Arrayfunctions
Array.implement({
	is_array: function(input){
		return typeof(input)=='object'&&(input instanceof Array);
	}
});


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FX CLASS
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var FX = new Class({

	fadeIt: function(morphElement,dur,val){

		morphObject = new Fx.Morph(morphElement, {
			duration: dur
		});
		morphObject.start({
			'opacity': val
		});
		
	}
	
});