function submitFormInDiv (form, div) {
	var req = new Request.HTML({url:form.action, 
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			$(div).innerHTML = responseHTML;
			if (setupTinyMCE) setupTinyMCE();
			// alert(responseHTML);
			afterAjaxCalls();
		},
		onFailure: function() {
			$(div).set('text', '');
		}
	}).post(form);
} 

function loadDiv (urly, div) {
	var req = new Request.HTML({url:urly + '?rid=' + randomNumber(), 
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			$(div).innerHTML = responseHTML;
			if (setupTinyMCE) setupTinyMCE();
			// alert(responseHTML);
			afterAjaxCalls();
		},
		onFailure: function() {
			$(div).set('text', '');
		}
	}).send();
} 

function randomNumber () {
	return Math.floor(Math.random()*1000000001);
}


var toggletext = new Object();
toggletext[""] = "";			
toggletext["Weitere Informationen anzeigen"] = "Weitere Informationen ausblenden";
toggletext["weitere Informationen anzeigen"] = "weniger Informationen anzeigen"; 
toggletext["Mehr Bilder einblenden"] = "Weniger Bilder anzeigen"; 
toggletext["Bilder &amp; Details einblenden"] = "Bilder &amp; Details ausblenden"; 
toggletext["Bilder &amp; Details ansehen"] = "Bilder &amp; Details ausblenden"; 
toggletext["Details zu Preis und Verfügbarkeit einblenden"] = "Details zu Preis und Verfügbarkeit ausblenden";
toggletext["Weitere Wochen anzeigen"] = "Weitere Wochen ausblenden"; 
toggletext["Details"] = "Details ausblenden"; 
toggletext["Details einblenden"] = "Details ausblenden"; 
toggletext["Details der Reservierung / Stornierung anzeigen"] = "Details der Reservierung / Stornierung ausblenden"; 
toggletext["Weitere Suchoptionen zeigen"] = "Weniger Suchoptionen";
toggletext["Karte vergrößern"] = "Karte verkleinern";	


var flipText = function(tog) {
	if (!tog) return;
	tog.origtext = tog.get('html');	
	if (!tog.offtext || tog.offtext == "") {
		tog.offtext = tog.origtext;
		tog.ontext = toggletext[tog.offtext.trim()];
		if (!tog.ontext) tog.ontext = tog.offtext;
	}
	return tog;
}; 

var initKlippklappBoxes = function(kkToggles, contentDiv, headerDiv) {
	if (!kkToggles) kkToggles = $$('.klappbox_header a');
	if (!contentDiv) contentDiv = 'div.klappbox';
	if (!headerDiv) headerDiv = 'div.klappbox_header';	
	
	if (kkToggles.length > 0) {
		kkToggles.each(function(tg) {
			var parentDiv = tg.getParent();
			box = parentDiv.getNext('div.klappbox');
			//console.log("box", box);
			if (!tg.hasClass('open')) {
				var boxFx = new Fx.Slide(box).hide();	
			}
			else {
				var boxFx = new Fx.Slide(box);
			}
			parentDiv.addClass('closed');
			tg.addEvent('click', function(evt) {
				evt.stop();
				if (!tg.hasClass('open')) {
					boxFx.cancel();
					boxFx.slideIn();
					tg.removeClass('closed');
					tg.addClass('open');
				}
				else {
					boxFx.cancel();
					boxFx.slideOut();
					tg.removeClass('open');
					tg.addClass('closed');
				}				
			});		
		});
	}
	
	var kkCheckboxes = $$('.klappbox_header input[type=checkbox]');
	if (kkCheckboxes.length > 0) {
		kkCheckboxes.each(function(cb) {
			var parentDiv = cb.getParent();
			box = parentDiv.getNext('div.klappbox');
			if (cb.get('checked') == false) {
				var boxFx = new Fx.Slide(box).hide();	
			} 
			else {
				var boxFx = new Fx.Slide(box);
			}
			cb.addEvent('click', function(evt) {
				if (cb.get('checked') == true) {
					boxFx.cancel();
					boxFx.slideIn();
				}
				else {
					boxFx.cancel();
					boxFx.slideOut();
				}
			});
		});
	}
	
	var kk2Toggles = $$('.klappbox_header2 a');
	if (kk2Toggles.length > 0) {
		kk2Toggles.each(function(tg) {
			var parentDiv = tg.getParent();
			box = parentDiv.getNext('div.klappbox2');
			if (box) {
				//console.log("box", box);
				if (!tg.hasClass('open')) {
					var boxFx = new Fx.Slide(box).hide();	
				}
				else {
					var boxFx = new Fx.Slide(box);
				}
				parentDiv.addClass('closed');
				tg.addEvent('click', function(evt) {
					evt.stop();
					if (!tg.hasClass('open')) {
						boxFx.cancel();
						boxFx.slideIn();
						tg.removeClass('closed');
						tg.addClass('open');
					}
					else {
						boxFx.cancel();
						boxFx.slideOut();
						tg.removeClass('open');
						tg.addClass('closed');
					}				
				});	
			}	
			else {
				tg.addEvent('click', function(evt) {
					evt.stop();
				});
			}
		});
	}
};

var initContentToggles = function() {
	var toggles = $$("a.contenttoggle");
	if (toggles.length > 0) {
		toggles.each(function(toggle) {
			var otext = toggle.get('html');
			if ($chk(toggle.offtext) == false) {
				toggle.offtext = otext;
				toggle.ontext = toggletext[toggle.offtext];
				if (!$defined(toggle.ontext)) toggle.ontext = toggle.offtext;
			}				
			var box = toggle.getNext();
			if (!toggle.hasClass('toggleopen')) {
				box.setStyle('display', 'block');
				var boxFx = new Fx.Slide(box).hide();	
			}
			else {
				var boxFx = new Fx.Slide(box);
			}			
			toggle.addEvent('click', function(evt) {
				evt.stop();				
				if (!toggle.hasClass("toggleopen")) {
					boxFx.cancel();
					boxFx.slideIn();
					toggle.addClass('toggleopen');
					toggle.set('html', toggle.ontext);
				}		
				else {
					boxFx.cancel();
					boxFx.slideOut();
					toggle.removeClass('toggleopen');
					toggle.set('html', toggle.offtext);
				}
			});			
		});
	}
};

var initTextToggles = function() {
	var toggles = $$("a.texttoggle");
	if (toggles.length > 0) {
		toggles.each(function(toggle) {
			var otext = toggle.get('html');
			if ($chk(toggle.offtext) == false) {
				toggle.offtext = otext;
				toggle.ontext = toggletext[toggle.offtext];
				if (!$defined(toggle.ontext)) toggle.ontext = toggle.offtext;
			}
			//console.log("toggle :", toggle);
			//console.log("toggle.offtext :", toggle.offtext);
			//console.log("toggle.ontext :", toggle.ontext);
			
			var p = toggle.getPrevious('p');
			if (!p) {
				p = $(toggle.get('rel'));
			}
			var text = p.get('html');
			//console.log("T:", text);
			
			// Ein-/Ausblenden ohne Effekt
			/*
			var shortText = text.substr(0, 140) + '...';
			//console.log("S:", shortText);
			if (!toggle.hasClass('toggleopen')) {
  			p.set('html', shortText);
				toggle.set('html', toggle.offtext);
  		}
			toggle.addEvent('click', function(evt) {
				evt.stop();	
				if (!toggle.hasClass("toggleopen")) {
					p.set('html', text);
					toggle.addClass('toggleopen');
					toggle.set('html', toggle.ontext);
				}
				else {
					p.set('html', shortText);
					toggle.removeClass('toggleopen');
					toggle.set('html', toggle.offtext);
				}
			});
			*/
			
			// mit SlideIn-/Out-Effekt. Dafür wird der abgeschnittene Textteil als Blockelement behandelt.
			var trunc = p.getElement('span.truncate');
			var hellip = new Element('span', { html: '&hellip;' }).inject(trunc, 'before').hide();	
			
			var truncFx = new Fx.Slide(trunc);
			if (!toggle.hasClass('toggleopen')) {
  			truncFx.hide();
				hellip.show();
				toggle.set('html', toggle.offtext);
  		}
			else {
				toggle.set('html', toggle.ontext);
			}
			toggle.addEvent('click', function(evt) {
				evt.stop();	
				if (!toggle.hasClass("toggleopen")) {
					hellip.hide();
					truncFx.cancel();
					truncFx.slideIn();
					toggle.addClass('toggleopen').set('html', toggle.ontext);
				}
				else {
					hellip.show();
					truncFx.cancel();
					truncFx.slideOut();
					toggle.removeClass('toggleopen').set('html', toggle.offtext);
				}
			});
		});
	}
};

// Sortierbare Tabellenspalten
var initSortableTables = function() {
	var sortableTables = $$('table.sortable');
	if (sortableTables.length > 0) {
		sortableTables.each(function(tbl) {
		  var parserArray = new Array();
      tbl.getElements('th').each(function(th) {
        if (th.hasClass('sorts')) {
          parserArray.push('string');
        }
        else {
          parserArray.push('none');
        }
      });
			var myTable = new HtmlTable(tbl, {
				zebra : true,
				sortIndex : null,
				parsers : parserArray,
				classHeadSort : 'table-sorted-asc',
				classHeadSortRev : 'table-sorted-desc'
			});
			myTable.enableSort();		
		});
	}
};

// zus. Formularmodule einblenden
var initOptionalModules = function() {
	var modules = $$('.optionalmodule');			
	var toggles = $$('a.addmodule');
	if (toggles.length > 0 ) {
		toggles.each(function(toggle) {
			var module = toggle.getPrevious('.optionalmodule');
			if (module) {
				module.hide();										
				toggle.store('module', module);
				toggle.store('moduleIndex', 0);
			}		
			toggle.addEvent('click', function(evt) {
				evt.stop();
				var module = toggle.retrieve('module').clone();
				var mIndex = toggle.retrieve('moduleIndex') + 1;
				module.getElements('input').each(function(input) {
					input.set('name', input.get('name').replace(/index/, mIndex));
				});		
				module.show().inject(toggle, 'before');
				toggle.store('moduleIndex', mIndex);
			});			
		});			
	}			
};
		
// Tooltipps
var activateToolTips = function() {
	var tips = $$('a.tooltipp');			
	tips.each(function(tip) {
		var cont = $(tip.get('href').substr(tip.get('href').indexOf('#')+1));		
		if ($chk(cont) && cont.style.display == 'none') {
			tip.addEvent('click', function(evt) {		
				evt.stop();
				cont.setStyle('display','block');
				var par = cont.getOffsetParent();
				var pos = $(par).getPosition();
				if (pos.x == 0) {
					pos.x = tip.getPosition().x;			
					var l = pos.x + 'px';
				}
				else {
					var l = evt.page.x - pos.x + 'px';
				}
				var contSize = cont.getSize();			
				var t = evt.page.y - pos.y - cont.getSize().y + 'px';
				cont.setStyles({ 'top': t, 'left': l });
				
				if (Browser.Engine.trident && Browser.Engine.version < 5) {
					var iframe = new Element('iframe');
					iframe.setStyles({
						'width': cont.getSize().x,
						'height': cont.getSize().y,
						'position': 'absolute',
						'top': '0px',
						'left': '0px'
					});
					iframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';					
					iframe.inject(cont, 'top');
				}						
			});
			cont.getElement('a.tt_close').addEvent('click', function(evt) {
				evt.stop();
				cont.setStyle('display','none');
			});
		}
	});
}
var showToolTip = function(containerId, evt, x, y) {
	var cont = $(containerId);	
	if ($chk(x) && $chk(y)) {		
		cont.setStyles({ 'display':'block', 'top': x + 'px', 'left': y + 'px' });		
		if (isIE6) {
			var iefixIframe = new Element('iframe', { 
				'styles': { position: 'absolute', zIndex: -1 }
			}).inject(cont, 'top');
			iefixIframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
		}		
	}
	else if ($defined(evt.page)) {
		cont.setStyles({ 'display':'block', 'top': evt.page.x + 'px', 'left': evt.page.y + 'px' });		
	}
	else {
		cont.setStyle('display','block');
	}	
	cont.getElement('a.tt_close').addEvent('click', function(evt) {
		evt.stop();
		cont.setStyle('display','none');
		if (isIE6) iefixIframe.setStyle('display','none');
	});
}
		
// Mouseover für Buttons
var initRollOvers = function() {
	var btns = $$('a.greenbtn img, a.buchenbtn img, a.silverbtn img, input.imgbtn');	
	if (btns.length > 0) {			
		btns.each(function(btn) {
			if (!$defined(btn.hover)) {
				btn.hover = new Image();
				btn.normal = new Image();
				btn.normal.src = btn.src;						
				if (btn.src.indexOf('.png') != -1) {
					btn.hover.src = btn.src.replace(/\.png/, "_o\.png");
				}
				else if (btn.src.indexOf('.gif') != -1) {
					btn.hover.src = btn.src.replace(/\.gif/, "_o\.gif");
				}
				else {
					btn.hover.src = btn.src.replace(/\.jpg/, "_o\.jpg");
				}								
				btn.addEvent('mouseover', function(evt) {				
					btn.src = btn.hover.src;
				});
				btn.addEvent('mouseout', function(evt) {
					btn.src = btn.normal.src;
				});
			}
		});
	}
}


var ie6IFrameFix = function(hn) {
	var iframe = new Element('iframe', {
		'width': '938px',
		'height': '270px',
		'position' : 'absolute',
		'top' : '0px',
		'left' : '0px',
		'border' : 'none',
		'z-index' : -1
	}).set('frameborder','0');
	iframe.inject(hn, 'top');
};

// URL Parameter auslesen - Syntax: var param = getURLParam(param)
var getURLParam = function(strParamName) {
	var strReturn = "";
	var strHref = window.location.href;
	if ( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
			if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return strReturn;
};
    	
    	
var Fenster = null;
function neuesFenster(meineSeite,meinName,w,h,scroll,optionen) {
  LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
  TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
  settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+','+optionen;
  Fenster = window.open(meineSeite,meinName,settings);
}


var initSortableLists = function() {
	var sortableLists = $$('ul.sortableList');
	if (sortableLists.length > 0) {
		var mySortables = new Sortables(sortableLists, {
			revert: { duration: 500, transition: 'cubic:out' },
			clone: true,
			handle: 'div.imgholder',
			constrain: true,
			onStart: function(element,clone) {
				element.tween('opacity', 1, 0.2);
				clone.tween('opacity', 1, 0.8);
			},
			onComplete: function(element){
				element.set('opacity', 1);
				this.serialize(1, function(element, index){
					element.getElement('input.sortkey').value = index;
				});
				sortComplete(); // Hook für weitere Funktionen, z.B. zum Speichern
			}
		});
	}
};


var getInternetExplorerVersion = function () {
	// Returns the version of Internet Explorer or a -1
	// (indicating the use of another browser).
  	var rv = -1; // Return value assumes failure.
  	if (navigator.appName == 'Microsoft Internet Explorer') {
    	var ua = navigator.userAgent;
    	var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    	if (re.exec(ua) != null)
      		rv = parseFloat( RegExp.$1 );
  		}
  	return rv;
};


var setScrolly = function() {
	var scrl;
	if (document.all) {
		if (document.documentElement.scrollTop) {
			scrl = document.documentElement.scrollTop;
		} else {
			scrl = document.body.scrollTop;	
		}
	} else {
		scrl = pageYOffset;
	}
  if ($("scrolly"))	$("scrolly").value = scrl;
};

var scrollVal = function() {
	var scrl;
	if (document.all) {
		if (document.documentElement.scrollTop) {
			scrl = document.documentElement.scrollTop;
		} else {
			scrl = document.body.scrollTop;	
		}
	} else {
		scrl = pageYOffset;
	}
	return scrl;
};

