/**
 * JavaScript-Datei aller Webseiten, die eine Bildergalerie besitzen koennen;
 * Zustaendig fuer die Funktionalitaeten der Galerie auf der Webseite;
 * Zustaendig fuer die Serververbindungen der Galerie (AJAX)
 * 
 * (c) Christoph Oldendorf, 2009
 */
// --- SERVER-KONTAKT ---

// XMLHttpRequest-Objekte werden erzeugt
function createXMLHttpRequestObject()
{
	var resObject = null;
	try 
	{
		resObject = new ActiveXObject("Microsoft.XMLHTTP");
	} 
	catch (Error) 
	{
		try 
		{
			resObject = new ActiveXObject("MSXML2.XMLHTTP");
		} 
		catch (Error) 
		{
			try 
			{
				resObject = new XMLHttpRequest();
			} 
			catch (Error) 
			{
				alert("Erzeugung des XMLHttpRequest-Objektes ist nicht moeglich.");
			}
		}
	}
	return resObject;
}

function createAJAXObject()
{
	this.createXMLHttpRequestObject = createXMLHttpRequestObject;
}

var o = new createAJAXObject();
var resObject0 = o.createXMLHttpRequestObject();

/*************************************************************************************************************
Funktionalitaet um eine Vollstaendige Bildgalerie der Seite aus Flash herau in der LightBox zu erzeugen, mit Navigation
*************************************************************************************************************/
//Funktion um ein unsichtbares Div fuer die Lightbox Galerie zu erzeugen
function createLightBoxDiv()
{
	var objBody = document.getElementsByTagName("body").item(0);
	var objContainer = document.createElement("div");
	objContainer.setAttribute('id','lightBoxGallery');
	objContainer.style.display = 'none';
	objBody.appendChild(objContainer);	
}
// Funktion zum Hinzufuegen eines Bildes zur LightBox Galerie
function appendImage(link, title, id, setId) 
{
	new Insertion.Bottom('lightBoxGallery', '<a href="' + link + '" title="' + title + '" id="' + id + '" rel="lightbox[' + setId + ']">An image...</a>');
}
// Funktion um die Bildgruppe der Lightbox zu aktualisieren
function updateLightBox()
{
	myLightbox.updateImageList();
}
// Funktion um die Lightbox via Javascript zu triggern (z.B. aus Flash heraus)
function callLightBox(id) 
{
	$("ac_results").style.display = "none";
	myLightbox.start($(id));
}

// Startet die Medienelementabfrage, nachdem die Seite fertig geladen worden ist (aus der Datei 'main.js')
function startMediaCheck()
{
	createLightBoxDiv();
	// RegExp zur Analyse des von Typo3 generierten HTML Source codes fuer das Medienmodul
	var htmlStr=$('gallery').innerHTML;
	var flashvars = {pics:"",vids:"",bus:"",vus:"",thumbs:"",pdfs:"",uids:""};
	// Wir suchen alle platzierten Images
	var regExp = /href\=\"((typo3temp)||(uploads))\/pics\/[^\"]+[jJ][pP][eE]?[gG]/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		var previous="";
		for (var i=0;i<matches.length;i++)
		{
			var match=matches[i].substring(6);
			flashvars.pics+=match;
			if (i!=matches.length-1) flashvars.pics+="@,@";
			// Wir suchen die Bildunterschrift dazu
			try 
			{
				var regExp2 = new RegExp(match+'\" title\=\"[^\"]+');
				var matches2=htmlStr.match(regExp2);
				flashvars.bus+=matches2[0].replace(/,/,"@;@").substring(matches2[0].search('title="')+7);
				if (i!=matches.length-1) flashvars.bus+="@,@";
			}
			catch (Error)
			{
				// Anmerkung: IE7 vertauscht die Attribute href und title, so dass wir einen weiteren Test brauchen
				try 
				{
					var regExp2 = new RegExp(previous+'.+title\=\"[^\"]+');
					var matches2=htmlStr.match(regExp2);
					var regExp3 = new RegExp('title\=\"[^\"]+');
					var matches3=matches2[0].match(regExp3);
					flashvars.bus+=matches3[0].replace(/,/,"@;@").substring(matches3[0].search('title="')+7);
					if (i!=matches.length-1) flashvars.bus+="@,@";
					previous=match;
				}
				catch (Error)
				{
					if (i!=matches.length-1) flashvars.bus+="@,@";
				}
			}
		}
	}
	catch (Error){}
	// Wir suchen die korrespondierenden Thumbnails
	var regExp = /src\=\"typo3temp\/pics\/[^\"]+/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		for (var i=0;i<matches.length;i++)
		{
			var match=matches[i].substring(20);
			flashvars.thumbs+=match;
			if (i!=matches.length-1) flashvars.thumbs+="@,@";
		}
	}
	catch (Error){}
	//Dann suchen wir die korrespondierenden Typo3 Unique IDs
	var regExp = /CONTENT ELEMENT, uid:[0-9]+\/image \[begin\]/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		for (var i=0;i<matches.length;i++)
		{
			var match=matches[i].substring(21).substr(0,matches[i].substring(21).length-14);
			flashvars.uids+=match;
			if (i!=matches.length-1) flashvars.uids+="@,@";
			//Und anhand der Typo3 Unique IDs suchen wir zu den Bildern korrespondierende PDF Files
			var regExp2 = new RegExp(match+'\/image.+end[^%]+\.pdf\" target',"m");
			try 
			{
				var matches2=htmlStr.match(regExp2);
				var regExp3 = /".+\.[pP][dD][fF].+target/;
				// Evaluieren, fuer wie viele Images das PDF gilt
				var regExp4 = new RegExp(match+'\/image.+begin[^%]+'+match+'\/image.+end\]',"m");
				var matches4=htmlStr.match(regExp4);
				var regExp5 = /href\=\"/g;
				var matches5 = matches4[0].match(regExp5);
				var imageCount= matches5.length;
				// Anschliessend PDF identifizieren und fuer n Bilder verwenden
				try 
				{
					var matches3=matches2[0].match(regExp3);
					var match3=matches3[0].substring(1).substr(0,matches3[0].substring(1).length-8);
					for (var j=0;j<imageCount;j++)
						flashvars.pdfs+=match3+"@,@";
				}
				catch (Error)
				{
					for (var j=0;j<imageCount;j++)
						flashvars.pdfs+="@,@";
				}
			}	
			catch (Error) {}
		}
		flashvars.pdfs=flashvars.pdfs.substr(0,flashvars.pdfs.length-3);
	}
	catch (Error){}
	// Wir suchen alle platzierten Videos
	var regExp = /".+\.[fF][lL][vV]\"/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		for (var i=0;i<matches.length;i++)
		{
			var match=matches[i].substring(1).substr(0,matches[i].substring(1).length-1);
			flashvars.vids+=match;
			if (i!=matches.length-1) flashvars.vids+="@,@";
			// Wir suchen den Video-Titel dazu
			var regExp2 = new RegExp(match+".+\>.+\r?\n?.+","m");
			try 
			{
				var matches2=htmlStr.match(regExp2);
				// Anmerkung: Im HTML Code steht </p> aber der IE7 formatiert dies intern auf </P> um
				var regExp3 = /class.+\<\/[pP]/;
					try 
					{
						var matches3=matches2[0].match(regExp3);
						// Anmerkung: IE7 entfernt intern die Anfuehrungszeichen um den Klassennamen, daher werden die dynamischen offsets beim substring benoetigt
						flashvars.vus+=matches3[0].substring(matches3[0].search(">")+1).substr(0,matches3[0].substring(matches3[0].search(">")+1).length-3).replace(/,/,"@;@")+"@,@";
					}
					catch (Error)
					{
						flashvars.vus+="@,@";
					}
			}
			catch (Error){}
		}
		flashvars.vus=flashvars.vus.substr(0,flashvars.vus.length-3);
	}
	catch (Error){}
	
	// "&" ersetzten, damit das Ganze in AS auch ankommt (sonst en Prob. da via GET Uebergeben)
	flashvars.bus=flashvars.bus.replace(/&/g,"@AMP@");
	flashvars.vus=flashvars.vus.replace(/&/g,"@AMP@");
	flashvars.bus=flashvars.bus.replace(/%/g,"@PRO@");
	flashvars.vus=flashvars.vus.replace(/%/g,"@PRO@");
	
	// Blau oder Rot?
	if (document.getElementsByTagName("head").item(0).innerHTML.match(/blue.css/)=="blue.css")
	{
		flashvars.blue="true";
	}
	else
		flashvars.blue="false";
	//Flash Element platzieren
	var params = {
		quality: "high",
		scale: "default",
		wmode: "transparent",
		allowscriptaccess: "always",
		bgcolor: "#FFFFFF"
	};
	var attributes = {id:"gallery"};
	if (flashvars.pics.length>0||flashvars.vids.length>0) {
		swfobject.embedSWF("fileadmin/template/swf/RG_media_module.swf", "gallery", "242", "290", "8", "fileadmin/template/swfobject/expressInstall.swf", flashvars, params, attributes);
	}
	//alert ("IMG URLs: "+flashvars.pics+"\nThumbnail URLS: "+flashvars.thumbs+"\nTypo3 IDs: "+flashvars.uids+"\nPDF URLs: "+flashvars.pdfs+"\nBildunterschriften: "+flashvars.bus+"\nVIDEO URLs: "+flashvars.vids+"\nVideo Titel: "+flashvars.vus);
	flashvars = {txts:"",modus:"",bannerImg:"",blue:""};
	// Wir suchen das Bannerbild
	regExp = /intext-right"><img src="[^\"]+[jJ][pP][eE]?[gG]/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		flashvars.bannerImg=matches[0].substring(24);
	}
	catch (Error)
	{
		// IE  Extrawurst
		regExp = /alt="" src="uploads[^\"]+[jJ][pP][eE]?[gG]/g;
		try 
			{
				var matches=htmlStr.match(regExp);
				flashvars.bannerImg=matches[0].substring(12);
			}
		catch (Error){}
	}
	// und den ersten Text
	regExp = /title="1=[^\"]*&amp;2/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		flashvars.txts+=matches[0].substring(9).substr(0,matches[0].substring(9).length-6)+"@,@";
	}
	catch (Error)
	{
		// IE  Extrawurst
		regExp = /title=1=[^\"]*&amp;2/g;
		try 
		{
			var matches=htmlStr.match(regExp);
			flashvars.txts+=matches[0].substring(8).substr(0,matches[0].substring(8).length-6)+"@,@";
		}
		catch (Error){}
	}
	// und den zweiten Text
	regExp = /2=[^\"]*&amp;3/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		flashvars.txts+=matches[0].substring(2).substr(0,matches[0].substring(2).length-6)+"@,@";
	}
	catch (Error){}
	// und den dritten Text
	regExp = /3=[^\"]*&amp;m/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		flashvars.txts+=matches[0].substring(2).substr(0,matches[0].substring(2).length-6);
	}
	catch (Error){}
	// und den Modus
	regExp = /mode=[0123456789]+"/g;
	try 
	{
		var matches=htmlStr.match(regExp);
		flashvars.modus=matches[0].substring(5).substr(0,matches[0].substring(5).length-1);
	}
	catch (Error)
	{
		// IE8 Extrawurst
		regExp = /mode=[0123456789]+ alt=""/g;
		try 
		{
			var matches=htmlStr.match(regExp);
			flashvars.modus=matches[0].substring(5).substr(0,matches[0].substring(5).length-7);
		}
		catch (Error)
		{
		// IE  Extrawurst
			regExp = /mode=[0123456789]+ height=/g;
			try 
			{
				var matches=htmlStr.match(regExp);
				flashvars.modus=matches[0].substring(5).substr(0,matches[0].substring(5).length-8);
			}
			catch (Error){}
		}
	}
	// Blau oder Rot?
	if (document.getElementsByTagName("head").item(0).innerHTML.match(/blue.css/)=="blue.css")
	{
		flashvars.blue="true";
	}
	else
		flashvars.blue="false";
	// "&" ersetzten, damit das Ganze in AS auch ankommt (sonst en Prob. da via GET Uebergeben)
	flashvars.txts=flashvars.txts.replace(/&/g,"@AMP@");
	flashvars.txts=flashvars.txts.replace(/%/g,"@PRO@");
	var attributes = {id:"innerBanner"};
	if (document.getElementById("banner").offsetWidth==671)
		swfobject.embedSWF("fileadmin/template/swf/RG_banner_klein.swf", "innerBanner", "669", "105", "9", "fileadmin/template/swfobject/expressInstall.swf", flashvars, params, attributes);
	else if (document.getElementById("banner").offsetWidth==900)
		swfobject.embedSWF("fileadmin/template/swf/RG_banner_gross.swf", "innerBanner", "898", "105", "9", "fileadmin/template/swfobject/expressInstall.swf", flashvars, params, attributes);
}
