//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//INIT
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
window.addEvent('resize',function(){
 location.href = location.href; 
});
window.addEvent('domready',function(){
	if(aktivnav == 'home'){
		
		$('content').setStyle('opacity',0);
		$('content').setStyle('display','block');
		$('logo').setStyle('height',0);
	
		$('navigation').setStyle('opacity',0);
	}else{
		
		$('logo').setStyle('height',210);
		$('content').setStyle('display','block');
		$('content').setStyle('opacity',1);
	}
	
	
	$('logo').setStyle('display','block');
	$('navigation').setStyle('display','block');
		
	
	if (aktivnav == 'home') {
		
		
		mO = new Fx.Morph($('logo'), {
			duration: 1200
			,onComplete: function(){
				mO = new Fx.Morph($('navigation'), {
					duration: 500
				});
				mO.start({
					'opacity': 1
				});
			}
		});
		mO.start({
			'height': 210
		});
		
		mO = new Fx.Morph($('content'), {
			duration: 400
		});
		mO.start({
			'opacity': 1
		});
	}
	
	if (Browser.Engine.name == "trident" && Browser.Engine.version < 5) {
		$('navigation').setStyle('margin-left',3);
		DD_belatedPNG.fix('.bg');
	}
	
	new core();
	new navi();

	
});

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//CORE / implements _verzReq
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var core = new Class({
	
	initialize: function(){
		new news();
	}

})


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TREE CLASS
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var news = new Class({

	Implements: [Options, Events]
	
	,options: {
		root: root
		,_verzLocal:0
		,_verzUser: 'luzbier'
		,_verzDebug:1
	}

	,initialize: function(){
		
		this._verzReqStr = {
			type: 'all'
			,user: this.options._verzUser
			,table: {
				listingdatas_news: 'ld'
				,listingrows_news: 'lr'
				,listings_news: 'l'
			}
			,condition: {
				
			}
			,fields: 'lr.*, ld.*'
			,order: 'lr.id ASC, ld.datum DESC'
			,language: 'de'
		}
		
		this._verzReq('showNews');
	}
	
	,showNews: function(res){
		
		this.rNames = [];
		
		res.result.each(function(newseintrag,key){
			if(this.rNames.contains(newseintrag.lr.rubrikname)==false)
			{
				this.rNames.push(newseintrag.lr.rubrikname);
			}
			
		},this);
		
//		$$('.verz').each(function(verzBox,key){
//			verzBox.set('id','c_'+this.rNames[key]);
//		},this);
		
		
		res.result.each(function(newseintrag,key){
			if(newseintrag.lr.rubrikname=='NewsArchiv'){
				$('cat4').setStyle('visibility','visible');
				$('c_NewsArchiv').setStyle('visibility','visible');
			}
			var txt = newseintrag.ld.text.text[0];
			var txtSliced = txt.slice(0,150);
			var pointer = 'default'
			var smallText='';
			//if (txt.contains('<a href')== false){
				smallText= txtSliced+'... [mehr]';
				pointer='pointer';
			//}
			//else{
				//smallText= txt;
			//}
			var left=0;
			var txtWidth='325px'
			if($defined(newseintrag.ld.pictures.media)&& newseintrag.lr.rubrikname!='News'){
				new Element('img',{
					'src':root+'upload/150x150_verz_'+newseintrag.ld.pictures.media[0].name,
					'id':'thump'+key,
					'height':'60px',
					'styles':{
						'height':'60px',
						'position':'absolute',
						'float':'left',
						'margin-right':'5px',
						'margin-top':'5px',
						'cursor':pointer,
						'left':0
					}
					,events:{
						'click': function(){
							entryBig(newseintrag,key);
						}
					}
				}).inject($('c_'+newseintrag.lr.rubrikname))
				$('thump'+key).removeAttribute('width');
				left='35px';
				txtWidth='280px';
			}
			if(key!=0) var margTop = '5px';
			else var margTop = '0px';
			if (newseintrag.lr.rubrikname != 'NewsArchiv') {
				new Element('div', {
					'id': 'dirSmall' + key,
					'class':'dirSmall',
					'html': '<b>' + newseintrag.ld.title + '</b><br/>' + smallText,
					'styles': {
						'cursor': pointer,
						'padding-top': '5px',
						'padding-bottom':'5px',
						'margin-left': '5px',
						'position':'relative',
						'left':left,
						'width':txtWidth
					},
					events: {
						'click': function(){
							entryBig(newseintrag, key);
						}
					}
				}).inject($('c_' + newseintrag.lr.rubrikname));
			}
			else{
				new Element('div', {
					'id': 'dirSmall' + key,
					'html': newseintrag.ld.datum.slice(0,10)+'<br/><b>' + newseintrag.ld.title + '</b><br/>' + smallText+'<br/><br/><hr/>',
					'styles': {
						'cursor': pointer,
						'margin-top': '5px',
						'margin-left': '5px'
					},
					events: {
						'click': function(){
							entryBig(newseintrag,key);
						}
					}
				}).inject($('c_NewsArchiv'))
			}
		},this);
		
		this.rNames.each(function(itm,key){
			$('cat'+(key+1)).set('html',itm);
		});
		function entryBig(newseintrag,key){
			var txtDate = newseintrag.ld.datum;
			var txtDateSliced = txtDate.slice(0,10).replace(/-/g,'.');
			txtDateSliced = txtDateSliced.split('.');
			txtDateSliced = txtDateSliced[2]+'.'+txtDateSliced[1]+'.'+txtDateSliced[0];
			if ($defined(newseintrag.ld.pictures.media)) {
				newseintrag.ld.pictures.media.each(function(pic){
					$('contentText').set('html', txtDateSliced + '<br/><b>' + newseintrag.ld.title + '</b><br/><img src="'+root+'upload/150x150_verz_' + pic.name+'" style="float:left;margin:5px 5px 5px 5px" /><p id="entryBig">' + newseintrag.ld.text.text[0] + '<br/><br/><a href="' + root + 'index.php">zurück</a><br/></p><br/>')
				}, this);
				
				if(parseInt($('contentText').getStyle('height'))<150) $('contentText').setStyle('height','170px');
			}
			else $('contentText').set('html', txtDateSliced + '<br/><b>' + newseintrag.ld.title + '</b><br/><p id="entryBig">' + newseintrag.ld.text.text[0] + '<br/><br/><a href="' + root + 'index.php">zurück</a><br/></p>')
		}
	}
});
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Navi Class
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var navi = new Class({
	initialize: function(){
		//SUBMENUDIVS SUCHEN
		alldiv = $$('.subnav');
		alldiv.each(function(div,item,index) {

			if(div.className == "subnav"){
				div.addEvent('mouseenter',function(e) {
					this.showSub(div.id);
				}.bind(this));
				div.addEvent('mouseleave',function(e) {
					this.hideSub(div.id);
				}.bind(this));
			}
			
		},this);
		
		//ALLEN MAINNAVS AKTION ZUORDNEN BEI OVER
		var allmenu = $$('.mainNav');
		allmenu.each(function(li,item,index) {
			var posi = li.getPosition().x +1;
			li.addEvent('mouseenter', function(e){
				$('subnav' + item).setStyle('left', posi -22 + 'px');
				$('subnav' + item).setStyle('height', 100+'px');
				$('subnav' + item).setStyle('opacity', 1);
				$('subnav' + item).setStyle('display', 'block');
			});
			
			li.addEvent('mouseleave', function(e){
				if ($defined($('subnav' + item))) {
					$('subnav' + item).setStyle('opacity', 0);
					$('subnav' + item).setStyle('display', 'none');
				}
			});
			
		});		
	},
	
	showSub: function(subelement){	
		var no = subelement.substr( subelement.length-1, 1);
		
		$(subelement).setStyle('opacity',1);
		$(subelement).setStyle('display','block');
	},
	
	hideSub: function(subelement){
		var no = subelement.substr( subelement.length-1, 1);
		
		$(subelement).setStyle('opacity',0);
		$(subelement).setStyle('display','none');
	}

})

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//REQUEST CLASS
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
/*
 * Request.implement
 * 
 * Requestfunktionen
 * Connectbereich für den Verzeichnisaufruf
 * 
 * @version		1.0
 * 
 * @author		GO4WEB Internet Agentur
 * @copyright		2010 Author
 *
 */
var VerzCore = {
	
	
	/*
	 * Options
	 * 
	 * _verzUser = ''		name des User
	 */
	_verzOptions: function(options){
		this.setOptions(options);
	}
	
	,_verzReqData: function(){
		
		this._verzReqStr = {
			type: 'all'
			,user: this.options._verzUser
			,table: {
				listingdatas: 'ld'
				,listingrows: 'lr'
				,listings: 'l'
			}
			,condition: {
//				OR abfrage
//				,0: {
//					'm.sommer': '1',
//					'm.winter':'1'
//				}
			}
			,fields: 'lr.*,ld.*'
			,order: 'ld.id DESC'
			,language: 'de'
		}
	}
	
	,_verReqChange: function(reqObj, changObj){
		
		var buildObj, addStr, newTbl={};
		var tblList = {listingdatas: 'ld', listingrows: 'lr', listings: 'l'};
		
		if(reqObj) buildObj = reqObj;
		else buildObj = this._verzReqStr;
		if($defined(changObj['table']) && $type(changObj['table']) == 'string'){
			if(changObj['table'] == '') addStr = '';
			else addStr = '_' + changObj['table'];
			$H(tblList).each(function(items, key){
				newTbl[key + addStr] = items;
			});
			changObj['table'] = newTbl;
		}
		$H(changObj).each(function(items, key){
			reqObj[key] = items;
		});
		
		return reqObj;
	}
	
	,_verzReq: function(onCompletFunc){
		
		if(this.options._verzDebug == 1) debugStr = '&debug=1';
		else debugStr = '';
		
		if(!this._verzReqStr) this._verzReqData();
		
		// tempsStr
		if($defined(this._verzTempReqStr) && this._verzTempReqStr){
			reqStr = this._verzTempReqStr;
			this._verzTempReqStr = false;
		}else{
			reqStr = this._verzReqStr;
		}
		
		// Falls Arrayreq nur mit einem Element
		if(reqStr.length == 1) reqStr = reqStr[0];
		
		new Request({
			url: 'index.php'
			,method: 'post'
			,data: 'mode=verzeichnis&local=' + this.options._verzLocal + debugStr +'&request=' + encodeURIComponent(JSON.encode(reqStr))
			,noCache: true
			,onComplete: function(response){
				var req = JSON.decode(response);
				fDelay = 0;
				
				this[onCompletFunc].delay(fDelay, this, [req]);
				
			}.bind(this)
		}).send();
	}
	
	/*
	 * _verzFormMulti	Merg des MultiformRequest mit tableName adding
	 * 
	 * sortPath		SortPath Falls das Object nach dem Merg sortiert werden soll (siehe _verzFormSort)
	 * order		Order des Sorting
	 *
	 */
	,_verzFormMulti: function(req, sortPath, order){
		
		var newReqArr = [];
		var reqOut = [];
		var count = 0;
		
		if(!$defined(req.result[0][0])) req.result = [req.result];
		req.result.each(function(items, key){
			var tblName = req.tblName[key];
			items.each(function(subitems, subkey){
				if($defined(subitems.lr)) subitems.lr['tableName'] = tblName;
				if($defined(subitems.ld)) subitems.ld['tableName'] = tblName;
				newReqArr.push($H(subitems));
			});
			count++;
		}, this);
				
		if(sortPath) newReqArr = this._verzFormSort(newReqArr, sortPath, order);
		
		reqOut['count'] = newReqArr.length;
		reqOut['result'] = newReqArr;
		
		return reqOut;
	}
	
	/*
	 * _verzFormSort	Umsortierung eines Hash (Achtung Object muss zu Hash formatiert werden)
	 * 
	 * array		Zu sortierenden Hash
	 * path			Sortierpfad (ld.datum)
	 * order		desc / asc
	 * 
	 */
	,_verzFormSort: function(array, path, order){
		
		for (var i = 0; i < array.length; i++) {
			
			var currVal = array[i].getFromPath(path);
			var currElem = array[i];
			
			var j = i - 1;
			while ((j >= 0) && (array[j].getFromPath(path) > currVal)) {
				array[j + 1] = array[j];
				j--;
			}
			array[j + 1] = currElem;
		}
		
		if(order == 'desc') array.reverse();
		
		return array;
	}
}

news.implement(VerzCore);
