
/* super global variables, used by all other modules */
var isIE    =  eval ("/*@cc_on @*//*@if (@_win32) true; @else @*/false;/*@end @*/");
var isGecko =  (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) && 
			   (navigator.userAgent.toLowerCase().indexOf('spoofer')==-1) && 
			   (navigator.userAgent.toLowerCase().indexOf('khtml') == -1) && 
			   (navigator.userAgent.toLowerCase().indexOf('netscape/7.0')==-1);
var debug   =  window.location.search == "?debug";



var lmwebLoaded = function (ifrm){
	var loadCount = 0;
	try {
		var loadCount = ifrm.getAttribute("loadcount");
	} catch (e) {
		if (console) console.log(e);
	}
	if (!loadCount) loadCount = 0;
	loadCount++;
	try {
		ifrm.setAttribute("loadcount", loadCount);
	} catch(e) {
		if (console) console.log(e);
	}
	
	if (loadCount > 2)
	{
		try {
			Element.scrollTo(ifrm);
		} catch (e) {
			window.scrollTo(0, 0);
			if (console) console.log(e);
		}
	}
};

var cur_change= function (form, c) { 
	form.val.value = form.val.value.replace(/,/, ".");
	if (isNaN(form.val.value)) {
		form.erg.value = "Fehler";
	} else {
		var val = parseFloat(form.val.value);
		var erg = 0;
		if (form.cur.options[form.cur.selectedIndex].value=="EUR") erg = (val * c);
		else erg = (val * (1/c));
		erg = parseFloat(parseInt(parseInt(erg * 100000).toString()) / 100000);
		form.erg.value = erg + " " + form.cur.options[Math.abs(form.cur.selectedIndex - 1)].value;
	}
};


var Boundingbox = {
	getBox: function(element) {
		var lefttop = Position.cumulativeOffset(element);
		return $H($(element).getDimensions()).merge({left:lefttop[0], top:lefttop[1]});
	},
	getViewport: function() {
		if (typeof(window.innerWidth)=='number'){
			return {width: window.innerWidth, height: window.innerHeight};
		} else if (document.documentElement &&(document.documentElement.clientWidth || document.documentElement.clientHeight)){
			return {width: document.documentElement.clientWidth,
					height: document.documentElement.clientHeight};
		} else if (document.body &&(document.body.clientWidth || document.body.clientHeight)){
			return {width: document.body.clientWidth,
					height: document.body.clientHeight};
		}
		return {width: 0, height: 0};
	},
	getPageBox: function() {
		if (!window.opera && !document.mimeType && document.all && document.getElementById && document.body && document.body.offsetWidth){
			return {width: document.body.offsetWidth, 
					height: document.body.offsetHeight};
		}
		else if(document.getElementById && document.body && document.body.scrollWidth) {
			return {width: document.body.scrollWidth, 
					height: document.body.scrollHeight};
		}
		return {width: 0, height: 0};
	},
	getScrollOffset: function() {
		var x,y;
		if (window.pageYOffset) // all except Explorer
		{
			x = window.pageXOffset;
			y = window.pageYOffset;
		}
		else if (document.documentElement && document.documentElement.scrollTop)
			// Explorer 6 Strict
		{
			x = document.documentElement.scrollLeft;
			y = document.documentElement.scrollTop;
		}
		else if (document.body) // all other Explorers
		{
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
		}
		return {x:x, y:y};
	},
	snapBoxInOther: function(box, bigBox) {
		if (box.left + box.width > bigBox.width) {
			box.left = bigBox.width - box.width;
		}
		if (box.top + box.height > bigBox.height) {
			box.top = bigBox.height - box.height;
		}
		if (box.left < 0) box.left = 0;
		if (box.top < 0) box.top = 0;
		return box;
	},
	snapIntoView: function(box) {
		return this.snapBoxInOther(box, this.getViewport());
	},
	snapIntoPage: function(box) {
		return this.snapBoxInOther(box, this.getPageBox());
	}
};

if (!Event) var Event = {};
Event.safeStop = function(event) {
	Try.these( 
		function() {Event.stop(event);}, 
		function() {event.returnValue = false;}
	);
	return event;
}

var ElementExt = {
	findAncestor: function(element, tagname, classname) {
		var el = $(element);
		tagname = tagname.toUpperCase();
		while (el && document.documentElement != el) {
			if (el.tagName == tagname || tagname=="*") {
				if (classname) {
					if (el.hasClassName(classname)) return Element.extend(el);
				} else {
					return Element.extend(el);
				}
			}
			el = el.parentNode;
		}
		return null;
	},
	getText: function(element) {
		element = $(element);
		if (element.nodeType == 3) {
			return element.nodeValue;
		} else if (element.hasChildNodes()) {
			var text = "";
			for (var i=0; i < element.childNodes.length; i++) {
				text += $(element.childNodes[i]).getText();
			}
			return text;
		}
		return "";
	},
	scrollIntoView: function(element) {
		element = $(element);
		var scrollOffset = Boundingbox.getScrollOffset();
		var viewPort = Boundingbox.getViewport();
		var box = Boundingbox.getBox(element);
		var newScrollOffset = scrollOffset;
		if (scrollOffset.x + viewPort.width < box.left + box.width) {
			newScrollOffset.x = box.left + box.width - viewPort.width;
		}
		if (scrollOffset.y + viewPort.height < box.top + box.height) {
			newScrollOffset.y = box.top + box.height - viewPort.height;
		}
		window.scrollTo(newScrollOffset.x, newScrollOffset.y);
	}
};
Object.extend(Element.Methods, ElementExt);

var DOMWorkers = [];
DOMWorkers.DOMLoaded = function(){
	if (arguments.callee.done) { return; }
	arguments.callee.done = true;
	this.invoke("onDOMLoaded");
	DOMWorkers.DOMUpdated();
}.bind(DOMWorkers);
DOMWorkers.DOMUpdated = function(){
	this.invoke("onDOMUpdated");
}.bind(DOMWorkers);
var DOMWorker = Class.create();
DOMWorker.prototype = {
	initialize: function() {
		DOMWorkers[DOMWorkers.length] = this;
    },
    onDOMLoaded:function(){},
	onDOMUpdated:function(){}
};
// init as soon as possible
Event.observe(window, 'load', DOMWorkers.DOMLoaded, false);
if (document.addEventListener) { // Gecko based browsers know the event DOMContentLoaded
   document.addEventListener("DOMContentLoaded", DOMWorkers.DOMLoaded, null);
}
// IE DOM Loaded event is fired with the help of loaded.htc

// refresh DOM tree after every AJAX request
Ajax.Responders.register({
	onComplete: function(request) {
		setTimeout("DOMWorkers.DOMUpdated()", 50);
	}
});



var Karteireiter = Object.extend(new DOMWorker(), {
	counter:0,
	inKarteireiter:false,
	loaded: {},
	idCounter:0,
	shimEnabled:false,
	div:null,
	uls:{},
	iframes:{},
	as:{},
	zIndex:{active:99999, inactive:100},
	onDOMLoaded: function() {
		this.div = $("karteireiterTabs");
		if (!this.div) return;
		if (isGecko || isIE)
		{
            var iefix = "";
            if (isIE) {
               iefix = "border-width:1px 0 0 1px;";
            }
			var shimHTML = "";
			for (var i=1; i < 3; i++)
			{
				shimHTML = shimHTML + '<iframe id="karteireiterTabs_level_'+i+
					'_iframe" src="javascript:\'<html><head><title>IFrame</title></head><body bgcolor=#4784BF></body></html>\'" scrolling="no" frameborder="0" '+
					'style="position:absolute; top:0px; left:0px; display:none;background:#4784BF;border:1px solid #4784BF;'+iefix+'filter:alpha(opacity=25);-moz-opacity:.250;opacity:.250"></iframe>';
			}
			this.shimEnabled = true;
			Try.these(
				function(){new Insertion.Bottom(this.div, shimHTML)}.bind(this),
				function(){this.shimEnabled = false;}.bind(this)
			);
		} else {
			this.shimEnabled = false;
		}
		//this.div.setStyle({zIndex: this.zIndex.inactive, position:"relative"});
		$("karteireiterTabsOuter").setStyle({zIndex: this.zIndex.inactive});
		if (this.shimEnabled)
		{
//			$("karteireiterTabs_level_0_iframe").setStyle({
//				zIndex: this.zIndex.active-1, 
//				width:  (this.div.offsetWidth+10)+"px",
//				height: (20+10)+"px"
//			});
		}
		$$('#karteireiterTabs dd[id]').each((function(element) {
			if (!element.id.match(/^ktab_[0-9a-z]+/)) return;
			if (element.hasClassName("disabled")) return;
			var id = element.id.replace(/^ktab_([0-9a-z]+)/,"$1");
			var ul = document.createElement("dl");
			ul.id = element.id+"_ul";
			Element.setStyle(ul, {zIndex:this.zIndex.active, display:"none"});
			element.appendChild(ul);
			new Insertion.Bottom(ul, '<dt class="loading">Menü wird nachgeladen...</dt>');

			var a = element.getElementsByTagName("A")[0];
			if (a)
			{
				Event.observe(a, "mouseover", (function(ev) {this.load(id);}).bindAsEventListener(this), false);
				Event.observe(a, "focus", (function(ev) {this.load(id);}).bindAsEventListener(this), false);
			} else if (debug)
			{
				alert("kein a tag im karteireiter "+id+" gefunden!");
			}
		}).bind(this));
		//this.update();
	},
	onDOMUpdated: function() {
		if (!this.div) return;
		$$('#karteireiterTabs dd[processed!=true]').each((function(element) {
			element.setAttribute("processed", "true");

			if (!element.id)
			{
				element.id = 'ktab_autoid_' + this.idCounter;
				this.idCounter++;
			}

			var uls = element.getElementsByTagName("DL");
			if (uls.length > 0)
			{
				uls[0].id = element.id+ "_ul";
				Element.setStyle(uls[0], {zIndex:this.zIndex.active, display:"none", left:"auto"});
				this.uls[element.id] = $(uls[0]);
				//printfire(element.id + " " + this.getLevel(element));
				if (this.shimEnabled)
				{
					this.iframes[element.id] = $("karteireiterTabs_level_"+this.getLevel(element)+"_iframe");
				}
			}

			var as = element.getElementsByTagName("A");
			if (as.length) this.as[element.id] = $(as[0]);

			element.onmouseover=function() {
				element.setAttribute("state", "over");
				window.setTimeout(function(){
					if (element.getAttribute("state") == "over")
					{
						Karteireiter.handleMouseover(element);
					}
				}, 150);
			}
			element.onmouseout=function() {
				element.setAttribute("state", "out");
				window.setTimeout(function(){
					if (element.getAttribute("state") == "out")
					{
						Karteireiter.handleMouseout(element);
					}
				}, 150);
			}
		}).bind(this));
	},
	isLoaded: function(tabId) {
		return this.loaded[tabId] == true;
	},
	load: function(tabId) {
		if (!this.isLoaded(tabId)) {
			this.loaded[tabId] = true;
			new Ajax.Updater('ktab_'+tabId+'_ul', '/karteireiter/'+tabId+'.tab', {method: 'get', 
				onFailure: function(){
					Karteireiter.loaded[tabId] = false;
				}
			});
		}
	},
	getLevel: function(li) {
		var level = 1;
		var cur = li;
		while (cur)
		{
			if (!cur.id.match(/^ktab_autoid_/))
			{
				return level;
			}
			cur = cur.parentNode.parentNode;
			level++;
		}
		try{console.error("no level found!", li);} catch(e){};
		return 0;
	},
	handleMouseover: function(element) {
		if ($("showimage")) {
			$("showimage").style.visibility = "hidden";
		}
		if (!this.inKarteireiter) {
			this.div.style.zIndex = this.zIndex.active;
			if (this.shimEnabled)
			{
				//$("karteireiterTabs_level_0_iframe").show();
			}
		}
		this.counter++;
		this.inKarteireiter = true;
		element.addClassName("active");
		if (isIE && this.as[element.id])
		{
			Element.addClassName(this.as[element.id], "fakehover");
		}
		if (this.uls[element.id])
		{
			if (this.shimEnabled)
			{
				window.setTimeout(function(){
					Position.clone(this.uls[element.id], this.iframes[element.id]);
					this.iframes[element.id].style.zIndex = this.uls[element.id].style.zIndex - 1;
					this.iframes[element.id].style.display = "block";
				}.bind(Karteireiter), 50);
			}
			this.uls[element.id].setStyle({
				display: "block",
				zIndex:  this.zIndex.active
			});
		}
	},
	handleMouseout: function(element) {
		element.removeClassName("active");
		if (isIE && this.as[element.id])
		{
			Element.removeClassName(this.as[element.id], "fakehover");
		}
		if (this.uls[element.id])
		{
			this.uls[element.id].style.display = "none";
			if (this.shimEnabled)
			{
				this.iframes[element.id].style.display = "none";
			}
		}
		this.counter--;
		window.setTimeout(function(){
			if (this.counter<1) {
				//if (this.shimEnabled) $("karteireiterTabs_level_0_iframe").hide();
				this.div.style.zIndex = this.zIndex.inactive;
				if ($("showimage")) $("showimage").style.visibility = "visible";
				this.inKarteireiter = false;
				this.counter = 0;
			}
		}.bind(Karteireiter), 50);
	}
});

var Quicksearch = Object.extend(new DOMWorker(), {
	frm:null,
	txt:null,
	onDOMLoaded: function() {
		this.frm = $("quicksearchForm");
		this.txt = $("quicksearchInput");
		this.eventOnFocus   = this.onFocus.bindAsEventListener(this);
		this.eventOnBlur    = this.onBlur.bindAsEventListener(this);
		this.eventOnSubmit  = this.onSubmit.bindAsEventListener(this);
		if (this.frm && this.txt)
		{
			Event.observe(this.txt, "focus", this.eventOnFocus, false);
			Event.observe(this.txt, "blur", this.eventOnBlur, false);
			Event.observe(this.frm, "submit", this.eventOnSubmit, false);
		}
	},
	onFocus:function(event){
		if ($F(this.txt) == this.txt.defaultValue)
		{
			this.txt.value = "";
		}
	},
	onBlur:function(event){
		if (this.txt.value == "")
		{
			this.txt.value = this.txt.defaultValue;
		}
	},
	onSubmit: function(event) {
		if ($F(this.txt) == this.txt.defaultValue || $F(this.txt)=="")
		{
			Event.safeStop(event);
			document.location.href = "/suchen/index.php";
		}
	}
});

var Dynmenu = Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		this.eventCollapse = this.onclick_collapse.bindAsEventListener(this);
		this.eventExpand   = this.onclick_expand.bindAsEventListener(this);
		$$('#parentmenu li').each(function(element) {
			var img = document.createElement("img");
			img.src = "/img2/arrowp.gif";
			element.insertBefore(img, element.firstChild);
		});
		$$('#topnews li').each(function(element) {
			var img = document.createElement("img");
			img.src = "/img2/news.gif";
			element.insertBefore(img, element.firstChild);
		});
	},
	onDOMUpdated: function() {
		$$('#dynmenu li[processed!=true]').each(function(element) {
			element.setAttribute("processed", "true");
			element.cleanWhitespace();
			var img = document.createElement("img");
			img.src = "/img2/spacer.gif";
			img.alt = "";
			if (element.getElementsByTagName("UL").length > 0) {
				img.alt = ">";
				img.title = "Unterpunkte ein-/ausblenden";
				ul = element.getElementsByTagName("UL")[0];
				if (element.hasClassName("zu")) {
					Event.observe(img, "click", Dynmenu.eventExpand, false);
					img.src = "/img2/arrows.gif";
					ul.style.display = "none";
				} else {
					Event.observe(img, "click", Dynmenu.eventCollapse, false);
					img.src = "/img2/arrowsu.gif";
					ul.style.display = "";
				}
				Element.addClassName(img, "arrow");
			}
			element.insertBefore(img, element.firstChild);
		});
	},
	onclick_expand: function(e) {
		var img = Event.findElement(e, "IMG");
		Element.removeClassName(img, "zu");
		Element.addClassName(img, "auf");
		img.src = "/img2/arrowsu.gif";
		var ul = img.parentNode.getElementsByTagName("UL")[0];
		if (!ul.hasChildNodes()) {
			new Insertion.Top(ul, '<li class="loading">Lade Unterpunkte...</li>');
			var id = parseInt(ul.id.replace(/dynmenu/,""));
			var url = 'http://reisebuch.de/dynmenu/'+(parseInt(id / 200))+'/'+id+'.html.gz';
			var pars = "";
			var myAjax = new Ajax.Updater(
				ul, 
				url, 
				{
					method: 'get', parameters: pars, 
					onFailure:function(xmlReq){
						ul.innerHtml = ""; 
						alert("Fehler beim Laden...");
					}
				}); 
		}
		if (!isGecko) {
			Element.show(ul);
		} else {
			try
			{
				new Effect.toggle(ul,'blind', { queue: {position: "end", scope: "dynmenu"}});
			}
			catch (error)
			{
				Element.show(ul);
			}
		}
		Event.stopObserving(img, "click", Dynmenu.eventExpand, false);
		Event.observe(img, "click", Dynmenu.eventCollapse, false);
	},

	onclick_collapse: function(e) {
		var img = Event.findElement(e, "IMG");
		Element.removeClassName(img, "auf");
		Element.addClassName(img, "zu");
		img.src = "/img2/arrows.gif";
		var ul = img.parentNode.getElementsByTagName("UL")[0];
		if (!isGecko) {
			Element.hide(ul);
		} else {
			try
			{
				new Effect.toggle(ul,'blind', { queue: {position: "end", scope: "dynmenu"}});
			}
			catch (error)
			{
				Element.hide(ul);
			}
		}
		Event.stopObserving(img, "click", Dynmenu.eventCollapse, false);
		Event.observe(img, "click", Dynmenu.eventExpand, false);
	}
});
	
var Rating = Object.extend(new DOMWorker(), {
	msgs: {
		step1ok:'<em>Danke f&uuml;r Ihr Feedback</em>!<br />Bitte nehmen Sie Sich doch noch eine Minute, und beschreiben uns genauer, wie Sie diese Webseite finden (alle Angaben sind optional): ',
		step2ok:'<em>Vielen Danke f&uuml;r Ihr Feedback</em>!',
		wait:   '<em>Bitte warten</em>'
	},
	url:'/ajax-handler/rating.php',
	frm:null,
	div:null,
	status:null,
	extended:null,
	onDOMLoaded: function() {
		this.frm = $("rating");
		this.div = $("ratingFrm");
		this.status = $("ratingStatus");
		this.extended = $("ratingExtended");

		if (this.div && this.frm) {
			this.eventRadioClickedStep0 = this.radioClickedStep0.bindAsEventListener(this);
			this.eventFrmSubmit = this.frmSubmit.bindAsEventListener(this);
			//Event.observe(this.frm, 'submit', Rating.eventFrmSubmit, false);

			$$('#rating input[type=radio]').each(function(element) {
				element.disabled = false;
				element.onchange = Rating.eventRadioClickedStep0;
				element.onclick = Rating.eventRadioClickedStep0;
			});
			$$('#rating input[type=submit]').each(function(element) {
				element.onclick = Rating.eventFrmSubmit;
			});
		}
	},
	radioClickedStep0: function(event) {
		// quit if this function has already been called
		if (arguments.callee.done) { return; }
		// flag this function so we don't do the same thing twice
		arguments.callee.done = true;

		//var radio = Event.element(event);
		Form.disable(Rating.frm);
		$$('#rating input[type=radio]').each(function(element) {
			if (element.checked)
			{
				Rating.status.update(Rating.msgs.wait);
				new Ajax.Updater(Rating.extended, Rating.url, {parameters: Form.serialize(Rating.frm), onSuccess: function() {
					$("ratingFrmAid").parentNode.removeChild($("ratingFrmAid"));
					Form.enable(Rating.frm);
					Rating.frm.scrollTo();
					Rating.status.update(Rating.msgs.step1ok);
				}});
			}
			element.onchange = null;
			element.onclick  = null;
		});
	},
	frmSubmit: function() {
		Form.disable(Rating.frm);
		new Ajax.Updater(Rating.extended, Rating.url, {parameters: Form.serialize(Rating.frm), onSuccess: function() {
			Rating.status.update(Rating.msgs.step2ok);
			Rating.extended.update("");
		}});
		return false;
	}
});

var AccessibleForms = Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		$$('form.accessibleform .hintoff').each(function(element) {
			element.onclick = function() {
				element.removeClassName("hintoff");
				element.addClassName("hinton");
				element.onclick = null;
				element.title="";
			}
			element.title="Ausfüllhilfe";
		});
	}
});

var ObfuscatedMailtos = Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		$$('a.obfuscated').each(function(element) {
			var email = unescape(element.href.replace(/^obfuscated-mail:/, "").replace(/#/g, "%"));
			element.href = "mailto:" + email;
			element.title = "Mail an " + email.replace(/\?.*$/, "");
			element.removeClassName("obfuscated");
			for (var i=element.childNodes.length-1; i > -1; i--) {
				if (element.childNodes[i].nodeType==1) {
					if (Element.hasClassName(element.childNodes[i], "obfuscatedB")) {
						element.removeChild(element.childNodes[i]);
					} else if (Element.hasClassName(element.childNodes[i], "obfuscatedA")) {
						element.replaceChild(element.childNodes[i].firstChild, element.childNodes[i]);
					}
				}
			}
		});
	}
});

var PingToLog = Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		$$('a[ping]').each(function(element) {
			element.onclick  = function(event) {
				if (element.getAttribute("ping") != "") {
					Event.safeStop(event);
					element.href = element.getAttribute("ping").replace(/&pingonly=1$/, "");
					element.setAttribute("ping", "");
					document.location.href = element.href;
				}
			}.bindAsEventListener(element);
		});
	}
});
var Pagelinks = Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		this.eventFav = this.onFav.bindAsEventListener(this);
		this.eventRec = this.onRec.bindAsEventListener(this);
		this.eventPrint = this.onPrint.bindAsEventListener(this);
		$$('#pagelinkFav a', '#bottomnav .favourites a').each(function(element) {
			element.onclick  = Pagelinks.eventFav;
			
		});
		$$('#pagelinkRec a', '#bottomnav .recommend a').each(function(element) {
			element.onclick  = Pagelinks.eventRec;
		});
		$$('#pagelinkPrint a', '#bottomnav .print a').each(function(element) {
			element.onclick  = Pagelinks.eventPrint;
		});
	},
	doOn: function(event, func) {
		Event.safeStop(event);
		func();
		return false;
	},
	onFav: function(event) {
		return this.doOn(event, function(){
			if (this.favPopup) {
				this.favPopup.show(event);
			} else {
				this.favPopup = new DhtmlPopup("Favoriten", event);
				this.favPopup.loadById(4408, {
					params:"burl="+encodeURIComponent(location.href)+"&btitle="+
							encodeURIComponent(document.title)
				});
			}
		}.bind(this));
	},
	onRec: function(event) {
		return this.doOn(event, function(){
			if (this.recPopup) {
				this.recPopup.show(event);
			} else {
				this.recPopup = new DhtmlPopup("Favoriten", event);
				this.recPopup.loadById(4410, {
					params:"url="+encodeURIComponent(location.href)
				});
			}
		}.bind(this));
	},
	onPrint: function(event) {
		return this.doOn(event, this.print);
	},
	fav: function(url, title) {
		if(!url){url=location.href;}
		if(!title){title=document.title;}
		if(window.external){
			window.external.AddFavorite(url,title);}
		else{
			alert('Bitte benutzen Sie die Bookmark-Funktion Ihres Browsers (Strg+D)');
		}		
	},
	rec: function(url) {
		if(!url) url = location.href;
		url=encodeURIComponent(url.replace(/^(http:\/\/)?(www\.)?reisebuch\.(de|com)/,""));
		
		 DJ_popup('/'+'empfe'+'hlen.phtml'+'?url='+url, 'mailafriend', 600, 500, 
			'scrol'+'lbars=yes,resiz'+'able=yes,menu'+'bar=yes');
		
		
	},
	print: function(aid){
		if (Page.pagecount == 1) {
			window.print();
		} else {
			if (!aid) aid = Page.aid;
			DJ_popup('/'+'druckassiste'+'nt/?aid='+aid,'druckassistent',600,500,'scrollbars=yes,resizable=yes,menubar=yes');
		}
	}
});


var AdLiveDebugger = Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		$$('#showimage').each(function(element) {
			var dims = element.getDimensions();
			var viewPort = Boundingbox.getViewport();
			element.setStyle({top: (viewPort.height - (dims.height + 60)) + "px;", left:"10px"});
			$$('#showimage iframe').each(function(iframe) {
				iframe.setStyle({background:'url(/img/adlive-popup-placeholder.gif) transparent'});
				if (iframe.allowtransparency) {
					iframe.allowtransparency = "true";
				}
			});
		});
	}
});


var GiveFlashsZIndexes = Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		// klont alle OBJECT tags (Flash Objekte) und ersetzt das Original durch 
		// eine windowless Kopie. Dadurch sind Flash Objekte mit z-index positionierbar.
		$$("object").each(function(element){
			var newObj = element.cloneNode(true);
			var param = null;
			var embed = null;
			$A(newObj.childNodes).each(function(child){
				if (child.nodeName.toUpperCase() == "PARAM" && child.getAttribute("name").toUpperCase() == "WMODE")
				{
					param = child;
				} else if (child.nodeName.toUpperCase() == "EMBED")
				{
					embed = child;
				}
			});
			if (!param)
			{
				param = document.createElement("param");
				param.setAttribute("name", "WMode");
				newObj.appendChild(param);
			}
			try {
				var oldOpaque = param.getAttribute("value");
				if (oldOpaque == null || oldOpaque == "" || oldOpaque.toUpperCase() == "WINDOW")
				{
					param.setAttribute("value", "opaque");
				}
			} catch(e) {
				param.setAttribute("value", "opaque");
			}

			if (embed)
			{
				try {
					var oldOpaque = embed.getAttribute("WMode");
					if (oldOpaque == null || oldOpaque == "" || oldOpaque.toUpperCase() == "WINDOW")
					{
						embed.setAttribute("WMode", "opaque");
					}
				} catch(e) {
					embed.setAttribute("WMode", "opaque");
				}
			}
			element.parentNode.replaceChild(newObj, element);
		});
	}
});

if (!Ajax) Ajax = {};
Ajax.parseResponse = function(resp) {
	resDoc = resp.responseXML.documentElement;
	var json = resDoc.getElementsByTagName('json')[0].firstChild.nodeValue;
	try {
       eval('json = (' + json + ')');
    } catch (e) {json = null;}
    var content = resDoc.getElementsByTagName('content')[0].firstChild.nodeValue;
	
	return {json: json, content: content};
};

DhtmlPopup = Class.create();
DhtmlPopup.prototype = {
    initialize: function(title, event) {
		this.event = event;
		this.title = title;
		this.div = $(document.createElement("div"));
		this.div.addClassName("dhtmlpopup");
		this.setPos(Event.pointerX(event), Event.pointerY(event));
		this.div.update('<table cellspacing="0" cellpadding="0" border="1"><tr><td><div class="dhtmlpopupTitle">' +
				'<span class="dhtmlpopupClose" title="Popup schließen"' +
				'onclick="ElementExt.findAncestor(this.parentNode.parentNode,\'div\').popup.hide()"></span>' +
				'<span class="dhtmlpopupTitleContent">' + title.escapeHTML() + '</span>' +
				'</div>' +
				'<div class="dhtmlpopupContent">Lade ...</div></td></tr></table>');
		document.getElementsByTagName("BODY")[0].appendChild(this.div);
		this.div.popup = this;
		var self = this;
		new Draggable(this.div, {
			handle:document.getElementsByClassName("dhtmlpopupTitle", this.div)[0], 
			change: function(dragable) {
				self.snapIntoValidSpace();
		}});
		this.initialPageBox = Boundingbox.getPageBox();
    },
	loadById: function(id, options) {
	   this.id = id;
	   this.options = {
	   		params:"_=_"
	   };
	   Object.extend(this.options, options || {});
	   this.initialPageBox = Boundingbox.getPageBox();
	   this.updater = new Ajax.Request( 
			"/ajax-handler/dhtmlpopup.php", 
			{parameters:"id="+encodeURIComponent(id)+"&"+this.options.params, 
			method:"get",
			onComplete:this.processResponse.bind(this)}); 
   },
   processResponse: function(resp) {
		var res = Ajax.parseResponse(resp);
		
		document.getElementsByClassName("dhtmlpopupContent", this.div)[0].update(
			'<table><tr><td>' + res.content + '</td></tr></table>');
		if (res.json) {
			if (res.json.title) 
				document.getElementsByClassName("dhtmlpopupTitleContent", 
					this.div)[0].update(res.json.title.escapeHTML());
			if (res.json.width) this.setWidth(res.json.width);
		}
		this.show();
		new Effect.Highlight($(document.getElementsByClassName("dhtmlpopupTitle", this.div)[0]));
   },
   hide: function() {
   		this.div.hide();
   },
   show: function(event) {
   		var lefttop;
   		if (event) {
   			lefttop = [Event.pointerX(event), Event.pointerY(event)];
   		} else {
   			lefttop = Position.cumulativeOffset(this.div);
   		}
   		var newBox = $H($(this.div).getDimensions()).merge({left:lefttop[0], top:lefttop[1]});
   		newBox = Boundingbox.snapBoxInOther(newBox, this.initialPageBox);
   		this.setPos(newBox.left, newBox.top);
   		ElementExt.scrollIntoView(this.div);
   		this.div.show();
   },
   setPos: function(x,y) {
   		this.x = x; this.y = y;
		this.div.setStyle({left:this.x+"px", top:this.y+"px"});
   },
   setWidth: function(w) {
   		if (w.search(/^[0-9]+$/) != -1) w += "px";
		this.div.style.width = w;
   },
   minTop:220,
   snapIntoValidSpace: function() {
   		var myBox = Boundingbox.getBox(this.div);
   		if (myBox.top < this.minTop) {
   			this.y = this.minTop;
   			this.div.setStyle({top:this.minTop+"px"});
   		}
   }
};
Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		$$('a.dhtmlpopupAnchor').each(function(element) {
			var id = element.id.match(/_[0-9]+$/).toString().substring(1);
			if (!id) id = element.id;
			element.onclick = function(event) {
				Event.safeStop(event);
				if (this.popup) {
					this.popup.show(event);
				} else {
					this.popup = new DhtmlPopup(element.title, event);
					this.popup.loadById(id);
				}
				this.blur();
				return false;
			}.bindAsEventListener(element);
		});
	}
});
Object.extend(new DOMWorker(), {
	onDOMLoaded: function() {
		Event.observe(window, 'resize', this.conditionalAdlive.bind(this), false);
		this.conditionalAdlive();
	},
	conditionalAdlive: function() {
		if (this.mayShow())
		{
			if ($("adlive120x600"))
			{
				$("adlive120x600").show();
			} else {
				new Insertion.Bottom(document.getElementsByTagName("BODY")[0], '<div id="adlive120x600">Anzeige<br><table cellspacing="0" cellpadding="0" border="0"><tr><td> <nolayer><iframe width="120" height="600" noresize scrolling="no" frameborder="0" marginheight="0" marginwidth="0" src="http://62.27.51.163:80/frame.html?banner=609"></iframe></nolayer><ilayer id="t_609" visibility="hidden" width="120" height="600" border="0" scrolling="0"></ilayer></td></tr></table></div>');
			}
		} else {
			if ($("adlive120x600"))
			{
				$("adlive120x600").hide();
			}
		}
	},
	mayShow: function() {
		if (typeof Page != "undefined")
		{
			return !Page.disallowAutoAd && Boundingbox.getViewport().width > 1124;
		} else {
			return false;
		}
	}
});

var go = function (url) {
	document.location.href = url;
}

// plain old stuff
var DJ_addFavorite = function (url,title){if(!url){url=location.href;}if(!title){title=document.title;}if(window.external){window.external.AddFavorite(url,title);}else{alert('Bitte benutzen Sie die Bookmark-Funktion Ihres Browsers (Strg+D)');}};
var DJ_empfehlen = function (url){var r="reisebuch";if(!url)url=encodeURIComponent(location.href.replace("http://www\."+r+"\.de","").replace("http://"+r+"\.de","").replace("http://www\."+r+"\.com","").replace("http://"+r+"\.com",""));DJ_popup('/'+'empfehlen.phtml'+'?url='+url, 'mailafriend', 600, 500, 'scrollbars=yes,resizable=yes,menubar=yes');return false;};
var DJ_druckassistent = function (url){DJ_popup(url,'druckassistent',600,500,'scrollbars=yes,resizable=yes,menubar=yes');return false;};
var DJ_popup = function (l,n,w,h,s,noActivate){if (s!=""){s=s+",copyhistory=no,";}e="win=win"+"dow"+".op"+"en('"+l+"','"+n+"','"+s+"width="+w+",height="+h+"');";eval(e);if(win&&win.window&&win.window.focus&&noActivate==""){win.window.focus();}};
var ferien = function (code){DJ_popup("http://"+"partner.ferien.de/user/1039529385/"+code,"ferien",780,550,"scrollbars=yes,resizable=yes");};
var dermallorquiner = function (){DJ_popup("http://"+"www"+".mallorquiner.com/index.php?refid=0014&color=reisebuchblau","dermallorquiner",780,550,"scrollbars=yes,resizable=yes");};
var hasso = function (){DJ_popup("http://"+"www."+"hasso-rentacar.com/autovermietung_mallorca/mietwagen_startseite.php?col=reisebuch&idioma=de","reisebuchhasso",770,550,"scrollbars=yes,resizable=yes");};
var miragoclose = function (){$("miragofeatures").hide();};
function checkNN(btn) {
  var frm = btn.form;
  if(! (frm.elements["email"].value == frm.elements["emailconfirm"].value))
  {
    alert("Bitte geben Sie in beide Felder die gleiche E-Mail Adresse an.");
    return false;
  }
  return true;
}

function weg(reserved, reserved2, region) {
	var url = "http://www.holidayautos.de/auswahl.asp?Agentur=52508&Country=usa&Region="+region;
	//alert(url);
	window.open(url);
}

