	

	// _________________________________________________________________________________________
	function searchFormular( searchObjectString, iframeName, objIframeActions, idDivSearchforServices )
	{
		this.objSearchData          = eval( searchObjectString );
		this.iframeName             = iframeName;
		this.objIframeActions       = objIframeActions;
		this.idDivSearchforServices = idDivSearchforServices;

		this.setSelection = function setSelection( objSelection )
		{
			switch ( objSelection.name )
			{
				case "region":
					searchFormular.buildNewSelection( "region" );
					break;
					
				case "isocode":
					searchFormular.buildNewSelection( "isocode" );
					break;
			}
		}
		
		this.onchange = function onchange( objForm )
		{
			document.getElementById( 'searchFormularLoading' ).style.display = "";
			document.getElementById( 'completeResultFrame' ).style.display   = "none";
			
			if ( document.getElementById( 'completeOfferFrame' ) )
			{
				document.getElementById( 'completeOfferFrame' ).style.display    = "none";
			}
			
			if ( this.iframeName != undefined )
			{
				this.objIframeActions.resizeParentIframe( this.iframeName, this.idDivSearchforServices );
			}
			
			objForm.submit();
		}
		
		this.buildNewSelection = function buildNewSelection( selection )
		{
			var objFormDiv    = document.getElementById( "bookablesSearchFor" );
			var objSelections = objFormDiv.getElementsByTagName( "select" );
			
			for ( var a = 0; a < objSelections.length; a++ )
			{
				if ( objSelections[a].id == "isocode" )
				{
					var isoCode = objSelections[a].value;
				}
				
				if ( objSelections[a].id == "region" )
				{
					var regionName = objSelections[a].value;
				}
				
				if ( objSelections[a].id == "location" )
				{
					var locationName = objSelections[a].value;
				}
				
				// * Isocode
				if ( objSelections[a].id == "isocode" && selection != "isocode" )
				{
					var objData                = searchFormular.objSearchData.countries;
					var lastSelected           = objSelections[a].value;
					objSelections[a].innerHTML = "";
					
					var objOption       = document.createElement( "option" );
					objOption.value     = "";
					objOption.appendChild(document.createTextNode( "beliebig" ))
					objSelections[a].appendChild( objOption );
					
					for ( var b = 0; b < objData.length; b++ )
					{
						if ( objData[b].region == regionName || regionName == "" )
						{
							var objOption       = document.createElement( "option" );
							objOption.appendChild(document.createTextNode( objData[b].name ))
							objOption.value     = objData[b].value;
							
							if ( lastSelected == objOption.value )
							{
								objOption.selected = true;
							}
							
							objSelections[a].appendChild( objOption );
						}
					}
				}
				
				// * Location
				if ( objSelections[a].id == "location" )
				{
					var objData                = searchFormular.objSearchData.locations;
					var lastSelected           = objSelections[a].value;
					objSelections[a].innerHTML = "";

					var objOption       = document.createElement( "option" );
					objOption.value     = "";
					objOption.appendChild(document.createTextNode( "beliebig" ))
					objSelections[a].appendChild( objOption );
					
					for ( var b = 0; b < objData.length; b++ )
					{
						if ( ( objData[b].country == isoCode || !isoCode ) && ( objData[b].region == regionName || regionName == "" ) )
						{
							var objOption       = document.createElement( "option" );
							objOption.appendChild(document.createTextNode( objData[b].name ))
							objOption.value     = objData[b].value;
							
							if ( lastSelected == objOption.value )
							{
								objOption.selected = true;
							}
							
							objSelections[a].appendChild( objOption );
						}
					}
				}
			}
		}
	}
	
	// _________________________________________________________________________________________
	/**
	 * Standardfunktionen für Ergebnisliste
	 *
	 */
	function resultActions( url, idDivSearchforServices, iframeName, objIframeActions )
	{
		this.lastPosition          = 0;
		this.tunnelUrl             = url;
		this.iframeName            = iframeName;
		this.objIframeActions      = objIframeActions;
		this.idDivSearchforServices = idDivSearchforServices;
		this.iframeWidth            = 760;
		
		//
		this.showHideRooms = function showHideRooms( divId, buttonName )
		{
			var objButton       = getButtonObj( divId, "buttonPrices" );
			var objButtonActive = getButtonObj( divId, "buttonPricesActive" );
			var objDiv          = document.getElementById( divId );
			var objDivs         = objDiv.getElementsByTagName( "div" );
			var stateDiv        = new String();
			
			if ( buttonName == undefined )
			{
				buttonName = "Zimmerpreise"
			}
			
			for ( var a = 0; a < objDivs.length; a++ )
			{
				if ( objDivs[a].id == "rooms" )
				{
					if ( stateDiv == "" )
					{
						stateDiv = objDivs[a].style.display;
					}
				
					if ( stateDiv == "none" )
					{
						jumpToPosition( objDiv );
						resultActions.switchOnOff( objButton, objButtonActive, true );
						objDivs[a].style.display = "";
					}
					else
					{
						resultActions.switchOnOff( objButton, objButtonActive, false );
						objDivs[a].style.display = "none";
					}
				}
			}
			
			if ( this.iframeName )
			{
				this.objIframeActions.resizeParentIframe( this.iframeName, this.idDivSearchforServices );
			}
		}
		
		this.showHideDetails = function showHideDetails( divId, mode, buttonName )
		{
			var objDiv          = document.getElementById( divId );
			var objDivs         = objDiv.getElementsByTagName( "tr" );
			var objLinks        = objDiv.getElementsByTagName( "a" );
			var height          = 0;
			var hightDetailsOn  = false;
			var objButton       = getButtonObj( divId, "buttonDetails" );
			var objButtonActive = getButtonObj( divId, "buttonDetailsActive" );
			var switchOn        = false;
			
			if ( divId.split( "commendation" )[1] != undefined )
			{
				var idCount        = divId.split( "commendation" )[1];
			}
			
			if ( divId.split( "hotel" )[1] != undefined )
			{
				var idCount        = divId.split( "hotel" )[1];
			}
			
			if ( divId.split( "specials" )[1] != undefined )
			{
				var idCount        = divId.split( "specials" )[1];
			}

			if ( buttonName == undefined )
			{
				buttonName = "Details"
			}
			
			for ( var a = 0; a < objDivs.length; a++ )
			{
				if ( objDivs[a].id == "highDetails" )
				{
					if ( objDivs[a].style.display == "none" && mode != "off" )
					{
						objDivs[a].style.display = "";
						switchOn                 = true;
					}
					else
					{
						objDivs[a].style.display = "none";
					}
				}
			}
			
			for ( var a = 0; a < objDivs.length; a++ )
			{
				if ( objDivs[a].id == "lowDetails" )
				{
					if ( !switchOn )
					{
						objDivs[a].style.display = "";
					}
					else
					{
						objDivs[a].style.display = "none";
					}
				}
			}

			switchOnOffHotels( divId, switchOn );
			
			if ( this.iframeName )
			{
				this.objIframeActions.resizeParentIframe( this.iframeName, this.idDivSearchforServices );
			}
			
			if ( switchOn )
			{
				jumpToPosition( objDiv );
				resultActions.switchOnOff( objButton, objButtonActive, true );
				
				var objImg = document.getElementById( "box"+idCount );
				
				if ( objImg )
				{
					var convert   = false;
					var objImages = objImg.getElementsByTagName( "img" );
					
					if ( objImages[0].src.split( "__sourcePicture__" )[1] != "undefined" )
					{
						convert = true;	
					}	
					
					if ( convert )
					{
						for ( var s = 0; s < objImages.length; s++ )
						{
							objImages[s].src = objImages[s].src.split( "__sourcePicture__" )[0];
						}
						
						window["data"+idCount].box = $( 'box'+idCount );
						window["ns"+idCount] = new noobSlide( window["data"+idCount] );
					}
					else
					{
						window["ns"+idCount].play();
					}
				}
			}
			else
			{
				resultActions.switchOnOff( objButton, objButtonActive, false );
				
				if ( window["ns"+idCount] )
				{
					window["ns"+idCount].stop();
				}
			}
		}
		
		this.showBigPicture = function showBigPicture( hotelDivId, pictureUrl )
		{
			var objDiv  = document.getElementById( hotelDivId );	
			var objPics = objDiv.getElementsByTagName( "img" );	
			
			for ( var b = 0; b < objPics.length; b++ )
			{
				if ( objPics[b].id == "bigPicture" )
				{
					objPics[b].src    = pictureUrl;
					
					// Wichtig fürs Umschalten im IE
					objPics[b].style.display = "none";
					objPics[b].style.display = "";
				}
			}
		}
		
		this.showHideBookingRoad = function showHideBookingRoad( hotelDivId, bookingLink, buttonName1, buttonName2 )
		{
			var objDiv   = document.getElementById( hotelDivId );	
			var objDivs  = objDiv.getElementsByTagName( "div" );	
			var objTrs   = objDiv.getElementsByTagName( "tr" );	
			var objLinks = objDiv.getElementsByTagName( "a" );
			var switchOn = false;	
			var pos      = getPosition(objDiv);

			var objButtonBooking       = getButtonObj( hotelDivId, "buttonBooking"       );
			var objButtonBookingActive = getButtonObj( hotelDivId, "buttonBookingActive" );
			var objButtonDetails       = getButtonObj( hotelDivId, "buttonDetails"       );
			var objButtonDetailsActive = getButtonObj( hotelDivId, "buttonDetailsActive" );
			var objButtonPrices        = getButtonObj( hotelDivId, "buttonPrices"        );
			var objButtonPricesActive  = getButtonObj( hotelDivId, "buttonPricesActive"  );
			
			for ( var a = 0; a < objDivs.length; a++ )
			{
				if ( objDivs[a].id == "rooms" )
				{
					var objRooms = objDivs[a];
				}
			}
			
			for ( var b = 0; b < objTrs.length; b++ )
			{
				if ( objTrs[b].id == "bookingRoad" )
				{
					var objTds    = objTrs[b].getElementsByTagName( "td" );	
					var objIframe = document.createElement( "iframe" );
					
					if ( objTrs[b].style.display == "none" )
					{
						resultActions.showHideDetails( hotelDivId, "off", buttonName2 );
						objTrs[b].style.display = "";
						objTds[0].innerHTML     = "";
						objIframe.style.height  = "200px";
						objIframe.style.width   = this.iframeWidth+"px";
						objIframe.scrolling     = "no";
						objIframe.frameBorder   = "0";
						objIframe.style.border  = "0px";
						objIframe.id            = "bookingRoadIframe";
						objTds[0].appendChild( objIframe );
						objIframe.src           = resultActions.tunnelUrl+""+bookingLink;

						// objIframe.src           = "http://www/sites/Tourserver%20Plugins/searchforservices.tunnel.php5?twrsQuery="+bookingLink;
						switchOn                = true;
					}
					else
					{
						objTrs[b].style.display = "none";
						objTds[0].innerHTML     = "Es wird geladen ...";
					}
				}
			}
			
			switchOnOffHotels( hotelDivId, switchOn );
			
			if ( this.iframeName )
			{
				this.objIframeActions.resizeParentIframe( this.iframeName, this.idDivSearchforServices );
			}
			
			if ( switchOn )
			{
				resultActions.switchOnOff( objButtonBooking, objButtonBookingActive, true );
				resultActions.switchOnOff( objButtonPrices, objButtonPricesActive, false );
				objButtonDetails.style.display       = "none";
				objButtonDetailsActive.style.display = "none";
				
				if ( objButtonPrices )
				{
					objButtonPrices.style.display        = "none";
					objButtonPricesActive.style.display  = "none";
				}
				
				objRooms.style.display               = "none";
				resultActions.lastPosition           = pos.y;
			}
			else
			{
				objButtonDetails.style.display = "";
				
				if ( objButtonPrices )
				{
					objButtonPrices.style.display  = "";
					objButtonPricesActive.style.display  = "";
				}
				
				resultActions.switchOnOff( objButtonBooking, objButtonBookingActive, false );
				resultActions.switchOnOff( objButtonPrices, objButtonPricesActive, false );
				
				if ( !this.iframeName )
				{
					jumpToOld( resultActions.lastPosition );
				}
			}
			
		}
		
		this.switchOnOff = function switchOnOff( objButton, objButtonActive, isActive )
		{
			if ( objButton )
			{
				if ( isActive )
				{
					objButton.style.display       = "none";
					objButtonActive.style.display = "";
				}
				else
				{
					objButton.style.display       = "";
					objButtonActive.style.display = "none";
				}
			}
		}
		
		function switchOnOffHotels( hotelDivId, switchOn )
		{
			var objAllDivs  = document.getElementsByTagName( "div" );
				
			for ( var c = 0; c < objAllDivs.length; c++ )
			{
				if ( objAllDivs[c].className != undefined )
				{
					if ( objAllDivs[c].className == "hotelDates" )
					{
						if ( objAllDivs[c].id != hotelDivId )
						{
							if (switchOn)
							{
								objAllDivs[c].style.display = "none";
							}
							else
							{
								objAllDivs[c].style.display = "";
							}
						}
					}
				}
			}
		}
		
		// ein bestimmtes Objekt nach ID erhalten
		function getButtonObj( containerId, buttonId )
		{
			var objDiv   = document.getElementById( containerId );
			var objs     = objDiv.getElementsByTagName( "a" );
			
			for ( var a = 0; a < objs.length; a++ )
			{
				if ( objs[a].id == buttonId )
				{
					return objs[a];
				}
			}
			
			return false;
		}
		
		// Position of an element on the site
	  	function getPosition(obj) 
	  	{
	  		var pos = { x:0, y:0 };
	  
	  		do 
	  		{
	  			pos.x += obj.offsetLeft;
	  			pos.y += obj.offsetTop;
	  		} 
	  		while 
	  		(
	  			obj = obj.offsetParent
	  		);
	
	  		return pos;
	  	}
	  	
	  	function jumpToPosition( obj )
		{
			var pos = getPosition(obj);
			resultActions.lastPosition = pos.y;
			
			if ( this.iframeName )
			{
				parent.scrollTo( 0, pos.y );
			}
			else
			{
				scrollTo( 0, pos.y );
			}
			
		}
		
		function jumpToOld( y )
		{
			if ( this.iframeName )
			{
				parent.scrollTo( 0, y);
			}
			else
			{
				scrollTo( 0, y);
			}
		}
	}
	
	// _________________________________________________________________________________________
	function iframeActions(  )
	{
		function getPageSizeWithScroll(  )
    	{
			if (window.innerHeight && window.scrollMaxY) 
			{
				// Firefox
				yWithScroll = window.innerHeight + window.scrollMaxY;
				xWithScroll = window.innerWidth + window.scrollMaxX;
			} 
			else if (document.body.scrollHeight > document.body.offsetHeight)
			{ 
				// all but Explorer Mac
				yWithScroll = document.body.scrollHeight;
				xWithScroll = document.body.scrollWidth;
			} 
			else 
			{ 
				// works in Explorer 6 Strict, Mozilla (not FF) and Safari
				yWithScroll = document.body.offsetHeight;
				xWithScroll = document.body.offsetWidth;
			}
			
			var pageSize = { x:xWithScroll, y:yWithScroll };
			
			return pageSize; 
		} 
    
		function getPageSizeWithOuterDiv( idOuterDiv )
		{
			var objDiv      = document.getElementById( idOuterDiv );
			var xWithScroll = objDiv.offsetWidth;
			var yWithScroll = objDiv.offsetHeight;
			var pageSize    = { x:xWithScroll, y:yWithScroll };
			
			return pageSize; 
		}
		
		// * Größe des ElternElements ändern
    	this.resizeParentIframe = function resizeParentIframe( iframeId, idOuterDiv )
    	{
    		if ( parent.document.getElementById( iframeId ) )
    		{
    			with ( parent.document.getElementById( iframeId ).style )
    			{
    				height    = 0;
	    			minHeight = 0;
	    			maxHeight = 0;
    			}
    		}
    		
    		if ( idOuterDiv == undefined )
    		{
    			var pageSize    = getPageSizeWithScroll(  );
    		}
    		else
    		{
    			var pageSize    = getPageSizeWithOuterDiv( idOuterDiv );
    		}
    		
    		var frameHeight = (pageSize.y)+'px';
    		var frameWidth  = (pageSize.x)+'px';

    		if ( parent.document.getElementById( iframeId ) )
    		{
    			with ( parent.document.getElementById( iframeId ).style )
    			{
	    			height    = frameHeight;
	    			minHeight = frameHeight;
	    			maxHeight = frameHeight;
	    			width     = frameWidth;
	    			minWidth  = frameWidth;
	    			maxWidth  = frameWidth;
    			}
    		}
    	}
	}
	
	
