<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xml:lang="en"
      lang="en"
      xmlns:og="http://opengraphprotocol.org/schema/"
      xmlns:fb="http://www.facebook.com/2008/fbml"
      class="jsDisabled">
<head>

<script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script>
<title>Hotel reviews Hotel Ibis Paderborn Paderborn - reviews submitted from HolidayCheck travellers in North Rhine-Westphalia; Good hotel in the city center</title>

<meta name="robots" content="index, follow, noodp" >
<meta name="revisit-after" content="3 days" >
<meta name="page-topic" content="Reise, Tourismus" >
<meta name="publisher" content="HolidayCheck AG" >
<meta name="copyright" content="HolidayCheck AG" >
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<meta http-equiv="content-type" content="text/html; charset=utf-8" >
<meta http-equiv="date" content="2012-02-03" >
<meta name="Description" content="Hotel reviews for Hotel Ibis Paderborn Paderborn by travellers and for travellers on HolidayCheck - so that your holiday will not flop in Hotel Ibis Paderborn North Rhine-Westph..." >
<meta name="Keywords" content="Hotel reviews for Hotel Ibis Paderborn Paderborn by travellers and for travellers on HolidayCheck - so that your holiday will not flop in Hotel Ibis Paderborn North Rhine-Westph..." >

<!-- default -->

<link href="/image/common/favicon.ico" rel="icon" >
<link href="/stylesheet/live/core/core_en.css?33422" media="all" rel="stylesheet" type="text/css" >
<!--[if IE 6]> <link href="/stylesheet/live/core/core_ie6_en.css?33422" media="all" rel="stylesheet" type="text/css" ><![endif]-->
<!--[if IE 7]> <link href="/stylesheet/live/core/core_ie7_en.css?33422" media="all" rel="stylesheet" type="text/css" ><![endif]-->
<link href="/javascript/shadowbox/shadowbox.css?33422" media="screen" rel="stylesheet" type="text/css" >
<link href="/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html" rel="canonical" >
<link href="/stylesheet/live/addon/form_travelcontact.css?33422" media="all" rel="stylesheet" type="text/css" >
<!--[if IE 6]> <link href="/stylesheet/live/addon/form_travelcontact_ie6.css?33422" media="all" rel="stylesheet" type="text/css" ><![endif]-->

<script type="text/javascript">
document.getElementsByTagName('html')[0].className = 'lang_en jsEnabled';
var Hc = Hc || {};
Hc.translate = function(translationString) {
    if (Hc.translate.translations[translationString]) {
        return Hc.translate.translations[translationString];
    }
    return translationString;
}
Hc.translate.translations = eval({"suggest_search_next":"More options","suggest_search_back":"Previous selection","suggest_search_emptiness":"Your destination can't be found. Perhaps it was a typing error or we do not have this destination in our database. Please try again or choose another destination.\r","Sunday":"Su","Monday":"Mo","Tuesday":"Tu","Wednesday":"We","Thursday":"Th","Friday":"Fr","Saturday":"Sa","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","criteria":"{{number}} preferences selected","criteria5":"{{number}} preferences selected","criterion":"1 preference selected","roomtypes":"{{number}} room type chosen","roomtype":"1 room type selected","beliebig":"show all","allroomtypes":"alle Zimmertypen","close":"close"});
</script>
<script type="text/javascript" src="/javascript/release/core/core.js?33422"></script>
<script type="text/javascript" src="/javascript/shadowbox/shadowbox_complete.js?33422"></script>
<script type="text/javascript">
    //<!--
InitHcShadowbox('close');    //-->
</script>
<script type="text/javascript" src="/javascript/release/custom/languageSelectionBox.js?33422"></script>
<script type="text/javascript">
    //<!--

                (function() {
                     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
                     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
                     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
                })();
                //-->
</script>
<script type="text/javascript">
    //<!--
gaSetVars('.holidaycheck.com', 'UA-26112883-1', '.holidaycheck.com', 'UA-26112883-2', 'Hotelreviews', 'index', '', '', '2123880960', '', false);
var _gaq = gaInitTracker();    //-->
</script>
<script type="text/javascript">
    //<!--
    window.addEvent('domready', 
function() {gaPageCount();}
    );
    //-->
</script>
<script type="text/javascript" src="https://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
    //<!--
    window.addEvent('domready', 
function() { Hc.Facebook.initializeFacebook(
        	"102883123092066",
        	"xd_receiver.html"
        ); }
    );
    //-->
</script>
</head>

<body >
<div id="fb-root"></div><a name="top"></a><div id="container"><div id="hcContent"><header><div id="pageHeader"><div id="headerContainer"><div id="pageLogo"><a href="/" title="" onclick="gaOnclickCount(this);"><img src="/image/common/blind.gif?33422" alt="HolidayCheck" title="HolidayCheck" width="175" height="35" /></a></div><div id="headerQuicksearch"><div class="quicksearchOpen"></div><form id="quickSearchForm" enctype="application/x-www-form-urlencoded" method="post" onsubmit="return validateForm('/hotelsearch.php')" action="/fastsearch.php"><div class="formBody">
<div class="formElementLine" id="formElementLine_query"><div class="label "></div>
<div class="input"><div class="suggestSearch suggestQuickSearch"><input type="text" name="query" id="query" value=""><ul id="query_choices" class="suggestChoices"></ul><script type="text/javascript">var suggestSearch = new Hc.SuggestSearch(
                'suggestQuickSearch',
                'query',
                'query_choices',
                '/service/service/hcde.suggestSearch?view=json&spellchecker=true&highlighting=false&vorschlagid=false&sprache=en',
                "Hotel or travel destination...",
                false
            );suggestSearch.setSuggestSelectUrl('/suggestsearch.html');suggestSearch.setFieldIdPrefix('');
            suggestSearch.create();</script></div>

</div>
<div class="clearFix">&nbsp;</div></div>

<div class="formButton">
 <button name="submit" id="quickSearchButton" type="submit" onclick="gaOnclickCount(this); " class="buttonMiddle buttonMiddleContent mpt[replay:click]" onfocus="this.blur();"><span>Search</span></button>
<div class="clearFix">&nbsp;</div>
</div>

<div class="clearFix">&nbsp;</div></div>
<div class="clearFix">&nbsp;</div></form><div class="quicksearchClose"></div></div><div id="headerAdvancedsearch">
    <a href="/hotelsearch.php" title="advanced hotel search" onclick="gaOnclickCount(this);">advanced hotel search</a></div><div id="mhcarea">
    <a href="https://secure.holidaycheck.com/mhcregister"
        title="Click here to register for a myHolidayCheck account"
        onfocus="this.blur()"
        class="nHl"
        onclick="gaOnclickCount(this);">
        New registration</a>
    |
    <a href="https://secure.holidaycheck.com/mhclogin"
        title="Click here to log in to myHolidayCheck"
        onfocus="this.blur()"
        class="nHl"
        onclick="gaOnclickCount(this);Shadowbox.open({player : 'iframe',content: 'https://secure.holidaycheck.com/mhclogin?action=loginlightbox',width  : 470,height : 500},{enableKeys: false});event.returnValue=false; return false;">
        log in</a>
</div><div id="headerFbLikeIcon"><iframe src="http://www.facebook.com/plugins/like.php?locale=en_US&amp;href=http%3A%2F%2Fwww.facebook.com%2FHolidayCheck.co.uk&amp;layout=button_count&amp;show_faces=false&amp;width=150px; &amp;action=like&amp;colorscheme=light&amp;send=false&amp;height=25&amp;appId=102883123092066"scrolling="no"frameborder="0"style="border:none; overflow:hidden; height:25px; float: left; width:150px; "allowTransparency="true"></iframe></div></div></div>    <nav>
    <ul>
        <!-- TOPNAVI: Startseite -->
        <!-- TOPNAVI: Startseite -->
<li class="topic startseite">
    <a href="/" title="Homepage"
       class="topiclink" onfocus="this.blur()"
       onclick="gaOnclickCount(this);">
       Homepage    </a>
</li>
        <!-- TOPNAVI: Reiseangebote finden -->
        <!-- TOPNAVI: Reiseangebote finden -->
<li class="topic reiseangebote">
    <a href="/travel-offers.html" title="Find travel offers"
       class="topiclink" onfocus="this.blur()"
       onclick="gaOnclickCount(this);">
       Find travel offers<!--[if gt IE 6]><!-->
    </a><!--<![endif]--><!--[if lte IE 6]><table><tr><td><![endif]-->
    <ul>
        <!-- Übersicht -->
        <li>
            <a href="/travel-offers.html" title="Overview"
               onfocus="this.blur()"
               onclick="gaOnclickCount(this);">
               Overview            </a>
        </li>
        <!-- Click&Mix -->
        <li>
                        <a href="http://euro.wwte7.com/pubspec/scripts/eap.asp?goto=PKGLAUNCH&ovrd=3&eapid=1067-30007&lang=2057&NumAdult=2" title="Flight + Hotel"
               onfocus="this.blur()"
               onclick="gaOnclickCount(this);">
               Flight + Hotel            </a>
        </li>
                    <!-- Skireisen -->
            <li>
                <a href="/ski-holiday-offers.html" title="Ski holidays"
                   onfocus="this.blur()"
                   onclick="gaOnclickCount(this);">
                   Ski holidays                </a>
            </li>
            </ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
</li>
        <!-- TOPNAVI: mitmachen und bewerten -->
        <!-- TOPNAVI: mitmachen und bewerten -->
<li class="topic mitmachen">
    <a href="/participate.php" title="Participate and Review"
       class="topiclink" onfocus="this.blur()" rel="nofollow"
       onclick="gaOnclickCount(this);">
       Participate and Review<!--[if gt IE 6]><!-->
    </a><!--<![endif]--><!--[if lte IE 6]><table><tr><td><![endif]-->
    <ul>
        <!-- Übersicht -->
        <li>
            <a href="/participate.php" title="Overview"
               onfocus="this.blur()" rel="nofollow"
               onclick="gaOnclickCount(this);">
               Overview            </a>
        </li>
        <!-- Hotels bewerten -->
        <li>
            <a href="https://secure.holidaycheck.com/hotelrate.php" title="Review a hotel"
               onfocus="this.blur()" rel="nofollow"
               onclick="gaOnclickCount(this);">
               Review a hotel            </a>
        </li>
        <!-- Bilder hochladen -->
        <li>
            <a href="/upload.php" title="Upload pictures"
               onfocus="this.blur()" rel="nofollow"
               onclick="gaOnclickCount(this);">
               Upload pictures            </a>
        </li>
        <!-- Reisetipps bewerten -->
        <li>
            <a href="https://secure.holidaycheck.com/things_to_do.php" title="Review things to do"
               onfocus="this.blur()" rel="nofollow"
               onclick="gaOnclickCount(this);">
               Review things to do            </a>
        </li>
        <!-- Reisevideos hochladen -->
        <li>
            <a href="/videoupload.php" title="Upload travel videos"
               onfocus="this.blur()" rel="nofollow"
               onclick="gaOnclickCount(this);">
               Upload travel videos            </a>
        </li>
        <!-- Travelog schreiben -->
        <li>
            <a href="/write_traveljournal.php" title="Write a travel article"
               onfocus="this.blur()" rel="nofollow"
               onclick="gaOnclickCount(this);">
               Write a travel article            </a>
        </li>
    </ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
</li>    </ul>
    </nav><div id="breadcrumb"><div xmlns:v="http://rdf.data-vocabulary.org/#"><span typeof="v:Breadcrumb"><a href="/" title="Homepage" rel="v:url" property="v:title" onclick="gaOnclickCount(this);">Homepage</a></span> &gt; <span typeof="v:Breadcrumb"><a href="/continent-travel+information_Europe-kid_1.html" title="Europe" rel="v:url" property="v:title" onclick="gaOnclickCount(this);">Europe</a></span> &gt; <span typeof="v:Breadcrumb"><a href="/state-travel+information_Germany-lid_41.html" title="Germany" rel="v:url" property="v:title" onclick="gaOnclickCount(this);">Germany</a></span> &gt; <span typeof="v:Breadcrumb"><a href="/region-travel+information_North+Rhine+Westphalia-rid_428.html" title="North Rhine-Westphalia" rel="v:url" property="v:title" onclick="gaOnclickCount(this);">North Rhine-Westphalia</a></span> &gt; <span typeof="v:Breadcrumb"><a href="/city-travel+information_Paderborn-oid_14626.html" title="Paderborn" rel="v:url" property="v:title" onclick="gaOnclickCount(this);">Paderborn</a></span> &gt; <span typeof="v:Breadcrumb"><a href="/hotel-travel+information_Hotel+Ibis+Paderborn-hid_163588.html" title="Hotel Ibis Paderborn" rel="v:url" property="v:title" onclick="gaOnclickCount(this);">Hotel Ibis Paderborn</a></span> &gt; Hotel reviews
</div></div><noscript><div id="noScriptBox">Notice: <a href="/noscript" title="" onclick="gaOnclickCount(this);">Please activate JavaScript.</a>, to view HolidayCheck in full screen.</div></noscript></header>
<div id="globalSpinnerLayer" class="displayNone"></div>
<div id="globalSpinner" class="displayNone"></div>

<section>

<div id="content" xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:review-aggregate">

    <div id="meta">
                <h1><span property="v:itemreviewed">Hotel Ibis Paderborn<span class="stars" style="width: 22px;"><img src="/image/common/blind.gif?33422" alt="Hotel Ibis Paderborn" title="Hotel Ibis Paderborn" width="22" height="11" /></span>        </span></h1>
        <div id="navlist">
            <div id="line"></div>
            <ul>
                <li>
        <a href="/hotel-travel+information_Hotel+Ibis+Paderborn-hid_163588.html"
       onclick="gaOnclickCount(this);"
       onfocus="this.blur();"
       class=""
       title="Overview Hotel Ibis Paderborn"><span>Hotel overview</span></a>
</li>                <li>
        <a href="/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html"
       onclick="gaOnclickCount(this);"
       onfocus="this.blur();"
       class="current"
       title="Hotel reviews Hotel Ibis Paderborn"><span>
       Hotel reviews       </span></a>
</li>                <li>
        <a href="/hotel-Travel+pictures_Hotel+Ibis+Paderborn-ch_ub-hid_163588.html"
       onclick="gaOnclickCount(this);"
       onfocus="this.blur();"
       class=""
       title="Hotel pictures Hotel Ibis Paderborn"><span>Hotel pictures</span></a>
</li>                <li>
        <a href="/hotel-Videos_Hotel+Ibis+Paderborn-ch_rv-hid_163588.html"
       onclick="gaOnclickCount(this);"
       onfocus="this.blur();"
       class=""
       title="Hotel videos for Hotel Ibis Paderborn"><span>Hotel videos</span></a>
</li>                <li>
        <a href="/cpctvtrip?seo=Hotel+Ibis+Paderborn&hotelId=163588"
       onclick="gaOnclickCount(this);Shadowbox.open({player : 'iframe', content: '/cpctvtrip?seo=Hotel+Ibis+Paderborn&hotelId=163588', width  : 500, height : 410}, {enableKeys: false}); event.returnValue = false; return false;"
       class=""
       title="Travel offers for Hotel Ibis Paderborn"><span>Travel offers</span></a>
</li>            </ul>
        </div>
        <div id="navAdditional">
            <ul class="listAdditional">
                <li class="review">
    <a class="link" onclick="gaOnclickCount(this);"
       rel="nofollow"
       title="Review Hotel Ibis Paderborn"
       href="https://secure.holidaycheck.com/hotelrate.php?hotelId=163588&externalFlag=1">Review this hotel    </a>
</li>            </ul>
        </div>
        <div class="clearFix"></div>
    </div>
    <div id="main">
        
        <h2>
            Reviews of Hotel Ibis Paderborn        </h2>

                    <div class="box ">

<div class="itemReviewsHotelContainer  ">
    <div class="itemReviewsSelectionSwitch">
        <div class="selectionSwitchContainer radioSelection floatLeft"><span>all</span>
                                </div><div class="selectionSwitchContainer radioSelection floatLeft"><a href="/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html?traveledWithId=2" title="Hotel reviews by couples" id="category_Link_2" onclick="gaOnclickCount(this);reloadPage('/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html?traveledWithId=2');  event.returnValue = false; return false;">by couples</a>
                                </div><div class="selectionSwitchContainer radioSelection floatLeft"><a href="/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html?traveledWithId=3" title="Hotel reviews by families" id="category_Link_3" onclick="gaOnclickCount(this);reloadPage('/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html?traveledWithId=3');  event.returnValue = false; return false;">by families</a>
                                </div><div class="selectionSwitchContainer radioSelectionLarge floatLeft"><a href="/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html?traveledWithId=5" title="Hotel reviews by singles &amp; friends" id="category_Link_5" onclick="gaOnclickCount(this);reloadPage('/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html?traveledWithId=5');  event.returnValue = false; return false;">by singles & friends</a>
                                </div>    </div>
    <div class="clearFix"></div>
    <hr class="separatorLight"/>
    <div class="floatLeft itemReviewsThumbContainer">
        <div class="picture">
    <img src="/data/common/hotelbilder/klein/41/163588.jpg?33422" alt="Hotel reviews - Hotel Ibis Paderborn" title="Hotel reviews - Hotel Ibis Paderborn" />        </div>
    </div>
    <div class="floatLeft itemReviewsRatingBarDataContainer itemReviewsHotelRatingBarDataContainer">
        <div class="itemReviewsRatingBarsLeft itemReviewsRatingBar">
    <div class="floatLeft">
        Hotel    </div>
    <div class="floatRight">
        <div class="ratingBarSuns"><span>5.1</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:85%"></div></div></div>    </div>
</div>
<div class="itemReviewsRatingBarsRight itemReviewsRatingBar">
    <div class="floatLeft">
        Location    </div>
    <div class="floatRight">
        <div class="ratingBarSuns"><span>5.3</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:88%"></div></div></div>    </div>
</div>
<div class="itemReviewsRatingBarsLeft itemReviewsRatingBar">
    <div class="floatLeft">
        Room    </div>
    <div class="floatRight">
        <div class="ratingBarSuns"><span>4.7</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:78%"></div></div></div>    </div>
</div>
<div class="itemReviewsRatingBarsRight itemReviewsRatingBar">
    <div class="floatLeft">
        Gastronomy    </div>
    <div class="floatRight">
        <div class="ratingBarSuns"><span>5.3</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:88%"></div></div></div>    </div>
</div>
<div class="itemReviewsRatingBarsLeft itemReviewsRatingBar">
    <div class="floatLeft">
        Service    </div>
    <div class="floatRight">
        <div class="ratingBarSuns"><span>5.4</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:90%"></div></div></div>    </div>
</div>
<div class="itemReviewsRatingBarsRight itemReviewsRatingBar">
    <div class="floatLeft">
            </div>
    <div class="floatRight">
        <div class="ratingBarSuns"><div class="ratingBarPrint">Suns</div><div class="ratingBarEmptySuns"><div class="ratingBarActiveSuns" style="width:0%"></div></div></div>    </div>
</div>
<div class="clearFix"></div>    </div>
    
    
        <div class="floatLeft itemReviewsRatingSummaryContainer
        itemReviewsHotelRatingSummaryContainer">
        <div class="itemReviewsRatingBarsLeft">
            <div class="itemReviewSummary">
        <div class="floatLeft">
        <strong>Overall</strong>
    </div>
    <div class="floatRight">
        <span class="displayNone" property="v:average">4.25</span><div class="ratingBarSuns"><span>5.1</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:85%"></div></div></div>    </div>
        <div class="clearFix"></div>
</div>
        </div>
        <div class="itemReviewsRatingBarsRight">
            <span class="itemReviewRecommendation">
    Recommendation 100%</span>
            </div>
    </div>
    <div class="clearFix"></div>
    
        
    <div class="span-4 first last">
        <div class="hotelTrendContainer">
    <div id="trendTooltip" class="floatRight">
    <img src="/image/common/icon_info.png?33422" class="tooltip" rel="  <div class='gmHotelToolTip'>
    <strong>
    Notice on hotel reviews:    </strong>
    <ul class='defaultList'>
    <li>6 suns= excellent... 1 sun= very poor</li>
    <li>100%= recommended by everyone... 0%= not recommended by anyone</li>
    <li>Rating the categories 'gastronomy' and 'sport' is optional.</li>
    <li>The current hotel rating average is based on reviews submitted within the last 25 months</li>
    </ul>
  </div>
" />
    </div>

    
        <div class="clearFix"></div>

</div>
    </div>
        
        
    <div class="clearFix"></div>
    <div class="span-4 first last">
	    <div class="itemReviewsRatingButtonContainer floatRight">
	        
        
    <div>
        <div  class="buttonContainer"><div class="buttonMiddle buttonLinkMiddle"><a href="#" title="Show offers" class="buttonLink buttonLinkContentBig" onfocus="this.blur();"  onclick="gaOnclickCount(this);var htmlRequest = new Request.HTML({
                    method: 'get',
                    url: '/cpctvtrip?seo=Hotel+Ibis+Paderborn&hotelId=163588',
                    evalScripts: false, 
                    onSuccess:
                        function(responseTree, responseElements, responseHTML, responseJavaScript) {
                            Shadowbox.open(
                                {
                                    player : 'html',
                                    content: responseHTML,
                                    width  : 500,
                                    height : 410,
                                    scrolling: 'no',
                                    options: {
                                        
                                        onFinish: function() {Browser.exec(responseJavaScript);}
                                    }
                                },
                                {
                                    enableKeys: false,
                                }
                            );
                        }
                  });
                  htmlRequest.send();
                  event.returnValue = false;
                  return false; event.returnValue = false; return false;"><span>Show offers</span></a></div></div>    </div>
	    </div>
    </div>

       <div class="clearFix"></div>
</div></div>
                <a name="paginateAnchor" id="scrollPoint"></a>

                                <div id="hcAdServer_hotelreviewsIndexContentTopAd"><script type='text/javascript'>
<!--//<![CDATA[
       var m3_u = (location.protocol=='https:'?'https://defer.holidaycheck.de/getDefer/call_1/':'http://defer.holidaycheck.de/getDefer/call_1/');
       var m3_r = Math.floor(Math.random()*99999999999);
       if (!document.MAX_used) document.MAX_used = ',';
       document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
       document.write ("?zoneid=1311");
       document.write ('&amp;cb=' + m3_r);
       if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
       document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
       document.write ("&amp;loc=" + escape(window.location));
       if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
       if (document.context) document.write ("&context=" + escape(document.context));
       if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
       document.write ("&amp;kid=1&amp;lid=41&amp;rid=428&amp;oid=14626&amp;hid=163588");
       document.write ("'><\/scr"+"ipt>");
//]]>-->
</script>
<noscript>
    <a href='http://defer.holidaycheck.de/getDefer/call_3/?n=afe67a62&amp;cb=56323875' target='_blank'>
        <img src='http://defer.holidaycheck.de/getDefer/call_2/?zoneid=1311&amp;cb=56323875&amp;n=afe67a62' border='0' alt='' />
    </a>
</noscript></div>
                
                <div id="ajaxLoadReview" class="contentBox">
                
    <h2 class="mediaOrderLeft span-4 last">
        <span property="v:count">5</span> hotel reviews    </h2>

    <div class="floatRight mediaOrderRight">
        <span class="sortby">Sort by</span><dd id="selectOrder-element">
<select name="selectOrder" id="selectOrder" onChange="var that=this;gaTrackEvent('Sortieren_Hotelbewertungen',this.options[this.selectedIndex].label);setTimeout(function() {window.location.href = '/hotel-reviews_Hotel Ibis Paderborn-ch_hb-hid_163588.html?reviewsOrder=' + that.options[that.selectedIndex].value;}, 100);">
    <option value="0" label="Latest trips first" selected="selected">Latest trips first</option>
    <option value="1" label="Latest reviews">Latest reviews</option>
    <option value="2" label="Best reviews first">Best reviews first</option>
    <option value="3" label="Most viewed first">Most viewed first</option>
    <option value="4" label="Travel month">Travel month</option>
</select></dd>
<dt id="selectOrder-label">&nbsp;</dt>    </div>

    <div class="clearFix"></div>
    <div id="Hotelreviews_index_List_1" class="listitemBox"><div class="listItemContainer listItemContainerReview  reviewListSnippet"><div class="reviewListTitle listItemTitle"><a href="/detail-reviews_Hotel+Ibis+Paderborn+Good+hotel+in+the+city+center-ch_hb-id_2636457.html" title="Good hotel in the city center - Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Good hotel in the city center</a><img src="/image/common/smiley_happy.gif?33422" alt="Hotel recommended" title="Hotel recommended" /><img src="/image/common/review_languages/list_icon_review_translate.gif?33422" alt="translated hotel review" title="translated hotel review" class="translated" /></div><div class="reviewListRating"><div class="ratingBarSuns"><span>5.0</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:83%"></div></div></div></div><div class="reviewTextSnippet">The ibis hotel paderborn is located in a good location. Restaurants and shops are nearby and the hotel was very good to reach by public transport. From the hotel you can also enjoy the train station walk, but it should therefor 15 minutes notice. The o... <a href="/detail-reviews_Hotel+Ibis+Paderborn+Good+hotel+in+the+city+center-ch_hb-id_2636457.html" title="Hotel reviews Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Read more</a></div><div class="reviewListAdditionalData"><div class="reviewListDate">June 11</div>, <div class="reviewListUserData">Matthias, Age 26-30, Solo/single</div></div><div class="reviewListRead reviewListReadRight">Read 145 times</div></div><div class="clearFix"></div><hr class="separatorLight"/><div class="listItemContainer listItemContainerReview  reviewListSnippet"><div class="reviewListTitle listItemTitle"><a href="/detail-reviews_Hotel+Ibis+Paderborn+Nice+hotel+for+short+trips-ch_hb-id_1722422.html" title="Nice hotel for short trips - Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Nice hotel for short trips</a><img src="/image/common/smiley_happy.gif?33422" alt="Hotel recommended" title="Hotel recommended" /><img src="/image/common/review_languages/list_icon_review_translate.gif?33422" alt="translated hotel review" title="translated hotel review" class="translated" /></div><div class="reviewListRating"><div class="ratingBarSuns"><span>5.2</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:87%"></div></div></div></div><div class="reviewTextSnippet">Nice hotel which was right on the city center. You can't complain about anything, the rooms are well equipped, the staff are very friendly and it was very clean.
on the little room you can't complain because the price/performance ratio Verhäntlis.
The ... <a href="/detail-reviews_Hotel+Ibis+Paderborn+Nice+hotel+for+short+trips-ch_hb-id_1722422.html" title="Hotel reviews Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Read more</a></div><div class="reviewListAdditionalData"><div class="reviewListDate">March 10</div>, <div class="reviewListUserData">Mihael, Age 31-35, Solo/single</div></div><div class="reviewListRead">Read 296 times - 100% helpful</div></div><div class="clearFix"></div><hr class="separatorLight"/><div class="box ">
<div class="listItemContainer">
    <strong>The following are archived hotel reviews:</strong>    These are not counted into the current average review rating, as the journey took place more than 25 months ago, or the hotel has completely changed.</div></div>
<div class="listItemContainer listItemContainerReview  reviewStatusArchived reviewListSnippet"><div class="reviewListTitle "><a href="/detail-reviews_Hotel+Ibis+Paderborn+Suitable+for+short+stays-ch_hb-id_1583680.html" title="Suitable for short stays - Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Suitable for short stays</a><img src="/image/common/blind.gif?33422" /><img src="/image/common/review_languages/list_icon_review_translate.gif?33422" alt="translated hotel review" title="translated hotel review" class="translated" /></div><div class="reviewListRating">archived</div><div class="reviewTextSnippet">We wanted to only stay here, since it is a journey was already too late. The hotel has the usual Ibis standard, nothing special, but adequate for a short stay.
The only thing that was annoying, was the constant duvet. But the price was right, all the s... <a href="/detail-reviews_Hotel+Ibis+Paderborn+Suitable+for+short+stays-ch_hb-id_1583680.html" title="Hotel reviews Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Read more</a></div><div class="reviewListAdditionalData"><div class="reviewListDate">October 09</div>, <div class="reviewListUserData">Gabriela & Thomas, Age 36-40, Couple</div></div></div><div class="clearFix"></div><hr class="separatorLight"/><div class="listItemContainer listItemContainerReview  reviewStatusArchived reviewListSnippet"><div class="reviewListTitle "><a href="/detail-reviews_Hotel+Ibis+Paderborn+Felt+very+comfortable+there-ch_hb-id_1449886.html" title="Felt very comfortable there  - Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Felt very comfortable there</a><img src="/image/common/blind.gif?33422" /><img src="/image/common/review_languages/list_icon_review_translate.gif?33422" alt="translated hotel review" title="translated hotel review" class="translated" /></div><div class="reviewListRating">archived</div><div class="reviewTextSnippet">The friendliness of the staff of the hotel was very good. I would stay there again. It's just a hotel to feel good. As the hotel is located in the middle of town is close to the cathedral, the very worth seeing.  <a href="/detail-reviews_Hotel+Ibis+Paderborn+Felt+very+comfortable+there-ch_hb-id_1449886.html" title="Hotel reviews Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Read more</a></div><div class="reviewListAdditionalData"><div class="reviewListDate">July 09</div>, <div class="reviewListUserData">Renate, Age 56-60, Solo/single</div></div></div><div class="clearFix"></div><hr class="separatorLight"/><div class="listItemContainer listItemContainerReview  reviewStatusArchived reviewListSnippet"><div class="reviewListTitle "><a href="/detail-reviews_Hotel+Ibis+Paderborn+Were+very+disappointed-ch_hb-id_881840.html" title="Were very disappointed - Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Were very disappointed</a><img src="/image/common/blind.gif?33422" /><img src="/image/common/review_languages/list_icon_review_translate.gif?33422" alt="translated hotel review" title="translated hotel review" class="translated" /></div><div class="reviewListRating">archived</div><div class="reviewTextSnippet">The hotel is located on a very busy traffic intersection. The construction is noisy. Have travelled a lot, but even the hotel Vista Odin at ballermann was quieter than this hotel. You can hear everything, I mean everything, what is happening in the hal... <a href="/detail-reviews_Hotel+Ibis+Paderborn+Were+very+disappointed-ch_hb-id_881840.html" title="Hotel reviews Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">Read more</a></div><div class="reviewListAdditionalData"><div class="reviewListDate">October 07</div>, <div class="reviewListUserData">Mike, Age 26-30, Couple</div></div></div><div class="clearFix"></div><hr class="separatorLight"/></div>        </div>
        
                <h2>Alternative Hotel Offers in the area</h2>
<div id="alternateHotelsGeo" class="contentBox alternateHotels">
            <div class="listitemBox">
            <div class="hLItemContainer">
                <div class="thumbnail">
                
                
    <a href="/hotel-travel+information_BEST+WESTERN+PREMIER+Arosa+Hotel-hid_89419.html"
       onclick="gaOnclickCount(this);"
       title="BEST WESTERN PREMIER Arosa Hotel">
        <img src="/data/common/hotelbilder/klein/41/89419.jpg?33422" alt="BEST WESTERN PREMIER Arosa Hotel" title="BEST WESTERN PREMIER Arosa Hotel" />        </a>
</div>                <div  class="sunsRating">
            <div class="ratingBarSuns"><span>5.0</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:83%"></div></div></div>    </div>                <div class="wrapperRight">
                       <div class="recommendation">
            82% recommendation    </div>                       
    <div class="trend">
         <span class="hlTrendIconContainer tooltip" rel="neutral"><img src="/image/common/trend_steady.png?33422" rel="noFollow" onclick="Shadowbox.open({player: 'iframe', content: '/hoteltrend_hid-89419.php?action=indexlightbox', width: 600});" id="toolTip_89419" /></span>    </div>
                </div>

                
    <div class="extendedOffersHotel">
        <div>
            <strong>Hotel :</strong>
        </div>
        <div>
            offers from <span class="offerPrice"><a href="#" onclick="gaOnclickCount(this);Shadowbox.open({player : 'iframe', content: '/cpctvtrip?seo=BEST+WESTERN+PREMIER+Arosa+Hotel&hotelId=89419', width  : 500, height : 410, scrolling: 'no'}, {enableKeys: false}); event.returnValue = false; return false;">€59.00</a></span><br />per night        </div>
        <div class="offerPriceButton">
        <div  class="buttonContainer"><div class="buttonMiddle buttonLinkMiddle"><a href="#" title="Book here" class="buttonLink buttonLinkContent" onfocus="this.blur();"  onclick="gaOnclickCount(this);Shadowbox.open({player : 'iframe', content: '/cpctvtrip?seo=BEST+WESTERN+PREMIER+Arosa+Hotel&hotelId=89419', width  : 500, height : 410, scrolling: 'no'}, {enableKeys: false}); event.returnValue = false; return false; event.returnValue = false; return false;"><span>Book here ></span></a></div></div>        </div>
    </div>


                <div class="hotelinfosRegion" style="float: none;"><div class="name">
    <div class="hotelName">
        <a href="/hotel-travel+information_BEST+WESTERN+PREMIER+Arosa+Hotel-hid_89419.html"
           onclick="gaOnclickCount(this);"
           title="BEST WESTERN PREMIER Arosa Hotel">
            BEST WESTERN PREMIER Arosa ...</a>
    </div>
            <div class="hotelStars">
            <span class="stars" style="width: 44px;"><img src="/image/common/blind.gif?33422" alt="BEST WESTERN PREMIER Arosa Hotel" title="BEST WESTERN PREMIER Arosa Hotel" width="44" height="11" /></span>        </div>
    </div>


<div class="destination">
    in <a href="/city-travel+information_Paderborn-oid_14626.html" title="Paderborn" onclick="gaOnclickCount(this);">Paderborn</a></div>                    </div>

                <div class="distance">0.3 km away</div>            </div>
                    </div>
        <hr class="separatorLight" />
            <div class="listitemBox">
            <div class="hLItemContainer">
                <div class="thumbnail">
                
                
    <a href="/hotel-travel+information_Welcome+Hotel+Paderborn-hid_164369.html"
       onclick="gaOnclickCount(this);"
       title="Welcome Hotel Paderborn">
        <img src="/data/common/hotelbilder/klein/41/164369.jpg?33422" alt="Welcome Hotel Paderborn" title="Welcome Hotel Paderborn" />        </a>
</div>                <div  class="sunsRating">
            <div class="ratingBarSuns"><span>5.2</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:87%"></div></div></div>    </div>                <div class="wrapperRight">
                       <div class="recommendation">
            100% recommendation    </div>                       
    <div class="trend">
         <span class="hlTrendIconContainer tooltip" rel="neutral"><img src="/image/common/trend_steady.png?33422" rel="noFollow" onclick="Shadowbox.open({player: 'iframe', content: '/hoteltrend_hid-164369.php?action=indexlightbox', width: 600});" id="toolTip_164369" /></span>    </div>
                </div>

                
    <div class="extendedOffersHotel">
        <div>
            <strong>Hotel :</strong>
        </div>
        <div>
            offers from <span class="offerPrice"><a href="#" onclick="gaOnclickCount(this);Shadowbox.open({player : 'iframe', content: '/cpctvtrip?seo=Welcome+Hotel+Paderborn&hotelId=164369', width  : 500, height : 410, scrolling: 'no'}, {enableKeys: false}); event.returnValue = false; return false;">€54.15</a></span><br />per night        </div>
        <div class="offerPriceButton">
        <div  class="buttonContainer"><div class="buttonMiddle buttonLinkMiddle"><a href="#" title="Book here" class="buttonLink buttonLinkContent" onfocus="this.blur();"  onclick="gaOnclickCount(this);Shadowbox.open({player : 'iframe', content: '/cpctvtrip?seo=Welcome+Hotel+Paderborn&hotelId=164369', width  : 500, height : 410, scrolling: 'no'}, {enableKeys: false}); event.returnValue = false; return false; event.returnValue = false; return false;"><span>Book here ></span></a></div></div>        </div>
    </div>


                <div class="hotelinfosRegion" style="float: none;"><div class="name">
    <div class="hotelName">
        <a href="/hotel-travel+information_Welcome+Hotel+Paderborn-hid_164369.html"
           onclick="gaOnclickCount(this);"
           title="Welcome Hotel Paderborn">
            Welcome Hotel Paderborn</a>
    </div>
            <div class="hotelStars">
            <span class="stars" style="width: 44px;"><img src="/image/common/blind.gif?33422" alt="Welcome Hotel Paderborn" title="Welcome Hotel Paderborn" width="44" height="11" /></span>        </div>
    </div>


<div class="destination">
    in <a href="/city-travel+information_Paderborn-oid_14626.html" title="Paderborn" onclick="gaOnclickCount(this);">Paderborn</a></div>                    </div>

                <div class="distance">0.7 km away</div>            </div>
            <strong>Guests praise:</strong> smooth check-in/check-out, condition of the hotel, room cleanliness, general cleanliness, cleanliness in restaurant, <span  OnMouseOver="gaTrackEvent('Suchmaske_Hotel', 'alle_anzeigen');" class="tooltipToprated" rel="<strong>Guests praise:</strong><ul class='defaultList listNoList'><li>Hotel in general<ul><li>condition of the hotel</li><li>general cleanliness</li></ul><li>Location and surroundings<ul><li>shopping facilities in the area</li><li>good position for excursions</li></ul><li>Service<ul><li>smooth check-in/check-out</li><li>friendly staff</li><li>good knowledge of foreign languages</li><li>professional staff</li></ul><li>Gastronomy<ul><li>cleanliness in restaurant</li><li>nice restaurant</li><li>varied food</li><li>good food</li></ul><li>Room<ul><li>room cleanliness</li><li>good room amenities</li><li>size of the rooms</li></ul></li></ul>">show all</span>        </div>
        <hr class="separatorLight" />
            <div class="listitemBox">
            <div class="hLItemContainer">
                <div class="thumbnail">
                
                
    <a href="/hotel-travel+information_Hotel+Heide+Residenz-hid_195258.html"
       onclick="gaOnclickCount(this);"
       title="Hotel Heide Residenz">
        <img src="/data/common/hotelbilder/klein/41/195258.jpg?33422" alt="Hotel Heide Residenz" title="Hotel Heide Residenz" />        </a>
</div>                <div  class="sunsRating">
            <div class="ratingBarSuns"><span>5.4</span><div class="ratingBarPrint">Suns</div><div class="ratingBarInactiveSuns"><div class="ratingBarActiveSuns" style="width:90%"></div></div></div>    </div>                <div class="wrapperRight">
                       <div class="recommendation">
            100% recommendation    </div>                       
    <div class="trend">
         <span class="hlTrendIconContainer tooltip" rel="neutral"><img src="/image/common/trend_steady.png?33422" rel="noFollow" onclick="Shadowbox.open({player: 'iframe', content: '/hoteltrend_hid-195258.php?action=indexlightbox', width: 600});" id="toolTip_195258" /></span>    </div>
                </div>

                
    <div class="extendedOffersHotel">
        <div>
            <strong>Hotel :</strong>
        </div>
        <div>
            offers from <span class="offerPrice"><a href="#" onclick="gaOnclickCount(this);Shadowbox.open({player : 'iframe', content: '/cpctvtrip?seo=Hotel+Heide+Residenz&hotelId=195258', width  : 500, height : 410, scrolling: 'no'}, {enableKeys: false}); event.returnValue = false; return false;">€45.00</a></span><br />per night        </div>
        <div class="offerPriceButton">
        <div  class="buttonContainer"><div class="buttonMiddle buttonLinkMiddle"><a href="#" title="Book here" class="buttonLink buttonLinkContent" onfocus="this.blur();"  onclick="gaOnclickCount(this);Shadowbox.open({player : 'iframe', content: '/cpctvtrip?seo=Hotel+Heide+Residenz&hotelId=195258', width  : 500, height : 410, scrolling: 'no'}, {enableKeys: false}); event.returnValue = false; return false; event.returnValue = false; return false;"><span>Book here ></span></a></div></div>        </div>
    </div>


                <div class="hotelinfosRegion" style="float: none;"><div class="name">
    <div class="hotelName">
        <a href="/hotel-travel+information_Hotel+Heide+Residenz-hid_195258.html"
           onclick="gaOnclickCount(this);"
           title="Hotel Heide Residenz">
            Hotel Heide Residenz</a>
    </div>
            <div class="hotelStars">
            <span class="stars" style="width: 33px;"><img src="/image/common/blind.gif?33422" alt="Hotel Heide Residenz" title="Hotel Heide Residenz" width="33" height="11" /></span>        </div>
    </div>


<div class="destination">
    in <a href="/city-travel+information_Paderborn-oid_14626.html" title="Paderborn" onclick="gaOnclickCount(this);">Paderborn</a></div>                    </div>

                <div class="distance">5.3 km away</div>            </div>
                    </div>
        <hr class="separatorLight" />
    
</div>        <a name="AnkerTravelcontactHotel" class="scrollanchor"></a>
        <div id="travelcontactHotelPlaceholder"><div id="placereserve"></div></div>
        <div class="contentBox">
                    </div>

        
                <div id="hcAdServer_hotelreviewsIndexContentBottomAd"><script type='text/javascript'>
<!--//<![CDATA[
       var m3_u = (location.protocol=='https:'?'https://defer.holidaycheck.de/getDefer/call_1/':'http://defer.holidaycheck.de/getDefer/call_1/');
       var m3_r = Math.floor(Math.random()*99999999999);
       if (!document.MAX_used) document.MAX_used = ',';
       document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
       document.write ("?zoneid=1341");
       document.write ('&amp;cb=' + m3_r);
       if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
       document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
       document.write ("&amp;loc=" + escape(window.location));
       if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
       if (document.context) document.write ("&context=" + escape(document.context));
       if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
       document.write ("&amp;kid=1&amp;lid=41&amp;rid=428&amp;oid=14626&amp;hid=163588");
       document.write ("'><\/scr"+"ipt>");
//]]>-->
</script>
<noscript>
    <a href='http://defer.holidaycheck.de/getDefer/call_3/?n=afe67a62&amp;cb=70925626' target='_blank'>
        <img src='http://defer.holidaycheck.de/getDefer/call_2/?zoneid=1341&amp;cb=70925626&amp;n=afe67a62' border='0' alt='' />
    </a>
</noscript></div>
   </div>
    <aside><div class="metaTabs">
            <div class="hcwidgetTabContainer  hcwidgetContainer hcwidgetTabContainerLeft hcwidgetLayoutContainer" id="offersPackageAndHotelsSwitch">
                <div id="offersPackageAndHotelsSwitch_tablist" class="hcwidgetTabContainerLeft-tabs hcwidgetAlignLeft">
                    <div id="navlist" class="navlist"><ul>
            <li class="liTab0">
                <a  id="offersPackageAndHotelsSwitchMetaTabSwitch_0"
                    class="current"
                     onclick="switchMetaTabPane('offersPackageAndHotelsSwitch', '0', 'offersSwitchHotel');">
                    <span>Hotel  from €41.00</span>
                </a>
            </li> </ul></div></div>
                <div class="hcwidgetTabPaneWrapper hcwidgetTabContainerLeft-container hcwidgetAlignClient  ">
            <div id="offersSwitchHotel" class="nobox hcwidgetContentPane hcwidgetTabPane hcwidgetTabContainerLeft-hcwidgetContentPane" style="display: block;">
                <iframe src="" id="iframeTvTrip" class="iframeTvTrip" marginheight="0" marginwidth="0" frameborder="0" scrolling="no"></iframe>
<script type="text/javascript">
var src = 'http://holidaycheck-best-offers-hotel-partners.tvtrip.co.uk/embed_check_rates?partner_id=holidaycheck&hotel_id=137227&iframe_type=ov&href=http://www.holidaycheck.com/hotel-travel+information_Hotel+Ibis+Paderborn-hid_163588.html';
if (typeof(_gat) == 'object') {
    try {
        var pageTracker = _gat._getTracker(analyticsAccount);
        pageTracker._setDomainName(".holidaycheck.com");
        pageTracker._setAllowLinker(true);
        pageTracker._setAllowHash(false);
        if ("undefined" != typeof(pageTracker)) {
            src = pageTracker._getLinkerUrl(src);
        }
    } catch(e) {
    }
}
$('iframeTvTrip').src = src;
</script>

            </div></div>
            </div></div><div class="clearFix"></div><a name="notepad"></a><div id="hotelnotepadlist"></div><div id="offernotepadlist"></div><div id="hcAdServer_hotelreviewsIndexAdditionalTopAd"><script type='text/javascript'>
<!--//<![CDATA[
       var m3_u = (location.protocol=='https:'?'https://defer.holidaycheck.de/getDefer/call_1/':'http://defer.holidaycheck.de/getDefer/call_1/');
       var m3_r = Math.floor(Math.random()*99999999999);
       if (!document.MAX_used) document.MAX_used = ',';
       document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
       document.write ("?zoneid=1351");
       document.write ('&amp;cb=' + m3_r);
       if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
       document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
       document.write ("&amp;loc=" + escape(window.location));
       if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
       if (document.context) document.write ("&context=" + escape(document.context));
       if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
       document.write ("&amp;pauschal=&amp;kid=1&amp;lid=41&amp;rid=428&amp;oid=14626&amp;hid=163588");
       document.write ("'><\/scr"+"ipt>");
//]]>-->
</script>
<noscript>
    <a href='http://defer.holidaycheck.de/getDefer/call_3/?n=afe67a62&amp;cb=89786467' target='_blank'>
        <img src='http://defer.holidaycheck.de/getDefer/call_2/?zoneid=1351&amp;cb=89786467&amp;n=afe67a62' border='0' alt='' />
    </a>
</noscript></div><div class="box ">

    <div class="vcard">
        <div class="adr">
            Paderwall 1-5 - 33102 Paderborn        </div>
        	        <span class="geo">
	            <span class="latitude">
	               <span class="value-title" title="51.72095372994848"></span>
	            </span>
	            <span class="longitude">
	               <span class="value-title" title="8.748636245727539"></span>
	            </span>
	         </span>
            </div>

<div>
    <div class="gmPreview " style="background:url(http://maps.google.com/maps/api/staticmap?size=293x96&format=png&maptype=roadmap&language=en&sensor=false&zoom=15&markers=size:mid|icon:http://www.holidaycheck.com/image/common/map/hotel_pin_selected.png|51.72095372994848,8.748636245727539); width:293px; height:96px;"><img src="/image/common/zoom_in.png?33422" alt="Show detailed view " title="Show detailed view " class="zoomButton" width="28" height="28" /><img src="/image/common/blind.gif?33422" title="Show detailed view " width="293" height="96" class="blindGifLink" onclick="showPopUp('/map?action=gmhoteldetaillightbox&hotelId=163588', 'gmhoteldetaillightbox')" /></div></div>
<div class="clearFix"></div>

</div>

        
<div class="box ">
<h2>More about the hotel</h2>
<ul class="listAdditional">

        <li class="notice">
        <a class="link"
            onclick="gaOnclickCount(this);                     javascript:editHotelNotepad('/notepad?action=addhotel&id=163588');                     event.returnValue = false; return false;"
            title="Add Hotel Ibis Paderborn to Watch List"
            href="#">
            Add to Watch List        </a>
    </li>

        <li class="follow">
        <a class="link"
                        onclick="gaOnclickCount(this);                     javascript:mhcShowBox('/myMemorizer.html?action=hoteladditionadditional&hotelId=163588', 450, 150);
                     event.returnValue = false; return false;"
            title="Monitor new contributions about  Hotel Ibis Paderborn"
            href="#">
            Monitor new hotel contributions        </a>
    </li>

            <li class="map">
        <a class="link"
                        onclick="gaOnclickCount(this);                     Shadowbox.open({player : 'iframe',
                                          content: '/map?action=gmhoteldetaillightbox&hotelId=163588',
                                          width  : 925,
                                          height : 560,
                                          options: {
                                             onOpen: function(){
                                                IE6_overlay_fix.show($('partnerAdAdditionalAffiliatebanner'));
                                             },
                                             onClose: function() {
                                                IE6_overlay_fix.hide();
                                             }}},
                                          {enableKeys: false});                     event.returnValue = false; return false;"
            title=" indicate {{hotel name}} Hotel and Surroundings information "
            href="#">
            Show hotel and area information on a map        </a>
    </li>
    
                        <li class="catalog">
            
<a class="link"
    onclick="gaOnclickCount(this);"
    title="Catalog description Hotel Ibis Paderborn"
    href="/hotel-official+description_Hotel+Ibis+Paderborn-ch_kb-hid_163588.html">
    Read catalogue descriptions</a>        </li>
        <li class="signpost">
        <a class="link"
            onclick="gaOnclickCount(this);"
            title="Directory Hotel Ibis Paderborn"
            href="/sitemap-hid_163588.html">
            Directory        </a>
    </li>

            <li class="hoteloverview">
        <a class="link"
                         onclick="gaOnclickCount(this);"
            title="Overview Hotel Ibis Paderborn"
            href="/hotel-travel+information_Hotel+Ibis+Paderborn-hid_163588.html">
            Overview Hotel Ibis Paderborn          </a>
    </li>
    
    </ul>
</div>

        
                

<div class="box ">
    <h2>
        Worth knowing about Paderborn</h2>    <ul class="listAdditional">
                
        
    <li class="weather">
        <a class="link" onclick="gaOnclickCount(this);"
           title="Climate and weather for Paderborn"
           href="/climate-wetter_Paderborn-ebene_oid-id_14626.html">
           Weather and Climate        </a>
    </li>

                    </ul>
</div>
    
                <div class="box ">
<h2>Hotel charts for Paderborn</h2><ul class="listAdditional">
<li class="chartRank"><a href="/charts-Top+Reviewed+Hotels+Paderborn-ebene_oid-id_14626-typ_1-ch_hb.html" title="Top reviewed hotels in Paderborn" class="linkItem" onclick="gaOnclickCount(this);">The 5 top reviewed hotels of the season</a></li>
<li class="chartBargain"><a href="/charts-Best+priced+Hotels+Paderborn-ebene_oid-id_14626-typ_5-ch_hb.html" title="Convenient hotels in Paderborn" class="linkItem" onclick="gaOnclickCount(this);">The 5 top value hotels of the season</a></li>
<li class="chartAccolade"><a href="/holidaycheck-award" title="Die beliebtesten Hotels 2012" class="linkItem" onclick="gaOnclickCount(this);">The most popular hotels 2012</a></li>
</ul>
</div>
    
        
<div class="box ">
    <h2>Participate and Review</h2>
    <ul class="listAdditional">
        <li class="review">
    <a class="link" onclick="gaOnclickCount(this);"
       rel="nofollow"
       title="Review Hotel Ibis Paderborn"
       href="https://secure.holidaycheck.com/hotelrate.php?hotelId=163588&externalFlag=1">Review this hotel    </a>
</li>        <li class="pictures">
    <a class="link" onclick="gaOnclickCount(this);" rel="nofollow"
       title="Upload Hotel Ibis Paderborn pictures"
       href="/upload.php?hotelId=163588">Upload a picture for this hotel    </a>
</li>        
<li class="videos">
    <a class="link" onclick="gaOnclickCount(this);" rel="nofollow"
       title="Upload Hotel Ibis Paderborn videos"
       href="/videoupload.php?hotelId=163588">Upload a video for this hotel    </a>
</li>    </ul>
</div>

        <div class="box ">
    <h2>Is this your hotel?</h2>
    Take advantage of the benefits offered by <em>HotelManager</em>:<br /><ul class="defaultList"><li>Quality analyses provided by hotel reviews</li><li>Update news about your hotel </li><li>Present your hotel by creating a hotel profile and publishing pictures</li></ul>... all for free.<br /><br />        <div class="hotelierAccessLink">
        <a href="https://secure.holidaycheck.com/access_login?entityType=hotel&amp;entityId=163588" title="Activate &lt;em&gt;HotelManager&lt;/em&gt; for Hotel Ibis Paderborn" onclick="gaOnclickCount(this);">activate HotelManager now</a>    </div>
</div>



        <div id="hcAdServer_hotelreviewsIndexAdditionalMiddleAd"><script type='text/javascript'>
<!--//<![CDATA[
       var m3_u = (location.protocol=='https:'?'https://defer.holidaycheck.de/getDefer/call_1/':'http://defer.holidaycheck.de/getDefer/call_1/');
       var m3_r = Math.floor(Math.random()*99999999999);
       if (!document.MAX_used) document.MAX_used = ',';
       document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
       document.write ("?zoneid=2218");
       document.write ('&amp;cb=' + m3_r);
       if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
       document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
       document.write ("&amp;loc=" + escape(window.location));
       if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
       if (document.context) document.write ("&context=" + escape(document.context));
       if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
       document.write ("&amp;kid=1&amp;lid=41&amp;rid=428&amp;oid=14626&amp;hid=163588");
       document.write ("'><\/scr"+"ipt>");
//]]>-->
</script>
<noscript>
    <a href='http://defer.holidaycheck.de/getDefer/call_3/?n=afe67a62&amp;cb=63130933' target='_blank'>
        <img src='http://defer.holidaycheck.de/getDefer/call_2/?zoneid=2218&amp;cb=63130933&amp;n=afe67a62' border='0' alt='' />
    </a>
</noscript></div>

    

        
            <div class="box ">
    <h2>Other hotels in the region</h2>
    <ul class="listAdditionalNoIcons">
                        <li>
            <a href="/city-travel+information_Everswinkel-oid_44952.html"
               title="Hotels Everswinkel"
               onclick="gaOnclickCount(this);">
               Hotels Everswinkel</a>
        </li>
                            <li>
            <a href="/city-travel+information_Telgte-oid_44967.html"
               title="Hotels Telgte"
               onclick="gaOnclickCount(this);">
               Hotels Telgte</a>
        </li>
                            <li>
            <a href="/city-travel+information_Welver-oid_45620.html"
               title="Hotels Welver"
               onclick="gaOnclickCount(this);">
               Hotels Welver</a>
        </li>
                            <li>
            <a href="/city-travel+information_Stahle-oid_45853.html"
               title="Hotels Stahle"
               onclick="gaOnclickCount(this);">
               Hotels Stahle</a>
        </li>
                            <li>
            <a href="/city-travel+information_Nordwalde-oid_45996.html"
               title="Hotels Nordwalde"
               onclick="gaOnclickCount(this);">
               Hotels Nordwalde</a>
        </li>
                            <li>
            <a href="/city-travel+information_Steinhagen-oid_46837.html"
               title="Hotels Steinhagen"
               onclick="gaOnclickCount(this);">
               Hotels Steinhagen</a>
        </li>
                            <li>
            <a href="/city-travel+information_Voerde-oid_47337.html"
               title="Hotels Voerde"
               onclick="gaOnclickCount(this);">
               Hotels Voerde</a>
        </li>
                            <li>
            <a href="/city-travel+information_Kierspe-oid_47381.html"
               title="Hotels Kierspe"
               onclick="gaOnclickCount(this);">
               Hotels Kierspe</a>
        </li>
                                </ul>
            <ul id="furtherLocationsContent" class="jsTogglerClosed listAdditionalNoIcons">
                <li>
            <a href="/city-travel+information_Selm-oid_47613.html"
               title="Hotels Selm"
               onclick="gaOnclickCount(this);">
               Hotels Selm</a>
        </li>
                            <li>
            <a href="/city-travel+information_Saerbeck-oid_48169.html"
               title="Hotels Saerbeck"
               onclick="gaOnclickCount(this);">
               Hotels Saerbeck</a>
        </li>
                </ul>
    <div class="toggleLink"><a href="javascript: void(0);"
        title="view more"
        onclick="$('furtherLocationsContent').toggleOn();"
        id="furtherLocationsContentTogglerHandleOn" class="jsTogglerHandle jsTogglerHandleOn">
            
            <img   src="image/common/toggle_min_plus.png" />
            view more
        </a><a href="javascript: void(0);"
        title="view less"
        onclick="$('furtherLocationsContent').toggleOff();"
        id="furtherLocationsContentTogglerHandleOff" class="jsTogglerHandle jsTogglerHandleOff jsTogglerHandleClosed">
            
            <img   src="image/common/toggle_min_minus.png" />
            view less
        </a></div><div class="clearFix"></div>    </div>

        <div id="hcAdServer_hotelreviewsIndexAdditionalBottomAd"><script type='text/javascript'>
<!--//<![CDATA[
       var m3_u = (location.protocol=='https:'?'https://defer.holidaycheck.de/getDefer/call_1/':'http://defer.holidaycheck.de/getDefer/call_1/');
       var m3_r = Math.floor(Math.random()*99999999999);
       if (!document.MAX_used) document.MAX_used = ',';
       document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
       document.write ("?zoneid=1361");
       document.write ('&amp;cb=' + m3_r);
       if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
       document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
       document.write ("&amp;loc=" + escape(window.location));
       if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
       if (document.context) document.write ("&context=" + escape(document.context));
       if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
       document.write ("&amp;kid=1&amp;lid=41&amp;rid=428&amp;oid=14626&amp;hid=163588");
       document.write ("'><\/scr"+"ipt>");
//]]>-->
</script>
<noscript>
    <a href='http://defer.holidaycheck.de/getDefer/call_3/?n=afe67a62&amp;cb=16993496' target='_blank'>
        <img src='http://defer.holidaycheck.de/getDefer/call_2/?zoneid=1361&amp;cb=16993496&amp;n=afe67a62' border='0' alt='' />
    </a>
</noscript></div>
            <div class="box ">
    <h2>More hotels</h2>
    <ul class="listAdditionalNoIcons">
                    <li>
                <a href="/hotel-travel+information_BEST+WESTERN+PREMIER+Arosa+Hotel-hid_89419.html"
                   title="BEST WESTERN PREMIER Arosa Hotel"
                   onclick="gaOnclickCount(this);">
                   BEST WESTERN PREMIER Arosa Hotel</a>
                   <span class="stars" style="width: 44px;"><img src="/image/common/blind.gif?33422" alt="BEST WESTERN PREMIER Arosa Hotel" title="BEST WESTERN PREMIER Arosa Hotel" width="44" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_Hotel+Zur+Muehle-hid_219108.html"
                   title="Hotel Zur Mühle"
                   onclick="gaOnclickCount(this);">
                   Hotel Zur Mühle</a>
                   <span class="stars" style="width: 33px;"><img src="/image/common/blind.gif?33422" alt="Hotel Zur Mühle" title="Hotel Zur Mühle" width="33" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_Galerie+Hotel-hid_193235.html"
                   title="Galerie-Hotel"
                   onclick="gaOnclickCount(this);">
                   Galerie-Hotel</a>
                   <span class="stars" style="width: 44px;"><img src="/image/common/blind.gif?33422" alt="Galerie-Hotel" title="Galerie-Hotel" width="44" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_Hotel+Stadthaus-hid_154538.html"
                   title="Hotel Stadthaus"
                   onclick="gaOnclickCount(this);">
                   Hotel Stadthaus</a>
                   <span class="stars" style="width: 33px;"><img src="/image/common/blind.gif?33422" alt="Hotel Stadthaus" title="Hotel Stadthaus" width="33" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_Welcome+Hotel+Paderborn-hid_164369.html"
                   title="Welcome Hotel Paderborn"
                   onclick="gaOnclickCount(this);">
                   Welcome Hotel Paderborn</a>
                   <span class="stars" style="width: 44px;"><img src="/image/common/blind.gif?33422" alt="Welcome Hotel Paderborn" title="Welcome Hotel Paderborn" width="44" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_Hotel+Krawinkel+geschlossen-hid_164662.html"
                   title="Hotel Krawinkel (geschlossen)"
                   onclick="gaOnclickCount(this);">
                   Hotel Krawinkel (geschlossen)</a>
                   <span class="stars" style="width: 33px;"><img src="/image/common/blind.gif?33422" alt="Hotel Krawinkel (geschlossen)" title="Hotel Krawinkel (geschlossen)" width="33" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_Suedhotel+Paderborn-hid_224969.html"
                   title="Südhotel Paderborn"
                   onclick="gaOnclickCount(this);">
                   Südhotel Paderborn</a>
                   <span class="stars" style="width: 22px;"><img src="/image/common/blind.gif?33422" alt="Südhotel Paderborn" title="Südhotel Paderborn" width="22" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_In+Via+Gaeste+und+Tagungshaus-hid_166899.html"
                   title="In Via Gäste- und Tagungshaus"
                   onclick="gaOnclickCount(this);">
                   In Via Gäste- und Tagungshaus</a>
                   <span class="stars" style="width: 22px;"><img src="/image/common/blind.gif?33422" alt="In Via Gäste- und Tagungshaus" title="In Via Gäste- und Tagungshaus" width="22" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_Hotel+Aspethera-hid_150629.html"
                   title="Hotel Aspethera"
                   onclick="gaOnclickCount(this);">
                   Hotel Aspethera</a>
                   <span class="stars" style="width: 33px;"><img src="/image/common/blind.gif?33422" alt="Hotel Aspethera" title="Hotel Aspethera" width="33" height="11" /></span>            </li>
                    <li>
                <a href="/hotel-travel+information_Hotel+Campus+Lounge-hid_150004.html"
                   title="Hotel Campus Lounge"
                   onclick="gaOnclickCount(this);">
                   Hotel Campus Lounge</a>
                   <span class="stars" style="width: 33px;"><img src="/image/common/blind.gif?33422" alt="Hotel Campus Lounge" title="Hotel Campus Lounge" width="33" height="11" /></span>            </li>
            </ul>
    </div>

        
    


        </aside>
</div>
</section>

<footer>
    

<hr class="separatorDivide" />
<div class="span-1">
    <strong>Info and Help</strong>

    <br />

    <a onclick="gaOnclickCount(this);"
       title="Newsletter"
       href="https://secure.holidaycheck.com/newsletter.php">Newsletter</a>

    <br />

    <a class="link" onclick="gaOnclickCount(this);"
       title="Directory"
       href="/sitemap.php">
       Directory</a>

    <br />

    <a onclick="gaOnclickCount(this);"
       title="FAQ"
       href="/faq">FAQ</a>

    <br />

    <a onclick="gaOnclickCount(this);"
       title="Contact/Help"
       href="/contact.php">Contact/Help</a>
</div><div class="span-1">
    <strong>Trips and Holidays</strong><br />
    <a onclick="gaOnclickCount(this);"
        title="Flight + Hotel"
        href="/taylor-your+trip-offers.html">Flight + Hotel</a>
</div><div class="span-1">
    <strong>For Partners</strong><br />

    <a href="https://secure.holidaycheck.com/access_login?entityType=hotel"
               title="HotelManager"
               onclick="gaOnclickCount(this);">
               HotelManager</a>

    <br />

    <a href="https://secure.holidaycheck.com/access_login?entityType=poi"
       title="Card Partner"
       onclick="gaOnclickCount(this);">
       Card Partner</a>

    <br />

    <a href="https://secure.holidaycheck.com/access_login?entityType=destination"
       title="DestinationManager"
       onclick="gaOnclickCount(this);">
       DestinationManager</a>

    <br />

    <a onclick="gaOnclickCount(this);"
       title="Media/Marketing"
       href="/advertising.php">Media/Marketing</a>

    <br />

</div><div class="span-1">
    <strong>The Company</strong>

    <br />

    <a onclick="gaOnclickCount(this);"
       title="About Us"
       href="/aboutus.php">About Us</a>

    <br />

    <a onclick="gaOnclickCount(this);"
       title="Press"
       href="/press.php">Press</a>

    <br />

    <a onclick="gaOnclickCount(this);"
       title="Jobs"
       target="_blank"
       href="http://www.holidaycheck.de/jobs">Jobs</a>
</div>

    <div id="countryFlags" class="span-1">
        <strong>
            International        </strong>
        <br />

                    
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_de"
                       alt="www.holidaycheck.de"
                       title="www.holidaycheck.de"
                       href="http://www.holidaycheck.de/"></a>
                </div>

            
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_at"
                       alt="www.holidaycheck.at"
                       title="www.holidaycheck.at"
                       href="http://www.holidaycheck.at/"></a>
                </div>

            
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_ch"
                       alt="www.holidaycheck.ch"
                       title="www.holidaycheck.ch"
                       href="http://www.holidaycheck.ch/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_en"
                       alt="www.holidaycheck.com"
                       title="www.holidaycheck.com"
                       href="http://www.holidaycheck.com/"></a>
                </div>

            
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_uk"
                       alt="www.holidaycheck.co.uk"
                       title="www.holidaycheck.co.uk"
                       href="http://www.holidaycheck.co.uk/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_fr"
                       alt="www.holidaycheck.fr"
                       title="www.holidaycheck.fr"
                       href="http://www.holidaycheck.fr/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_it"
                       alt="www.holidaycheck.it"
                       title="www.holidaycheck.it"
                       href="http://www.holidaycheck.it/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_es"
                       alt="www.holidaycheck.es"
                       title="www.holidaycheck.es"
                       href="http://www.holidaycheck.es/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_pl"
                       alt="www.holidaycheck.pl"
                       title="www.holidaycheck.pl"
                       href="http://www.holidaycheck.pl/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_ru"
                       alt="www.holidaycheck.ru"
                       title="www.holidaycheck.ru"
                       href="http://www.holidaycheck.ru/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_nl"
                       alt="www.holidaycheck.nl"
                       title="www.holidaycheck.nl"
                       href="http://www.holidaycheck.nl/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_cz"
                       alt="www.holidaycheck.cz"
                       title="www.holidaycheck.cz"
                       href="http://www.holidaycheck.cz/"></a>
                </div>

                                
                                                                                            
                <div class='flagItem'>
                    <a onclick="gaOnclickCount(this);"
                       id="flag_cn"
                       alt="www.holidaycheck.cn"
                       title="www.holidaycheck.cn"
                       href="http://www.holidaycheck.cn/"></a>
                </div>

                    
                <div class="clearfix"></div>
        <div id='currencySelectionUnit'>
            <input type="hidden" name="selectCurrencyDestination" id="selectCurrencyDestination" value="/sessionconfig.html?action=setcurrency" />
            <select name="selectCurrency" id="selectCurrency">
                <option value="EUR">EUR (€)</option><option value="GBP">GBP (£)</option><option value="USD" selected="selected">USD ($)</option>            </select>
        </div>

    </div>
    
<div class="span-1 last">
           <a onclick="gaOnclickCount(this);                        Shadowbox.open( { player : 'iframe',
                                          content: '/terms_of_use.php',
                                          width  : 750,
                                          height : 650
                                        },
                                        { enableKeys: false }
                                      );
                        event.returnValue = false;
                        return false;"
               rel="nofollow"
               title="Terms of Use"
               href="/terms_of_use.php">Terms of Use</a>

            <br />

            <a onclick="gaOnclickCount(this);                        Shadowbox.open( { player : 'iframe',
                                          content: '/privacy.php',
                                          width  : 750,
                                          height : 650
                                        },
                                        { enableKeys: false }
                                      );
                        event.returnValue = false;
                        return false;"
               rel="nofollow"
               title="Privacy Policy"
               href="/privacy.php">Privacy Policy</a>

            <br />

            <a onclick="gaOnclickCount(this);                        Shadowbox.open( { player : 'iframe',
                                          content: '/agb.php',
                                          width  : 750,
                                          height : 650
                                        },
                                        { enableKeys: false }
                                      );
                        event.returnValue = false;
                        return false;"
               rel="nofollow"
               title="Terms and Conditions"
               href="/agb.php">Terms and Conditions</a>

            <br />

            <a onclick="gaOnclickCount(this);"
               title="imprint"
               href="/impressum.php">imprint</a>
</div>
<div class="clearFix"></div>

	<hr />
	<div class="span-6 last infotext inactivetext footerSeoText">
		You are looking for hotel reviews for Hotel Ibis Paderborn Paderborn. HolidayCheck offers hotel reviews submitted by travellers for Hotel Ibis Paderborn in North Rhine-Westphalia. The hotel reviews help you plan a great holiday. Spend a great holiday in Hotel Ibis Paderborn Paderborn because by reading the hotel reviews, you will know what to expect in Germany.	</div>
	   <div class="clearFix"></div>

<div class="clearFix"></div>

<hr />
<div class="infotext inactivetext">
    © 1999 - 2012, all rights reserved.</div><div class="clearFix"></div>

    
<!-- PageID -->
<div id="pageIDContainer">
	<div id="pageID">
    	<a href="" title="Hotelreviews index" onclick="gaOnclickCount(this);generatePageId('/pagerequest', 1069782822, 'http://www.holidaycheck.com/hotel-reviews_Hotel+Ibis+Paderborn-ch_hb-hid_163588.html'); event.returnValue = false; return false;"><img src="/image/common/blind.gif?33422" alt="Hotelreviews index" title="Hotelreviews index" width="16" height="16" /></a>	</div>
</div>
        <!-- SiteCatalyst code version: H.22.1.
Copyright 1996-2010 Adobe, Inc. All Rights Reserved
More info available at http://www.omniture.com -->
<script language="JavaScript" type="text/javascript"><!--
var s_account="hcheck-com";
var tld="com";
//--></script>
<script language="JavaScript" type="text/javascript" src="/javascript/omniture/s_code.js"></script>
<script language="JavaScript" type="text/javascript"><!--
if (typeof(controllerAction) != "undefined") {
    s.pageName=controllerAction;
} else {
    s.pageName="empty";
}
s.server="web15";
s.channel="hb";
s.prop11="1_Europe";
s.prop12="41_Germany";
s.prop13="428_North Rhine-Westphalia";
s.prop14="14626_Paderborn";
s.prop15="163588_Hotel Ibis Paderborn";
s.prop16="5";
s.prop17="100";
s.prop18="HR5";
s.prop19="HP0";
s.prop20="HV0";
s.prop21="yes";
s.prop22="2";
s.prop23="no";
s.prop24="yes";
s.prop28="AH0TH0";
s.prop59="";
s.prop62="default";
s.prop69="89419,164369,195258";
s.prop70="0";
s.eVar11="1_Europe";
s.eVar12="41_Germany";
s.eVar13="428_North Rhine-Westphalia";
s.eVar14="14626_Paderborn";
s.eVar15="163588_Hotel Ibis Paderborn";
s.eVar16="5";
s.eVar17="100";
s.eVar18="HR5";
s.eVar19="HP0";
s.eVar20="HV0";
s.eVar21="yes";
s.eVar22="89419,164369,195258";
s.eVar23="no";
s.eVar24="yes";
s.eVar28="AH0TH0";
s.eVar59="";
s.eVar62="default";

/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code=s.t();if(s_code)document.write(s_code)//--></script>
<script language="JavaScript" type="text/javascript"><!--
if(navigator.appVersion.indexOf('MSIE')>=0)document.write(unescape('%3C')+'\!-'+'-')
//--></script><noscript><img src="http://omni.holidaycheck.com/b/ss/hcheck-com/1/H.22.1--NS/0"
height="1" width="1" border="0" alt="" /></noscript><!--/DO NOT REMOVE/-->
<!-- End SiteCatalyst code version: H.22.1. -->    </footer>

<script type="text/javascript">
    </script>

<script type="text/javascript">
                heatmapCount("/tracking?action=heatmapcount&page=Hotelreviews%2Findex");
                </script><div id="ivw">
  <!-- SZM VERSION="1.5" -->
<script type="text/javascript">
<!--
var IVW="http://holidayc.ivwbox.de/cgi-bin/ivw/CP/content;";
document.write("<img src=\""+IVW+"?r="+escape(document.referrer)+"&d="+(Math.random()*100000)+"\" width=\"1\" height=\"1\" alt=\"szmtag\" />");
//-->
</script>
<noscript>
  <img src="http://holidayc.ivwbox.de/cgi-bin/ivw/CP/content;?r=http%3A%2F%2Fwww.holidaycheck.com%2Fhotel-travel%2Binformation_Hotel%2BIbis%2BPaderborn-hid_163588.html&d=28194" alt="szmtag" />
</noscript>
  <!-- /SZM -->
</div>
  <script type="text/javascript">
						window.addEvent('domready', function(){
						        var tooltip = new Tips($$('.tooltip'), {
						            fixed: true,
						            offset: {x: 20, y: -20}
						        });
						        var tooltipMedium = new Tips($$('.tooltipMedium'), {
						            fixed: true,
						            offset: {x: 70, y: -40}
						        });
						        var tooltipBig = new Tips($$('.tooltipBig'), {
						            fixed: true,
						            offset: {x: -530, y: -70}
						        });
                                var tooltipNotepad = new Tips($$('.tooltipNotepad'), {
                                    fixed: true,
                                    offset: {x: -100, y: 20}
                                });
                                var tooltipToprated = new Tips($$('.tooltipToprated'), {
                                    fixed: true,
                                    offset: {x: 80, y: -150}
                                });
                                var tooltipToprated = new Tips($$('.tooltipLink'), {
                                    fixed: true,
                                    offset: {x: 10, y: 15}
                                });
                                var tooltipAdditional = new Tips($$('.tooltipAdditional'), {
                                    fixed: true,
                                    offset: {x: 0, y: 65}
                                });
                                var tooltipTop = new Tips($$('.tooltipTop'), {
                                    fixed: true,
                                    offset: {x: -15, y: -65}
                                });
							});
						</script><div id="skyscraper"><div id="hcAdServer_hotelreviewsIndexSkyScraper"><script type='text/javascript'>
<!--//<![CDATA[
       var m3_u = (location.protocol=='https:'?'https://defer.holidaycheck.de/getDefer/call_1/':'http://defer.holidaycheck.de/getDefer/call_1/');
       var m3_r = Math.floor(Math.random()*99999999999);
       if (!document.MAX_used) document.MAX_used = ',';
       document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
       document.write ("?zoneid=1371");
       document.write ('&amp;cb=' + m3_r);
       if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
       document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
       document.write ("&amp;loc=" + escape(window.location));
       if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
       if (document.context) document.write ("&context=" + escape(document.context));
       if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
       document.write ("&amp;kid=1&amp;lid=41&amp;rid=428&amp;oid=14626&amp;hid=163588");
       document.write ("'><\/scr"+"ipt>");
//]]>-->
</script>
<noscript>
    <a href='http://defer.holidaycheck.de/getDefer/call_3/?n=afe67a62&amp;cb=71099758' target='_blank'>
        <img src='http://defer.holidaycheck.de/getDefer/call_2/?zoneid=1371&amp;cb=71099758&amp;n=afe67a62' border='0' alt='' />
    </a>
</noscript></div></div>

</div>
</div>


<!--[if IE 6]>
<iframe id="productsearch_ie6_overlay_fix" scrolling="no" frameborder="0" src="javascript:false;"></iframe>
<![endif]-->

<script type="text/javascript">
	Hc.AdServer.render();
</script>
<script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://d1ros97qkrwjf5.cloudfront.net/30/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrf2","beacon-1.newrelic.com","c4f295425e",352692,"YVZQZkBRDxIHUkFYW1gcc1FGWQ4PSX9afFtSRl5XHXgOFQNdR1RCX1ZFQR1+DiAFRVxeWg==",0,740,new Date().getTime()]);</script>
</body>
</html>