PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.15
VikBooking Hotel Booking Engine & PMS v1.8.15
1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 All 36 releases
vikbooking / site / views / packagedetails / tmpl / default.php

default.php in VikBooking Hotel Booking Engine & PMS 1.8.15, at site/views/packagedetails/tmpl/default.php

568 lines 25.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package VikBooking
4 * @subpackage com_vikbooking
5 * @author Alessio Gaggii - e4j - Extensionsforjoomla.com
6 * @copyright Copyright (C) 2018 e4j - Extensionsforjoomla.com. All rights reserved.
7 * @license GNU General Public License version 2 or later; see LICENSE
8 * @link https://vikwp.com
9 */
10
11 defined('ABSPATH') or die('No script kiddies please!');
12
13 $package = $this->package;
14 $vbo_tn = $this->vbo_tn;
15
16 $vbo_app = VikBooking::getVboApplication();
17 $vbo_app->loadDatePicker();
18
19 $vat_included = VikBooking::ivaInclusa();
20 $tax_summary = !$vat_included && VikBooking::showTaxOnSummaryOnly() ? true : false;
21
22 $is_mobile = VikBooking::detectUserAgent(false, false);
23 $currencysymb = VikBooking::getCurrencySymb();
24 $calendartype = VikBooking::calendarType();
25 $vbdateformat = VikBooking::getDateFormat();
26 $juidf = '';
27 if ($vbdateformat == "%d/%m/%Y") {
28 $df = 'd/m/Y';
29 $juidf = 'dd/mm/yy';
30 } elseif ($vbdateformat == "%m/%d/%Y") {
31 $df = 'm/d/Y';
32 $juidf = 'mm/dd/yy';
33 } else {
34 $df = 'Y/m/d';
35 $juidf = 'yy/mm/dd';
36 }
37 $datesep = VikBooking::getDateSeparator();
38 $timeopst = VikBooking::getTimeOpenStore();
39 if (is_array($timeopst)) {
40 $opent = VikBooking::getHoursMinutes($timeopst[0]);
41 $closet = VikBooking::getHoursMinutes($timeopst[1]);
42 $hcheckin = $opent[0];
43 $mcheckin = $opent[1];
44 $hcheckout = $closet[0];
45 $mcheckout = $closet[1];
46 } else {
47 $hcheckin = 0;
48 $mcheckin = 0;
49 $hcheckout = 0;
50 $mcheckout = 0;
51 }
52
53 $pitemid = VikRequest::getInt('Itemid', '', 'request');
54 $start_info = getdate($package['dfrom']);
55 $end_info = getdate($package['dto']);
56 $exclude_dates = array();
57 if (!empty($package['excldates'])) {
58 $excl_parts = explode(';', $package['excldates']);
59 foreach ($excl_parts as $excl) {
60 if (!empty($excl)) {
61 $exclude_dates[] = "'".$excl."'";
62 }
63 }
64 }
65
66 $document = JFactory::getDocument();
67 $document->addStyleSheet(VBO_SITE_URI.'resources/jquery.fancybox.css');
68 JHtml::fetch('script', VBO_SITE_URI.'resources/jquery.fancybox.js');
69
70 // datepicker helper
71 $vbo_js = "
72 var pkg_not_dates = [".(count($exclude_dates) > 0 ? implode(', ', $exclude_dates) : '')."];
73 function vbIsDayDisabled(date) {
74 var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
75 if (pkg_not_dates.indexOf((m+1) + '-' + d + '-' + y) != -1) {
76 return [false];
77 }
78 return [true];
79 }";
80 $document->addScriptDeclaration($vbo_js);
81
82 $costfor = array();
83 if ($package['perperson'] == 1) {
84 $costfor[] = JText::translate('VBOPKGCOSTPERPERSON');
85 }
86 if ($package['pernight_total'] == 1) {
87 $costfor[] = JText::translate('VBOPKGCOSTPERNIGHT');
88 }
89
90 $thumbs_rel = array();
91
92 ?>
93 <h3 class="vbo-pkgdet-title"><?php echo $package['name']; ?></h3>
94 <div class="vbo-pkgdet-container">
95 <div class="vbo-pkgdet-topwrap">
96 <?php
97 if (!empty($package['img'])) {
98 ?>
99 <div class="vbo-pkgdet-img">
100 <img src="<?php echo VBO_SITE_URI; ?>resources/uploads/big_<?php echo $package['img']; ?>" alt="<?php echo htmlspecialchars($package['name']); ?>" />
101 </div>
102 <?php
103 }
104
105 // descriptive texts
106 if (VBOPlatformDetection::isWordPress()) {
107 /**
108 * @wponly we try to parse any shortcode inside the texts of the package
109 */
110 $package['descr'] = do_shortcode(wpautop($package['descr']));
111 $package['conditions'] = do_shortcode(wpautop($package['conditions']));
112 } else {
113 //BEGIN: Joomla Content Plugins Rendering
114 JPluginHelper::importPlugin('content');
115 $myItem = JTable::getInstance('content');
116 $myItem->text = $package['descr'];
117 $objparams = array();
118 if (class_exists('JEventDispatcher')) {
119 $dispatcher = JEventDispatcher::getInstance();
120 $dispatcher->trigger('onContentPrepare', array('com_vikbooking.packagedetails', &$myItem, &$objparams, 0));
121 } else {
122 /**
123 * @joomla4only
124 */
125 $dispatcher = JFactory::getApplication();
126 if (method_exists($dispatcher, 'triggerEvent')) {
127 $dispatcher->triggerEvent('onContentPrepare', array('com_vikbooking.packagedetails', &$myItem, &$objparams, 0));
128 }
129 }
130 $package['descr'] = $myItem->text;
131
132 $myItem->text = $package['conditions'];
133 if (class_exists('JEventDispatcher')) {
134 $dispatcher = JEventDispatcher::getInstance();
135 $dispatcher->trigger('onContentPrepare', array('com_vikbooking.packagedetails', &$myItem, &$objparams, 0));
136 } else {
137 /**
138 * @joomla4only
139 */
140 $dispatcher = JFactory::getApplication();
141 if (method_exists($dispatcher, 'triggerEvent')) {
142 $dispatcher->triggerEvent('onContentPrepare', array('com_vikbooking.packagedetails', &$myItem, &$objparams, 0));
143 }
144 }
145 $package['conditions'] = $myItem->text;
146 //END: Joomla Content Plugins Rendering
147 }
148
149 ?>
150 <div class="vbo-pkgdet-descrprice-block">
151 <div class="vbo-pkgdet-descr">
152 <?php echo $package['descr'] ?>
153 </div>
154 <div class="vbo-pkgdet-cost">
155 <span class="vbo-pkglist-pkg-price"><?php echo VikBooking::formatCurrencyNumber(VikBooking::numberFormat(($tax_summary ? $package['cost'] : VikBooking::sayPackagePlusIva($package['cost'], $package['idiva']))), $currencysymb, ['<span class="vbo_currency">%s</span>', '<span class="vbo_price">%s</span>']); ?></span>
156 <span class="vbo-pkglist-pkg-priceper"><?php echo implode(', ', $costfor); ?></span>
157 </div>
158 </div>
159 <div class="vbo-pkgdet-condsdates-block">
160 <div class="vbo-pkgdet-conds">
161 <?php echo $package['conditions'] ?>
162 </div>
163 <div class="vbo-pkgdet-dates">
164 <?php VikBookingIcons::e('clock-o'); ?>
165 <span class="vbo-pkgdet-dates-lbl"><?php echo JText::translate('VBOPKGVALIDATES'); ?></span>
166 <span class="vbo-pkgdet-dates-ft"><?php echo date(str_replace("/", $datesep, $df), $package['dfrom']).($package['dfrom'] != $package['dto'] ? ' - '.date(str_replace("/", $datesep, $df), $package['dto']) : ''); ?></span>
167 </div>
168 </div>
169 <?php
170 if (!empty($package['benefits'])) {
171 ?>
172 <div class="vbo-pkgdet-benefits">
173 <?php echo $package['benefits']; ?>
174 </div>
175 <?php
176 }
177 ?>
178 </div>
179
180 <div class="vbo-pkgdet-roomswrap">
181 <h3 class="vbo-pkgdet-roomsttl"><?php echo JText::translate('VBOPKGBOOKNOWROOMS'); ?></h3>
182 <?php
183 if (array_key_exists('rooms', $package) && count($package['rooms'])) {
184 ?>
185 <div class="vbo-pkgdet-roomslist">
186 <?php
187 foreach ($package['rooms'] as $rk => $room) {
188 if (empty($room['name'])) {
189 continue;
190 }
191 ?>
192 <div class="vbo-pkgdet-room-container">
193 <div class="vbo-pkgdet-room-outer">
194 <?php
195 if (!empty($room['img'])) {
196 ?>
197 <div class="vbo-pkgdet-room-img">
198 <img src="<?php echo VBO_SITE_URI; ?>resources/uploads/<?php echo $room['img']; ?>" alt="<?php echo htmlspecialchars($room['name']); ?>" />
199 </div>
200 <?php
201 }
202 ?>
203 <div class="vbo-pkgdet-room-det">
204 <h4 class="vbo-pkgdet-roomname"><?php echo $room['name']; ?></h4>
205 <div class="vbo-pkgdet-room-shortdescr"><?php echo $room['smalldesc']; ?></div>
206 </div>
207 <div class="vbo-pkgdet-room-booknow">
208 <button type="button" class="btn vbo-pkgdet-room-booknow-btn vbo-pref-color-btn" data-room="<?php echo $room['idroom']; ?>" onclick="vboToggleRoomBooking('<?php echo $room['idroom']; ?>');"><?php echo JText::translate('VBOPKGROOMCHECKAVAIL'); ?></button>
209 </div>
210 </div>
211 <div class="vbo-pkgdet-room-inner" id="vbo-pkgdet-room<?php echo $room['idroom']; ?>-inner" style="display: none;">
212 <?php
213 if (!empty($room['moreimgs'])) {
214 $moreimages = explode(';;', $room['moreimgs']);
215 $imgcaptions = json_decode($room['imgcaptions'], true);
216 $usecaptions = empty($imgcaptions) || is_null($imgcaptions) || !is_array($imgcaptions) || !(count($imgcaptions) > 0) ? false : true;
217 $thumbs_ind = 0;
218 $extra_photos = array();
219 foreach($moreimages as $iind => $mimg) {
220 if (!empty($mimg)) {
221 $img_alt = $usecaptions === true && !empty($imgcaptions[$iind]) ? $imgcaptions[$iind] : '';
222 $extra_photos[$thumbs_ind] = array('big' => VBO_SITE_URI.'resources/uploads/big_'.$mimg, 'thumb' => VBO_SITE_URI.'resources/uploads/thumb_'.$mimg, 'alt' => $img_alt);
223 $thumbs_ind++;
224 }
225 }
226 if (count($extra_photos)) {
227 $thumbs_rel[] = $room['idroom'];
228 ?>
229 <div class="vbo-pkgdet-room-thumbs-cont">
230 <?php
231 foreach ($extra_photos as $extra_photo) {
232 ?>
233 <div class="vbo-pkgdet-room-thumb">
234 <a href="<?php echo $extra_photo['big']; ?>" title="<?php echo htmlspecialchars($extra_photo['alt']); ?>" rel="room<?php echo $room['idroom']; ?>" target="_blank"><img src="<?php echo $extra_photo['thumb']; ?>" alt="<?php echo htmlspecialchars($extra_photo['alt']); ?>" /></a>
235 </div>
236 <?php
237 }
238 ?>
239 </div>
240 <?php
241 }
242 }
243 ?>
244 <div class="vbo-seldates-cont vbo-pkgdet-room-form">
245 <h4><?php echo JText::translate('VBSELECTPDDATES'); ?></h4>
246 <?php
247 $paramshowpeople = intval(VikBooking::getRoomParam('maxminpeople', $room['params']));
248 if ($paramshowpeople > 0) {
249 $maxadustr = ($room['fromadult'] != $room['toadult'] ? $room['fromadult'].' - '.$room['toadult'] : $room['toadult']);
250 $maxchistr = ($room['fromchild'] != $room['tochild'] ? $room['fromchild'].' - '.$room['tochild'] : $room['tochild']);
251 $maxtotstr = ($room['mintotpeople'] != $room['totpeople'] ? $room['mintotpeople'].' - '.$room['totpeople'] : $room['totpeople']);
252 ?>
253 <div class="vbmaxminpeopleroom">
254 <?php
255 if ($paramshowpeople == 1) {
256 ?>
257 <div class="vbmaxadultsdet"><span class="vbmaximgdet"><?php VikBookingIcons::e('male'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBFORMADULTS'); ?></span><span class="vbmaxnumberdet"><?php echo $maxadustr; ?></span></div>
258 <?php
259 } elseif ($paramshowpeople == 2) {
260 ?>
261 <div class="vbmaxchildrendet"><span class="vbmaximgdet"><?php VikBookingIcons::e('child'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBFORMCHILDREN'); ?></span><span class="vbmaxnumberdet"><?php echo $maxchistr; ?></span></div>
262 <?php
263 } elseif ($paramshowpeople == 3) {
264 ?>
265 <div class="vbmaxadultsdet"><span class="vbmaximgdet"><?php VikBookingIcons::e('male'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBFORMADULTS'); ?></span><span class="vbmaxnumberdet"><?php echo $maxadustr; ?></span></div>
266 <div class="vbmaxtotdet"><span class="vbmaximgdet"><?php VikBookingIcons::e('users'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBMAXTOTPEOPLE'); ?></span><span class="vbmaxnumberdet"><?php echo $maxtotstr; ?></span></div>
267 <?php
268 } elseif ($paramshowpeople == 4) {
269 ?>
270 <div class="vbmaxchildrendet"><span class="vbmaximgdet"><?php VikBookingIcons::e('child'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBFORMCHILDREN'); ?></span><span class="vbmaxnumberdet"><?php echo $maxchistr; ?></span></div>
271 <div class="vbmaxtotdet"><span class="vbmaximgdet"><?php VikBookingIcons::e('users'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBMAXTOTPEOPLE'); ?></span><span class="vbmaxnumberdet"><?php echo $maxtotstr; ?></span></div>
272 <?php
273 } elseif ($paramshowpeople == 5) {
274 ?>
275 <div class="vbmaxadultsdet"><span class="vbmaximgdet"><?php VikBookingIcons::e('male'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBFORMADULTS'); ?></span><span class="vbmaxnumberdet"><?php echo $maxadustr; ?></span></div>
276 <div class="vbmaxchildrendet"><span class="vbmaximgdet"><?php VikBookingIcons::e('child'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBFORMCHILDREN'); ?></span><span class="vbmaxnumberdet"><?php echo $maxchistr; ?></span></div>
277 <div class="vbmaxtotdet"><span class="vbmaximgdet"><?php VikBookingIcons::e('users'); ?></span><span class="vbmaxlabeldet"><?php echo JText::translate('VBMAXTOTPEOPLE'); ?></span><span class="vbmaxnumberdet"><?php echo $maxtotstr; ?></span></div>
278 <?php
279 }
280 ?>
281 </div>
282 <?php
283 }
284 /* Begin room booking form */
285 $selform = "<div class=\"vbdivsearch\"><form action=\"".JRoute::rewrite('index.php?option=com_vikbooking'.(!empty($pitemid) ? '&Itemid='.$pitemid : ''))."\" method=\"post\"><div class=\"vb-search-inner\">\n";
286 $selform .= "<input type=\"hidden\" name=\"option\" value=\"com_vikbooking\"/>\n";
287 $selform .= "<input type=\"hidden\" name=\"task\" value=\"search\"/>\n";
288 $selform .= "<input type=\"hidden\" name=\"roomdetail\" value=\"".$room['idroom']."\"/>\n";
289 $selform .= "<input type=\"hidden\" name=\"pkg_id\" value=\"".$package['id']."\"/>\n";
290
291 if ($calendartype == "jqueryui") {
292 $orig_start_info = $start_info;
293 if ($package['dfrom'] < time()) {
294 $start_info = getdate(time());
295 }
296 $sdecl = "
297 jQuery.noConflict();
298 jQuery(function(){
299 jQuery.datepicker.setDefaults( jQuery.datepicker.regional[ '' ] );
300 jQuery('#checkindate".$room['idroom']."').datepicker({
301 showOn: 'focus',
302 numberOfMonths: ".($is_mobile ? '1' : '2').",
303 beforeShowDay: vbIsDayDisabled,
304 onSelect: function( selectedDate ) {
305 vbSetGlobalMinCheckoutDate('".$room['idroom']."');
306 vbCalcNights('".$room['idroom']."');
307 }
308 });
309 jQuery('#checkindate".$room['idroom']."').datepicker( 'option', 'dateFormat', '".$juidf."');
310 jQuery('#checkindate".$room['idroom']."').datepicker( 'option', 'minDate', new Date(".$start_info['year'].", ".((int)$start_info['mon'] - 1).", ".$start_info['mday'].") );
311 jQuery('#checkindate".$room['idroom']."').datepicker( 'option', 'maxDate', new Date(".$end_info['year'].", ".((int)$end_info['mon'] - 1).", ".$end_info['mday'].") );
312 jQuery('#checkoutdate".$room['idroom']."').datepicker({
313 showOn: 'focus',
314 numberOfMonths: ".($is_mobile ? '1' : '2').",
315 beforeShowDay: vbIsDayDisabled,
316 onSelect: function( selectedDate ) {
317 vbCalcNights('".$room['idroom']."');
318 }
319 });
320 jQuery('#checkoutdate".$room['idroom']."').datepicker( 'option', 'dateFormat', '".$juidf."');
321 jQuery('#checkoutdate".$room['idroom']."').datepicker( 'option', 'minDate', new Date(".$start_info['year'].", ".((int)$start_info['mon'] - 1).", ".$start_info['mday'].") );
322 jQuery('#checkoutdate".$room['idroom']."').datepicker( 'option', 'maxDate', new Date(".$end_info['year'].", ".((int)$end_info['mon'] - 1).", ".$end_info['mday'].") );
323 jQuery('#checkindate".$room['idroom']."').datepicker( 'option', jQuery.datepicker.regional[ 'vikbooking' ] );
324 jQuery('#checkoutdate".$room['idroom']."').datepicker( 'option', jQuery.datepicker.regional[ 'vikbooking' ] );
325 });";
326 $document->addScriptDeclaration($sdecl);
327 $start_info = $orig_start_info;
328 $selform .= "<div class=\"vbo-search-inpblock vbo-search-inpblock-checkin\"><label for=\"checkindate".$room['idroom']."\">" . JText::translate('VBPICKUPROOM') . "</label><div class=\"input-group\"><input type=\"text\" name=\"checkindate\" id=\"checkindate".$room['idroom']."\" size=\"10\" autocomplete=\"off\" onfocus=\"this.blur();\" readonly/><i class=\"".VikBookingIcons::i('calendar', 'vbo-caltrigger')."\"></i></div><input type=\"hidden\" name=\"checkinh\" value=\"".$hcheckin."\"/><input type=\"hidden\" name=\"checkinm\" value=\"".$mcheckin."\"/></div>\n";
329 $selform .= "<div class=\"vbo-search-inpblock vbo-search-inpblock-checkout\"><label for=\"checkoutdate".$room['idroom']."\">" . JText::translate('VBRETURNROOM') . "</label><div class=\"input-group\"><input type=\"text\" name=\"checkoutdate\" id=\"checkoutdate".$room['idroom']."\" size=\"10\" autocomplete=\"off\" onfocus=\"this.blur();\" readonly/><i class=\"".VikBookingIcons::i('calendar', 'vbo-caltrigger')."\"></i></div><input type=\"hidden\" name=\"checkouth\" value=\"".$hcheckout."\"/><input type=\"hidden\" name=\"checkoutm\" value=\"".$mcheckout."\"/></div>\n";
330 } else {
331 //default Joomla Calendar
332 $vbo_app = VikBooking::getVboApplication();
333 $selform .= "<div class=\"vbo-search-inpblock vbo-search-inpblock-checkin\"><label for=\"checkindate".$room['idroom']."\">" . JText::translate('VBPICKUPROOM') . "</label><div class=\"input-group\">" . $vbo_app->getCalendar('', 'checkindate', 'checkindate'.$room['idroom'], $vbdateformat, array ('class' => '','size' => '10','maxlength' => '19'));
334 $selform .= "<input type=\"hidden\" name=\"checkinh\" value=\"".$hcheckin."\"/><input type=\"hidden\" name=\"checkinm\" value=\"".$mcheckin."\"/></div></div>\n";
335 $selform .= "<div class=\"vbo-search-inpblock vbo-search-inpblock-checkout\"><label for=\"checkoutdate".$room['idroom']."\">" . JText::translate('VBRETURNROOM') . "</label><div class=\"input-group\">" . $vbo_app->getCalendar('', 'checkoutdate', 'checkoutdate'.$room['idroom'], $vbdateformat, array ('class' => '','size' => '10','maxlength' => '19'));
336 $selform .= "<input type=\"hidden\" name=\"checkouth\" value=\"".$hcheckout."\"/><input type=\"hidden\" name=\"checkoutm\" value=\"".$mcheckout."\"/></div></div>\n";
337 }
338 //rooms, adults, children
339 $showchildren = VikBooking::showChildrenFront();
340 $guests_label = VBOFactory::getConfig()->get('guests_label', 'adults');
341 $use_guests_label = 'VBFORMADULTS';
342 if (!$showchildren && !strcasecmp($guests_label, 'guests')) {
343 $use_guests_label = 'VBOINVTOTGUESTS';
344 }
345 //max number of rooms
346 $multi_units = (int)VikBooking::getRoomParam('multi_units', $room['params']);
347 if ($multi_units === 1 && $room['units'] > 1) {
348 $maxsearchnumrooms = (int)VikBooking::getSearchNumRooms();
349 $maxsearchnumrooms = $room['units'] > $maxsearchnumrooms ? $maxsearchnumrooms : $room['units'];
350 $roomsel = "<label>".JText::translate('VBFORMROOMSN')."</label><select name=\"roomsnum\" onchange=\"vbSetRoomsAdults(this.value, '".$room['idroom']."');\">\n";
351 for ($r = 1; $r <= $maxsearchnumrooms; $r++) {
352 $roomsel .= "<option value=\"".$r."\">".$r."</option>\n";
353 }
354 $roomsel .= "</select>\n";
355 } else {
356 $roomsel = "<input type=\"hidden\" name=\"roomsnum\" value=\"1\">\n";
357 }
358 //
359 //max number of adults per room
360 $suggocc = (int)VikBooking::getRoomParam('suggocc', $room['params']);
361 $adultsel = "<select name=\"adults[]\">";
362 for ($a = $room['fromadult']; $a <= $room['toadult']; $a++) {
363 $adultsel .= "<option value=\"".$a."\"".($a == $suggocc ? " selected=\"selected\"" : "").">".$a."</option>";
364 }
365 $adultsel .= "</select>";
366 //
367 //max number of children per room
368 $childrensel = "<select name=\"children[]\">";
369 for($c = 0; $c <= $room['tochild']; $c++) {
370 $childrensel .= "<option value=\"".$c."\"".(!empty($ch_num_children) && $ch_num_children == $c ? " selected=\"selected\"" : "").">".$c."</option>";
371 }
372 $childrensel .= "</select>";
373 //
374
375 $selform .= "<div class=\"vbo-search-num-racblock\">\n";
376 $selform .= " <div class=\"vbo-search-num-rooms\">".$roomsel."</div>\n";
377 $selform .= " <div class=\"vbo-search-num-aduchild-block\" id=\"vbo-search-num-aduchild-block".$room['idroom']."\">\n";
378 $selform .= " <div class=\"vbo-search-num-aduchild-entry\"><span class=\"vbo-search-roomnum\">".JText::translate('VBFORMNUMROOM')." 1</span>\n";
379 $selform .= " <div class=\"vbo-search-num-adults-entry\"><label class=\"vbo-search-num-adults-entry-label\">".JText::translate($use_guests_label)."</label><span class=\"vbo-search-num-adults-entry-inp\">".$adultsel."</span></div>\n";
380 if ($showchildren) {
381 $selform .= " <div class=\"vbo-search-num-children-entry\"><label class=\"vbo-search-num-children-entry-label\">".JText::translate('VBFORMCHILDREN')."</label><span class=\"vbo-search-num-children-entry-inp\">".$childrensel."</span></div>\n";
382 }
383 $selform .= " </div>\n";
384 $selform .= " </div>\n";
385 //the tag <div id=\"vbjstotnights".$room['idroom']."\"></div> will be used by javascript to calculate the nights
386 $selform .= " <div id=\"vbjstotnights".$room['idroom']."\"></div>\n";
387 $selform .= "</div>\n";
388 $selform .= "<div class=\"vbo-search-submit\"><input type=\"submit\" name=\"search\" value=\"" . JText::translate('VBBOOKTHISROOM') . "\" class=\"btn vbdetbooksubmit vbo-pref-color-btn\"/></div>\n";
389 $selform .= "</div>\n";
390 $selform .= (!empty ($pitemid) ? "<input type=\"hidden\" name=\"Itemid\" value=\"" . $pitemid . "\"/>" : "") . "</form></div>";
391 ?>
392 <input type="hidden" id="vbroomdethelper<?php echo $room['idroom']; ?>" value="1"/>
393 <div class="vbo-room-details-booking-wrapper">
394 <?php echo $selform; ?>
395 </div>
396 <?php
397 /* End room booking form */
398 ?>
399 </div>
400 </div>
401 </div>
402 <?php
403 }
404 ?>
405 </div>
406 <?php
407 }
408 ?>
409 </div>
410
411 </div>
412
413 <script type="text/javascript">
414 function vboToggleRoomBooking(idr) {
415 if (typeof jQuery != 'undefined') {
416 var elem = document.getElementById("vbo-pkgdet-room"+idr+"-inner");
417 if (elem.style.display == 'none') {
418 elem.style.display = 'block';
419 } else {
420 elem.style.display = 'none';
421 }
422 } else {
423 jQuery("#vbo-pkgdet-room"+idr+"-inner").slideToggle();
424 }
425 }
426 function vbSetGlobalMinCheckoutDate(rid) {
427 var nowcheckin = jQuery('#checkindate'+rid).datepicker('getDate');
428 var nowcheckindate = new Date(nowcheckin.getTime());
429 nowcheckindate.setDate(nowcheckindate.getDate() + <?php echo (int)$package['minlos']; ?>);
430 jQuery('#checkoutdate'+rid).datepicker( 'option', 'minDate', nowcheckindate );
431 <?php
432 if ($package['maxlos'] > 0) {
433 ?>
434 var scndcheckin = jQuery('#checkindate'+rid).datepicker('getDate');
435 var scndcheckindate = new Date(scndcheckin.getTime());
436 scndcheckindate.setDate(scndcheckindate.getDate() + <?php echo (int)$package['maxlos']; ?>);
437 jQuery('#checkoutdate'+rid).datepicker( 'option', 'maxDate', scndcheckindate );
438 <?php
439 }
440 ?>
441 }
442 function vbCalcNights(rid) {
443 var vbcheckin = document.getElementById('checkindate'+rid).value;
444 var vbcheckout = document.getElementById('checkoutdate'+rid).value;
445 if (vbcheckin.length > 0 && vbcheckout.length > 0) {
446 var vbcheckinp = vbcheckin.split("/");
447 var vbcheckoutp = vbcheckout.split("/");
448 <?php
449 if ($vbdateformat == "%d/%m/%Y") {
450 ?>
451 var vbinmonth = parseInt(vbcheckinp[1]);
452 vbinmonth = vbinmonth - 1;
453 var vbinday = parseInt(vbcheckinp[0], 10);
454 var vbcheckind = new Date(vbcheckinp[2], vbinmonth, vbinday);
455 var vboutmonth = parseInt(vbcheckoutp[1]);
456 vboutmonth = vboutmonth - 1;
457 var vboutday = parseInt(vbcheckoutp[0], 10);
458 var vbcheckoutd = new Date(vbcheckoutp[2], vboutmonth, vboutday);
459 <?php
460 } elseif ($vbdateformat == "%m/%d/%Y") {
461 ?>
462 var vbinmonth = parseInt(vbcheckinp[0]);
463 vbinmonth = vbinmonth - 1;
464 var vbinday = parseInt(vbcheckinp[1], 10);
465 var vbcheckind = new Date(vbcheckinp[2], vbinmonth, vbinday);
466 var vboutmonth = parseInt(vbcheckoutp[0]);
467 vboutmonth = vboutmonth - 1;
468 var vboutday = parseInt(vbcheckoutp[1], 10);
469 var vbcheckoutd = new Date(vbcheckoutp[2], vboutmonth, vboutday);
470 <?php
471 } else {
472 ?>
473 var vbinmonth = parseInt(vbcheckinp[1]);
474 vbinmonth = vbinmonth - 1;
475 var vbinday = parseInt(vbcheckinp[2], 10);
476 var vbcheckind = new Date(vbcheckinp[0], vbinmonth, vbinday);
477 var vboutmonth = parseInt(vbcheckoutp[1]);
478 vboutmonth = vboutmonth - 1;
479 var vboutday = parseInt(vbcheckoutp[2], 10);
480 var vbcheckoutd = new Date(vbcheckoutp[0], vboutmonth, vboutday);
481 <?php
482 }
483 ?>
484 var vbdivider = 1000 * 60 * 60 * 24;
485 var vbints = vbcheckind.getTime();
486 var vboutts = vbcheckoutd.getTime();
487 if (vboutts > vbints) {
488 //var vbnights = Math.ceil((vboutts - vbints) / (vbdivider));
489 var utc1 = Date.UTC(vbcheckind.getFullYear(), vbcheckind.getMonth(), vbcheckind.getDate());
490 var utc2 = Date.UTC(vbcheckoutd.getFullYear(), vbcheckoutd.getMonth(), vbcheckoutd.getDate());
491 var vbnights = Math.ceil((utc2 - utc1) / vbdivider);
492 if (vbnights > 0) {
493 document.getElementById('vbjstotnights'+rid).innerHTML = '<?php echo addslashes(JText::translate('VBJSTOTNIGHTS')); ?>: '+vbnights;
494 } else {
495 document.getElementById('vbjstotnights'+rid).innerHTML = '';
496 }
497 } else {
498 document.getElementById('vbjstotnights'+rid).innerHTML = '';
499 }
500 } else {
501 document.getElementById('vbjstotnights'+rid).innerHTML = '';
502 }
503 }
504 function vbAddElement(rid) {
505 var ni = document.getElementById('vbo-search-num-aduchild-block'+rid);
506 var numi = document.getElementById('vbroomdethelper'+rid);
507 var num = (document.getElementById('vbroomdethelper'+rid).value -1)+ 2;
508 numi.value = num;
509 var newdiv = document.createElement('div');
510 var divIdName = 'vb'+num+'detracont';
511 newdiv.setAttribute('id',divIdName);
512 newdiv.innerHTML = '<div class=\'vbo-search-num-aduchild-entry\'><span class=\'vbo-search-roomnum\'><?php echo addslashes(JText::translate('VBFORMNUMROOM')); ?> '+ num +'</span><div class=\'vbo-search-num-adults-entry\'><label class=\'vbo-search-num-adults-entry-label\'><?php echo addslashes(JText::translate($use_guests_label)); ?></label><span class=\'vbo-search-num-adults-entry-inp\'><?php echo addslashes(str_replace('"', "'", $adultsel)); ?></span></div><?php if ($showchildren): ?><div class=\'vbo-search-num-children-entry\'><label class=\'vbo-search-num-children-entry-label\'><?php echo addslashes(JText::translate('VBFORMCHILDREN')); ?></label><span class=\'vbo-search-num-adults-entry-inp\'><?php echo addslashes(str_replace('"', "'", $childrensel)); ?></span></div><?php endif; ?></div>';
513 ni.appendChild(newdiv);
514 }
515 function vbSetRoomsAdults(totrooms, rid) {
516 var actrooms = parseInt(document.getElementById('vbroomdethelper'+rid).value);
517 var torooms = parseInt(totrooms);
518 var difrooms;
519 if (torooms > actrooms) {
520 difrooms = torooms - actrooms;
521 for(var ir=1; ir<=difrooms; ir++) {
522 vbAddElement(rid);
523 }
524 }
525 if (torooms < actrooms) {
526 for(var ir=actrooms; ir>torooms; ir--) {
527 if (ir > 1) {
528 var rmra = document.getElementById('vb' + ir + 'detracont');
529 rmra.parentNode.removeChild(rmra);
530 }
531 }
532 document.getElementById('vbroomdethelper'+rid).value = torooms;
533 }
534 }
535 function vbFullObject(obj) {
536 var jk;
537 for(jk in obj) {
538 return obj.hasOwnProperty(jk);
539 }
540 }
541 jQuery(function() {
542 jQuery('.vb-cal-img, .vbo-caltrigger').click(function(){
543 var jdp = jQuery(this).prev('input.hasDatepicker');
544 if (jdp.length) {
545 jdp.focus();
546 }
547 });
548 <?php
549 if (count($thumbs_rel)) {
550 foreach ($thumbs_rel as $rel) {
551 ?>
552 jQuery("a[rel=room<?php echo $rel; ?>]").fancybox({
553 'helpers': {
554 'overlay': {
555 'locked': false
556 }
557 },
558 'padding': 0,
559 'transitionIn': 'none',
560 'transitionOut': 'none',
561 'titlePosition': 'outside'
562 });
563 <?php
564 }
565 }
566 ?>
567 });
568 </script>