| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/360/holidaygreen/indexdata/ |
Upload File : |
<?xml version="1.0" encoding="UTF-8"?>
<krpano>
<!-- Global variables used by actions and plugins -->
<krpano
tour_soundson="true"
tour_soundsvolume="100"
tour_autotourenabled="false"
tour_autorotateenabled="false"
tour_controlmodemousetype="drag"
tour_controlmodetouchtype="drag"
tour_fullscreen="false"
tour_displaymap="false"
tour_displaythumbnails="true"
tour_displayfloorplan="false"
tour_displayinfo="false"
tour_displayspots="true"
tour_displaycontrols="true"
tour_language="en" />
<krpano tour_gyroscopedevices="true" devices="no-desktop.and.html5" />
<krpano tour_vrdevices="true" devices="html5" />
<krpano videos_sounds_path="%FIRSTXML%" devices="html5" />
<krpano videos_sounds_path="%SWFPATH%" devices="flash" />
<krpano projection_current_params="view.fisheyefovlink=0.5&view.architectural=0.0&view.pannini=0.0&view.fisheye=0.0&view.stereographic=false" />
<display autofullscreen="false" devices="android" />
<krpano vrtourdevice.desktop="desktop" vrtourdevice.tablet="tablet" vrtourdevice.mobile="mobile" />
<krpano vrtourdevicescale.desktop="1.0" vrtourdevicescale.tablet="1.0" vrtourdevicescale.mobile="2.0" />
<action name="vrtourcurrentscale" autorun="preinit">
mul(stagescale,get(vrtourdevicescale));
</action>
<!-- Control Mode Management -->
<control mouse="drag" touch="drag" />
<action name="setControlModeDragTo">setControlMode(drag);</action>
<action name="setControlModeMoveTo">setControlMode(moveto);</action>
<action name="setControlMode">
if (device.desktop,
set(control.mouse, %1);
set(tour_controlmodemousetype, %1);
,
set(control.touch, %1);
set(tour_controlmodetouchtype, %1);
);
events.dispatch(oncontrolmodechanged);
</action>
<!-- Tour Messages -->
<action name="getmessage">
txtadd(real_message_id, get(tour_language), "_", %2);
set(%1, get(data[get(real_message_id)].content));
</action>
<!-- Hide / Show Hotspots -->
<action name="hideHotspots">
set(tour_displayspots, false);
set(nb_spots, get(hotspot.count));
if (nb_spots != 0, hidepanospotsaction(); );
events.dispatch(hotspots_visibility_changed);
</action>
<action name="showHotspots">
set(tour_displayspots, true);
set(nb_spots, get(hotspot.count));
if (nb_spots != 0, showpanospotsaction(); );
events.dispatch(hotspots_visibility_changed);
</action>
<events name="hideShowHotspotsOnNewPanoEvent" onPanoStart="hideShowHotspotsOnNewPanoAction" keep="true"/>
<action name="hideShowHotspotsOnNewPanoAction">
set(nb_spots, get(hotspot.count));
if (nb_spots != 0,
if (tour_displayspots, showpanospotsaction(); , hidepanospotsaction(); );
);
</action>
<action name="startbehavioursxmlcompleteaction">
if (skipintro !== null,
set(tour_firstlittleplanet, false);
ifnot (tour_firststartactiondone,
set(tour_firststartactiondone, true);
events.dispatch(onTourStart);
);
events.dispatch(onPanoStart);
,
ifnot (tour_firststartactiondone,
set(sceneisfull360, false);
if (scene[get(xml.scene)].full360,
sub(viewhfov, panoview.hmax, panoview.hmin);
if (viewhfov == 360,
sub(viewvfov, panoview.vmax, panoview.vmin);
if (viewvfov == 180,
set(sceneisfull360, true);
);
);
);
stoptween(view.fov);
stoptween(view.fovmax);
stoptween(view.hlookat);
stoptween(view.vlookat);
stoptween(view.fisheye);
if (sceneisfull360 AND (device.webgl OR device.flash),
setlittleplanet();
);
ifnot (sceneisfull360,
set(view.fovmax, get(panoview.fovmax));
set(view.hlookat, get(panoview.h));
set(view.vlookat, get(panoview.v));
set(view.fisheye, 0.0);
set(view.architectural, 0.0);
set(view.stereographic, false);
set(view.pannini, 0.0);
set(view.fisheyefovlink, 0.5);
set(view.fov, get(panoview.fov));
ifnot (tour_firststartactiondone,
events.dispatch(onTourStart);
);
events.dispatch(onPanoStart);
);
set(tour_firststartactiondone, true);
,
events.dispatch(onPanoStart, true);
);
);
</action>
<action name="startLittlePlanetIntroEffect">
if(tour_firstlittleplanet,
set(sceneisfull360, false);
if (scene[get(xml.scene)].full360,
sub(viewhfov, panoview.hmax, panoview.hmin);
if (viewhfov == 360,
sub(viewvfov, panoview.vmax, panoview.vmin);
if (viewvfov == 180,
set(sceneisfull360, true);
);
);
);
if (sceneisfull360,
fromlittleplanetintrotonormalview();
);
);
</action>
<action name="setlittleplanet">
set(view.architectural, 0.0);
set(view.hlookat, get(panoview.h));
set(view.vlookat, 90);
set(view.pannini, 0.0);
if(panoview.fovmax LE 150,
set(view.fovmax, 150);
,
set(view.fovmax, get(panoview.fovmax));
);
set(view.stereographic, true);
set(view.fisheyefovlink, 1.5);
set(view.fisheye, 1.0);
set(view.fov, 150);
events.dispatch(onStartLittlePlanetIntroduction);
</action>
<action name="fromlittleplanetintrotonormalview">
tweennormalview();
</action>
<action name="tweennormalview">
hideTooltip();
tween(view.fovmax, get(panoview.fovmax), 3, easeoutquad);
tween(view.hlookat, get(panoview.h), 3, easeoutquad);
tween(view.vlookat, get(panoview.v), 3, easeoutquad);
if(panoview.fov LE view.fov, tween(view.fov, get(panoview.fov), 3, easeoutquad); );
tween(view.pannini, 0.0, 3, easeoutquad);
tween(view.fisheye, 0.0, 3, easeoutquad,
set(view.architectural, 0.0);
set(view.stereographic, false);
set(view.fisheyefovlink, 0.5);
events.dispatch(onEndLittlePlanetIntroduction, true);
if (tour_firstlittleplanet,
events.dispatch(onTourStart, true);
set(tour_firstlittleplanet, false);
);
events.dispatch(onPanoStart, true);
);
</action>
<events name="startTourForJsEvents" onTourStart="startTourForJsEventsAction();" keep="true" />
<action name="startTourForJsEventsAction">
js(eventTourStarted());
</action>
<events name="ptp_audio_events" devices="mobile.or.tablet.or.safari.or.chrome" keep="true"
onclick="ptp_audio_start_touch();"
onmouseup="ptp_audio_start_touch();"
onmousedown="ptp_audio_start_touch();"
onkeydown="ptp_audio_start_touch()"
onkeyup="ptp_audio_start_touch();"
onTourStart="ptp_audio_start_event();"
/>
<action name="ptp_audio_start_touch" devices="mobile.or.tablet.or.safari.or.chrome">
ptp_audio_start();
set(events[ptp_audio_events].onclick, null);
set(events[ptp_audio_events].onmouseup, null);
set(events[ptp_audio_events].onmousedown, null);
set(events[ptp_audio_events].onkeydown, null);
set(events[ptp_audio_events].onkeyup, null);
set(events[ptp_audio_events].onTourStart, null);
set(events[ptp_audio_events].keep, false);
</action>
<action name="ptp_audio_start_event" devices="mobile.or.tablet.or.safari.or.chrome">
set(events[ptp_audio_events].onTourStart, null);
ptp_audio_start();
</action>
<action name="ptp_audio_start" devices="mobile.or.tablet.or.safari.or.chrome">
if (tour_soundson === true,
playTourSounds();
);
</action>
<events name="userGestureAutoplayEvents" devices="mobile.or.tablet.or.safari.or.chrome"
onclick="activateAutoplayOnGesture();"
onmouseup="activateAutoplayOnGesture();"
onmousedown="activateAutoplayOnGesture();"
onkeydown="activateAutoplayOnGesture()"
onkeyup="activateAutoplayOnGesture();"
keep="true" />
<action name="activateAutoplayOnGesture" devices="mobile.or.tablet.or.safari.or.chrome">
startAutoplayOnGesture();
set(events[userGestureAutoplayEvents].onclick, null);
set(events[userGestureAutoplayEvents].onmouseup, null);
set(events[userGestureAutoplayEvents].onmousedown, null);
set(events[userGestureAutoplayEvents].onkeydown, null);
set(events[userGestureAutoplayEvents].onkeyup, null);
set(events[userGestureAutoplayEvents].keep, false);
</action>
<action name="startAutoplayOnGesture" devices="mobile.or.tablet.or.safari.or.chrome">
if(scene[get(xml.scene)].video == true,
scene[get(xml.scene)].onstart();
);
set(videointerface_firstvideoscene, false);
</action>
<!-- Default Lensflares set -->
<krpano panovideospotsstate="false" />
<krpano panolivepanospotsstate="false" />
<events name="panoVideosSpotsStateEvent" onTourStart="set(panovideospotsstate, true);set(panolivepanospotsstate, true);" keep="true" />
<krpano ptblendmode="BLEND(1.0, easeInCubic)" />
<action name="mainloadsceneStartup">
loadscene(%1, get(projection_current_params), MERGE);
</action>
<action name="mainloadscene">
if (xml.scene != %1,
events.dispatch(onleavingscene, true);
interruptAnimation();
resetbackgroundsoundifneeded(%1);
set(videoscenestarttime, 0);
stopdelayedcall(videointerface_videostart_call);
if(scene[get(xml.scene)].video AND scene[%1].video == false,
if(plugin[get(videointerface_video)],
if(plugin[get(videointerface_video)].videourl,
if(plugin[get(videointerface_video)].ispaused OR plugin[get(videointerface_video)].isautopaused,
plugin[get(videointerface_video)].seek(0);
,
delayedcall(videointerface_video_call, get(plugin[get(videointerface_video)].delay),
plugin[get(videointerface_video)].stop();
);
set(plugin[get(videointerface_video)].delay, 0);
);
);
set(plugin[get(videointerface_video)].visible, false);
););
stopTourSoundsActions(true,true,true,false);
if(tour_soundson == true AND scene[%1].video == true AND plugin[get(videointerface_video)].volume == 0,
videointerface_change_sound();
);
indexoftxt(indexsafariversion, get(device.safariversion), ".");
subtxt(majorsafariversion, get(device.safariversion), 0, get(indexsafariversion));
if ((device.ios AND device.iosversion GE 11) OR (device.safari AND majorsafariversion GE 11),
loadscene(%1, get(projection_current_params), MERGE);
,
loadscene(%1, get(projection_current_params), MERGE, get(ptblendmode));
);
,
if(scene[%1].video,plugin[get(videointerface_video)].seek(0););
);
</action>
<!-- Load Previous Scene -->
<action name="loadPreviousScene">
copy(sceneprevnexti, scene[get(xml.scene)].index);
dec(sceneprevnexti);
if (sceneprevnexti LT 0, sub(sceneprevnexti, scene.count, 1););
mainloadscene(get(scene[get(sceneprevnexti)].name));
</action>
<!-- Load Next Scene -->
<action name="loadNextScene">
copy(sceneprevnexti, scene[get(xml.scene)].index);
inc(sceneprevnexti);
if (sceneprevnexti GE scene.count, set(sceneprevnexti, 0););
mainloadscene(get(scene[get(sceneprevnexti)].name));
</action>
<!-- AUTOROTATION -->
<autorotate enabled="false"/>
<krpano tour_autorotation_pausecounter="0"/>
<krpano tour_autorotation_pauseplugin="0"/>
<krpano tour_autorotation_openatstartplugin="0"/>
<action name="startautorotation">
if(tour_autorotation_pausecounter LE 0,
set(tour_autorotateenabled, true );
invalidatescreen();
set(autorotate.enabled, true);
set(tour_autorotation_pausecounter, 0);
events.dispatch(onstartautorotation);
if(tour_autotourenabled,
resetautotourvariables();
);
);
</action>
<action name="stopautorotation">
set(tour_autorotateenabled, false);
set(autorotate.enabled, false);
events.dispatch(onstopautorotation);
if(tour_autotourenabled,
stopautotourtimer();
);
</action>
<action name="pauseautorotation">
if(%1 == forceplugin,
inc(tour_autorotation_pauseplugin);
);
inc(tour_autorotation_pausecounter);
if(tour_autorotateenabled,
set(autorotate.enabled, false);
events.dispatch(onpauseautorotation);
if(tour_autotourenabled AND useautotourdelay == false,
stopautotourtimer();
);
);
</action>
<action name="resumeautorotation">
if(%1 == forceplugin,
if (tour_autorotation_pauseplugin GT 0,
dec(tour_autorotation_pauseplugin);
);
);
if (tour_autorotation_pausecounter GE 0,
if(%1 != forceresume,
if ((tour_autorotation_pausecounter GT 0) AND (tour_autorotation_pausecounter GT tour_autorotation_pauseplugin),
dec(tour_autorotation_pausecounter);
);
);
);
if(tour_autorotateenabled,
if(tour_autorotation_pausecounter == 0,
if(%1 != forceresume,
set(autorotate.enabled, true);
events.dispatch(onresumeautorotation);
if(tour_autotourenabled,
resetautotourvariables();
);
);
);
,
if(%1 != forceresume,
if(%1 != forceplugin,
if(%1 != forcehotspot,
startautorotation();
);
,
set(forceAutorotationFromPluginUnload, false);
if(action['autorotationatstart'],
set(forceAutorotationFromPluginUnload, true);
);
if(action['autotouratstart'],
set(forceAutorotationFromPluginUnload, true);
);
if(forceAutorotationFromPluginUnload,
if(tour_autorotation_openatstartplugin == 1,
if((tour_autorotation_pauseplugin LE 0) AND (tour_autorotation_pausecounter LE 0),
startautorotation();
);
);
);
);
);
);
</action>
<events name="autorotation_events" onnewpano="if(tour_autorotation_pauseplugin LE 0,resumeautorotation(forceresume););" ongyroscopeon="pauseautorotation(forceplugin);" ongyroscopeoff="resumeautorotation(forceplugin);" keep="true"/>
<events name="autorotationstartevents" onTourStart="autorotationatstart();" keep="true"/>
<action name="autorotationatstart">
if (norotation === null, startautorotation(););
set(events[autorotationstartevents].keep, false);
</action>
<!-- AUTOTOUR -->
<krpano useautotourdelay="false" autotourdelay="5" autotourHorizontalStartValue="0" />
<action name="startautotour">
set(tour_autotourenabled, true);
startautorotation();
events.dispatch(onstartautotour);
</action>
<action name="resetautotourvariables">
stopautotourtimer();
if (scene[get(xml.scene)].planar,
set(autotourdelay, 10);
delayedcall(autotour_call_id, get(autotourdelay), autotourtimer);
,
set(autotourHorizontalStartValue, get(view.hlookat));
if ((panoview.hmin == -180) AND (panoview.hmax == 180),
delayedcallAutotourFull360();
,
set(previousStep, 0);
set(panoramaHorizontalSize, 0);
set(totalPartialSize, 0);
set(firstBorderSize, 0);
set(secondBorderSize, 0);
set(firstStep, 0);
set(firstStepTest, 0);
set(firstStepKeep, 0);
set(borderCounter, 0);
sub(panoramaHorizontalSize, get(panoview.hmax), get(panoview.hmin));
Math.abs(panoramaHorizontalSize);
delayedcallAutotourPartial();
);
);
</action>
<action name="delayedcallAutotourPartial">
sub(tempPosition, get(view.hlookat), get(autotourHorizontalStartValue));
Math.ceil(tempPosition);
Math.abs(tempPosition);
if(borderCounter == 0 AND tempPosition LT previousStep,
inc(borderCounter);
Math.abs(firstStep, get(previousStep));
sub(firstStepTest, get(previousStep), get(firstStep));
set(firstStepKeep, get(firstStepTest));
Math.abs(firstBorderSize, get(previousStep));
add(totalPartialSize, get(firstBorderSize));
);
if(borderCounter GE 1,
if(firstBorderSize != 0,
sub(firstStepTest, get(previousStep), get(firstStep));
Math.abs(firstStepTest, get(firstStepTest));
if(firstStepTest LT firstStepKeep,
add(totalPartialSize, get(firstBorderSize));
set(firstBorderSize, 0);
);
set(firstStepKeep, get(firstStepTest));
,
if(tempPosition LT previousStep,
inc(borderCounter);
Math.abs(secondBorderSize, get(previousStep));
add(totalPartialSize, get(secondBorderSize));
);
);
);
set(previousStep, get(tempPosition));
if(borderCounter GE 2 AND totalPartialSize GT panoramaHorizontalSize,
delete(previousStep, panoramaHorizontalSize, totalPartialSize, firstBorderSize, secondBorderSize, firstStep, firstStepTest, firstStepKeep, borderCounter);
autotourtimer();
,
delayedcall(autotour_call_id, 0.5, delayedcallAutotourPartial);
);
</action>
<action name="delayedcallAutotourFull360">
sub(tempPosition, get(view.hlookat), get(autotourHorizontalStartValue));
mod(tempPositionMod, get(tempPosition), 360);
Math.ceil(tempPosition);
Math.ceil(tempPositionMod);
if(tempPositionMod == tempPosition,
delayedcall(autotour_call_id, 0.5, delayedcallAutotourFull360);
,
autotourtimer();
);
</action>
<action name="stopautotour">
set(tour_autotourenabled, false);
stopautotourtimer();
stopautorotation();
events.dispatch(onstopautotour);
</action>
<action name="autotourtimer">
if(tour_autotourenabled,
if(tour_autorotateenabled,
if(autorotate.enabled,
stopautotour();loadNextScene();
startautotour();
);
);
);
</action>
<action name="stopautotourtimer">
stopdelayedcall(autotour_call_id);
</action>
<events name="autotourevents"
onnewpano="autotouronnewpanoaction();"
onmouseup="autotouronuseraction(true);"
onmousedown="autotouronuseraction(false);"
onkeyup="autotouronuseraction(true);"
keep="true" />
<action name="autotouronnewpanoaction">
if(tour_autotourenabled, resetautotourvariables(););
</action>
<action name="autotouronuseraction">
if(tour_autotourenabled, if(%1, resetautotourvariables();, stopautotourtimer();););
</action>
<krpano tour_deeplinkingvars=""/>
<action name="computeDeepLinkingURL">
txtadd(tour_deeplinkingvars, "s=", get(xml.scene));
set(viewhlookat, get(view.hlookat));roundval(viewhlookat, 4);
mod(viewhlookat, 360);
if (viewhlookat GT 180,
sub(viewhlookat, 360);
,
if (viewhlookat LT -180, add(viewhlookat, 360));
);
set(viewvlookat, get(view.vlookat));roundval(viewvlookat, 4);
set(viewfov, get(view.fov));roundval(viewfov, 4);
txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&h=", get(viewhlookat));
txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&v=", get(viewvlookat));
txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&f=", get(viewfov));
if (%1 !== null,if (%1, txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&skipintro");););
if (%2 !== null,if (%2, txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&norotation");););
</action>
<!-- Spot animation management -->
<action name="animate">
if (tour_stopsequence == false,
if (stopspotsequence == false,
txtadd(delayedname, %1, 'delay');
if(hotspot[%1].loaded,
inc(hotspot[%1].frame,1,get(hotspot[%1].lastframe),0);
mul(hotspot[%1].ypos,get(hotspot[%1].frame),get(hotspot[%1].frameheight));
txtadd(hotspot[%1].crop,'0|',get(hotspot[%1].ypos),'|',get(hotspot[%1].framewidth),'|',get(hotspot[%1].frameheight));
);
delayedcall(get(delayedname),%2,animate(%1,%2));
);
);
</action>
<action name="startspotanimation">
set(tour_stopsequence, false);
set(stopspotsequence , false);
animate(get(name), %1);
</action>
<action name="stopspotanimation">
set(hotspot[%1].stopspotsequence, true);
txtadd(delayedname, %1, 'delay');
stopdelayedcall(get(delayedname));
</action>
<action name="interruptAnimation">
if(tour_stopsequence == false,
set(tour_stopsequence, true);
);
</action>
<!-- Disable the default fullscreen mode as it does a fullscreen only on the viewer not "on the tour" -->
<contextmenu fullscreen="false" versioninfo="false" />
<!-- Tooltips management -->
<!-- Tooltip Management -->
<krpano tooltipCurrentTextfieldLayer="panotourTooltipDefaultText" coretooltipmess=""/>
<events name="showHideTooltipEvents" onremovepano="hideTooltip();" keep="true" />
<action name="showTooltip">
if (tooltip !== null,
getmessage(currentTooltipText, get(tooltip));
if (%2 == null,
set(tooltipCurrentTextfieldLayer, "panotourTooltipDefaultText");
,
set(tooltipCurrentTextfieldLayer, %2);
);
ifnot (currentTooltipText == "",
tooltipTextSettingsUpdate(%1, %3, %4, %5, %6);
set(tooltipHtmlText, get(currentTooltipText));
escape(tooltipHtmlText);
set(layer[get(tooltipCurrentTextfieldLayer)].html, get(tooltipHtmlText));
set(layer[get(tooltipCurrentTextfieldLayer)].visible, true);
set(layer[get(tooltipCurrentTextfieldLayer)].tag, "tooltip");
div(halfWidth, get(layer[get(tooltipCurrentTextfieldLayer)].width), 2);
div(halfHeight, get(layer[get(tooltipCurrentTextfieldLayer)].height), 2);
<!-- Default edge center -->
set(usedWidth, get(halfWidth));
set(usedHeight, get(halfHeight));
if(layer[get(tooltipCurrentTextfieldLayer)].edge == "left",
set(usedWidth, get(layer[get(tooltipCurrentTextfieldLayer)].width));
add(rightMargin, get(mouse.x), get(usedWidth));
set(leftMargin, get(mouse.x));
,
if(layer[get(tooltipCurrentTextfieldLayer)].edge == "right",
set(usedWidth, get(layer[get(tooltipCurrentTextfieldLayer)].width));
set(rightMargin, get(mouse.x));
sub(leftMargin, get(mouse.x), get(usedWidth));
,
add(rightMargin, get(mouse.x), get(usedWidth));
sub(leftMargin, get(mouse.x), get(usedWidth));
);
);
add(rightMargin, get(layer[get(tooltipCurrentTextfieldLayer)].xoffset));
add(leftMargin, get(layer[get(tooltipCurrentTextfieldLayer)].xoffset));
if(layer[get(tooltipCurrentTextfieldLayer)].edge == "bottom",
set(usedHeight, get(layer[get(tooltipCurrentTextfieldLayer)].height));
sub(topMargin, get(mouse.y), get(usedHeight));
set(bottomMargin, get(mouse.y));
,
if(layer[get(tooltipCurrentTextfieldLayer)].edge == "top",
set(usedHeight, get(layer[get(tooltipCurrentTextfieldLayer)].height));
set(topMargin, get(mouse.y));
add(bottomMargin, get(mouse.y), get(usedHeight));
,
sub(topMargin, get(mouse.y), get(usedHeight));
add(bottomMargin, get(mouse.y), get(usedHeight));
);
);
add(topMargin, get(layer[get(tooltipCurrentTextfieldLayer)].yoffset));
add(bottomMargin, get(layer[get(tooltipCurrentTextfieldLayer)].yoffset));
if(leftMargin LT 0,
set(layer[get(tooltipCurrentTextfieldLayer)].align, "left");
set(tooltipPositionX, get(usedWidth));
,
set(tooltipstagewidth, get(stagewidth));
if(area.left, sub(tooltipstagewidth, get(area.left)));
if(area.right, sub(tooltipstagewidth, get(area.right)));
if(rightMargin GT tooltipstagewidth,
set(layer[get(tooltipCurrentTextfieldLayer)].align, "right");
set(tooltipPositionX, get(usedWidth));
,
div(tooltipPositionX, get(tooltipstagewidth), 2);
sub(tooltipPositionX, get(mouse.x), get(tooltipPositionX));
add(tooltipPositionX, get(layer[get(tooltipCurrentTextfieldLayer)].xoffset));
);
);
set(layer[get(tooltipCurrentTextfieldLayer)].x, get(tooltipPositionX));
if(topMargin LT 0,
if(layer[get(tooltipCurrentTextfieldLayer)].align == "center",
set(layer[get(tooltipCurrentTextfieldLayer)].align, "top");
,
txtadd(layer[get(tooltipCurrentTextfieldLayer)].align, "top");
);
set(tooltipPositionY, get(usedHeight));
,
set(tooltipstageheight, get(stageheight));
if(area.top, sub(tooltipstageheight, get(area.top)));
if(area.bottom, sub(tooltipstageheight, get(area.bottom)));
if(bottomMargin GT tooltipstageheight,
if(layer[get(tooltipCurrentTextfieldLayer)].align == "center",
set(layer[get(tooltipCurrentTextfieldLayer)].align, "bottom");
,
txtadd(layer[get(tooltipCurrentTextfieldLayer)].align, "bottom");
);
set(tooltipPositionY, get(usedHeight));
,
div(tooltipPositionY, get(tooltipstageheight), 2);
sub(tooltipPositionY, get(mouse.y), get(tooltipPositionY));
add(tooltipPositionY, get(layer[get(tooltipCurrentTextfieldLayer)].yoffset));
);
);
set(layer[get(tooltipCurrentTextfieldLayer)].y, get(tooltipPositionY));
);
);
</action>
<action name="tooltipTextSettingsUpdate">
if(get(tooltipCurrentTextfieldLayer) != "",
set(layer[get(tooltipCurrentTextfieldLayer)].align, "center");
if (%2 == null,
set(layer[get(tooltipCurrentTextfieldLayer)].edge, "bottom");
,
set(layer[get(tooltipCurrentTextfieldLayer)].edge, %2);
);
if (%3 != null,
set(layer[get(tooltipCurrentTextfieldLayer)].wordwrap, true);
set(layer[get(tooltipCurrentTextfieldLayer)].width, %3);
);
if (%4 != null,
set(layer[get(tooltipCurrentTextfieldLayer)].xoffset, %4);
);
if (%5 != null,
set(layer[get(tooltipCurrentTextfieldLayer)].yoffset, %5);
);
set(layer[get(tooltipCurrentTextfieldLayer)].zorder, 99);
);
</action>
<action name="hideTooltip">
set(layer[get(tooltipCurrentTextfieldLayer)].visible, false);
set(layer[get(tooltipCurrentTextfieldLayer)].html, '');
</action>
<action name="showPermanentTooltip">
if (tooltip !== null,
getmessage(currentTooltipText, get(tooltip));
ifnot (currentTooltipText == "",
txtadd(permanentTooltipForSpot, get(tooltip), '_permanent');
set(activateUsePermanentTooltip, false);
if(%1 == "std",
if(device.desktop,
set(activateUsePermanentTooltip, true);
);
,
if(%1 == "touch",
if(device.tablet OR device.mobile,
set(activateUsePermanentTooltip, true);
);
,
set(activateUsePermanentTooltip, true);
);
);
if(activateUsePermanentTooltip,
addlayer(get(permanentTooltipForSpot));
txtadd(layer[get(permanentTooltipForSpot)].parent, 'hotspot[', get(name), ']');
if(rotate,
sub(newRotate, 0, get(rotate));
if(rotate GE 0 AND rotate LT 45 OR rotate GE 315 AND rotate LT 360,
set(layer[get(permanentTooltipForSpot)].rotate,get(newRotate));
if (%2 == null,
set(layer[get(permanentTooltipForSpot)].align,bottom);
,
set(layer[get(permanentTooltipForSpot)].align,top);
);
,
if(rotate GE 45 AND rotate LT 135,
set(layer[get(permanentTooltipForSpot)].rotate,get(newRotate));
if (%2 == null,
set(layer[get(permanentTooltipForSpot)].align,right);
,
set(layer[get(permanentTooltipForSpot)].align,left);
);
,
if(rotate GE 135 AND rotate LT 225,
set(layer[get(permanentTooltipForSpot)].rotate,get(newRotate));
if (%2 == null,
set(layer[get(permanentTooltipForSpot)].align,top);
,
set(layer[get(permanentTooltipForSpot)].align,bottom);
);
,
set(layer[get(permanentTooltipForSpot)].rotate,get(newRotate));
if (%2 == null,
set(layer[get(permanentTooltipForSpot)].align,left);
,
set(layer[get(permanentTooltipForSpot)].align,right);
);
);
);
);
,
if (%2 == null,
set(layer[get(permanentTooltipForSpot)].align,bottom);
,
set(layer[get(permanentTooltipForSpot)].align,top);
);
);
if (%2 == null,
set(layer[get(permanentTooltipForSpot)].edge,top);
,
set(layer[get(permanentTooltipForSpot)].edge,bottom);
);
set(layer[get(permanentTooltipForSpot)].enabled,false);
set(layer[get(permanentTooltipForSpot)].capture,false);
set(layer[get(permanentTooltipForSpot)].visible, true);
set(layer[get(permanentTooltipForSpot)].tag,"tooltip");
set(layer[get(permanentTooltipForSpot)].type,text);
set(layer[get(permanentTooltipForSpot)].bg,false);
set(layer[get(permanentTooltipForSpot)].bgborder,0);
set(layer[get(permanentTooltipForSpot)].txtshadow,'1.0 1.0 4.0 0x000000 1');
set(layer[get(permanentTooltipForSpot)].css,'color:#ffffff;font-family:Arial;font-weight:bold;font-size:14px;text-align:center;');
set(layer[get(permanentTooltipForSpot)].interactivecontent, false);
set(layer[get(permanentTooltipForSpot)].zorder,3);
set(layer[get(permanentTooltipForSpot)].padding,2);
set(tooltipHtmlText, get(currentTooltipText));
escape(tooltipHtmlText);
set(layer[get(permanentTooltipForSpot)].html, get(tooltipHtmlText));
);
);
);
</action>
<action name="updatePermanentTooltip">
for(set(hsi, 0), hsi LT hotspot.count, inc(hsi),
if(hotspot[get(hsi)].tooltip !== NULL AND hotspot[get(hsi)].tooltip != "",
txtadd(permTooltipName, get(hotspot[get(hsi)].tooltip), '_permanent');
if(permTooltipName,
getmessage(changeTooltipTxt, get(hotspot[get(hsi)].tooltip));
escape(changeTooltipTxt);
set(layer[get(permTooltipName)].html, get(changeTooltipTxt));
);
);
);
</action>
<events name="permanentTooltipEvents" keep="true" changetourlanguage="updatePermanentTooltip()" />
<!-- Default HTML5 tooltip style -->
<layer name="panotourTooltipDefaultText"
keep="true"
enabled="false"
capture="false"
type="text"
align="center"
bg="false"
bgborder="0"
txtshadow="1.0 1.0 4.0 0x000000 1"
css="color:#ffffff;font-family:Arial;font-weight:bold;font-size:14px;text-align:left;"
edge="bottom"
zorder="0"
xoffset="0"
yoffset="0"
interactivecontent="false"
wordwrap="true"
padding="2"
visible="false"
html=""
/>
<!-- Panoramic video player interface -->
<krpano videointerface_seekbar_update="" videointerface_controlbar_update="" videointerface_firstvideoscene="true" />
<events name="videointerface_start_events" devices="mobile.or.tablet" keep="true"
onmousedown="videointerface_auto_start();"
onvideointerfaceinit="videointerface_auto_start_init();"
/>
<action name="videointerface_auto_start_init">
set(events[videointerface_start_events].onmousedown, null);
</action>
<action name="videointerface_auto_start">
if(videointerface_autostart !== true,
ifnot(scene[get(xml.scene)].video,
if(plugin[get(videointerface_video)],
if(plugin[get(videointerface_video)].ispaused,
plugin[get(videointerface_video)].play();
delayedcall(0.1, plugin[get(videointerface_video)].pause(););
set(videointerface_autostart, true);
events.dispatch(onvideointerfaceinit);
););
);
);
</action>
<plugin name="ptvideosceneplayer"
url.html5="%FIRSTXML%/graphics/videoplayer.js"
width.no-panovideosupport.or.html5.and.ie.and.mobile="100%"
height.no-panovideosupport.or.html5.and.ie.and.mobile="prop"
onloaded="videointerface_setup_interface(get(name));"
onvideoready="videointerface_videoready();"
autoresume="true"
preferredformat.chrome="mp4"
preferredformat.firefox="webm"
preferredformat.safari="mp4"
preferredformat.ie="mp4"
preferredformat.edge="mp4"
buffertime="0.1"
volume="1.0"
pausedonstart="true"
loop="false"
onvideocomplete=""
enabled="false"
zorder="0"
visible="false"
panovideo="false"
align="center"
ox="0"
oy="0"
keep="true"
delay="0"
mute="false"
splashscreen="false"
/>
<events name="videointerface_events"
onremovepano="if(scene[get(xml.scene)].video == true,videointerface_close(););"
videointerfaceready="videointerface_open();"
videointerfaceactivated="videointerface_update_pausestate();"
changetoursoundsevent="videointerface_change_sound();"
stoptoursoundsevent="videointerface_stop_sound();"
playtoursoundsevent="videointerface_start_sound();"
onplayvideointerface="videointerface_close_splashscreen();"
keep="true" />
<action name="videointerface_change_sound">
ifnot(plugin[get(videointerface_video)].mute,
ifnot(device.ios,
div(volume, tour_soundsvolume, 100);
set(plugin[get(videointerface_video)].volume, get(volume));
,
if(tour_soundsvolume GT 0,
set(plugin[get(videointerface_video)].muted, false);
,
set(plugin[get(videointerface_video)].muted, true);
);
);
);
</action>
<action name="videointerface_start_sound">
ifnot(plugin[get(videointerface_video)].mute,
if (tour_soundson,
ifnot(device.ios,
div(volume, tour_soundsvolume, 100);
set(plugin[get(videointerface_video)].volume, get(volume));
,
if(tour_soundsvolume GT 0,
set(plugin[get(videointerface_video)].muted, false);
,
set(plugin[get(videointerface_video)].muted, true);
);
);
,
ifnot(device.ios,
set(plugin[get(videointerface_video)].volume, 0);
,
set(plugin[get(videointerface_video)].muted, true);
);
);
);
</action>
<action name="videointerface_stop_sound">
ifnot(plugin[get(videointerface_video)].mute,
ifnot(device.ios,
set(plugin[get(videointerface_video)].volume, 0);
,
set(plugin[get(videointerface_video)].muted, true);
);
);
</action>
<action name="videointerface_setup_interface">
set(videointerface_video, %1);
if(device.panovideosupport == false OR (device.html5 AND device.ie AND device.mobile),
set(plugin[get(videointerface_video)].panovideo, false);
,
set(plugin[get(videointerface_video)].panovideo, true);
);
ifnot(plugin[get(videointerface_video)].mute,
ifnot(device.ios,
div(plugin[get(videointerface_video)].volume, tour_soundsvolume, 100);
,
if(tour_soundsvolume GT 0,
set(plugin[get(videointerface_video)].muted, false);
,
set(plugin[get(videointerface_video)].muted, true);
);
);
);
set(plugin[get(videointerface_video)].onvideoplay, videointerface_update_pausestate() );
set(plugin[get(videointerface_video)].onvideopaused, videointerface_update_pausestate() );
set(plugin[get(videointerface_video)].issetup, true);
</action>
<action name="videointerface_videoready">
events.dispatch(videointerfaceready);
</action>
<action name="videointerface_togglepause">
plugin[get(videointerface_video)].togglepause();
</action>
<action name="videointerface_play">
if(videoscenestarttime GT 0,
plugin[get(videointerface_video)].seek(videoscenestarttime);
set(videoscenestarttime, 0);
);
plugin[get(videointerface_video)].play();
</action>
<action name="videointerface_stop">
plugin[get(videointerface_video)].stop();
</action>
<action name="videointerface_resume">
plugin[get(videointerface_video)].play();
</action>
<action name="videointerface_pause">
plugin[get(videointerface_video)].pause();
</action>
<action name="videointerface_seek">
plugin[get(videointerface_video)].seek(%1);
</action>
<action name="videointerface_update_pausestate">
if(plugin[get(videointerface_video)].ispaused,
events.dispatch(onpausevideointerface);
,
events.dispatch(onplayvideointerface);
);
</action>
<action name="videointerface_open">
events.dispatch(openvideointerface);
videointerface_update_timer();
videointerface_open_splashscreen();
</action>
<action name="videointerface_close">
events.dispatch(closevideointerface);
videointerface_close_splashscreen();
stopdelayedcall(videointerface_timeupdate);
</action>
<action name="videointerface_open_splashscreen">
if(plugin[get(videointerface_video)].splashscreen OR %1 == true,
set(layer[videointerface_splashscreen_image].visible, true);
tween(layer[videointerface_splashscreen_image].alpha, 1.0, 0.25, default);
);
set(plugin[get(videointerface_video)].splashscreen, true);
</action>
<action name="videointerface_close_splashscreen">
if(%1 === true,
set(layer[videointerface_splashscreen_image].alpha, 0);
set(layer[videointerface_splashscreen_image].visible, false);
,
tween(layer[videointerface_splashscreen_image].alpha, 0.0, 0.25, default,set(layer[videointerface_splashscreen_image].visible,false););
);
set(plugin[get(videointerface_video)].splashscreen, false);
</action>
<!-- video interface splashscreen for play-pause -->
<layer name="videointerface_splashscreen_image"
url="%FIRSTXML%/graphics/videoplayer_play_button.png"
visible="false"
alpha="0.0"
align="center"
width="100"
height="100"
zorder="98"
scale="0.8"
keep="true"
onclick="if(plugin[get(videointerface_video)].isvideoready, videointerface_togglepause();videointerface_close_splashscreen(););"
/>
<action name="videointerface_update_timer">
set(videointerface_update_timer_loop, true);
if(videointerface_seekbar_update OR videointerface_controlbar_update,
copy(vp, plugin[get(videointerface_video)]);
if(vp AND vp.loaded AND vp.isvideoready AND vp.isseeking == false,
copy(t1, vp.time);
copy(t2, vp.totaltime);
if(t2 GT 0, div(t3, t1, t2), set(t3,0));
copy(l1, vp.loadedbytes);
copy(l2, vp.totalbytes);
if(l2 GT 0, div(l3, l1, l2), set(l3,0));
mul(l3, 100);
txtadd(l3_percent, get(l3), '%%');
mul(t3, 100);
txtadd(t3_percent, get(t3), '%%');
if(videointerface_seekbar_update,
txtadd(videointerface_seekbar_update_timer,get(videointerface_seekbar_update),'(',t1,',',t2,',',l3_percent,',',t3_percent,');');
callwith(plugin[get(videointerface_video)], videointerface_seekbar_update_timer);
);
if(videointerface_controlbar_update,
txtadd(videointerface_controlbar_update_timer,get(videointerface_controlbar_update),'(',t1,',',t2,',',l3_percent,',',t3_percent,');');
callwith(plugin[get(videointerface_video)], videointerface_controlbar_update_timer);
);
);
delete(vp);
,
set(videointerface_update_timer_loop, false);
);
if(videointerface_update_timer_loop == true,
stopdelayedcall(videointerface_timeupdate);
delayedcall(videointerface_timeupdate, 0.25, videointerface_update_timer() );
);
</action>
<action name="videointerface_onSceneStart">
if(videointerface_video,
if(scene[get(xml.scene)].scenevideoloop,
set(plugin[get(videointerface_video)].onvideocomplete, seek(0);play(););
,
if(scene[get(xml.scene)].scenevideoendaction == false,
set(plugin[get(videointerface_video)].onvideocomplete, pause(););
);
);
set(plugin[get(videointerface_video)].mute, get(scene[get(xml.scene)].scenevideomute));
set(plugin[get(videointerface_video)].muted, get(scene[get(xml.scene)].scenevideomute));
if(scene[get(xml.scene)].scenevideomute OR tour_soundson == false,
set(plugin[get(videointerface_video)].volume, 0.0);
,
if(plugin[soundinterface] AND scene[get(xml.scene)].backgroundsound,
pausebackgroundsound();
);
div(videovolume, tour_soundsvolume, 100);
copy(plugin[get(videointerface_video)].volume, videovolume);
);
if(scene[get(xml.scene)].scenevideopausedonstart OR ((device.android OR device.chrome OR device.safari OR device.iphone) AND videointerface_firstvideoscene),
videointerface_open_splashscreen(true);
,
videointerface_close_splashscreen(true);
);
if((device.android OR device.chrome OR device.safari OR device.iphone) AND videointerface_firstvideoscene,
set(scene[get(xml.scene)].scenevideopausedonstart, true);
);
if(device.panovideosupport == false OR (device.html5 AND device.ie AND device.mobile),
set(plugin[get(videointerface_video)].panovideo, false);
set(plugin[get(videointerface_video)].width, 100%);
set(plugin[get(videointerface_video)].height, prop);
set(plugin[get(videointerface_video)].visible,true);
,
set(plugin[get(videointerface_video)].panovideo, true);
set(plugin[get(videointerface_video)].width, '');
set(plugin[get(videointerface_video)].height, '');
set(plugin[get(videointerface_video)].visible, false);
if(scene[get(xml.scene)].planar,
set(image.hfov, 1.0);
set(image.vfov, 0.0);
updateobject(true, true);
);
);
if(scene[get(xml.scene)].scenevideolowresurl != '' AND (device.html5 AND (device.mobile OR device.tablet OR device.safari)),
copy(current_videoscene_url, scene[get(xml.scene)].scenevideolowresurl);
copy(current_videoscene_posterurl, scene[get(xml.scene)].scenevideolowresposterurl);
set(current_videoscene_quality, 'low');
,
copy(current_videoscene_url, scene[get(xml.scene)].scenevideourl);
copy(current_videoscene_posterurl, scene[get(xml.scene)].scenevideoposterurl);
set(current_videoscene_quality, 'high');
);
set(videoscene_url_found, false);
txtsplit(get(current_videoscene_url), '|', arr_videoscene);
for(set(scenevideoi,0), scenevideoi LT arr_videoscene.count, inc(scenevideoi),
indexoftxt(indexval, get(arr_videoscene[get(scenevideoi)].value), 'indexdata/');
if(indexval LT 0,
txtadd(current_videoscene_url_update,'indexdata/',get(arr_videoscene[get(scenevideoi)].value));
indexoftxt(indexval2, get(current_videoscene_url_update), get(plugin[get(videointerface_video)].videourl));
,
indexoftxt(indexval2, get(arr_videoscene[get(scenevideoi)].value), get(plugin[get(videointerface_video)].videourl));
);
if(indexval2 GE 0,
set(videoscene_url_found, true);
);
delete(indexval,indexval2,current_videoscene_url_update);
);
ifnot(videoscene_url_found,
if(plugin[get(videointerface_video)].issetup,
stopdelayedcall(videointerface_video_call);
plugin[get(videointerface_video)].playvideo(get(current_videoscene_url), get(current_videoscene_posterurl), get(scene[get(xml.scene)].scenevideopausedonstart), get(videoscenestarttime));
set(videoscenestarttime, 0);
set(scene[get(xml.scene)].scenevideopausedonstart, false);
events.dispatch(videointerfaceactivated);
,
delayedcall(videointerface_videostart_call, 0.2, videointerface_onSceneStart();add(plugin[get(videointerface_video)].delay, 0.2););
);
,
if(plugin[get(videointerface_video)].videourl,
if(plugin[get(videointerface_video)].isvideoready,
stopdelayedcall(videointerface_video_call);
events.dispatch(videointerfaceready);
if(scene[get(xml.scene)].scenevideopausedonstart OR ((device.android OR device.chrome OR device.safari OR device.iphone) AND videointerface_firstvideoscene),
if(videointerface_autostart !== true,
if(videoscenestarttime GT 0,
plugin[get(videointerface_video)].seek(videoscenestarttime);
set(videoscenestarttime, 0);
);
plugin[get(videointerface_video)].play();
delayedcall(0,plugin[get(videointerface_video)].pause(););
,
plugin[get(videointerface_video)].pause();
);
set(scene[get(xml.scene)].scenevideopausedonstart, false);
,
if(videoscenestarttime GT 0,
plugin[get(videointerface_video)].seek(videoscenestarttime);
set(videoscenestarttime, 0);
);
plugin[get(videointerface_video)].play();
);
,
delayedcall(videointerface_videostart_call, 0.2, videointerface_onSceneStart();add(plugin[get(videointerface_video)].delay, 0.2););
);
);
);
set(videointerface_firstvideoscene, false);
set(videointerface_autostart, true);
events.dispatch(onvideointerfaceinit);
delete(current_videoscene_url,current_videoscene_posterurl,videoscene_url_found,arr_videoscene);
,
delayedcall(videointerface_videostart_call, 0.1, videointerface_onSceneStart(););
);
</action>
<!-- Keyboard management
* use the keyboard +/- keys to zoom in/out
* use the keyboard CTRL+0 keys to reset the default panorama view
-->
<control keycodesin="107,187" keycodesout="109,189" />
<krpano tour_ctrlPressed="false"/>
<events name="keycontrolZoomEvents" onkeydown="onKDZ" onkeyup="onKUZ" keep="true"/>
<action name="onKDZ">if(keycode==17,set(tour_ctrlPressed,true);,if(tour_ctrlPressed==true,if(keycode==96,hideTooltip();lookto(get(panoview.h),get(panoview.v),get(panoview.fov)););););</action>
<action name="onKUZ">if(keycode==17,set(tour_ctrlPressed,false););</action>
<!-- Indicate if a scene is seen or not - dispatch an event if the state is changed -->
<events name="sceneSeenEvents" onnewpano="changeSeenState" keep="true"/>
<krpano tour_nbseenscenes="0"/>
<action name="changeSeenState">
ifnot (scene[get(xml.scene)].seen,
set(scene[get(xml.scene)].seen, true);
events.dispatch(onSeenStateChanged);
inc(tour_nbseenscenes);
if (tour_nbseenscenes == scene.count,
events.dispatch(onallsceneseen);
);
);
</action>
<!-- Cursors management -->
<cursors standard="" dragging="" moving="" />
<events name="cursorsEvents" onnewpano="setCursor" oncontrolmodechanged="setCursor" keep="true" devices="desktop" />
<action name="setCursor">
if (tour_controlmodemousetype == moveto,
setarrowcursors();
,
sethandcursors();
);
</action>
<!-- Change Cursors Appearance -->
<action name="setarrowcursors">
if (device.flash,
ifnot(device.mac,
set(cursors.url , %FIRSTXML%/graphics/cursors_move.png);
set(cursors.type , 8way);
set(cursors.move , 0|0|16|16);
set(cursors.drag , 16|0|16|16);
set(cursors.arrow_u , 32|0|16|16);
set(cursors.arrow_d , 48|0|16|16);
set(cursors.arrow_l , 64|0|16|16);
set(cursors.arrow_r , 80|0|16|16);
set(cursors.arrow_lu, 96|0|16|16);
set(cursors.arrow_ru, 112|0|16|16);
set(cursors.arrow_rd, 128|0|16|16);
set(cursors.arrow_ld, 144|0|16|16);
);
,
js(kpanotour.Cursors.setMoveCursor());
);
</action>
<action name="sethandcursors">
if (device.flash,
ifnot(device.mac,
set(cursors.url , %FIRSTXML%/graphics/cursors_drag.png);
set(cursors.type, 2way);
set(cursors.move, 0|0|32|32);
set(cursors.drag, 32|0|32|32);
);
,
js(kpanotour.Cursors.setDragCursor());
);
</action>
</krpano>