q
13693261870
2024-04-03 bb999f11625b2699184cd10bd16da1fc7784669a
q
已添加29个文件
已修改2个文件
3896 ■■■■■ 文件已修改
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Help.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Info.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Separator.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/alert.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_a.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_span.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/clipboard.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/group.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/help.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/point.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polygon.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polyline.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/prop.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/2052/lang.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/SpaceStatistics.html 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/cursor_m.cur 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/ToolIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/delete.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/lang.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpaceStatistics.html 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpatialQuery.html 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/img/ToolIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/Style.css 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon65.js 703 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon70.js 586 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon71.js 792 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon73.js 831 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/js/Gis/Gis.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Help.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Info.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Separator.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/alert.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_a.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_span.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/clipboard.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/group.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/help.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/point.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polygon.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polyline.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/prop.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/2052/lang.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
SGLang.lang = $.extend(SGLang.lang, {
    //
});
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/SpaceStatistics.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,286 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>空间统计</title>
  <meta http-equiv="Expires" content="0" />
  <meta http-equiv="Cache" content="no-cache" />
  <meta http-equiv="Pragma" content="no-cache" />
  <meta http-equiv="Cache-control" content="no-cache" />
  <!--<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />-->
  <meta http-equiv="X-UA-Compatible" content="IE=9" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script src="../Jquery/jquery.min.js"></script>
  <script src="../ToolsCommon71.js"></script>
  <link href="../Style.css" rel="StyleSheet" type="text/css" />
  <style>
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
      width: 100%;
    }
  </style>
  <script>
    var gAsync = true;
    var gDebug = false;
    var groupName = "空间统计";
    var layerName = "JMD_1002";
    var rs = {
      count: 0, // è¦ç´ æ€»ä¸ªæ•°
      lineLen: 0, // çº¿å¯¹è±¡é•¿åº¦
      polyArea: 0, // å¤šè¾¹å½¢é¢ç§¯
      volume: 0, // ä¸‰ç»´ä½“体积
      minHeight: 0, // ä¸‰ç»´ä½“最低高度
      maxHeight: 0, // ä¸‰ç»´ä½“最高高度
      reset: function () {
        //SGWorld.ProjectTree.EnableRedraw(0);
        var layers = getFeatureLayers();
        for (var i in layers) {
          try{
            SGWorld.ProjectTree.GetObject(layers[i]).Refresh();
          } catch (e) {
            console.log(e);
          }
        }
        //SGWorld.ProjectTree.EnableRedraw(1);
        this.count = 0;
        this.lineLen = 0;
        this.polyArea = 0;
        this.volume = 0;
        this.minHeight = 0;
        this.maxHeight = 0;
        return this;
      },
      format: function () {
        this.lineLen = parseFloat(this.lineLen.toFixed(2));
        this.polyArea = parseFloat(this.polyArea.toFixed(2));
        this.volume = parseFloat(this.volume.toFixed(2));
        this.minHeight = parseFloat(this.minHeight.toFixed(2));
        this.maxHeight = parseFloat(this.maxHeight.toFixed(2));
        return this;
      },
      setVal: function () {
        $("#totalNum").html("" + this.count);
        $("#lineLen").html("" + this.lineLen);
        $("#polyArea").html("" + this.polyArea);
        $("#volume").html("" + this.volume);
        $("#minHeight").html("" + this.minHeight);
        $("#maxHeight").html("" + this.maxHeight);
      }
    };
    $(function () {
      init();
    });
    function init() {
      window.ondragstart = function () { return false; }
    }
    function getGroupId() {
      var gid = SGWorld.ProjectTree.FindItem(groupName);
      if (gid) return gid;
      return SGWorld.ProjectTree.CreateLockedGroup(groupName);
    }
    function delGroup() {
      try {
        var gid = SGWorld.ProjectTree.FindItem(groupName);
        if (gid) SGWorld.ProjectTree.DeleteItem(gid);
      }
      catch (e) { }
    }
    function getFeatureLayers() {
      var layers = [];
      BuildObjectsList(SGWorld.ProjectTree.RootID, layers, 36);
      return layers;
    }
    function clear(e) {
      rs.reset();
      rs.setVal();
      delGroup();
    }
    function startQuery(e) {
      this.clear();
      if (drawing.drawingEditMode != -1) {
        drawing.abort();
        return;
      }
      SGWorld.Window.ShowMessageBarText("按 Esc é”®é€€å‡º");
      drawing.drawPolygon({
        style: {
          lineColor: "#ff0000",
          lineWidth: 3,
        },
        altitudeMethod: 2, // use 2 of "OnTerrain" and 3 for "Absolute" (above mean sea level)
        deleteWhenExit: false, //
        parentGoupID: getGroupId(),
        saveOnExit: true, // save the polyline/polygon when exiting the project. Default = false
        onFinish: DrawPoly,
        onAbort: ResetAsync
      });
    }
    function DrawPoly(geometry, type, altitudeType) {
      var layers = getFeatureLayers();
      for (var i in layers) {
        try {
          var layer = SGWorld.ProjectTree.GetObject(layers[i]);
          var fs = layer.ExecuteSpatialQuery(geometry, 1); // 1-IT_INTERSECT, 2-IT_WITHIN
          if (fs.Count == 0) continue;
          rs.count += fs.Count;
          if (layer.GeometryType == 1) { // LGT_POLYLINE
            for (var j = 0; j < fs.Count; j++) {
              var f = fs.Item(j);
              rs.lineLen += f.Geometry.Length;
            }
          }
          if (layer.GeometryType == 2) { // LGT_POLYGON
            var flag = layerName == layer.TreeItem.Name;
            for (var j = 0; j < fs.Count; j++) {
              var f = fs.Item(j);
              rs.polyArea += f.Geometry.Area;
              if (flag) {
                var maxHeight = f.FeatureAttributes.GetFeatureAttribute("MaxHeight").Value;
                var minHeight = f.FeatureAttributes.GetFeatureAttribute("MinHeight").Value;
                var height = maxHeight - minHeight;
                rs.volume += f.Geometry.Area * height;
                if (rs.maxHeight < height) rs.maxHeight = height;
                if (!rs.minHeight || rs.minHeight > height) rs.minHeight = height;
              }
            }
          }
          for (var j = 0; j < fs.Count; j++) {
            fs.Item(j).Tint.abgrColor = 0xff800080;
          }
        } catch (e) {
          console.log(e);
          //layers.splice(i, 1);
        }
      }
      rs.format();
      rs.setVal();
    }
    function ResetAsync(FirstTime, FromMouseInputMode) {
      if (gAsync)
        setTimeout(function () { Reset(FirstTime, FromMouseInputMode); }, 100);
      else
        Reset(FirstTime, FromMouseInputMode);
    }
    function Reset(FirstTime, FromMouseInputMode) {
      try {
        if (gPolyObj != null) SGWorld.Creator.DeleteObject(gPolyObj.ID);
      } catch (e) { }
      gPolyObj = null;
      SGWorld.ProjectTree.EnableRedraw(1);
      SGWorld.Window.HideMessageBarText();
      bInEdit = false;
      if (FirstTime != 1 && FromMouseInputMode == 0) SGWorld.Window.SetInputMode(0);
    }
  </script>
</head>
<body class="hideUntillTranslated">
  <table style="width: 100%; border: 0;" cellspacing="0" cellpadding="2">
    <tr>
      <td class="ToolTopArea" id="TopAreaTD" width="100%" valign="middle">
        <table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td width="55px">
              <img style="margin-left: 5px;" src="img/ToolIcon.png" alt="" /></td>
            <td id="TitleTD" align="center" class="s12w i18n">空间统计</td>
            <td align="right" id="CloseHelpTd">
              <img style="margin-right: 5px; cursor: pointer;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="帮助" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))" /></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td class="ToolTopSeperator"></td>
    </tr>
    <tr class="s8">
      <td>
        <table class="PropertiesSheet" cellspacing="0" cellpadding="2">
          <tr class='TableOtherLine'>
            <td class="s8b">
              <label for="Mode" class="i18n">要素总个数</label>
            </td>
            <td>&nbsp;<span id="totalNum">0</span> ä¸ª
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">线对象长度</label>
            </td>
            <td>&nbsp;<span id="lineLen">0</span> ç±³
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">多边形面积</label>
            </td>
            <td>&nbsp;<span id="polyArea">0</span> å¹³æ–¹ç±³
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">三维体体积</label>
            </td>
            <td>&nbsp;<span id="volume">0</span> ç«‹æ–¹ç±³
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">三维体高度</label>
            </td>
            <td>&nbsp;最低 <span id="minHeight">0</span> ç±³ï¼Œæœ€é«˜ <span id="maxHeight">0</span> ç±³
            </td>
          </tr>
        </table>
      </td>
    </tr>
    <tr class="s8">
      <td align="center" class="ToolButtonsArea">
        <div id="SurfaceDiv">
          <button id="clipboardButton" class="MenuButton" onclick="clear(this);" style="cursor: pointer;">
            <img src="img/delete.png" /><br />
            <span class="i18n">清 é™¤</span></button>
          <button id="DrawPlaneBtn" class="MenuButton MenuButtonLast" onclick="startQuery(this);" style="cursor: pointer;">
            <img src="../commonImg/polygon.png" /><br />
            <span class="i18n">开始统计</span></button>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <object id="SGWorld" style="display:none" classid="CLSID:3a4f9199-65a8-11d5-85c1-0001023952c1"></object>
      </td>
    </tr>
  </table>
</body>
</html>
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/cursor_m.cur
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/ToolIcon.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/delete.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/lang.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
SGLang.lang = $.extend(SGLang.lang, {
    //
});
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpaceStatistics.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,286 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>空间统计</title>
  <meta http-equiv="Expires" content="0" />
  <meta http-equiv="Cache" content="no-cache" />
  <meta http-equiv="Pragma" content="no-cache" />
  <meta http-equiv="Cache-control" content="no-cache" />
  <!--<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />-->
  <meta http-equiv="X-UA-Compatible" content="IE=9" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script src="../Jquery/jquery.min.js"></script>
  <script src="../ToolsCommon71.js"></script>
  <link href="../Style.css" rel="StyleSheet" type="text/css" />
  <style>
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
      width: 100%;
    }
  </style>
  <script>
    var gAsync = true;
    var gDebug = false;
    var groupName = "空间统计";
    var layerName = "abc";
    var rs = {
      count: 0, // è¦ç´ æ€»ä¸ªæ•°
      lineLen: 0, // çº¿å¯¹è±¡é•¿åº¦
      polyArea: 0, // å¤šè¾¹å½¢é¢ç§¯
      volume: 0, // ä¸‰ç»´ä½“体积
      minHeight: 0, // ä¸‰ç»´ä½“最低高度
      maxHeight: 0, // ä¸‰ç»´ä½“最高高度
      reset: function () {
        //SGWorld.ProjectTree.EnableRedraw(0);
        var layers = getFeatureLayers();
        for (var i in layers) {
          try{
            SGWorld.ProjectTree.GetObject(layers[i]).Refresh();
          } catch (e) {
            console.log(e);
          }
        }
        //SGWorld.ProjectTree.EnableRedraw(1);
        this.count = 0;
        this.lineLen = 0;
        this.polyArea = 0;
        this.volume = 0;
        this.minHeight = 0;
        this.maxHeight = 0;
        return this;
      },
      format: function () {
        this.lineLen = parseFloat(this.lineLen.toFixed(2));
        this.polyArea = parseFloat(this.polyArea.toFixed(2));
        this.volume = parseFloat(this.volume.toFixed(2));
        this.minHeight = parseFloat(this.minHeight.toFixed(2));
        this.maxHeight = parseFloat(this.maxHeight.toFixed(2));
        return this;
      },
      setVal: function () {
        $("#totalNum").html("" + this.count);
        $("#lineLen").html("" + this.lineLen);
        $("#polyArea").html("" + this.polyArea);
        $("#volume").html("" + this.volume);
        $("#minHeight").html("" + this.minHeight);
        $("#maxHeight").html("" + this.maxHeight);
      }
    };
    $(function () {
      init();
    });
    function init() {
      window.ondragstart = function () { return false; }
    }
    function getGroupId() {
      var gid = SGWorld.ProjectTree.FindItem(groupName);
      if (gid) return gid;
      return SGWorld.ProjectTree.CreateLockedGroup(groupName);
    }
    function delGroup() {
      try {
        var gid = SGWorld.ProjectTree.FindItem(groupName);
        if (gid) SGWorld.ProjectTree.DeleteItem(gid);
      }
      catch (e) { }
    }
    function getFeatureLayers() {
      var layers = [];
      BuildObjectsList(SGWorld.ProjectTree.RootID, layers, 36);
      return layers;
    }
    function clear(e) {
      rs.reset();
      rs.setVal();
      delGroup();
    }
    function startQuery(e) {
      this.clear();
      if (drawing.drawingEditMode != -1) {
        drawing.abort();
        return;
      }
      SGWorld.Window.ShowMessageBarText("按 Esc é”®é€€å‡º");
      drawing.drawPolygon({
        style: {
          lineColor: "#ff0000",
          lineWidth: 3,
        },
        altitudeMethod: 2, // use 2 of "OnTerrain" and 3 for "Absolute" (above mean sea level)
        deleteWhenExit: false, //
        parentGoupID: getGroupId(),
        saveOnExit: true, // save the polyline/polygon when exiting the project. Default = false
        onFinish: DrawPoly,
        onAbort: ResetAsync
      });
    }
    function DrawPoly(geometry, type, altitudeType) {
      var layers = getFeatureLayers();
      for (var i in layers) {
        try {
          var layer = SGWorld.ProjectTree.GetObject(layers[i]);
          var fs = layer.ExecuteSpatialQuery(geometry, 1); // 1-IT_INTERSECT, 2-IT_WITHIN
          if (fs.Count == 0) continue;
          rs.count += fs.Count;
          if (layer.GeometryType == 1) { // LGT_POLYLINE
            for (var j = 0; j < fs.Count; j++) {
              var f = fs.Item(j);
              rs.lineLen += f.Geometry.Length;
            }
          }
          if (layer.GeometryType == 2) { // LGT_POLYGON
            var flag = layerName == layer.TreeItem.Name;
            for (var j = 0; j < fs.Count; j++) {
              var f = fs.Item(j);
              rs.polyArea += f.Geometry.Area;
              if (flag) {
                var maxHeight = f.FeatureAttributes.GetFeatureAttribute("MaxHeight").Value;
                var minHeight = f.FeatureAttributes.GetFeatureAttribute("MinHeight").Value;
                var height = maxHeight - minHeight;
                rs.volume += f.Geometry.Area * height;
                if (rs.maxHeight < height) rs.maxHeight = height;
                if (!rs.minHeight || rs.minHeight > height) rs.minHeight = height;
              }
            }
          }
          for (var j = 0; j < fs.Count; j++) {
            fs.Item(j).Tint.abgrColor = 0xff800080;
          }
        } catch (e) {
          console.log(e);
          //layers.splice(i, 1);
        }
      }
      rs.format();
      rs.setVal();
    }
    function ResetAsync(FirstTime, FromMouseInputMode) {
      if (gAsync)
        setTimeout(function () { Reset(FirstTime, FromMouseInputMode); }, 100);
      else
        Reset(FirstTime, FromMouseInputMode);
    }
    function Reset(FirstTime, FromMouseInputMode) {
      try {
        if (gPolyObj != null) SGWorld.Creator.DeleteObject(gPolyObj.ID);
      } catch (e) { }
      gPolyObj = null;
      SGWorld.ProjectTree.EnableRedraw(1);
      SGWorld.Window.HideMessageBarText();
      bInEdit = false;
      if (FirstTime != 1 && FromMouseInputMode == 0) SGWorld.Window.SetInputMode(0);
    }
  </script>
</head>
<body class="hideUntillTranslated">
  <table style="width: 100%; border: 0;" cellspacing="0" cellpadding="2">
    <tr>
      <td class="ToolTopArea" id="TopAreaTD" width="100%" valign="middle">
        <table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td width="55px">
              <img style="margin-left: 5px;" src="img/ToolIcon.png" alt="" /></td>
            <td id="TitleTD" align="center" class="s12w i18n">空间统计</td>
            <td align="right" id="CloseHelpTd">
              <img style="margin-right: 5px; cursor: pointer;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="帮助" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))" /></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td class="ToolTopSeperator"></td>
    </tr>
    <tr class="s8">
      <td>
        <table class="PropertiesSheet" cellspacing="0" cellpadding="2">
          <tr class='TableOtherLine'>
            <td class="s8b">
              <label for="Mode" class="i18n">要素总个数</label>
            </td>
            <td>&nbsp;<span id="totalNum">0</span> ä¸ª
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">线对象长度</label>
            </td>
            <td>&nbsp;<span id="lineLen">0</span> ç±³
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">多边形面积</label>
            </td>
            <td>&nbsp;<span id="polyArea">0</span> å¹³æ–¹ç±³
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">三维体体积</label>
            </td>
            <td>&nbsp;<span id="volume">0</span> ç«‹æ–¹ç±³
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">三维体高度</label>
            </td>
            <td>&nbsp;最低 <span id="minHeight">0</span> ç±³ï¼Œæœ€é«˜ <span id="maxHeight">0</span> ç±³
            </td>
          </tr>
        </table>
      </td>
    </tr>
    <tr class="s8">
      <td align="center" class="ToolButtonsArea">
        <div id="SurfaceDiv">
          <button id="clipboardButton" class="MenuButton" onclick="clear(this);" style="cursor: pointer;">
            <img src="img/delete.png" /><br />
            <span class="i18n">清 é™¤</span></button>
          <button id="DrawPlaneBtn" class="MenuButton MenuButtonLast" onclick="startQuery(this);" style="cursor: pointer;">
            <img src="../commonImg/polygon.png" /><br />
            <span class="i18n">开始统计</span></button>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <object id="SGWorld" style="display:none" classid="CLSID:3a4f9199-65a8-11d5-85c1-0001023952c1"></object>
      </td>
    </tr>
  </table>
</body>
</html>
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpatialQuery.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,164 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>空间分析</title>
  <meta http-equiv="Expires" content="0" />
  <meta http-equiv="Cache" content="no-cache" />
  <meta http-equiv="Pragma" content="no-cache" />
  <meta http-equiv="Cache-control" content="no-cache" />
  <!--<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />-->
  <meta http-equiv="X-UA-Compatible" content="IE=9" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script src="../Jquery/jquery.min.js"></script>
  <script src="../ToolsCommon71.js"></script>
  <link href="../Style.css" rel="StyleSheet" type="text/css" />
  <style>
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
      width: 100%;
    }
  </style>
  <script>
    $(function () {
      init();
    });
    function init() {
      window.ondragstart = function () { return false; }
      refreshList();
    }
    function refreshList() {
      try {
        $("#LayerId").html("");
        var layers = [], index = 0;
        BuildObjectsList(SGWorld.ProjectTree.RootID, layers, 36);
        layers.forEach(function (val) {
          var name = SGWorld.ProjectTree.GetItemName(val);
          $("#LayerId").append("<option value=" + val + (0 == index ? " selected='selected' " : "") + ">" + name + "</option>");
          index++;
        });
        if (layers.length) SGWorld.ProjectTree.SelectItem(layers[0]);
      } catch (e) {
        console.log(e);
      }
    }
    function changeLayer(e) {
      var id = $(e).val();
      if (id) SGWorld.ProjectTree.SelectItem(id);
    }
    var buffer = 0;
    function changeBuffer(e) {
      var val = $(e).val();
      if (val == buffer || isNaN(val)) return;
      buffer = parseFloat(val);
      SGWorld.Command.Execute(1096, buffer);
    }
    function changeSR(e) {
      var val = parseInt($(e).val());
      SGWorld.Command.Execute(1097, val);
    }
    function openPropTab(e) {
      SGWorld.Command.Execute(1086, null);
    }
    function startQuery(e) {
      var id = parseInt($("#SelectType").val());
      SGWorld.Command.Execute(id, null);
    }
  </script>
</head>
<body class="hideUntillTranslated">
  <table style="width: 100%; border: 0;" cellspacing="0" cellpadding="2">
    <tr>
      <td class="ToolTopArea" id="TopAreaTD" style="width: 100%; vertical-align: middle;">
        <table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td width="55px">
              <img style="margin-left: 5px;" src="img/ToolIcon.png" alt="" /></td>
            <td id="TitleTD" align="center" class="s12w i18n">空间分析</td>
            <td align="right" id="CloseHelpTd">
              <img style="margin-right: 5px; cursor: pointer;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="帮助" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))"/></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td class="ToolTopSeperator"></td>
    </tr>
    <tr class="s8">
      <td>
        <table class="PropertiesSheet" cellspacing="0" cellpadding="2">
          <tr class='TableOtherLine'>
            <td class="s8b">
              <label for="Mode" class="i18n">选择图层</label>
            </td>
            <td>&nbsp;<select id="LayerId" onchange="changeLayer(this);" style="width: 200pt;"></select>
              &nbsp;&nbsp;<span id="refresh" onclick="refreshList();" style="text-decoration: underline; cursor: pointer;" class="i18n">刷新</span>
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">缓冲距离</label>
            </td>
            <td>&nbsp;<input id="Buffer" type="text" style="width: 95pt;" value="0" size="7" onchange="CheckNumberEx(Buffer, 0, 0, 9999999); changeBuffer(this);" />
              &nbsp;&nbsp;ç±³
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">空间关系</label>
            </td>
            <td>&nbsp;<select id="SpatialRelationship" onchange="changeSR(this);" style="width: 100pt;">
              <option class="i18n" value="1" selected="selected">相交</option>
              <option class="i18n" value="2">包含</option>
            </select>
            </td>
          </tr>
          <tr>
            <td class="s8b">
              <label for="Mode" class="i18n">查询类型</label>
            </td>
            <td>&nbsp;<select id="SelectType" style="width: 100pt;">
              <option value="1071" selected="selected">面查</option>
              <option value="1072">线查</option>
              <option value="1073">点查</option>
              <option value="1156">选择对象</option>
            </select>
            </td>
          </tr>
        </table>
      </td>
    </tr>
    <tr class="s8">
      <td align="center" class="ToolButtonsArea">
        <div id="SurfaceDiv">
          <button class="MenuButton" onclick="openPropTab(this);" style="cursor: pointer;">
            <img src="../commonImg/prop.png" /><br />
            <span class="i18n">属性表</span></button>
          <button class="MenuButton MenuButtonLast" onclick="startQuery(this);" style="cursor: pointer;">
            <img src="../commonImg/polygon.png" /><br />
            <span class="i18n">开始查询</span></button>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <object id="SGWorld" classid="CLSID:3a4f9199-65a8-11d5-85c1-0001023952c1"></object>
      </td>
    </tr>
  </table>
</body>
</html>
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/img/ToolIcon.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/Style.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,240 @@
html { overflow:hidden;height:100%;width:100%}
body {  background-color: White;  background-repeat: no-repeat; overflow-x:hidden; overflow-y:auto; height:100%;width:100%; }
.helpHtml { overflow:inherit}
.background {  background-color: #555555; background-image: url(img\background.gif); background-repeat: no-repeat}
.s6 {font-family:  Calibri,Arial; font-size: 8pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
.s7 {font-family:  Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
.s7red {font-family:  Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #B90000; text-decoration: none;}
.s8 {font-family:  Calibri, Arial; font-size: 10pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
.s8w {font-family:  Calibri,Arial; font-size: 10pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none;}
.s8b {font-family:  Calibri,Arial; font-size: 10pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;}
.s8bu {font-family:  Calibri, Arial; font-size: 10pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: underline;}
.s9 {font-family:  Calibri,Arial; font-size: 11pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
.s9b {font-family:  Calibri,Arial; font-size: 11pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;}
.s9w {font-family:  Calibri,Arial; font-size: 11pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none;}
.s9red{font-family:   Calibri,Arial;font-size: 11pt;font-style: normal;line-height: normal;font-weight: normal;font-variant: normal;text-transform: none;color: #B90000;text-decoration: none;}
.s9bred{font-family:   Calibri,Arial;font-size: 11pt;font-style: normal;line-height: normal;font-weight: bold;font-variant: normal;text-transform: none;color: #B90000;text-decoration: none;}
.s10 {font-family:  Calibri,Arial; font-size: 12pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
.s10w {font-family:  Calibri,Arial; font-size: 12pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none;}
.s10b {font-family:  Calibri,Arial; font-size: 12pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;}
.s12 {font-family:  Calibri,Arial; font-size: 13pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
.s12b {font-family:  Calibri,Arial; font-size: 13pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;}
.s12w {font-family:  Calibri,Arial; font-size: 13pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none;}
.s13b {font-family:  Calibri,Arial; font-size: 14pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;}
.s14b {font-family:  Calibri,Arial; font-size: 16pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;}
.s14bi {font-family:  Calibri,Arial; font-size: 16pt; font-style: italic; font-weight: bold; color: #000000; text-decoration: none;}
.s18 {font-family:  Calibri,Arial; font-size: 18pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
p {font-family:  Calibri, Arial; font-size: 11pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
span {font-family:  Calibri, Arial; font-size: 10pt;  }
h1    {margin-top:0in;    margin-right:0in;margin-bottom:12.0pt;    margin-left:.5in;    text-indent:-.5in;    page-break-before:always;    page-break-after:avoid;    border:none;    padding:0in;    font-size:16.0pt;    font-family:Calibri;    text-transform:uppercase;    font-weight:bold;}
h2    {margin-top:24.0pt;    margin-right:0in;    margin-bottom:0in;    margin-left:0in;    margin-bottom:.0001pt;    page-break-after:avoid;    font-size:14.0pt;    font-family:Calibri;    font-weight:bold;}
h3    {margin-top:12.0pt;    margin-right:0in;    margin-bottom:3.0pt;    margin-left:0in;    page-break-after:avoid;    font-size:11.0pt;    font-family:Calibri;    font-weight:bold;}
h4    {margin-top:6.0pt;    margin-right:0in;    margin-bottom:0in;    margin-left:0in;    margin-bottom:.0001pt;    page-break-after:avoid;    font-size:11.0pt;    font-family:Calibri;    font-weight:bold;}
h5    {margin-top:6.0pt;    margin-right:0in;    margin-bottom:0in;    margin-left:0in;    margin-bottom:.0001pt;    page-break-after:avoid;    font-size:8.0pt;    font-family:Verdana;    color:red;    font-weight:bold;}
h6    {margin-top:12.0pt;    margin-right:0in;    margin-bottom:3.0pt;    margin-left:0in;    text-align:justify;    font-size:11.0pt;    font-family:"ITCCentury Light";    font-weight:bold;}
.HelpTextHeader {font-family:  Calibri,Arial; font-size: 24px; font-style: normal; font-weight: normal; color: #007F7F; text-decoration: none;}
.HelpText {font-family:  Calibri,Arial; font-size: 14px; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
.ToolTopArea {background-color: #151515; height:30pt; color:#FFFFFF; font-weight:bold; font-size:9pt; vertical-align:middle; }
.ToolTopSeperator{background-color: #151515; height:1pt;}
.PropertiesSheet {background-color:#ffffff;width:100%; border-collapse: collapse;}
.PropertiesSheet td { border:1pt solid #cccccc; }
.TableOtherLine{background-color:#ffffff; }
.ToolButtonsArea {background-color:#151515; }
.MenuButton{height: 56pt;width: 48pt;padding: 1pt;white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #606060;font-family:  Calibri,Arial; font-size: 10pt;  color:white; line-height:120%}
.MenuButton2{height: 34pt;width: 34pt;padding: 2pt;white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #606060;font-family:  Calibri,Arial; font-size: 10pt;  color:white; line-height:120%}
.MenuButton img {margin-bottom: 4pt; width:24pt;}
.MenuButton:hover{background-color:#2B2B2B; }
.MenuButton2:hover{background-color:#2B2B2B;cursor: pointer;}
.MenuButtonLast{border-right:0pt}
.MenuButtonHighlight{background-color:#004975;font-weight: bold;}
.MenuButtonHighlight:hover{background-color:#0CC2DE; }
.MenuButtonMedium {height: 36pt;width: 48pt;margin: 2pt;white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #76757A;font-family:  Calibri,Arial; font-size: 10pt;  color:white;line-height:120%; }
.MenuButtonMedium:hover{background-color:#2B2B2B; }
.MenuButtonSmall {height: 15pt;margin: 0pt;white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #76757A;font-family:  Calibri,Arial; font-size: 10pt;  color:white; }
.MenuButtonSmallWhite {height: 15pt;margin: 0pt;white-space: normal;padding-left:4pt; padding-right: 4pt; background-color:white;border:0pt; border-right:1pt solid #000000;font-family:  Calibri,Arial; font-size: 10pt;  color:black;cursor: pointer; }
.MenuButtonSmall:hover{background-color:#2B2B2B; }
.MenuButtonSmallRound {margin: 0pt;padding: 2px 8px 2px 8px ; white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #76757A;font-family:  Calibri,Arial; font-size: 12pt;  color:white; border-radius: 3px; }
.MenuButtonSmallRound:hover{background-color:#2B2B2B; cursor: pointer;}
.MenuButtonSmallRoundOutline {margin: 0pt;padding: 2px 8px 2px 8px ; white-space: normal; background-color:#fafafa;border:1px solid #dddddd;font-family:  Calibri,Arial; font-size: 12pt; font-weight: normal;  color:black; border-radius: 3px; box-shadow: 0px 0px 1px 2px rgba(0,0,0,.04);}
.MenuButtonSmallRoundOutline:hover{border:1px solid #151515; cursor: pointer;}
.MenuButtonSmallRoundOutlineChecked { background-color:#0CC2DE;border:1px solid #cccccc; color:white; }
.MenuButtonWhiteMedium{background-color:white; padding: 5px 5px 5px 5px; width:48px; height:48px;border:0pt;box-shadow: 0px 0px 4px 2px rgba(0,0,0,.04);border-radius: 3px; margin-left: 4px; margin-right: 4px;}
.MenuButtonWhiteMedium:hover{background-color:#A4E8FF; cursor: pointer;}
.MenuButtonBlueShadow {background-color:#F0F7FF ; border:1px solid rgba(164, 232, 255, 1); border-radius: 2px; box-shadow: 0px 0px 8px 1px rgba(164, 232, 255, 1);}
.MenuButtonShort {height:20px;padding: 0px 4px 0px 4px ;}
.pointer {cursor: pointer}
.SpanOutline {margin: 0pt;padding: 2px 8px 2px 8px ; white-space: normal; background-color:#fafafa;border:1px solid #dddddd;font-family:  Calibri,Arial; font-size: 12pt; font-weight: normal;  color:black; border-radius: 3px; box-shadow: 0px 0px 1px 2px rgba(0,0,0,.04);}
.ML5 {margin-left: 5px;}
.MR5 {margin-right: 5px;}
.tabArea {background-color:#151515;}
.tab {float: left;background-color: #2B2B2B;border: solid 1pt #2B2B2B;margin: 0px 3px 0px 3px;color:white;padding: 3pt;cursor: pointer; }
.tabSelected {background-color: #0CC2DE;border:solid 1pt #0CC2DE;}
.scrollbar-dark {scrollbar-base-color:white;scrollbar-face-color: #2b2b2b;scrollbar-arrow-color:white; scrollbar-shadow-color:#2b2b2b;scrollbar-3dlight-color: #2b2b2b;scrollbar-highlight-color:#2b2b2b;scrollbar-track-color: white;  }
.SectionCaption{font-style:normal;  font-weight: bold;font-size:12pt;font-family:  Calibri,Arial; color:rgb(69,103,131)}
.SectionText{font-style:normal;  font-weight: normal;font-size:8pt;font-family:  Calibri,Arial; color:rgb(49,74,95)}
.SectionTextWhite{font-style:normal;  font-weight: normal;font-size:8pt;font-family:  Calibri,Arial; color:black}
.Footer{BORDER-top: rgb(198,207,214) 5pt solid;BORDER-bottom:rgb(198,207,214) 2pt solid;BACKGROUND-COLOR: rgb(239,243,247);font-style:normal;  font-weight: normal;font-size:10pt;font-family:  Calibri,Arial; color:rgb(49,74,95)}
li{margin: 0 0 0 9; list-style-type: square; font-family:  Calibri, Arial; font-size: 11pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
ol li{ list-style-type:inherit !important;  }
A {COLOR: #000000; text-decoration: none; font-weight: normal; cursor:pointer; }
A:link {COLOR: #000000; text-decoration: none; font-weight: bold; }
A:visited {color: #000000; text-decoration: none;; font-weight: bold;}
A:hover {COLOR: #E2A21B; text-decoration: none;}
td.ColorWin {  padding: 0 0 0 0;  margin:  0 0 0 0;  border:  0 0 0 0;  height: 12pt;  width: 12pt;}
#PS.td {border-bottom: solid 1pt #ffcc00;}
Select {width:98pt;font-family:  Calibri,Arial;  font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
.SelectDark {border-style:solid; border-width: 1px; border-color: white ; height:20px; font-family:  Calibri,Arial;  font-size: 9pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none; background-color:#000000;background-image: url(http://i62.tinypic.com/15xvbd5.png) no-repeat 96% 0; }
INPUT[type=text] {width:95pt;font-family:  Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none; border: solid 1pt #aaaaaa;padding: 1px}
INPUT.checkbox {width:15pt;font-family:  Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
INPUT.file {width:160pt;font-family:  Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}
INPUT.ColorButton {width:50pt;font-family:  Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none;}
INPUT.ColorButton2 {width:97pt;font-family:  Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal;}
INPUT.button {width:124pt;border-width:1;filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#FFFAFAE2', endColorstr='#FFC0C18B')}
INPUT.button2 {width:124pt;border-width:1;filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#FFFFEEE7', endColorstr='#FFDBA47B')}
td{font-style:normal;  font-weight: normal;font-size:9pt;font-family:  Calibri,Arial; color:rgb(49,74,95)}
.SelectSymbol1 {height: 150pt; overflow:auto}
.SelectSymbol2 {height: 150pt; overflow:auto; background-color: #FFFFFF;}
.SelectedSymbol {font-style: italic; background-color: #00FFFF;}
.UnSelectedSymbol {font-style: normal; background-color: #FFFFFF;}
.PropertiesTable{border-collapse :separate;BORDER-RIGHT: #c6cbce 1pt solid;  BORDER-TOP: #c6cbce 1pt solid; BORDER-LEFT: #c6cbce 1pt solid; BORDER-BOTTOM: #c6cbce 1pt solid; BACKGROUND-COLOR: #f7f7f7}
.PropertiesTDTop{PADDING-Left: 1pt; BORDER-BOTTOM: #c6cbce 1pt solid;font-family:  Calibri,Arial; FONT-SIZE: 8pt;font-weight: bold;BACKGROUND-COLOR: #e6e3e0;}
.PropertiesTD{PADDING-Left: 1pt; BORDER-BOTTOM: #c6cbce 1pt solid;font-family:  Calibri,Arial; FONT-SIZE: 8pt;font-weight: normal;}
.ButtonYellow{BACKGROUND-COLOR: #ffffff;PADDING-RIGHT: 0pt; BACKGROUND-POSITION: left top; PADDING-LEFT: 0pt; FONT-WEIGHT: bold; FONT-SIZE: 8pt;  PADDING-BOTTOM: 0pt; MARGIN: 0pt; COLOR: black; BORDER-TOP-STYLE: none; PADDING-TOP: 0pt; BACKGROUND-REPEAT: no-repeat; FONT-FAMILY: Calibri,Arial; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 21pt; BORDER-BOTTOM-STYLE: none;text-align :center;line-height:15pt;cursor:hand}
.ButtonYellowLeftTD{BACKGROUND-IMAGE: url(Images\ButtonYellowLeft.gif);width:2pt; background-repeat:no-repeat}
.ButtonYellowCenterTD{width:100% ;BACKGROUND-IMAGE: url(Images\ButtonYellowCenter.gif);text-align:center ; FONT-WEIGHT: bold; FONT-SIZE: 8pt;  PADDING-BOTTOM: 0pt; MARGIN: 0pt; COLOR: black; FONT-FAMILY: Calibri,Arial;height:21pt}
.ButtonYellowRightTD{BACKGROUND-IMAGE: url(Images\ButtonYellowRight.gif);width:3pt; background-repeat:no-repeat}
.ButtonYellowTable{PADDING: 0pt; MARGIN: 0pt; WIDTH: 100%; HEIGHT: 100%;  BORDER-STYLE:none}
.link {cursor:pointer; }
.link2 {cursor:pointer;COLOR: #000000; text-decoration: none;  }
.link2:hover {COLOR: #E2A21B; text-decoration: none;cursor: pointer;}
.underline {text-decoration: underline;}
a.button {
    background: transparent url('commonImg/bg_button_a.gif') no-repeat scroll top right;
    color: #444;
    display: block;
    float: left;
    font: normal 9pt Calibri,Arial, sans-serif;
    height: 23pt;
    margin-right: 5pt;
    padding-right: 8pt;
    text-decoration: none;
}
a.button span {
    background: transparent url('commonImg/bg_button_span.gif') no-repeat;
    display: block;
    line-height: 10pt;
    padding: 4pt 0 4pt 8pt;
}
a.button:active {
    background-position: bottom right;
    color: #000;
    outline: none;
}
a.button:active span {
    background-position: bottom left;
    padding: 5pt 0 3pt 8pt;
}
.hideUntillTranslated
{
    display:none;
}
/* Animated checkbox */
.switch {
    float: inherit ;
    position: relative;
    display: inline-block;
    width: 30px;
    left: 5px;
    height: 4px;
    top:8px;
}
.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}
.slider {
    position: absolute;
    cursor: pointer;
    top: -4px;
    left: -1px;
    right: 0;
    bottom: 0;
    background-color: #88898E;
    -webkit-transition: 0.4s;
    transition: 0.4s;
}
.slider:before {
  position: absolute;
  content: "";
  height: 13px;
  width: 13px;
  left: -2px;
  bottom: -4px;
  background-color:white;
  border: 2px solid #88898E;
  -webkit-transition: 0.4s;
  transition: 0.4s;
}
input:checked + .slider {
  background-color: #00869E;
}
input:checked + .slider:before {
  border: 2px solid #00869E;
}
input:focus + .slider {
    box-shadow: 0 0 1px #00869E;
}
input:checked + .slider:before {
  -webkit-transform: translateX(20px);
  -ms-transform: translateX(20px);
  transform: translateX(20px);
}
/* Rounded sliders */
.slider.round {
  border-radius: 34px;
}
.slider.round:before {
  border-radius: 50%;
}
/* new selection box*/
.selectNew {font-size: 11pt;  font-family: Calibri,Arial;    color: #000000;   padding: 1px 15px 1px 1px;  width: 100%;  max-width: 100%;  box-sizing: border-box;  margin: 0;  border: solid 1px #dddddd;box-shadow: 0px 0px 1px 2px rgba(0,0,0,.04);  border-radius: 1px;  -moz-appearance: none; -webkit-appearance: none; appearance: none; background-color: #ffffff;
  background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),    linear-gradient(to bottom, #ffffff 0%,#ffffff 100%);  background-repeat: no-repeat, repeat;  background-position: right 5px top 50%, 0 0;  background-size: 8px auto, 100%;}
/* Hide arrow icon in IE browsers */
.selectNew::-ms-expand {  display: none;}
/* Hover style */
.selectNew:hover {  border-color: #000000;}
/* Focus style */
.selectNew:focus {  border-color: #000000;  /* It'd be nice to use -webkit-focus-ring-color here but it doesn't work on box-shadow */
  color: #000000;   outline: none;}
/* Set options to normal weight */
.selectNew option {  font-weight:normal;}
/* Disabled styles */
.selectNew:disabled, .selectNew[aria-disabled=true] {  color: graytext;  background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),    linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%);}
.selectNew:disabled:hover, .selectNew[aria-disabled=true] {  border-color: #aaa;}
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon65.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,703 @@
/*!
 * jQuery JavaScript Library v1.4.2
 * http://jquery.com/
 *
 * Copyright 2010, John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 * Copyright 2010, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses.
 *
 * Date: Sat Feb 13 22:33:48 2010 -0500
 */
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
/*
     JSON2.js
http://www.JSON.org/json2.js
2011-01-18
Public Domain.
NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
See http://www.JSON.org/js.html
*/
if(!this.JSON){this.JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());
/* jQuery cookie */
jQuery.cookie=function(d,c,a){if(typeof c!="undefined"){a=a||{};if(c===null)c="",a.expires=-1;var b="";if(a.expires&&(typeof a.expires=="number"||a.expires.toUTCString))typeof a.expires=="number"?(b=new Date,b.setTime(b.getTime()+a.expires*864E5)):b=a.expires,b="; expires="+b.toUTCString();var e=a.path?"; path="+a.path:"",f=a.domain?"; domain="+a.domain:"",a=a.secure?"; secure":"";document.cookie=[d,"=",encodeURIComponent(c),b,e,f,a].join("")}else{c=null;if(document.cookie&&document.cookie!=""){a=document.cookie.split(";");for(b=0;b<a.length;b++)if(e=jQuery.trim(a[b]),e.substring(0,d.length+1)==d+"="){c=decodeURIComponent(e.substring(d.length+1));break}}return c}};
/* color picker */
"use strict"; window.jscolor || (window.jscolor = function () { var e = { register: function () { e.attachDOMReadyEvent(e.init), e.attachEvent(document, "mousedown", e.onDocumentMouseDown), e.attachEvent(document, "touchstart", e.onDocumentTouchStart), e.attachEvent(window, "resize", e.onWindowResize) }, init: function () { e.jscolor.lookupClass && e.jscolor.installByClassName(e.jscolor.lookupClass) }, tryInstallOnElements: function (t, n) { var r = new RegExp("(^|\\s)(" + n + ")(\\s*(\\{[^}]*\\})|\\s|$)", "i"); for (var i = 0; i < t.length; i += 1) { if (t[i].type !== undefined && t[i].type.toLowerCase() == "color" && e.isColorAttrSupported) continue; var s; if (!t[i].jscolor && t[i].className && (s = t[i].className.match(r))) { var o = t[i], u = null, a = e.getDataAttr(o, "jscolor"); a !== null ? u = a : s[4] && (u = s[4]); var f = {}; if (u) try { f = (new Function("return (" + u + ")"))() } catch (l) { e.warn("Error parsing jscolor options: " + l + ":\n" + u) } o.jscolor = new e.jscolor(o, f) } } }, isColorAttrSupported: function () { var e = document.createElement("input"); if (e.setAttribute) { e.setAttribute("type", "color"); if (e.type.toLowerCase() == "color") return !0 } return !1 } (), isCanvasSupported: function () { var e = document.createElement("canvas"); return !!e.getContext && !!e.getContext("2d") } (), fetchElement: function (e) { return typeof e == "string" ? document.getElementById(e) : e }, isElementType: function (e, t) { return e.nodeName.toLowerCase() === t.toLowerCase() }, getDataAttr: function (e, t) { var n = "data-" + t, r = e.getAttribute(n); return r !== null ? r : null }, attachEvent: function (e, t, n) { e.addEventListener ? e.addEventListener(t, n, !1) : e.attachEvent && e.attachEvent("on" + t, n) }, detachEvent: function (e, t, n) { e.removeEventListener ? e.removeEventListener(t, n, !1) : e.detachEvent && e.detachEvent("on" + t, n) }, _attachedGroupEvents: {}, attachGroupEvent: function (t, n, r, i) { e._attachedGroupEvents.hasOwnProperty(t) || (e._attachedGroupEvents[t] = []), e._attachedGroupEvents[t].push([n, r, i]), e.attachEvent(n, r, i) }, detachGroupEvents: function (t) { if (e._attachedGroupEvents.hasOwnProperty(t)) { for (var n = 0; n < e._attachedGroupEvents[t].length; n += 1) { var r = e._attachedGroupEvents[t][n]; e.detachEvent(r[0], r[1], r[2]) } delete e._attachedGroupEvents[t] } }, attachDOMReadyEvent: function (e) { var t = !1, n = function () { t || (t = !0, e()) }; if (document.readyState === "complete") { setTimeout(n, 1); return } if (document.addEventListener) document.addEventListener("DOMContentLoaded", n, !1), window.addEventListener("load", n, !1); else if (document.attachEvent) { document.attachEvent("onreadystatechange", function () { document.readyState === "complete" && (document.detachEvent("onreadystatechange", arguments.callee), n()) }), window.attachEvent("onload", n); if (document.documentElement.doScroll && window == window.top) { var r = function () { if (!document.body) return; try { document.documentElement.doScroll("left"), n() } catch (e) { setTimeout(r, 1) } }; r() } } }, warn: function (e) { window.console && window.console.warn && window.console.warn(e) }, preventDefault: function (e) { e.preventDefault && e.preventDefault(), e.returnValue = !1 }, captureTarget: function (t) { t.setCapture && (e._capturedTarget = t, e._capturedTarget.setCapture()) }, releaseTarget: function () { e._capturedTarget && (e._capturedTarget.releaseCapture(), e._capturedTarget = null) }, fireEvent: function (e, t) { if (!e) return; if (document.createEvent) { var n = document.createEvent("HTMLEvents"); n.initEvent(t, !0, !0), e.dispatchEvent(n) } else if (document.createEventObject) { var n = document.createEventObject(); e.fireEvent("on" + t, n) } else e["on" + t] && e["on" + t]() }, classNameToList: function (e) { return e.replace(/^\s+|\s+$/g, "").split(/\s+/) }, hasClass: function (e, t) { return t ? -1 != (" " + e.className.replace(/\s+/g, " ") + " ").indexOf(" " + t + " ") : !1 }, setClass: function (t, n) { var r = e.classNameToList(n); for (var i = 0; i < r.length; i += 1) e.hasClass(t, r[i]) || (t.className += (t.className ? " " : "") + r[i]) }, unsetClass: function (t, n) { var r = e.classNameToList(n); for (var i = 0; i < r.length; i += 1) { var s = new RegExp("^\\s*" + r[i] + "\\s*|" + "\\s*" + r[i] + "\\s*$|" + "\\s+" + r[i] + "(\\s+)", "g"); t.className = t.className.replace(s, "$1") } }, getStyle: function (e) { return window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle }, setStyle: function () { var e = document.createElement("div"), t = function (t) { for (var n = 0; n < t.length; n += 1) if (t[n] in e.style) return t[n] }, n = { borderRadius: t(["borderRadius", "MozBorderRadius", "webkitBorderRadius"]), boxShadow: t(["boxShadow", "MozBoxShadow", "webkitBoxShadow"]) }; return function (e, t, r) { switch (t.toLowerCase()) { case "opacity": var i = Math.round(parseFloat(r) * 100); e.style.opacity = r, e.style.filter = "alpha(opacity=" + i + ")"; break; default: e.style[n[t]] = r } } } (), setBorderRadius: function (t, n) { e.setStyle(t, "borderRadius", n || "0") }, setBoxShadow: function (t, n) { e.setStyle(t, "boxShadow", n || "none") }, getElementPos: function (t, n) { var r = 0, i = 0, s = t.getBoundingClientRect(); r = s.left, i = s.top; if (!n) { var o = e.getViewPos(); r += o[0], i += o[1] } return [r, i] }, getElementSize: function (e) { return [e.offsetWidth, e.offsetHeight] }, getAbsPointerPos: function (e) { e || (e = window.event); var t = 0, n = 0; return typeof e.changedTouches != "undefined" && e.changedTouches.length ? (t = e.changedTouches[0].clientX, n = e.changedTouches[0].clientY) : typeof e.clientX == "number" && (t = e.clientX, n = e.clientY), { x: t, y: n} }, getRelPointerPos: function (e) { e || (e = window.event); var t = e.target || e.srcElement, n = t.getBoundingClientRect(), r = 0, i = 0, s = 0, o = 0; return typeof e.changedTouches != "undefined" && e.changedTouches.length ? (s = e.changedTouches[0].clientX, o = e.changedTouches[0].clientY) : typeof e.clientX == "number" && (s = e.clientX, o = e.clientY), r = s - n.left, i = o - n.top, { x: r, y: i} }, getViewPos: function () { var e = document.documentElement; return [(window.pageXOffset || e.scrollLeft) - (e.clientLeft || 0), (window.pageYOffset || e.scrollTop) - (e.clientTop || 0)] }, getViewSize: function () { var e = document.documentElement; return [window.innerWidth || e.clientWidth, window.innerHeight || e.clientHeight] }, redrawPosition: function () { if (e.picker && e.picker.owner) { var t = e.picker.owner, n, r; t.fixed ? (n = e.getElementPos(t.targetElement, !0), r = [0, 0]) : (n = e.getElementPos(t.targetElement), r = e.getViewPos()); var i = e.getElementSize(t.targetElement), s = e.getViewSize(), o = e.getPickerOuterDims(t), u, a, f; switch (t.position.toLowerCase()) { case "left": u = 1, a = 0, f = -1; break; case "right": u = 1, a = 0, f = 1; break; case "top": u = 0, a = 1, f = -1; break; default: u = 0, a = 1, f = 1 } var l = (i[a] + o[a]) / 2; if (!t.smartPosition) var c = [n[u], n[a] + i[a] - l + l * f]; else var c = [-r[u] + n[u] + o[u] > s[u] ? -r[u] + n[u] + i[u] / 2 > s[u] / 2 && n[u] + i[u] - o[u] >= 0 ? n[u] + i[u] - o[u] : n[u] : n[u], -r[a] + n[a] + i[a] + o[a] - l + l * f > s[a] ? -r[a] + n[a] + i[a] / 2 > s[a] / 2 && n[a] + i[a] - l - l * f >= 0 ? n[a] + i[a] - l - l * f : n[a] + i[a] - l + l * f : n[a] + i[a] - l + l * f >= 0 ? n[a] + i[a] - l + l * f : n[a] + i[a] - l - l * f]; var h = c[u], p = c[a], d = t.fixed ? "fixed" : "absolute", v = (c[0] + o[0] > n[0] || c[0] < n[0] + i[0]) && c[1] + o[1] < n[1] + i[1]; e._drawPosition(t, h, p, d, v) } }, _drawPosition: function (t, n, r, i, s) { var o = s ? 0 : t.shadowBlur; e.picker.wrap.style.position = i, e.picker.wrap.style.left = n + "px", e.picker.wrap.style.top = r + "px", e.setBoxShadow(e.picker.boxS, t.shadow ? new e.BoxShadow(0, o, t.shadowBlur, 0, t.shadowColor) : null) }, getPickerDims: function (t) { var n = !!e.getSliderComponent(t), r = [2 * t.insetWidth + 2 * t.padding + t.width + (n ? 2 * t.insetWidth + e.getPadToSliderPadding(t) + t.sliderSize : 0), 2 * t.insetWidth + 2 * t.padding + t.height + (t.closable ? 2 * t.insetWidth + t.padding + t.buttonHeight : 0)]; return r }, getPickerOuterDims: function (t) { var n = e.getPickerDims(t); return [n[0] + 2 * t.borderWidth, n[1] + 2 * t.borderWidth] }, getPadToSliderPadding: function (e) { return Math.max(e.padding, 1.5 * (2 * e.pointerBorderWidth + e.pointerThickness)) }, getPadYComponent: function (e) { switch (e.mode.charAt(1).toLowerCase()) { case "v": return "v" } return "s" }, getSliderComponent: function (e) { if (e.mode.length > 2) switch (e.mode.charAt(2).toLowerCase()) { case "s": return "s"; case "v": return "v" } return null }, onDocumentMouseDown: function (t) { t || (t = window.event); var n = t.target || t.srcElement; n._jscLinkedInstance ? n._jscLinkedInstance.showOnClick && n._jscLinkedInstance.show() : n._jscControlName ? e.onControlPointerStart(t, n, n._jscControlName, "mouse") : e.picker && e.picker.owner && e.picker.owner.hide() }, onDocumentTouchStart: function (t) { t || (t = window.event); var n = t.target || t.srcElement; n._jscLinkedInstance ? n._jscLinkedInstance.showOnClick && n._jscLinkedInstance.show() : n._jscControlName ? e.onControlPointerStart(t, n, n._jscControlName, "touch") : e.picker && e.picker.owner && e.picker.owner.hide() }, onWindowResize: function (t) { e.redrawPosition() }, onParentScroll: function (t) { e.picker && e.picker.owner && e.picker.owner.hide() }, _pointerMoveEvent: { mouse: "mousemove", touch: "touchmove" }, _pointerEndEvent: { mouse: "mouseup", touch: "touchend" }, _pointerOrigin: null, _capturedTarget: null, onControlPointerStart: function (t, n, r, i) { var s = n._jscInstance; e.preventDefault(t), e.captureTarget(n); var o = function (s, o) { e.attachGroupEvent("drag", s, e._pointerMoveEvent[i], e.onDocumentPointerMove(t, n, r, i, o)), e.attachGroupEvent("drag", s, e._pointerEndEvent[i], e.onDocumentPointerEnd(t, n, r, i)) }; o(document, [0, 0]); if (window.parent && window.frameElement) { var u = window.frameElement.getBoundingClientRect(), a = [-u.left, -u.top]; o(window.parent.window.document, a) } var f = e.getAbsPointerPos(t), l = e.getRelPointerPos(t); e._pointerOrigin = { x: f.x - l.x, y: f.y - l.y }; switch (r) { case "pad": switch (e.getSliderComponent(s)) { case "s": s.hsv[1] === 0 && s.fromHSV(null, 100, null); break; case "v": s.hsv[2] === 0 && s.fromHSV(null, null, 100) } e.setPad(s, t, 0, 0); break; case "sld": e.setSld(s, t, 0) } e.dispatchFineChange(s) }, onDocumentPointerMove: function (t, n, r, i, s) { return function (t) { var i = n._jscInstance; switch (r) { case "pad": t || (t = window.event), e.setPad(i, t, s[0], s[1]), e.dispatchFineChange(i); break; case "sld": t || (t = window.event), e.setSld(i, t, s[1]), e.dispatchFineChange(i) } } }, onDocumentPointerEnd: function (t, n, r, i) { return function (t) { var r = n._jscInstance; e.detachGroupEvents("drag"), e.releaseTarget(), e.dispatchChange(r) } }, dispatchChange: function (t) { t.valueElement && e.isElementType(t.valueElement, "input") && e.fireEvent(t.valueElement, "change") }, dispatchFineChange: function (e) { if (e.onFineChange) { var t; typeof e.onFineChange == "string" ? t = new Function(e.onFineChange) : t = e.onFineChange, t.call(e) } }, setPad: function (t, n, r, i) { var s = e.getAbsPointerPos(n), o = r + s.x - e._pointerOrigin.x - t.padding - t.insetWidth, u = i + s.y - e._pointerOrigin.y - t.padding - t.insetWidth, a = o * (360 / (t.width - 1)), f = 100 - u * (100 / (t.height - 1)); switch (e.getPadYComponent(t)) { case "s": t.fromHSV(a, f, null, e.leaveSld); break; case "v": t.fromHSV(a, null, f, e.leaveSld) } }, setSld: function (t, n, r) { var i = e.getAbsPointerPos(n), s = r + i.y - e._pointerOrigin.y - t.padding - t.insetWidth, o = 100 - s * (100 / (t.height - 1)); switch (e.getSliderComponent(t)) { case "s": t.fromHSV(null, o, null, e.leavePad); break; case "v": t.fromHSV(null, null, o, e.leavePad) } }, _vmlNS: "jsc_vml_", _vmlCSS: "jsc_vml_css_", _vmlReady: !1, initVML: function () { if (!e._vmlReady) { var t = document; t.namespaces[e._vmlNS] || t.namespaces.add(e._vmlNS, "urn:schemas-microsoft-com:vml"); if (!t.styleSheets[e._vmlCSS]) { var n = ["shape", "shapetype", "group", "background", "path", "formulas", "handles", "fill", "stroke", "shadow", "textbox", "textpath", "imagedata", "line", "polyline", "curve", "rect", "roundrect", "oval", "arc", "image"], r = t.createStyleSheet(); r.owningElement.id = e._vmlCSS; for (var i = 0; i < n.length; i += 1) r.addRule(e._vmlNS + "\\:" + n[i], "behavior:url(#default#VML);") } e._vmlReady = !0 } }, createPalette: function () { var t = { elm: null, draw: null }; if (e.isCanvasSupported) { var n = document.createElement("canvas"), r = n.getContext("2d"), i = function (e, t, i) { n.width = e, n.height = t, r.clearRect(0, 0, n.width, n.height); var s = r.createLinearGradient(0, 0, n.width, 0); s.addColorStop(0, "#F00"), s.addColorStop(1 / 6, "#FF0"), s.addColorStop(2 / 6, "#0F0"), s.addColorStop(.5, "#0FF"), s.addColorStop(4 / 6, "#00F"), s.addColorStop(5 / 6, "#F0F"), s.addColorStop(1, "#F00"), r.fillStyle = s, r.fillRect(0, 0, n.width, n.height); var o = r.createLinearGradient(0, 0, 0, n.height); switch (i.toLowerCase()) { case "s": o.addColorStop(0, "rgba(255,255,255,0)"), o.addColorStop(1, "rgba(255,255,255,1)"); break; case "v": o.addColorStop(0, "rgba(0,0,0,0)"), o.addColorStop(1, "rgba(0,0,0,1)") } r.fillStyle = o, r.fillRect(0, 0, n.width, n.height) }; t.elm = n, t.draw = i } else { e.initVML(); var s = document.createElement("div"); s.style.position = "relative", s.style.overflow = "hidden"; var o = document.createElement(e._vmlNS + ":fill"); o.type = "gradient", o.method = "linear", o.angle = "90", o.colors = "16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0"; var u = document.createElement(e._vmlNS + ":rect"); u.style.position = "absolute", u.style.left = "-1px", u.style.top = "-1px", u.stroked = !1, u.appendChild(o), s.appendChild(u); var a = document.createElement(e._vmlNS + ":fill"); a.type = "gradient", a.method = "linear", a.angle = "180", a.opacity = "0"; var f = document.createElement(e._vmlNS + ":rect"); f.style.position = "absolute", f.style.left = "-1px", f.style.top = "-1px", f.stroked = !1, f.appendChild(a), s.appendChild(f); var i = function (e, t, n) { s.style.width = e + "px", s.style.height = t + "px", u.style.width = f.style.width = e + 1 + "px", u.style.height = f.style.height = t + 1 + "px", o.color = "#F00", o.color2 = "#F00"; switch (n.toLowerCase()) { case "s": a.color = a.color2 = "#FFF"; break; case "v": a.color = a.color2 = "#000" } }; t.elm = s, t.draw = i } return t }, createSliderGradient: function () { var t = { elm: null, draw: null }; if (e.isCanvasSupported) { var n = document.createElement("canvas"), r = n.getContext("2d"), i = function (e, t, i, s) { n.width = e, n.height = t, r.clearRect(0, 0, n.width, n.height); var o = r.createLinearGradient(0, 0, 0, n.height); o.addColorStop(0, i), o.addColorStop(1, s), r.fillStyle = o, r.fillRect(0, 0, n.width, n.height) }; t.elm = n, t.draw = i } else { e.initVML(); var s = document.createElement("div"); s.style.position = "relative", s.style.overflow = "hidden"; var o = document.createElement(e._vmlNS + ":fill"); o.type = "gradient", o.method = "linear", o.angle = "180"; var u = document.createElement(e._vmlNS + ":rect"); u.style.position = "absolute", u.style.left = "-1px", u.style.top = "-1px", u.stroked = !1, u.appendChild(o), s.appendChild(u); var i = function (e, t, n, r) { s.style.width = e + "px", s.style.height = t + "px", u.style.width = e + 1 + "px", u.style.height = t + 1 + "px", o.color = n, o.color2 = r }; t.elm = s, t.draw = i } return t }, leaveValue: 1, leaveStyle: 2, leavePad: 4, leaveSld: 8, BoxShadow: function () { var e = function (e, t, n, r, i, s) { this.hShadow = e, this.vShadow = t, this.blur = n, this.spread = r, this.color = i, this.inset = !!s }; return e.prototype.toString = function () { var e = [Math.round(this.hShadow) + "px", Math.round(this.vShadow) + "px", Math.round(this.blur) + "px", Math.round(this.spread) + "px", this.color]; return this.inset && e.push("inset"), e.join(" ") }, e } (), jscolor: function (t, n) { function i(e, t, n) { e /= 255, t /= 255, n /= 255; var r = Math.min(Math.min(e, t), n), i = Math.max(Math.max(e, t), n), s = i - r; if (s === 0) return [null, 0, 100 * i]; var o = e === r ? 3 + (n - t) / s : t === r ? 5 + (e - n) / s : 1 + (t - e) / s; return [60 * (o === 6 ? 0 : o), 100 * (s / i), 100 * i] } function s(e, t, n) { var r = 255 * (n / 100); if (e === null) return [r, r, r]; e /= 60, t /= 100; var i = Math.floor(e), s = i % 2 ? e - i : 1 - (e - i), o = r * (1 - t), u = r * (1 - t * s); switch (i) { case 6: case 0: return [r, u, o]; case 1: return [u, r, o]; case 2: return [o, r, u]; case 3: return [o, u, r]; case 4: return [u, o, r]; case 5: return [r, o, u] } } function o() { e.unsetClass(d.targetElement, d.activeClass), e.picker.wrap.parentNode.removeChild(e.picker.wrap), delete e.picker.owner } function u() { function l() { var e = d.insetColor.split(/\s+/), n = e.length < 2 ? e[0] : e[1] + " " + e[0] + " " + e[0] + " " + e[1]; t.btn.style.borderColor = n } d._processParentElementsInDOM(), e.picker || (e.picker = { owner: null, wrap: document.createElement("div"), box: document.createElement("div"), boxS: document.createElement("div"), boxB: document.createElement("div"), pad: document.createElement("div"), padB: document.createElement("div"), padM: document.createElement("div"), padPal: e.createPalette(), cross: document.createElement("div"), crossBY: document.createElement("div"), crossBX: document.createElement("div"), crossLY: document.createElement("div"), crossLX: document.createElement("div"), sld: document.createElement("div"), sldB: document.createElement("div"), sldM: document.createElement("div"), sldGrad: e.createSliderGradient(), sldPtrS: document.createElement("div"), sldPtrIB: document.createElement("div"), sldPtrMB: document.createElement("div"), sldPtrOB: document.createElement("div"), btn: document.createElement("div"), btnT: document.createElement("span") }, e.picker.pad.appendChild(e.picker.padPal.elm), e.picker.padB.appendChild(e.picker.pad), e.picker.cross.appendChild(e.picker.crossBY), e.picker.cross.appendChild(e.picker.crossBX), e.picker.cross.appendChild(e.picker.crossLY), e.picker.cross.appendChild(e.picker.crossLX), e.picker.padB.appendChild(e.picker.cross), e.picker.box.appendChild(e.picker.padB), e.picker.box.appendChild(e.picker.padM), e.picker.sld.appendChild(e.picker.sldGrad.elm), e.picker.sldB.appendChild(e.picker.sld), e.picker.sldB.appendChild(e.picker.sldPtrOB), e.picker.sldPtrOB.appendChild(e.picker.sldPtrMB), e.picker.sldPtrMB.appendChild(e.picker.sldPtrIB), e.picker.sldPtrIB.appendChild(e.picker.sldPtrS), e.picker.box.appendChild(e.picker.sldB), e.picker.box.appendChild(e.picker.sldM), e.picker.btn.appendChild(e.picker.btnT), e.picker.box.appendChild(e.picker.btn), e.picker.boxB.appendChild(e.picker.box), e.picker.wrap.appendChild(e.picker.boxS), e.picker.wrap.appendChild(e.picker.boxB)); var t = e.picker, n = !!e.getSliderComponent(d), r = e.getPickerDims(d), i = 2 * d.pointerBorderWidth + d.pointerThickness + 2 * d.crossSize, s = e.getPadToSliderPadding(d), o = Math.min(d.borderRadius, Math.round(d.padding * Math.PI)), u = "crosshair"; t.wrap.style.clear = "both", t.wrap.style.width = r[0] + 2 * d.borderWidth + "px", t.wrap.style.height = r[1] + 2 * d.borderWidth + "px", t.wrap.style.zIndex = d.zIndex, t.box.style.width = r[0] + "px", t.box.style.height = r[1] + "px", t.boxS.style.position = "absolute", t.boxS.style.left = "0", t.boxS.style.top = "0", t.boxS.style.width = "100%", t.boxS.style.height = "100%", e.setBorderRadius(t.boxS, o + "px"), t.boxB.style.position = "relative", t.boxB.style.border = d.borderWidth + "px solid", t.boxB.style.borderColor = d.borderColor, t.boxB.style.background = d.backgroundColor, e.setBorderRadius(t.boxB, o + "px"), t.padM.style.background = t.sldM.style.background = "#FFF", e.setStyle(t.padM, "opacity", "0"), e.setStyle(t.sldM, "opacity", "0"), t.pad.style.position = "relative", t.pad.style.width = d.width + "px", t.pad.style.height = d.height + "px", t.padPal.draw(d.width, d.height, e.getPadYComponent(d)), t.padB.style.position = "absolute", t.padB.style.left = d.padding + "px", t.padB.style.top = d.padding + "px", t.padB.style.border = d.insetWidth + "px solid", t.padB.style.borderColor = d.insetColor, t.padM._jscInstance = d, t.padM._jscControlName = "pad", t.padM.style.position = "absolute", t.padM.style.left = "0", t.padM.style.top = "0", t.padM.style.width = d.padding + 2 * d.insetWidth + d.width + s / 2 + "px", t.padM.style.height = r[1] + "px", t.padM.style.cursor = u, t.cross.style.position = "absolute", t.cross.style.left = t.cross.style.top = "0", t.cross.style.width = t.cross.style.height = i + "px", t.crossBY.style.position = t.crossBX.style.position = "absolute", t.crossBY.style.background = t.crossBX.style.background = d.pointerBorderColor, t.crossBY.style.width = t.crossBX.style.height = 2 * d.pointerBorderWidth + d.pointerThickness + "px", t.crossBY.style.height = t.crossBX.style.width = i + "px", t.crossBY.style.left = t.crossBX.style.top = Math.floor(i / 2) - Math.floor(d.pointerThickness / 2) - d.pointerBorderWidth + "px", t.crossBY.style.top = t.crossBX.style.left = "0", t.crossLY.style.position = t.crossLX.style.position = "absolute", t.crossLY.style.background = t.crossLX.style.background = d.pointerColor, t.crossLY.style.height = t.crossLX.style.width = i - 2 * d.pointerBorderWidth + "px", t.crossLY.style.width = t.crossLX.style.height = d.pointerThickness + "px", t.crossLY.style.left = t.crossLX.style.top = Math.floor(i / 2) - Math.floor(d.pointerThickness / 2) + "px", t.crossLY.style.top = t.crossLX.style.left = d.pointerBorderWidth + "px", t.sld.style.overflow = "hidden", t.sld.style.width = d.sliderSize + "px", t.sld.style.height = d.height + "px", t.sldGrad.draw(d.sliderSize, d.height, "#000", "#000"), t.sldB.style.display = n ? "block" : "none", t.sldB.style.position = "absolute", t.sldB.style.right = d.padding + "px", t.sldB.style.top = d.padding + "px", t.sldB.style.border = d.insetWidth + "px solid", t.sldB.style.borderColor = d.insetColor, t.sldM._jscInstance = d, t.sldM._jscControlName = "sld", t.sldM.style.display = n ? "block" : "none", t.sldM.style.position = "absolute", t.sldM.style.right = "0", t.sldM.style.top = "0", t.sldM.style.width = d.sliderSize + s / 2 + d.padding + 2 * d.insetWidth + "px", t.sldM.style.height = r[1] + "px", t.sldM.style.cursor = "default", t.sldPtrIB.style.border = t.sldPtrOB.style.border = d.pointerBorderWidth + "px solid " + d.pointerBorderColor, t.sldPtrOB.style.position = "absolute", t.sldPtrOB.style.left = -(2 * d.pointerBorderWidth + d.pointerThickness) + "px", t.sldPtrOB.style.top = "0", t.sldPtrMB.style.border = d.pointerThickness + "px solid " + d.pointerColor, t.sldPtrS.style.width = d.sliderSize + "px", t.sldPtrS.style.height = m + "px", t.btn.style.display = d.closable ? "block" : "none", t.btn.style.position = "absolute", t.btn.style.left = d.padding + "px", t.btn.style.bottom = d.padding + "px", t.btn.style.padding = "0 15px", t.btn.style.height = d.buttonHeight + "px", t.btn.style.border = d.insetWidth + "px solid", l(), t.btn.style.color = d.buttonColor, t.btn.style.font = "12px sans-serif", t.btn.style.textAlign = "center"; try { t.btn.style.cursor = "pointer" } catch (c) { t.btn.style.cursor = "hand" } t.btn.onmousedown = function () { d.hide() }, t.btnT.style.lineHeight = d.buttonHeight + "px", t.btnT.innerHTML = "", t.btnT.appendChild(document.createTextNode(d.closeText)), a(), f(), e.picker.owner && e.picker.owner !== d && e.unsetClass(e.picker.owner.targetElement, d.activeClass), e.picker.owner = d, e.isElementType(v, "body") ? e.redrawPosition() : e._drawPosition(d, 0, 0, "relative", !1), t.wrap.parentNode != v && v.appendChild(t.wrap), e.setClass(d.targetElement, d.activeClass) } function a() { switch (e.getPadYComponent(d)) { case "s": var t = 1; break; case "v": var t = 2 } var n = Math.round(d.hsv[0] / 360 * (d.width - 1)), r = Math.round((1 - d.hsv[t] / 100) * (d.height - 1)), i = 2 * d.pointerBorderWidth + d.pointerThickness + 2 * d.crossSize, o = -Math.floor(i / 2); e.picker.cross.style.left = n + o + "px", e.picker.cross.style.top = r + o + "px"; switch (e.getSliderComponent(d)) { case "s": var u = s(d.hsv[0], 100, d.hsv[2]), a = s(d.hsv[0], 0, d.hsv[2]), f = "rgb(" + Math.round(u[0]) + "," + Math.round(u[1]) + "," + Math.round(u[2]) + ")", l = "rgb(" + Math.round(a[0]) + "," + Math.round(a[1]) + "," + Math.round(a[2]) + ")"; e.picker.sldGrad.draw(d.sliderSize, d.height, f, l); break; case "v": var c = s(d.hsv[0], d.hsv[1], 100), f = "rgb(" + Math.round(c[0]) + "," + Math.round(c[1]) + "," + Math.round(c[2]) + ")", l = "#000"; e.picker.sldGrad.draw(d.sliderSize, d.height, f, l) } } function f() { var t = e.getSliderComponent(d); if (t) { switch (t) { case "s": var n = 1; break; case "v": var n = 2 } var r = Math.round((1 - d.hsv[n] / 100) * (d.height - 1)); e.picker.sldPtrOB.style.top = r - (2 * d.pointerBorderWidth + d.pointerThickness) - Math.floor(m / 2) + "px" } } function l() { return e.picker && e.picker.owner === d } function c() { d.importColor() } this.value = null, this.valueElement = t, this.styleElement = t, this.required = !0, this.refine = !0, this.hash = !1, this.uppercase = !0, this.onFineChange = null, this.activeClass = "jscolor-active", this.minS = 0, this.maxS = 100, this.minV = 0, this.maxV = 100, this.hsv = [0, 0, 100], this.rgb = [255, 255, 255], this.width = 181, this.height = 101, this.showOnClick = !0, this.mode = "HSV", this.position = "bottom", this.smartPosition = !0, this.sliderSize = 16, this.crossSize = 8, this.closable = !1, this.closeText = "Close", this.buttonColor = "#000000", this.buttonHeight = 18, this.padding = 12, this.backgroundColor = "#FFFFFF", this.borderWidth = 1, this.borderColor = "#BBBBBB", this.borderRadius = 8, this.insetWidth = 1, this.insetColor = "#BBBBBB", this.shadow = !0, this.shadowBlur = 15, this.shadowColor = "rgba(0,0,0,0.2)", this.pointerColor = "#4C4C4C", this.pointerBorderColor = "#FFFFFF", this.pointerBorderWidth = 1, this.pointerThickness = 2, this.zIndex = 1e3, this.container = null; for (var r in n) n.hasOwnProperty(r) && (this[r] = n[r]); this.hide = function () { l() && o() }, this.show = function () { u() }, this.redraw = function () { l() && u() }, this.importColor = function () { this.valueElement ? e.isElementType(this.valueElement, "input") ? this.refine ? !this.required && /^\s*$/.test(this.valueElement.value) ? (this.valueElement.value = "", this.styleElement && (this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage, this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor, this.styleElement.style.color = this.styleElement._jscOrigStyle.color), this.exportColor(e.leaveValue | e.leaveStyle)) : this.fromString(this.valueElement.value) || this.exportColor() : this.fromString(this.valueElement.value, e.leaveValue) || (this.styleElement && (this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage, this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor, this.styleElement.style.color = this.styleElement._jscOrigStyle.color), this.exportColor(e.leaveValue | e.leaveStyle)) : this.exportColor() : this.exportColor() }, this.exportColor = function (t) { if (!(t & e.leaveValue) && this.valueElement) { var n = this.toString(); this.uppercase && (n = n.toUpperCase()), this.hash && (n = "#" + n), e.isElementType(this.valueElement, "input") ? this.valueElement.value = n : this.valueElement.innerHTML = n } t & e.leaveStyle || this.styleElement && (this.styleElement.style.backgroundImage = "none", this.styleElement.style.backgroundColor = "#" + this.toString(), this.styleElement.style.color = this.isLight() ? "#000" : "#FFF"), !(t & e.leavePad) && l() && a(), !(t & e.leaveSld) && l() && f() }, this.fromHSV = function (e, t, n, r) { if (e !== null) { if (isNaN(e)) return !1; e = Math.max(0, Math.min(360, e)) } if (t !== null) { if (isNaN(t)) return !1; t = Math.max(0, Math.min(100, this.maxS, t), this.minS) } if (n !== null) { if (isNaN(n)) return !1; n = Math.max(0, Math.min(100, this.maxV, n), this.minV) } this.rgb = s(e === null ? this.hsv[0] : this.hsv[0] = e, t === null ? this.hsv[1] : this.hsv[1] = t, n === null ? this.hsv[2] : this.hsv[2] = n), this.exportColor(r) }, this.fromRGB = function (e, t, n, r) { if (e !== null) { if (isNaN(e)) return !1; e = Math.max(0, Math.min(255, e)) } if (t !== null) { if (isNaN(t)) return !1; t = Math.max(0, Math.min(255, t)) } if (n !== null) { if (isNaN(n)) return !1; n = Math.max(0, Math.min(255, n)) } var o = i(e === null ? this.rgb[0] : e, t === null ? this.rgb[1] : t, n === null ? this.rgb[2] : n); o[0] !== null && (this.hsv[0] = Math.max(0, Math.min(360, o[0]))), o[2] !== 0 && (this.hsv[1] = o[1] === null ? null : Math.max(0, this.minS, Math.min(100, this.maxS, o[1]))), this.hsv[2] = o[2] === null ? null : Math.max(0, this.minV, Math.min(100, this.maxV, o[2])); var u = s(this.hsv[0], this.hsv[1], this.hsv[2]); this.rgb[0] = u[0], this.rgb[1] = u[1], this.rgb[2] = u[2], this.exportColor(r) }, this.fromString = function (e, t) { var n; if (n = e.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i)) return n[1].length === 6 ? this.fromRGB(parseInt(n[1].substr(0, 2), 16), parseInt(n[1].substr(2, 2), 16), parseInt(n[1].substr(4, 2), 16), t) : this.fromRGB(parseInt(n[1].charAt(0) + n[1].charAt(0), 16), parseInt(n[1].charAt(1) + n[1].charAt(1), 16), parseInt(n[1].charAt(2) + n[1].charAt(2), 16), t), !0; if (n = e.match(/^\W*rgba?\(([^)]*)\)\W*$/i)) { var r = n[1].split(","), i = /^\s*(\d*)(\.\d+)?\s*$/, s, o, u; if (r.length >= 3 && (s = r[0].match(i)) && (o = r[1].match(i)) && (u = r[2].match(i))) { var a = parseFloat((s[1] || "0") + (s[2] || "")), f = parseFloat((o[1] || "0") + (o[2] || "")), l = parseFloat((u[1] || "0") + (u[2] || "")); return this.fromRGB(a, f, l, t), !0 } } return !1 }, this.toString = function () { return (256 | Math.round(this.rgb[0])).toString(16).substr(1) + (256 | Math.round(this.rgb[1])).toString(16).substr(1) + (256 | Math.round(this.rgb[2])).toString(16).substr(1) }, this.toHEXString = function () { return "#" + this.toString().toUpperCase() }, this.toRGBString = function () { return "rgb(" + Math.round(this.rgb[0]) + "," + Math.round(this.rgb[1]) + "," + Math.round(this.rgb[2]) + ")" }, this.isLight = function () { return .213 * this.rgb[0] + .715 * this.rgb[1] + .072 * this.rgb[2] > 127.5 }, this._processParentElementsInDOM = function () { if (this._linkedElementsProcessed) return; this._linkedElementsProcessed = !0; var t = this.targetElement; do { var n = e.getStyle(t); n && n.position.toLowerCase() === "fixed" && (this.fixed = !0), t !== this.targetElement && (t._jscEventsAttached || (e.attachEvent(t, "scroll", e.onParentScroll), t._jscEventsAttached = !0)) } while ((t = t.parentNode) && !e.isElementType(t, "body")) }; if (typeof t == "string") { var h = t, p = document.getElementById(h); p ? this.targetElement = p : e.warn("Could not find target element with ID '" + h + "'") } else t ? this.targetElement = t : e.warn("Invalid target element: '" + t + "'"); if (this.targetElement._jscLinkedInstance) { e.warn("Cannot link jscolor twice to the same element. Skipping."); return } this.targetElement._jscLinkedInstance = this, this.valueElement = e.fetchElement(this.valueElement), this.styleElement = e.fetchElement(this.styleElement); var d = this, v = this.container ? e.fetchElement(this.container) : document.getElementsByTagName("body")[0], m = 3; if (e.isElementType(this.targetElement, "button")) if (this.targetElement.onclick) { var g = this.targetElement.onclick; this.targetElement.onclick = function (e) { return g.call(this, e), !1 } } else this.targetElement.onclick = function () { return !1 }; if (this.valueElement && e.isElementType(this.valueElement, "input")) { var y = function () { d.fromString(d.valueElement.value, e.leaveValue), e.dispatchFineChange(d) }; e.attachEvent(this.valueElement, "keyup", y), e.attachEvent(this.valueElement, "input", y), e.attachEvent(this.valueElement, "blur", c), this.valueElement.setAttribute("autocomplete", "off") } this.styleElement && (this.styleElement._jscOrigStyle = { backgroundImage: this.styleElement.style.backgroundImage, backgroundColor: this.styleElement.style.backgroundColor, color: this.styleElement.style.color }), this.value ? this.fromString(this.value) || this.exportColor() : this.importColor() } }; return e.jscolor.lookupClass = "jscolor", e.jscolor.installByClassName = function (t) { var n = document.getElementsByTagName("input"), r = document.getElementsByTagName("button"); e.tryInstallOnElements(n, t), e.tryInstallOnElements(r, t) }, e.register(), e.jscolor } ());
/*
New API enums. Generated from Freeze20
*/
var ActionCode = {}; ActionCode.AC_FLYTO = 0; ActionCode.AC_CIRCLEPATTERN = 1; ActionCode.AC_OVALPATTERN = 2; ActionCode.AC_LINEPATTERN = 3; ActionCode.AC_ARCPATTERN = 4; ActionCode.AC_FOLLOWBEHIND = 5; ActionCode.AC_FOLLOWABOVE = 6; ActionCode.AC_FOLLOWBELOW = 7; ActionCode.AC_FOLLOWRIGHT = 8; ActionCode.AC_FOLLOWLEFT = 9; ActionCode.AC_FOLLOWBEHINDANDABOVE = 10; ActionCode.AC_FOLLOWCOCKPIT = 11; ActionCode.AC_FOLLOWFROMGROUND = 12; ActionCode.AC_STOP = 13; ActionCode.AC_JUMP = 14; ActionCode.AC_DELETE = 15; ActionCode.AC_EDIT_FINISHED = 16; ActionCode.AC_OBJECT_ADDED = 17; ActionCode.AC_PLAY = 18; ActionCode.AC_SHOW = 19; ActionCode.AC_EDIT_STARTED = 20; ActionCode.AC_SELCHANGED = 21; ActionCode.AC_WAYPOINT_REACHED = 22; ActionCode.AC_GROUP_ADDED = 23; ActionCode.AC_LAYER_ADDED = 24; ActionCode.AC_LAYER_REFRESHED = 25; ActionCode.AC_ITEM_MOVED=26; var AltitudeTypeCode = {}; AltitudeTypeCode.ATC_TERRAIN_RELATIVE = 0; AltitudeTypeCode.ATC_PIVOT_RELATIVE = 1; AltitudeTypeCode.ATC_ON_TERRAIN = 2; AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE = 3; AltitudeTypeCode.ATC_DEFAULT = 999; var DynamicMotionStyle = {}; DynamicMotionStyle.MOTION_GROUND_VEHICLE = 0; DynamicMotionStyle.MOTION_AIRPLANE = 1; DynamicMotionStyle.MOTION_HELICOPTER = 2; DynamicMotionStyle.MOTION_HOVER = 3; var DynamicObjectType = {}; DynamicObjectType.DYNAMIC_3D_MODEL = 0; DynamicObjectType.DYNAMIC_TEXT_LABEL = 1; DynamicObjectType.DYNAMIC_IMAGE_LABEL = 2; DynamicObjectType.DYNAMIC_VIRTUAL = 3; var LabelStyle = {}; LabelStyle.LS_DEFAULT = 0; LabelStyle.LS_STREET = 1; LabelStyle.LS_STATE = 2; var MsgClient6 = {}; MsgClient6.MC_LEFT = 0; MsgClient6.MC_MAIN = 2; MsgClient6.MC_MESSAGE_BAR = 3; MsgClient6.MC_FLOAT = 4; MsgClient6.MC_POPUP = 5; var MsgType = {}; MsgType.TYPE_TEXT = 0; MsgType.TYPE_URL = 1; MsgType.TYPE_SCRIPT = 3; var ModelTypeCode = {}; ModelTypeCode.MT_NORMAL = 0; ModelTypeCode.MT_ANIMATION = 1; ModelTypeCode.MT_PROGRESSIVE = 2; var LayerGeometryType = {}; LayerGeometryType.LGT_POINT = 0; LayerGeometryType.LGT_POLYLINE = 1; LayerGeometryType.LGT_POLYGON = 2; LayerGeometryType.LGT_COLLECTION = 3; LayerGeometryType.LGT_NONE = -1; var SphereStyle = {}; SphereStyle.SPHERE_NORMAL = 0; SphereStyle.SPHERE_UPPER_HALF = 1; SphereStyle.SPHERE_LOWER_HALF = 2; SphereStyle.SPHERE_UPPER_HALF_BASE = 3; SphereStyle.SPHERE_LOWER_HALF_BASE = 4; var ElevationBehaviorMode = {}; ElevationBehaviorMode.EB_REPLACE = 0; ElevationBehaviorMode.EB_BELOW = 1; ElevationBehaviorMode.EB_ABOVE = 2; var EditItemFlags = {}; EditItemFlags.EDIT_ITEM_USE_PROPERTY = 0; EditItemFlags.EDIT_ITEM = 1; EditItemFlags.EDIT_ITEM_VERTICES = 2; EditItemFlags.EDIT_ITEM_BUILDING_ROOF = 3; var ItemCode = {}; ItemCode.SELECTED = 10; ItemCode.CHILD = 11; ItemCode.FIRSTVISIBLE = 12; ItemCode.NEXT = 13; ItemCode.NEXTVISIBLE = 14; ItemCode.PARENT = 15; ItemCode.PREVIOUS = 16; ItemCode.PREVIOUSVISIBLE = 17; ItemCode.ROOT = 18; var SortType = {}; SortType.SORT_ALPHABETICALLY_AZ = 0; SortType.SORT_ALPHABETICALLY_ZA = 1; SortType.SORT_BY_TYPE = 2; SortType.SORT_NO_SORT = 3; var WorldPointType = {}; WorldPointType.WPT_MODEL = 1; WorldPointType.WPT_LABEL = 2; WorldPointType.WPT_PRIMITIVE = 4; WorldPointType.WPT_ANIM = 8; WorldPointType.WPT_BUILDING = 16; WorldPointType.WPT_SKY = 32; WorldPointType.WPT_ACCURATE_CPT = 64; WorldPointType.WPT_BBOX_CPT = 128; WorldPointType.WPT_VIDEO = 256; WorldPointType.WPT_UNDERGROUND = 512; WorldPointType.WPT_SCREEN_OVERLAY = 1024; WorldPointType.WPT_SCREEN_CONTROL = 2048; WorldPointType.WPT_SCREEN_COVERED = 4096; WorldPointType.WPT_ALL = -1; var MouseInputMode = {}; MouseInputMode.MI_FREE_FLIGHT = 0; MouseInputMode.MI_COM_CLIENT = 1; MouseInputMode.MI_CONTROLLED_FLIGHT = 2; MouseInputMode.MI_EDIT = 3; MouseInputMode.MI_MEASURAMENT = 4; var MessageBarTextAlignment = {}; MessageBarTextAlignment.MBT_LEFT = 0; MessageBarTextAlignment.MBT_CENTER = 1; MessageBarTextAlignment.MBT_RIGHT = 2; var AccuracyLevel = {}; AccuracyLevel.ACCURACY_NORMAL = 0; AccuracyLevel.ACCURACY_BEST_FROM_MEMORY = 1; AccuracyLevel.ACCURACY_BEST_FROM_MPT = 2; var PermissionType = {}; PermissionType.LMP_ENABLE_ALL = 0; PermissionType.LMP_DISABLE_API = 1; PermissionType.LMP_DISABLE_UI = 2; PermissionType.LMP_DISABLE_ALL = -1; var SliderDisplayMode = {}; SliderDisplayMode.MODE_TIME_NONE = 0; SliderDisplayMode.MODE_FIXED_TIME = 1; SliderDisplayMode.MODE_TIME = 2; SliderDisplayMode.MODE_RANGE_PROJECT = 4; SliderDisplayMode.MODE_RANGE_CUSTOM = 8; SliderDisplayMode.MODE_ADJUST_FOR_GROUP = 16; var TimeZoneType = {}; TimeZoneType.TIME_ZONE_TYPE_MY_COMPUTER = 0; TimeZoneType.TIME_ZONE_TYPE_UTC = 1; TimeZoneType.TIME_ZONE_TYPE_SPECIFIC = 2; var TEVesrionType = {}; TEVesrionType.TEVT_PRO = 0; TEVesrionType.TEVT_PLUS = 1; TEVesrionType.TEVT_VIEWER = 2; TEVesrionType.TEVT_UNKNOWN = -1; var ObjectTypeCode = {}; ObjectTypeCode.OT_UNDEFINED = 0; ObjectTypeCode.OT_POLYLINE = 1; ObjectTypeCode.OT_POLYGON = 2; ObjectTypeCode.OT_RECTANGLE = 3; ObjectTypeCode.OT_REGULAR_POLYGON = 4; ObjectTypeCode.OT_CIRCLE = 5; ObjectTypeCode.OT_3D_POLYGON = 6; ObjectTypeCode.OT_BUILDING = 7; ObjectTypeCode.OT_BOX = 8; ObjectTypeCode.OT_PYRAMID = 9; ObjectTypeCode.OT_CYLINDER = 10; ObjectTypeCode.OT_CONE = 11; ObjectTypeCode.OT_ELLIPSE = 12; ObjectTypeCode.OT_ARC = 13; ObjectTypeCode.OT_ARROW = 14; ObjectTypeCode.OT_3D_ARROW = 15; ObjectTypeCode.OT_SPHERE = 16; ObjectTypeCode.OT_MODEL = 17; ObjectTypeCode.OT_LABEL = 18; ObjectTypeCode.OT_LOCATION = 19; ObjectTypeCode.OT_TREE_HOTLINK = 20; ObjectTypeCode.OT_ROUTE = 21; ObjectTypeCode.OT_MESSAGE = 22; ObjectTypeCode.OT_DYNAMIC = 23; ObjectTypeCode.OT_IMAGE_LABEL = 24; ObjectTypeCode.OT_THREAT_DOME = 25; ObjectTypeCode.OT_IMAGERY_LAYER = 26; ObjectTypeCode.OT_TERRAIN_VIDEO = 27; ObjectTypeCode.OT_POINT_CLOUD = 28; ObjectTypeCode.OT_ELEVATION_LAYER = 29; ObjectTypeCode.OT_TERRAIN_MODIFIER = 30; ObjectTypeCode.OT_TERRAIN_HOLE = 31; ObjectTypeCode.OT_POPUP_MESSAGE = 32; ObjectTypeCode.OT_FEATURE = 33; ObjectTypeCode.OT_PRESENTATION = 34; ObjectTypeCode.OT_ANALYSIS_LOS = 35; var SGGeometryTypeId = {}; SGGeometryTypeId.SG_POINT = 0; SGGeometryTypeId.SG_LINESTRING = 1; SGGeometryTypeId.SG_LINEARRING = 2; SGGeometryTypeId.SG_POLYGON = 3; SGGeometryTypeId.SG_MULTIPOINT = 4; SGGeometryTypeId.SG_MULTILINESTRING = 5; SGGeometryTypeId.SG_MULTIPOLYGON = 6; var BuildingStyleCode = {}; BuildingStyleCode.BS_STRETCH_TERRAIN = 0; BuildingStyleCode.BS_POLYGONS = 1; var IntersectionType = {}; IntersectionType.IT_NONE = 0; IntersectionType.IT_INTERSECT = 1; IntersectionType.IT_WITHIN = 2; var StreamLayerStatus = {}; StreamLayerStatus.SLS_NOT_STREAMED_LAYER = 0; StreamLayerStatus.SLS_STREAMING = 1; StreamLayerStatus.SLS_STREAM_PAUSED = 2; var AltitudeUnitCode = {}; AltitudeUnitCode.AU_METER = 0; AltitudeUnitCode.AU_FEET = 1; AltitudeUnitCode.AU_CENTIMETER = 2; AltitudeUnitCode.AU_DECIMETER = 3; AltitudeUnitCode.AU_INCHE = 4; AltitudeUnitCode.AU_YARD = 5; AltitudeUnitCode.AU_UNDEFINED = -1; var LabelLockMode = {}; LabelLockMode.LM_DECAL = 0; LabelLockMode.LM_AXIS = 1; LabelLockMode.LM_AXIS_TEXTUP = 2; LabelLockMode.LM_AXIS_AUTOPITCH = 3; LabelLockMode.LM_AXIS_AUTOPITCH_TEXTUP = 4; var DistributionDir = {}; DistributionDir.DOWN_UP = 0; DistributionDir.UP_DOWN = 1; DistributionDir.RIGHT_LEFT = 2; DistributionDir.LEFT_RIGHT = 3; DistributionDir.FRONT_BACK = 4; DistributionDir.BACK_FRONT = 5; var CPTDataFormat = {}; CPTDataFormat.CPT_DF_INTENSITY = 0; CPTDataFormat.CPT_DF_RGB = 1; var _HTML_POPUP_FLAGS = {}; _HTML_POPUP_FLAGS.HTML_POPUP_NONE = 0; _HTML_POPUP_FLAGS.HTML_POPUP_ANCHOR_3D_WINDOW = 1; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_DRAG = 2; _HTML_POPUP_FLAGS.HTML_POPUP_NO_CAPTION = 4; _HTML_POPUP_FLAGS.HTML_POPUP_USE_DEFAULT_POS = 8; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_SIZE = 16; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_RESIZE = 32; _HTML_POPUP_FLAGS.HTML_POPUP_ADD_SHADOW = 64; _HTML_POPUP_FLAGS.HTML_POPUP_NO_BORDER = 128; _HTML_POPUP_FLAGS.HTML_POPUP_SET_FOCUS_TO_RENDER = 256; _HTML_POPUP_FLAGS.HTML_POPUP_NOT_USE_POINTER = 512; _HTML_POPUP_FLAGS.HTML_POPUP_ALWAYS_VISIBLE = 1024; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_POS = 2048; _HTML_POPUP_FLAGS.HTML_POPUP_USE_TEXT_AS_INNER_HTML = 4096; var PresentationStepContinue = {}; PresentationStepContinue.PSC_MOUSECLICK = 0; PresentationStepContinue.PSC_WAIT = 1; var PresentationStepFlightSpeed = {}; PresentationStepFlightSpeed.PSFS_VERYSLOW = 0; PresentationStepFlightSpeed.PSFS_SLOW = 1; PresentationStepFlightSpeed.PSFS_NORMAL = 2; PresentationStepFlightSpeed.PSFS_FAST = 3; PresentationStepFlightSpeed.PSFS_VERYFAST = 4; var PresentationPlayAlgorithm = {}; PresentationPlayAlgorithm.PPA_FLYTO = 0; PresentationPlayAlgorithm.PPA_SPLINE = 1; var PresentationPlayMode = {}; PresentationPlayMode.PPM_AUTOMATIC = 0; PresentationPlayMode.PPM_MANUAL = 1; var PresentationCaptionSizeType = {}; PresentationCaptionSizeType.PCST_FIXED = 0; PresentationCaptionSizeType.PCST_AUTOMATICALLYADJUST = 1; var PresentationCaptionPosition = {}; PresentationCaptionPosition.PCP_TOPLEFT = 0; PresentationCaptionPosition.PCP_TOPCENTER = 1; PresentationCaptionPosition.PCP_TOPRIGHT = 2; PresentationCaptionPosition.PCP_BOTTOMLEFT = 3; PresentationCaptionPosition.PCP_BOTTOMCENTER = 4; PresentationCaptionPosition.PCP_BOTTOMRIGHT = 5; var PresentationStatus = {}; PresentationStatus.PS_PLAYING = 0; PresentationStatus.PS_NOTPLAYING = 1; PresentationStatus.PS_PAUSED = 2; PresentationStatus.PS_WAITINGTIME = 3; PresentationStatus.PS_WAITINGCLICK = 4; var VideoPlayStatus = {}; VideoPlayStatus.VPS_PAUSE = 0; VideoPlayStatus.VPS_PLAY = 1; VideoPlayStatus.VPS_STOP = 2; var ContainerSite = {}; ContainerSite.CS_DOCK_LEFT = 0; ContainerSite.CS_DOCK_RIGHT = 1; ContainerSite.CS_DOCK_TOP = 2; ContainerSite.CS_DOCK_BOTTOM = 3; ContainerSite.CS_DOCK_FLOAT = 4; ContainerSite.CS_MAIN = 5; ContainerSite.CS_NOT_VALID = -1; var FaceFillTypeCode = {}; FaceFillTypeCode.FACE_COLOR = 0; FaceFillTypeCode.FACE_TEXTURE = 1; FaceFillTypeCode.FACE_TERRAIN_TEXTURE = 2; FaceFillTypeCode.FACE_UNDEFINED = -1; var RoofStyleCode = {}; RoofStyleCode.ROOFTOP_FLAT = 0; RoofStyleCode.ROOFTOP_ANGULAR = 1; var PresentationStepType = {}; PresentationStepType.ST_LOCATION = 0; PresentationStepType.ST_DYNAMICOBJECT = 1; PresentationStepType.ST_GROUPOROBJECT = 2; PresentationStepType.ST_UNDERGROUNDMODE = 3; PresentationStepType.ST_TIMESLIDER = 4; PresentationStepType.ST_CURRENTTIME = 5; PresentationStepType.ST_MESSAGE = 6; PresentationStepType.ST_TOOL = 7; PresentationStepType.ST_CAPTION = 8; PresentationStepType.ST_RESTARTDYNAMICOBJECT = 9; PresentationStepType.ST_FLIGHTSPEEDFACTOR = 10; PresentationStepType.ST_CLEARCAPTION = -1; var TilingMethodCode = {}; TilingMethodCode.TM_TILES_PER_SIDE = 0; TilingMethodCode.TM_TILES_PER_AXIS = 0; TilingMethodCode.TM_METERS_PER_TILE = 1; TilingMethodCode.TM_UNDEFINED = -1; var AttributeTypeCode = {}; AttributeTypeCode.AT_TEXT = 0; AttributeTypeCode.AT_INTEGER = 1; AttributeTypeCode.AT_DOUBLE = 2; AttributeTypeCode.AT_UNKNOWN = -1; var FeatureState = {}; FeatureState.FS_NONE = 0; FeatureState.FS_NEW = 1; FeatureState.FS_MODIFIED = 2; FeatureState.FS_DELETED = 3;
SGLang = {
    lang : {},
    /**
     * APIProperty: defaultCode
     * {String} Default language to use when a specific language can't be
     *     found.  Default is "en".
     */
    defaultCode: "2052",
    /**
     * APIFunction: getCode
     * Get the current language code.
     *
     * Returns:
     * The current language code.
     */
    getCode: function() {
        //var lang = SGLang.getUrlParameters()["lang"];
        //if(!lang)
        //    lang = SGLang.defaultCode;
        //return lang;
        return "2052";
    },
    getUrlParameters: function()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split(/&|\?/ig);
        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },
    /**
     * APIMethod: translate
     * Looks up a key from a dictionary based on the current language string.
     *     The value of <getCode> will be used to determine the appropriate
     *     dictionary.  Dictionaries are stored in <SGLang>.
     *
     * Parameters:
     * key - {String} The key for an i18n string value in the dictionary.
     * context - {Object} Optional context to be used with
     *     <SGAPI.String.format>.
     *
     * Returns:
     * {String} A internationalized string.
     */
    i18n: function(key, context) {
        var message = SGLang.lang[key];
        if(!message) {
            // Message not found, fall back to message key
            message = key;
        }
        if(context) {
            message = SGLang.format(message, context);
        }
        return message;
    },
    i18nFile: function(file) {
        var code = this.getCode();
        if(code == "0" || code == "1033")
            return file;
        return code + "/" + file;
    },
    format: function(template, context, args) {
        if(!context) {
            context = window;
        }
        // Example matching:
        // str   = ${foo.bar}
        // match = foo.bar
        var replacer = function(str, match) {
            var replacement;
            // Loop through all subs. Example: ${a.b.c}
            // 0 -> replacement = context[a];
            // 1 -> replacement = context[a][b];
            // 2 -> replacement = context[a][b][c];
            var subs = match.split(/\.+/);
            for (var i=0; i< subs.length; i++) {
                if (i == 0) {
                    replacement = context;
                }
                replacement = replacement[subs[i]];
            }
            if(typeof replacement == "function") {
                replacement = args ?
                    replacement.apply(null, args) :
                    replacement();
            }
            // If replacement is undefined, return the string 'undefined'.
            // This is a workaround for a bugs in browsers not properly
            // dealing with non-participating groups in regular expressions:
            // http://blog.stevenlevithan.com/archives/npcg-javascript
            if (typeof replacement == 'undefined') {
                return 'undefined';
            } else {
                return replacement;
            }
        };
        return template.replace(SGLang.tokenRegEx, replacer);
    },
    /**
     * Property: SGLang.tokenRegEx
     * Used to find tokens in a string.
     * Examples: ${a}, ${a.b.c}, ${a-b}, ${5}
     */
    tokenRegEx:  /\$\{([\w.]+?)\}/g
};
//-------------------
// load requested lang file
(function() {
   // document.write("<script language='javascript' src='Lang.js'></script>");
    // var code = SGLang.getCode();
    // document.write("<script  language='javascript' src='" + code + "/Lang.js'></script>");
    var head = document.head || document.getElementsByTagName("head")[0];
    // New way to support IE10
    firstScript = head.getElementsByTagName("script")[0];
    var script = document.createElement("script");
    script.setAttribute("src", "Lang.js");
    head.insertBefore(script, firstScript);
    var code = SGLang.getCode();
    var script2 = document.createElement("script");
    script2.setAttribute("src", code + "/Lang.js");
    head.insertBefore(script2, firstScript);
})();
// hide document body, so that TextXXX won't be visible until we replace them on document ready
$(document.body).hide();
//-------------------
$(document).ready(function ()
{
    $(document.body).hide();
    var translateDocument = function()
    {
        document.title = SGLang.i18n(document.title);
        $(".i18n").each(function ()
        {
            if (this.tagName == "INPUT")
            {
                this.value = SGLang.i18n(this.value);
            }
            else if (this.tagName == "IMG")
            {
                $(this).attr("src",SGLang.i18n($(this).attr("src")));
                $(this).attr("alt", SGLang.i18n($(this).attr("alt")));
                $(this).attr("title", SGLang.i18n($(this).attr("title")));
            }
            else
            {
                $(this).attr("title", SGLang.i18n($(this).attr("title")));
                $(this).attr("alt", SGLang.i18n($(this).attr("alt")));
                // set element html only if it does not contain any other html elements.
                // otherwise it will erase them.
                if ($(this).children().length == 0)
                {
                    $(this).html(SGLang.i18n($.trim($(this).text())));
                }
            }
        });
        $(".i18nFile").each(function ()
        {
            if (this.tagName == "IMG")
            {
                $(this).attr("src",SGLang.i18nFile($(this).attr("src")));
            }
        });
        $(document.body).show();
    }
    // make sure that hiding document body really worked.
    // I am not sure if IE will update the document view, until the function has finished executing.
    // so I am giving it here a few milliseconds of unused time.
    setTimeout(translateDocument,1);
});
$(document).ready(function ()
{
    if (GetParamValue("inSG","") == "1")
    {
        document.getElementById("TopAreaTD").style.height = "57";
        document.getElementById("TitleTD").align = "left";
        document.getElementById("CloseHelpTd").style.display = "none";
    }
});
//-------------------
// DisplayHelpPopup
function DisplayHelpPopup(HTMLSrc, title) {
    if (title == null || title == "")
        title = "?";
    var Cont = TE.interface("IContainer2");
    Cont.HTMLPopup(1, 5, 5, 850, 500, title, abspath() + "/" + HTMLSrc, 10, -1);
}
//-------------------
// DisplayHelpPopup6
function DisplayHelpPopup6(HTMLSrc, title) {
    if (title == null || title == "")
        title = "?";
    var popup = SGWorld.Creator.CreatePopupMessage(title, abspath() + "/" + HTMLSrc, 5, 5, 850, 500);
    popup.AllowDrag = true;
    popup.AllowResize = true;
    SGWorld.Window.ShowPopup(popup);
}
//-------------------
// CloseTool
function CloseTool (ToolName)
{
    var Cont = TE.interface("IContainer2");
    Cont.RemoveURL (1,ToolName);
}
//-------------------
// SGAPIDisplayHelpPopup
function SGAPIDisplayHelpPopup(HTMLSrc,title)
{
    //globe.teCore.IContainer.HTMLPopup (1, 5,5,500,500,"Help", SGAPI.toAbspath(HTMLSrc), 10, -1 );
    if (title == null || title == "")
        title = "?";
    var popup = new SGPopup(title, HTMLSrc,0,0,650,500);
    popup.align = "TopLeft";
    globe.showPopup(popup);
}
//-------------------
// SGAPICloseTool
function SGAPICloseTool (ToolName)
{
    globe.teCore.IContainer.RemoveURL (1,ToolName);
}
//--------------
// abspath
function abspath()
{
    var abspath = unescape(window.location.href);
    // Remove query String
    var index=abspath.indexOf("?");
    if (index > 0) abspath = abspath.substr (0,index-1);
    index=abspath.lastIndexOf("/");
    var index2 = abspath.lastIndexOf("\\");
    index = (index > index2) ? index : index2;
    if (index <= 0) return abspath;
    abspath = abspath.substring(0,index);
    if(abspath.substring(0,1) == "/") abspath = abspath.slice(1);
    var re = /file:\/\/\//gi;
    if (abspath.match(re) != null) abspath = abspath.replace(re,""); // if this is indeed a local file, we strip the "file://" prefix from it.
    return(abspath);
}
// GetParamValue
function GetParamValue(findParam, defaultValue)
{
    var arr = document.location.href.split("?");
    if (arr.length <= 1) return defaultValue;
    arr = arr[1].split("&");
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) {
            arr = arr[i].split("=");
            return arr[1];
        }
    }
    return defaultValue;
}
//-----------------
// validateNumber
function validateNumber(strNum)
{
    strNum =     strNum.replace(/,/, ".");
    return parseFloat (strNum);
}
//********************************************
var gDrawPolyAltitudeType = 2;
//----------
// DrawPolyLButtonDown
//----------
function DrawPolyLButtonDown(Flags, X, Y) {
    var CursorCoord = SGWorld.Window.pixelToWorld(X, Y,-1 & ~(128|1024));
    if (CursorCoord == null)
        return false;
    if (gPolyObj == null) {
        // We always start with a polyline and change it to Polygon (for area) after the second click)
        var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude])
        gPolyObj = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), gDrawPolyAltitudeType, -1, gPolylineText);
        gPolyObj.LineStyle.Width = -2;
        gPolyObj.Geometry.StartEdit();
    }
    else {
        if (gPolyMethod == 2) // Polygon
        {
            if (gPolyObj.ObjectType == 1) {
                // Deleting the temporary line
                var x = gPolyObj.Geometry.Points.Item(0).X;
                var y = gPolyObj.Geometry.Points.Item(0).Y;
                var z = gPolyObj.Geometry.Points.Item(0).Z;
                SGWorld.Creator.DeleteObject(gPolyObj.ID);
                // Creating the polygon
                var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, z, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude])
                gPolyObj = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), gDrawPolyAltitudeType, -1, gPolygonText);
                gPolyObj.LineStyle.Width = -2;
                // gPolyObj.Terrain.GroundObject = true;   // Arik removed it. Caused a bug in Viewshed query (got wrong GetGroundHeight values because of the polygon)
                gPolyObj.Geometry.StartEdit();
            }
            else {
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x;
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y;
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude;
                gPolyObj.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude);
            }
        }
        else {
            gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).X = CursorCoord.Position.x;
            gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Y = CursorCoord.Position.y;
            gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude;
            gPolyObj.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude);
        }
    }
    if (gDrawPolyClick != null)
        gDrawPolyClick(gPolyObj.Geometry, gPolyObj.ObjectType);
    gPolyObj.SetParam(5440, 1);
    return true;
}
//-----------
// onFrame
//-----------
function DrawPolyOnFrame() {
    if (gPolyObj != null) {
        try {
            var mouseInfo = SGWorld.Window.GetMouseInfo()
            var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, -1 & ~(128|1024));
            if (CursorCoord == null)
                return false;
            if (gPolyObj.ObjectType == 2) {
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x;
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y;
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude;
            }
            else {
                gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).X = CursorCoord.Position.x;
                gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Y = CursorCoord.Position.y;
                gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude;
            }
            gPolyObj.SetParam(5440, 1);
        }
        catch (e) { }
    }
}
//-------------
//DrawPolyInputModeChanged
function DrawPolyInputModeChanged(NewMode) {
    if (NewMode != 1)
        if (gPolyObj != null)
        Reset(0, 1);
}
//-------------
// DrawPolyRButtonUp
function DrawPolyRButtonUp(Flags, X, Y) {
    if (gPolyObj == null || ((gPolyObj.ObjectType == 1 && gPolyObj.Geometry.Points.count <= 2) || (gPolyObj.ObjectType == 2 && gPolyObj.Geometry.Rings(0).Points.count <= 3))) {
        Reset(0, 0);
        return false;
    }
    if (gPolyObj.ObjectType == 1)
        gPolyObj.Geometry.Points.DeletePoint(gPolyObj.Geometry.Points.count - 1);
    else
        gPolyObj.Geometry.Rings(0).Points.DeletePoint(gPolyObj.Geometry.Rings(0).Points.count - 1);
    gPolyObj.Geometry.EndEdit();
    gEndDrawPoly(gPolyObj.Geometry, gPolyObj.ObjectType, gPolyObj.Position.AltitudeType);
    Reset(0, 0);
    return true;
}
//-------------------
//searchGeometries
function searchGeometries2(parentNode, callbackFunc) {
    SGWorld.ProjectTree.EnableRedraw(0);
    searchGeometriesLeaf2(parentNode, callbackFunc);
    SGWorld.ProjectTree.EnableRedraw(1);
}
//-------------------
// searchGeometries
function searchGeometriesLeaf2(parentNode, callbackFunc) {
    if (SGWorld.ProjectTree.IsLayer(parentNode))  // Layer
    {
        var layer = SGWorld.ProjectTree.GetLayer(parentNode);
        var featureGroups = layer.FeatureGroups;
        for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers
        {
            var featureGroup = featureGroups.Item(i);
            var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method"));
            var features = featureGroup.Features;
            for (var j = 0; j < features.Count; j++) {
                var ret;
                if (featureGroup.GeometryType != 0)
                    ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType);
                else {
                    if (features.Item(j).Geometry.GeometryType == 0) // Point
                    {
                        var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z);
                        ret = callbackFunc(position, featureGroup.GeometryType, altitudeType);
                    }
                }
                if (!ret)
                    return;
            }
        }
    }
    else {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != "") {
            if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))
                searchGeometriesLeaf2(node, callbackFunc);
            else {
                var Object = SGWorld.Creator.GetObject(node);
                if (Object != null) {
                    var altitudeType = Object.Position.AltitudeType;
                    var ret;
                    if (Object.ObjectType == 1 || Object.ObjectType == 2)
                       ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType);
                    else
                        ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType);
                    if (!ret)
                        return;
                }
            }
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
}
function AltitudeMethodToAltitudeType(altitudeMethod)
{
    switch(altitudeMethod)
    {
        case 10: return AltitudeTypeCode.ATC_TERRAIN_RELATIVE;
        case 11: return AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE;
        case 12: return AltitudeTypeCode.ATC_ON_TERRAIN;
        case 13: return AltitudeTypeCode.ATC_PIVOT_RELATIVE;
    }
}
//-------------------
//searchGeometriesClipbaord
function searchGeometriesClipboard(callbackFunc) {
    SGWorld.ProjectTree.EnableRedraw(0);
        var Object;
        for (i = 0; i < SGWorld.Application.Clipboard.Count; i++) {
            try {
                Object = SGWorld.Application.Clipboard.Item(i);
                var altitudeType = Object.Position.AltitudeType;
                var ret;
                if (Object.ObjectType == 1 || Object.ObjectType == 2)
                    ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType);
                else
                    ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType);
                if (!ret) {
                    SGWorld.ProjectTree.EnableRedraw(1);
                    return;
                }
            }
            catch (e) { }
          }
    SGWorld.ProjectTree.EnableRedraw(1);
}
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon70.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,586 @@
/**** JQuery was removed from toolsCommon70. You should include one of the JQuery files under the "JQuery" folder ****/
if(!this.JSON){this.JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());
/* jQuery cookie */
jQuery.cookie=function(d,c,a){if(typeof c!="undefined"){a=a||{};if(c===null)c="",a.expires=-1;var b="";if(a.expires&&(typeof a.expires=="number"||a.expires.toUTCString))typeof a.expires=="number"?(b=new Date,b.setTime(b.getTime()+a.expires*864E5)):b=a.expires,b="; expires="+b.toUTCString();var e=a.path?"; path="+a.path:"",f=a.domain?"; domain="+a.domain:"",a=a.secure?"; secure":"";document.cookie=[d,"=",encodeURIComponent(c),b,e,f,a].join("")}else{c=null;if(document.cookie&&document.cookie!=""){a=document.cookie.split(";");for(b=0;b<a.length;b++)if(e=jQuery.trim(a[b]),e.substring(0,d.length+1)==d+"="){c=decodeURIComponent(e.substring(d.length+1));break}}return c}};
/* color picker */
/*
New API enums. Generated from Freeze20
*/
var ActionCode = {}; ActionCode.AC_FLYTO = 0; ActionCode.AC_CIRCLEPATTERN = 1; ActionCode.AC_OVALPATTERN = 2; ActionCode.AC_LINEPATTERN = 3; ActionCode.AC_ARCPATTERN = 4; ActionCode.AC_FOLLOWBEHIND = 5; ActionCode.AC_FOLLOWABOVE = 6; ActionCode.AC_FOLLOWBELOW = 7; ActionCode.AC_FOLLOWRIGHT = 8; ActionCode.AC_FOLLOWLEFT = 9; ActionCode.AC_FOLLOWBEHINDANDABOVE = 10; ActionCode.AC_FOLLOWCOCKPIT = 11; ActionCode.AC_FOLLOWFROMGROUND = 12; ActionCode.AC_STOP = 13; ActionCode.AC_JUMP = 14; ActionCode.AC_DELETE = 15; ActionCode.AC_EDIT_FINISHED = 16; ActionCode.AC_OBJECT_ADDED = 17; ActionCode.AC_PLAY = 18; ActionCode.AC_SHOW = 19; ActionCode.AC_EDIT_STARTED = 20; ActionCode.AC_SELCHANGED = 21; ActionCode.AC_WAYPOINT_REACHED = 22; ActionCode.AC_GROUP_ADDED = 23; ActionCode.AC_LAYER_ADDED = 24; ActionCode.AC_LAYER_REFRESHED = 25; ActionCode.AC_ITEM_MOVED=26; var AltitudeTypeCode = {}; AltitudeTypeCode.ATC_TERRAIN_RELATIVE = 0; AltitudeTypeCode.ATC_PIVOT_RELATIVE = 1; AltitudeTypeCode.ATC_ON_TERRAIN = 2; AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE = 3; AltitudeTypeCode.ATC_DEFAULT = 999; var DynamicMotionStyle = {}; DynamicMotionStyle.MOTION_GROUND_VEHICLE = 0; DynamicMotionStyle.MOTION_AIRPLANE = 1; DynamicMotionStyle.MOTION_HELICOPTER = 2; DynamicMotionStyle.MOTION_HOVER = 3; var DynamicObjectType = {}; DynamicObjectType.DYNAMIC_3D_MODEL = 0; DynamicObjectType.DYNAMIC_TEXT_LABEL = 1; DynamicObjectType.DYNAMIC_IMAGE_LABEL = 2; DynamicObjectType.DYNAMIC_VIRTUAL = 3; var LabelStyle = {}; LabelStyle.LS_DEFAULT = 0; LabelStyle.LS_STREET = 1; LabelStyle.LS_STATE = 2; var MsgClient6 = {}; MsgClient6.MC_LEFT = 0; MsgClient6.MC_MAIN = 2; MsgClient6.MC_MESSAGE_BAR = 3; MsgClient6.MC_FLOAT = 4; MsgClient6.MC_POPUP = 5; var MsgType = {}; MsgType.TYPE_TEXT = 0; MsgType.TYPE_URL = 1; MsgType.TYPE_SCRIPT = 3; var ModelTypeCode = {}; ModelTypeCode.MT_NORMAL = 0; ModelTypeCode.MT_ANIMATION = 1; ModelTypeCode.MT_PROGRESSIVE = 2; var LayerGeometryType = {}; LayerGeometryType.LGT_POINT = 0; LayerGeometryType.LGT_POLYLINE = 1; LayerGeometryType.LGT_POLYGON = 2; LayerGeometryType.LGT_COLLECTION = 3; LayerGeometryType.LGT_NONE = -1; var SphereStyle = {}; SphereStyle.SPHERE_NORMAL = 0; SphereStyle.SPHERE_UPPER_HALF = 1; SphereStyle.SPHERE_LOWER_HALF = 2; SphereStyle.SPHERE_UPPER_HALF_BASE = 3; SphereStyle.SPHERE_LOWER_HALF_BASE = 4; var ElevationBehaviorMode = {}; ElevationBehaviorMode.EB_REPLACE = 0; ElevationBehaviorMode.EB_BELOW = 1; ElevationBehaviorMode.EB_ABOVE = 2; var EditItemFlags = {}; EditItemFlags.EDIT_ITEM_USE_PROPERTY = 0; EditItemFlags.EDIT_ITEM = 1; EditItemFlags.EDIT_ITEM_VERTICES = 2; EditItemFlags.EDIT_ITEM_BUILDING_ROOF = 3; var ItemCode = {}; ItemCode.SELECTED = 10; ItemCode.CHILD = 11; ItemCode.FIRSTVISIBLE = 12; ItemCode.NEXT = 13; ItemCode.NEXTVISIBLE = 14; ItemCode.PARENT = 15; ItemCode.PREVIOUS = 16; ItemCode.PREVIOUSVISIBLE = 17; ItemCode.ROOT = 18; var SortType = {}; SortType.SORT_ALPHABETICALLY_AZ = 0; SortType.SORT_ALPHABETICALLY_ZA = 1; SortType.SORT_BY_TYPE = 2; SortType.SORT_NO_SORT = 3; var WorldPointType = {}; WorldPointType.WPT_MODEL = 1; WorldPointType.WPT_LABEL = 2; WorldPointType.WPT_PRIMITIVE = 4; WorldPointType.WPT_ANIM = 8; WorldPointType.WPT_BUILDING = 16; WorldPointType.WPT_SKY = 32; WorldPointType.WPT_ACCURATE_CPT = 64; WorldPointType.WPT_BBOX_CPT = 128; WorldPointType.WPT_VIDEO = 256; WorldPointType.WPT_UNDERGROUND = 512; WorldPointType.WPT_SCREEN_OVERLAY = 1024; WorldPointType.WPT_SCREEN_CONTROL = 2048; WorldPointType.WPT_SCREEN_COVERED = 4096; WorldPointType.WPT_ALL = -1; var MouseInputMode = {}; MouseInputMode.MI_FREE_FLIGHT = 0; MouseInputMode.MI_COM_CLIENT = 1; MouseInputMode.MI_CONTROLLED_FLIGHT = 2; MouseInputMode.MI_EDIT = 3; MouseInputMode.MI_MEASURAMENT = 4; var MessageBarTextAlignment = {}; MessageBarTextAlignment.MBT_LEFT = 0; MessageBarTextAlignment.MBT_CENTER = 1; MessageBarTextAlignment.MBT_RIGHT = 2; var AccuracyLevel = {}; AccuracyLevel.ACCURACY_NORMAL = 0; AccuracyLevel.ACCURACY_BEST_FROM_MEMORY = 1; AccuracyLevel.ACCURACY_BEST_FROM_MPT = 2; var PermissionType = {}; PermissionType.LMP_ENABLE_ALL = 0; PermissionType.LMP_DISABLE_API = 1; PermissionType.LMP_DISABLE_UI = 2; PermissionType.LMP_DISABLE_ALL = -1; var SliderDisplayMode = {}; SliderDisplayMode.MODE_TIME_NONE = 0; SliderDisplayMode.MODE_FIXED_TIME = 1; SliderDisplayMode.MODE_TIME = 2; SliderDisplayMode.MODE_RANGE_PROJECT = 4; SliderDisplayMode.MODE_RANGE_CUSTOM = 8; SliderDisplayMode.MODE_ADJUST_FOR_GROUP = 16; var TimeZoneType = {}; TimeZoneType.TIME_ZONE_TYPE_MY_COMPUTER = 0; TimeZoneType.TIME_ZONE_TYPE_UTC = 1; TimeZoneType.TIME_ZONE_TYPE_SPECIFIC = 2; var TEVesrionType = {}; TEVesrionType.TEVT_PRO = 0; TEVesrionType.TEVT_PLUS = 1; TEVesrionType.TEVT_VIEWER = 2; TEVesrionType.TEVT_UNKNOWN = -1; var ObjectTypeCode = {}; ObjectTypeCode.OT_UNDEFINED = 0; ObjectTypeCode.OT_POLYLINE = 1; ObjectTypeCode.OT_POLYGON = 2; ObjectTypeCode.OT_RECTANGLE = 3; ObjectTypeCode.OT_REGULAR_POLYGON = 4; ObjectTypeCode.OT_CIRCLE = 5; ObjectTypeCode.OT_3D_POLYGON = 6; ObjectTypeCode.OT_BUILDING = 7; ObjectTypeCode.OT_BOX = 8; ObjectTypeCode.OT_PYRAMID = 9; ObjectTypeCode.OT_CYLINDER = 10; ObjectTypeCode.OT_CONE = 11; ObjectTypeCode.OT_ELLIPSE = 12; ObjectTypeCode.OT_ARC = 13; ObjectTypeCode.OT_ARROW = 14; ObjectTypeCode.OT_3D_ARROW = 15; ObjectTypeCode.OT_SPHERE = 16; ObjectTypeCode.OT_MODEL = 17; ObjectTypeCode.OT_LABEL = 18; ObjectTypeCode.OT_LOCATION = 19; ObjectTypeCode.OT_TREE_HOTLINK = 20; ObjectTypeCode.OT_ROUTE = 21; ObjectTypeCode.OT_MESSAGE = 22; ObjectTypeCode.OT_DYNAMIC = 23; ObjectTypeCode.OT_IMAGE_LABEL = 24; ObjectTypeCode.OT_THREAT_DOME = 25; ObjectTypeCode.OT_IMAGERY_LAYER = 26; ObjectTypeCode.OT_TERRAIN_VIDEO = 27; ObjectTypeCode.OT_POINT_CLOUD = 28; ObjectTypeCode.OT_ELEVATION_LAYER = 29; ObjectTypeCode.OT_TERRAIN_MODIFIER = 30; ObjectTypeCode.OT_TERRAIN_HOLE = 31; ObjectTypeCode.OT_POPUP_MESSAGE = 32; ObjectTypeCode.OT_FEATURE = 33; ObjectTypeCode.OT_PRESENTATION = 34; ObjectTypeCode.OT_ANALYSIS_LOS = 35; var SGGeometryTypeId = {}; SGGeometryTypeId.SG_POINT = 0; SGGeometryTypeId.SG_LINESTRING = 1; SGGeometryTypeId.SG_LINEARRING = 2; SGGeometryTypeId.SG_POLYGON = 3; SGGeometryTypeId.SG_MULTIPOINT = 4; SGGeometryTypeId.SG_MULTILINESTRING = 5; SGGeometryTypeId.SG_MULTIPOLYGON = 6; var BuildingStyleCode = {}; BuildingStyleCode.BS_STRETCH_TERRAIN = 0; BuildingStyleCode.BS_POLYGONS = 1; var IntersectionType = {}; IntersectionType.IT_NONE = 0; IntersectionType.IT_INTERSECT = 1; IntersectionType.IT_WITHIN = 2; var StreamLayerStatus = {}; StreamLayerStatus.SLS_NOT_STREAMED_LAYER = 0; StreamLayerStatus.SLS_STREAMING = 1; StreamLayerStatus.SLS_STREAM_PAUSED = 2; var AltitudeUnitCode = {}; AltitudeUnitCode.AU_METER = 0; AltitudeUnitCode.AU_FEET = 1; AltitudeUnitCode.AU_CENTIMETER = 2; AltitudeUnitCode.AU_DECIMETER = 3; AltitudeUnitCode.AU_INCHE = 4; AltitudeUnitCode.AU_YARD = 5; AltitudeUnitCode.AU_UNDEFINED = -1; var LabelLockMode = {}; LabelLockMode.LM_DECAL = 0; LabelLockMode.LM_AXIS = 1; LabelLockMode.LM_AXIS_TEXTUP = 2; LabelLockMode.LM_AXIS_AUTOPITCH = 3; LabelLockMode.LM_AXIS_AUTOPITCH_TEXTUP = 4; var DistributionDir = {}; DistributionDir.DOWN_UP = 0; DistributionDir.UP_DOWN = 1; DistributionDir.RIGHT_LEFT = 2; DistributionDir.LEFT_RIGHT = 3; DistributionDir.FRONT_BACK = 4; DistributionDir.BACK_FRONT = 5; var CPTDataFormat = {}; CPTDataFormat.CPT_DF_INTENSITY = 0; CPTDataFormat.CPT_DF_RGB = 1; var _HTML_POPUP_FLAGS = {}; _HTML_POPUP_FLAGS.HTML_POPUP_NONE = 0; _HTML_POPUP_FLAGS.HTML_POPUP_ANCHOR_3D_WINDOW = 1; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_DRAG = 2; _HTML_POPUP_FLAGS.HTML_POPUP_NO_CAPTION = 4; _HTML_POPUP_FLAGS.HTML_POPUP_USE_DEFAULT_POS = 8; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_SIZE = 16; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_RESIZE = 32; _HTML_POPUP_FLAGS.HTML_POPUP_ADD_SHADOW = 64; _HTML_POPUP_FLAGS.HTML_POPUP_NO_BORDER = 128; _HTML_POPUP_FLAGS.HTML_POPUP_SET_FOCUS_TO_RENDER = 256; _HTML_POPUP_FLAGS.HTML_POPUP_NOT_USE_POINTER = 512; _HTML_POPUP_FLAGS.HTML_POPUP_ALWAYS_VISIBLE = 1024; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_POS = 2048; _HTML_POPUP_FLAGS.HTML_POPUP_USE_TEXT_AS_INNER_HTML = 4096; var PresentationStepContinue = {}; PresentationStepContinue.PSC_MOUSECLICK = 0; PresentationStepContinue.PSC_WAIT = 1; var PresentationStepFlightSpeed = {}; PresentationStepFlightSpeed.PSFS_VERYSLOW = 0; PresentationStepFlightSpeed.PSFS_SLOW = 1; PresentationStepFlightSpeed.PSFS_NORMAL = 2; PresentationStepFlightSpeed.PSFS_FAST = 3; PresentationStepFlightSpeed.PSFS_VERYFAST = 4; var PresentationPlayAlgorithm = {}; PresentationPlayAlgorithm.PPA_FLYTO = 0; PresentationPlayAlgorithm.PPA_SPLINE = 1; var PresentationPlayMode = {}; PresentationPlayMode.PPM_AUTOMATIC = 0; PresentationPlayMode.PPM_MANUAL = 1; var PresentationCaptionSizeType = {}; PresentationCaptionSizeType.PCST_FIXED = 0; PresentationCaptionSizeType.PCST_AUTOMATICALLYADJUST = 1; var PresentationCaptionPosition = {}; PresentationCaptionPosition.PCP_TOPLEFT = 0; PresentationCaptionPosition.PCP_TOPCENTER = 1; PresentationCaptionPosition.PCP_TOPRIGHT = 2; PresentationCaptionPosition.PCP_BOTTOMLEFT = 3; PresentationCaptionPosition.PCP_BOTTOMCENTER = 4; PresentationCaptionPosition.PCP_BOTTOMRIGHT = 5; var PresentationStatus = {}; PresentationStatus.PS_PLAYING = 0; PresentationStatus.PS_NOTPLAYING = 1; PresentationStatus.PS_PAUSED = 2; PresentationStatus.PS_WAITINGTIME = 3; PresentationStatus.PS_WAITINGCLICK = 4; var VideoPlayStatus = {}; VideoPlayStatus.VPS_PAUSE = 0; VideoPlayStatus.VPS_PLAY = 1; VideoPlayStatus.VPS_STOP = 2; var ContainerSite = {}; ContainerSite.CS_DOCK_LEFT = 0; ContainerSite.CS_DOCK_RIGHT = 1; ContainerSite.CS_DOCK_TOP = 2; ContainerSite.CS_DOCK_BOTTOM = 3; ContainerSite.CS_DOCK_FLOAT = 4; ContainerSite.CS_MAIN = 5; ContainerSite.CS_NOT_VALID = -1; var FaceFillTypeCode = {}; FaceFillTypeCode.FACE_COLOR = 0; FaceFillTypeCode.FACE_TEXTURE = 1; FaceFillTypeCode.FACE_TERRAIN_TEXTURE = 2; FaceFillTypeCode.FACE_UNDEFINED = -1; var RoofStyleCode = {}; RoofStyleCode.ROOFTOP_FLAT = 0; RoofStyleCode.ROOFTOP_ANGULAR = 1; var PresentationStepType = {}; PresentationStepType.ST_LOCATION = 0; PresentationStepType.ST_DYNAMICOBJECT = 1; PresentationStepType.ST_GROUPOROBJECT = 2; PresentationStepType.ST_UNDERGROUNDMODE = 3; PresentationStepType.ST_TIMESLIDER = 4; PresentationStepType.ST_CURRENTTIME = 5; PresentationStepType.ST_MESSAGE = 6; PresentationStepType.ST_TOOL = 7; PresentationStepType.ST_CAPTION = 8; PresentationStepType.ST_RESTARTDYNAMICOBJECT = 9; PresentationStepType.ST_FLIGHTSPEEDFACTOR = 10; PresentationStepType.ST_CLEARCAPTION = -1; var TilingMethodCode = {}; TilingMethodCode.TM_TILES_PER_SIDE = 0; TilingMethodCode.TM_TILES_PER_AXIS = 0; TilingMethodCode.TM_METERS_PER_TILE = 1; TilingMethodCode.TM_UNDEFINED = -1; var AttributeTypeCode = {}; AttributeTypeCode.AT_TEXT = 0; AttributeTypeCode.AT_INTEGER = 1; AttributeTypeCode.AT_DOUBLE = 2; AttributeTypeCode.AT_UNKNOWN = -1; var FeatureState = {}; FeatureState.FS_NONE = 0; FeatureState.FS_NEW = 1; FeatureState.FS_MODIFIED = 2; FeatureState.FS_DELETED = 3;
SGLang = {
    lang : {},
    /**
     * APIProperty: defaultCode
     * {String} Default language to use when a specific language can't be
     *     found.  Default is "en".
     */
    defaultCode: "2052",
    /**
     * APIFunction: getCode
     * Get the current language code.
     *
     * Returns:
     * The current language code.
     */
    getCode: function() {
        //var lang = SGLang.getUrlParameters()["lang"];
        //if(!lang)
        //    lang = SGLang.defaultCode;
        //return lang;
        return "2052";
    },
    getUrlParameters: function()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split(/&|\?/ig);
        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },
    /**
     * APIMethod: translate
     * Looks up a key from a dictionary based on the current language string.
     *     The value of <getCode> will be used to determine the appropriate
     *     dictionary.  Dictionaries are stored in <SGLang>.
     *
     * Parameters:
     * key - {String} The key for an i18n string value in the dictionary.
     * context - {Object} Optional context to be used with
     *     <SGAPI.String.format>.
     *
     * Returns:
     * {String} A internationalized string.
     */
    i18n: function(key, context) {
        var message = SGLang.lang[key];
        if(!message) {
            // Message not found, fall back to message key
            message = key;
        }
        if(context) {
            message = SGLang.format(message, context);
        }
        return message;
    },
    i18nFile: function(file) {
        var code = this.getCode();
        if(code == "0" || code == "1033")
            return file;
        return code + "/" + file;
    },
    format: function(template, context, args) {
        if(!context) {
            context = window;
        }
        // Example matching:
        // str   = ${foo.bar}
        // match = foo.bar
        var replacer = function(str, match) {
            var replacement;
            // Loop through all subs. Example: ${a.b.c}
            // 0 -> replacement = context[a];
            // 1 -> replacement = context[a][b];
            // 2 -> replacement = context[a][b][c];
            var subs = match.split(/\.+/);
            for (var i=0; i< subs.length; i++) {
                if (i == 0) {
                    replacement = context;
                }
                replacement = replacement[subs[i]];
            }
            if(typeof replacement == "function") {
                replacement = args ?
                    replacement.apply(null, args) :
                    replacement();
            }
            // If replacement is undefined, return the string 'undefined'.
            // This is a workaround for a bugs in browsers not properly
            // dealing with non-participating groups in regular expressions:
            // http://blog.stevenlevithan.com/archives/npcg-javascript
            if (typeof replacement == 'undefined') {
                return 'undefined';
            } else {
                return replacement;
            }
        };
        return template.replace(SGLang.tokenRegEx, replacer);
    },
    /**
     * Property: SGLang.tokenRegEx
     * Used to find tokens in a string.
     * Examples: ${a}, ${a.b.c}, ${a-b}, ${5}
     */
    tokenRegEx:  /\$\{([\w.]+?)\}/g
};
//-------------------
// load requested lang file
(function() {
   // document.write("<script language='javascript' src='Lang.js'></script>");
    // var code = SGLang.getCode();
    // document.write("<script  language='javascript' src='" + code + "/Lang.js'></script>");
    var head = document.head || document.getElementsByTagName("head")[0];
    // New way to support IE10
    firstScript = head.getElementsByTagName("script")[0];
    var script = document.createElement("script");
    script.setAttribute("src", "Lang.js");
    head.insertBefore(script, firstScript);
    var code = SGLang.getCode();
    var script2 = document.createElement("script");
    script2.setAttribute("src", code + "/Lang.js");
    head.insertBefore(script2, firstScript);
})();
// hide document body, so that TextXXX won't be visible until we replace them on document ready
$(document.body).hide();
//-------------------
$(document).ready(function ()
{
    $(document.body).hide();
    var translateDocument = function()
    {
        document.title = SGLang.i18n(document.title);
        $(".i18n").each(function ()
        {
            if (this.tagName == "INPUT")
            {
                this.value = SGLang.i18n(this.value);
            }
            else if (this.tagName == "IMG")
            {
                $(this).attr("src",SGLang.i18n($(this).attr("src")));
                $(this).attr("alt", SGLang.i18n($(this).attr("alt")));
                $(this).attr("title", SGLang.i18n($(this).attr("title")));
            }
            else
            {
                $(this).attr("title", SGLang.i18n($(this).attr("title")));
                $(this).attr("alt", SGLang.i18n($(this).attr("alt")));
                // set element html only if it does not contain any other html elements.
                // otherwise it will erase them.
                if ($(this).children().length == 0)
                {
                    $(this).html(SGLang.i18n($.trim($(this).text())));
                }
            }
        });
        $(".i18nFile").each(function ()
        {
            if (this.tagName == "IMG")
            {
                $(this).attr("src",SGLang.i18nFile($(this).attr("src")));
            }
        });
        $(document.body).show();
    }
    // make sure that hiding document body really worked.
    // I am not sure if IE will update the document view, until the function has finished executing.
    // so I am giving it here a few milliseconds of unused time.
    setTimeout(translateDocument,1);
});
$(document).ready(function ()
{
    if (GetParamValue("inSG","") == "1")
    {
        document.getElementById("TopAreaTD").style.height = "57";
        document.getElementById("TitleTD").align = "left";
        document.getElementById("CloseHelpTd").style.display = "none";
    }
});
//-------------------
// DisplayHelpPopup
function DisplayHelpPopup(HTMLSrc, title) {
    if (title == null || title == "")
        title = "?";
    var Cont = TE.interface("IContainer2");
    Cont.HTMLPopup(1, 5, 5, 850, 500, title, abspath() + "/" + HTMLSrc, 10, -1);
}
//-------------------
// DisplayMessagePopup
function DisplayMessagePopup(title, header, icon,body, x, y, width, height, CloseButton) {
    var HTMLString = "<html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/><link rel='StyleSheet' href='" + abspath() + "/../Style.css' type='text/css'></head><body leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><object id='SGWorld' classid='CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1' style='display:none'></object>";
    HTMLString += "<table width='100%' height='100%' cellpadding=4pt cellspacing=0 border=0> <tr height='20pt'>";
    if (icon != "")
        HTMLString += "<td align='left' width='50pt'><img src='"+icon+"' alt='' ></td>";
    if (header != "")
        HTMLString += "<td align='middle'><span class='s12b'>" + header + "</span></td>";
    HTMLString += "<td width='50pt'></td></tr><tr><td valign='top' colspan=3><span class='s9'>" + body + "</span></td></tr>";
    if (CloseButton)
        HTMLString += "<tr><td align='right' valign=bottom colspan=3><input type='button' class='MenuButtonSmall' value='Close' onClick='SGWorld.Window.RemovePopupByCaption(\"" + title + "\");' /></td></tr>";
    HTMLString += "</body></html>";
    var popupMsg = SGWorld.Creator.CreatePopupMessage(title, "", x, y, width, height, -1);
    popupMsg.Flags = 2 + 32;
    popupMsg.InnerText = HTMLString;
    SGWorld.Window.ShowPopup(popupMsg);
}
//-------------------
// DisplayHelpPopup6
function DisplayHelpPopup6(HTMLSrc, title) {
    if (title == null || title == "")
        title = "?";
    var popup = SGWorld.Creator.CreatePopupMessage(title, abspath() + "/" + HTMLSrc, 5, 5, 850, 500);
    popup.AllowDrag = true;
    popup.AllowResize = true;
    SGWorld.Window.ShowPopup(popup);
}
//-------------------
// CloseTool
function CloseTool (ToolName)
{
    var Cont = TE.interface("IContainer2");
    Cont.RemoveURL (1,ToolName);
}
//-------------------
// SGAPIDisplayHelpPopup
function SGAPIDisplayHelpPopup(HTMLSrc,title)
{
    //globe.teCore.IContainer.HTMLPopup (1, 5,5,500,500,"Help", SGAPI.toAbspath(HTMLSrc), 10, -1 );
    if (title == null || title == "")
        title = "?";
    var popup = new SGPopup(title, HTMLSrc,0,0,650,500);
    popup.align = "TopLeft";
    globe.showPopup(popup);
}
//-------------------
// SGAPICloseTool
function SGAPICloseTool (ToolName)
{
    globe.teCore.IContainer.RemoveURL (1,ToolName);
}
//--------------
// abspath
function abspath()
{
    var abspath = unescape(window.location.href);
    // Remove query String
    var index=abspath.indexOf("?");
    if (index > 0) abspath = abspath.substr (0,index-1);
    index=abspath.lastIndexOf("/");
    var index2 = abspath.lastIndexOf("\\");
    index = (index > index2) ? index : index2;
    if (index <= 0) return abspath;
    abspath = abspath.substring(0,index);
    if(abspath.substring(0,1) == "/") abspath = abspath.slice(1);
    var re = /file:\/\/\//gi;
    if (abspath.match(re) != null) abspath = abspath.replace(re,""); // if this is indeed a local file, we strip the "file://" prefix from it.
    return(abspath);
}
// GetParamValue
function GetParamValue(findParam, defaultValue)
{
    var arr = document.location.href.split("?");
    if (arr.length <= 1) return defaultValue;
    arr = arr[1].split("&");
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) {
            arr = arr[i].split("=");
            return arr[1];
        }
    }
    return defaultValue;
}
//-----------------
// validateNumber
function validateNumber(strNum)
{
    strNum =     strNum.replace(/,/, ".");
    return parseFloat (strNum);
}
//--------------
// validateNumberEx
function validateNumberEx(field, defVal, MinNum, MaxNum) {
    try {
        field.val (validateNumber(field.val()));
        if (field.val() < MinNum)
            field.val(MinNum);
        if (field.val() > MaxNum)
            field.val( MaxNum);
    }
    catch (e) {field.val(defVal); }
}
//********************************************
var gDrawPolyAltitudeType = 2;
//----------
// DrawPolyLButtonDown
//----------
function DrawPolyLButtonDown(Flags, X, Y) {
    DrawPolyLButtonClicked(Flags, X, Y);
}
//----------
// DrawPolyLButtonClicked
//----------
function DrawPolyLButtonClicked(Flags, X, Y) {
    var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, -1 & ~(128 | 1024));
    if (gPolyObj == null) {
        // We always start with a polyline and change it to Polygon (for area) after the second click)
        var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude])
        gPolyObj = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), gDrawPolyAltitudeType, -1, gPolylineText);
        gPolyObj.LineStyle.Width = -2;
        gPolyObj.Geometry.StartEdit();
    }
    else {
        if (gPolyMethod == 2) // Polygon
        {
            if (gPolyObj.ObjectType == 1) {
                // Deleting the temporary line
                var x = gPolyObj.Geometry.Points.Item(0).X;
                var y = gPolyObj.Geometry.Points.Item(0).Y;
                var z = gPolyObj.Geometry.Points.Item(0).Z;
                SGWorld.Creator.DeleteObject(gPolyObj.ID);
                if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true)
                    CursorCoord.Position.Altitude = z;
                // Creating the polygon
                var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, z, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude])
                gPolyObj = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), gDrawPolyAltitudeType, -1, gPolygonText);
                gPolyObj.LineStyle.Width = -2;
                // gPolyObj.Terrain.GroundObject = true;   // Arik removed it. Caused a bug in Viewshed query (got wrong GetGroundHeight values because of the polygon)
                gPolyObj.Geometry.StartEdit();
            }
            else {
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x;
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y;
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true)
                    gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = gPolyObj.Geometry.Rings(0).Points.Item(0).Z;
                gPolyObj.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude);
            }
        }
        else {
            gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).X = CursorCoord.Position.x;
            gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Y = CursorCoord.Position.y;
            gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude;
            if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true)
                gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = gPolyObj.Geometry.Points.Item(0).Z;
    gPolyObj.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude);
        }
    }
    if (gDrawPolyClick != null)
        gDrawPolyClick(gPolyObj.Geometry, gPolyObj.ObjectType);
    gPolyObj.SetParam(5440, 1);
    return false;
}
//-----------
// onFrame
//-----------
function DrawPolyOnFrame() {
    if (gPolyObj != null) {
        try {
            var mouseInfo = SGWorld.Window.GetMouseInfo()
            var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, -1 & ~(128|1024));
            if (CursorCoord == null)
                return false;
            if (gPolyObj.ObjectType == 2) {
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x;
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y;
                gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true)
                    gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = gPolyObj.Geometry.Rings(0).Points.Item(0).Z;
            }
            else {
                gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).X = CursorCoord.Position.x;
                gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Y = CursorCoord.Position.y;
                gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true)
                    gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = gPolyObj.Geometry.Points.Item(0).Z;
            }
            gPolyObj.SetParam(5440, 1);
        }
        catch (e) { }
    }
}
//-------------
//DrawPolyInputModeChanged
function DrawPolyInputModeChanged(NewMode) {
    if (NewMode != 1)
        if (gPolyObj != null)
        Reset(0, 1);
}
//-------------
// DrawPolyRButtonUp
function DrawPolyRButtonUp(Flags, X, Y) {
    if (gPolyObj == null || ((gPolyObj.ObjectType == 1 && gPolyObj.Geometry.Points.count <= 2) || (gPolyObj.ObjectType == 2 && gPolyObj.Geometry.Rings(0).Points.count <= 3))) {
        Reset(0, 0);
        return false;
    }
    if (gPolyObj.ObjectType == 1)
        gPolyObj.Geometry.Points.DeletePoint(gPolyObj.Geometry.Points.count - 1);
    else
        gPolyObj.Geometry.Rings(0).Points.DeletePoint(gPolyObj.Geometry.Rings(0).Points.count - 1);
    gPolyObj.Geometry.EndEdit();
    gEndDrawPoly(gPolyObj.Geometry, gPolyObj.ObjectType, gPolyObj.Position.AltitudeType);
    Reset(0, 0);
    return true;
}
//-------------------
//searchGeometries
function searchGeometries2(parentNode, callbackFunc) {
    SGWorld.ProjectTree.EnableRedraw(0);
    searchGeometriesLeaf2(parentNode, callbackFunc);
    SGWorld.ProjectTree.EnableRedraw(1);
}
//-------------------
// searchGeometries
function searchGeometriesLeaf2(parentNode, callbackFunc) {
    if (SGWorld.ProjectTree.IsLayer(parentNode))  // Layer
    {
        var layer = SGWorld.ProjectTree.GetLayer(parentNode);
        var featureGroups = layer.FeatureGroups;
        for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers
        {
            var featureGroup = featureGroups.Item(i);
            var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method"));
            var features = featureGroup.Features;
            for (var j = 0; j < features.Count; j++) {
                var ret;
                if (featureGroup.GeometryType != 0)
                    ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType);
                else {
                    if (features.Item(j).Geometry.GeometryType == 0) // Point
                    {
                        var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z);
                        ret = callbackFunc(position, featureGroup.GeometryType, altitudeType);
                    }
                }
                if (!ret)
                    return;
            }
        }
    }
    else {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != "") {
            if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))
                searchGeometriesLeaf2(node, callbackFunc);
            else {
                var Object = SGWorld.Creator.GetObject(node);
                if (Object != null) {
                    var altitudeType = Object.Position.AltitudeType;
                    var ret;
                    if (Object.ObjectType == 1 || Object.ObjectType == 2)
                        ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position);
                    else
                        ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position);
                    if (!ret)
                        return;
                }
            }
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
}
function AltitudeMethodToAltitudeType(altitudeMethod)
{
    switch(altitudeMethod)
    {
        case 10: return AltitudeTypeCode.ATC_TERRAIN_RELATIVE;
        case 11: return AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE;
        case 12: return AltitudeTypeCode.ATC_ON_TERRAIN;
        case 13: return AltitudeTypeCode.ATC_PIVOT_RELATIVE;
    }
}
//-------------------
//searchGeometriesClipbaord
function searchGeometriesClipboard(callbackFunc) {
    SGWorld.ProjectTree.EnableRedraw(0);
        var Object;
        for (var i = 0; i < SGWorld.Application.Clipboard.Count; i++) {
            try {
                Object = SGWorld.Application.Clipboard.Item(i);
                var altitudeType = Object.Position.AltitudeType;
                var ret;
                if (Object.ObjectType == 1 || Object.ObjectType == 2)
                    ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position);
                else
                    ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position);
                if (!ret) {
                    SGWorld.ProjectTree.EnableRedraw(1);
                    return;
                }
            }
            catch (e) { }
          }
    SGWorld.ProjectTree.EnableRedraw(1);
}
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon71.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,792 @@
/**** JQuery was removed from toolsCommon70. You should include one of the JQuery files under the "JQuery" folder ****/
if(!this.JSON){this.JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());
/*
New API enums. Generated from Freeze20
*/
var ActionCode = {}; ActionCode.AC_FLYTO = 0; ActionCode.AC_CIRCLEPATTERN = 1; ActionCode.AC_OVALPATTERN = 2; ActionCode.AC_LINEPATTERN = 3; ActionCode.AC_ARCPATTERN = 4; ActionCode.AC_FOLLOWBEHIND = 5; ActionCode.AC_FOLLOWABOVE = 6; ActionCode.AC_FOLLOWBELOW = 7; ActionCode.AC_FOLLOWRIGHT = 8; ActionCode.AC_FOLLOWLEFT = 9; ActionCode.AC_FOLLOWBEHINDANDABOVE = 10; ActionCode.AC_FOLLOWCOCKPIT = 11; ActionCode.AC_FOLLOWFROMGROUND = 12; ActionCode.AC_STOP = 13; ActionCode.AC_JUMP = 14; ActionCode.AC_DELETE = 15; ActionCode.AC_EDIT_FINISHED = 16; ActionCode.AC_OBJECT_ADDED = 17; ActionCode.AC_PLAY = 18; ActionCode.AC_SHOW = 19; ActionCode.AC_EDIT_STARTED = 20; ActionCode.AC_SELCHANGED = 21; ActionCode.AC_WAYPOINT_REACHED = 22; ActionCode.AC_GROUP_ADDED = 23; ActionCode.AC_LAYER_ADDED = 24; ActionCode.AC_LAYER_REFRESHED = 25; ActionCode.AC_ITEM_MOVED=26; var AltitudeTypeCode = {}; AltitudeTypeCode.ATC_TERRAIN_RELATIVE = 0; AltitudeTypeCode.ATC_PIVOT_RELATIVE = 1; AltitudeTypeCode.ATC_ON_TERRAIN = 2; AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE = 3; AltitudeTypeCode.ATC_DEFAULT = 999; var DynamicMotionStyle = {}; DynamicMotionStyle.MOTION_GROUND_VEHICLE = 0; DynamicMotionStyle.MOTION_AIRPLANE = 1; DynamicMotionStyle.MOTION_HELICOPTER = 2; DynamicMotionStyle.MOTION_HOVER = 3; var DynamicObjectType = {}; DynamicObjectType.DYNAMIC_3D_MODEL = 0; DynamicObjectType.DYNAMIC_TEXT_LABEL = 1; DynamicObjectType.DYNAMIC_IMAGE_LABEL = 2; DynamicObjectType.DYNAMIC_VIRTUAL = 3; var LabelStyle = {}; LabelStyle.LS_DEFAULT = 0; LabelStyle.LS_STREET = 1; LabelStyle.LS_STATE = 2; var MsgClient6 = {}; MsgClient6.MC_LEFT = 0; MsgClient6.MC_MAIN = 2; MsgClient6.MC_MESSAGE_BAR = 3; MsgClient6.MC_FLOAT = 4; MsgClient6.MC_POPUP = 5; var MsgType = {}; MsgType.TYPE_TEXT = 0; MsgType.TYPE_URL = 1; MsgType.TYPE_SCRIPT = 3; var ModelTypeCode = {}; ModelTypeCode.MT_NORMAL = 0; ModelTypeCode.MT_ANIMATION = 1; ModelTypeCode.MT_PROGRESSIVE = 2; var LayerGeometryType = {}; LayerGeometryType.LGT_POINT = 0; LayerGeometryType.LGT_POLYLINE = 1; LayerGeometryType.LGT_POLYGON = 2; LayerGeometryType.LGT_COLLECTION = 3; LayerGeometryType.LGT_NONE = -1; var SphereStyle = {}; SphereStyle.SPHERE_NORMAL = 0; SphereStyle.SPHERE_UPPER_HALF = 1; SphereStyle.SPHERE_LOWER_HALF = 2; SphereStyle.SPHERE_UPPER_HALF_BASE = 3; SphereStyle.SPHERE_LOWER_HALF_BASE = 4; var ElevationBehaviorMode = {}; ElevationBehaviorMode.EB_REPLACE = 0; ElevationBehaviorMode.EB_BELOW = 1; ElevationBehaviorMode.EB_ABOVE = 2; var EditItemFlags = {}; EditItemFlags.EDIT_ITEM_USE_PROPERTY = 0; EditItemFlags.EDIT_ITEM = 1; EditItemFlags.EDIT_ITEM_VERTICES = 2; EditItemFlags.EDIT_ITEM_BUILDING_ROOF = 3; var ItemCode = {}; ItemCode.SELECTED = 10; ItemCode.CHILD = 11; ItemCode.FIRSTVISIBLE = 12; ItemCode.NEXT = 13; ItemCode.NEXTVISIBLE = 14; ItemCode.PARENT = 15; ItemCode.PREVIOUS = 16; ItemCode.PREVIOUSVISIBLE = 17; ItemCode.ROOT = 18; var SortType = {}; SortType.SORT_ALPHABETICALLY_AZ = 0; SortType.SORT_ALPHABETICALLY_ZA = 1; SortType.SORT_BY_TYPE = 2; SortType.SORT_NO_SORT = 3; var WorldPointType = {}; WorldPointType.WPT_MODEL = 1; WorldPointType.WPT_LABEL = 2; WorldPointType.WPT_PRIMITIVE = 4; WorldPointType.WPT_ANIM = 8; WorldPointType.WPT_BUILDING = 16; WorldPointType.WPT_SKY = 32; WorldPointType.WPT_ACCURATE_CPT = 64; WorldPointType.WPT_BBOX_CPT = 128; WorldPointType.WPT_VIDEO = 256; WorldPointType.WPT_UNDERGROUND = 512; WorldPointType.WPT_SCREEN_OVERLAY = 1024; WorldPointType.WPT_SCREEN_CONTROL = 2048; WorldPointType.WPT_SCREEN_COVERED = 4096; WorldPointType.WPT_ALL = -1; var MouseInputMode = {}; MouseInputMode.MI_FREE_FLIGHT = 0; MouseInputMode.MI_COM_CLIENT = 1; MouseInputMode.MI_CONTROLLED_FLIGHT = 2; MouseInputMode.MI_EDIT = 3; MouseInputMode.MI_MEASURAMENT = 4; var MessageBarTextAlignment = {}; MessageBarTextAlignment.MBT_LEFT = 0; MessageBarTextAlignment.MBT_CENTER = 1; MessageBarTextAlignment.MBT_RIGHT = 2; var AccuracyLevel = {}; AccuracyLevel.ACCURACY_NORMAL = 0; AccuracyLevel.ACCURACY_BEST_FROM_MEMORY = 1; AccuracyLevel.ACCURACY_BEST_FROM_MPT = 2; var PermissionType = {}; PermissionType.LMP_ENABLE_ALL = 0; PermissionType.LMP_DISABLE_API = 1; PermissionType.LMP_DISABLE_UI = 2; PermissionType.LMP_DISABLE_ALL = -1; var SliderDisplayMode = {}; SliderDisplayMode.MODE_TIME_NONE = 0; SliderDisplayMode.MODE_FIXED_TIME = 1; SliderDisplayMode.MODE_TIME = 2; SliderDisplayMode.MODE_RANGE_PROJECT = 4; SliderDisplayMode.MODE_RANGE_CUSTOM = 8; SliderDisplayMode.MODE_ADJUST_FOR_GROUP = 16; var TimeZoneType = {}; TimeZoneType.TIME_ZONE_TYPE_MY_COMPUTER = 0; TimeZoneType.TIME_ZONE_TYPE_UTC = 1; TimeZoneType.TIME_ZONE_TYPE_SPECIFIC = 2; var TEVesrionType = {}; TEVesrionType.TEVT_PRO = 0; TEVesrionType.TEVT_PLUS = 1; TEVesrionType.TEVT_VIEWER = 2; TEVesrionType.TEVT_UNKNOWN = -1; var ObjectTypeCode = {}; ObjectTypeCode.OT_UNDEFINED = 0; ObjectTypeCode.OT_POLYLINE = 1; ObjectTypeCode.OT_POLYGON = 2; ObjectTypeCode.OT_RECTANGLE = 3; ObjectTypeCode.OT_REGULAR_POLYGON = 4; ObjectTypeCode.OT_CIRCLE = 5; ObjectTypeCode.OT_3D_POLYGON = 6; ObjectTypeCode.OT_BUILDING = 7; ObjectTypeCode.OT_BOX = 8; ObjectTypeCode.OT_PYRAMID = 9; ObjectTypeCode.OT_CYLINDER = 10; ObjectTypeCode.OT_CONE = 11; ObjectTypeCode.OT_ELLIPSE = 12; ObjectTypeCode.OT_ARC = 13; ObjectTypeCode.OT_ARROW = 14; ObjectTypeCode.OT_3D_ARROW = 15; ObjectTypeCode.OT_SPHERE = 16; ObjectTypeCode.OT_MODEL = 17; ObjectTypeCode.OT_LABEL = 18; ObjectTypeCode.OT_LOCATION = 19; ObjectTypeCode.OT_TREE_HOTLINK = 20; ObjectTypeCode.OT_ROUTE = 21; ObjectTypeCode.OT_MESSAGE = 22; ObjectTypeCode.OT_DYNAMIC = 23; ObjectTypeCode.OT_IMAGE_LABEL = 24; ObjectTypeCode.OT_THREAT_DOME = 25; ObjectTypeCode.OT_IMAGERY_LAYER = 26; ObjectTypeCode.OT_TERRAIN_VIDEO = 27; ObjectTypeCode.OT_POINT_CLOUD = 28; ObjectTypeCode.OT_ELEVATION_LAYER = 29; ObjectTypeCode.OT_TERRAIN_MODIFIER = 30; ObjectTypeCode.OT_TERRAIN_HOLE = 31; ObjectTypeCode.OT_POPUP_MESSAGE = 32; ObjectTypeCode.OT_FEATURE = 33; ObjectTypeCode.OT_PRESENTATION = 34; ObjectTypeCode.OT_ANALYSIS_LOS = 35; var SGGeometryTypeId = {}; SGGeometryTypeId.SG_POINT = 0; SGGeometryTypeId.SG_LINESTRING = 1; SGGeometryTypeId.SG_LINEARRING = 2; SGGeometryTypeId.SG_POLYGON = 3; SGGeometryTypeId.SG_MULTIPOINT = 4; SGGeometryTypeId.SG_MULTILINESTRING = 5; SGGeometryTypeId.SG_MULTIPOLYGON = 6; var BuildingStyleCode = {}; BuildingStyleCode.BS_STRETCH_TERRAIN = 0; BuildingStyleCode.BS_POLYGONS = 1; var IntersectionType = {}; IntersectionType.IT_NONE = 0; IntersectionType.IT_INTERSECT = 1; IntersectionType.IT_WITHIN = 2; var StreamLayerStatus = {}; StreamLayerStatus.SLS_NOT_STREAMED_LAYER = 0; StreamLayerStatus.SLS_STREAMING = 1; StreamLayerStatus.SLS_STREAM_PAUSED = 2; var AltitudeUnitCode = {}; AltitudeUnitCode.AU_METER = 0; AltitudeUnitCode.AU_FEET = 1; AltitudeUnitCode.AU_CENTIMETER = 2; AltitudeUnitCode.AU_DECIMETER = 3; AltitudeUnitCode.AU_INCHE = 4; AltitudeUnitCode.AU_YARD = 5; AltitudeUnitCode.AU_UNDEFINED = -1; var LabelLockMode = {}; LabelLockMode.LM_DECAL = 0; LabelLockMode.LM_AXIS = 1; LabelLockMode.LM_AXIS_TEXTUP = 2; LabelLockMode.LM_AXIS_AUTOPITCH = 3; LabelLockMode.LM_AXIS_AUTOPITCH_TEXTUP = 4; var DistributionDir = {}; DistributionDir.DOWN_UP = 0; DistributionDir.UP_DOWN = 1; DistributionDir.RIGHT_LEFT = 2; DistributionDir.LEFT_RIGHT = 3; DistributionDir.FRONT_BACK = 4; DistributionDir.BACK_FRONT = 5; var CPTDataFormat = {}; CPTDataFormat.CPT_DF_INTENSITY = 0; CPTDataFormat.CPT_DF_RGB = 1; var _HTML_POPUP_FLAGS = {}; _HTML_POPUP_FLAGS.HTML_POPUP_NONE = 0; _HTML_POPUP_FLAGS.HTML_POPUP_ANCHOR_3D_WINDOW = 1; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_DRAG = 2; _HTML_POPUP_FLAGS.HTML_POPUP_NO_CAPTION = 4; _HTML_POPUP_FLAGS.HTML_POPUP_USE_DEFAULT_POS = 8; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_SIZE = 16; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_RESIZE = 32; _HTML_POPUP_FLAGS.HTML_POPUP_ADD_SHADOW = 64; _HTML_POPUP_FLAGS.HTML_POPUP_NO_BORDER = 128; _HTML_POPUP_FLAGS.HTML_POPUP_SET_FOCUS_TO_RENDER = 256; _HTML_POPUP_FLAGS.HTML_POPUP_NOT_USE_POINTER = 512; _HTML_POPUP_FLAGS.HTML_POPUP_ALWAYS_VISIBLE = 1024; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_POS = 2048; _HTML_POPUP_FLAGS.HTML_POPUP_USE_TEXT_AS_INNER_HTML = 4096; var PresentationStepContinue = {}; PresentationStepContinue.PSC_MOUSECLICK = 0; PresentationStepContinue.PSC_WAIT = 1; var PresentationStepFlightSpeed = {}; PresentationStepFlightSpeed.PSFS_VERYSLOW = 0; PresentationStepFlightSpeed.PSFS_SLOW = 1; PresentationStepFlightSpeed.PSFS_NORMAL = 2; PresentationStepFlightSpeed.PSFS_FAST = 3; PresentationStepFlightSpeed.PSFS_VERYFAST = 4; var PresentationPlayAlgorithm = {}; PresentationPlayAlgorithm.PPA_FLYTO = 0; PresentationPlayAlgorithm.PPA_SPLINE = 1; var PresentationPlayMode = {}; PresentationPlayMode.PPM_AUTOMATIC = 0; PresentationPlayMode.PPM_MANUAL = 1; var PresentationCaptionSizeType = {}; PresentationCaptionSizeType.PCST_FIXED = 0; PresentationCaptionSizeType.PCST_AUTOMATICALLYADJUST = 1; var PresentationCaptionPosition = {}; PresentationCaptionPosition.PCP_TOPLEFT = 0; PresentationCaptionPosition.PCP_TOPCENTER = 1; PresentationCaptionPosition.PCP_TOPRIGHT = 2; PresentationCaptionPosition.PCP_BOTTOMLEFT = 3; PresentationCaptionPosition.PCP_BOTTOMCENTER = 4; PresentationCaptionPosition.PCP_BOTTOMRIGHT = 5; var PresentationStatus = {}; PresentationStatus.PS_PLAYING = 0; PresentationStatus.PS_NOTPLAYING = 1; PresentationStatus.PS_PAUSED = 2; PresentationStatus.PS_WAITINGTIME = 3; PresentationStatus.PS_WAITINGCLICK = 4; var VideoPlayStatus = {}; VideoPlayStatus.VPS_PAUSE = 0; VideoPlayStatus.VPS_PLAY = 1; VideoPlayStatus.VPS_STOP = 2; var ContainerSite = {}; ContainerSite.CS_DOCK_LEFT = 0; ContainerSite.CS_DOCK_RIGHT = 1; ContainerSite.CS_DOCK_TOP = 2; ContainerSite.CS_DOCK_BOTTOM = 3; ContainerSite.CS_DOCK_FLOAT = 4; ContainerSite.CS_MAIN = 5; ContainerSite.CS_NOT_VALID = -1; var FaceFillTypeCode = {}; FaceFillTypeCode.FACE_COLOR = 0; FaceFillTypeCode.FACE_TEXTURE = 1; FaceFillTypeCode.FACE_TERRAIN_TEXTURE = 2; FaceFillTypeCode.FACE_UNDEFINED = -1; var RoofStyleCode = {}; RoofStyleCode.ROOFTOP_FLAT = 0; RoofStyleCode.ROOFTOP_ANGULAR = 1; var PresentationStepType = {}; PresentationStepType.ST_LOCATION = 0; PresentationStepType.ST_DYNAMICOBJECT = 1; PresentationStepType.ST_GROUPOROBJECT = 2; PresentationStepType.ST_UNDERGROUNDMODE = 3; PresentationStepType.ST_TIMESLIDER = 4; PresentationStepType.ST_CURRENTTIME = 5; PresentationStepType.ST_MESSAGE = 6; PresentationStepType.ST_TOOL = 7; PresentationStepType.ST_CAPTION = 8; PresentationStepType.ST_RESTARTDYNAMICOBJECT = 9; PresentationStepType.ST_FLIGHTSPEEDFACTOR = 10; PresentationStepType.ST_CLEARCAPTION = -1; var TilingMethodCode = {}; TilingMethodCode.TM_TILES_PER_SIDE = 0; TilingMethodCode.TM_TILES_PER_AXIS = 0; TilingMethodCode.TM_METERS_PER_TILE = 1; TilingMethodCode.TM_UNDEFINED = -1; var AttributeTypeCode = {}; AttributeTypeCode.AT_TEXT = 0; AttributeTypeCode.AT_INTEGER = 1; AttributeTypeCode.AT_DOUBLE = 2; AttributeTypeCode.AT_UNKNOWN = -1; var FeatureState = {}; FeatureState.FS_NONE = 0; FeatureState.FS_NEW = 1; FeatureState.FS_MODIFIED = 2; FeatureState.FS_DELETED = 3;
SGLang = {
    lang : {},
    /**
     * APIProperty: defaultCode
     * {String} Default language to use when a specific language can't be
     *     found.  Default is "en".
     */
    defaultCode: "2052",
    /**
     * APIFunction: getCode
     * Get the current language code.
     *
     * Returns:
     * The current language code.
     */
    getCode: function() {
        //var lang = SGLang.getUrlParameters()["lang"];
        //if(!lang)
        //    lang = SGLang.defaultCode;
        //return lang;
        return "2052";
    },
    getUrlParameters: function()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split(/&|\?/ig);
        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },
    /**
     * APIMethod: translate
     * Looks up a key from a dictionary based on the current language string.
     *     The value of <getCode> will be used to determine the appropriate
     *     dictionary.  Dictionaries are stored in <SGLang>.
     *
     * Parameters:
     * key - {String} The key for an i18n string value in the dictionary.
     * context - {Object} Optional context to be used with
     *     <SGAPI.String.format>.
     *
     * Returns:
     * {String} A internationalized string.
     */
    i18n: function(key, context) {
        var message = SGLang.lang[key];
        if(!message) {
            // Message not found, fall back to message key
            message = key;
        }
        if(context) {
            message = SGLang.format(message, context);
        }
        return message;
    },
    i18nFile: function(file) {
        var code = this.getCode();
        if(code == "0" || code == "1033")
            return file;
        return code + "/" + file;
    },
    format: function(template, context, args) {
        if(!context) {
            context = window;
        }
        // Example matching:
        // str   = ${foo.bar}
        // match = foo.bar
        var replacer = function(str, match) {
            var replacement;
            // Loop through all subs. Example: ${a.b.c}
            // 0 -> replacement = context[a];
            // 1 -> replacement = context[a][b];
            // 2 -> replacement = context[a][b][c];
            var subs = match.split(/\.+/);
            for (var i=0; i< subs.length; i++) {
                if (i == 0) {
                    replacement = context;
                }
                replacement = replacement[subs[i]];
            }
            if(typeof replacement == "function") {
                replacement = args ?
                    replacement.apply(null, args) :
                    replacement();
            }
            // If replacement is undefined, return the string 'undefined'.
            // This is a workaround for a bugs in browsers not properly
            // dealing with non-participating groups in regular expressions:
            // http://blog.stevenlevithan.com/archives/npcg-javascript
            if (typeof replacement == 'undefined') {
                return 'undefined';
            } else {
                return replacement;
            }
        };
        return template.replace(SGLang.tokenRegEx, replacer);
    },
    /**
     * Property: SGLang.tokenRegEx
     * Used to find tokens in a string.
     * Examples: ${a}, ${a.b.c}, ${a-b}, ${5}
     */
    tokenRegEx:  /\$\{([\w.]+?)\}/g
};
//-------------------
// load requested lang file
(function() {
    // document.write("<script language='javascript' src='Lang.js'></script>");
    // var code = SGLang.getCode();
    // document.write("<script  language='javascript' src='" + code + "/Lang.js'></script>");
    var head = document.head || document.getElementsByTagName("head")[0];
    // New way to support IE10
    firstScript = head.getElementsByTagName("script")[0];
    var script = document.createElement("script");
    script.setAttribute("src", "Lang.js");
    head.insertBefore(script, firstScript);
    var code = SGLang.getCode();
    var script2 = document.createElement("script");
    script2.setAttribute("src", code + "/Lang.js");
    head.insertBefore(script2, firstScript);
})();
// hide document body, so that TextXXX won't be visible until we replace them on document ready
$(document.body).hide();
//-------------------
$(document).ready(function ()
{
    $(document.body).hide();
    var translateDocument = function()
    {
        document.title = SGLang.i18n(document.title);
        $(".i18n").each(function ()
        {
            if (this.tagName == "INPUT")
            {
                this.value = SGLang.i18n(this.value);
            }
            else if (this.tagName == "IMG")
            {
                $(this).attr("src",SGLang.i18n($(this).attr("src")));
                $(this).attr("alt", SGLang.i18n($(this).attr("alt")));
                $(this).attr("title", SGLang.i18n($(this).attr("title")));
            }
            else
            {
                $(this).attr("title", SGLang.i18n($(this).attr("title")));
                $(this).attr("alt", SGLang.i18n($(this).attr("alt")));
                // set element html only if it does not contain any other html elements.
                // otherwise it will erase them.
                if ($(this).children().length == 0)
                {
                    $(this).html(SGLang.i18n($.trim($(this).text())));
                }
            }
        });
        $(".i18nFile").each(function ()
        {
            if (this.tagName == "IMG")
            {
                $(this).attr("src",SGLang.i18nFile($(this).attr("src")));
            }
        });
        $(document.body).show();
    }
    // make sure that hiding document body really worked.
    // I am not sure if IE will update the document view, until the function has finished executing.
    // so I am giving it here a few milliseconds of unused time.
    setTimeout(translateDocument,1);
});
$(document).ready(function ()
{
    if (GetParamValue("inSG","") == "1")
    {
        document.getElementById("TopAreaTD").style.height = "57";
        document.getElementById("TitleTD").align = "left";
        document.getElementById("CloseHelpTd").style.display = "none";
    }
});
//-------------------
// DisplayMessagePopup
function DisplayMessagePopup(title, header, icon,body, x, y, width, height, CloseButton) {
    var HTMLString = "<html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/><link rel='StyleSheet' href='" + abspath() + "/../Style.css' type='text/css'></head><body leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><object id='SGWorld' classid='CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1' style='display:none'></object>";
    HTMLString += "<table width='100%' height='100%' cellpadding=4pt cellspacing=0 border=0> <tr height='20pt'>";
    if (icon != "")
        HTMLString += "<td align='left' width='50pt'><img src='"+icon+"' alt='' ></td>";
    if (header != "")
        HTMLString += "<td align='middle'><span class='s12b'>" + header + "</span></td>";
    HTMLString += "<td width='50pt'></td></tr><tr><td valign='top' colspan=3><span class='s9'>" + body + "</span></td></tr>";
    if (CloseButton)
        HTMLString += "<tr><td align='right' valign=bottom colspan=3 style='background-color:#eeeeee'><input type='button' class='MenuButtonSmall' value='Close' onClick='SGWorld.Window.RemovePopupByCaption(\"" + title + "\");' /></td></tr>";
    HTMLString += "</body></html>";
    var popupMsg = SGWorld.Creator.CreatePopupMessage(title, "", x, y, width, height, -1);
    popupMsg.Flags = 2 + 32 + 32768;
    popupMsg.InnerText = HTMLString;
    SGWorld.Window.ShowPopup(popupMsg);
}
//-------------------
// TEAlert
function TEAlert(caption, text,info) {
    var icon;
    if (info==true)
        icon=abspath() + "/../commonimg/info.png";
    else
        icon=abspath() + "/../commonimg/alert.png";
    DisplayMessagePopup(caption, "",icon,text, (SGWorld.Window.Rect.Width)/2-200, (SGWorld.Window.Rect.Height)/2-75, 400, 150, true);
}
//-------------------
// DisplayHelpPopup6
function DisplayHelpPopup6(HTMLSrc, title) {
    if (title == null || title == "")
        title = "?";
    var popup = SGWorld.Creator.CreatePopupMessage(title, abspath() + "/" + HTMLSrc, 5, 5, 850, 500);
    popup.AllowDrag = true;
    popup.AllowResize = true;
    SGWorld.Window.ShowPopup(popup);
}
//-------------------
// CloseTool
function CloseTool (ToolName)
{
    var Cont = TE.interface("IContainer2");
    Cont.RemoveURL (1,ToolName);
}
//--------------
// abspath
function abspath()
{
    var abspath = unescape(window.location.href);
    // Remove query String
    var index=abspath.indexOf("?");
    if (index > 0) abspath = abspath.substr (0,index-1);
    index=abspath.lastIndexOf("/");
    var index2 = abspath.lastIndexOf("\\");
    index = (index > index2) ? index : index2;
    if (index <= 0) return abspath;
    abspath = abspath.substring(0,index);
    if(abspath.substring(0,1) == "/") abspath = abspath.slice(1);
    var re = /file:\/\/\//gi;
    if (abspath.match(re) != null) abspath = abspath.replace(re,""); // if this is indeed a local file, we strip the "file://" prefix from it.
    return(abspath);
}
// GetParamValue
function GetParamValue(findParam, defaultValue)
{
    var arr = document.location.href.split("?");
    if (arr.length <= 1) return defaultValue;
    arr = arr[1].split("&");
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) {
            arr = arr[i].split("=");
            return arr[1];
        }
    }
    return defaultValue;
}
//-----------------
// validateNumber
function validateNumber(strNum)
{
    strNum =     strNum.replace(/,/, ".");
    return parseFloat (strNum);
}
//--------------
// validateNumberEx
function validateNumberEx(field, defVal, MinNum, MaxNum) {
    try {
        field.val (validateNumber(field.val()));
        if (field.val() < MinNum)
            field.val(MinNum);
        if (field.val() > MaxNum)
            field.val( MaxNum);
    }
    catch (e) {field.val(defVal); }
}
//--------------
// CheckNumberEx
function CheckNumberEx(field, defVal, MinNum, MaxNum) {
    try {
        if (isNaN(field.value))
            field.value = defVal;
        if (field.value < MinNum)
            field.value = MinNum;
        if (field.value > MaxNum)
            field.value = MaxNum;
    }
    catch (e) { field.value = defVal }
}
  /**
     * APIMethod: drawing tools
     *
     */
var gDrawingEditMode = 0;
var drawing = {
    drawingEditMode: -1,
    polyObject: null,
    helpLine: null,   // Vertical line in case we select Horizontal Plane and want to see the connection between the cursor and the plane
    drawPolygon: function (options) { drawing_startDrawing (2,options);    },
    drawPolyline: function (options) { drawing_startDrawing (1,options);    },
    //drawPoints: drawing_startDrawing (0,options),
    abort: function (deleteObj) {drawing_finishDrawing(true); }
}
//-------------
//drawing_startDrawing
function drawing_startDrawing(type,options) {
    try {
        drawing.drawingEditMode = type;
        drawing.options = options;
        SGWorld.AttachEvent("OnLButtonClicked", drawing_DrawPolyLButtonClicked);
        SGWorld.AttachEvent("OnRButtonUp", drawing_DrawPolyRButtonUp);
        SGWorld.AttachEvent("OnFrame", drawing_DrawPolyOnFrame);
        SGWorld.AttachEvent("OnInputModeChanged", drawing_DrawPolyInputModeChanged);
        SGWorld.Window.SetInputMode(1, abspath() + "/cursor_m.cur", true);
    }
    catch (err) {if (gDebug) alert(err.message);}
}
//-------------
//drawing_finishDrawing
function drawing_finishDrawing (deleteObject){
    try {
        if (deleteObject && drawing.polyObject != null)
            SGWorld.Creator.DeleteObject(drawing.polyObject.ID);
        if (drawing.helpLine != null)
            SGWorld.Creator.DeleteObject(drawing.helpLine.ID);
        drawing.polyObject = null;
        drawing.helpLine = null;
        drawing.options.onAbort();
    }
    catch (err) {}
    try {
        SGWorld.Window.SetInputMode(0);
        drawing.drawingEditMode = -1;
        SGWorld.DetachEvent("OnLButtonClicked", drawing_DrawPolyLButtonClicked);
        SGWorld.DetachEvent("OnRButtonUp", drawing_DrawPolyRButtonUp);
        SGWorld.DetachEvent("OnFrame", drawing_DrawPolyOnFrame);
        SGWorld.DetachEvent("OnInputModeChanged", drawing_DrawPolyInputModeChanged);
    }
    catch (err) {}
}
//-------------
//drawing_DrawPolyInputModeChanged
function drawing_DrawPolyInputModeChanged(NewMode) {
    if (NewMode != 1)
        if (drawing.drawingEditMode != -1)
            drawing.abort();
}
//----------
// drawing_DrawPolyLButtonDown
function drawing_DrawPolyLButtonDown(Flags, X, Y) {
    drawing_DrawPolyLButtonClicked(Flags, X, Y);
}
//----------
// drawing_DrawPolyLButtonClicked
function drawing_DrawPolyLButtonClicked(Flags, X, Y) {
    try {
        var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, -1 & ~(128 | 1024));
        var altitudeMethod = (typeof drawing.options.altitudeMethod !== "undefined")?drawing.options.altitudeMethod :3;
        var parentGroup = (typeof drawing.options.parentGoupID !== "undefined")?drawing.options.parentGoupID :SGWorld.ProjectTree.HiddenGroupID;
        if (drawing.polyObject == null) {
            // We always start with a polyline and change it to Polygon (for area) after the second click)
            var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude])
            drawing.polyObject = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), altitudeMethod, parentGroup, "polyline");
            drawing_StylePoly(drawing.polyObject);
            drawing.polyObject.Geometry.StartEdit();
            if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true){
                var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([0, 0, 0, 0, 0, 0])
                drawing.helpLine = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), altitudeMethod, SGWorld.ProjectTree.HiddenGroupID, "helper");
                drawing_StyleHelpLine(drawing.helpLine);
                drawing.helpLine.Geometry.StartEdit();
            }
        }
        else {
            if (drawing.drawingEditMode == 2) // Polygon
            {
                if (drawing.polyObject.ObjectType == 1) {
                    if (drawing.polyObject.Geometry.Points.Item(0).X == CursorCoord.Position.x &&drawing.polyObject.Geometry.Points.Item(0).Y == CursorCoord.Position.y &&drawing.polyObject.Geometry.Points.Item(0).Z == CursorCoord.Position.Altitude  )
                        return;
                    // Deleting the temporary line
                    var x = drawing.polyObject.Geometry.Points.Item(0).X;
                    var y = drawing.polyObject.Geometry.Points.Item(0).Y;
                    var z = drawing.polyObject.Geometry.Points.Item(0).Z;
                    SGWorld.Creator.DeleteObject(drawing.polyObject.ID);
                    if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                        CursorCoord.Position.Altitude = z;
                    // Creating the polygon
                    var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, z, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]);
                    drawing.polyObject = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), altitudeMethod, parentGroup, "polygon");
                    drawing_StylePoly(drawing.polyObject);
                    drawing.polyObject.Geometry.StartEdit();
                }
                else {
                    drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x;
                    drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y;
                    drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude;
                    if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                        drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = drawing.polyObject.Geometry.Rings(0).Points.Item(0).Z;
                    drawing.polyObject.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude);
                }
            }
            else {  // Polyline
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).X = CursorCoord.Position.x;
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Y = CursorCoord.Position.y;
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                    drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = drawing.polyObject.Geometry.Points.Item(0).Z;
                drawing.polyObject.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude);
            }
        }
        if (typeof drawing.options.onAddPoint !== "undefined")
            drawing.options.onAddPoint(drawing.polyObject.Geometry, drawing.polyObject.ObjectType, drawing.polyObject.Position.AltitudeType);
        drawing.polyObject.SetParam(5440, 1);
    }
    catch (err) {if (gDebug) alert(err.message);}
    return false;
}
//-----------
// drawing_StylePoly
function drawing_StylePoly (poly){
    try {
            // Line style
            poly.LineStyle.Width = (typeof drawing.options.style.lineWidth !== "undefined")?drawing.options.style.lineWidth*(-1):-2;
            poly.LineStyle.Color.fromHTMLColor((typeof drawing.options.style.lineColor !== "undefined")?drawing.options.style.lineColor :"#ffffff");
            poly.LineStyle.Color.SetAlpha((typeof drawing.options.style.lineOpacity !== "undefined")?drawing.options.style.lineOpacity :1);
            poly.LineStyle.Pattern =  (typeof drawing.options.style.linePattern !== "undefined")?drawing.options.style.linePattern :0xffffffff;
            // Line back color
            poly.LineStyle.BackColor.fromHTMLColor((typeof drawing.options.style.lineBackColor !== "undefined")?drawing.options.style.lineBackColor :"#000000");
            poly.LineStyle.BackColor.SetAlpha((typeof drawing.options.style.lineBackOpacity !== "undefined")?drawing.options.style.lineBackOpacity :0);
            //  Fill style
            poly.FillStyle.Color.fromHTMLColor((typeof drawing.options.style.fillColor !== "undefined")?drawing.options.style.fillColor :"#ffffff");
            poly.FillStyle.Color.SetAlpha((typeof drawing.options.style.fillOpacity !== "undefined")?drawing.options.style.fillOpacity :0);
            // Generic style
            poly.SaveInFlyFile = (typeof drawing.options.saveOnExit !== "undefined")?drawing.options.saveOnExit :false;
        }
        catch (err) {if (gDebug) alert(err.message);}
}
//-----------
// drawing_StyleHelpLine
function drawing_StyleHelpLine (poly){
    try {
            poly.LineStyle.Width = -2;
            poly.LineStyle.Color.fromHTMLColor("#ffff00");
            poly.LineStyle.Pattern =  0xaaaaaaaa;
            poly.SaveInFlyFile = false;
        }
        catch (err) {if (gDebug) alert(err.message);}
}
//-----------
// onFrame
function drawing_DrawPolyOnFrame() {
    if (drawing.polyObject != null) {
        try {
            var mouseInfo = SGWorld.Window.GetMouseInfo()
            var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, -1 & ~(128|1024));
            if (CursorCoord == null)
                return false;
            if (drawing.polyObject.ObjectType == 2) {
                drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x;
                drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y;
                drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                    drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = drawing.polyObject.Geometry.Rings(0).Points.Item(0).Z;
            }
            else {
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).X = CursorCoord.Position.x;
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Y = CursorCoord.Position.y;
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                    drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = drawing.polyObject.Geometry.Points.Item(0).Z;
            }
            drawing.polyObject.SetParam(5440, 1);
            if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true && drawing.helpLine!= null){
                drawing.helpLine.Geometry.Points.Item(0).X = CursorCoord.Position.x;
                drawing.helpLine.Geometry.Points.Item(0).Y = CursorCoord.Position.y;
                drawing.helpLine.Geometry.Points.Item(0).Z = CursorCoord.Position.Altitude;
                drawing.helpLine.Geometry.Points.Item(1).X = CursorCoord.Position.x;
                drawing.helpLine.Geometry.Points.Item(1).Y = CursorCoord.Position.y;
                drawing.helpLine.Geometry.Points.Item(1).Z = drawing.polyObject.Geometry.Points.Item(0).Z;
            }
        }
        catch (e) { }
    }
}
//-------------
// drawing_DrawPolyRButtonUp
function drawing_DrawPolyRButtonUp(Flags, X, Y) {
    var deleteWhenExit = (typeof drawing.options.deleteWhenExit !== "undefined")?drawing.options.deleteWhenExit :true;
    if (drawing.polyObject == null || ((drawing.polyObject.ObjectType == 1 && drawing.polyObject.Geometry.Points.count <= 2) || (drawing.polyObject.ObjectType == 2 && drawing.polyObject.Geometry.Rings(0).Points.count <= 3))) {
        drawing_finishDrawing(deleteWhenExit);
        return false;
    }
    if (drawing.polyObject.ObjectType == 1)
        drawing.polyObject.Geometry.Points.DeletePoint(drawing.polyObject.Geometry.Points.count - 1);
    else
        drawing.polyObject.Geometry.Rings(0).Points.DeletePoint(drawing.polyObject.Geometry.Rings(0).Points.count - 1);
    drawing.polyObject.Geometry.EndEdit();
    drawing.options.onFinish(drawing.polyObject.Geometry, drawing.polyObject.ObjectType, drawing.polyObject.Position.AltitudeType,drawing.polyObject.ID );
    drawing_finishDrawing (deleteWhenExit);
    return true;
}
//-------------------
//searchGeometries
function searchGeometries2(parentNode, callbackFunc) {
    SGWorld.ProjectTree.EnableRedraw(0);
    searchGeometriesLeaf2(parentNode, callbackFunc);
    SGWorld.ProjectTree.EnableRedraw(1);
}
//-------------------
// searchGeometries
function searchGeometriesLeaf2(parentNode, callbackFunc) {
    if (SGWorld.ProjectTree.IsLayer(parentNode))  // Layer
    {
        var layer = SGWorld.ProjectTree.GetLayer(parentNode);
        var featureGroups = layer.FeatureGroups;
        for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers
        {
            var featureGroup = featureGroups.Item(i);
            var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method"));
            var features = featureGroup.Features;
            for (var j = 0; j < features.Count; j++) {
                var ret;
                if (featureGroup.GeometryType != 0)
                    ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType);
                else {
                    if (features.Item(j).Geometry.GeometryType == 0) // Point
                    {
                        var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z);
                        ret = callbackFunc(position, featureGroup.GeometryType, altitudeType);
                    }
                }
                if (!ret)
                    return;
            }
        }
    }
    else {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != "") {
            if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))
                searchGeometriesLeaf2(node, callbackFunc);
            else {
                var Object = SGWorld.Creator.GetObject(node);
                if (Object != null) {
                    var altitudeType = Object.Position.AltitudeType;
                    var ret;
                    if (Object.ObjectType == 1 || Object.ObjectType == 2)
                        ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position);
                    else
                        ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position);
                    if (!ret)
                        return;
                }
            }
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
}
//-------------------
//AltitudeMethodToAltitudeType
function AltitudeMethodToAltitudeType(altitudeMethod)
{
    switch(altitudeMethod)
    {
        case 10: return AltitudeTypeCode.ATC_TERRAIN_RELATIVE;
        case 11: return AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE;
        case 12: return AltitudeTypeCode.ATC_ON_TERRAIN;
        case 13: return AltitudeTypeCode.ATC_PIVOT_RELATIVE;
    }
}
//-------------------
//searchGeometriesClipbaord
function searchGeometriesClipboard(callbackFunc) {
    SGWorld.ProjectTree.EnableRedraw(0);
        var Object;
        for (var i = 0; i < SGWorld.Application.Clipboard.Count; i++) {
            try {
                Object = SGWorld.Application.Clipboard.Item(i);
                var altitudeType = Object.Position.AltitudeType;
                var ret;
                if (Object.ObjectType == 1 || Object.ObjectType == 2)
                    ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position);
                else
                    ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position);
                if (!ret) {
                    SGWorld.ProjectTree.EnableRedraw(1);
                    return;
                }
            }
            catch (e) { }
          }
    SGWorld.ProjectTree.EnableRedraw(1);
}
//----------------
// GetElevationBuffer
function getElevationBuffer(geometry, resolution){
    try {
        var polygonGeometry = geometry.Clone(); // to enable edit geometry (ref) when geometry type is RelativeToPivot. Navon.
        var envelope = polygonGeometry.Envelope; // Multi polygon evnelope (min/max)
        var MinX = Math.min(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x);
        var MaxX = Math.max(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x);
        var MinY = Math.min(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y);
        var MaxY = Math.max(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y);
        var stepX = Math.abs(MaxX - MinX) / resolution;
        var stepY = Math.abs(MaxY - MinY) / resolution;
    // For now we call this query several times because of an engine bug!!!
        var elevatuinBuffer = [];
        elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray();
        elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray();
        elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray();
        return elevatuinBuffer;
    }
    catch (e) {return null; }
}
//-------------------
// BuildObjectsList
function BuildObjectsList(parentNode, list, objectType) {
    try {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != "") {
            if (!SGWorld.ProjectTree.IsLayer(node)) {
                try{
                    var Object = SGWorld.Creator.GetObject(node);
                    if (Object != null) {
                        if (Object.ObjectType == objectType)
                            list.push(Object.ID);
                    }
                }
                catch (err){}
                if (SGWorld.ProjectTree.IsGroup(node))
                BuildObjectsList(node, list, objectType);
            }
            else if (objectType==36)
                list.push(node);
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
    catch (err) {if (gDebug) alert(err.message); }
}
//-------------------
// BuildFoldersList
function BuildFoldersList(parentNode, list) {
    try {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != "") {
            if (SGWorld.ProjectTree.IsGroup(node)){
                list.push(node);
                BuildFoldersList(node, list);
            }
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
    catch (err) {if (gDebug) alert(err.message); }
}
//-------------
// ScanPolygon
// function scan2DPolygon (geometry, step, callback) {
//     var polygonGeometry = geometry.Clone(); // to enable edit geometry (ref) when geometry type is RelativeToPivot. Navon.
//     var envelope = polygonGeometry.Envelope; // Multi polygon evnelope (min/max)
//     var MinX = Math.min(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x);
//     var MaxX = Math.max(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x);
//     var MinY = Math.min(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y);
//     var MaxY = Math.max(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y);
//     var currCoord = SGWorld.Creator.CreatePosition(MinX, MinY, 0 , 0, 0);
//     while (currCoord.x < MaxX) {
//         currCoord.y = MinY;
//         while (currCoord.y < MaxY) {
//             var pointGeometry = SGWorld.Creator.GeometryCreator.CreatePointGeometry([currCoord.x, currCoord.y, 0]);
//             if (polygonGeometry.SpatialRelation.Intersects(pointGeometry)) {
//                 var tmpCoord = currCoord.Copy(); // to avoid changes in the CurrCoord value in the DrawObject function
//                 if (callback(tmpCoord) == false)
//                     return false;
//             }
//             currCoord = currCoord.Move(step, 0, 0);
//         }
//         currCoord = currCoord.Move(step, 90, 0);
//     }
//     return true;
// }
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon73.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,831 @@
/**** JQuery was removed from toolsCommon70. You should include one of the JQuery files under the "JQuery" folder ****/
if(!this.JSON){this.JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());
/*
New API enums. Generated from Freeze20
*/
var ActionCode = {}; ActionCode.AC_FLYTO = 0; ActionCode.AC_CIRCLEPATTERN = 1; ActionCode.AC_OVALPATTERN = 2; ActionCode.AC_LINEPATTERN = 3; ActionCode.AC_ARCPATTERN = 4; ActionCode.AC_FOLLOWBEHIND = 5; ActionCode.AC_FOLLOWABOVE = 6; ActionCode.AC_FOLLOWBELOW = 7; ActionCode.AC_FOLLOWRIGHT = 8; ActionCode.AC_FOLLOWLEFT = 9; ActionCode.AC_FOLLOWBEHINDANDABOVE = 10; ActionCode.AC_FOLLOWCOCKPIT = 11; ActionCode.AC_FOLLOWFROMGROUND = 12; ActionCode.AC_STOP = 13; ActionCode.AC_JUMP = 14; ActionCode.AC_DELETE = 15; ActionCode.AC_EDIT_FINISHED = 16; ActionCode.AC_OBJECT_ADDED = 17; ActionCode.AC_PLAY = 18; ActionCode.AC_SHOW = 19; ActionCode.AC_EDIT_STARTED = 20; ActionCode.AC_SELCHANGED = 21; ActionCode.AC_WAYPOINT_REACHED = 22; ActionCode.AC_GROUP_ADDED = 23; ActionCode.AC_LAYER_ADDED = 24; ActionCode.AC_LAYER_REFRESHED = 25; ActionCode.AC_ITEM_MOVED=26; var AltitudeTypeCode = {}; AltitudeTypeCode.ATC_TERRAIN_RELATIVE = 0; AltitudeTypeCode.ATC_PIVOT_RELATIVE = 1; AltitudeTypeCode.ATC_ON_TERRAIN = 2; AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE = 3; AltitudeTypeCode.ATC_DEFAULT = 999; var DynamicMotionStyle = {}; DynamicMotionStyle.MOTION_GROUND_VEHICLE = 0; DynamicMotionStyle.MOTION_AIRPLANE = 1; DynamicMotionStyle.MOTION_HELICOPTER = 2; DynamicMotionStyle.MOTION_HOVER = 3; var DynamicObjectType = {}; DynamicObjectType.DYNAMIC_3D_MODEL = 0; DynamicObjectType.DYNAMIC_TEXT_LABEL = 1; DynamicObjectType.DYNAMIC_IMAGE_LABEL = 2; DynamicObjectType.DYNAMIC_VIRTUAL = 3; var LabelStyle = {}; LabelStyle.LS_DEFAULT = 0; LabelStyle.LS_STREET = 1; LabelStyle.LS_STATE = 2; var MsgClient6 = {}; MsgClient6.MC_LEFT = 0; MsgClient6.MC_MAIN = 2; MsgClient6.MC_MESSAGE_BAR = 3; MsgClient6.MC_FLOAT = 4; MsgClient6.MC_POPUP = 5; var MsgType = {}; MsgType.TYPE_TEXT = 0; MsgType.TYPE_URL = 1; MsgType.TYPE_SCRIPT = 3; var ModelTypeCode = {}; ModelTypeCode.MT_NORMAL = 0; ModelTypeCode.MT_ANIMATION = 1; ModelTypeCode.MT_PROGRESSIVE = 2; var LayerGeometryType = {}; LayerGeometryType.LGT_POINT = 0; LayerGeometryType.LGT_POLYLINE = 1; LayerGeometryType.LGT_POLYGON = 2; LayerGeometryType.LGT_COLLECTION = 3; LayerGeometryType.LGT_NONE = -1; var SphereStyle = {}; SphereStyle.SPHERE_NORMAL = 0; SphereStyle.SPHERE_UPPER_HALF = 1; SphereStyle.SPHERE_LOWER_HALF = 2; SphereStyle.SPHERE_UPPER_HALF_BASE = 3; SphereStyle.SPHERE_LOWER_HALF_BASE = 4; var ElevationBehaviorMode = {}; ElevationBehaviorMode.EB_REPLACE = 0; ElevationBehaviorMode.EB_BELOW = 1; ElevationBehaviorMode.EB_ABOVE = 2; var EditItemFlags = {}; EditItemFlags.EDIT_ITEM_USE_PROPERTY = 0; EditItemFlags.EDIT_ITEM = 1; EditItemFlags.EDIT_ITEM_VERTICES = 2; EditItemFlags.EDIT_ITEM_BUILDING_ROOF = 3; var ItemCode = {}; ItemCode.SELECTED = 10; ItemCode.CHILD = 11; ItemCode.FIRSTVISIBLE = 12; ItemCode.NEXT = 13; ItemCode.NEXTVISIBLE = 14; ItemCode.PARENT = 15; ItemCode.PREVIOUS = 16; ItemCode.PREVIOUSVISIBLE = 17; ItemCode.ROOT = 18; var SortType = {}; SortType.SORT_ALPHABETICALLY_AZ = 0; SortType.SORT_ALPHABETICALLY_ZA = 1; SortType.SORT_BY_TYPE = 2; SortType.SORT_NO_SORT = 3; var WorldPointType = {}; WorldPointType.WPT_MODEL = 1; WorldPointType.WPT_LABEL = 2; WorldPointType.WPT_PRIMITIVE = 4; WorldPointType.WPT_ANIM = 8; WorldPointType.WPT_BUILDING = 16; WorldPointType.WPT_SKY = 32; WorldPointType.WPT_ACCURATE_CPT = 64; WorldPointType.WPT_BBOX_CPT = 128; WorldPointType.WPT_VIDEO = 256; WorldPointType.WPT_UNDERGROUND = 512; WorldPointType.WPT_SCREEN_OVERLAY = 1024; WorldPointType.WPT_SCREEN_CONTROL = 2048; WorldPointType.WPT_SCREEN_COVERED = 4096; WorldPointType.WPT_ALL = -1; var MouseInputMode = {}; MouseInputMode.MI_FREE_FLIGHT = 0; MouseInputMode.MI_COM_CLIENT = 1; MouseInputMode.MI_CONTROLLED_FLIGHT = 2; MouseInputMode.MI_EDIT = 3; MouseInputMode.MI_MEASURAMENT = 4; var MessageBarTextAlignment = {}; MessageBarTextAlignment.MBT_LEFT = 0; MessageBarTextAlignment.MBT_CENTER = 1; MessageBarTextAlignment.MBT_RIGHT = 2; var AccuracyLevel = {}; AccuracyLevel.ACCURACY_NORMAL = 0; AccuracyLevel.ACCURACY_BEST_FROM_MEMORY = 1; AccuracyLevel.ACCURACY_BEST_FROM_MPT = 2; var PermissionType = {}; PermissionType.LMP_ENABLE_ALL = 0; PermissionType.LMP_DISABLE_API = 1; PermissionType.LMP_DISABLE_UI = 2; PermissionType.LMP_DISABLE_ALL = -1; var SliderDisplayMode = {}; SliderDisplayMode.MODE_TIME_NONE = 0; SliderDisplayMode.MODE_FIXED_TIME = 1; SliderDisplayMode.MODE_TIME = 2; SliderDisplayMode.MODE_RANGE_PROJECT = 4; SliderDisplayMode.MODE_RANGE_CUSTOM = 8; SliderDisplayMode.MODE_ADJUST_FOR_GROUP = 16; var TimeZoneType = {}; TimeZoneType.TIME_ZONE_TYPE_MY_COMPUTER = 0; TimeZoneType.TIME_ZONE_TYPE_UTC = 1; TimeZoneType.TIME_ZONE_TYPE_SPECIFIC = 2; var TEVesrionType = {}; TEVesrionType.TEVT_PRO = 0; TEVesrionType.TEVT_PLUS = 1; TEVesrionType.TEVT_VIEWER = 2; TEVesrionType.TEVT_UNKNOWN = -1; var ObjectTypeCode = {}; ObjectTypeCode.OT_UNDEFINED = 0; ObjectTypeCode.OT_POLYLINE = 1; ObjectTypeCode.OT_POLYGON = 2; ObjectTypeCode.OT_RECTANGLE = 3; ObjectTypeCode.OT_REGULAR_POLYGON = 4; ObjectTypeCode.OT_CIRCLE = 5; ObjectTypeCode.OT_3D_POLYGON = 6; ObjectTypeCode.OT_BUILDING = 7; ObjectTypeCode.OT_BOX = 8; ObjectTypeCode.OT_PYRAMID = 9; ObjectTypeCode.OT_CYLINDER = 10; ObjectTypeCode.OT_CONE = 11; ObjectTypeCode.OT_ELLIPSE = 12; ObjectTypeCode.OT_ARC = 13; ObjectTypeCode.OT_ARROW = 14; ObjectTypeCode.OT_3D_ARROW = 15; ObjectTypeCode.OT_SPHERE = 16; ObjectTypeCode.OT_MODEL = 17; ObjectTypeCode.OT_LABEL = 18; ObjectTypeCode.OT_LOCATION = 19; ObjectTypeCode.OT_TREE_HOTLINK = 20; ObjectTypeCode.OT_ROUTE = 21; ObjectTypeCode.OT_MESSAGE = 22; ObjectTypeCode.OT_DYNAMIC = 23; ObjectTypeCode.OT_IMAGE_LABEL = 24; ObjectTypeCode.OT_THREAT_DOME = 25; ObjectTypeCode.OT_IMAGERY_LAYER = 26; ObjectTypeCode.OT_TERRAIN_VIDEO = 27; ObjectTypeCode.OT_POINT_CLOUD = 28; ObjectTypeCode.OT_ELEVATION_LAYER = 29; ObjectTypeCode.OT_TERRAIN_MODIFIER = 30; ObjectTypeCode.OT_TERRAIN_HOLE = 31; ObjectTypeCode.OT_POPUP_MESSAGE = 32; ObjectTypeCode.OT_FEATURE = 33; ObjectTypeCode.OT_PRESENTATION = 34; ObjectTypeCode.OT_ANALYSIS_LOS = 35; var SGGeometryTypeId = {}; SGGeometryTypeId.SG_POINT = 0; SGGeometryTypeId.SG_LINESTRING = 1; SGGeometryTypeId.SG_LINEARRING = 2; SGGeometryTypeId.SG_POLYGON = 3; SGGeometryTypeId.SG_MULTIPOINT = 4; SGGeometryTypeId.SG_MULTILINESTRING = 5; SGGeometryTypeId.SG_MULTIPOLYGON = 6; var BuildingStyleCode = {}; BuildingStyleCode.BS_STRETCH_TERRAIN = 0; BuildingStyleCode.BS_POLYGONS = 1; var IntersectionType = {}; IntersectionType.IT_NONE = 0; IntersectionType.IT_INTERSECT = 1; IntersectionType.IT_WITHIN = 2; var StreamLayerStatus = {}; StreamLayerStatus.SLS_NOT_STREAMED_LAYER = 0; StreamLayerStatus.SLS_STREAMING = 1; StreamLayerStatus.SLS_STREAM_PAUSED = 2; var AltitudeUnitCode = {}; AltitudeUnitCode.AU_METER = 0; AltitudeUnitCode.AU_FEET = 1; AltitudeUnitCode.AU_CENTIMETER = 2; AltitudeUnitCode.AU_DECIMETER = 3; AltitudeUnitCode.AU_INCHE = 4; AltitudeUnitCode.AU_YARD = 5; AltitudeUnitCode.AU_UNDEFINED = -1; var LabelLockMode = {}; LabelLockMode.LM_DECAL = 0; LabelLockMode.LM_AXIS = 1; LabelLockMode.LM_AXIS_TEXTUP = 2; LabelLockMode.LM_AXIS_AUTOPITCH = 3; LabelLockMode.LM_AXIS_AUTOPITCH_TEXTUP = 4; var DistributionDir = {}; DistributionDir.DOWN_UP = 0; DistributionDir.UP_DOWN = 1; DistributionDir.RIGHT_LEFT = 2; DistributionDir.LEFT_RIGHT = 3; DistributionDir.FRONT_BACK = 4; DistributionDir.BACK_FRONT = 5; var CPTDataFormat = {}; CPTDataFormat.CPT_DF_INTENSITY = 0; CPTDataFormat.CPT_DF_RGB = 1; var _HTML_POPUP_FLAGS = {}; _HTML_POPUP_FLAGS.HTML_POPUP_NONE = 0; _HTML_POPUP_FLAGS.HTML_POPUP_ANCHOR_3D_WINDOW = 1; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_DRAG = 2; _HTML_POPUP_FLAGS.HTML_POPUP_NO_CAPTION = 4; _HTML_POPUP_FLAGS.HTML_POPUP_USE_DEFAULT_POS = 8; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_SIZE = 16; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_RESIZE = 32; _HTML_POPUP_FLAGS.HTML_POPUP_ADD_SHADOW = 64; _HTML_POPUP_FLAGS.HTML_POPUP_NO_BORDER = 128; _HTML_POPUP_FLAGS.HTML_POPUP_SET_FOCUS_TO_RENDER = 256; _HTML_POPUP_FLAGS.HTML_POPUP_NOT_USE_POINTER = 512; _HTML_POPUP_FLAGS.HTML_POPUP_ALWAYS_VISIBLE = 1024; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_POS = 2048; _HTML_POPUP_FLAGS.HTML_POPUP_USE_TEXT_AS_INNER_HTML = 4096; var PresentationStepContinue = {}; PresentationStepContinue.PSC_MOUSECLICK = 0; PresentationStepContinue.PSC_WAIT = 1; var PresentationStepFlightSpeed = {}; PresentationStepFlightSpeed.PSFS_VERYSLOW = 0; PresentationStepFlightSpeed.PSFS_SLOW = 1; PresentationStepFlightSpeed.PSFS_NORMAL = 2; PresentationStepFlightSpeed.PSFS_FAST = 3; PresentationStepFlightSpeed.PSFS_VERYFAST = 4; var PresentationPlayAlgorithm = {}; PresentationPlayAlgorithm.PPA_FLYTO = 0; PresentationPlayAlgorithm.PPA_SPLINE = 1; var PresentationPlayMode = {}; PresentationPlayMode.PPM_AUTOMATIC = 0; PresentationPlayMode.PPM_MANUAL = 1; var PresentationCaptionSizeType = {}; PresentationCaptionSizeType.PCST_FIXED = 0; PresentationCaptionSizeType.PCST_AUTOMATICALLYADJUST = 1; var PresentationCaptionPosition = {}; PresentationCaptionPosition.PCP_TOPLEFT = 0; PresentationCaptionPosition.PCP_TOPCENTER = 1; PresentationCaptionPosition.PCP_TOPRIGHT = 2; PresentationCaptionPosition.PCP_BOTTOMLEFT = 3; PresentationCaptionPosition.PCP_BOTTOMCENTER = 4; PresentationCaptionPosition.PCP_BOTTOMRIGHT = 5; var PresentationStatus = {}; PresentationStatus.PS_PLAYING = 0; PresentationStatus.PS_NOTPLAYING = 1; PresentationStatus.PS_PAUSED = 2; PresentationStatus.PS_WAITINGTIME = 3; PresentationStatus.PS_WAITINGCLICK = 4; var VideoPlayStatus = {}; VideoPlayStatus.VPS_PAUSE = 0; VideoPlayStatus.VPS_PLAY = 1; VideoPlayStatus.VPS_STOP = 2; var ContainerSite = {}; ContainerSite.CS_DOCK_LEFT = 0; ContainerSite.CS_DOCK_RIGHT = 1; ContainerSite.CS_DOCK_TOP = 2; ContainerSite.CS_DOCK_BOTTOM = 3; ContainerSite.CS_DOCK_FLOAT = 4; ContainerSite.CS_MAIN = 5; ContainerSite.CS_NOT_VALID = -1; var FaceFillTypeCode = {}; FaceFillTypeCode.FACE_COLOR = 0; FaceFillTypeCode.FACE_TEXTURE = 1; FaceFillTypeCode.FACE_TERRAIN_TEXTURE = 2; FaceFillTypeCode.FACE_UNDEFINED = -1; var RoofStyleCode = {}; RoofStyleCode.ROOFTOP_FLAT = 0; RoofStyleCode.ROOFTOP_ANGULAR = 1; var PresentationStepType = {}; PresentationStepType.ST_LOCATION = 0; PresentationStepType.ST_DYNAMICOBJECT = 1; PresentationStepType.ST_GROUPOROBJECT = 2; PresentationStepType.ST_UNDERGROUNDMODE = 3; PresentationStepType.ST_TIMESLIDER = 4; PresentationStepType.ST_CURRENTTIME = 5; PresentationStepType.ST_MESSAGE = 6; PresentationStepType.ST_TOOL = 7; PresentationStepType.ST_CAPTION = 8; PresentationStepType.ST_RESTARTDYNAMICOBJECT = 9; PresentationStepType.ST_FLIGHTSPEEDFACTOR = 10; PresentationStepType.ST_CLEARCAPTION = -1; var TilingMethodCode = {}; TilingMethodCode.TM_TILES_PER_SIDE = 0; TilingMethodCode.TM_TILES_PER_AXIS = 0; TilingMethodCode.TM_METERS_PER_TILE = 1; TilingMethodCode.TM_UNDEFINED = -1; var AttributeTypeCode = {}; AttributeTypeCode.AT_TEXT = 0; AttributeTypeCode.AT_INTEGER = 1; AttributeTypeCode.AT_DOUBLE = 2; AttributeTypeCode.AT_UNKNOWN = -1; var FeatureState = {}; FeatureState.FS_NONE = 0; FeatureState.FS_NEW = 1; FeatureState.FS_MODIFIED = 2; FeatureState.FS_DELETED = 3;
SGLang = {
    lang : {},
    /**
     * APIProperty: defaultCode
     * {String} Default language to use when a specific language can't be
     *     found.  Default is "en".
     */
    defaultCode: "2052",
    /**
     * APIFunction: getCode
     * Get the current language code.
     *
     * Returns:
     * The current language code.
     */
    getCode: function() {
        //var lang = SGLang.getUrlParameters()["lang"];
        //if(!lang)
        //    lang = SGLang.defaultCode;
        //return lang;
        return "2052";
    },
    getUrlParameters: function()
    {
        var query = window.location.href;
        var keyValuePairs = query.split(/[&?]/g);
        var params = {};
        for (var i = 0, n = keyValuePairs.length; i < n; ++i) {
          var m = keyValuePairs[i].match(/^([^=]+)(?:=([\s\S]*))?/);
          if (m) {
            var key = decodeURIComponent(m[1]);
            (params[key] || (params[key] = [])).push(decodeURIComponent(m[2]));
          }
        }
        return params;
    },
    /**
     * APIMethod: translate
     * Looks up a key from a dictionary based on the current language string.
     *     The value of <getCode> will be used to determine the appropriate
     *     dictionary.  Dictionaries are stored in <SGLang>.
     *
     * Parameters:
     * key - {String} The key for an i18n string value in the dictionary.
     * context - {Object} Optional context to be used with
     *     <SGAPI.String.format>.
     *
     * Returns:
     * {String} A internationalized string.
     */
    i18n: function(key, context) {
        var message = SGLang.lang[key];
        if(!message) {
            // Message not found, fall back to message key
            message = key;
        }
        if(context) {
            message = SGLang.format(message, context);
        }
        return message;
    },
    i18nFile: function(file) {
        var code = this.getCode();
        if(code == "0" || code == "1033")
            return file;
        return code + "/" + file;
    },
    format: function(template, context, args) {
        if(!context) {
            context = window;
        }
        // Example matching:
        // str   = ${foo.bar}
        // match = foo.bar
        var replacer = function(str, match) {
            var replacement;
            // Loop through all subs. Example: ${a.b.c}
            // 0 -> replacement = context[a];
            // 1 -> replacement = context[a][b];
            // 2 -> replacement = context[a][b][c];
            var subs = match.split(/\.+/);
            for (var i=0; i< subs.length; i++) {
                if (i == 0) {
                    replacement = context;
                }
                replacement = replacement[subs[i]];
            }
            if(typeof replacement == "function") {
                replacement = args ?
                    replacement.apply(null, args) :
                    replacement();
            }
            // If replacement is undefined, return the string 'undefined'.
            // This is a workaround for a bugs in browsers not properly
            // dealing with non-participating groups in regular expressions:
            // http://blog.stevenlevithan.com/archives/npcg-javascript
            if (typeof replacement == 'undefined') {
                return 'undefined';
            } else {
                return replacement;
            }
        };
        return template.replace(SGLang.tokenRegEx, replacer);
    },
    /**
     * Property: SGLang.tokenRegEx
     * Used to find tokens in a string.
     * Examples: ${a}, ${a.b.c}, ${a-b}, ${5}
     */
    tokenRegEx:  /\$\{([\w.]+?)\}/g
};
//-------------------
// load requested lang file
(function() {
    // document.write("<script language='javascript' src='Lang.js'></script>");
    // var code = SGLang.getCode();
    // document.write("<script  language='javascript' src='" + code + "/Lang.js'></script>");
    var head = document.head || document.getElementsByTagName("head")[0];
    // New way to support IE10
    firstScript = head.getElementsByTagName("script")[0];
    var script = document.createElement("script");
    script.setAttribute("src", "Lang.js");
    head.insertBefore(script, firstScript);
    var code = SGLang.getCode();
    var script2 = document.createElement("script");
    script2.setAttribute("src", code + "/Lang.js");
    head.insertBefore(script2, firstScript);
})();
// hide document body, so that TextXXX won't be visible until we replace them on document ready
$(document.body).hide();
//-------------------
$(document).ready(function ()
{
    $(document.body).hide();
    var translateDocument = function()
    {
        document.title = SGLang.i18n(document.title);
        $(".i18n").each(function ()
        {
            if (this.tagName == "INPUT")
            {
                this.value = SGLang.i18n(this.value);
            }
            else if (this.tagName == "IMG")
            {
                $(this).attr("src",SGLang.i18n($(this).attr("src")));
                $(this).attr("alt", SGLang.i18n($(this).attr("alt")));
                $(this).attr("title", SGLang.i18n($(this).attr("title")));
            }
            else
            {
                $(this).attr("title", SGLang.i18n($(this).attr("title")));
                $(this).attr("alt", SGLang.i18n($(this).attr("alt")));
                // set element html only if it does not contain any other html elements.
                // otherwise it will erase them.
                if ($(this).children().length == 0)
                {
                    $(this).html(SGLang.i18n($.trim($(this).text())));
                }
            }
        });
        $(".i18nFile").each(function ()
        {
            if (this.tagName == "IMG")
            {
                $(this).attr("src",SGLang.i18nFile($(this).attr("src")));
            }
        });
        $(document.body).show();
    }
    // make sure that hiding document body really worked.
    // I am not sure if IE will update the document view, until the function has finished executing.
    // so I am giving it here a few milliseconds of unused time.
    setTimeout(translateDocument,1);
});
$(document).ready(function ()
{
    if (GetParamValue("inSG","") == "1")
    {
        document.getElementById("TopAreaTD").style.height = "57";
        document.getElementById("TitleTD").align = "left";
        document.getElementById("CloseHelpTd").style.display = "none";
    }
});
//-------------------
// DisplayMessagePopup
function DisplayMessagePopup(title, header, icon,body, x, y, width, height, CloseButton) {
    var HTMLString = "<html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/><link rel='StyleSheet' href='" + abspath() + "/../Style.css' type='text/css'></head><body leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><object id='SGWorld' classid='CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1' style='display:none'></object>";
    HTMLString += "<table width='100%' height='100%' cellpadding=4pt cellspacing=0 border=0> <tr height='20pt'>";
    if (icon != "")
        HTMLString += "<td align='left' width='50pt'><img src='"+icon+"' alt='' ></td>";
    if (header != "")
        HTMLString += "<td align='middle'><span class='s12b'>" + header + "</span></td>";
    HTMLString += "<td width='50pt'></td></tr><tr><td valign='top' colspan=3><span class='s9'>" + body + "</span></td></tr>";
    if (CloseButton)
        HTMLString += "<tr><td align='right' valign=bottom colspan=3 style='background-color:#eeeeee'><input type='button' class='MenuButtonSmall' value='Close' onClick='SGWorld.Window.RemovePopupByCaption(\"" + title + "\");' /></td></tr>";
    HTMLString += "</body></html>";
    var popupMsg = SGWorld.Creator.CreatePopupMessage(title, "", x, y, width, height, -1);
    popupMsg.Flags = 2 + 32 + 32768;
    popupMsg.InnerText = HTMLString;
    SGWorld.Window.ShowPopup(popupMsg);
}
//-------------------
// TEAlert
function TEAlert(caption, text,info) {
    var icon;
    if (info==true)
        icon=abspath() + "/../commonimg/info.png";
    else
        icon=abspath() + "/../commonimg/alert.png";
    DisplayMessagePopup(caption, "",icon,text, (SGWorld.Window.Rect.Width)/2-200, (SGWorld.Window.Rect.Height)/2-75, 400, 150, true);
}
//-------------------
// DisplayHelpPopup6
function DisplayHelpPopup6(HTMLSrc, title) {
    if (title == null || title == "")
        title = "?";
    var popup = SGWorld.Creator.CreatePopupMessage(title, abspath() + "/" + HTMLSrc, 5, 5, 850, 500);
    popup.AllowDrag = true;
    popup.AllowResize = true;
    SGWorld.Window.ShowPopup(popup);
}
//-------------------
// CloseTool
function CloseTool (ToolName)
{
    var Cont = TE.interface("IContainer2");
    Cont.RemoveURL (1,ToolName);
}
//--------------
// abspath
function abspath()
{
    var abspath = unescape(window.location.href);
    // Remove query String
    var index=abspath.indexOf("?");
    if (index > 0) abspath = abspath.substr (0,index-1);
    index=abspath.lastIndexOf("/");
    var index2 = abspath.lastIndexOf("\\");
    index = (index > index2) ? index : index2;
    if (index <= 0) return abspath;
    abspath = abspath.substring(0,index);
    if(abspath.substring(0,1) == "/") abspath = abspath.slice(1);
    var re = /file:\/\/\//gi;
    if (abspath.match(re) != null) abspath = abspath.replace(re,""); // if this is indeed a local file, we strip the "file://" prefix from it.
    return(abspath);
}
// GetParamValue
function GetParamValue(findParam, defaultValue)
{
    var arr = document.location.href.split("?");
    if (arr.length <= 1) return defaultValue;
    arr = arr[1].split("&");
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) {
            arr = arr[i].split("=");
            return arr[1];
        }
    }
    return defaultValue;
}
//-----------------
// validateNumber
function validateNumber(strNum)
{
    strNum =     strNum.replace(/,/, ".");
    return parseFloat (strNum);
}
//--------------
// validateNumberEx
function validateNumberEx(field, defVal, MinNum, MaxNum) {
    try {
        field.val (validateNumber(field.val()));
        if (field.val() < MinNum)
            field.val(MinNum);
        if (field.val() > MaxNum)
            field.val( MaxNum);
    }
    catch (e) {field.val(defVal); }
}
//--------------
// CheckNumberEx
function CheckNumberEx(field, defVal, MinNum, MaxNum) {
    try {
        if (isNaN(field.value))
            field.value = defVal;
        if (field.value < MinNum)
            field.value = MinNum;
        if (field.value > MaxNum)
            field.value = MaxNum;
    }
    catch (e) { field.value = defVal }
}
  /**
     * APIMethod: drawing tools
     *
     */
var gDrawingEditMode = 0;
var drawing = {
    drawingEditMode: -1,
    polyObject: null,
    helpLine: null,   // Vertical line in case we select Horizontal Plane and want to see the connection between the cursor and the plane
    drawPolygon: function (options) { drawing_startDrawing (2,options);    },
    drawPolyline: function (options) { drawing_startDrawing (1,options);    },
    //drawPoints: drawing_startDrawing (0,options),
    abort: function (deleteObj) {drawing_finishDrawing(true); }
}
//-------------
//drawing_startDrawing
function drawing_startDrawing(type,options) {
    try {
        drawing.drawingEditMode = type;
        drawing.options = options;
        SGWorld.AttachEvent("OnLButtonClicked", drawing_DrawPolyLButtonClicked);
        SGWorld.AttachEvent("OnRButtonUp", drawing_DrawPolyRButtonUp);
        SGWorld.AttachEvent("OnFrame", drawing_DrawPolyOnFrame);
        SGWorld.AttachEvent("OnInputModeChanged", drawing_DrawPolyInputModeChanged);
        SGWorld.Window.SetInputMode(1, abspath() + "/cursor_m.cur", true);
    }
    catch (err) {if (gDebug) alert(err.message);}
}
//-------------
//drawing_finishDrawing
function drawing_finishDrawing (deleteObject){
    try {
        if (deleteObject && drawing.polyObject != null)
            SGWorld.Creator.DeleteObject(drawing.polyObject.ID);
        if (drawing.helpLine != null)
            SGWorld.Creator.DeleteObject(drawing.helpLine.ID);
        drawing.polyObject = null;
        drawing.helpLine = null;
        drawing.options.onAbort();
    }
    catch (err) {}
    try {
        SGWorld.Window.SetInputMode(0);
        drawing.drawingEditMode = -1;
        SGWorld.DetachEvent("OnLButtonClicked", drawing_DrawPolyLButtonClicked);
        SGWorld.DetachEvent("OnRButtonUp", drawing_DrawPolyRButtonUp);
        SGWorld.DetachEvent("OnFrame", drawing_DrawPolyOnFrame);
        SGWorld.DetachEvent("OnInputModeChanged", drawing_DrawPolyInputModeChanged);
    }
    catch (err) {}
}
//-------------
//drawing_DrawPolyInputModeChanged
function drawing_DrawPolyInputModeChanged(NewMode) {
    if (NewMode != 1)
        if (drawing.drawingEditMode != -1)
            drawing.abort();
}
//----------
// drawing_DrawPolyLButtonDown
function drawing_DrawPolyLButtonDown(Flags, X, Y) {
    drawing_DrawPolyLButtonClicked(Flags, X, Y);
}
//----------
// drawing_DrawPolyLButtonClicked
function drawing_DrawPolyLButtonClicked(Flags, X, Y) {
    try {
        var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, -1 & ~(128 | 1024));
        var altitudeMethod = (typeof drawing.options.altitudeMethod !== "undefined")?drawing.options.altitudeMethod :3;
        var parentGroup = (typeof drawing.options.parentGoupID !== "undefined")?drawing.options.parentGoupID :SGWorld.ProjectTree.HiddenGroupID;
        if (drawing.polyObject == null) {
            // We always start with a polyline and change it to Polygon (for area) after the second click)
            var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude])
            drawing.polyObject = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), altitudeMethod, parentGroup, "polyline");
            drawing_StylePoly(drawing.polyObject);
            drawing.polyObject.Geometry.StartEdit();
            if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true){
                var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([0, 0, 0, 0, 0, 0])
                drawing.helpLine = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), altitudeMethod, SGWorld.ProjectTree.HiddenGroupID, "helper");
                drawing_StyleHelpLine(drawing.helpLine);
                drawing.helpLine.Geometry.StartEdit();
            }
        }
        else {
            if (drawing.drawingEditMode == 2) // Polygon
            {
                if (drawing.polyObject.ObjectType == 1) {
                    if (drawing.polyObject.Geometry.Points.Item(0).X == CursorCoord.Position.x &&drawing.polyObject.Geometry.Points.Item(0).Y == CursorCoord.Position.y &&drawing.polyObject.Geometry.Points.Item(0).Z == CursorCoord.Position.Altitude  )
                        return;
                    // Deleting the temporary line
                    var x = drawing.polyObject.Geometry.Points.Item(0).X;
                    var y = drawing.polyObject.Geometry.Points.Item(0).Y;
                    var z = drawing.polyObject.Geometry.Points.Item(0).Z;
                    SGWorld.Creator.DeleteObject(drawing.polyObject.ID);
                    if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                        CursorCoord.Position.Altitude = z;
                    // Creating the polygon
                    var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, z, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]);
                    drawing.polyObject = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), altitudeMethod, parentGroup, "polygon");
                    drawing_StylePoly(drawing.polyObject);
                    drawing.polyObject.Geometry.StartEdit();
                }
                else {
                    drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x;
                    drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y;
                    drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude;
                    if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                        drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = drawing.polyObject.Geometry.Rings(0).Points.Item(0).Z;
                    drawing.polyObject.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude);
                }
            }
            else {  // Polyline
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).X = CursorCoord.Position.x;
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Y = CursorCoord.Position.y;
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                    drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = drawing.polyObject.Geometry.Points.Item(0).Z;
                drawing.polyObject.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude);
            }
        }
        if (typeof drawing.options.onAddPoint !== "undefined")
            drawing.options.onAddPoint(drawing.polyObject.Geometry, drawing.polyObject.ObjectType, drawing.polyObject.Position.AltitudeType);
        drawing.polyObject.SetParam(5440, 1);
    }
    catch (err) {if (gDebug) alert(err.message);}
    return false;
}
//-----------
// drawing_StylePoly
function drawing_StylePoly (poly){
    try {
            // Line style
            poly.LineStyle.Width = (typeof drawing.options.style.lineWidth !== "undefined")?drawing.options.style.lineWidth*(-1):-2;
            poly.LineStyle.Color.fromHTMLColor((typeof drawing.options.style.lineColor !== "undefined")?drawing.options.style.lineColor :"#ffffff");
            poly.LineStyle.Color.SetAlpha((typeof drawing.options.style.lineOpacity !== "undefined")?drawing.options.style.lineOpacity :1);
            poly.LineStyle.Pattern =  (typeof drawing.options.style.linePattern !== "undefined")?drawing.options.style.linePattern :0xffffffff;
            // Line back color
            poly.LineStyle.BackColor.fromHTMLColor((typeof drawing.options.style.lineBackColor !== "undefined")?drawing.options.style.lineBackColor :"#000000");
            poly.LineStyle.BackColor.SetAlpha((typeof drawing.options.style.lineBackOpacity !== "undefined")?drawing.options.style.lineBackOpacity :0);
            //  Fill style
            poly.FillStyle.Color.fromHTMLColor((typeof drawing.options.style.fillColor !== "undefined")?drawing.options.style.fillColor :"#ffffff");
            poly.FillStyle.Color.SetAlpha((typeof drawing.options.style.fillOpacity !== "undefined")?drawing.options.style.fillOpacity :0);
            // Generic style
            poly.SaveInFlyFile = (typeof drawing.options.saveOnExit !== "undefined")?drawing.options.saveOnExit :false;
        }
        catch (err) {if (gDebug) alert(err.message);}
}
//-----------
// drawing_StyleHelpLine
function drawing_StyleHelpLine (poly){
    try {
            poly.LineStyle.Width = -2;
            poly.LineStyle.Color.fromHTMLColor("#ffff00");
            poly.LineStyle.Pattern =  0xaaaaaaaa;
            poly.SaveInFlyFile = false;
        }
        catch (err) {if (gDebug) alert(err.message);}
}
//-----------
// onFrame
function drawing_DrawPolyOnFrame() {
    if (drawing.polyObject != null) {
        try {
            var mouseInfo = SGWorld.Window.GetMouseInfo()
            var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, -1 & ~(128|1024));
            if (CursorCoord == null)
                return false;
            if (drawing.polyObject.ObjectType == 2) {
                drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x;
                drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y;
                drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                    drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = drawing.polyObject.Geometry.Rings(0).Points.Item(0).Z;
            }
            else {
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).X = CursorCoord.Position.x;
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Y = CursorCoord.Position.y;
                drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude;
                if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true)
                    drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = drawing.polyObject.Geometry.Points.Item(0).Z;
            }
            drawing.polyObject.SetParam(5440, 1);
            if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true && drawing.helpLine!= null){
                drawing.helpLine.Geometry.Points.Item(0).X = CursorCoord.Position.x;
                drawing.helpLine.Geometry.Points.Item(0).Y = CursorCoord.Position.y;
                drawing.helpLine.Geometry.Points.Item(0).Z = CursorCoord.Position.Altitude;
                drawing.helpLine.Geometry.Points.Item(1).X = CursorCoord.Position.x;
                drawing.helpLine.Geometry.Points.Item(1).Y = CursorCoord.Position.y;
                drawing.helpLine.Geometry.Points.Item(1).Z = drawing.polyObject.Geometry.Points.Item(0).Z;
            }
        }
        catch (e) { }
    }
}
//-------------
// drawing_DrawPolyRButtonUp
function drawing_DrawPolyRButtonUp(Flags, X, Y) {
    var deleteWhenExit = (typeof drawing.options.deleteWhenExit !== "undefined")?drawing.options.deleteWhenExit :true;
    if (drawing.polyObject == null || ((drawing.polyObject.ObjectType == 1 && drawing.polyObject.Geometry.Points.count <= 2) || (drawing.polyObject.ObjectType == 2 && drawing.polyObject.Geometry.Rings(0).Points.count <= 3))) {
        drawing_finishDrawing(deleteWhenExit);
        return false;
    }
    if (drawing.polyObject.ObjectType == 1)
        drawing.polyObject.Geometry.Points.DeletePoint(drawing.polyObject.Geometry.Points.count - 1);
    else
        drawing.polyObject.Geometry.Rings(0).Points.DeletePoint(drawing.polyObject.Geometry.Rings(0).Points.count - 1);
    drawing.polyObject.Geometry.EndEdit();
    drawing.options.onFinish(drawing.polyObject.Geometry, drawing.polyObject.ObjectType, drawing.polyObject.Position.AltitudeType, drawing.polyObject.ID, null);
    drawing_finishDrawing (deleteWhenExit);
    return true;
}
//-------------------
//searchGeometries
function searchGeometries2(parentNode, callbackFunc, withAtt/*navon added this*/) {
    SGWorld.ProjectTree.EnableRedraw(0);
    searchGeometriesLeaf2(parentNode, callbackFunc, withAtt);
    SGWorld.ProjectTree.EnableRedraw(1);
}
//-------------------
// searchGeometries
function searchGeometriesLeaf2(parentNode, callbackFunc, withAtt/*navon added this*/) {
    if (SGWorld.ProjectTree.IsLayer(parentNode))  // Layer
    {
        var layer = SGWorld.ProjectTree.GetLayer(parentNode);
        var featureGroups = layer.FeatureGroups;
        for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers
        {
            var featureGroup = featureGroups.Item(i);
            var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method"));
            var features = featureGroup.Features;
            var attributes = layer.DataSourceInfo.Attributes;///navon added this
            for (var j = 0; j < features.Count; j++) {
                var ret;
                if (featureGroup.GeometryType != 0){
                    if(features.Item(j).Geometry.GeometryType==5 || features.Item(j).Geometry.GeometryType==6)
                    {
                        for(var k=0;k<features.Item(j).Geometry.Count;k++)
                            ret = callbackFunc(features.Item(j).Geometry.Item(k), featureGroup.GeometryType, altitudeType, features(j), attributes);
                    }
                    else
                        ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType, features(j), attributes);
                }
                else {
                    if (features.Item(j).Geometry.GeometryType == 0) // Point
                    {
                        var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z);
                        ret = callbackFunc(position, featureGroup.GeometryType, altitudeType);
                    }
                }
                if (!ret)
                    return;
            }
        }
    }
    else {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != "") {
            if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))
                searchGeometriesLeaf2(node, callbackFunc);
            else {
                var Object = SGWorld.Creator.GetObject(node);
                if (Object != null) {
                    var altitudeType = Object.Position.AltitudeType;
                    var ret;
                    if (Object.ObjectType == 1 || Object.ObjectType == 2){
                        if(Object.Geometry.GeometryType==5 || Object.Geometry.GeometryType==6)
                        {
                            for(var j=0;j<Object.Geometry.Count;j++)
                                ret = callbackFunc(Object.Geometry.Item(j), Object.ObjectType, altitudeType, Object.Position);
                        }
                        else
                            ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position);
                    }
                    else
                        ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position);
                    if (!ret)
                        return;
                }
            }
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
}
//-------------------
//AltitudeMethodToAltitudeType
function AltitudeMethodToAltitudeType(altitudeMethod)
{
    switch(altitudeMethod)
    {
        case 10: return AltitudeTypeCode.ATC_TERRAIN_RELATIVE;
        case 11: return AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE;
        case 12: return AltitudeTypeCode.ATC_ON_TERRAIN;
        case 13: return AltitudeTypeCode.ATC_PIVOT_RELATIVE;
    }
}
//-------------------
//searchGeometriesClipbaord
function searchGeometriesClipboard(callbackFunc) {
    SGWorld.ProjectTree.EnableRedraw(0);
        var Object;
        for (var i = 0; i < SGWorld.Application.Clipboard.Count; i++) {
            try {
                Object = SGWorld.Application.Clipboard.Item(i);
                var altitudeType = Object.Position.AltitudeType;
                var ret;
                if (Object.ObjectType == 1 || Object.ObjectType == 2)
                {
                    if(Object.Geometry.GeometryType==5 || Object.Geometry.GeometryType==6)
                        {
                            for(var j=0;j<Object.Geometry.Count;j++)
                                ret = callbackFunc(Object.Geometry.Item(j), Object.ObjectType, altitudeType, Object.Position, null, null);
                        }
                        else
                            ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position, null, null);
                }
                else
                    ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position, null, null);
                if (!ret) {
                    SGWorld.ProjectTree.EnableRedraw(1);
                    return;
                }
            }
            catch (e) { }
          }
    SGWorld.ProjectTree.EnableRedraw(1);
}
//----------------
// GetElevationBuffer
function getElevationBuffer(geometry, resolution){
    try {
        var polygonGeometry = geometry.Clone(); // to enable edit geometry (ref) when geometry type is RelativeToPivot. Navon.
        var envelope = polygonGeometry.Envelope; // Multi polygon evnelope (min/max)
        var MinX = Math.min(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x);
        var MaxX = Math.max(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x);
        var MinY = Math.min(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y);
        var MaxY = Math.max(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y);
        var stepX = Math.abs(MaxX - MinX) / resolution;
        var stepY = Math.abs(MaxY - MinY) / resolution;
    // For now we call this query several times because of an engine bug. TED 80 - fixed!!!
        var elevatuinBuffer = [];
        elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray();
        // elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray();
        // elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray();
        return elevatuinBuffer;
    }
    catch (e) {return null; }
}
//-------------------
// BuildObjectsList
function BuildObjectsList(parentNode, list, objectType) {
    try {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != "") {
            if (!SGWorld.ProjectTree.IsLayer(node)) {
                try{
                    var Object = SGWorld.Creator.GetObject(node);
                    if (Object != null) {
                        if (Object.ObjectType == objectType)
                            list.push(Object.ID);
                    }
                }
                catch (err){}
                if (SGWorld.ProjectTree.IsGroup(node))
                BuildObjectsList(node, list, objectType);
            }
            else if (objectType==36)
                list.push(node);
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
    catch (err) {if (gDebug) alert(err.message); }
}
//-------------------
// BuildFoldersList
function BuildFoldersList(parentNode, list) {
    try {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != "") {
            if (SGWorld.ProjectTree.IsGroup(node)){
                list.push(node);
                BuildFoldersList(node, list);
            }
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
    catch (err) {if (gDebug) alert(err.message); }
}
//-------------
function getFuncName (callee) {
    return  callee.toString().match(/^function\s+([^(]+)/)[1];
}
//-------------
function Deg2Rnd(degrees)
{
  var pi = Math.PI;
  return degrees * (pi/180);
}
//-------------
// ScanPolygon
// function scan2DPolygon (geometry, step, callback) {
//     var polygonGeometry = geometry.Clone(); // to enable edit geometry (ref) when geometry type is RelativeToPivot. Navon.
//     var envelope = polygonGeometry.Envelope; // Multi polygon evnelope (min/max)
//     var MinX = Math.min(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x);
//     var MaxX = Math.max(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x);
//     var MinY = Math.min(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y);
//     var MaxY = Math.max(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y);
//     var currCoord = SGWorld.Creator.CreatePosition(MinX, MinY, 0 , 0, 0);
//     while (currCoord.x < MaxX) {
//         currCoord.y = MinY;
//         while (currCoord.y < MaxY) {
//             var pointGeometry = SGWorld.Creator.GeometryCreator.CreatePointGeometry([currCoord.x, currCoord.y, 0]);
//             if (polygonGeometry.SpatialRelation.Intersects(pointGeometry)) {
//                 var tmpCoord = currCoord.Copy(); // to avoid changes in the CurrCoord value in the DrawObject function
//                 if (callback(tmpCoord) == false)
//                     return false;
//             }
//             currCoord = currCoord.Move(step, 0, 0);
//         }
//         currCoord = currCoord.Move(step, 90, 0);
//     }
//     return true;
// }
Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/js/Gis/Gis.js
@@ -141,7 +141,7 @@
            sgworld.Open(FlyPath);
            TBAX.setLogo(JSON.stringify(logo), "2");
            TBAX.setOpacity(0.8);
            TBAX.setLMenu(JSON.stringify(lMenu));
            //TBAX.setLMenu(JSON.stringify(lMenu));
            TBAX.setFullBtn2(JSON.stringify(tMenu));
            sgworld.AttachEvent("OnLoadFinished", OnloadFished);
        }, 2000);