	// GGL-Eyewear AJAX & History Handling
	// Kunde: Biedermann und Brandstift
	// Copyright 2010 by Hirbod Mirjavadi
	// www.nightstomp.com - info@nightstomp.com
	
        
	var ajaxCallStat 	= null; // ajax läuft
	var imageOverAjax 	= null; // variable für background-image
	
	(function(){
		
		// Ajax Handling
		var GGL = function(pageid) {

			// wenn Ajax läuft, abbrechen, damit wir nicht in eine Schleife geraten
			if (ajaxCallStat)
			{
				ajaxCallStat.cancel();
			}
			
			// URL des PHP Scripts
			var url = "ajax?pageid=" + pageid;
			
			// Starte Tween
			ajaxCallStat = new Fx.Tween('content',{
					onComplete: function(){
						
						// Ladebalken anzeigen
						showAjaxLoadingAnimation("1");
						
						// Ajax Request starten
						ajaxCallStat = new Request.HTML({
							method: 'post',
							update: $('content'),
							evalScripts: true,
							url: url,
							onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){
								ajaxCallStat = new Fx.Tween('content',{
										onComplete: function(){
											showAjaxLoadingAnimation("2"); // Ladebalken ausbleden
											
											// Wenn Variable für den Hintergrund gesetzt worden ist
											// wird es ausgetauscht
											if(imageOverAjax) {
												// Damit bei dem selben Hintergrund nicht wieder Fading stattfindet
												// prüfen wir schnell den src-Tag auf gleichen Wert
												
												if($$('.bg')[0].src != imageOverAjax){
													fadeImg(imageOverAjax); // Hintergrundbild austauschen
												}

											}
											
											// An dieser stelle muss leider ein Dirty-Fix stattfinden.
											// IE7 addet im DOM dem href automatisch http://domainname/...
											// Führt zu Problemen mit dem HistoryManager
											// Fix liest href ein, schneidet den Anfang ab und liefert
											// wie es sich gehört den path zurück.
                                            if(Browser.ie7 || Browser.ie6)
                                            {
                                                repairLinksForIE7();
                                            }
                                        	
											initGlassesOverview(); // Overview initialiseren
											update(); // History-Management Update-Funktion

											ajaxCallStat = null; // Ajax läuft nicht mehr
											imageOverAjax = false; // Kein Bild mehr in der VAR
											
											// Nur wenn es sich um ein iDevice handelt
											if(isiDevice)
											{
											    window.scrollTo(0,1); // versteckt die adress-bar im iPhone
											    
											    // 300 ms warten, bevor die Funktionen ausgeführt werden
											    window.setTimeout(function(){
											        refreshPositionFixed(); // ruft Funktion in site.js auf
    											    iPadFunctions(); 
											    }, 300);

											}
                                            
										}
									}
								).start('opacity', '0', '1');
							}
						}).send();
					}
				}).start('opacity', '1', '0');
			return false;
		}
		
	// Handler zum History-Change Event hinzufügen
	History.addEvent('change', GGL);

	// Listener, welcher alle Klicks handelt
	var listener = function(event){
		event.preventDefault(); // Url folgen

		var href = this.get('href'); // Url auslesen
		
		History.push(href); // neue URL mit Push senden (FF4 + Safari5 + Opera 10+)
	};

	//  Listener für den Back-Link
	var back = function(event){
		event.preventDefault();

		History.back(); // Go back
	};

	// Diese Methode wird beim update der page genutztu
	//um alle neu dazu gekommenen Links dem listener hinzuzufügen
	var update = function(){
		
		// Elemente ausschließen
		document.getElements('a:not([href=#]):not([href^=http://]):not([data-noxhr])').addEvent('click', listener);
	};

	// Beim Pageload Funktion update aufrufen, um alle Elemente zu bekommen
	window.addEvent('domready', update);

	// Prüfen ob der Browser pushState versteht, ansonsten Fallback auf Oldschool Methode
	if (!History.hasPushState()) window.addEvent('domready', function(){
		
		// Prüfen ob Hash vorhanden ist
		var hash = document.location.hash.substr(1);
		if (!hash) return; // Kein Hash, return!

		// Wenn der Hash der aktuellen Page entspricht, nichts tun
		var path = document.location.pathname.split('/');
		path = path[path.length - 1];
		if (hash == path) return;

		// Page mit der Ajax-Funktion aufrufen
		GGL(hash);
	});

	})();
	
	
	// Funktion um Bilder vorzuladen
	// geht ein übermitteltes array durch
	function preloadImages(values){
		var myImages = new Asset.images(
			[values], {
			onProgress: function(){
				
			},
			onComplete: function(){
				//$$('.glasses_colors')[0].get('morph').start({opacity: 1});
			}
		})
	}
	
	// Funktion um den Background zu faden
	function fadeImg(img){
	    
	    var durationTime = 200;
	    
	    if(isiPad){
	        durationTime = 1;
	    }
	    
		var myImages = new Asset.images(
			[img], {
			onProgress: function(){
			    showAjaxLoadingAnimation("1"); // Ladebalken einblenden
				$$('.bg')[0].set('morph', {
				    duration: durationTime, 
					onComplete:function(){
					    showAjaxLoadingAnimation("2"); // Ladebalken ausbleden
						$('fadeIt').empty(); // div leeren

						// Jetzt muss das Div etwas "dirty" gefüllt werden... der Safari macht sonst Probleme, wenn
						// nur das src ersetzt wird
						$('fadeIt').set('html', '<img class="bg activeslide" src="'+img+'" alt="" style="opacity: 0" />');
						
						var nimg = new Image();
						nimg.src = img;
						
						var img_height = nimg.height;
						var img_width = nimg.width;
						

						new Asset.images([nimg], {
							onComplete: function(){
							//	background_image.setStyle('height', 'auto'); // durch css angaben ist das bild in der regel verzerrt, script liest GrÃ¶ÃŸen falsch ein
								//var background_image_size = {'x': $('backgroundimage_width').get('value') * 1, 'y': $('backgroundimage_height').get('value') * 1}; // background_image.getSize()
							//	background_image.setStyle('height', '100%');
								new mooSizer(
									{
										bgElement: 'fadeIt',
										startwidth: img_width,
										startheight: img_height
									}
								).initialize();
							}
						});
						
						$$('.bg')[0].get('morph').start({opacity: 1}); // Opacity von 0 auf 1 morphen
					}
				});
			},
			onComplete: function(){
				$$('.bg')[0].get('morph').start({opacity: 0}); // Opacity von 1 auf 0 morphen

			}
		});	        

	}

	
	
	

