<?xml version="1.0" encoding="UTF-8"?>
<krpano version="1.19-pr16">

    
  <!-- Spot Style - Default Point Spot Style -->


  <style name="IconDefaultPointSpotStyle"
         url="%FIRSTXML%/spots/hotspot_animated_user_defaultpoint0.png"
         visible="false"
         frame="0"
         lastframe="19"
         framewidth="64"
         frameheight="64"
         stopspotsequence="false"
         crop="0|0|64|64"
         edge="center"
         onloaded="startspotanimation(0.1);"
         onhover="onhoverIconDefaultPointSpotStyle"
         onover="onoverIconDefaultPointSpotStyle"
         onout="onoutIconDefaultPointSpotStyle"


         />
  <action name="onhoverIconDefaultPointSpotStyle">
    showtooltip('hotspot');
  </action>
  <action name="onoverIconDefaultPointSpotStyle">


pauseautorotation(forcehotspot);

  </action>
  <action name="onoutIconDefaultPointSpotStyle">
    hideTooltip();


resumeautorotation(forcehotspot);

  </action>



  <!-- unsupported kind of display : PointMap -->


  
  <!-- Spot Style - The Ponti Rock Club &amp; Residences -->
  <style name="PolygonThePontiRockClub&amp;Residences"
           visible="false"
           bordercolor="0xff0206"
           fillcolor="0xff744d"
           borderwidth="2"
           borderalpha="1"
           fillalpha="0"
           capture="false"
           onhover="onhoverPolygonThePontiRockClub&amp;Residences"
           onover="onoverPolygonThePontiRockClub&amp;Residences"
           onout="onoutPolygonThePontiRockClub&amp;Residences"
           />
  <action name="onhoverPolygonThePontiRockClub&amp;Residences">
    showTooltip('hotspot');
  </action>

  <action name="onoverPolygonThePontiRockClub&amp;Residences">
    set(bordercolor, 0xffffff);
    set(fillcolor, 0xffff12);
    set(borderalpha, 1);
    set(fillalpha, 0.59999999999999998);
    set(borderwidth, 2);pauseautorotation(forcehotspot);

  </action>

  <action name="onoutPolygonThePontiRockClub&amp;Residences">

    set(bordercolor, 0xff0206);
    set(fillcolor, 0xff744d);
    set(borderalpha, 1);
    set(fillalpha, 0);

    set(borderwidth, 2);
    hideTooltip();resumeautorotation(forcehotspot);

  </action>



  
  <!-- Spot Style - Bugis Lodge -->
  <style name="PolygonBugisLodge"
           visible="false"
           bordercolor="0xff0206"
           fillcolor="0xff744d"
           borderwidth="2"
           borderalpha="1"
           fillalpha="0"
           capture="false"
           onhover="onhoverPolygonBugisLodge"
           onover="onoverPolygonBugisLodge"
           onout="onoutPolygonBugisLodge"
           />
  <action name="onhoverPolygonBugisLodge">
    showTooltip('hotspot');
  </action>

  <action name="onoverPolygonBugisLodge">
    set(bordercolor, 0xffffff);
    set(fillcolor, 0x2667ff);
    set(borderalpha, 1);
    set(fillalpha, 0.7000076295109483);
    set(borderwidth, 2);pauseautorotation(forcehotspot);

  </action>

  <action name="onoutPolygonBugisLodge">

    set(bordercolor, 0xff0206);
    set(fillcolor, 0xff744d);
    set(borderalpha, 1);
    set(fillalpha, 0);

    set(borderwidth, 2);
    hideTooltip();resumeautorotation(forcehotspot);

  </action>



    
  <!-- Spot Style - Text Info -->


  <style name="IconTextInfo"
         url="%FIRSTXML%/spots/hotspot_information_sequence_user_defaultpoint1.png"
         visible="false"
         frame="0"
         lastframe="9"
         framewidth="50"
         frameheight="50"
         stopspotsequence="false"
         crop="0|0|50|50"
         edge="center"
         zoom="true"

         onloaded="startspotanimation(0.1);if(scene[get(xml.scene)].planar,if(zoom,set(zoom, false);););"
         onhover="onhoverIconTextInfo"
         onover="onoverIconTextInfo"
         onout="onoutIconTextInfo"

         height="22"
         width="22"
         />
  <action name="onhoverIconTextInfo">
    showtooltip('hotspot');
  </action>
  <action name="onoverIconTextInfo">


pauseautorotation(forcehotspot);

  </action>
  <action name="onoutIconTextInfo">
    hideTooltip();


resumeautorotation(forcehotspot);

  </action>



  
  <!-- Spot Style - The Lagoon -->
  <style name="PolygonTheLagoon"
           visible="false"
           bordercolor="0xff0206"
           fillcolor="0xff744d"
           borderwidth="2"
           borderalpha="1"
           fillalpha="0"
           capture="false"
           onhover="onhoverPolygonTheLagoon"
           onover="onoverPolygonTheLagoon"
           onout="onoutPolygonTheLagoon"
           />
  <action name="onhoverPolygonTheLagoon">
    showTooltip('hotspot');
  </action>

  <action name="onoverPolygonTheLagoon">
    set(bordercolor, 0xffffff);
    set(fillcolor, 0xff7802);
    set(borderalpha, 1);
    set(fillalpha, 0.7000076295109483);
    set(borderwidth, 2);pauseautorotation(forcehotspot);

  </action>

  <action name="onoutPolygonTheLagoon">

    set(bordercolor, 0xff0206);
    set(fillcolor, 0xff744d);
    set(borderalpha, 1);
    set(fillalpha, 0);

    set(borderwidth, 2);
    hideTooltip();resumeautorotation(forcehotspot);

  </action>



  
  <!-- Spot Style - Toro Kelor Hotel -->
  <style name="PolygonToroKelorHotel"
           visible="false"
           bordercolor="0xff0206"
           fillcolor="0xff744d"
           borderwidth="2"
           borderalpha="1"
           fillalpha="0"
           capture="false"
           onhover="onhoverPolygonToroKelorHotel"
           onover="onoverPolygonToroKelorHotel"
           onout="onoutPolygonToroKelorHotel"
           />
  <action name="onhoverPolygonToroKelorHotel">
    showTooltip('hotspot');
  </action>

  <action name="onoverPolygonToroKelorHotel">
    set(bordercolor, 0xffffff);
    set(fillcolor, 0xffda52);
    set(borderalpha, 1);
    set(fillalpha, 0.7000076295109483);
    set(borderwidth, 2);pauseautorotation(forcehotspot);

  </action>

  <action name="onoutPolygonToroKelorHotel">

    set(bordercolor, 0xff0206);
    set(fillcolor, 0xff744d);
    set(borderalpha, 1);
    set(fillalpha, 0);

    set(borderwidth, 2);
    hideTooltip();resumeautorotation(forcehotspot);

  </action>



  
  <!-- Spot Style -  Guso Lekko  -->
  <style name="PolygonGusoLekko"
           visible="false"
           bordercolor="0xff0206"
           fillcolor="0xff744d"
           borderwidth="2"
           borderalpha="1"
           fillalpha="0"
           capture="false"
           onhover="onhoverPolygonGusoLekko"
           onover="onoverPolygonGusoLekko"
           onout="onoutPolygonGusoLekko"
           />
  <action name="onhoverPolygonGusoLekko">
    showTooltip('hotspot');
  </action>

  <action name="onoverPolygonGusoLekko">
    set(bordercolor, 0xffffff);
    set(fillcolor, 0x5cff26);
    set(borderalpha, 1);
    set(fillalpha, 0.7000076295109483);
    set(borderwidth, 2);pauseautorotation(forcehotspot);

  </action>

  <action name="onoutPolygonGusoLekko">

    set(bordercolor, 0xff0206);
    set(fillcolor, 0xff744d);
    set(borderalpha, 1);
    set(fillalpha, 0);

    set(borderwidth, 2);
    hideTooltip();resumeautorotation(forcehotspot);

  </action>



  
  <!-- Spot Style - Bay Hotel -->
  <style name="PolygonBayHotel"
           visible="false"
           bordercolor="0xff0206"
           fillcolor="0xff744d"
           borderwidth="2"
           borderalpha="1"
           fillalpha="0"
           capture="false"
           onhover="onhoverPolygonBayHotel"
           onover="onoverPolygonBayHotel"
           onout="onoutPolygonBayHotel"
           />
  <action name="onhoverPolygonBayHotel">
    showTooltip('hotspot');
  </action>

  <action name="onoverPolygonBayHotel">
    set(bordercolor, 0xffffff);
    set(fillcolor, 0x9ad4ff);
    set(borderalpha, 1);
    set(fillalpha, 0.7000076295109483);
    set(borderwidth, 2);pauseautorotation(forcehotspot);

  </action>

  <action name="onoutPolygonBayHotel">

    set(bordercolor, 0xff0206);
    set(fillcolor, 0xff744d);
    set(borderalpha, 1);
    set(fillalpha, 0);

    set(borderwidth, 2);
    hideTooltip();resumeautorotation(forcehotspot);

  </action>



  
  <!-- Spot Style - Cliff Hotel -->
  <style name="PolygonCliffHotel"
           visible="false"
           bordercolor="0xff0206"
           fillcolor="0xff744d"
           borderwidth="2"
           borderalpha="1"
           fillalpha="0"
           capture="false"
           onhover="onhoverPolygonCliffHotel"
           onover="onoverPolygonCliffHotel"
           onout="onoutPolygonCliffHotel"
           />
  <action name="onhoverPolygonCliffHotel">
    showTooltip('hotspot');
  </action>

  <action name="onoverPolygonCliffHotel">
    set(bordercolor, 0xffffff);
    set(fillcolor, 0xffb583);
    set(borderalpha, 1);
    set(fillalpha, 0.7000076295109483);
    set(borderwidth, 2);pauseautorotation(forcehotspot);

  </action>

  <action name="onoutPolygonCliffHotel">

    set(bordercolor, 0xff0206);
    set(fillcolor, 0xff744d);
    set(borderalpha, 1);
    set(fillalpha, 0);

    set(borderwidth, 2);
    hideTooltip();resumeautorotation(forcehotspot);

  </action>



  
  <!-- Spot Style - Desa Kokotuku -->
  <style name="PolygonDesaKokotuku"
           visible="false"
           bordercolor="0xff0206"
           fillcolor="0xff744d"
           borderwidth="2"
           borderalpha="1"
           fillalpha="0"
           capture="false"
           onhover="onhoverPolygonDesaKokotuku"
           onover="onoverPolygonDesaKokotuku"
           onout="onoutPolygonDesaKokotuku"
           />
  <action name="onhoverPolygonDesaKokotuku">
    showTooltip('hotspot');
  </action>

  <action name="onoverPolygonDesaKokotuku">
    set(bordercolor, 0xffffff);
    set(fillcolor, 0xffb1ff);
    set(borderalpha, 1);
    set(fillalpha, 0.7000076295109483);
    set(borderwidth, 2);pauseautorotation(forcehotspot);

  </action>

  <action name="onoutPolygonDesaKokotuku">

    set(bordercolor, 0xff0206);
    set(fillcolor, 0xff744d);
    set(borderalpha, 1);
    set(fillalpha, 0);

    set(borderwidth, 2);
    hideTooltip();resumeautorotation(forcehotspot);

  </action>



<!-- ********** -->
<!-- Loading Information -->
<!-- id : loaderinfo -->
<!-- ********** -->

  <events name="loaderinfoevent" onxmlcomplete="loaderinfoupdate();" keep="true"/>

  <action name="loaderinfoupdate">
    if(scene[get(xml.scene)].video,
      set(layer[loaderinfotextfield].visible, false);
    ,
      if (progress.progress == 1,
        delayedcall(0.5, set(layer[loaderinfotextfield].visible, false); );
      ,
        set(layer[loaderinfotextfield].visible, true);
      );
      mul(progresstext, get(progress.progress),100);
      roundval(progresstext);
      txtadd(progresstext, get(progresstext), %);
      set(layer[loaderinfotextfield].html, get(progresstext));
      ifnot(progress.progress GE 1, delayedcall(0.01, loaderinfoupdate() ));
    );
  </action>

  <layer name="loaderinfotextfield"
         keep="true"
         zorder="1"
         type="text"
         align="center"
         x="0"
         y="0"
         bgborder="0"
         bg="false"
         capture="false"
         handcursor="false"
         interactivecontent="false"
         alpha="1"
         visible="true"
         css="
         text-align:center;
         color:#ffffff;
         font-family:Arial;
         font-weight:bold;
         font-size:16px;
         "
  />

<!-- ********** -->
<!-- Panorama Combobox -->
<!-- id : panoramacombobox -->
<!-- ********** -->

  <!-- path to the scrollarea plugin -->
  <panoramacombobox_kr_scrollareaplugin
    url.html5="%FIRSTXML%/graphics/scrollarea.js"
    url.flash="%FIRSTXML%/graphics/scrollarea.swf"
    />

  <!-- core internal layer styles -->
  <style name="panoramacombobox_kr_container_style" type="container" maskchildren="true" bgcapture="true" visible="false" onclick="panoramacombobox_kr_onclick_event();" mergedalpha="false" alpha="1.0" />
  <style name="panoramacombobox_kr_marker_style" type="text" align="righttop" edge="center" html="▼" havemarkersize="false" onautosized="set(havemarkersize,true);" mergedalpha="false" alpha="1.0" />
  <style name="panoramacombobox_kr_item_style"  type="text" wordwrap="false" vcenter="true" align="lefttop" onover="if(!combbox_item_pressed,onoveritem());asyncloop(hovering,,if(!combbox_item_pressed,onoutitem()));" ondown="onoveritem(); set(combbox_item_pressed,true);" onup="onoutitem(); set(combbox_item_pressed,false);" onoveritem="set(bg,true);" onoutitem="set(bg,false);" mergedalpha="false" alpha="1.0" />



  <panoramacombobox_kr_design name="default" margin="2" open_close_speed="0.25">
    <!-- default design - white box with black text and blue selection -->
    <style name="panoramacombobox_kr_container_style" bgalpha="1.0" bgcolor="0xFFFFFF" bgborder="1 0xFFFFFF 0.5" bgroundedge="1" bgshadow="0 1 3 0x000000 1.0" />
    <style name="panoramacombobox_kr_marker_style" css="color:#FFFFFF;" bg="false" txtshadow="0 0 2 0x000000 1" />
    <style name="panoramacombobox_kr_item_style" css="color:#222222;" padding="4" bg="false" bgcolor="0xC7E4FC" bgalpha="1.0" bgroundedge="1" txtshadow="0 0 1 0xFFFFFF 1.0" />
  </panoramacombobox_kr_design>




  <!-- internal events -->
  <events name="panoramacombobox_kr_xml_plugin_events" keep="true"
    onxmlcomplete="panoramacombobox_kr_parse_xml_elements();"
    onresize="panoramacombobox_kr_closelist();"
    />

  <!-- krpano version check -->
  <action name="panoramacombobox_kr_versioncheck" autorun="preinit">
    if(build LT '2017-09-13',
      error('combobox.xml - too old krpano version!');
      set(events[panoramacombobox_kr_xml_plugin_events].name, null);
      set(action[panoramacombobox_kr_addComboboxLayer].content, '');
      set(action[panoramacombobox_kr_removeComboboxLayer].content, '');
    );
  </action>

  <action name="panoramacombobox_kr_parse_xml_elements" scope="local">
        copy(cb, combobox["panoramacombobox"]);
        if(cb AND cb.name AND cb.parsed != true,
          set(cb.parsed, true);
          panoramacombobox_kr_addComboboxLayer(get(cb.name), get(cb.design));
          copy(ly, layer[get(cb.name)]);
          copyattributes(get(ly), get(cb));
          set(ly.keep, true);
          def(item_cnt, integer, get(cb.item.count));
          if(item_cnt GT 0,
            def(item_i, integer, 0);
            loop(item_i LT  item_cnt,
              panoramacombobox_kr_additem(get(ly.name), get(cb.item[get(item_i)].name), get(cb.item[get(item_i)].caption), get(cb.item[get(item_i)].onclick));
              inc(item_i);
            );
          );
        );
  </action>

  <!-- dynamically add a combobox layer -->
  <action name="panoramacombobox_kr_addComboboxLayer" scope="local" args="cbname, design">
    <!-- create the layer -->
    addlayer(get(cbname));
    copy(cb, layer[get(cbname)]);
    set(cb.keep, true);

    <!-- copy the design settings (or set defaults) -->
    if(!panoramacombobox_kr_design[get(design)].name, set(design,'default'));
    copy(cb.cbdesign, panoramacombobox_kr_design[get(design)]);
    calc(cb.margin, cb.cbdesign.margin !== null ? cb.cbdesign.margin : 2);
    calc(cb.open_close_speed, cb.cbdesign.open_close_speed !== null ? cb.cbdesign.open_close_speed : 0.25);
    <!-- load the styles and copy the design style settings -->
    cb.loadstyle(panoramacombobox_kr_container_style);
    copyattributes(get(cb), get(cb.cbdesign.style[panoramacombobox_kr_container_style]));

    <!-- add/build/map actions -->
    calc(cb.addItem,          'panoramacombobox_kr_additem(' + cbname + ', null, "%%1", "%%2");');
    calc(cb.addNamedItem,     'panoramacombobox_kr_additem(' + cbname + ', "%%1", "%%2", "%%3");');
    calc(cb.addIdItem,        'panoramacombobox_kr_additem(' + cbname + ', "%%1", "%%2", "%%3");');
    calc(cb.selectItem,       'panoramacombobox_kr_finditem(' + cbname + ', "%%1", __cb_fi); if(__cb_fi GE 0, panoramacombobox_kr_selectitem(' + cbname + ', get(__cb_fi))); delete(__cb_fi);');
    calc(cb.selectItemByName, 'panoramacombobox_kr_selectitem(' + cbname + ', "%%1");');
    calc(cb.selectIdItem,     'panoramacombobox_kr_selectitem(' + cbname + ', "%%1");');
    calc(cb.removeAll,        'panoramacombobox_kr_removeitems(' + cbname + ');');
    calc(cb.openList,         'panoramacombobox_kr_openlist(' + cbname + ');');
    calc(cb.closeList,        'panoramacombobox_kr_closelist(' + cbname + ');');

    <!-- create sub-layers -->
    def(saname, string, 'panoramacombobox_kr_%1_scrollarea');
    addlayer(get(saname));
    copy(sa, layer[get(saname)]);
    copy(sa.parent, cbname);
    copy(sa.url, panoramacombobox_kr_scrollareaplugin.url);
    copy(sa.keep, true);
    copy(sa.align, lefttop);
    set(sa.direction, v);
    set(sa.enabled, false);
    set(sa.width, 100%);
    set(sa.height, 100%);
    copy(cb.scrollarea, sa);

    def(mkname, string, 'panoramacombobox_kr_%1_marker');
    addlayer(get(mkname));
    copy(mk, layer[get(mkname)]);
    copy(mk.parent, saname);
    copy(mk.keep, true);
    mk.loadstyle(panoramacombobox_kr_marker_style);
    copyattributes(get(mk), get(cb.cbdesign.style[panoramacombobox_kr_marker_style]));
    copy(cb.marker, mk);

    <!-- item data array -->
    cb.createarray('item');

    <!-- item autosizing information -->
    set(cb.autosize_i, 0);
    set(cb.autosize_cnt, 0);
    set(cb.autosize_max_w, 0);
    set(cb.autosize_max_h, 0);

    set(cb.lastselecteditemindex, 0);
    set(cb.selecteditemindex, 0);
  </action>


  <!-- dynamically remove a combobox element -->
  <action name="panoramacombobox_kr_removeComboboxLayer" scope="local" args="cbname">
    if(layer[get(cbname)],
      copy(cb, layer[get(cbname)]);
      if(cb === global.openedcombobox, delete(global.openedcombobox));
      if(cb,
        removelayer(get(cbname), true);
      );
    );
  </action>


  <!-- default onclick event for combobox elements: open the list -->
  <action name="panoramacombobox_kr_onclick_event">
    panoramacombobox_kr_openlist(get(name));
  </action>


  <!-- dynamically add items -->
  <action name="panoramacombobox_kr_additem" scope="local" args="cbname, itemname, itemcaption, itemonclick">
    copy(cb, layer[get(cbname)]);

    <!-- when no item name is set, generate an automatic one -->
    if(itemname === null, calc(itemname, 'autoname_' + cb.item.count); );

    <!-- save the item caption and onclick event -->
    copy(cb.item[get(itemname)].caption, itemcaption);
    copy(cb.item[get(itemname)].onclick, itemonclick);

    inc(cb.autosize_cnt);

    <!-- create the item layer/textfield -->
    calc(itemlayername, 'comboboxitem_' + cbname + '_' + itemname);
    addlayer(get(itemlayername));
    copy(li, layer[get(itemlayername)]);



    li.loadstyle(panoramacombobox_kr_item_style);
    copyattributes(get(li), get(cb.cbdesign.style[panoramacombobox_kr_item_style]));




    copy(li.parent, cb.scrollarea.name);
    copy(li.keep, true);
    copy(li.cblayername, cb.name);
    copy(li.itemname, itemname);
    copy(li.html, itemcaption);
    set(li.onautosized, delayedcall(0,panoramacombobox_kr_item_autosize_update()) );
    set(li.onclick, panoramacombobox_kr_item_onclick() );

    copy(cb.item[get(itemname)].itemlayername, itemlayername);
  </action>


  <!-- onautosized callback from the item textfield -->
  <action name="panoramacombobox_kr_item_autosize_update" scope="local">
    copy(cb, layer[get(caller.cblayername)]);
    inc(cb.autosize_i);
    Math.max(cb.autosize_max_w, caller.width);
    Math.max(cb.autosize_max_h, caller.height);
    if(cb.autosize_i == cb.autosize_cnt, panoramacombobox_kr_align_items(get(cb.name)); );
  </action>


  <!-- align the image and set the combobox size -->
  <action name="panoramacombobox_kr_align_items" scope="local" args="cbname">
    copy(cb, layer[get(cbname)]);
    if(cb.marker.havemarkersize == false OR cb.scrollarea.loaded == false,
      <!-- wait until everything is ready -->
      delayedcall(calc(cb.name + '_waitformarkersize'), 0.01, panoramacombobox_kr_align_items(get(cbname)) );
      ,
      <!-- set the item positions and the combobox size -->
      if(global.openedcombobox === cb, panoramacombobox_kr_closelist() );
      copy(sa, cb.scrollarea);
      calc(itemwidth, cb.margin GT 0 ? -2 * cb.margin : '100%');
      copy(mk_w, cb.marker.width);
      copy(item_cnt, cb.autosize_cnt);

      for(def(item_i, integer, 0), item_i LT item_cnt, inc(item_i),
        copy(li, layer[get(cb.item[get(item_i)].itemlayername)]);
        set(li.x, get(cb.margin));
        copy(li.width, itemwidth);
        copy(li.height, cb.autosize_max_h);
        calc(li.y, cb.margin + item_i * (cb.autosize_max_h + cb.margin));
      );

      if(cb.width == null OR cb.width == cb.lastautosizedwidth,
        <!-- no combobox width (or an autosized width) set - set the largest item width -->
        calc(cb.width, cb.margin + cb.autosize_max_w + 2 + mk_w + cb.margin);
        copy(cb.lastautosizedwidth, cb.width);
      );

      calc(cb.height, 2*cb.margin + cb.autosize_max_h);
      calc(sa.height, cb.margin + item_cnt*(cb.margin+cb.autosize_max_h));
      calc(sa.y, -(cb.selecteditemindex * (cb.autosize_max_h + cb.margin)));
      calc(cb.marker.x, cb.margin + mk_w/2);
      tween(layer[get(cb.name)].marker.y, calc(cb.margin + cb.selecteditemindex*(cb.autosize_max_h + cb.margin) + cb.autosize_max_h/2), 0.1);
    );
  </action>


  <!-- default onclick event for items: select the current item, close the list and call the item onclick event -->
  <action name="panoramacombobox_kr_item_onclick" scope="local">
    copy(cb, layer[get(caller.cblayername)]);
    copy(itemname, caller.itemname);
    panoramacombobox_kr_selectitem(get(cb.name), get(itemname));

    if(global.openedcombobox === cb, panoramacombobox_kr_closelist() );

    if(cb.item[get(itemname)].onclick,
      <!-- call the onclick event after the combobox has closed -->
      delayedcall(get(cb.open_close_speed),
        copy(cb.curitem, cb.item[get(itemname)]);
        callwith(cb,
          cb.item[get(itemname)].onclick();
        );
      );
    );
  </action>


  <!-- select an item -->
  <action name="panoramacombobox_kr_selectitem" scope="local" args="cbname, itemname">
    if(global.combbox_item_pressed != true,
      copy(cb, layer[get(cbname)]);
      copy(cb.lastselecteditemindex, cb.selecteditemindex);
      copy(cb.selecteditemindex, cb.item[get(itemname)].index);
      <!-- call onchange event on selection change -->
      if(cb.lastselecteditemindex != cb.selecteditemindex AND cb.onchange,
        callwith(cb, onchange() );
      );
      if(global.openedcombobox === cb,
        <!-- when opened, just close to the selected item -->
        panoramacombobox_kr_closelist();
        ,
        if(layer[get(cbname)].scrollarea.loaded,
          layer[get(cbname)].scrollarea.stopscrolling();
          calc(offset, cb.selecteditemindex*(cb.autosize_max_h + cb.margin));
          tween(layer[get(cbname)].marker.y, calc(cb.margin + offset + cb.autosize_max_h/2), 0);
          tween(layer[get(cbname)].scrollarea.y, calc(-offset), 0, default, layer[get(cbname)].scrollarea.update(); );
        );
      );
    );
  </action>


  <!-- find an item by its caption, the global variable defined in 'returnvariable' will contain the index  -->
  <action name="panoramacombobox_kr_finditem" scope="local" args="cbname, itemcaption, returnvariable">
    copy(cb, layer[get(cbname)]);
    copy(item_cnt, cb.item.count);
    set(calc('global.' + returnvariable), -1);
    for(def(item_i, integer, 0), item_i LT  item_cnt, inc(item_i),
      if(cb.item[get(item_i)].caption == itemcaption,
        copy(calc('global.' + returnvariable), item_i);
        copy(item_i, item_cnt);
      );
    );
  </action>


  <!-- remove all items (to be able to add new ones) -->
  <action name="panoramacombobox_kr_removeitems" scope="local" args="cbname">
    copy(cb, layer[get(cbname)]);
    if(global.openedcombobox === cb, panoramacombobox_kr_closelist() );

    <!-- remove all item layers -->
    calc(item_i, cb.item.count - 1);
    loop(item_i GE 0,
      removelayer(get(cb.item[get(item_i)].itemlayername));
      dec(item_i);
    );

    <!-- reset the item information -->
    set(cb.item.count, 0);
    set(cb.autosize_i,0);
    set(cb.autosize_cnt, 0);
    set(cb.autosize_max_w, 0);
    set(cb.autosize_max_h, 0);
    set(cb.selecteditemindex, 0);
    set(cb.lastselecteditemindex, 0);
    if(cb.width == cb.lastautosizedwidth, set(cb.width, null));
  </action>


  <!-- open the combobox list -->
  <action name="panoramacombobox_kr_openlist" scope="local" args="cbname">
    <!-- if another combobox is already open, close that one first -->
    if(global.openedcombobox !== null, panoramacombobox_kr_closelist() );

    copy(cb, layer[get(cbname)]);
    copy(global.openedcombobox, cb);

    <!-- find the available screen space above or below the combobox -->
    calc(cbheight, 2*cb.margin + cb.autosize_max_h);
    set(lx1, 0);
    set(ly1, 0);
    copy(lx2, cb.pixelwidth);
    copy(ly2, cbheight);
    layertoscreen(get(cbname), lx1,ly1, lx1,ly1);
    layertoscreen(get(cbname), lx2,ly2, lx2,ly2);
    calc(space_above, ly1 - area.pixely);
    calc(space_below, area.pixelheight - (ly2 - area.pixely));

    <!-- the required space for full opening: -->
    calc(openheight, cb.margin + cb.autosize_cnt*(cb.margin+cb.autosize_max_h) );

    <!-- vertical centered alignment? -->
    calc(cb_edge, cb.edge ? cb.edge : cb.align);
    calc(iscentered, cb_edge == 'left' OR cb_edge == 'center' OR cb_edge == 'right');
    if(iscentered,
      calc(openheight_max, space_above + space_below);
      ,
      Math.max(openheight_max, space_above, space_below);
    );

    <!-- limit the height to the available space (minus some margin) -->
    Math.min(openheight, calc(openheight_max + cbheight - 20));

    <!-- need vertical offset? (depending on the available space and the align/edge setting) -->
    set(yoffset, null);
    calc(top_overflow, -ly1 + area.pixely + openheight/2);
    calc(bottom_overflow, ly2 - area.pixely + openheight/2 - area.pixelheight);
    if(cb.parent,
      <!-- no vertical offset inside other layers, do only a height clipping -->
      Math.max(max_overflow, top_overflow, bottom_overflow, 0);
      sub(openheight, max_overflow);
      ,
      if(iscentered,
        if(openheight GE (area.pixelheight - 20),
          set(yoffset,0);
          ,
          if(top_overflow GT 0, calc(yoffset, cb.y + top_overflow); );
          if(bottom_overflow GT 0, calc(yoffset, cb.y - bottom_overflow); );
        );
      ,
        indexoftxt(isbottomalign, get(cb_edge), 'bottom');
        if(space_above GT space_below,
          if(isbottomalign LT 0, calc(yoffset, cb.y - openheight + cbheight); );
          ,
          if(isbottomalign GE 0, calc(yoffset, cb.y - openheight + cbheight); );
        );
      );
    );
    if(yoffset != null,
      copy(cb.ybackup, cb.y);
      tween(layer[get(cbname)].y, calc(yoffset), get(cb.open_close_speed));
    );

    <!-- center the opened list at the selected item -->
    calc(centeritem_y, -1 * (cb.margin + cb.selecteditemindex*(cb.margin+cb.autosize_max_h) + cb.autosize_max_h/2 - openheight/2));
    clamp(centeritem_y, calc(openheight - cb.scrollarea.height), 0);

    <!-- apply the changes now -->
    tween(layer[get(cbname)].height, get(openheight), get(cb.open_close_speed));
    tween(layer[get(cbname)].scrollarea.y, get(centeritem_y), get(cb.open_close_speed), default, layer[get(cbname)].scrollarea.update(); );

    <!-- special html5/flash case:
       rotating textfields (the marker symbol here) are not possible in
       flash (a flashplayer limitation), so use a rotated symbol instead.
    -->
    if(device.html5,
      tween(layer[get(cbname)].marker.rotate, 90, get(cb.open_close_speed));
      ,
      set(layer[get(cbname)].marker.html, '◀');
    );

    <!-- enable the scrollarea to allow the user to drag it -->
    set(cb.scrollarea.enabled, true);

    <!-- install a global onmousedown event to close the list when clicking at the pano -->
    set(events[panoramacombobox_kr_xml_plugin_events].onmousedown, panoramacombobox_kr_closelist() );
  </action>


  <!-- close the current open list -->
  <action name="panoramacombobox_kr_closelist" scope="local">
    if(global.openedcombobox !== null,
      copy(cb, global.openedcombobox);
      delete(global.openedcombobox);

      <!-- clear the global onmousedown event -->
      set(events[panoramacombobox_kr_xml_plugin_events].onmousedown, null);

      <!-- disable the dragging -->
      set(cb.scrollarea.enabled, false);

      <!-- closing animations -->
      calc(offset, cb.selecteditemindex*(cb.autosize_max_h + cb.margin));
      if(cb.ybackup !== null, tween(cb.y, get(cb.ybackup), get(cb.open_close_speed)));
      layer[get(cb.name)].scrollarea.stopscrolling();
      tween(layer[get(cb.name)].height, calc(2*cb.margin + cb.autosize_max_h), get(cb.open_close_speed));
      tween(layer[get(cb.name)].scrollarea.y, calc(-offset), get(cb.open_close_speed), default, layer[get(cb.name)].scrollarea.update(); );
      tween(layer[get(cb.name)].marker.y, calc(cb.margin + offset + cb.autosize_max_h/2), get(cb.open_close_speed));
      <!-- special html5/flash case: rotate marker or change symbol -->
      if(device.html5,
        tween(layer[get(cb.name)].marker.rotate, 0, get(cb.open_close_speed));
        ,
        set(layer[get(cb.name)].marker.html, '▼');
      );
    );
  </action>

  <events name="panoramacomboboxStartTourEvents" onTourStart="set(layer[panoramacombobox].isStarted, true);if(layer[panoramacombobox].isLoaded,panoramacomboboxShow(););" keep="true" />


  <combobox name="panoramacombobox"
    design=""
    keep="true"
    visible="false"
    zorder="2"
    align="topright"
    x="5" y="10"
    onloaded="panoramacomboboxLoaded();"
    isStarted="false"
    isLoaded="false"
    />

  <action name="panoramacomboboxLoaded">

    layer[panoramacombobox].removeAll();


    panoramacomboboxAddItem(pano59_title, pano59, pano59, false);
    panoramacomboboxAddItem(pano162_title, pano162, pano162, false);
    panoramacomboboxAddItem(pano443_title, pano443, pano443, false);
    panoramacomboboxAddItem(pano405_title, pano405, pano405, false);
    panoramacomboboxAddItem(pano348_title, pano348, pano348, false);
    panoramacomboboxAddItem(pano2332_title, pano2332, pano2332, false);
    panoramacomboboxAddItem(pano2277_title, pano2277, pano2277, false);
    panoramacomboboxAddItem(pano155_title, pano155, pano155, false);
    panoramacomboboxAddItem(pano2590_title, pano2590, pano2590, false);
    set(layer[panoramacombobox].isLoaded, true);

    if(layer[panoramacombobox].isStarted,
      panoramacomboboxShow();
    );
  </action>


  <action name="panoramacomboboxAddItem">
    getmessage(caption, %1);

    indexoftxt(found, get(caption), '&amp;');
    if(found GE 0,
      subtxt(part1, get(caption), 0, get(found));
      add(found, 1);
      subtxt(part2, get(caption), get(found), get(caption.length));
      txtadd(caption, get(part1), '&amp;', get(part2));
    );
    if(%4,
      txtadd(title, "&#x00A0;&#x00A0;&#x00A0;", get(caption));
    ,
      set(title, get(caption));
    );

    layer[panoramacombobox].addNamedItem(%2, get(title), mainloadscene(%3));
  </action>

  <action name="panoramacomboboxUpdateLanguage">
    layer[panoramacombobox].closeList();
    layer[panoramacombobox].removeAll();

    panoramacomboboxAddItem(pano59_title, pano59, pano59, false);
    panoramacomboboxAddItem(pano162_title, pano162, pano162, false);
    panoramacomboboxAddItem(pano443_title, pano443, pano443, false);
    panoramacomboboxAddItem(pano405_title, pano405, pano405, false);
    panoramacomboboxAddItem(pano348_title, pano348, pano348, false);
    panoramacomboboxAddItem(pano2332_title, pano2332, pano2332, false);
    panoramacomboboxAddItem(pano2277_title, pano2277, pano2277, false);
    panoramacomboboxAddItem(pano155_title, pano155, pano155, false);
    panoramacomboboxAddItem(pano2590_title, pano2590, pano2590, false);

    panoramacomboboxUpdateList();
  </action>

  <events name="panoramacomboboxEvents"
    hidetourcontrols="panoramacomboboxHide();"
    showtourcontrols="panoramacomboboxShow();"
    onnewpano="panoramacomboboxOnPanorama();"
    changetourlanguage="panoramacomboboxUpdateLanguage();"
    keep="true"
    />

  <action name="panoramacomboboxHide">
    set(layer[panoramacombobox].visible, false);
  </action>

  <action name="panoramacomboboxShow">
  if(layer[panoramacombobox].isLoaded,
    if (layer[panoramacombobox].item.count GT 0,
      set(layer[panoramacombobox].visible, true);
    ,
      set(layer[panoramacombobox].visible, false);
    );
  ,
    set(layer[panoramacombobox].visible, false);
  );
  </action>

  <action name="panoramacomboboxOnPanorama">
    if(layer[panoramacombobox].isLoaded,
      panoramacomboboxUpdateList();
    ,
      delayedcall(0.2, panoramacomboboxOnPanorama);
    );
  </action>

  <action name="panoramacomboboxUpdateList">
    set(itemtoselect, get(scene[get(xml.scene)].name));
    layer[panoramacombobox].selectItemByName(get(itemtoselect));
  </action>

  <action name="panoramacomboboxOpenComboboxList">
    layer[panoramacombobox].openList();
  </action>

  <action name="panoramacomboboxCloseComboboxList">
    layer[panoramacombobox].closeList();
  </action>

<!-- ********** -->
<!-- iControl Bar -->
<!-- id : controlBar_i -->
<!-- ********** -->

  <krpano controlBar_ibarbuilt="false" controlBar_ibackgroundwidthwhenclosed="0" controlBar_ibackgroundwidthwhenopened="0" controlBar_iIsOpened="false" />
  <events name="controlBar_ievents" 
    onxmlcomplete="controlBar_ibuildMenuBar();" 


    keep="true" />



  <action name="controlBar_ibuildMenuBar">
    ifnot (controlBar_ibarbuilt, controlBar_ibuildMenu(); set(controlBar_ibarbuilt, true););
  </action>

  <style name="controlBar_i_btn_style"
         keep="true"
         edge="right"
         align="right"
         x="0" y="0"
         width="40" height="40"
         crop="0|0|60|60"
         onovercrop="0|60|60|60"
         ondowncrop="0|120|60|60"
         onhover="showTooltip('plugin', controlBar_imenuTooltipStyle, bottom);"
         onout="hideTooltip();"
         />
  <style name="controlBar_i_btn_style_off"
         keep="true"
         edge="right"
         align="right"
         x="0" y="0"
         width="40" height="40"
         onhover="showTooltip('plugin', controlBar_imenuTooltipStyle, bottom);"
         onout="hideTooltip();"
         />

  <layer name="controlBar_i_menu_bg"
         keep="true"
         type="container"
         zorder="3"
         width="40"
         height="40"
         align="bottom"
         x="0" y="10"
         maskchildren="true"
         rotate="0"
         visible="false"
         >


    <layer name="controlBar_ibtn_ctrlmode_move_to"
            url="%FIRSTXML%/graphics/icontrolbar/btn_move_to.png"
            style="controlBar_i_btn_style"
            tooltip="controlBar_ictrlmodeMoveTip"
            onclick="setControlModeMoveTo();
"
            visible="false"
            devices="desktop"
            />
    <layer name="controlBar_ibtn_ctrlmode_drag_to"
            url="%FIRSTXML%/graphics/icontrolbar/btn_drag_to.png"
            style="controlBar_i_btn_style"
            tooltip="controlBar_ictrlmodeDragTip"
            onclick="setControlModeDragTo();
"
            visible="false"
            devices="desktop"
            />

    <layer name="controlBar_ibtn_in"
            url="%FIRSTXML%/graphics/icontrolbar/btn_zoom_in.png"
            ondown="viewControlZoomIn(false);"
            onup="viewControlZoomStop();
"
            style="controlBar_i_btn_style"
            visible="false"
            tooltip="controlBar_izoomInTip"
            devices="desktop"
            />
    <layer name="controlBar_ibtn_out"
            url="%FIRSTXML%/graphics/icontrolbar/btn_zoom_out.png"
            ondown="viewControlZoomOut(false);
"
            onup="viewControlZoomStop();
"
            style="controlBar_i_btn_style"
            visible="false"
            tooltip="controlBar_izoomOutTip"
            devices="desktop"
            />

    <layer name="controlBar_ibtn_home"
           url="%FIRSTXML%/graphics/icontrolbar/btn_home.png"
           style="controlBar_i_btn_style"
           onclick="controlBar_ibtn_home_action();"
           visible="false"
           tooltip="controlBar_ihomeTip"
           />

    <layer name="controlBar_ibtn_left"
            url="%FIRSTXML%/graphics/icontrolbar/btn_move_left.png"
            ondown="viewControlMoveLeft(false);
"
            onup="viewControlMoveHoriStop();
"
            style="controlBar_i_btn_style"
            visible="false"
            tooltip="controlBar_imoveLeftTip"
            devices="desktop"
            />
    <layer name="controlBar_ibtn_right"
            url="%FIRSTXML%/graphics/icontrolbar/btn_move_right.png"
            ondown="viewControlMoveRight(false);
"
            onup="viewControlMoveHoriStop();
"
            style="controlBar_i_btn_style"
            visible="false"
            tooltip="controlBar_imoveRightTip"
            devices="desktop"
            />

    <layer name="controlBar_ibtn_up"
            url="%FIRSTXML%/graphics/icontrolbar/btn_move_up.png"
            ondown="viewControlMoveUp(false);
"
            onup="viewControlMoveVertStop();
"
            style="controlBar_i_btn_style"
            visible="false"
            tooltip="controlBar_imoveUpTip"
            devices="desktop"
            />
    <layer name="controlBar_ibtn_down"
            url="%FIRSTXML%/graphics/icontrolbar/btn_move_down.png"
            ondown="viewControlMoveDown(false);
"
            onup="viewControlMoveVertStop();
"
            style="controlBar_i_btn_style"
            visible="false"
            tooltip="controlBar_imoveDownTip"
            devices="desktop"
            />



    <layer name="controlBar_ibtn_prev_pano"
            url="%FIRSTXML%/graphics/icontrolbar/btn_previous_scene.png"
            onclick="loadPreviousScene();
"
            style="controlBar_i_btn_style"
            tooltip="controlBar_iprevSceneTip"
            visible="false"
            />
    <layer name="controlBar_ibtn_next_pano"
            url="%FIRSTXML%/graphics/icontrolbar/btn_next_scene.png"
            onclick="loadNextScene();
"
            style="controlBar_i_btn_style"
            tooltip="controlBar_inextSceneTip"
            visible="false"
            />



    <layer name="controlBar_ibtn_openfs"
            url="%FIRSTXML%/graphics/icontrolbar/btn_enter_fs.png"
            onclick="enterFullscreen();
"
            style="controlBar_i_btn_style"
            visible="false"
            devices="fullscreensupport"
            tooltip="controlBar_iopenFsTip"
            />
    <layer name="controlBar_ibtn_closefs"
            url="%FIRSTXML%/graphics/icontrolbar/btn_close_fs.png"
            onclick="exitFullscreen();
"
            style="controlBar_i_btn_style"
            visible="false"
            devices="fullscreensupport"
            tooltip="controlBar_icloseFsTip"
            />

    <layer name="controlBar_ibtn_autorotate_on"
            url="%FIRSTXML%/graphics/icontrolbar/btn_start_autorotation.png"
            onclick="resumeautorotation();
"
            style="controlBar_i_btn_style"
            visible="false"
            tooltip="controlBar_iautorotateOnTip"
            />
    <layer name="controlBar_ibtn_autorotate_off"
            url="%FIRSTXML%/graphics/icontrolbar/btn_stop_autorotation.png"
            onclick="pauseautorotation();
"
            style="controlBar_i_btn_style"
            visible="false"
            tooltip="controlBar_iautorotateOffTip"
            />



    <layer name="controlBar_ibtn_display_help"
            url="%FIRSTXML%/graphics/icontrolbar/btn_help.png"
            onclick="controlBar_idisplayHelp();"
            style="controlBar_i_btn_style"
            devices="desktop"
            visible="false"
            tooltip="controlBar_idisplayHelpTip"
            />
    <layer name="controlBar_ibtn_close_help"
            url="%FIRSTXML%/graphics/icontrolbar/btn_help.png"
            onclick="controlBar_icloseHelp();"
            style="controlBar_i_btn_style"
            visible="false"
            devices="desktop"
            tooltip="controlBar_ihideHelpTip"
            />



    <layer name="controlBar_ibtn_hidecontrols"
           url="%FIRSTXML%/graphics/icontrolbar/btn_hide_controls.png"
           style="controlBar_i_btn_style"
           onclick="controlBar_ihideMenuControls();hideTourControls();
"
           visible="false"
           tooltip="controlBar_ihideControlsTip"
           />
    <layer name="controlBar_ibtn_showcontrols"
           url="%FIRSTXML%/graphics/icontrolbar/btn_show_controls.png"
           style="controlBar_i_btn_style"
           onclick="controlBar_ishowMenuControls();showTourControls();
"
           tooltip="controlBar_idisplayControlsTip"
           visible="false"
           />
 </layer>

    <action name="controlBar_ibtn_home_action">
      hideTooltip();lookto(get(panoview.h),get(panoview.v),get(panoview.fov),smooth(100,20,50));
      if(scene[get(xml.scene)].video,
        plugin[get(videointerface_video)].seek(0);
        ifnot(plugin[get(videointerface_video)].ispaused,
          plugin[get(videointerface_video)].play();
        );
      );
    </action>




	<events name="controlBar_icontrolmodechangedevent" 
		oncontrolmodechanged="controlBar_iupdateControlModeButtons();" 
		keep="true" />
	<action name="controlBar_iHideControlModeButtons">
		set(layer[controlBar_ibtn_ctrlmode_move_to].visible, false);
		set(layer[controlBar_ibtn_ctrlmode_drag_to].visible, false);
	</action>
	<action name="controlBar_iShowControlModeButtons">
		if (tour_controlmodemousetype == "moveto",
			set(layer[controlBar_ibtn_ctrlmode_drag_to].visible, true);
			set(layer[controlBar_ibtn_ctrlmode_move_to].visible, false);
		,
			set(layer[controlBar_ibtn_ctrlmode_move_to].visible, true);
			set(layer[controlBar_ibtn_ctrlmode_drag_to].visible, false);
		);
	</action>
	<action name="controlBar_iupdateControlModeButtons">
	if (device.desktop,
		if (controlBar_iIsOpened,
			controlBar_iShowControlModeButtons();
		,
			controlBar_iHideControlModeButtons();
		);
	,
		controlBar_iHideControlModeButtons();
	);
	</action>


  <action name="controlBar_ihideMenuControls">
    set(controlBar_iIsOpened, false);
    set(layer[controlBar_ibtn_hidecontrols].visible, false);
    set(layer[controlBar_ibtn_showcontrols].visible, true);
if (scene.count GT 1,
	set(layer[controlBar_ibtn_next_pano].visible, false);
	set(layer[controlBar_ibtn_prev_pano].visible, false);
);


set(layer[controlBar_ibtn_home].visible, false);
if (device.desktop,
	set(layer[controlBar_ibtn_in].visible, false);
	set(layer[controlBar_ibtn_out].visible, false);
);
if (device.desktop,
	set(layer[controlBar_ibtn_up].visible, false);
	set(layer[controlBar_ibtn_down].visible, false);
);
if (device.desktop,
	set(layer[controlBar_ibtn_left].visible, false);
	set(layer[controlBar_ibtn_right].visible, false);
);
	controlBar_iupdateFullscreenButtons();
	controlBar_iupdateHelpButtons();


	controlBar_iupdateAutorotationButtons();


	controlBar_iupdateControlModeButtons();




	set(layer[controlBar_i_menu_bg].width, get(controlBar_ibackgroundwidthwhenclosed));

	set(layer[controlBar_i_menu_bg].visible, true);
  </action>
  <action name="controlBar_ishowMenuControls">
    set(controlBar_iIsOpened, true);
    set(layer[controlBar_ibtn_hidecontrols].visible, true);
    set(layer[controlBar_ibtn_showcontrols].visible, false);
	set(layer[controlBar_i_menu_bg].visible, true);
if (scene.count GT 1,
	set(layer[controlBar_ibtn_next_pano].visible, true);
	set(layer[controlBar_ibtn_prev_pano].visible, true);
);


set(layer[controlBar_ibtn_home].visible, true);
if (device.desktop,
	set(layer[controlBar_ibtn_in].visible, true);
	set(layer[controlBar_ibtn_out].visible, true);
);
if (device.desktop,
	set(layer[controlBar_ibtn_up].visible, true);
	set(layer[controlBar_ibtn_down].visible, true);
);
if (device.desktop,
	set(layer[controlBar_ibtn_left].visible, true);
	set(layer[controlBar_ibtn_right].visible, true);
);
	controlBar_iupdateFullscreenButtons();
	controlBar_iupdateHelpButtons();


	controlBar_iupdateAutorotationButtons();


	controlBar_iupdateControlModeButtons();



    set(layer[controlBar_i_menu_bg].width, get(controlBar_ibackgroundwidthwhenopened));
  </action>

  <layer name="controlBar_ihelpScreenBg"
         align="center"
         keep="true"
         onclick="controlBar_icloseHelp();"
         url="%FIRSTXML%/graphics/icontrolbar/help_screen_bg.png"
         visible="false"
         rotate="-90"
         height="50%"
         width="prop"
         zorder="97"
         x="100%" />
  <layer name="controlBar_ihelpScreenFg"
         align="center"
         keep="true"
         onclick="controlBar_icloseHelp();"
         url="%FIRSTXML%/graphics/icontrolbar/help_screen_fg.png"
         height="50%"
         width="prop"
         visible="false"
         rotate="90"
         zorder="98"
         x="-100%"
         displayed="false" />
  <action name="controlBar_idisplayHelp">
  if (device.desktop,
    set(layer[controlBar_ihelpScreenFg].displayed,true);
    set(layer[controlBar_ihelpScreenBg].visible,true);
    set(layer[controlBar_ihelpScreenFg].visible,true);
    tween(layer[controlBar_ihelpScreenFg].rotate,0, 1);
    tween(layer[controlBar_ihelpScreenFg].x,0, 1);
    tween(layer[controlBar_ihelpScreenBg].rotate,0, 1);
    tween(layer[controlBar_ihelpScreenBg].x,0, 1);
    controlBar_iupdateHelpButtons();
  );
  </action>
  <action name="controlBar_icloseHelp">
  if (device.desktop,
    set(layer[controlBar_ihelpScreenFg].displayed,false);
    tween(layer[controlBar_ihelpScreenFg].rotate,  90, 1, easeOutQuad, set(layer[controlBar_ihelpScreenFg].visible,false););
    tween(layer[controlBar_ihelpScreenFg].x, -100%, 1);
    tween(layer[controlBar_ihelpScreenBg].rotate, -90, 1, easeOutQuad, set(layer[controlBar_ihelpScreenBg].visible,false););
    tween(layer[controlBar_ihelpScreenBg].x, 100%, 1);
    controlBar_iupdateHelpButtons();
  );
  </action>
	<action name="controlBar_iHideHelpButtons">
		set(layer[controlBar_ibtn_display_help].visible, false);
		set(layer[controlBar_ibtn_close_help].visible, false);
	</action>
	<action name="controlBar_iShowHelpButtons">
		if (layer[controlBar_ihelpScreenFg].displayed,
			set(layer[controlBar_ibtn_close_help].visible, true);
			set(layer[controlBar_ibtn_display_help].visible, false);
		,
			set(layer[controlBar_ibtn_display_help].visible, true);
			set(layer[controlBar_ibtn_close_help].visible, false);
		);
	</action>
	<action name="controlBar_iupdateHelpButtons">
	if (device.desktop,
		if (controlBar_iIsOpened,
			controlBar_iShowHelpButtons();
		,
			controlBar_iHideHelpButtons();
		);
	,
		controlBar_iHideHelpButtons();
	);
	</action>




  <events name="controlBar_imenufullscreenchangeevent"
          onenterfullscreen="controlBar_iupdateFullscreenButtons();"
          onexitfullscreen="controlBar_iupdateFullscreenButtons();"
          keep="true"/>
	<action name="controlBar_iHideFullscreenButtons">
		set(layer[controlBar_ibtn_openfs].visible , false);
		set(layer[controlBar_ibtn_closefs].visible, false);
	</action>
	<action name="controlBar_iShowFullscreenButtons">
		if (device.fullscreensupport,
			if(tour_fullscreen,
				set(layer[controlBar_ibtn_openfs].visible , false);
				set(layer[controlBar_ibtn_closefs].visible, true);
			,
				set(layer[controlBar_ibtn_openfs].visible ,true);
				set(layer[controlBar_ibtn_closefs].visible,false);
			);
		,
			controlBar_iHideFullscreenButtons();
		);
	</action>
	<action name="controlBar_iupdateFullscreenButtons">
		if (controlBar_iIsOpened,
			controlBar_iShowFullscreenButtons();
		,
			controlBar_iHideFullscreenButtons();
		);
	</action>

	<events name="controlBar_iAutorotationEvents"
		onstartautorotation="controlBar_iupdateAutorotationButtons();"
		onresumeautorotation="controlBar_iupdateAutorotationButtons();"
		onstopautorotation="controlBar_iupdateAutorotationButtons();"
		onpauseautorotation="controlBar_iupdateAutorotationButtons();"
		keep="true"/>
	<action name="controlBar_iHideAutorotationButtons">
		set(layer[controlBar_ibtn_autorotate_off].visible, false);
		set(layer[controlBar_ibtn_autorotate_on].visible , false);
	</action>
	<action name="controlBar_iShowAutorotationButtons">
		if(autorotate.enabled == false,
			set(layer[controlBar_ibtn_autorotate_off].visible, false);
			set(layer[controlBar_ibtn_autorotate_on].visible , true);
		,
			set(layer[controlBar_ibtn_autorotate_off].visible, true);
			set(layer[controlBar_ibtn_autorotate_on].visible , false);
		);
	</action>
	<action name="controlBar_iupdateAutorotationButtons">
		if (controlBar_iIsOpened,
			controlBar_iShowAutorotationButtons();
		,
			controlBar_iHideAutorotationButtons();
		);
	</action>



<layer name="controlBar_imenuTooltipStyle"
	keep="true"
	enabled="false"
	capture="false"
	type="text"
	align="center"
	bg="false"
	bgborder="0"
	css="color:#000000;font-family:Helvetica;font-weight:bold;font-size:14px;text-align:left;"
	xoffset="0"
	yoffset="0"
	padding="2"
	interactivecontent="false"
	zorder="0"
	visible="false"
	html=""
	edge="bottom"
/>
  <action name="controlBar_ibuildMenu">
    
    set(controlBar_ibutton_pos, 0);

	set(controlBar_ibackgroundwidthwhenclosed, 40);
    set(layer[controlBar_ibtn_hidecontrols].x, get(controlBar_ibutton_pos));
    set(layer[controlBar_ibtn_showcontrols].x, get(controlBar_ibutton_pos));
    inc(controlBar_ibutton_pos, 45);



      if (device.desktop,
        set(layer[controlBar_ibtn_display_help].x, get(controlBar_ibutton_pos));
        set(layer[controlBar_ibtn_close_help].x  , get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
      );

      if (device.fullscreensupport,
        set(layer[controlBar_ibtn_openfs].x , get(controlBar_ibutton_pos));
        set(layer[controlBar_ibtn_closefs].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
      );



      set(layer[controlBar_ibtn_autorotate_on].x , get(controlBar_ibutton_pos));
      set(layer[controlBar_ibtn_autorotate_off].x, get(controlBar_ibutton_pos));
      inc(controlBar_ibutton_pos, 45);



    if (device.desktop,
      set(layer[controlBar_ibtn_ctrlmode_drag_to].x, get(controlBar_ibutton_pos));
      set(layer[controlBar_ibtn_ctrlmode_move_to].x, get(controlBar_ibutton_pos));
      inc(controlBar_ibutton_pos, 45);
    );





        set(layer[controlBar_ibtn_home].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);

      if (device.desktop,
        set(layer[controlBar_ibtn_right].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
        set(layer[controlBar_ibtn_left].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
      );

      if (device.desktop,
        set(layer[controlBar_ibtn_down].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
        set(layer[controlBar_ibtn_up].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
      );

      if (device.desktop,
        set(layer[controlBar_ibtn_out].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
        set(layer[controlBar_ibtn_in].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
      );

    if (scene.count GT 1,
        set(layer[controlBar_ibtn_next_pano].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
        set(layer[controlBar_ibtn_prev_pano].x, get(controlBar_ibutton_pos));
        inc(controlBar_ibutton_pos, 45);
      );



      dec(controlBar_ibutton_pos, 5);

      set(controlBar_ibackgroundwidthwhenopened, get(controlBar_ibutton_pos));


    
      set(layer[controlBar_i_menu_bg].width, get(controlBar_ibackgroundwidthwhenopened));
	
	
	
    </action>

	<events name="controlBar_iStartTourEvents" onTourStart="controlBar_iCallOnStartTour();" keep="true" />
	
	<action name="controlBar_iCallOnStartTour">
		
		controlBar_ishowMenuControls();
	</action>




<action name="viewControlZoomIn">
	if(%1,
		if(%2,
			if(%2 LT view.fovmin,
				zoomto(get(view.fovmin));
			,
				if(%2 LT view.fov,
					zoomto(%2);
				);
			);
		,
			set(fov_moveforce, -1);
			delayedcall(0.1, viewControlZoomStop());
		);
	,
		set(fov_moveforce, -1);
	);
</action>
<action name="viewControlZoomOut">
	if(%1,
		if(%2,
			if(%2 GT view.fovmax,
				zoomto(get(view.fovmax));
			,
				if(%2 GT view.fov,
					zoomto(%2);
				);
			);
		,
			set(fov_moveforce, +1);
			delayedcall(0.1, viewControlZoomStop());
		);
	,
		set(fov_moveforce, +1);
	);
</action>
<action name="viewControlZoomStop">
	set(fov_moveforce, 0);
</action>

  <action name="displayImage">
    if (layer[displayedStandardImage],
      if(layer[displayedStandardImage].doNotDeleteMe,
        set(layer[displayedStandardImage].currentCall, false);
        set(layer[displayedStandardImage].doNotDeleteMe, false);
        
        if (%1 == layer[displayedStandardImage].url,
          applyDisplayedImageObjectAnimation(%8);
        ,
          setDisplayedImageObjectParameters(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10);
        );
      ,
        set(layer[displayedStandardImage].currentCall, false);
        set(layer[displayedStandardImage].doNotDeleteMe, true);
        events.dispatch(onremovedisplayedobject);
        delayedcall(0.2,displayImage(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12););
      );
    ,
      if(%10,
        addlayer(displayedStandardImageOverlay);
        set(layer[displayedStandardImageOverlay].keep, false);
        set(layer[displayedStandardImageOverlay].width, 100%);
        set(layer[displayedStandardImageOverlay].height, 100%);
        set(layer[displayedStandardImageOverlay].type, container);
        set(layer[displayedStandardImageOverlay].zorder, 98);
        set(layer[displayedStandardImageOverlay].visible, false);
        set(layer[displayedStandardImageOverlay].onclick, applyDisplayedImageObjectAnimation(%8););
        set(layer[displayedStandardImageOverlay].bgcolor, "0x%11");
        set(layer[displayedStandardImageOverlay].bgalpha, %12);
        set(layer[displayedStandardImageOverlay].bgcapture, true);
      );
      addlayer(displayedStandardImage);
      set(layer[displayedStandardImage].keep, false);
      set(layer[displayedStandardImage].onclick, applyDisplayedImageObjectAnimation(%8););
      set(layer[displayedStandardImage].zorder , 99);
      set(layer[displayedStandardImage].currentCall, true);
      set(layer[displayedStandardImage].doNotDeleteMe, true);
      set(layer[displayedStandardImage].onloaded, resizeDisplayedImageObject());
      events.dispatch(onremovedisplayedobject);
      delayedcall(0.2,displayImage(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12););
      set(layer[displayedStandardImage].visible, false);
    );
  </action>
  <action name="applyDisplayedImageObjectAnimation">resumeautorotation(forcehotspot);

    if (%1,
      stoptween(layer[displayedStandardImage].width, layer[displayedStandardImage].height);
      tween(layer[displayedStandardImage].width|layer[displayedStandardImage].height, 1|1, 1, easeOutQuad, WAIT);
      if(layer[displayedStandardImage].overlay,removelayer(displayedStandardImageOverlay););removelayer(displayedStandardImage);
    ,
      if(layer[displayedStandardImage].overlay,removelayer(displayedStandardImageOverlay););removelayer(displayedStandardImage);
    );
  </action>
  <action name="setDisplayedImageObjectParameters">
    set(layer[displayedStandardImage].url       , %1);
    set(layer[displayedStandardImage].align     , %2);
    set(layer[displayedStandardImage].x         , %3);
    set(layer[displayedStandardImage].y         , %4);
    set(layer[displayedStandardImage].imgwidth  , %5);
    set(layer[displayedStandardImage].imgheight , %6);
    set(layer[displayedStandardImage].animated  , %8);
    set(layer[displayedStandardImage].applyratio, %9);
    set(layer[displayedStandardImage].overlay   , %10);
    if (%7,pauseautorotation(forcehotspot);
);
  </action>
  <action name="resizeDisplayedImageObject">
    if(layer[displayedStandardImage].url,
    set(layer[displayedStandardImage].fullwidth, get(layer[displayedStandardImage].width));
    set(layer[displayedStandardImage].fullheight, get(layer[displayedStandardImage].height));
    if(layer[displayedStandardImage].animated,
      set(layer[displayedStandardImage].width , 1);
      set(layer[displayedStandardImage].height, 1);
    );
    if(layer[displayedStandardImage].imgwidth != "" AND layer[displayedStandardImage].imgheight != "",
      if(layer[displayedStandardImage].imgwidth == "prop",
        set(tempDisplayedImageObjectHeight, get(layer[displayedStandardImage].imgheight));
        indexoftxt(tempDisplayedImageObjectHeightPercent, get(tempDisplayedImageObjectHeight), "%");
        if(tempDisplayedImageObjectHeightPercent GT 0,
          txtreplace(tempDisplayedImageObjectHeight, '%', '');
          mul(tempDisplayedImageObjectHeight, get(stageheight));
          div(tempDisplayedImageObjectHeight, 100);
          Math.round(tempDisplayedImageObjectHeight);
        );
        mul(flyingImgWidth,get(layer[displayedStandardImage].fullwidth),get(tempDisplayedImageObjectHeight));
        div(flyingImgWidth,get(layer[displayedStandardImage].fullheight));
        Math.round(flyingImgWidth);
        set(layer[displayedStandardImage].imgwidth , get(flyingImgWidth));
        set(layer[displayedStandardImage].imgheight, get(tempDisplayedImageObjectHeight));
      ,
        if(layer[displayedStandardImage].imgheight == "prop",
          set(tempDisplayedImageObjectWidth, get(layer[displayedStandardImage].imgwidth));
          indexoftxt(tempDisplayedImageObjectWidthPercent, get(tempDisplayedImageObjectWidth), "%");
          if(tempDisplayedImageObjectWidthPercent GT 0,
            txtreplace(tempDisplayedImageObjectWidth, '%', '');
            mul(tempDisplayedImageObjectWidth, get(stagewidth));
            div(tempDisplayedImageObjectWidth, 100);
            Math.round(tempDisplayedImageObjectWidth);
          );
          mul(flyingImgHeight,get(layer[displayedStandardImage].fullheight),get(tempDisplayedImageObjectWidth));
          div(flyingImgHeight,get(layer[displayedStandardImage].fullwidth));
          Math.round(flyingImgHeight);
          set(layer[displayedStandardImage].imgwidth , get(tempDisplayedImageObjectWidth));
          set(layer[displayedStandardImage].imgheight , get(flyingImgHeight));
        ,
          set(tempDisplayedImageObjectWidth, get(layer[displayedStandardImage].imgwidth));
          set(tempDisplayedImageObjectHeight, get(layer[displayedStandardImage].imgheight));
          indexoftxt(tempDisplayedImageObjectWidthPercent, get(tempDisplayedImageObjectWidth), "%");
          indexoftxt(tempDisplayedImageObjectHeightPercent, get(tempDisplayedImageObjectHeight), "%");
          if(tempDisplayedImageObjectWidthPercent GT 0,
            txtreplace(tempDisplayedImageObjectWidth, '%', '');
            mul(tempDisplayedImageObjectWidth, get(stagewidth));
            div(tempDisplayedImageObjectWidth, 100);
            Math.round(tempDisplayedImageObjectWidth);
          );
          if(tempDisplayedImageObjectHeightPercent GT 0,
            txtreplace(tempDisplayedImageObjectHeight, '%', '');
            mul(tempDisplayedImageObjectHeight, get(stageheight));
            div(tempDisplayedImageObjectHeight, 100);
            Math.round(tempDisplayedImageObjectHeight);
          );
          set(layer[displayedStandardImage].imgwidth , get(tempDisplayedImageObjectWidth));
          set(layer[displayedStandardImage].imgheight, get(tempDisplayedImageObjectHeight));
        );
      );
    ,
      set(layer[displayedStandardImage].imgwidth , get(layer[displayedStandardImage].fullwidth));
      set(layer[displayedStandardImage].imgheight, get(layer[displayedStandardImage].fullheight));
    );
    
    set(resizedwidth, get(layer[displayedStandardImage].imgwidth));
    set(resizedheight, get(layer[displayedStandardImage].imgheight));
    if(layer[displayedStandardImage].applyratio,
      sub(resizedstagewidth, get(stagewidth), get(layer[displayedStandardImage].x));
      sub(resizedstageheight, get(stageheight), get(layer[displayedStandardImage].y));
      Math.abs(resizedstagewidth);
      Math.abs(resizedstageheight);
      if(resizedwidth GT resizedstagewidth,
        mul(tempresizedheight, get(resizedheight), get(resizedstagewidth));
        div(tempresizedheight, get(resizedwidth));
        Math.round(tempresizedheight);
        set(resizedwidth, get(resizedstagewidth));
        set(resizedheight, get(tempresizedheight));
      );
      if(resizedheight GT resizedstageheight,
        mul(tempresizedwidth, get(resizedwidth), get(resizedstageheight));
        div(tempresizedwidth, get(resizedheight));
        Math.round(tempresizedwidth);
        set(resizedheight, get(resizedstageheight));
        set(resizedwidth, get(tempresizedwidth));
      );
    );
    
    if(layer[displayedStandardImage].animated,
      set(layer[displayedStandardImage].animated, false);
      tween(layer[displayedStandardImage].width , get(resizedwidth), 1, easeOutQuad);
      tween(layer[displayedStandardImage].height, get(resizedheight), 1, easeOutQuad);
    ,
      set(layer[displayedStandardImage].width , get(resizedwidth));
      set(layer[displayedStandardImage].height, get(resizedheight));
    );
    if(layer[displayedStandardImage].overlay,set(layer[displayedStandardImageOverlay].visible, true););
    set(layer[displayedStandardImage].visible, true);
    ,
      delayedcall(0.2,resizeDisplayedImageObject(););
    );
  </action>
  <events name="displayedImageObjectEvents" keep="true" onremovedisplayedobject="displayedImageObjectOnRemoveDisplayedObject" onresize="if(layer[displayedStandardImage],resizeDisplayedImageObject());" />
  <action name="displayedImageObjectOnRemoveDisplayedObject">
    ifnot(layer[displayedStandardImage].currentCall,if(layer[displayedStandardImage].visible,resumeautorotation(forcehotspot);

      if(layer[displayedStandardImage].overlay,removelayer(displayedStandardImageOverlay););
      removelayer(displayedStandardImage);
    ););
  </action>


  <!-- Fullscreen Management -->
  <action name="exitFullScreen" devices="fullscreensupport">set(tour_fullscreen,false);set(fullscreen,false);</action>
  <action name="enterFullScreen" devices="fullscreensupport">set(tour_fullscreen,true);set(fullscreen,true);</action>
  <action name="switchFullScreen">if(tour_fullscreen,exitFullScreen();,enterFullScreen(););</action>

  
  <events name="krpanoExitFullscreenEvent"
    onexitfullscreen="if(tour_fullscreen,exitFullScreenChangeEvent(););"
    keep="true" />

  <action name="exitFullScreenChangeEvent" devices="fullscreensupport">set(tour_fullscreen,false);events.dispatch(onexitfullscreen);</action>

  <!-- Hide / Show Controls -->
  <action name="hideTourControls">set(tour_displaycontrols, false);events.dispatch(hidetourcontrols);</action>
  <action name="showTourControls">set(tour_displaycontrols, true); events.dispatch(showtourcontrols);</action>


<action name="viewControlMoveUp">
	if(%1,
		if(%2,
			set(isfullvertical, false);
			ifnot(scene[get(xml.scene)].planar,
				sub(viewvfov, panoview.vmax, panoview.vmin);
				if (viewvfov == 180,
					set(isfullvertical, true);
				);
			);
			if(isfullvertical == false AND calc(view.vlookat-%2) LT view.vlookatmin,
				moveto(get(view.hlookat), get(view.vlookatmin));
			,
				moveto(get(view.hlookat), calc(view.vlookat-%2));
			);
		,
			set(vlookat_moveforce, -1);
			delayedcall(0.1, viewControlMoveVertStop());
		);
	,
		set(vlookat_moveforce, -1);
	);
</action>
<action name="viewControlMoveDown">
	if(%1,
		if(%2,
			set(isfullvertical, false);
			ifnot(scene[get(xml.scene)].planar,
				sub(viewvfov, panoview.vmax, panoview.vmin);
				if (viewvfov == 180,
					set(isfullvertical, true);
				);
			);
			if(sceneisfull360 == false AND calc(view.vlookat+%2) GT view.vlookatmax,
				moveto(get(view.hlookat), get(view.vlookatmax));
			,
				moveto(get(view.hlookat), calc(view.vlookat+%2));
			);
		,
			set(vlookat_moveforce, +1);
			delayedcall(0.1, viewControlMoveVertStop());
		);
	,
		set(vlookat_moveforce, +1);
	);
</action>
<action name="viewControlMoveLeft">
	if(%1,
		if(%2,
			set(isfullhorizontal, false);
			ifnot(scene[get(xml.scene)].planar,
				sub(viewhfov, panoview.hmax, panoview.hmin);
				if (viewhfov == 360,
					set(isfullhorizontal, true);
				);
			);
			if(isfullhorizontal == false AND calc(view.hlookat-%2) LT view.hlookatmin,
				moveto(get(view.hlookatmin), get(view.vlookat));
			,
				moveto(calc(view.hlookat-%2), get(view.vlookat));
			);
		,
			set(hlookat_moveforce, -1);
			delayedcall(0.1, viewControlMoveHoriStop());
		);
	,
		set(hlookat_moveforce, -1);
	);
</action>
<action name="viewControlMoveRight">
	if(%1,
		if(%2,
			set(isfullhorizontal, false);
			ifnot(scene[get(xml.scene)].planar,
				sub(viewhfov, panoview.hmax, panoview.hmin);
				if (viewhfov == 360,
					set(isfullhorizontal, true);
				);
			);
			if(isfullhorizontal == false AND calc(view.hlookat+%2) GT view.hlookatmax,
				moveto(get(view.hlookatmax), get(view.vlookat));
			,
				moveto(calc(view.hlookat+%2), get(view.vlookat));
			);
		,
			set(hlookat_moveforce, +1);
			delayedcall(0.1, viewControlMoveHoriStop());
			
		);
	,
		set(hlookat_moveforce, +1);
	);
</action>
<action name="viewControlMoveHoriStop">
	set(hlookat_moveforce, 0);
</action>
<action name="viewControlMoveVertStop">
	set(vlookat_moveforce, 0);
</action>

</krpano>