$(document).ready(function(){
	window.netcon.inhalt.ausrichten();
	
	
	// flash-hintergrund laden
	var w = $(document).width();
	var h = $(window).height();
	
	var ps = {
		wmode: 'opaque',
		bgcolor: '#000000'
	};
	
	
	swfobject.embedSWF("/netcon_HG.swf", "hintergrund", w, h, "9.0.0", '', [], ps);
	
	
	// flash-hintergrund-groesse nach resizing anpassen
	$(window).resize(function(){
		window.netcon.hintergrund.resize();
		window.netcon.inhalt.ausrichten();
	});
	
	// nach oben-links aktivieren
	$('a.hoch').live('click', function(){
		netcon.scrollTo('body', 500);
	});
	// bild laden
	netcon.preload('/grafiken/buttons/nachoben_on.png');
	
	
	
	// seite vorbereiten
	netcon.inhalt.ausrichten();
	netcon.inhalt.menu.init()
	
	// zeitleiste aktivieren
	netcon.inhalt.zeitleiste.init();

});

window.netcon = {
	hintergrund: {
		/**
		 * passt die groesse des flash-hintergrunds beim resizen des
		 * fensters an.
		 */
		resize:	function(){
			$('#hintergrund').width($(window).width());
			$('#hintergrund').height($(window).height());
		}
	},
	inhalt: {
		/**
		 * richtet das inhalts-div der fenstergroesse entsprechend
		 * aus.
		 */
		ausrichten: function(){
			// fensterbreite
			var b = $(window).width();
			
			// standardverhaeltnis ermitteln (standardbreite: 1280, abstand
			// hier: 330
			var v = 1280 / 330;
			
			// neuen abstand ermitteln
			var a = Math.round(b / v);
			
			// wenn abstand kleiner als 280 oder 400, min-, maximalwert setzen
			a = a < 280 ? 280 : a > 400 ? 400 : a;
			
			
			// neue ausrichtung setzen
			var ob = this.div();
			ob.css('left', a + 'px');
			
			$('#seite').height($(window).height()-64);
			if($('#inhalt').height() < $('#seite').height()){
				$('#inhalt').height($('#seite').height());
			}
		},
		/**
		 * ermittelt das haupt-inhalts-element
		 */
		div: function(){
			if(!this.ob){
				this.ob = $('#seite');
			}
			return this.ob;
		},
		/**
		 * wechselt das kopfbild
		 * @param	p	pfad zum neuen bild
		 */
		kopfbild: function(p, t, c){
			var kb		= $('#kopfbild');
			var img		= $('#kopfbild img');
			var c		= c;
			var t		= t;
			
			
			
			// neues bild laden
			var neu = new Image();
			neu.src = p;
			
			// funktion zur kontrolle des ladestatus
			var ladekontrolle = function(){
				if(neu.complete){
					setzen();
				}
				else{
					setTimeout(ladekontrolle, 5);
				}
			}
			
			// funktion zum setzen des neuen bilds
			var setzen = function(){
				$(new Array(kb, img)).css('height', neu.height + 'px');
				img.attr('src', neu.src);
				$('#kopfbild .beschreibung').html(t);
				if(c && typeof(c) == 'function'){
					c();
				}
			}
			
			// ladekontrolle starten
			ladekontrolle();
		},
		/**
		 * laed eine gewuenschte seite per ajax
		 */
		laden: function(url){
			var ps = {
				a: 'inhalt',
				u: url
			};
			
			netcon.ajax.senden(ps, function(d){
				if(d && d.seite){
					netcon.preload([d.seite.ueberschrift_bild, d.seite.kopfbild], function(){
						// ueberschrift ausblenden
						var h1 = $('#seitentitel');
						h1.animate({
								width: '3px'
							}, 500,
							function(){
								// ueberschrift austauschen
								netcon.preload(d.seite.ueberschrift_bild, function(){
									h1.find('img').attr('src',d.seite.ueberschrift_bild).attr('alt', d.seite.ueberschrift);
									
									var __hoehe = h1.find('img').outerHeight(true);
									
									var __breite = h1.find('img').outerWidth(true)+'px';
									h1.animate({
										width: __breite
									}, 500);
								});
							}
						);
						var ih = $('#inhalt');
						ih.slideUp(500, function(){
							if(d.seite){
								// inhalt leeren
								ih.find('*:not(#kopfbild, #kopfbild *)').remove();
								ih.append(d.seite.inhalt);
								
								var skalieren = function(){
									// inhaltshoehe messen
									var div = $(document.createElement('div'));
									div.append(ih.clone().css('display','block').css('padding','0px').height('auto').width('600px'));
									div.css('width', '1px');
									div.css('overflow', 'hidden');
									div.css('position', 'absolute');
									div.css('left', '-1px');
									$('body').append(div);
									
									if((div.innerHeight(true)+215) < $(window).height()){
										ih.height($(window).height()-200);
									}
									else
									{
										ih.height('auto');
									}
									div.remove();
								}
								
								
								if(d.seite.kopfbild && d.seite.kopfbild != ''){
									$('div#kopfbild').css('display','block');
									
									// kopfbild wechseln und aschliessend inhalt 	zeigen
									netcon.inhalt.kopfbild(d.seite.kopfbild, d.seite.beschreibung, function(){
										skalieren();
										ih.slideDown(1000);
									});
								}
								else {
									$('div#kopfbild').css('display','none');
									skalieren();
									ih.slideDown(1000);
								}
							}
						});
					});
				}
			});
		},
		/**
		 * alle funktionen die fuer eine animation des menus erforderlich
		 * sind
		 */
		menu: {
			/**
			 * macht menus klickbar
			 */
			init: function(){
				var menus = $('#seite ul.navigation li.subnavi > a');
				menus.parent().attr('status', 0);
				menus.mouseenter(function(){
					$(this).find('img').attr('alt', '');
					netcon.inhalt.menu.toggle($(this).parent(), 1);
				});
				menus.parent().mouseleave(function(){
					if(!$(this).hasClass('aktiv')){
						netcon.inhalt.menu.toggle($(this), 0);
					}
				});
				
				
				// link-aufrufe abfangen
				menus.parent().find('ul li a:not(.extern)').click(function(){
					// aktiv-klasse allen menus entfernen
					$(this).parents('ul').find('li.aktiv').removeClass('aktiv');
					// dem geklickten menu hinzufuegen
					$(this).parents('li.subnavi').addClass('aktiv');
					// alle ohne aktiv-klasse einklappen
					$(this).parents('ul').find('li:not(.aktiv)').each(function(){
						netcon.inhalt.menu.toggle($(this), 0);
					});
					
					// link als aktiv setzen (klasse: gruen)
					menus.parent().find('ul li a:not(.extern)').removeClass('gruen');
					$(this).addClass('gruen');
					
					netcon.inhalt.laden(this.href);
					return false;
				});
			},
			toggle: function(ul, a){
				// menu holen
				var menu	= ul;
				var punkte	= menu.find('li');
				var img		= menu.find('a img');
				
				var i		= 0;
				var warte	= 100;
				
				
				menu.find('li').each(function(){
					var ob = this;
					
					// alten timeout entfernen
					if(this.timeout && this.timeout > 0){
						clearTimeout(this.timeout);
						this.timeout = 0;
					}
					
					// animationen stoppen
					$(this).stop();
					
					
					this.timeout = setTimeout(function(){
						if(a == 0){
							$(ob).animate({
								marginLeft: '10px',
								opacity: 0.0
							}, 250, function(){
								$(this).css('visibility', 'hidden');
							});
							img.attr('src', img.attr('src').replace(/_on/, '_off'));
						}
						else{
							$(ob).css('visibility', 'visible');
							$(ob).css('display', 'block');
							$(ob).css('opacity', 0.0);
							$(ob).animate({
								marginLeft: '0px',
								opacity: 0.99
							}, 250);
							img.attr('src', img.attr('src').replace(/_off/, '_on'));
						}
					}, i*warte);
					
					i++;
				});
			}
		},
		zeitleiste: {
			init:		function(){
				// oeffnen link mit funktion versehen
				$('a.zeitleiste').live('click', function(){
					if($(this).hasClass('oeffnen')){
						$(this).removeClass('oeffnen');
						$(this).css('width', '159px');
						$(this).css('background-image', $(this).css('background-image').replace(/open/, 'close'));
						netcon.inhalt.zeitleiste.oeffnen();
					}
					else {
						netcon.inhalt.zeitleiste.schliessen();
						$(this).addClass('oeffnen');
						$(this).css('width', '131px');
						$(this).css('background-image', $(this).css('background-image').replace(/close/, 'open'));
					}
				});
				
				// h3s innerhalb der projekte ausklappbar machen
				$('ul.zeitleiste li.projekt h3').live('click', function(){
					$(this).next().each(function(){
						if($(this).attr('tagName') == 'P'){
							if($(this).css('display') == 'none' && $(this).html() != ''){
								$(this).slideDown();
							}
							else{
								$(this).slideUp();
							}
						}
					});
				});
				
			},
			oeffnen:	function(){
				var i = 1;
				var d = 100;
				$('.zeitleiste li.unsichtbar').each(function(){
					var li = this;
					setTimeout(function(){
						$(li).slideDown(d);
					}, (d*i));
					i++;
				});
			},
			schliessen:	function(){
				var lis = $('.zeitleiste li.unsichtbar');
				var i = lis.length;
				var d = 150;
				lis.each(function(){
					var li = this;
					setTimeout(function(){
						$(li).slideUp(d);
					}, (d*i));
					i--;
				});
			}
		}
	},
	kontakt: {
		init: function(){
			$('#kontakt a').live('click', function(){
				netcon.kontakt.formularSenden();
			});
		},
		formularSenden: function(){
			var form = $('#kontakt');
			
			
			// felder holen
			var felder = {
				vorname:	form.find('input#vorname'),
				name:		form.find('input#name'),
				firma:		form.find('input#firma'),
				email:		form.find('input#email'),
				kopie:		form.find('input#kopie:checked'),
				nachricht:	form.find('textarea#nachricht')
			}
			
			var ok = true;
			for(feld in felder){
				var f = felder[feld];
				switch(feld){
					case 'vorname':
					case 'name':
					case 'email':
					case 'nachricht':
						if(f.val() == ''){
							var ok = false;
							f.css('background-color', '#cf9797');
							form.find('.anmerkung').css('color','#ab2c2c');
						}
						else{
							f.css('border', '1px solid #757575');
							f.css('background-color', '#ffffff');
						}
					break;
				}
			}
			
			// wenn nach dem feldercheck noch ok == true ist, senden wir
			// die daten an unseren ajax-controller
			var p = {
				a: 'kontakt',
				vorname: felder.vorname.val(),
				name: felder.name.val(),
				firma: felder.firma.val(),
				email: felder.email.val(),
				kopie: felder.kopie.val(),
				nachricht: felder.nachricht.val()
			}
			netcon.ajax.senden(p, function(d){
				if(d && d.s == 1){
					$('#kontakt').slideUp(250, function(){
						$(this).html('<p>Vielen Dank für Ihre Nachricht, wir setzen uns in Kürze mit Ihnen in Verbindung.</p>');
						$(this).slideDown(250);
					});
				}
				else {
					var f = $('#kontakt #email')
					f.before('<span style="color:#ab2c2c; margin:0px 0px 3px;">' + d.n + '</span>');
					f.css('background-color', '#cf9797');
				}
			});
		}
	},
	start: function(){
		this.kontakt.init();

		$('div.lichtjahre').fadeIn(500);

		$('ul.navigation').fadeIn(500, function(){
			$('div#inhalt').slideDown(500);
			h1 = $('h1#seitentitel');
			h1.css('width', '3px');
			netcon.preload(h1.find('img').attr('src'), function(){
				h1.animate({
					width: 220
				}, 500);
			});
		});
		
		
		// inhalt auf 95% setzen
		$('#inhalt').css('opacity', 0.95);
		$('#kopfbild').css('opacity', 0.95);
	}
};


window.netcon.ajax = {
	/**
	 * funktion zum senden von anfragen an den server
	 * @param	p	parameterobjekt; wird an den server uebergeben
	 * @param	c	callbackfunktion, die nach abschluss der
	 *				transaktion ausgefuehrt wird
	 * @param	g	(optional) get-variablen
	 * @param	t	(optional) typ der rueckgabe
	 * @param	w	(optional) soll das warteflag beachtet werden
	 *				(default: true)
	 */
	senden: function(p, c, g, t, w) {
		var ajax = this;
		
		if(w == undefined || w == true){
			if(ajax.warten == 1){
				return false;
			}
			else{
				ajax.warten = 1;
			}
		}
		if(typeof(t) == 'undefined'){
			t = "json";
		}
		
		
		$.post('/php/ajax.php' + (typeof(g) != 'undefined' ? '?' + g : ''), p, function(d){
			ajax.warten = 0;
			c(d);
		}, t);
		p.q = g;
		ajax.requests.parameter.push(p);
		ajax.requests.anzahl++;
	},
	requests: {
		anzahl:		0,
		parameter:	new Array()
	},
	info: function(){
	}
};



/**
 * scrollt zum uebergebenen element
 * @param	z	ziel; kann selector des elements oder jQuery-Objekt sein
 * @param	d	(optional) dauer des scrollings
 * @param	c	(optional) callback-funktion die nach scrolling ausgefuehrt werden soll
 */
window.netcon.scrollTo = function(z,d,c){
	if(typeof(z) == 'string'){
		z = $(z);
	}
	if(!d){
		d = 1000;
	}
	if(!c || typeof(c) != 'function'){
		c = function(){};
	}
	$('body, html').animate(
		{
			scrollTop: $(z).offset().top
		},
		d,
		c
	);
};


/**
 * funktion zum vorladen von bildern
 * @param	p	pfad oder array aus pfaden von bildern, die
 *				geladen werden sollen
 * @param	c	callback-funktion, die nach beenden des preload-
 *				vorgangs ausgefuehrt wird
 * @return	void
 */
window.netcon.preload = function(p, c)
{
	if(typeof(p) != 'object'){
		var p = [p];
	}
	
	var laden = function(p, c){
		if(p.length > 0){
			var __img = $(document.createElement('img'));
			var __src = p.pop();
			
			if(__src == null){
				laden(p, c);
				return;
			}
			
			__img.load(function(){
				laden(p, c);
			});
			
			__img.attr('src', __src);
		}
		else {
			if(c && typeof(c) == 'function'){
				c();
			}
		}
	}
	laden(p, c);
}


// callback-funktion fuer hintergrund
function StartWebsite(){
	netcon.start();
}


// funktion fuer den klick auf das logo
function LadeStartseite(){
	netcon.inhalt.laden('/');
	$('li.subnavi').each(function(){
		netcon.inhalt.menu.toggle($(this), 0);
	});
}

//netcon.start();

