//Global Variables
ajaxRequestCounter = 0;
persKatalogAnfrage = false;


//window.onload = initilize;
document.observe("dom:loaded", function() {
	//Global Variables
	registerLanguageSelectorEvents();
	registerMerkzettelEvent();
	registerHomeLinkEvent();
	registerStichwortSucheEvents();
	registerDocumentEvents();	
	registerHauptMenueEvents();

	// Recherche formular.
	var patt=/idInfoseite\/148/g;
	if(patt.exec(window.location.href)) {
		toggleDeeplinkGenerator();
	}
	// Initilize Merkzettel.
	try { mz = new Merkzettel(); } catch(error) {}

	if(window.createIframe) {
		createIframe()
	}	
});

window.dhtmlHistory.create({ 
	//debugMode: true,
	toJSON: function(o) { return Object.toJSON(o); },
  fromJSON: function(s) { return eval ( '(' + s + ')' ); }
});
window.onload = function() {
	//dhtmlHistory.initialize();
	//dhtmlHistory.addListener(displayLocation);
};

function historyChange(newLocation, historyData) {
	displayLocation(newLocation, historyData);
}

function displayLocation(newLocation, sectionData) {
	if(sectionData) {
		new Ajax.Request(sectionData.url,
		{
			onSuccess: function(transport) {
				cic.$(sectionData.container).innerHTML = transport.responseText.strip();
			},
			onFailure: function(transport) {
				cic.$(sectionData.container).innerHTML = transport.responseText.strip();
			}
		});
	}
}

function registerMerkzettelEvent() {
	if(!!cic.$('merkzettel')) {
		cic.addEvent(cic.$('merkzettel'), 'click', function() {
			window.location.href = 'http://' + location.hostname + '/web/index.cfm/pm/merkzetteluebersicht';
		});
	}
	if(cic.$('merkzettelDruckansichtContainer')) {
		var timer = setTimeout('window.print()', 2000);
	}
}

function registerHauptMenueEvents() {

	var aMenuItems = document.getElementsByClassName("hauptmenue_item");
	for(var i = 0; i < aMenuItems.length; i++) {
		var element = aMenuItems[i];

		Event.observe(element, 'mouseenter', function(submenuid) {
				return function() { showsubmenue(submenuid) };
		}(element.getAttribute('submenueid')));

		Event.observe(element, 'mouseleave', function(submenuid) {
				return function() { hidesubmenue(submenuid) };
		}(element.getAttribute('submenueid')));

	}
	

}

function registerHomeLinkEvent() {
	if(!!cic.$('homelink')) {
		cic.addEvent(cic.$('homelink'), 'click', function() {
			window.location.href = 'http://' + location.hostname + '/web/index.cfm';
		});
	}
}

function registerDocumentEvents() {
	cic.addEvent(document, 'click', hideCalendars);
	cic.addEvent(document, 'click', stopSlideshow);
}


/*
* Language event handler.
*/

function registerLanguageSelectorEvents() {
	var languages = cic.$('languages');
	if(languages) {
		cic.addEvent(languages, 'mouseover', showList);
		cic.addEvent(languages, 'mouseout', hideList);
	}
}

function showList() {
	cic.$('languages_list').style.display = 'block';
}

function hideList() {
	cic.$('languages_list').style.display = 'none';
}

/*
* Stichwortsuche event handler.
*/
function registerStichwortSucheEvents () {
	var stichwortsuche = cic.$('stichwortsuche');
	if(stichwortsuche) {
		cic.addEvent(stichwortsuche, 'focus', stichwortGotFocus);
		cic.addEvent(stichwortsuche, 'blur', stichwortLostFocus);
		// AutoCompleter function.
		sitchwortSucheAutoComplete = new Ajax.Autocompleter('stichwortsuche','autoCompleterDiv',
			'/web/skripte/dsp_suggestions.cfm',
			{ afterUpdateElement:submitSearch, Frequency:0.9, minChars:1}
		);
	}
}

function stichwortKeyObserver(event) {
	code = (window.event) ? window.event.keyCode: event.which;
}

function stichwortGotFocus() {
	var stichwortsuche = cic.$('stichwortsuche');
	var value = stichwortsuche.value;
	var defaultValue = stichwortsuche.getAttribute("default");
	stichwortsuche.value = (defaultValue == value) ? "" : value;
	//stichwortsuche.select();
	if(defaultValue !== value && value !== "") {
		//sitchwortSucheAutoComplete.activate();
	}

}

function stichwortLostFocus() {
	var stichwortsuche = cic.$('stichwortsuche');
	stichwortsuche.value = (stichwortsuche.value == "") ? stichwortsuche.defaultValue : stichwortsuche.value;
}

function activateAutocompleter() {
	var stichwortsuche = cic.$('stichwortsuche');
	if(stichwortsuche.value == stichwortsuche.getAttribute("default")) return;
	sitchwortSucheAutoComplete.activate();
	onActivationComplete();	
}

function onActivationComplete() {
	var stichwortsuche = cic.$('stichwortsuche');
	var elem = sitchwortSucheAutoComplete.getCurrentEntry();

	if(elem.id.toLowerCase() == 'kug') return;

	if(!elem)	{
		var timeoutID = window.setTimeout("onActivationComplete()", 100);
	} 
	else {
		window.clearTimeout(timeoutID);

		var value = stichwortsuche.value;
		var defaultValue = stichwortsuche.getAttribute("default");

		if(defaultValue !== value && value !== "" && elem) 
		{
			elem = (elem.getAttribute('ishead')) ? elem.nextSibling : elem;
			submitSearch(value, elem);
		}
	}
}

function submitSearch(text, li) {
	var stichwortsuche = cic.$('stichwortsuche');

	if(li.getAttribute('ishead')) 
		li = li.next();

	if(stichwortsuche.value == "" || stichwortsuche.value == undefined) {
		if(li.childNodes[1])
			stichwortsuche.value = li.childNodes[1].innerHTML;
		else {
			stichwortsuche.value = stichwortsuche.getAttribute("default");
			return;//stichwortsuche.value =  "";
		}
			
	}
	
	var val = stichwortsuche.value;
			val = val.replace(/[ü]/g, 'ue');
	var querystring = "stichwortsuche/" + encodeURI(val) + "/suchartFrom/stichwort";
	var ids = li.getAttribute("id").split("_");

	switch(parseInt(ids[1])) {
		case 13:
			querystring += "/sucheStichwortIDLand/"+ids[0];
			break;
		case 18:
			querystring += "/sucheStichwortIDRegion/"+ids[0];
			break;
		case 49:
			querystring += "/sucheStichwortIDZielgebiet/"+ids[0];
			break;
		case 19:
			querystring += "/sucheStichwortIDOrt/"+ids[0];
			break;
		default:
			querystring += "/sucheStichwortIDObjekt/"+ids[0];
	}
	window.location.replace("/web/index.cfm/pm/uebersicht/" + querystring);
}

/*
* Infobox functions.
*/
function showinfobox(e, idobject) {
	var position = cic.getPointerPosition(e);
	if(position) {
		var infoxbox = cic.$('kurz_infobox');
		cic.$('tooltipContents').innerHTML = cic.$('vorteile_'+idobject).innerHTML; 
		cic.$('kurz_infobox').style.cssText = 'display:block;position:absolute;left:'+ parseInt(position.x+5) + 'px;top:'+ parseInt(position.y+3) +'px';
	}
}

function hideinfobox(e) {
	cic.$('kurz_infobox').style.display = 'none';
}

/*
* Calendar show.
*/
function hideCalendars(e) {
	if(e.button == 2) return;

	var target = cic.targetElement(e);

	// hide from calendar if visible.
	if(target.getAttribute('id') !== 'calendar_date_from') {
		var terraCalVon = cic.$('terra_cal_von');

		if(terraCalVon && terraCalVon.style.display == 'block') {
			terraCalVon.style.display = 'none';
			return false;
		}
	}

	
	// hide to calendar if visible.
	if(target.getAttribute('id') !== 'calendar_date_to') {
		var terraCalBis = cic.$('terra_cal_bis');
		if(terraCalBis && terraCalBis.style.display == 'block') {
			terraCalBis.style.display = 'none';
			return false;
		}
	}
	// Detailseite Calenders
	if(cic.$('sucheDetailVonKalenderContainer'))
		cic.$('sucheDetailVonKalenderContainer').style.display = 'none';
	if(cic.$('sucheDetailBisKalenderContainer'))
		cic.$('sucheDetailBisKalenderContainer').style.display = 'none';
}

function showFromCalender(options) {
	var terraCalVon = cic.$('terra_cal_von');
	if(terraCalVon.style.display == 'block') {
		terraCalVon.style.display = 'none';
		return false;
	}

	var terraCalBis = cic.$('terra_cal_bis');
	if(terraCalBis.style.display == 'block')
		terraCalBis.style.display = 'none';

	var datumPfeilContainer = cic.$('datumPfeilContainer');
	if(datumPfeilContainer.style.display == 'block')
		datumPfeilContainer.style.display = 'none';


	var position = cic.cumulativeOffset(cic.$('selectDateFrom'));
	terraCalVon.style.cssText = 'position:absolute;top:' + parseInt(position.y + 19) + 'px;left:' + position.x + 'px;display:block;z-index:250';
	kalender = new Kalender('vnd', {
		orientation: 'horizental',
		onSelect:callback_datumvon,
		calendars:3,
		minDate : options.minDate, 
		maxDate : options.maxDate,
		monthNames: options.monthNames,
		dayNames: options.dayNames,
		nextLinkText: options.nextLinkText,
		previousLinkText: options.previousLinkText,
		startDay:1,
		navigationPosition:'bottom',
		monthSelector : 1,
		showMonthName : 1,
		showNavigation : 1
	});
	//  iframeHackRef = cic.iframeHack(terraCalVon);
	kalender.show();
	cic.addEvent(terraCalVon, 'click', function(event) {
		if(event.stopPropagation)
			event.stopPropagation();
		else
			event.cancelBubble = true;
	});
}

function showToCalender(options) {
	var fromDate = cic.$('selectDateFrom').options[0].text;
	if(fromDate != "")
		options.minDate = fromDate;
	var terraCalBis = cic.$('terra_cal_bis');

	if(terraCalBis.style.display == 'block') {
		terraCalBis.style.display = 'none';
		return false;
	}
	var datumPfeilContainer = cic.$('datumPfeilContainer');

	if(datumPfeilContainer.style.display == 'block')
		datumPfeilContainer.style.display = 'none';

	lsMinDate = options.minDate.toDate().AddDays(7);

	var position = cic.cumulativeOffset(cic.$('selectDateTo'));
	terraCalBis.style.cssText = 'position:absolute;top:' + parseInt(position.y + 19) + 'px;left:' + position.x + 'px;display:block;z-index:249';
	kalender_bis = new Kalender('bsd', {
		orientation: 'horizental',
		onSelect:callback_datumbis,
		calendars:3,
		startDate : options.minDate,
		minDate : options.minDate, 
		maxDate : options.maxDate,
		monthNames: options.monthNames,
		dayNames: options.dayNames,
		nextLinkText: options.nextLinkText,
		previousLinkText: options.previousLinkText,
		startDay:1,
		navigationPosition:'bottom',
		monthSelector : 1,
		showMonthName : 1,
		showNavigation : 1
	});
	// iframeHackRef = cic.iframeHack(terraCalBis);
	kalender_bis.show();	
	cic.addEvent(terraCalBis, 'click', function(event) {
		if(event.stopPropagation)
			event.stopPropagation();
		else
			event.cancelBubble = true;
	});
}

function submitRechercheMaske() {
	/*
	* Kinderalter validation
	*/
	istKindAlterAusgewaehlt = true;
	if(document.getElementsByClassName("persoenliche_daten").length > 0) {
		var arKinderAlter = document.getElementsByClassName("persoenliche_daten");
		for(idxKinderAlter = 0; idxKinderAlter < arKinderAlter.length; idxKinderAlter++) {
			if(arKinderAlter[idxKinderAlter].selectedIndex == 0) {
				istKindAlterAusgewaehlt = false;
			}
		}
	}
	if(cic.$('sucheRechercheVon').value == '' || cic.$('sucheRechercheBis').value == '')
		cic.$('datumPfeilContainer').style.display = 'block'; 
	else if(!istKindAlterAusgewaehlt) {
		cic.$('kinderalterPfeilContainer').style.display = 'block';
	} else {
		cic.$('recherchemaskeFormular').submit();
	}
}

function callback_datumvon(d) {
	var date = (d.getDate() > 9) ? d.getDate():0+''+d.getDate();
	var month = (d.getMonth() + 1 > 9)? parseInt(d.getMonth()+1) : 0 +''+ parseInt(d.getMonth()+1);
	var datum = date + "." + month + "." + d.getFullYear();
	cic.$("selectDateFrom").options[0].text = datum;
	cic.$('terra_cal_von').style.display = 'none';
	cic.$('sucheRechercheVon').value = datum;

	dateFrom = datum.toDate();
	dateTo = cic.$("sucheRechercheBis").value.toDate();

	if(dateFrom > dateTo) {
		dateFrom.setDate(dateFrom.getDate()+14);
		var datum = dateFrom.LSDateFormat();
		cic.$("selectDateTo").options[0].text = datum;
		cic.$('sucheRechercheBis').value = datum;
	}
	reloadRechercheMaske();
}

function callback_datumbis(d) {
	var date = (d.getDate() > 9) ? d.getDate():0+''+d.getDate();
	var month = (d.getMonth() + 1 > 9)? parseInt(d.getMonth()+1) : 0 +''+ parseInt(d.getMonth()+1);
	var datum = date + "." + month + "." + d.getFullYear();
	cic.$("selectDateTo").options[0].text = datum;
	cic.$('terra_cal_bis').style.display = 'none';
	cic.$('sucheRechercheBis').value = datum;
	reloadRechercheMaske();
}

function reloadRechercheMaske() {
	if (cic.$('sucheRechercheVon').value != "" && cic.$('sucheRechercheBis').value != "") {
		sucheAktualisieren();
	}
}

/*
* detail page functions.
*/

function stopSlideshow(e) {
	var targetId = cic.targetElement(e).id;
	if(!!window.cicLightboxDiashow  && targetId && "lightbox,page_layer".indexOf(targetId) >= 0) {
		cicLightboxDiashow.stopSlideShow();
		cicLightboxDiashow.end();
		removeLayer();
	}
}

// blendet die Eingabefelder sofort aus
function toggleSelectVisibility(element,handletagselect) {
	if(element.tagName == 'SELECT' || element.tagName == 'INPUT') {
		element.style.visibility = (element.style.visibility == 'hidden') ? 'visible' : 'hidden';
	}
	if(element.childNodes && element.childNodes.length > 0) {
		for(var n=0; n<element.childNodes.length; n++) {
			toggleSelectVisibility(element.childNodes[n],handletagselect);
		}
	}
}

/*
* Newsletter
*/

function subscribe() {
	var W3CElement = cic.$('email');

	if(W3CElement) {
		createLayer();
		new Ajax.Request('/web/skripte/dsp_newsletterform.cfm/recipientId/'+W3CElement.value, {
			onSuccess: function(response) {
				var container = cic.$('newsletterform_container'); 
				var top = (!!document.body.scrollTop) ? document.body.scrollTop : document.documentElement.scrollTop; 
				cic.$('newsletterform_body').innerHTML = response.responseText.strip();
				cic.$('newsletterform_body').style.display = 'block';
				container.style.display = 'block';
				container.style.left = parseInt(screen.width / 2 - container.offsetWidth / 2) + 'px';
				container.style.top  = parseInt(top + 50 )+'px';
			},
			onFailure: function() {alert('Request failed.'); removeLayer();}
		});
	}
}

function hideNewsletterLayer() {
	cic.$('newsletterform_container').style.display='none';
	removeLayer();
}

function validateNewsletterForm() {
	var error = [];
	var anrede = document.forms['newsletter_form']['salutation'];
	var anrede_checked = false;
	var email = cic.$('email_field');
	var firstname = cic.$('firstname_field');
	var lastname = cic.$('lastname_field');

	for(i = 0; i < anrede.length; i++) {
		if(anrede[i].checked) anrede_checked = true;
	}
	if(!anrede_checked)
		error.push(cic.$('salutation_Herr').getAttribute('validationmsg'));
	if(firstname.value == '')
		error.push(firstname.getAttribute('validationmsg'));
	if(lastname.value == '')
		error.push(lastname.getAttribute('validationmsg'));
	if(!cic.isEmail(email.value))
		error.push(email.getAttribute('validationmsg'));
	if(error.length > 0) {
		var error_container = cic.$('error_container');
			error_container.innerHTML = error.join('<br />');
			error_container.style.display = 'block';
	} else {
		var querystring = $('newsletter_form').serialize();
		new Ajax.Request("/web/skripte/template/subscribe.cfm?"+querystring, {onSuccess: function(response){
				document.getElementsByClassName('newsletterform_container')[0].innerHTML = response.responseText.strip();}
		});
	}
}

function createLayer() {
	var page  = cic.$("page");
	var oDiv  = document.createElement('div');
	var style = 'height:'+ page.clientHeight + 'px;width:' + page.clientWidth + 'px;background-color:#4069A2;position:absolute;top:0px;z-index:0;';
		style += (cic.isIE()) ? 'filter: alpha(opacity=60);' :'opacity:0.6;';
	oDiv.style.cssText =  style ;
	oDiv.setAttribute('id', 'page_layer');
	page.appendChild(oDiv);
}

function removeLayer() {
	var page = cic.$("page");
	var pageLayer = cic.$('page_layer');
	if(pageLayer)
		pageLayer.parentNode.removeChild(pageLayer);
}

function showsubmenue(menue, event)	{
//	cic.toggleDisplay('sub' + menue);	
	if(menue && $('sub' + menue))
		$('sub' + menue).show();
}

function hidesubmenue(menue) {
//	cic.toggleDisplay('sub' + menue);
	if(menue && $('sub' + menue))
		$('sub' + menue).hide();
}

function drawMap(mapContainerId, data, options) {
	if(! cic.$(mapContainerId)) return;
	var zoom = (mapContainerId == 'detailmap_gross') ? 13:10;

	var latlng = new google.maps.LatLng(data.lat,data.lng);
	var infoWindow = new google.maps.InfoWindow();
			
	var options = {
		zoom: zoom,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		disableDefaultUI: true,
		mapTypeControl: true,
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DEFAULT},
		navigationControl: true,
		navigationControlOptions: {
			style: google.maps.NavigationControlStyle.ANDROIDs,
			position: google.maps.ControlPosition.LEFT
		},
		scaleControl: (options && options.scaleControl) ? options.scaleControl:true
	};


	map = new google.maps.Map(cic.$(mapContainerId), options);
	

	

	var marker = new google.maps.Marker({
		position: latlng,
		map:map,
		icon:createIcon(),
		zIndex:999
	});

	mapidobjekt = cic.$(mapContainerId).getAttribute('idobjekt')

	if(mapContainerId == 'detailmap_gross') {

		google.maps.event.addListenerOnce(map, 'idle', function() {
			var bounds = map.getBounds().toUrlValue().split(",");
			_querystring = "idobjekt="+mapidobjekt+"&suchetop=" + bounds[0] + "&sucheleft=" + bounds[1] + "&suchebottom=" +  bounds[2] + "&sucheright=" + bounds[3];
			
			new Ajax.Request("/web/skripte/template/getSucheKarteGeodaten.cfm?"+_querystring, {
				onSuccess: function(response) {
					var data = eval( '(' + response.responseText + ')' );
					for (var i = 0; i < data.length; i++) {
						var jsonObj = data[i];
						var latlng = new google.maps.LatLng(parseFloat(jsonObj.lat), parseFloat(jsonObj.lng));

						var imageDetail = new google.maps.MarkerImage("/images/icons/icon2.png",
																					new google.maps.Size(22,21),
																					new google.maps.Point(0,0),
																					new google.maps.Point(14,14) );
	
			  	  var marker = new google.maps.Marker({
			    	    position: latlng,
			      	  map: map,
								icon:imageDetail,
								zIndex:i
			    	 }); // End marker

						 var querystring = "/isdetail/1/idobjekt/"+jsonObj.idobjekt+"/seite/detail";
	
						 google.maps.event.addListener(marker, 'click', function(target, querystring) {
							return function() {
								showInfoWindow(target, querystring);
							}
    				}(marker, querystring));
  		

					 } // End for
				 }// End onSuccess callback
			}); // End ajax

	  }); // End goog Eventlistener
	}

}

function showInfoWindow(marker, querystring) {
	if(window.infoWindow) {
 		infoWindow.close();	
	} else {
		infoWindow = new google.maps.InfoWindow();
	}
  new Ajax.Request('/web/skripte/template/infowindow.cfm' + querystring, {
		onSuccess: function(response) {
			infoWindow.setContent(response.responseText.strip());
			infoWindow.open(map, marker);
		},

		onFailure: function(response) {
			infoWindow.open(map, marker);
		}

	});
}

function formValidator(formid) {
	var form = cic.$(formid);
	if(!form) return ('');

	var errors = [];
	var len = form.elements.length;
	for(var elementIdx = 0; elementIdx < len; elementIdx++) {
		var element = form.elements[elementIdx];
		if(!element && !element.getAttribute('validationtype')) return ('');
		switch (element.getAttribute('validationtype')) {
			case 'text'		:	if (cic.visible(element)) {
									if(cic.getValue(element).strip() == "") {
										errors.push(element.getAttribute('validationmsg'));
										element.style.border = "1px solid #c33543";
									}else {
										element.style.border = "1px solid #91b7dc";
									}
								}
				break;
			case 'email'	:	if (cic.visible(element)) {
									if(!cic.isEmail(cic.getValue(element))) {
										errors.push(element.getAttribute('validationmsg'));
										element.style.border = "1px solid #c33543";
									}else {
										element.style.border = "1px solid #91b7dc";
									}
								}
				break;
			case 'numeric'	:	if (cic.visible(element)) {
									if(isNaN(parseInt(cic.getValue(element).replace(',', '.')))) {
										errors.push(element.getAttribute('validationmsg'));
										element.style.border = "1px solid #c33543";
									}else {
										element.style.border = "1px solid #91b7dc";
									}
								}
				break;
			case 'confirm'	:	if (cic.visible(element)) {
									if(cic.getValue(cic.$(element.getAttribute('sourcefield'))) !== cic.getValue(element) || cic.getValue(element) == '') {
										errors.push(element.getAttribute('validationmsg'));
										element.style.border = "1px solid #c33543";
									}else {
										element.style.border = "1px solid #91b7dc";
									}
								}
				break;
		}
	}
	return (errors.length > 0) ? '<li>' + errors.uniq().join("<li>") : '';
}

function validateKotaktForm(formid) {
	var errors = formValidator(formid);
//	alert(errors)
	return (errors == "") ? "" :  "<ul><li>" + errors +"</ul>";
}

/*
* Recherche maske functions.
*/
function sucheRegionReset() {
	var form = $("recherchemaskeFormular");
	if(form['sucheRechercheRegion'])
		form['sucheRechercheRegion'].value = "";
}

function toggelLandSuche(e) {
	var elem = Event.element(e);
	var id = elem.getAttribute('id').split('_')[1];
	var region = $('regions_' + id);

	if(!!region) {
		region.style.display = (region.style.display == 'block') ? 'none':'block';
		var label = $("label_"+id);
			label.className = (label.className == 'auf') ? 'zu':'auf';
		return;
	}
	sucheRegionReset();
	sucheAktualisieren();
}

function sucheAktualisieren() {
	var formControll = $('recherchemaskeFormular');
	var querystring = formControll.serialize();

	new Ajax.Request("/web/skripte/dsp_rechercheformular.cfm?"+querystring, {
		onCreate: function(){
			cic.$('progressbar').className = 'progressbaron';
		},
		onComplete: function() {
			cic.$('progressbar').className = 'progressbaroff';
		},
		onSuccess: function(response) {
			if(document.getElementsByClassName('recherchemaske_hidden')[0])
				document.getElementsByClassName('recherchemaske_hidden')[0].innerHTML = response.responseText;
			else
				document.getElementsByClassName('recherchemaske')[0].innerHTML = response.responseText;
		},
		onFailure: function(response) {
			if(document.getElementsByClassName('recherchemaske_hidden')[0])
				document.getElementsByClassName('recherchemaske_hidden')[0].innerHTML = response.responseText;
			else
				document.getElementsByClassName('recherchemaske')[0].innerHTML = response.responseText;
		}
	});
}
function sucheZuruecksetzen() {
	cic.scrollTo('recherchemaske_head');
	var querystring = "suchartFrom/rechercheReset";

	new Ajax.Request("/web/skripte/dsp_rechercheformular.cfm/"+querystring, {
		onCreate: function(){
			cic.$('progressbar').className = 'progressbaron';
		},
		onComplete: function() {
			cic.$('progressbar').className = 'progressbaroff';
		},
		onSuccess: function(response) {
			if(document.getElementsByClassName('recherchemaske_hidden')[0])
				document.getElementsByClassName('recherchemaske_hidden')[0].innerHTML = response.responseText;
			else
				document.getElementsByClassName('recherchemaske')[0].innerHTML = response.responseText;
		},
		onFailure: function(response) {
			if(document.getElementsByClassName('recherchemaske_hidden')[0])
				document.getElementsByClassName('recherchemaske_hidden')[0].innerHTML = response.responseText;
			else
				document.getElementsByClassName('recherchemaske')[0].innerHTML = response.responseText;
		}
	});
}

function sucheChangeAufgeklappt(name, klappname) {
	obj = document.getElementById(name);
	klappObj = document.getElementsByName("sucheRechercheAufgeklappt")[0];
	klappObj.value = ListDeleteAt(klappObj.value, ListFind(klappObj.value, klappname)); 
	if(obj.style.display == 'none') {
		obj.style.display = 'block';
		klappObj.value = ListAppend(klappObj.value, klappname);
	} else {
		obj.style.display = 'none';
	}
}

function ListAppend(l, v, d){
	l += ""; // cheap way to convert to a string
	if(!d){d = ",";}
	var r = "";
	if (this.ListLen(l)){
		r = l + d + v;
	} else {
		r = v;
	}
	return r;
}

function ListDeleteAt(l, p, d){
	l += ""; // cheap way to convert to a string
	if(!d){d = ",";}
	var i,posInList;
	var posInArray = p - 1;
	var thisD 	= "";
	var r = "";
	for(i = 0; i < l.split(d).length; i++){
		if (i != posInArray){
			posInList = i + 1;
			if (r.length){
				thisD 	= d;
			}
			r += thisD + this.ListGetAt(l, posInList, d);
		}
	}
	return r;
}

function ListFind(l,v,d){
	l += ""; // cheap way to convert to a string
	if(!d){d = ",";}
	var r = 0;
	var listToArray = l.split(d);
	for (var i=0; i < listToArray.length; i++){
		if (listToArray[i] == v){
			r = i + 1;
			break;
		}
	}
	return r;
}

function ListGetAt (l, p, d){
	l += ""; // cheap way to convert to a string
	if(!d){d = ",";}
	return l.split(d)[p - 1];
}

function ListLen(l,d){
	l += ""; // cheap way to convert to a string
	if(!d){d = ",";}
	if(l.length){return l.split(d).length;}
	return 0;
}
function toggleOptions(containerId, childElementId, klappname) {
	klappObj = document.getElementsByName("sucheRechercheAufgeklappt")[0];
	klappObj.value = ListDeleteAt(klappObj.value, ListFind(klappObj.value, klappname));
	var container = document.getElementById(containerId);
	var optionsContainer = document.getElementById(childElementId);

	if(optionsContainer.style.display == 'none')
		klappObj.value = ListAppend(klappObj.value, klappname);

	optionsContainer.style.display = (optionsContainer.style.display == 'block') ? 'none':'block';
	if(container.className == "zu" || container.className == "auf")
		container.className = (container.className == 'auf') ?  'zu':'auf' ;
	else
		container.className = (container.className == 'auf_head') ?  'zu_head':'auf_head' ;
}

/*
* Deeplink functions.
*/
function getDeeplink() {
	var container = cic.$('deeplinkContainer');
	var querystring = $('recherchemaskeFormular').serialize().replace('pm=reisebuerobereich&', '');
	var _url = location.protocol + "//" + location.host + "/web/index.cfm//pm/uebersicht?" + querystring;
	var _link= document.createElement("a");
		_link.setAttribute('href', _url);
		_link.setAttribute('target', '_blank');
		_link.appendChild(document.createTextNode(_url));

	container.innerHTML = "";
	container.appendChild(_link);
	cic.scrollTo('page');
}

function toggleDeeplinkGenerator() {
	var element = document.getElementsByClassName("recherchemaske_hidden")[0];
	element.style.display =	(element.getStyle('display') == 'none') ? 'block':'none';
}

/*
* GoogleMap Search functions.
*/

function updateKarteRecherche(_url) {
	new Ajax.Request("/web/skripte/dsp_googlemaprecherche.cfm" +_url, {
		onSuccess: successKarteRecherche,
		onFailure: failureKarteRecherche
	});
}

function successKarteRecherche(response) {

	json = eval( '(' + response.responseText + ')' );


	overlay = new CICOverlay(json);
	overlay.setMarkers();
	overlay.fitBounds();
}

function failureKarteRecherche(response) {
	alert(response.responseText.strip());
}

function getChildObject(obj) {
	new Ajax.Request("/web/skripte/dsp_googlemaprecherche.cfm/type/" + obj.type + "/idparent/" + obj.idparent, {
		onSuccess: successKarteRecherche,
		onFailure: failureKarteRecherche
	});
}

function startKarteRecherche(obj) {
	var href = "/web/index.cfm/pm/uebersicht/suchartFrom/karte/";

	switch(obj.parent) {
		case 'Land': href += "sucheKarteIDLand/" + obj.idparent; break;
		case 'Region': href += "sucheKarteIDRegion/" + obj.idparent; break;
		case 'Zielgebiet': href += "sucheKarteIDZielgebiet/" + obj.idparent; break;
		case 'Ort': href += "sucheKarteIDOrt/" + obj.idparent; break;
		default: href = "/web/index.cfm/pm/detail/idobjekt/"+obj.idparent;
	}
	window.location.href = href;
}

function closeOnEscape(e) {
	var keyCode = (e.which) ? e.which:e.keyCode;
	if(Event.KEY_ESC == keyCode ) {
		hideMapSearch();
		Event.stopObserving(document,'keypress', closeOnEscape);
	}
}

function showMapSearch(event) {
	createLayer();
	if(!cic.$('zoomlevelContainer')) {
		var zoomlavelContainer = document.createElement("div");
			zoomlavelContainer.id = "zoomlevelContainer";
			zoomlavelContainer.innerHTML = 	1;
		document.body.appendChild(zoomlavelContainer);
	}
	// Registring KeyPress Event. In order to close 
	// map layer on Esc-Key press.
	Event.observe(document, 'keypress', closeOnEscape);

	var container = cic.$('googlemapsearch_container');
		container.style.display = 'block';
		container.style.left = parseInt(screen.width / 2 - container.offsetWidth / 2) -10 + 'px';
		container.style.top  = parseInt(50 )+'px';	
	var form = $('recherchemaskeFormular');
	var land = form['sucheRechercheIDLand'];
	var region = form['sucheRechercheRegion'];
	var regionIds = [];
	var querystring = form.serialize();
	var start = querystring.indexOf('sucheRechercheIDReiseart');
	var end = querystring.indexOf('sucheRechercheIstZeitlichFlexibel');

	querystring = querystring.substring(start, end-1) + "&suchartFrom=recherche";
	if(region) {
		for(var i = 0; i < region.length; i++) {
			if(region[i].checked) {
				regionIds.push(region[i].value);
			}
		}
	}
	if(regionIds.length == 1) { // 1 region selected
		querystring = querystring.concat("&sucheRechercheType=ort");
	} else if(parseInt(cic.getValue(land[0])) != 0) {
		querystring = querystring.concat("&sucheRechercheType=region");
	}
	new Ajax.Request("/web/skripte/dsp_googlemaprecherche.cfm?" + querystring, {
		onSuccess: successKarteRecherche,
		onFailure: function(response) {
			alert(response.responseText);
		}
	});
}

function hideMapSearch() {
	removeLayer();
	var container = cic.$('googlemapsearch_container');
		container.style.display = 'none';
		cic.$('googlemapsearch_body').innerHTML = "";
}

function showCategoryText(e) {
	var position = cic.getPointerPosition(e);
	var element = cic.targetElement(e);
	cic.$('ausstattungIContents').innerHTML = element.getAttribute('ausstattungtext');
	if(position) {
		cic.$('ausstattungInfobox').style.cssText = 'display:block;position:absolute;left:'+ parseInt(position.x+5) + 'px;top:'+ parseInt(position.y+3) +'px';
	}
}

function hideCategoryText(e) {
	cic.$('ausstattungInfobox').style.cssText = 'display:none;';
}

String.prototype.toDate = function() {
	var dateArray = this.split(".");
	return new Date(dateArray[2], dateArray[1] - 1, dateArray[0], 0, 0, 0);
};

Date.prototype.LSDateFormat = function() {
	var date = (this.getDate() > 9) ? this.getDate():0+''+this.getDate();
	var month = (this.getMonth() + 1 > 9)? parseInt(this.getMonth()+1) : 0 +''+ parseInt(this.getMonth()+1);
	return date + "." + month + "." + this.getFullYear();
};

Date.prototype.AddDays = function(numberOfDays) {
	if(isNaN(numberOfDays)) return;
	return new Date(this.setDate(this.getDate()+parseInt(numberOfDays)));
};

Function.prototype.bind = function(scope) {
	var _function = this;
	return function() {
		return _function.apply(scope, arguments);
	};
};
/*Seiten Menü 2te Ebene aufrufen*/
function displaysubmenue(menue)	{
	cic.toggleDisplay('sub' + menue);
}

/*
 * Projectsfacts - Ticket 485 18.11.2011
 */
function createQueryString(form, options) {
	
	var prefix = options.fieldprefix;
	var querystring = querystring = "?idobjekt=" + options.idobjekt + (options.fieldprefix == "sucheRecherche" ? "&suchartFrom=" + options.suchartFrom : "");
	querystring += "&" + options.fieldprefix + "IstZeitlichFlexibel=" + cic.getValue(form[ options.fieldprefix + 'IstZeitlichFlexibel'][0]);
	querystring += "&" + options.fieldprefix + "Von=" + form[options.fieldprefix + 'Von'].value + "&" + options.fieldprefix + "Bis=" + form[options.fieldprefix + 'Bis'].value;
	querystring += (form[options.fieldprefix + 'Dauer'] 			&&  cic.getValue(form[prefix + 'Dauer']) != "" ? "&sucheRechercheDauer=" + cic.getValue(form[options.fieldprefix + 'Dauer']) : "");
	querystring += (form[options.fieldprefix + 'AnzahlErwachsene'] &&  cic.getValue(form[prefix + 'AnzahlErwachsene']) != "" ? "&" + prefix + "AnzahlErwachsene=" + cic.getValue(form[options.fieldprefix + 'AnzahlErwachsene']) : "");
	querystring += (form[options.fieldprefix + 'AnzahlKinder']  	&&  cic.getValue(form[prefix + 'AnzahlKinder']) != "" ? "&" + prefix + "AnzahlKinder=" + cic.getValue(form[options.fieldprefix + 'AnzahlKinder']) : "");
	querystring += (form[options.fieldprefix + 'AnzahlPersonen']  	&&  cic.getValue(form[prefix + 'AnzahlPersonen']) != "" ? "&" + prefix + "AnzahlPersonen=" + cic.getValue(form[options.fieldprefix + 'AnzahlPersonen']) : "");
	querystring += (form[options.fieldprefix + 'AlterKind1']  		&&  cic.getValue(form[prefix + 'AlterKind1']) != "" ? "&" + prefix + "AlterKind1=" + cic.getValue(form[options.fieldprefix + 'AlterKind1']) : "");
	querystring += (form[options.fieldprefix + 'AlterKind2']  		&&  cic.getValue(form[prefix + 'AlterKind2']) != "" ? "&" + prefix + "AlterKind2=" + cic.getValue(form[options.fieldprefix + 'AlterKind2']) : "");
	querystring += (form[options.fieldprefix + 'AlterKind3']  		&&  cic.getValue(form[prefix + 'AlterKind3']) != "" ? "&" + prefix + "AlterKind3=" + cic.getValue(form[options.fieldprefix + 'AlterKind3']) : "");
	return querystring;

}

function showDetailPage(options) {
	var form = ($('recherchemaskeFormular') ? $('recherchemaskeFormular') : $('terminePreiseForm')),
	  	querystring = createQueryString(form, options);
		
	if(window.location.href) {
		window.location.href = "/web/index.cfm/pm/detail" + querystring; 	
	} else {
		window.location = "/web/index.cfm/pm/detail" + querystring; 	
	}
}

