1
13693261870
2024-04-03 412022ac7410aa48a675d08c9e0fa2f57e74dab7
1
已添加34个文件
已修改8个文件
已删除8个文件
3439 ■■■■■ 文件已修改
Terra.YaoGan.Web/Terra.YaoGan.Common/Terra.YaoGan.Common.csproj 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Model/Terra.YaoGan.Model.csproj 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Service/Terra.YaoGan.Service.csproj 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/Lang.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/help.html 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/Lang.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/help.html 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/BIMComparisonPopup.html 383 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.html 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.ico 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparisonPopup.html 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/SwipeIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomIn.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomOut.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.hover.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.hover.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.png 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/space.gif 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Lang.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/MeshComparisonPopup.html 446 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.html 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.ico 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotDetectionPopup.html 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_m.cur 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_wait.cur 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/help.html 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/range.js 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.css 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.js 489 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/timer.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon.js 642 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Terra.YaoGan.Web.csproj 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/Web.config 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/fly/128.fly 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/北宝3号监控/2024.3.21.mp4 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/北宝3号监控/2024.4.2.mp4 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/北宝4号监控/2024.3.21.mp4 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/北宝4号监控/2024.4.2.mp4 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/北宝5号监控/2024.3.23.mp4 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/北宝5号监控/2024.4.2.mp4 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/北宝6号监控/2024.3.21.mp4 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/北宝6号监控/2024.4.2.mp4 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Web/packages.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Terra.YaoGan.Web/Terra.YaoGan.Common/Terra.YaoGan.Common.csproj
@@ -9,9 +9,10 @@
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Terra.YaoGan.Common</RootNamespace>
    <AssemblyName>Terra.YaoGan.Common</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
Terra.YaoGan.Web/Terra.YaoGan.Model/Terra.YaoGan.Model.csproj
@@ -9,9 +9,10 @@
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Terra.YaoGan.Model</RootNamespace>
    <AssemblyName>Terra.YaoGan.Model</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
Terra.YaoGan.Web/Terra.YaoGan.Service/Terra.YaoGan.Service.csproj
@@ -9,9 +9,10 @@
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Terra.YaoGan.Service</RootNamespace>
    <AssemblyName>Terra.YaoGan.Service</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/Lang.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
SGLang.lang = $.extend(SGLang.lang,{
    ToolTitle: "SkylineGlobe - Skyline Software Systems, Inc.",
    ToolName: "Image Comparison",
    ToolName1: "Image Comparison",
    help: "Help",
    Text_ImageryBtn: "Swipe<br>Imagery",
    Text_SnapshotBtn: "Swipe<br>Snapshots",
    Text_3DMLBtn: "Swipe<br>3D Mesh",
    Text_BIMBtn: "Swipe<br>BIM",
    Text1: "Swipe &<br> Fade",
    Text2: "Zoom to an area with an imagery layer <b>OR</b> select an imagery layer from the Project Tree and click:",
    Text3: "Unexpected Error: ",
    Text4: "Swipe<br>& Fade",
    Text_StartSwipe: "Start",
    Text_Freeze: "Freeze",
    Text_Sides: "Sides",
    Text_UpDown: "Up-Down",
    Text_CouldNotDetect: "No imagery layers were detected in the view.<br/> Zoom in to an area with a visible imagery layer and ",
    Text_TryAgain: "try again",
    Text_NoMeshSelected: "Select two different 3D Mesh layers from the list, or zoom in to an area of interest and click Refresh & Detect",
    Text_NotIntersect: "One or more of the selected layers is not in the current view. Zoom in to an area of interest and click Refresh & Detect",
    Text6: "Swipe Snapshots",
    Text7: "Swipe Snapshots Tool",
    Text8: "Swipe 3D Mesh Layers",
    Text9: "Swipe Display Style",
    Text12: "You must capture scenarios A and B before starting comparison operation",
    Text13: "Error while trying to load snapshot file. ",
    Text14: "Compare",
    Text15: "Image Comparison",
    Text16: "Imagery Layer Comparison",
    Text17: "Layer: ",
    Text20: "Error while trying to compare imagery layers. ",
    Text_MeshError: "Error while trying to compare 3D Mesh Layers. ",
    Text21: "Transparency",
    Text22: "Swipe: ",
    Text23: "right-left",
    Text24: "left-right",
    Text25: "top-bottom",
    Text26: "bottom-top",
    Text_Refresh: "Refresh & Detect",
    Text_ModelName: "Layer Name: ",
    Text_Select: "select",
    Text_SelectLayer: "-- Select a Layer --",
    Text_Texture: "Texture",
    Text_TextureWire: "Texture + Wireframe",
    Text_Solid: "Solid",
    Text_SolidWire: "Solid + Wireframe",
    Text_Xray: "X-ray",
    Text_None: "None",
    Text27: "Auto",
    Text29: "Could not detect an imagery layer. Please zoom to an area with a visible imagery layer ",
    Text30: "Dynamic Comparison",
    Text31: "Loading Comparison",
    Text32: "Generating a high quality snapshot. This process may take a few seconds.",
    Text33: "Create a modified scene by showing or hiding objects in the Project Tree,<br/> and then click <b>Compare</b>",
    Text_BIMNotFound: "Unexpected error occurred while trying to get layer ID. ",
    Text_Terrain: "Base Map",
    Text_AlertCaption: "TerraExplorer",
    Text99: "Finish"
});
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/help.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@

<HTML lang=en-US><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8"><TITLE>TerraExplorer Pro - Skyline Software Systems, Inc.</TITLE><LINK
href="../Style.css" type=text/css rel=StyleSheet>
<META content="MSHTML 6.00.2900.5512" name=GENERATOR></HEAD>
<BODY>
<TABLE class=s9 cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD class=s12b align=middle>Image Comparison tool </TD></TR>
  <TR>
    <TD><BR>
      <DIV class=WordSection1>
      <P class=MsoNormal>The Image Comparison tool helps you detect changes
      between two aerial images of the same location.</P>
      <P class=MsoNormal>&nbsp;The Image Comparison provides two useful tools
      allowing you easy manual detection of changes between two aerial images or
      between two project scenarios.</P>
      <H3>Using the Imagery Layer Swipe &amp; Fade </H3>
      <P class=MsoNormal>&nbsp;The Imagery Layer Swipe &amp; Fade tool let you
      compare the 3D view with and without an Imagery layer</P>
      <P class=MsoNormal>&nbsp;1. Zoom to an area with visible Imagery Layer
</P>
      <P class=MsoNormal>&nbsp;2. Click the <B>Swipe &amp; Fade</B> button</P>
      <P class=MsoNormal>&nbsp;<B>The Imagery Layer Swipe &amp; Fade tool opens
      with the following controls:</B></P>
      <P class=MsoNormal>&nbsp;1. Transparency Slider â€“ change the transparency
      slider to control the imagery layer opacity.</P>
      <P class=MsoNormal>&nbsp;2. Clicking the <B>Auto</B> button automatically
      change the layer opacity value between 0-100%. </P>
      <P class=MsoNormal>&nbsp;3. Clip Slider â€“ change the Clip slider to reveal
      the base terrain under the Imagery Layer.</P>
      <P class=MsoNormal>&nbsp;4. Clicking the <B>Auto</B> button automatically
      change the clipping value between 0-100%. </P>
      <H3>Using the 3D View Comparison</H3>
      <P class=MsoNormal>&nbsp;The 3D View Comparison tool let you compare
      snapshots of two project scenarios. </P>
      <P class=MsoNormal>&nbsp;1. Fly to a location of you desire</P>
      <P class=MsoNormal>&nbsp;2. click <B>Capture A</B></P>
      <P class=MsoNormal>&nbsp;3. Turn on the different layers in the Project
      Tree</P>
      <P class=MsoNormal>&nbsp;4. click <B>Capture B</B></P>
      <P class=MsoNormal>&nbsp;5. click <B>Compare</B></P>
      <P class=MsoNormal>&nbsp;<B>The 3D View Comparison tool opens with the
      following controls:</B></P>
      <P class=MsoNormal>&nbsp;1. Transparency Slider â€“ change the transparency
      slider to control the Scenario B snapshot transparency and slowly reveal
      the underneath Scenario A snapshot.</P>
      <P class=MsoNormal>&nbsp;2. Clip Slider â€“ change the Clip slider to reveal
      part of the underneath Scenario A
snapshot.</P></DIV></TD></TR></TBODY></TABLE></BODY></HTML>
<!--Sig:00000040LMIMguTRvc.IHUlNpFi2t3e58ysj2UYQhtue0haSGrd3Oq9TReU7fmvbhSFY6zJhRrQCDK3PNScCxO8HAHGPJQJJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/Lang.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
SGLang.lang = $.extend(SGLang.lang,{
    ToolTitle: "SmartEarth - æ³°ç‘žæ•°åˆ›ç§‘技(北京)有限公司",
    ToolName: "影像对比",
    ToolName1: "影像对比",
    help: "帮助",
    Text_ImageryBtn: "滑动<br>影像",
    Text_SnapshotBtn: "滑动<br>截屏",
    Text_3DMLBtn: "滑动<br>3D网格",
    Text_BIMBtn: "滑动<br>BIM",
    Text1: "卷帘 &<br> æ¸å˜",
    Text2: "缩放到包含影像图层的区域<b>或</b>在工程树中选择影像图层然后点击:",
    Text3: "意外错误:",
    Text4: "卷帘<br>& æ¸å˜",
    Text_StartSwipe: "开始",
    Text_Freeze: "冻结",
    Text_Sides: "边界",
    Text_UpDown: "上-下",
    Text_CouldNotDetect: "视图中没有检测到任何影像图层. <br/> è¯·æ”¾å¤§åˆ°å½±åƒå›¾å±‚的可见区域并",
    Text_TryAgain: "重试",
    Text_NoMeshSelected: "从列表中选择两个不同的3DML图层,或放大到感兴趣的区域,然后单击刷新&检测",
    Text_NotIntersect: "一个或多个选定的图层不在当前视图中. æ”¾å¤§åˆ°æ„Ÿå…´è¶£çš„区域并单击刷新&检测",
    Text6: "滑动对比截屏",
    Text7: "滑动对比截屏",
    Text8: "滑动对比3D网格图层",
    Text9: "滑动显示模式",
    Text12: "在进行对比操作前用户必须先截取场景A和场景B. ",
    Text13: "尝试加载截屏文件失败",
    Text14: "对比",
    Text15: "影像对比",
    Text16: "影像图层对比",
    Text17: "图层: ",
    Text20: "试图对比影像图层时出错. ",
    Text_MeshError: "试图对比3DML图层时出错. ",
    Text21: "透明度",
    Text22: "滑动对比: ",
    Text23: "右-å·¦",
    Text24: "å·¦-右",
    Text25: "é¡¶-底",
    Text26: "底-é¡¶",
    Text_Refresh: "刷新&检测",
    Text_ModelName: "图层名称: ",
    Text_Select: "选择",
    Text_SelectLayer: "-- é€‰æ‹©å›¾å±‚ --",
    Text_Texture: "纹理",
    Text_TextureWire: "纹理 + ä¸‰è§’网",
    Text_Solid: "白模",
    Text_SolidWire: "白模 + ä¸‰è§’网",
    Text_Xray: "X射线",
    Text_None: "无",
    Text27: "自动",
    Text29: "查看不到影像图层. è¯·ç¼©æ”¾åˆ°åŒ…含可见影像图层的区域.  ",
    Text30: "动态对比",
    Text31: "加载对比",
    Text32: "生成高精度截屏数据. è¯¥è¿ç®—过程会持续几秒钟. ",
    Text33: "通过在工程树中显示和隐藏对象来创建修改的场景,然后点击<b>对比</b>",
    Text_BIMNotFound: "尝试获取图层ID时发生意外错误. ",
    Text_Terrain: "基础地形",
    Text_AlertCaption: "·",
    Text99: "完成"
});
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/help.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@

<HTML lang=zh-CN><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8"><TITLE>TerraExplorer Pro - æ³°ç‘žæ•°åˆ›ç§‘技(北京)有限公司</TITLE><LINK
href="../Style.css" type=text/css rel=StyleSheet>
<META content="MSHTML 6.00.2900.5512" name=GENERATOR></HEAD>
<BODY>
<TABLE class=s9 cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD class=s12b align=middle>影像对比工具</TD></TR>
  <TR>
    <TD><BR>
      <DIV class=WordSection1>
      <P class=MsoNormal>影像对比工具可帮助用户观察出同一位置的两个影像之间的区别. </P>
      <P class=MsoNormal>影像对比提供了两个有用的工具,帮助用户轻松地手动对比出两个影像或两个工程场景之间的区别. </P>
      <H3>使用影像图层对比 &amp; æ¸å˜å¯¹æ¯”</H3>
      <P class=MsoNormal>影像图层对比 &amp; æ¸å˜å·¥å…·è®©ç”¨æˆ·å¯ä»¥å°†3D窗口中添加的影像图层和MPT影像进行对比. </P>
      <P class=MsoNormal>1.放大到包含影像图层的区域</P>
      <P class=MsoNormal>2.点击<B>对比&amp; æ¸å˜</B>按钮. </P>
      <P class=MsoNormal><B>打开影像图层对比&amp; æ¸å˜å·¥å…·ï¼ŒåŒ…含如下控件:</B></P>
      <P class=MsoNormal>1.透明度滑块-更改透明度滑块来控制影像透明度. </P>
      <P class=MsoNormal>2.点击<B>自动</B>按钮来自动更改图层的透明度值,该值在0-100%之间. </P>
      <P class=MsoNormal>3.裁剪滑块-滑动裁剪滑块来显示影像图层下的基础地形数据. </P>
      <P class=MsoNormal>4.点击<B>自动</B>按钮来自动更改裁切值,该值在0-100%之间. </P>
      <H3>使用三维视图对比</H3>
      <P class=MsoNormal>三维视图对比工具可使用户对比工程中两个场景的截屏数据. </P>
      <P class=MsoNormal>1.飞到指定位置</P>
      <P class=MsoNormal>2.点击<B>抓拍A</B></P>
      <P class=MsoNormal>3.开启工程树中不同的图层. </P>
      <P class=MsoNormal>4.点击<B>抓拍B</B></P>
      <P class=MsoNormal>5.点击<B>对比</B></P>
      <P class=MsoNormal><B>三维视图对比工具被打开,包含如下控件:</B></P>
      <P class=MsoNormal>1.透明度滑块-滑动透明度滑块来控制场景B的透明度,慢慢露出下方的场景A的截屏. </P>
      <P class=MsoNormal>2.裁切滑块-滑动裁切滑块来露出下方场景A的部分区域.
</P></DIV></TD></TR></TBODY></TABLE></BODY></HTML>
<!--Sig:00000040iXnHat0m4i35MLkJ7R9q4TbhR9OYkaGsv3qJVyjhS5uB8Qe0fsXvkVrhZ9OO9#V8g5tMbHa8Gl3otmyWlNC3MrJJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/BIMComparisonPopup.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,383 @@
<html>
    <head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
        <title>Image Comparison Tool</title>
<script type="text/javascript" src="range.js"></script>
<script type="text/javascript" src="timer.js"></script>
<script type="text/javascript" src="slider.js"></script>
<link type="text/css" rel="StyleSheet" href="slider.css" />
<link rel="StyleSheet" href="../Style.css" type="text/css">
<style>
</style>
    </head>
        <body leftmargin="0px" topmargin="0px" marginwidth="0" marginheight="0" style="border: 0px;overflow:hidden; background-color: #151515" id="Body"  class="hideUntillTranslated" onload="Init()" onunload="exitTool();">
        <table  cellpadding ="5" cellspacing = "0" border="0" width="100%" >
        <tr >
        <td>
            &nbsp;<span class="i18n s8w">Text_ModelName</span>
            &nbsp;<b><span id="modelNameID" class="s8w"></span></b>
        </td>
        </tr>
    </table>
    <table  cellpadding ="3" cellspacing = "0" border="0" width="100%"  >
        <tr>
            <td style="width:215px;" align="center">
                    <select id="Layer1Mode"  class="SelectDark"   style="width:210px; " onchange="SetLayerRenderMode(1,-1);">
                        <option class="i18n" value=0 selected="selected">Text_Texture</option>
                        <option class="i18n" value=32768 >Text_TextureWire</option>
                        <option class="i18n" value=3 >Text_Solid</option>
                        <option class="i18n" value=32771 >Text_SolidWire</option>
                        <option class="i18n" value=2 >Text_Xray</option>
                        <option class="i18n" value=-1 >Text_None</option>
                    </select>
            </td>
            <td style="width:50px;" align="center">
                <img style="margin-left:5px;" src=".\images\swipeicon.png" alt="" />
            </td>
            <td style="width:215px;" align="center">
                <select id="Layer2Mode"  class="SelectDark"   style="width:210px; " onchange="SetLayerRenderMode(2,-1);">
                        <option class="i18n" value=0 >Text_Texture</option>
                        <option class="i18n" value=32768 >Text_TextureWire</option>
                        <option class="i18n" value=3 >Text_Solid</option>
                        <option class="i18n" value=32771 >Text_SolidWire</option>
                        <option class="i18n" value=2 selected="selected">Text_Xray</option>
                        <option class="i18n" value=-1 >Text_None</option>
                    </select>
            </td>
    </tr>
    <tr style="height: 10px;"><td></td></tr>
     </table>
    <table  cellpadding ="3" cellspacing = "0" border="0" width="100%" >
    <tr >
        <td style=" width:80px;" align="center"><button id="DirectionID" style="width: 100%;" class="MenuButtonSmallWhite MenuButtonLast" onclick="ChangeDirection();" ><span class="i18n">Text_UpDown</span></button></td>
        <td style=" width:300px;" align="left">
            <div id="SliderID">
                <span id="gSliderClip" style="display:inline-block; width: 300px;"><input type="text" id="gSliderClipID" /></span></td>
            </div>
        <td style="width:35px;" align="left"> <span id="clipSpan"  class="s8w">100%</span></td>
        <td  style="width:35px;" align="center"  class="SectionText"  onclick="autoPlay(true);" style="cursor:pointer;"><img id="clipIcon" src="Images/autoOff.png" alt="" align="absmiddle"/> </td>
    </tr>
    </table>
<script src="../jquery/jquery-1.10.2.js"  type="text/javascript"></script>
<script language="javascript" src="../ToolsCommon71.js"></script>
<script language="jscript">
var SGWorld = new ActiveXObject("TerraExplorerX.SGWorld71");
var gDebug = false;
var gLayer1ID;
var gLayer2ID;
var gLayer1Obj;
var gLayer2Obj;
var gLayer1Visibility = true;
var gLayer1RenderMode;
var gStartSwipe = false;
var gLastLevel = 100;
var gAutoOnOff = false;
var gCliptimeout;
var gClipUpdatetimeout;
var gClipPosition;
var gSliderClip;
var gSwipeDirection=1;
var gDirection = 1;
var gCameraPos;
//--------------
//  Init
function Init() {
    //debugger
   try {
        gLayer1ID  = GetParamValue("ID", "");
        if (gLayer1ID=="")
        {
            gLayer1ID = SGWorld.ProjectTree.GetNextItem (SGWorld.ProjectTree.RootID,10);
            gLayer1Obj = SGWorld.Creator.GetObject(gLayer1ID);
            if (gLayer1Obj.ObjectType == 39){ // feature layer under 3DML - get the parent 3DML
                gLayer1ID = SGWorld.ProjectTree.GetNextItem (gLayer1ID,15);
                gLayer1Obj = SGWorld.Creator.GetObject(gLayer1ID);
            }
            if (gLayer1Obj.ObjectType != 38){
                TEAlert (SGLang.i18n("Text_AlertCaption"), SGLang.i18n("Text_BIMNotFound"));
                return;
            }
        }
        $("#modelNameID").text(SGWorld.ProjectTree.GetItemName(gLayer1ID));
        gLayer1Obj= SGWorld.Creator.GetObject(gLayer1ID);
    }
   catch (e) {  TEAlert (SGLang.i18n("Text_AlertCaption"),SGLang.i18n("Text_BIMNotFound") ); exitTool();return;}
        try {
        // Create temporary layer
        var Path = gLayer1Obj.Path;
        var questionmark = Path.indexOf("?");
        if (checkUrl(Path))
            gLayer2Obj=SGWorld.Creator.CreateMeshLayerFromSGS(Path.substring(0,questionmark),Path.substring(questionmark+7,Path.length),SGWorld.ProjectTree.HiddenGroupID);
        else
            gLayer2Obj=SGWorld.Creator.CreateMeshLayerFromFile(Path,SGWorld.ProjectTree.HiddenGroupID);
        gLayer2ID = gLayer2Obj.ID;
        gLayer2Obj.Position = gLayer1Obj.Position.Copy();
        gLayer2Obj.Position.Pitch = 0; // This is to overcome a TE bug
        gLayer2Obj.ScaleX = gLayer1Obj.ScaleX;
        gLayer2Obj.ScaleX = gLayer1Obj.ScaleX;
        gLayer2Obj.ScaleY = gLayer1Obj.ScaleY;
        gLayer2Obj.ScaleZ = gLayer1Obj.ScaleZ;
        //gLayer2Obj.SaveInFlyFile = 0;
        SetLayerRenderMode(1,-1);
        SetLayerRenderMode(2,-1);
        SGWorld.AttachEvent("OnProjectTreeAction", OnProjectTreeAction);
   }
   catch (e) {  TEAlert (SGLang.i18n("Text_AlertCaption"),SGLang.i18n("Text_BIMNotFound") + e.message); return;}
   StartSwipe();
}
//--------------
//  checkUrl
function ChangeDirection(){
    if (gDirection==1){
        gDirection=0;
        $("#DirectionID").text(SGLang.i18n("Text_Sides"));
    }
    else {
        gDirection=1;
        $("#DirectionID").text(SGLang.i18n("Text_UpDown"));
    }
    SetClipTrans(gSliderClip.getValue(), true);
}
//--------------
//  checkUrl
function checkUrl(s) {
     var regexp = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/
     return regexp.test(s);
}
//--------------
//  StartSwipe
function StartSwipe(){
    try {
        gStartSwipe = true;
        gLayer1Visibility = SGWorld.ProjectTree.GetVisibility (gLayer1ID);
        gLayer1RenderMode = gLayer1Obj.DisplayStyle;
        SetLayerRenderMode (1,gLayer1RenderMode);
        gCameraPos = SGWorld.Navigate.GetPosition ();
        SGWorld.ProjectTree.SetVisibility (gLayer1ID,true);
        SGWorld.ProjectTree.SetVisibility (gLayer2ID,true);
        setTimeout ("relocateCamera();",100);  // We need it to overcomae a problem of camera "jump" when we turn on layers
        SGWorld.Analysis.SetCompareGroup(gLayer1ID, 1);
        SGWorld.Analysis.SetCompareGroup(gLayer2ID, 2);
        gSliderClip = new Slider(document.getElementById("gSliderClip"), document.getElementById("gSliderClipID"));
        gSliderClip.setValue(50);
        gSliderClip.setMinimum(0);
        gSliderClip.setMaximum(99);
        gSliderClip.onchange = function () {
            SetClipTrans(gSliderClip.getValue(), false);
        };
        SetClipTrans(gSliderClip.getValue(), true);
        SGWorld.SetParam(450, 1);
    }
        catch (e) { if (gDebug) alert(SGLang.i18n("Text_MeshError") + e.message); }
}
//--------------
// relocateCamera
// We need it to overcomae a problem of camera "jump" when we turn on layers
function relocateCamera() {
    SGWorld.Navigate.SetPosition (gCameraPos);
}
//--------------
//
function SetClipTrans(level, force) {
    if (level == gLastLevel && force == false )
        return;
    gLastLevel = level;
    // Clipping
    try {
        document.getElementById("clipSpan").innerHTML = level + "%";
        var vertices = [];
        switch (gDirection){
        case 0:  // Sides
            var boxWidth = Math.max(500, SGWorld.Navigate.GetPosition(0).Altitude*20); //  1000;//LeftPos.DistanceTo(RightPos)*10;
            var Pos = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, (SGWorld.Window.Rect.Height)-10, 0).Position;
            var Pos1 = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, (SGWorld.Window.Rect.Height)-50, 0).Position;
            var boxYaw = Pos.AimTo(Pos1).Yaw;
            Pos = Pos.Move (boxWidth,boxYaw ,0);
            Pos = Pos.Move (boxWidth/4,0,-90);
            vertices[0] = Pos;
            Pos = Pos.Move(boxWidth, boxYaw+90 , 0);
            vertices[1] = Pos;
            Pos = Pos.Move(boxWidth*2, boxYaw + 180, 0);
            vertices[2] = Pos;
            Pos = Pos.Move(boxWidth, boxYaw+270, 0);
            vertices[3] = Pos;
            vertices[4] = vertices[0].Move(boxWidth, 0, 90);
            vertices[5] = vertices[1].Move(boxWidth, 0, 90);
            vertices[6] = vertices[2].Move(boxWidth, 0, 90);
            vertices[7] = vertices[3].Move(boxWidth, 0, 90);
            break;
            case 1:   // Up-Down
            var MinX = gLayer1Obj.BBox.MinX;
            var MinY = gLayer1Obj.BBox.MinY;
            var MaxX = gLayer1Obj.BBox.MaxX;
            var MaxY = gLayer1Obj.BBox.MaxY;
            var MinHeight = gLayer1Obj.BBox.MinHeight + (gLayer1Obj.BBox.MaxHeight-gLayer1Obj.BBox.MinHeight)* (level / 100.0)*1.05;
            var MaxHeight = gLayer1Obj.BBox.MaxHeight*1.05;
            vertices[0] = SGWorld.Creator.CreatePosition(MinX,MinY,MinHeight,3,0,0,0,1);
            vertices[1] = SGWorld.Creator.CreatePosition(MinX,MaxY,MinHeight,3,0,0,0,1);
            vertices[2] = SGWorld.Creator.CreatePosition(MaxX,MaxY,MinHeight,3,0,0,0,1);
            vertices[3] = SGWorld.Creator.CreatePosition(MaxX,MinY,MinHeight,3,0,0,0,1);
            vertices[4] = SGWorld.Creator.CreatePosition(MinX,MinY,MaxHeight,3,0,0,0,1);
            vertices[5] = SGWorld.Creator.CreatePosition(MinX,MaxY,MaxHeight,3,0,0,0,1);
            vertices[6] = SGWorld.Creator.CreatePosition(MaxX,MaxY,MaxHeight,3,0,0,0,1);
            vertices[7] = SGWorld.Creator.CreatePosition(MaxX,MinY,MaxHeight,3,0,0,0,1);
            break;
            // case 3:   // depth
            // var boxWidth = Math.max(50, SGWorld.Navigate.GetPosition(0).Altitude)*10; //  1000;//LeftPos.DistanceTo(RightPos)*10;
            // var Pos = SGWorld.Window.PixelToWorld(5, (SGWorld.Window.Rect.Height)-5, 0).Position;
            // var boxYaw = SGWorld.Navigate.GetPosition(0).Yaw;
            // Pos = Pos.Move (boxWidth*level/ 100.0,boxYaw ,0);
            // Pos = Pos.Move (boxWidth/4,0,-90);
            // vertices[0] = Pos;
            // Pos = Pos.Move(boxWidth, boxYaw+90 , 0);
            // vertices[1] = Pos;
            // Pos = Pos.Move(boxWidth, boxYaw+180 , 0);
            // vertices[2] = Pos;
            // Pos = Pos.Move(boxWidth, boxYaw+270, 0);
            // vertices[3] = Pos;
            // vertices[4] = vertices[0].Move(boxWidth, 0, 90);
            // vertices[5] = vertices[1].Move(boxWidth, 0, 90);
            // vertices[6] = vertices[2].Move(boxWidth, 0, 90);
            // vertices[7] = vertices[3].Move(boxWidth, 0, 90);
            // break;
        }
        var BoxGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry(vertices);
        SGWorld.Analysis.ShowCompareBox(BoxGeometry, false, "#ffffffff");
        //SGWorld.Creator.CreatePolyline (BoxGeometry,542346, 3);
        gClipPosition = SGWorld.Navigate.GetPosition();
        clearTimeout(gClipUpdatetimeout);
        gClipUpdatetimeout = setTimeout("checkClipUpdate()", 100);
    }
    catch (e) { if (gDebug) alert(SGLang.i18n("Text3") + e.message); }
}
//--------------
//
function checkClipUpdate() {
    var currPosition = SGWorld.Navigate.GetPosition()
    if (currPosition.IsEqual(gClipPosition) == false) {
        SetClipTrans(gLastLevel, true);
    }
    else {
        clearTimeout(gClipUpdatetimeout);
        gClipUpdatetimeout = setTimeout("checkClipUpdate()", 100);
    }
}
//--------------
//
function autoPlay(fromClick) {
    //debugger
    if (fromClick) {
        gAutoOnOff = !gAutoOnOff;
    }
    if (gAutoOnOff) {
        document.getElementById("clipIcon").src = "Images/autoOn.png";
        var a = gSliderClip.getValue();
        a = (a + 2) % 101;
        gSliderClip.setValue(a);
        gCliptimeout = setTimeout("autoPlay(false)", 20);
    }
    else {
        document.getElementById("clipIcon").src = "Images/autoOff.png";
        clearTimeout(gCliptimeout);
    }
}
//--------------
//  SetLayerRenderMode
function SetLayerRenderMode (layerIndex,forceValue){
    var LayerID = (layerIndex==1)?gLayer1ID:gLayer2ID;
    var modeID = (layerIndex==1)?$("#Layer1Mode"):$("#Layer2Mode");
    var obj = (layerIndex==1)?gLayer1Obj:gLayer2Obj;
    var renderMode ;
    if (forceValue==-1)
        renderMode = (layerIndex==1)?$("#Layer1Mode").val():$("#Layer2Mode").val();
    else{
        renderMode=forceValue;
        modeID.val(renderMode).change();
    }
    if (renderMode != -1){
        obj.Visibility.Show = true;
        obj.DisplayStyle=renderMode;
    }
    else {
        obj.Visibility.Show = false;
    }
}
//--------------
//  OnProjectTreeAction
function OnProjectTreeAction(ID,Action) {
    try{
        if (Action.Code == 15 && ID ==gLayer1ID)
            exitTool ();
    }
    catch (e) { if (gDebug) alert(SGLang.i18n("Text3") + e.message);}
}
//--------------
//  exitTool
function exitTool() {
    try {
            SGWorld.ProjectTree.DeleteItem(gLayer2ID);
            if (gStartSwipe){
                if (gLayer1ID != -1) {
                    SGWorld.ProjectTree.SetVisibility (gLayer1ID,gLayer1Visibility);
                    SetLayerRenderMode (1,gLayer1RenderMode);
                    SGWorld.Analysis.SetCompareGroup(gLayer1ID, 0);
                }
                SGWorld.Analysis.HideCompareBox();
                SGWorld.SetParam(450, 0);
            }
            SGWorld.Window.RemovePopupByCaption(SGLang.i18n("Text9"));
    }
    catch (e) { if (gDebug) alert(SGLang.i18n("Text3") + e.message);}
}
    </script>
</body>
</html>
<!--Sig:0000004014cB.cwfFPB6gOBTJYSuqR5uTzWVzBz5YczGqPtTrGGV.6bCmfp5bqxQObmf7WgJwnYv1gW2WiSdDjr28LS9JZJJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,140 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>ToolTitle</title>
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <script language="javascript" src="../ToolsCommon.js"></script>
    <link rel="StyleSheet" href="../Style.css" type="text/css">
    <style>
        .MenuButton
        {
            height: 78px;
            width: 65px;
            margin: 5px;
            white-space: normal;s
        }
        .MenuButtonHighlight
        {
            color: Red;
            font-weight: bold;
        }
    </style>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="border: 0;
    overflow: auto;" id="Body" onload="Init()" onunload="exitTool();" >
    <!--oncontextmenu="return false;"  onclick="bHide=true;HideOptionsNow()" > -->
       <table border="0" width="100%" cellspacing="0" cellpadding="2">
        <tr>
            <td id="TopAreaTD" height="50px" width="100%" valign="middle" style="background-color: #CAD8E2">
                <table border="0" width="100%" cellspacing="0" cellpadding="0">
                    <tr>
                        <td width="12px">
                        </td>
                        <td width="55px">
                            <img src="images/ImageComparisonIcon.gif" />
                        </td>
                        <td id="TitleTD" align="center" class="s12b  i18n">
                            ToolName
                        </td>
                        <td valign="top" align="right" id="CloseHelpTd">
                            <img src="../CommonImg/help.gif" border="0" class="i18n" alt="help" title="help" onclick="DisplayHelpPopup6 (SGLang.i18nFile('help.html'),SGLang.i18n('help'))" style="cursor: pointer;">
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
        <tr height="1px">
            <td style="background-repeat: repeat-x;" background="../CommonImg/separator.gif">
            </td>
        </tr>
        <tr>
            <td>
                <br />
            </td>
        </tr>
    </table>
    <table>
        <tr class="s8">
            <td colspan="2">
                <button id="Button1" class="MenuButton" onclick="ImageryLayerCompare()"><span class="i18n">Text_ImageryBtn</span></button>
                <button id="Button2" class="MenuButton" onclick="SnapshotCompare()"><span class="i18n">Text_SnapshotBtn</span></button>
                <button id="Button3" class="MenuButton" onclick="MeshCompare()"><span class="i18n">Text_3DMLBtn</span></button>
                <button id="Button4" class="MenuButton" onclick="BIMCompare()"><span class="i18n">Text_BIMBtn</span></button>
            </td>
        </tr>
    </table>
    <object id="SGWorld" classid="CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1" style="visibility:hidden;height:0 "></object>
<script language="JavaScript">
//--------------
// Init
function Init() {
}
//------------------
// Reset
//------------------
function Reset(FirstTime, FromMouseInputMode) {
}
//---------------
// exitTool
function exitTool() {
    try {
    }
    catch (e) { return }
}
//--------------
// SnapshotCompare
function SnapshotCompare() {
    var url = abspath() + "/SnapshotComparison.html"; ;
    var popupMsg = SGWorld.Creator.CreatePopupMessage(SGLang.i18n("Text6"), url, 10, 10, 480, 120, -1);
    popupMsg.Flags = 2 + 128 + 2048;
    SGWorld.Window.ShowPopup(popupMsg);
}
//--------------
// ImageryLayerCompare
function ImageryLayerCompare() {
    var url = abspath() + "/ImageComparisonPopup.html";
    var popupMsg = SGWorld.Creator.CreatePopupMessage(SGLang.i18n("Text15"), url, 12, 10, 480, 120, -1);
    popupMsg.Flags = 2 + 128 ;
    SGWorld.Window.ShowPopup(popupMsg);
}
//--------------
// 3DML MeshCompare
function MeshCompare() {
    var url = abspath() + "/MeshComparisonPopup.html" ;
    var popupMsg = SGWorld.Creator.CreatePopupMessage(SGLang.i18n("Text8"), url, 10, 10, 480, 120, -1);
    popupMsg.Flags = 2 + 128 ;
    SGWorld.Window.ShowPopup(popupMsg);
}
//--------------
// BIM Compare
function BIMCompare() {
var url = abspath() + "/BIMComparisonPopup.html"; ;
var popupMsg = SGWorld.Creator.CreatePopupMessage(SGLang.i18n("Text9"), url, 10, 10, 480, 120, -1);
popupMsg.Flags = 2 + 128 ;
SGWorld.Window.ShowPopup(popupMsg);
}
</script>
</body>
</html>
<!--Sig:00000040ZTK3kMKnzdOrjMmW6m#DM4O6vTkGv5AGJI7VidwyAYcD1zTELI12fUf##MmjUzXFKv#1RKrFHOiAd20WenvtG7JJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.ico
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparisonPopup.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,286 @@
<html>
    <head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
        <title>Image Comparison Tool</title>
<script type="text/javascript" src="range.js"></script>
<script type="text/javascript" src="timer.js"></script>
<script type="text/javascript" src="slider.js"></script>
<link type="text/css" rel="StyleSheet" href="slider.css" />
<link rel="StyleSheet" href="../Style.css" type="text/css">
<style>
    </style>
    </head>
    <body onload="Init();" onunload="exitTool();" style="overflow:hidden; border:0;background-color: #151515"  leftmargin='0' topmargin="0" marginwidth="0" marginheight="0"> <!-- oncontextmenu="return false;" >-->
        <div id="mainDiv"  style="position:absolute; left:0px; top:0px; overflow:hidden; height:100%;">
            <table  cellpadding ="2" cellspacing = "1" border="0" width="100%" height="100%" >
            <tr >
            <td colspan="4"  >
                <span class="i18n NormalText s8w" >Text17</span>
                <span class="i18n LayerHeader s8w" id="LayerNameSpan"></span>
            </td>
            </tr>
            <tr>
            <td style="width:140px;" align="center">
                <!-- <span class="i18n NormalText" >Text22</span> -->
                <select class="directionSelect NormalText SelectDark" style="vertical-align:middle; width:120px;" id="clipDirectionID" onchange="SetClipTrans(gLastLevel,true);">
                    <option value="0" class="i18n">Text23</option>
                    <option value="1" class="i18n">Text24</option>
                    <option value="2" class="i18n">Text25</option>
                    <option value="3" class="i18n">Text26</option>
                    <option value="4" class="i18n">Text21</option>
                </select>
            </td>
            <td style=" width:250px;" align="left"><span id="gSliderClip" style="display:inline-block;width: 250px;"><input type="text" id="gSliderClipID" /></span></td>
            <td style="width:35px;" align="left"> <span id="clipSpan" class="NormalText s8w" >100%</span></td>
            <td style="width:35px;" align="center"  class="SectionText"  onclick="autoPlay(true);" style="cursor:pointer;"><img id="clipIcon" src="Images/autoOff.png" alt="" align="absmiddle"/> </td>
            </tr>
            </table>
        </div>
         <div id="alertDiv"  style="position:absolute; left:0px; top:0px; overflow:hidden; height:100%; width: 100%">
                 <table cellpadding ="2" cellspacing = "1" border="0" width="100%" style="height:100%;" >
            <tr >
            <td valign="middle" align="center" class="s10b" style="width: 100%">
                    <span class="i18n s9w" >Text_CouldNotDetect</span><br/>
                    <span class="i18n s9w" style="text-decoration: underline; cursor: pointer;" onclick="DetectLayer();" >Text_TryAgain</span>
                </td>
            </tr>
            </table>
         </div>
         <object id="SGWorld" classid="CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1">
            </object>
<script src="../jquery/jquery-1.10.2.js"  type="text/javascript"></script>
<script language="javascript" src="../ToolsCommon71.js"></script>
<script language="jscript">
//var SGWorld = new ActiveXObject("TerraExplorerX.SGWorld70");
var gDebug = true;
var gLastLevel = 100;
var gLayerObj = null;
var gImageryLayerGeometry;
var gAutoOnOff = false;
var gClipTimeout;
var gClipUpdatetimeout;
var gclipPosition;
var gSliderClip;
var gImageryLayerAlpha;
//--------------
// Init
function Init() {
    DetectLayer();
}
//--------------
// DetectLayer
function DetectLayer(){
    try {
        $("#alertDiv").hide();
        $("#mainDiv").hide();
        var ObjectID = "";
        ObjectID = FindImageryLayer();
        if (ObjectID == "") {
            $("#alertDiv").show();
            return;
        }
        $("#mainDiv").show();
        gLayerObj = SGWorld.Creator.GetObject(ObjectID);
        document.getElementById("LayerNameSpan").innerHTML = gLayerObj.TreeItem.Name + " " + gLayerObj.ID;
        gImageryLayerGeometry = gLayerObj.Geometry.Clone();
        gImageryLayerAlpha = gLayerObj.FillStyle.Color.GetAlpha();
        gSliderClip = new Slider(document.getElementById("gSliderClip"), document.getElementById("gSliderClipID"));
        gSliderClip.setValue(100);
        gSliderClip.setMinimum(0);
        gSliderClip.setMaximum(100);
        gSliderClip.onchange = function () {
            SetClipTrans(gSliderClip.getValue(), false);
        };
        SGWorld.SetParam(450, 1);
    }
        catch (e) { alert(SGLang.i18n("Text20") + e.message); }
}
//------------
// FindImageryLayer
function FindImageryLayer() {
    var ObjectID = "";
    var TEObj;
    try {
        // Try to detect if center of the screen points to a valid imagery layer
        for (var i=0; i<200; i++){
            ObjectID = DetectImageryLayer((SGWorld.Window.Rect.Width-1) * Math.random(), (SGWorld.Window.Rect.Height-1) * Math.random());
            if (ObjectID != "")
                return ObjectID;
        }
    }
    catch (e) {alert(e.message); }
    return "";
}
//--------------
// DetectImageryLayer
function DetectImageryLayer(x, y)
{
    var ObjectType =26
    var filter = 4;
    var WorldPoint = SGWorld.Window.PixelToWorld(x,y, filter);
    if (WorldPoint.Type == filter) {
        try {
            var TEObj = SGWorld.Creator.GetObject(WorldPoint.ObjectID);
            if (TEObj.ObjectType == ObjectType) {
                return TEObj.ID;
            }
         }
        catch (e) { }
    }
    return "";
}
//--------------
//
function SetClipTrans(level, force) {
    if (level == gLastLevel && force == false)
        return;
    gLastLevel = level;
    try {
            // Transparency
            if (document.getElementById("clipDirectionID").value == "4") {
                gLayerObj.Geometry = gImageryLayerGeometry;
                gLayerObj.FillStyle.Color.SetAlpha(level / 100.0);
                document.getElementById("clipSpan").innerHTML = level + "%";
                return;
            }
            // Clipping
            gLayerObj.FillStyle.Color.SetAlpha(gImageryLayerAlpha);
            if (level == 100) {
                gLayerObj.Geometry = gImageryLayerGeometry;
                document.getElementById("clipSpan").innerHTML = level + "%";
                return;
            }
            var RightSide = SGWorld.Window.Rect.Width - 1;
            if (document.getElementById("clipDirectionID").value == "0")  // Right 2 Left
                RightSide = RightSide * (level) / 100.0;
            var LeftSide = 0;
            if (document.getElementById("clipDirectionID").value == "1")  // Left 2 Right
                LeftSide = RightSide * (100-level) / 100.0;
            var BottomSide = SGWorld.Window.Rect.Height - 1;
            if (document.getElementById("clipDirectionID").value == "3")  // Bottom 2 Top
                BottomSide = BottomSide * (level) / 100.0;
            var TopSide = 0;
            if (document.getElementById("clipDirectionID").value == "2")  // Top 2 botton
                TopSide = BottomSide * (100 - level) / 100.0;
            //Try to find the corners of the current terrain view
            var UppLeft = SGWorld.Window.PixelToWorld(LeftSide, TopSide, 0);
            var UppRight = SGWorld.Window.PixelToWorld(RightSide, TopSide, 0);
            var LowerLeft = SGWorld.Window.PixelToWorld(LeftSide, BottomSide, 0);
            var LowerRight = SGWorld.Window.PixelToWorld(RightSide, BottomSide, 0);
            while ((UppLeft.Type & 32) > 0 || (UppRight.Type & 32) > 0) {
                TopSide += SGWorld.Window.Rect.Height / 20;
                if (TopSide > (SGWorld.Window.Rect.Height * 0.9))
                    return;
                UppLeft = SGWorld.Window.PixelToWorld(LeftSide, TopSide, 0);
                UppRight = SGWorld.Window.PixelToWorld(RightSide, TopSide, 0);
            }
            var exteriorRing = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry(Array(UppLeft.Position.X, UppLeft.Position.Y, 0, UppRight.Position.X, UppRight.Position.Y, 0, LowerRight.Position.X, LowerRight.Position.Y, 0, LowerLeft.Position.X, LowerLeft.Position.Y, 0));
            var PolyGeometry = SGWorld.Creator.GeometryCreator.CreatePolygonGeometry(exteriorRing, null);
            gLayerObj.Geometry = PolyGeometry;
        document.getElementById("clipSpan").innerHTML = level + "%";
        gclipPosition = SGWorld.Navigate.GetPosition();
        clearTimeout(gClipUpdatetimeout);
        gClipUpdatetimeout = setTimeout("checkClipUpdate()", 1000);
    }
    catch (e) { alert(SGLang.i18n("Text3") + e.message); }
}
//--------------
//
function checkClipUpdate() {
    var currPosition = SGWorld.Navigate.GetPosition()
    if (currPosition.IsEqual(gclipPosition) == false) {
        SetClipTrans(gLastLevel, true);
    }
    else {
        clearTimeout(gClipUpdatetimeout);
        gClipUpdatetimeout = setTimeout("checkClipUpdate()", 1000);
    }
}
//--------------
//
function autoPlay(fromClick) {
    //debugger
    if (fromClick) {
        gAutoOnOff = !gAutoOnOff;
    }
    if (gAutoOnOff) {
        document.getElementById("clipIcon").src = "Images/autoOn.png";
        var a = gSliderClip.getValue();
        a = (a + 2) % 101;
        gSliderClip.setValue(a);
        gClipTimeout = setTimeout("autoPlay(false)", 200);
    }
    else {
        document.getElementById("clipIcon").src = "Images/autoOff.png";
        clearTimeout(gClipTimeout);
    }
}
//--------------
//
function exitTool() {
    try {
        SGWorld.SetParam(450, 0);
        if (gLayerObj != null) {
            gLayerObj.FillStyle.Color.SetAlpha(gImageryLayerAlpha);
            gLayerObj.Geometry = gImageryLayerGeometry;
        }
        SGWorld.Window.RemovePopupByCaption(SGLang.i18n("Text15"));
    }
    catch (e) { }
}
    </script>
    </body>
</html>
<!--Sig:00000040nlV4pRL0Hjcw1jnciBO0s1hTbWsuZjgttu4jOBCjdKg#gkLueGnlnTpKt0gKigfxQWdgGcozixR9mCDSEs5WJ3JJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/SwipeIcon.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomIn.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomOut.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/loading.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.hover.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.hover.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.png
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/space.gif
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Lang.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
SGLang.lang = $.extend(SGLang.lang,{
    ToolTitle: "SkylineGlobe - Skyline Software Systems, Inc.",
    ToolName: "Image Comparison",
    ToolName1: "Image Comparison",
    help: "Help",
    Text_ImageryBtn: "Swipe<br>Imagery",
    Text_SnapshotBtn: "Swipe<br>Snapshots",
    Text_3DMLBtn: "Swipe<br>3D Mesh",
    Text_BIMBtn: "Swipe<br>BIM",
    Text1: "Swipe &<br> Fade",
    Text2: "Zoom to an area with an imagery layer <b>OR</b> select an imagery layer from the Project Tree and click:",
    Text3: "Unexpected Error: ",
    Text4: "Swipe<br>& Fade",
    Text_StartSwipe: "Start",
    Text_Freeze: "Freeze",
    Text_Sides: "Sides",
    Text_UpDown: "Up-Down",
    Text_CouldNotDetect: "No imagery layers were detected in the view.<br/> Zoom in to an area with a visible imagery layer and ",
    Text_TryAgain: "try again",
    Text_NoMeshSelected: "Select two different 3D Mesh layers from the list, or zoom in to an area of interest and click Refresh & Detect",
    Text_NotIntersect: "One or more of the selected layers is not in the current view. Zoom in to an area of interest and click Refresh & Detect",
    Text6: "Swipe Snapshots",
    Text7: "Swipe Snapshots Tool",
    Text8: "Swipe 3D Mesh Layers",
    Text9: "Swipe Display Style",
    Text12: "You must capture scenarios A and B before starting comparison operation",
    Text13: "Error while trying to load snapshot file. ",
    Text14: "Compare",
    Text15: "Image Comparison",
    Text16: "Imagery Layer Comparison",
    Text17: "Layer: ",
    Text20: "Error while trying to compare imagery layers. ",
    Text_MeshError: "Error while trying to compare 3D Mesh Layers. ",
    Text21: "Transparency",
    Text22: "Swipe: ",
    Text23: "right-left",
    Text24: "left-right",
    Text25: "top-bottom",
    Text26: "bottom-top",
    Text_Refresh: "Refresh & Detect",
    Text_ModelName: "Layer Name: ",
    Text_Select: "select",
    Text_SelectLayer: "-- Select a Layer --",
    Text_Texture: "Texture",
    Text_TextureWire: "Texture + Wireframe",
    Text_Solid: "Solid",
    Text_SolidWire: "Solid + Wireframe",
    Text_Xray: "X-ray",
    Text_None: "None",
    Text27: "Auto",
    Text29: "Could not detect an imagery layer. Please zoom to an area with a visible imagery layer ",
    Text30: "Dynamic Comparison",
    Text31: "Loading Comparison",
    Text32: "Generating a high quality snapshot. This process may take a few seconds.",
    Text33: "Create a modified scene by showing or hiding objects in the Project Tree,<br/> and then click <b>Compare</b>",
    Text_BIMNotFound: "Unexpected error occurred while trying to get layer ID. ",
    Text_Terrain: "Base Map",
    Text_AlertCaption: "TerraExplorer",
    Text99: "Finish"
});
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/MeshComparisonPopup.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,446 @@
<html>
    <head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
        <title>Image Comparison Tool</title>
<script type="text/javascript" src="range.js"></script>
<script type="text/javascript" src="timer.js"></script>
<script type="text/javascript" src="slider.js"></script>
<link type="text/css" rel="StyleSheet" href="slider.css" />
<link rel="StyleSheet" href="../Style.css" type="text/css">
<style>
</style>
    </head>
        <body leftmargin="2px" topmargin="2px" marginwidth="0" marginheight="0" style="border: 0px;overflow:hidden;background-color: #151515" id="Body"  class="hideUntillTranslated" onload="Init()" onunload="exitTool();">
        <div id="topDiv">
        <table  cellpadding ="1" cellspacing = "0" border="0" width="100%" >
        <tr >
        <td>
                <select id="List1ID" class="SelectDark"  style="width:220px; " ></select>
                <img style="margin-left:5px;" src=".\images\swipeicon.png" alt="" />
                <select id="List2ID"  class="SelectDark"   style="width:220px; " >     </select>
        </td>
        </tr>
        <tr id="refreshID">
            <td>
                    &nbsp;<span id="refresh" onclick="RefreshList();" style="text-decoration:underline;cursor:pointer;" class="i18n s8w">Text_Refresh</span>
            </td>
        </tr>
    </table>
        </div>
        <div id="StartDiv" >
                <table  cellpadding ="3" cellspacing = "0" border="0" width="100%" >
                    <tr>
                        <td align="center" >
                                <button id="StartID" class="MenuButtonSmallWhite MenuButtonLast" onclick="StartSwipe(-1,-1);" >   <span class="i18n">Text_StartSwipe</span></button>
                        </td>
                    </tr>
                </table>
        </div>
        <div id="SwipeDiv" >
                <table  cellpadding ="3" cellspacing = "0" border="0" width="100%"  >
                    <tr>
                            <td style="width:225px;">
                                    <!-- <span  onclick="selectLayer(1);" style="text-decoration:underline;cursor:pointer;" class="i18n">Text_Select</span>              -->
                                    <select id="Layer1Mode"  class="SelectDark"   style="width:170px; " onchange="SetLayerRenderMode(1,-1);">
                                        <option class="i18n" value=0 >Text_Texture</option>
                                        <option class="i18n" value=32768 >Text_TextureWire</option>
                                        <option class="i18n" value=3 >Text_Solid</option>
                                        <option class="i18n" value=32771 >Text_SolidWire</option>
                                        <option class="i18n" value=2 >Text_Xray</option>
                                    </select>
                                    <!-- <span  onclick="selectLayer(2);" style="text-decoration:underline;cursor:pointer;" class="i18n">Text_Select</span>              -->
                                    <select id="Layer2Mode"   class="SelectDark"  style="width:170px; margin-left:75px;" onchange="SetLayerRenderMode(2,-1);">
                                        <option class="i18n" value=0 >Text_Texture</option>
                                        <option class="i18n" value=32768 >Text_TextureWire</option>
                                        <option class="i18n" value=3 >Text_Solid</option>
                                        <option class="i18n" value=32771 >Text_SolidWire</option>
                                        <option class="i18n" value=2 >Text_Xray</option>
                                    </select>
                            </td>
                            </tr>
                    <tr>
                        <td style="height:5px"></td>
                    </tr>
                    </table>
        <table  cellpadding ="3" cellspacing = "0" border="0" width="100%" >
        <tr>
            <td  style=" width:80px;" align="center"><button id="FreezeID" style="width: 100%;" class="MenuButtonSmallWhite MenuButtonLast" onclick="Freeze();" ><span class="i18n">Text_Freeze</span></button></td>
            <td style=" width:300px;" align="left">
                <div id="SliderID">
                    <span id="gSliderClip" style="display:inline-block; width: 300px;"><input type="text" id="gSliderClipID" /></span></td>
                </div>
            <td style="width:35px;" align="left"> <span id="clipSpan" class="s8w"  >100%</span></td>
            <td style="width:35px;" align="center"  class="SectionText"  onclick="autoPlay(true);" style="cursor:pointer;"><img id="clipIcon" src="Images/autoOff.png" alt="" align="absmiddle"/></td>
        </tr>
        </table>
    </div>
<script src="../jquery/jquery-1.10.2.js"  type="text/javascript"></script>
<script language="javascript" src="../ToolsCommon71.js"></script>
<script language="jscript">
var SGWorld = new ActiveXObject("TerraExplorerX.SGWorld71");
var gDebug = false;
var gStartSwipe = false;
var gLastLevel = 100;
var gAutoOnOff = false;
var gCliptimeout;
var gClipUpdatetimeout;
var gClipPosition;
var gSliderClip;
var gLayer1Visibility = true;
var gLayer2Visibility = true;
var gLayer1RenderMode;
var gLayer2RenderMode;
var gFreeze = false;
var gInSwipe=false;
var gCameraPos;
//--------------
//  Init
function Init() {
    SGWorld.Window.SetInputMode(1, abspath() + "/cursor_wait.cur");
    var ObjectID = "";
    $("#StartDiv").show();
    $("#SwipeDiv").hide();
    RefreshList();
    var Layer1ID  = GetParamValue("Layer1ID", "-1");
    var Layer2ID  = GetParamValue("Layer2ID", "-1");
    if (Layer1ID!="-1" && Layer2ID!="-1")
        StartSwipe(Layer1ID,Layer2ID)
    SGWorld.AttachEvent("OnFrame", TEOnFrame);
    SGWorld.Window.SetInputMode(0);
}
//-------------------
// RefreshList
function RefreshList() {
    try {
        var viewedIndex = 0;
        $("#List1ID").html("");
        $("#List2ID").html("");
        var Layers=[];
        BuildObjectsList(SGWorld.ProjectTree.RootID, Layers, 38);
        $("#List1ID").append("<option value=-1>" + SGLang.i18n("Text_SelectLayer") + "</option>");
        $("#List2ID").append("<option value=-1>" + SGLang.i18n("Text_SelectLayer") + "</option>");
        Layers.forEach (function (val){
            var layer1Selected="";
            var layer2Selected="";
            if (checkIntersactionWithCamera (val))
            {
                if (viewedIndex==0)
                    layer1Selected = " selected='selected' ";
                if (viewedIndex==1)
                    layer2Selected = " selected='selected' ";
                viewedIndex++;
            }
            var name = SGWorld.ProjectTree.GetItemName (val);
            $("#List1ID").append("<option value=" + val +layer1Selected+ ">" + name + "</option>");
            $("#List2ID").append("<option value=" + val +layer2Selected+ ">" + name + "</option>");
        });
    }
    catch (err) { if (gDebug) alert(err.message); }
}
//----------
//    checkIntersactionWithCamera
function checkIntersactionWithCamera (layer){
    try {
        var Coord0 = SGWorld.Window.pixelToWorld(10, 10, -1 & ~(128|1024));
        var Coord1 = SGWorld.Window.pixelToWorld(SGWorld.Window.Rect.Width-10, 10, -1 & ~(128|1024));
        var Coord2 = SGWorld.Window.pixelToWorld(SGWorld.Window.Rect.Width-10, SGWorld.Window.Rect.Height-10, -1 & ~(128|1024));
        var Coord3 = SGWorld.Window.pixelToWorld(10, SGWorld.Window.Rect.Height-10, -1 & ~(128|1024));
        var ring = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([Coord0.Position.x,Coord0.Position.y,Coord0.Position.Altitude,Coord1.Position.x,Coord1.Position.y,Coord1.Position.Altitude,Coord2.Position.x,Coord2.Position.y,Coord2.Position.Altitude,Coord3.Position.x,Coord3.Position.y,Coord3.Position.Altitude]);
        var geometry = SGWorld.Creator.GeometryCreator.CreatePolygonGeometry (ring,ring);
        var layerObj = SGWorld.Creator.GetObject(layer);
        var layerRing = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([layerObj.BBox.MinX, layerObj.BBox.MaxY, 0, layerObj.BBox.MaxX, layerObj.BBox.MaxY, 0,layerObj.BBox.MaxX, layerObj.BBox.MinY, 0, layerObj.BBox.MinX, layerObj.BBox.MinY, 0]);
        layerGeometry = SGWorld.Creator.GeometryCreator.CreatePolygonGeometry (layerRing,layerRing);
        if (layerGeometry.SpatialRelation.Intersects(geometry) == false ) {
            return false;
        }
    }
    catch (err) { if (gDebug) alert(err.message); return false; }
    return true;
}
//--------------
//  StartSwipe
function StartSwipe(Layer1ID,Layer2ID){
    try {
        if (Layer1ID!="-1" ) // If started from another tool - select the correct layers
            $("#List1ID").val(Layer1ID);
        if (Layer2ID !="-1")
            $("#List2ID").val(Layer2ID);
        Layer1ID = $("#List1ID").val();
        Layer2ID = $("#List2ID").val();
        if (Layer1ID==-1 || Layer2ID==-1 || Layer1ID==Layer2ID) {
            ////  need to display the error message div
            TEAlert (SGLang.i18n("Text_AlertCaption"),  SGLang.i18n("Text_NoMeshSelected"));
           return;
        }
        if (checkIntersactionWithCamera (Layer1ID) == false || checkIntersactionWithCamera (Layer2ID) == false){
            TEAlert (SGLang.i18n("Text_AlertCaption"),  SGLang.i18n("Text_NotIntersect"));
           return;
        }
        $("#List1ID").attr('unselectable', 'on');
        $("#List2ID").attr('unselectable', 'on');
        $("#refreshID").hide();
        $("#StartDiv").hide();
        $("#SwipeDiv").show();
        $('#topDiv').attr('disabled', true);
        gStartSwipe = true;
        gLayer1Visibility = SGWorld.ProjectTree.GetVisibility (Layer1ID);
        gLayer2Visibility = SGWorld.ProjectTree.GetVisibility (Layer2ID);
        gLayer1RenderMode = GetLayerRenderMode(1);
        SetLayerRenderMode (1,gLayer1RenderMode);
        gLayer2RenderMode = GetLayerRenderMode(2);
        SetLayerRenderMode (2,gLayer2RenderMode);
        gCameraPos = SGWorld.Navigate.GetPosition ();
        SGWorld.ProjectTree.SetVisibility (Layer1ID,true);
        SGWorld.ProjectTree.SetVisibility (Layer2ID,true);
        setTimeout ("relocateCamera();",100);  // We need it to overcomae a problem of camera "jump" when we turn on layers
        SGWorld.Analysis.SetCompareGroup(Layer1ID, 1);
        SGWorld.Analysis.SetCompareGroup(Layer2ID, 2);
        gSliderClip = new Slider(document.getElementById("gSliderClip"), document.getElementById("gSliderClipID"));
        gSliderClip.setValue(50);
        gSliderClip.setMinimum(0);
        gSliderClip.setMaximum(99);
        gSliderClip.onchange = function () {
            SetClipTrans(gSliderClip.getValue(), false);
        };
        SetClipTrans(gSliderClip.getValue(), true);
        SGWorld.SetParam(450, 1);
    }
        catch (e) { if (gDebug) alert(SGLang.i18n("Text_MeshError") + e.message); }
}
//--------------
// relocateCamera
// We need it to overcomae a problem of camera "jump" when we turn on layers
function relocateCamera() {
    SGWorld.Navigate.SetPosition (gCameraPos);
}
//--------------
//
function SetClipTrans(level, force) {
    if (gFreeze) {
        gSliderClip.setValue(gSliderFreezeValue);
        return;
    }
    if (level == gLastLevel && force == false )
        return;
    gLastLevel = level;
    // Clipping
    try {
        document.getElementById("clipSpan").innerHTML = level + "%";
        var vertices = [];
/***
        vertices[0] = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, 2, 0).Position;
        vertices[1] = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width-2, 2, 0).Position;
        vertices[2] = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width-2, (SGWorld.Window.Rect.Height)-2, 0).Position;
        vertices[3] = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, (SGWorld.Window.Rect.Height)-2, 0).Position;
        // vertices[0] = vertices[0].Move(500, 0, -90);
        //  vertices[1] = vertices[1].Move(500, 0, -90);
        //  vertices[2] = vertices[2].Move(500, 0, -90);
        //  vertices[3] = vertices[3].Move(500, 0, -90);
         vertices[4] = vertices[0].Move(1500, 0, 90);
         vertices[5] = vertices[1].Move(1500, 0, 90);
         vertices[6] = vertices[2].Move(1500, 0, 90);
         vertices[7] = vertices[3].Move(1500, 0, 90);
***/
        //var LeftPos = SGWorld.Window.PixelToWorld(1, (SGWorld.Window.Rect.Height)-1, 0).Position;
        var boxWidth = Math.max(2000, SGWorld.Navigate.GetPosition(0).Altitude*40); //  1000;//LeftPos.DistanceTo(RightPos)*10;
        //var boxYaw = SGWorld.Navigate.GetPosition().Yaw+90;
        var Pos = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, (SGWorld.Window.Rect.Height)-10, 0).Position;
        var Pos1 = SGWorld.Window.PixelToWorld(SGWorld.Window.Rect.Width* (level) / 100.0, (SGWorld.Window.Rect.Height)-50, 0).Position;
        var boxYaw = Pos.AimTo(Pos1).Yaw;
        //var boxYaw = SGWorld.Navigate.GetPosition().Yaw+90;
        Pos = Pos.Move (boxWidth,boxYaw ,0);
        Pos = Pos.Move (boxWidth/4,0,-90);
        vertices[0] = Pos;
         Pos = Pos.Move(boxWidth, boxYaw+90 , 0);
         vertices[1] = Pos;
         Pos = Pos.Move(boxWidth*2, boxYaw + 180, 0);
         vertices[2] = Pos;
         Pos = Pos.Move(boxWidth, boxYaw+270, 0);
         vertices[3] = Pos;
         vertices[4] = vertices[0].Move(boxWidth, 0, 90);
         vertices[5] = vertices[1].Move(boxWidth, 0, 90);
         vertices[6] = vertices[2].Move(boxWidth, 0, 90);
         vertices[7] = vertices[3].Move(boxWidth, 0, 90);
        var BoxGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry(vertices);
        SGWorld.Analysis.ShowCompareBox(BoxGeometry, false, "#ffffffff");
        //SGWorld.Creator.CreatePolyline (BoxGeometry,542346, 3);
        gClipPosition = SGWorld.Navigate.GetPosition();
        clearTimeout(gClipUpdatetimeout);
        ///gClipUpdatetimeout = setTimeout("checkClipUpdate()", 20);
        gInSwipe=true;
    }
    catch (e) { if (gDebug) alert(SGLang.i18n("Text3") + e.message); }
}
//--------------
//
function checkClipUpdate() {
    var currPosition = SGWorld.Navigate.GetPosition()
    if (currPosition.IsEqual(gClipPosition) == false) {
        SetClipTrans(gLastLevel, true);
    }
    // else {
    //     clearTimeout(gClipUpdatetimeout);
    //     gClipUpdatetimeout = setTimeout("checkClipUpdate()", 20);
    // }
}
function TEOnFrame()
{
    if (gInSwipe)
        checkClipUpdate();
}
//--------------
// selectLayer
function selectLayer(index) {
    try {
        var Layer1ID = $("#List1ID").val();
        var Layer2ID = $("#List2ID").val();
        if (index==1 &&  Layer1ID!=-1)
            SGWorld.ProjectTree.SelectItem (Layer1ID);
        if (index==2 &&  Layer2ID!=-1)
            SGWorld.ProjectTree.SelectItem (Layer2ID);
    }
    catch (e) {if (gDebug)  alert(SGLang.i18n("Text3") + e.message); }
}
var gSliderFreezeValue=0;
//--------------
//
function Freeze() {
    if (gFreeze){
        gFreeze = !gFreeze;
        $('#SliderID').on();
        $("#FreezeID").css( "background-color", "#ffffff" );
        SetClipTrans(gSliderClip.getValue(), true);
    }
    else {
        $("#FreezeID").css( "background-color", "#0CC2DE" );
        gSliderFreezeValue = gSliderClip.getValue();
        gFreeze = !gFreeze;
    }
}
//--------------
//
function autoPlay(fromClick) {
    //debugger
    if (fromClick) {
        gAutoOnOff = !gAutoOnOff;
    }
    if (gAutoOnOff) {
        document.getElementById("clipIcon").src = "Images/autoOn.png";
        var a = gSliderClip.getValue();
        a = (a + 2) % 101;
        gSliderClip.setValue(a);
        gCliptimeout = setTimeout("autoPlay(false)", 20);
    }
    else {
        document.getElementById("clipIcon").src = "Images/autoOff.png";
        clearTimeout(gCliptimeout);
    }
}
//--------------
//  GetLayerRenderMode
function GetLayerRenderMode (layerIndex){
    LayerID = (layerIndex==1)?$("#List1ID").val():Layer2ID = $("#List2ID").val();
    var obj = SGWorld.Creator.GetObject(LayerID);
    return obj.DisplayStyle;
}
//--------------
//  SetLayerRenderMode
function SetLayerRenderMode (layerIndex,forceValue){
    var Layer = (layerIndex==1)?$("#List1ID"):$("#List2ID");
    var modeID = (layerIndex==1)?$("#Layer1Mode"):$("#Layer2Mode");
    var LayerID= Layer.val();
    var obj = SGWorld.Creator.GetObject(LayerID);
    var renderMode ;
    if (forceValue==-1)
        renderMode = (layerIndex==1)?$("#Layer1Mode").val():$("#Layer2Mode").val();
    else{
        renderMode=forceValue;
        modeID.val(renderMode).change();
    }
    obj.DisplayStyle=renderMode;
}
//--------------
//  exitTool
function exitTool() {
    try {
            if (gStartSwipe){
                var Layer1ID = $("#List1ID").val();
                var Layer2ID = $("#List2ID").val();
                if (Layer1ID != -1) {
                    SGWorld.ProjectTree.SetVisibility (Layer1ID,gLayer1Visibility);
                    SetLayerRenderMode (1,gLayer1RenderMode);
                    SGWorld.Analysis.SetCompareGroup(Layer1ID, 0);
                }
                if (Layer2ID != -1) {
                    SGWorld.ProjectTree.SetVisibility (Layer2ID,gLayer2Visibility);
                    SetLayerRenderMode (2,gLayer2RenderMode);
                    SGWorld.Analysis.SetCompareGroup(Layer2ID, 0);
                }
                SGWorld.Analysis.HideCompareBox();
                SGWorld.SetParam(450, 0);
                SGWorld.DetachEvent("OnFrame", TEOnFrame);
            }
            SGWorld.Window.RemovePopupByCaption(SGLang.i18n("Text8"));
    }
    catch (e) { if (gDebug)  alert(SGLang.i18n("Text3") + e.message);}
}
    </script>
</body>
</html>
<!--Sig:000000407NQtd2hdjORvG.thlSAqQAzFU6ZpexE8bfZM7CZX.7XgRrWwRxejIjA1ftkAJGvsQJw5ILar4EneN37YT.DeXSJJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <title>ToolTitle</title>
    <script language="javascript" src="../ToolsCommon65.js"></script>
    <link rel="StyleSheet" href="../Style.css" type="text/css">
    <style>
    </style>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="border: 0; overflow: hidden;background-color: #151515" id="Body" onload="Init()" >
        <table border=0 cellPadding=0 CELLSPACING=0 class="s9" width=100%>
        <tr><td class="s9w" align=center>
            <div id="LoadingDiv" style="display:inline"><span class="i18n s9w" >Text32</span>
            </div>
            <div id="CompareDiv" style="display:none">
            <span class="i18n s9w" >Text33</span><br />
            <br />
            <button onclick="LoadSnapshotPopup();" class="MenuButtonSmallWhite i18n" >Text14</button>
            </div>
        </td></tr>
        <tr><td>
            </td></tr>
        </table>
     <object id="SGWorld" classid="CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1" style="visibility: hidden; height: 0"></object>
<script language="JavaScript">
var snapshotAImg;
var gStartPosition;
var gWidth;
var gHeight;
//--------------
// Init
function Init() {
    gStartPosition = SGWorld.Navigate.GetPosition(3);
    window.setTimeout("CaptureA();", 100);
    SGWorld.AttachEvent("OnFrame", onFrame);
 }
//--------------
// CaptureA
 function CaptureA() {
    // try {
        var ratio = SGWorld.Window.Rect.Width / SGWorld.Window.Rect.Height;
         gWidth = Math.min(SGWorld.Window.Rect.Width, 1499);
         gHeight = Math.min(gWidth / ratio, 1499);
         snapshotAImg = SGWorld.Window.GetSnapShot(true, gWidth, gHeight, "JPeg75", 1);
   //  }
   //  catch (err) { alert(err); }
     document.getElementById("LoadingDiv").style.display = "none";
     document.getElementById("CompareDiv").style.display = "inline";
 }
 //---------------
//
 function onFrame() {
     try {
         SGWorld.Navigate.SetPosition(gStartPosition);
     }
     catch (err) { }
 }
//--------------
// LoadSnapshotPopup
function LoadSnapshotPopup()
{
    snapshotAImg = snapshotAImg.replace(".jpg", "#jpg");
    snapshotAImg = snapshotAImg.replace(".tif", "#tif");
    var url = abspath() + "/SnapshotDetectionPopup.html?A=" + encodeURI(snapshotAImg) + "&lang=" + SGLang.getCode();
    var popupMsg1 = SGWorld.Creator.CreatePopupMessage(SGLang.i18n("Text7"), url, 15, 15, gWidth+18 , gHeight+65 , -1);
    popupMsg1.Flags = 2 + 64 + 128;
    SGWorld.Window.ShowPopup(popupMsg1);
}
</script>
</body>
</html>
<!--Sig:00000040CRbVOy3W14WyvOrKDaNrKJ1E0E3J4eXT5SudwnLpaHcGq4s16##u4D4ZDKTMytgD#HW5EbDmb.w35rjt1LrVJhJJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.ico
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotDetectionPopup.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,205 @@
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
    <title>3D View Comparison</title>
<script type="text/javascript" src="range.js"></script>
<script type="text/javascript" src="timer.js"></script>
<script type="text/javascript" src="slider.js"></script>
<script language="javascript" src="../ToolsCommon65.js"></script>
<link type="text/css" rel="StyleSheet" href="slider.css" />
<link type="text/css" rel="StyleSheet" href="../Style.css" />
     <object id="SGWorld" classid="CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1">
    </object>
<script language="jscript" type="text/javascript">
var snapshotAImg;
var snapshotBImg;
var sliderClip;
var lastlevelClip = 0;
var lastleveltran = 0;
var ImageryLayerObj;
var ImageryLayerGeometry;
var ClipAutoOnOff = false;
var Cliptimeout;
//--------------
// Init
function Init() {
    try {
        snapshotAImg = decodeURI(GetParamValue("A", ""));
        snapshotAImg = snapshotAImg.replace("#", ".");
        if (snapshotAImg == "")
        {
            alert (SGLang.i18n("Text3") );
            return;
        }
        CaptureB();
        document.getElementById("SnapshotA").src = snapshotAImg;
        document.getElementById("SnapshotB").src = snapshotBImg;
        sliderClip = new Slider(document.getElementById("sliderClip"), document.getElementById("sliderClipID"));
        sliderClip.setValue(100);
        sliderClip.setMinimum(0);
        sliderClip.setMaximum(100);
        sliderClip.onchange = function () {
            SetClipTrans(sliderClip.getValue());
        };
    }
    catch (e) { alert(SGLang.i18n("Text13") + e.message); }
    document.getElementById("mainTblID").style.visibility = "visible";
    SGWorld.Window.RemovePopupByCaption(SGLang.i18n("Text6"));
}
//--------------
// CaptureB
function CaptureB() {
    try {
        var ratio = SGWorld.Window.Rect.Width / SGWorld.Window.Rect.Height;
        var width = Math.min(SGWorld.Window.Rect.Width, 1499);
        var height = Math.min(width / ratio, 1499);
        snapshotBImg = SGWorld.Window.GetSnapShot(true, width, height, "JPeg75", 0);
    }
    catch (err) {alert (err);}
}
//--------------
// SetTransparency
function SetTransparency(level) {
    try {
        var imgB = document.getElementById("SnapshotB").style;
        imgB.opacity = (level / 100.0);
        imgB.MozOpacity = (level / 100.0);
        imgB.KhtmlOpacity = (level / 100.0);
        imgB.filter = 'alpha(opacity=' + level + ')';
        // document.getElementById("SnapshotA").style.filters.alpha.opacity = level ;
    //    filter: alpha(opacity = 40);
    //    ImageryLayerObj.FillStyle.Color.SetAlpha(level / 100.0);
        document.getElementById("clipSpan").innerHTML = level + "%";
    }
    catch (e) { alert(SGLang.i18n("Text3") + e.message); }
}
//--------------
// SetClip
function SetClip(level) {
    var imgB = document.getElementById("SnapshotB");
    var divB = document.getElementById("snapshotBDiv").style;
    divB.left = 5 + "px";
    divB.top = 40 + "px";
    divB.height = imgB.clientHeight + "px";
    divB.width = imgB.clientWidth + "px";
    imgB.style.marginLeft = 0;
    imgB.style.marginTop = 0;
    if (document.getElementById("clipDirectionID").value == "0") {
        divB.width = imgB.clientWidth * level / 100.0 + "px";
    }
    if (document.getElementById("clipDirectionID").value == "1") {
        divB.width = imgB.clientWidth * level / 100.0 + "px";
        var offset = imgB.clientWidth - imgB.clientWidth * level / 100.0;
        divB.left = offset + 5 + "px";
        imgB.style.marginLeft = -offset + "px";
    }
    if (document.getElementById("clipDirectionID").value == "2") {
        divB.height = imgB.clientHeight * level / 100.0 + "px";
        var offset = imgB.clientHeight - imgB.clientHeight * level / 100.0;
        divB.top = offset + 40 + "px";
        imgB.style.marginTop = -offset + "px";
    }
    if (document.getElementById("clipDirectionID").value == "3") {
        divB.height = Math.max(1, imgB.clientHeight * level / 100.0) + "px";
    }
    document.getElementById("clipSpan").innerHTML = level + "%";
}
//--------------
// SetClipTrans
function SetClipTrans(level) {
    if (document.getElementById("clipDirectionID").value == "4") {   // Transparency
        SetClip(100);
        SetTransparency(level);
        return;
    }
    else {    // Clipping
        SetTransparency(100);
        SetClip(level);
    }
}
//--------------
// DynamicCompare
function DynamicCompare() {
    var url = abspath() + "/ImageComparisonPopup.html";
    var popupMsg = SGWorld.Creator.CreatePopupMessage(SGLang.i18n("Text15"), url, 0, 5, 480, 120, -1);
    popupMsg.Flags = 2 + 64 + 128 + 2048;
    SGWorld.Window.ShowPopup(popupMsg);
    exitTool();
}
//--------------
// exitTool
function exitTool() {
    SGWorld.Window.RemovePopupByCaption(SGLang.i18n("Text31"));
    SGWorld.Window.RemovePopupByCaption(SGLang.i18n("Text16"));
}
</script>
</head>
<body onload="Init();" onunload="exitTool();"  style="overflow:hidden; border: 0;background-color: #151515" leftmargin='2' topmargin="5" marginwidth="0" marginheight="0"  >  <!-- oncontextmenu="return false;">-->
     <table id="mainTblID" cellpadding ="0" cellspacing = "1" border="0" style="visibility:_hidden;" >
                     <tr style="color:White">
                        <td style="color:White" >
                            <!-- <span class="i18n" >Text22</span> -->
                            <select class="SelectDark"  style="vertical-align:middle; margin-left: 10px; margin-right: 10px;" id="clipDirectionID" onchange="SetClipTrans(sliderClip.getValue());">
                                <option value="0" class="i18n">Text23</option>
                                <option value="1" class="i18n">Text24</option>
                                <option value="2" class="i18n">Text25</option>
                                <option value="3" class="i18n">Text26</option>
                                <option value="4" class="i18n">Text21</option>
                            </select>
                        </td>
                        <td  style="width:300px" ><span id="sliderClip" style="display:inline-block;width:300px;"><input type="text" id="sliderClipID" /></span></td>
                        <td> <span id="clipSpan" style="color:White">100%</span></td>
                     </tr>
                     <tr>
                     <td colspan="4">
                        <div id="snapshotADiv" style="position:absolute; left:5px; top:40px; overflow:hidden"><img id="SnapshotA" src="" alt="snapshot A" /></div>
                        <div id="snapshotBDiv" style="position:absolute; left:5px; top:40px; overflow:hidden"><img id="SnapshotB" src="" alt="snapshot B" /></div>
                     </td>
                     </tr>
                     </table>
</body>
</html>
<!--Sig:00000040jawIROQstF#SW88I3cqgrVccg7B7ZM5#fsR3ahoMCCrpe0q35MkCsq0iR58VcsQsThQvZFFTDOltvljgf3mzGYJJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_m.cur
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_wait.cur
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/help.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
<html>
<HEAD>
<TITLE>TerraExplorer Pro - Skyline Software Systems, Inc.</TITLE>
<LINK REL=StyleSheet HREF="../Style.css" TYPE="text/css">
</head>
<body>
        <table border=0 cellPadding=0 CELLSPACING=0 class="s9" width=100%>
        <tr><td class="s12b" align=center>
            Image Comparison tool
        </tD></tr>
        <tr><td>
        <br>
<div class=WordSection1>
<p class=MsoNormal>The Image Comparison tool helps you detect changes between two aerial images of the same location.</p>
<p class=MsoNormal>&nbsp;The Image Comparison provides two useful tools allowing you easy manual detection of changes between two aerial images or between two project scenarios.</p>
<h3>Using the Imagery Layer Swipe & Fade </h3>
<p class=MsoNormal>&nbsp;The Imagery Layer Swipe & Fade tool let you compare the 3D view with and without an Imagery layer</p>
<p class=MsoNormal>&nbsp;1.    Zoom to an area with visible Imagery Layer </p>
<p class=MsoNormal>&nbsp;2.    Click the <b>Swipe & Fade</b> button</p>
<p class=MsoNormal>&nbsp;<b>The Imagery Layer Swipe & Fade tool opens with the following controls:</b></p>
<p class=MsoNormal>&nbsp;1.    Transparency Slider Â– change the transparency slider to control the imagery layer opacity.</p>
<p class=MsoNormal>&nbsp;2.    Clicking the <b>Auto</b> button automatically change the layer opacity value between 0-100%. </p>
<p class=MsoNormal>&nbsp;3.    Clip Slider Â– change the Clip slider to reveal the base terrain under the Imagery Layer.</p>
<p class=MsoNormal>&nbsp;4.    Clicking the <b>Auto</b> button automatically change the clipping value between 0-100%. </p>
<h3>Using the 3D View Comparison</h3>
<p class=MsoNormal>&nbsp;The 3D View Comparison tool let you compare snapshots of two project scenarios. </p>
<p class=MsoNormal>&nbsp;1.    Fly to a location of you desire</p>
<p class=MsoNormal>&nbsp;2.    click <b>Capture A</b></p>
<p class=MsoNormal>&nbsp;3.    Turn on the different layers in the Project Tree</p>
<p class=MsoNormal>&nbsp;4.    click <b>Capture B</b></p>
<p class=MsoNormal>&nbsp;5.    click <b>Compare</b></p>
<p class=MsoNormal>&nbsp;<b>The 3D View Comparison tool opens with the following controls:</b></p>
<p class=MsoNormal>&nbsp;1.    Transparency Slider Â– change the transparency slider to control the Scenario B snapshot transparency and slowly reveal the underneath Scenario A snapshot.</p>
<p class=MsoNormal>&nbsp;2.    Clip Slider Â– change the Clip slider to reveal part of the underneath Scenario A snapshot.</p>
</div>
            </td></tr>
        </table>
</body>
</html>
<!--Sig:00000040wBMfScgAoIdlIHCwC3lwnS1r7iFuHyZ4QlpYXFhnBHwsAJ1E7jEawEowiz5lNc7GWAw6Xzmk5kXQSuDck.5zJvJJ-->
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/range.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
/*----------------------------------------------------------------------------\
|                                Range Class                                  |
|-----------------------------------------------------------------------------|
|                         Created by Erik Arvidsson                           |
|                  (http://webfx.eae.net/contact.html#erik)                   |
|                      For WebFX (http://webfx.eae.net/)                      |
|-----------------------------------------------------------------------------|
| Used to  model the data  used  when working  with  sliders,  scrollbars and |
| progress bars.  Based  on  the  ideas of  the javax.swing.BoundedRangeModel |
| interface  defined  by  Sun  for  Java;   http://java.sun.com/products/jfc/ |
| swingdoc-api-1.0.3/com/sun/java/swing/BoundedRangeModel.html                |
|-----------------------------------------------------------------------------|
|                Copyright (c) 2002, 2005, 2006 Erik Arvidsson                |
|-----------------------------------------------------------------------------|
| Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| use this file except in compliance with the License.  You may obtain a copy |
| of the License at http://www.apache.org/licenses/LICENSE-2.0                |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| Unless  required  by  applicable law or  agreed  to  in  writing,  software |
| distributed under the License is distributed on an  "AS IS" BASIS,  WITHOUT |
| WARRANTIES OR  CONDITIONS OF ANY KIND,  either express or implied.  See the |
| License  for the  specific language  governing permissions  and limitations |
| under the License.                                                          |
|-----------------------------------------------------------------------------|
| 2002-10-14 | Original version released                                      |
| 2005-10-27 | Use Math.round instead of Math.floor                           |
| 2006-05-28 | Changed license to Apache Software License 2.0.                |
|-----------------------------------------------------------------------------|
| Created 2002-10-14 | All changes are in the log above. | Updated 2006-05-28 |
\----------------------------------------------------------------------------*/
function Range() {
    this._value = 0;
    this._minimum = 0;
    this._maximum = 100;
    this._extent = 0;
    this._isChanging = false;
}
Range.prototype.setValue = function (value) {
    value = Math.round(parseFloat(value));
    if (isNaN(value)) return;
    if (this._value != value) {
        if (value + this._extent > this._maximum)
            this._value = this._maximum - this._extent;
        else if (value < this._minimum)
            this._value = this._minimum;
        else
            this._value = value;
        if (!this._isChanging && typeof this.onchange == "function")
             this.onchange();
    }
};
Range.prototype.getValue = function () {
    return this._value;
};
Range.prototype.setExtent = function (extent) {
    if (this._extent != extent) {
        if (extent < 0)
            this._extent = 0;
        else if (this._value + extent > this._maximum)
            this._extent = this._maximum - this._value;
        else
            this._extent = extent;
        if (!this._isChanging && typeof this.onchange == "function")
            this.onchange();
    }
};
Range.prototype.getExtent = function () {
    return this._extent;
};
Range.prototype.setMinimum = function (minimum) {
    if (this._minimum != minimum) {
        var oldIsChanging = this._isChanging;
        this._isChanging = true;
        this._minimum = minimum;
        if (minimum > this._value)
            this.setValue(minimum);
        if (minimum > this._maximum) {
            this._extent = 0;
            this.setMaximum(minimum);
            this.setValue(minimum)
        }
        if (minimum + this._extent > this._maximum)
            this._extent = this._maximum - this._minimum;
        this._isChanging = oldIsChanging;
        if (!this._isChanging && typeof this.onchange == "function")
            this.onchange();
    }
};
Range.prototype.getMinimum = function () {
    return this._minimum;
};
Range.prototype.setMaximum = function (maximum) {
    if (this._maximum != maximum) {
        var oldIsChanging = this._isChanging;
        this._isChanging = true;
        this._maximum = maximum;
        if (maximum < this._value)
            this.setValue(maximum - this._extent);
        if (maximum < this._minimum) {
            this._extent = 0;
            this.setMinimum(maximum);
            this.setValue(this._maximum);
        }
        if (maximum < this._minimum + this._extent)
            this._extent = this._maximum - this._minimum;
        if (maximum < this._value + this._extent)
            this._extent = this._maximum - this._value;
        this._isChanging = oldIsChanging;
        if (!this._isChanging && typeof this.onchange == "function")
            this.onchange();
    }
};
Range.prototype.getMaximum = function () {
    return this._maximum;
};
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
.dynamic-slider-control {
    position:            relative;
/*    background-color:    ThreeDFace; */
    -moz-user-focus:    normal;
    -moz-user-select:    none;
    cursor:                default;
}
.horizontal {
    width:                200px;
    height:                27px;
}
.vertical {
    width:                29px;
    height:                200px;
}
.dynamic-slider-control input {
    display:    none;
}
.dynamic-slider-control .handle {
    position:            absolute;
    font-size:            1px;
    overflow:            hidden;
    -moz-user-select:    none;
    cursor:                default;
}
.dynamic-slider-control.horizontal .handle {
    width:                11px;
    height:                21px;
    background-image:    url("images/slider.handle.horizontal.png");
}
.dynamic-slider-control.horizontal .handle div {}
.dynamic-slider-control.horizontal .handle.hover {
    background-image:    url("images/slider.handle.horizontal.hover.png");
}
.dynamic-slider-control.vertical .handle {
    width:                25px;
    height:                13px;
    background-image:    url("images/slider.handle.vertical.png");
}
.dynamic-slider-control.vertical .handle.hover {
    background-image:    url("images/slider.handle.vertical.hover.png");
}
.dynamic-slider-control .line {
    position:            absolute;
    font-size:            0.01mm;
    overflow:            hidden;
    border:                1px solid;
    border-color:        ThreeDShadow ThreeDHighlight
                        ThreeDHighlight ThreeDShadow;
    -moz-border-radius:    50%;
/*    behavior:            url("css/boxsizing.htc"); /* ie path bug */
    box-sizing:            content-box;
    -moz-box-sizing:    content-box;
}
.dynamic-slider-control.vertical .line {
    width:                2px;
}
.dynamic-slider-control.horizontal .line {
    height:                2px;
}
.dynamic-slider-control .line div {
    display:    none;
}
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,489 @@
/*----------------------------------------------------------------------------\
|                                Slider 1.02                                  |
|-----------------------------------------------------------------------------|
|                         Created by Erik Arvidsson                           |
|                  (http://webfx.eae.net/contact.html#erik)                   |
|                      For WebFX (http://webfx.eae.net/)                      |
|-----------------------------------------------------------------------------|
| A  slider  control that  degrades  to an  input control  for non  supported |
| browsers.                                                                   |
|-----------------------------------------------------------------------------|
|                Copyright (c) 2002, 2003, 2006 Erik Arvidsson                |
|-----------------------------------------------------------------------------|
| Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| use this file except in compliance with the License.  You may obtain a copy |
| of the License at http://www.apache.org/licenses/LICENSE-2.0                |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| Unless  required  by  applicable law or  agreed  to  in  writing,  software |
| distributed under the License is distributed on an  "AS IS" BASIS,  WITHOUT |
| WARRANTIES OR  CONDITIONS OF ANY KIND,  either express or implied.  See the |
| License  for the  specific language  governing permissions  and limitations |
| under the License.                                                          |
|-----------------------------------------------------------------------------|
| Dependencies: timer.js - an OO abstraction of timers                        |
|               range.js - provides the data model for the slider             |
|               winclassic.css or any other css file describing the look      |
|-----------------------------------------------------------------------------|
| 2002-10-14 | Original version released                                      |
| 2003-03-27 | Added a test in the constructor for missing oElement arg       |
| 2003-11-27 | Only use mousewheel when focused                               |
| 2006-05-28 | Changed license to Apache Software License 2.0.                |
|-----------------------------------------------------------------------------|
| Created 2002-10-14 | All changes are in the log above. | Updated 2006-05-28 |
\----------------------------------------------------------------------------*/
Slider.isSupported = typeof document.createElement != "undefined" &&
    typeof document.documentElement != "undefined" &&
    typeof document.documentElement.offsetWidth == "number";
function Slider(oElement, oInput, sOrientation) {
    if (!oElement) return;
    this._orientation = sOrientation || "horizontal";
    this._range = new Range();
    this._range.setExtent(0);
    this._blockIncrement = 10;
    this._unitIncrement = 1;
    this._timer = new Timer(100);
    if (Slider.isSupported && oElement) {
        this.document = oElement.ownerDocument || oElement.document;
        this.element = oElement;
        this.element.slider = this;
        this.element.unselectable = "on";
        // add class name tag to class name
        this.element.className = this._orientation + " " + this.classNameTag + " " + this.element.className;
        // create line
        this.line = this.document.createElement("DIV");
        this.line.className = "line";
        this.line.unselectable = "on";
        this.line.appendChild(this.document.createElement("DIV"));
        this.element.appendChild(this.line);
        // create handle
        this.handle = this.document.createElement("DIV");
        this.handle.className = "handle";
        this.handle.unselectable = "on";
        this.handle.appendChild(this.document.createElement("DIV"));
        this.handle.firstChild.appendChild(
            this.document.createTextNode(String.fromCharCode(160)));
        this.element.appendChild(this.handle);
    }
    this.input = oInput;
    // events
    var oThis = this;
    this._range.onchange = function () {
        oThis.recalculate();
        if (typeof oThis.onchange == "function")
            oThis.onchange();
    };
    if (Slider.isSupported && oElement) {
        this.element.onfocus        = Slider.eventHandlers.onfocus;
        this.element.onblur            = Slider.eventHandlers.onblur;
        this.element.onmousedown    = Slider.eventHandlers.onmousedown;
        this.element.onmouseover    = Slider.eventHandlers.onmouseover;
        this.element.onmouseout        = Slider.eventHandlers.onmouseout;
        this.element.onkeydown        = Slider.eventHandlers.onkeydown;
        this.element.onkeypress        = Slider.eventHandlers.onkeypress;
        this.element.onmousewheel    = Slider.eventHandlers.onmousewheel;
        this.handle.onselectstart    =
        this.element.onselectstart    = function () { return false; };
        this._timer.ontimer = function () {
            oThis.ontimer();
        };
        // extra recalculate for ie
        window.setTimeout(function() {
            oThis.recalculate();
        }, 1);
    }
    else {
        this.input.onchange = function (e) {
            oThis.setValue(oThis.input.value);
        };
    }
}
Slider.eventHandlers = {
    // helpers to make events a bit easier
    getEvent:    function (e, el) {
        if (!e) {
            if (el)
                e = el.document.parentWindow.event;
            else
                e = window.event;
        }
        if (!e.srcElement) {
            var el = e.target;
            while (el != null && el.nodeType != 1)
                el = el.parentNode;
            e.srcElement = el;
        }
        if (typeof e.offsetX == "undefined") {
            e.offsetX = e.layerX;
            e.offsetY = e.layerY;
        }
        return e;
    },
    getDocument:    function (e) {
        if (e.target)
            return e.target.ownerDocument;
        return e.srcElement.document;
    },
    getSlider:    function (e) {
        var el = e.target || e.srcElement;
        while (el != null && el.slider == null)    {
            el = el.parentNode;
        }
        if (el)
            return el.slider;
        return null;
    },
    getLine:    function (e) {
        var el = e.target || e.srcElement;
        while (el != null && el.className != "line")    {
            el = el.parentNode;
        }
        return el;
    },
    getHandle:    function (e) {
        var el = e.target || e.srcElement;
        var re = /handle/;
        while (el != null && !re.test(el.className))    {
            el = el.parentNode;
        }
        return el;
    },
    // end helpers
    onfocus:    function (e) {
        var s = this.slider;
        s._focused = true;
        s.handle.className = "handle hover";
    },
    onblur:    function (e) {
        var s = this.slider
        s._focused = false;
        s.handle.className = "handle";
    },
    onmouseover:    function (e) {
        e = Slider.eventHandlers.getEvent(e, this);
        var s = this.slider;
        if (e.srcElement == s.handle)
            s.handle.className = "handle hover";
    },
    onmouseout:    function (e) {
        e = Slider.eventHandlers.getEvent(e, this);
        var s = this.slider;
        if (e.srcElement == s.handle && !s._focused)
            s.handle.className = "handle";
    },
    onmousedown:    function (e) {
        e = Slider.eventHandlers.getEvent(e, this);
        var s = this.slider;
        if (s.element.focus)
            s.element.focus();
        Slider._currentInstance = s;
        var doc = s.document;
        if (doc.addEventListener) {
            doc.addEventListener("mousemove", Slider.eventHandlers.onmousemove, true);
            doc.addEventListener("mouseup", Slider.eventHandlers.onmouseup, true);
        }
        else if (doc.attachEvent) {
            doc.attachEvent("onmousemove", Slider.eventHandlers.onmousemove);
            doc.attachEvent("onmouseup", Slider.eventHandlers.onmouseup);
            doc.attachEvent("onlosecapture", Slider.eventHandlers.onmouseup);
            s.element.setCapture();
        }
        if (Slider.eventHandlers.getHandle(e)) {    // start drag
            Slider._sliderDragData = {
                screenX:    e.screenX,
                screenY:    e.screenY,
                dx:            e.screenX - s.handle.offsetLeft,
                dy:            e.screenY - s.handle.offsetTop,
                startValue:    s.getValue(),
                slider:        s
            };
        }
        else {
            var lineEl = Slider.eventHandlers.getLine(e);
            s._mouseX = e.offsetX + (lineEl ? s.line.offsetLeft : 0);
            s._mouseY = e.offsetY + (lineEl ? s.line.offsetTop : 0);
            s._increasing = null;
            s.ontimer();
        }
    },
    onmousemove:    function (e) {
        e = Slider.eventHandlers.getEvent(e, this);
        if (Slider._sliderDragData) {    // drag
            var s = Slider._sliderDragData.slider;
            var boundSize = s.getMaximum() - s.getMinimum();
            var size, pos, reset;
            if (s._orientation == "horizontal") {
                size = s.element.offsetWidth - s.handle.offsetWidth;
                pos = e.screenX - Slider._sliderDragData.dx;
                reset = Math.abs(e.screenY - Slider._sliderDragData.screenY) > 100;
            }
            else {
                size = s.element.offsetHeight - s.handle.offsetHeight;
                pos = s.element.offsetHeight - s.handle.offsetHeight -
                    (e.screenY - Slider._sliderDragData.dy);
                reset = Math.abs(e.screenX - Slider._sliderDragData.screenX) > 100;
            }
            s.setValue(reset ? Slider._sliderDragData.startValue :
                        s.getMinimum() + boundSize * pos / size);
            return false;
        }
        else {
            var s = Slider._currentInstance;
            if (s != null) {
                var lineEl = Slider.eventHandlers.getLine(e);
                s._mouseX = e.offsetX + (lineEl ? s.line.offsetLeft : 0);
                s._mouseY = e.offsetY + (lineEl ? s.line.offsetTop : 0);
            }
        }
    },
    onmouseup:    function (e) {
        e = Slider.eventHandlers.getEvent(e, this);
        var s = Slider._currentInstance;
        var doc = s.document;
        if (doc.removeEventListener) {
            doc.removeEventListener("mousemove", Slider.eventHandlers.onmousemove, true);
            doc.removeEventListener("mouseup", Slider.eventHandlers.onmouseup, true);
        }
        else if (doc.detachEvent) {
            doc.detachEvent("onmousemove", Slider.eventHandlers.onmousemove);
            doc.detachEvent("onmouseup", Slider.eventHandlers.onmouseup);
            doc.detachEvent("onlosecapture", Slider.eventHandlers.onmouseup);
            s.element.releaseCapture();
        }
        if (Slider._sliderDragData) {    // end drag
            Slider._sliderDragData = null;
        }
        else {
            s._timer.stop();
            s._increasing = null;
        }
        Slider._currentInstance = null;
    },
    onkeydown:    function (e) {
        e = Slider.eventHandlers.getEvent(e, this);
        //var s = Slider.eventHandlers.getSlider(e);
        var s = this.slider;
        var kc = e.keyCode;
        switch (kc) {
            case 33:    // page up
                s.setValue(s.getValue() + s.getBlockIncrement());
                break;
            case 34:    // page down
                s.setValue(s.getValue() - s.getBlockIncrement());
                break;
            case 35:    // end
                s.setValue(s.getOrientation() == "horizontal" ?
                    s.getMaximum() :
                    s.getMinimum());
                break;
            case 36:    // home
                s.setValue(s.getOrientation() == "horizontal" ?
                    s.getMinimum() :
                    s.getMaximum());
                break;
            case 38:    // up
            case 39:    // right
                s.setValue(s.getValue() + s.getUnitIncrement());
                break;
            case 37:    // left
            case 40:    // down
                s.setValue(s.getValue() - s.getUnitIncrement());
                break;
        }
        if (kc >= 33 && kc <= 40) {
            return false;
        }
    },
    onkeypress:    function (e) {
        e = Slider.eventHandlers.getEvent(e, this);
        var kc = e.keyCode;
        if (kc >= 33 && kc <= 40) {
            return false;
        }
    },
    onmousewheel:    function (e) {
        e = Slider.eventHandlers.getEvent(e, this);
        var s = this.slider;
        if (s._focused) {
            s.setValue(s.getValue() + e.wheelDelta / 120 * s.getUnitIncrement());
            // windows inverts this on horizontal sliders. That does not
            // make sense to me
            return false;
        }
    }
};
Slider.prototype.classNameTag = "dynamic-slider-control",
Slider.prototype.setValue = function (v) {
    this._range.setValue(v);
    this.input.value = this.getValue();
};
Slider.prototype.getValue = function () {
    return this._range.getValue();
};
Slider.prototype.setMinimum = function (v) {
    this._range.setMinimum(v);
    this.input.value = this.getValue();
};
Slider.prototype.getMinimum = function () {
    return this._range.getMinimum();
};
Slider.prototype.setMaximum = function (v) {
    this._range.setMaximum(v);
    this.input.value = this.getValue();
};
Slider.prototype.getMaximum = function () {
    return this._range.getMaximum();
};
Slider.prototype.setUnitIncrement = function (v) {
    this._unitIncrement = v;
};
Slider.prototype.getUnitIncrement = function () {
    return this._unitIncrement;
};
Slider.prototype.setBlockIncrement = function (v) {
    this._blockIncrement = v;
};
Slider.prototype.getBlockIncrement = function () {
    return this._blockIncrement;
};
Slider.prototype.getOrientation = function () {
    return this._orientation;
};
Slider.prototype.setOrientation = function (sOrientation) {
    if (sOrientation != this._orientation) {
        if (Slider.isSupported && this.element) {
            // add class name tag to class name
            this.element.className = this.element.className.replace(this._orientation,
                                    sOrientation);
        }
        this._orientation = sOrientation;
        this.recalculate();
    }
};
Slider.prototype.recalculate = function() {
    if (!Slider.isSupported || !this.element) return;
    var w = this.element.offsetWidth;
    var h = this.element.offsetHeight;
    var hw = this.handle.offsetWidth;
    var hh = this.handle.offsetHeight;
    var lw = this.line.offsetWidth;
    var lh = this.line.offsetHeight;
    // this assumes a border-box layout
    if (this._orientation == "horizontal") {
        this.handle.style.left = (w - hw) * (this.getValue() - this.getMinimum()) /
            (this.getMaximum() - this.getMinimum()) + "px";
        this.handle.style.top = (h - hh) / 2 + "px";
        this.line.style.top = (h - lh) / 2 + "px";
        this.line.style.left = hw / 2 + "px";
        //this.line.style.right = hw / 2 + "px";
        this.line.style.width = Math.max(0, w - hw - 2)+ "px";
        this.line.firstChild.style.width = Math.max(0, w - hw - 4)+ "px";
    }
    else {
        this.handle.style.left = (w - hw) / 2 + "px";
        this.handle.style.top = h - hh - (h - hh) * (this.getValue() - this.getMinimum()) /
            (this.getMaximum() - this.getMinimum()) + "px";
        this.line.style.left = (w - lw) / 2 + "px";
        this.line.style.top = hh / 2 + "px";
        this.line.style.height = Math.max(0, h - hh - 2) + "px";    //hard coded border width
        //this.line.style.bottom = hh / 2 + "px";
        this.line.firstChild.style.height = Math.max(0, h - hh - 4) + "px";    //hard coded border width
    }
};
Slider.prototype.ontimer = function () {
    var hw = this.handle.offsetWidth;
    var hh = this.handle.offsetHeight;
    var hl = this.handle.offsetLeft;
    var ht = this.handle.offsetTop;
    if (this._orientation == "horizontal") {
        if (this._mouseX > hl + hw &&
            (this._increasing == null || this._increasing)) {
            this.setValue(this.getValue() + this.getBlockIncrement());
            this._increasing = true;
        }
        else if (this._mouseX < hl &&
            (this._increasing == null || !this._increasing)) {
            this.setValue(this.getValue() - this.getBlockIncrement());
            this._increasing = false;
        }
    }
    else {
        if (this._mouseY > ht + hh &&
            (this._increasing == null || !this._increasing)) {
            this.setValue(this.getValue() - this.getBlockIncrement());
            this._increasing = false;
        }
        else if (this._mouseY < ht &&
            (this._increasing == null || this._increasing)) {
            this.setValue(this.getValue() + this.getBlockIncrement());
            this._increasing = true;
        }
    }
    this._timer.start();
};
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/timer.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
/*----------------------------------------------------------------------------\
|                                 Timer Class                                 |
|-----------------------------------------------------------------------------|
|                         Created by Erik Arvidsson                           |
|                  (http://webfx.eae.net/contact.html#erik)                   |
|                      For WebFX (http://webfx.eae.net/)                      |
|-----------------------------------------------------------------------------|
| Object Oriented Encapsulation  of setTimeout  fires ontimer when the  timer |
| is triggered. Does not work in IE 5.00                                      |
|-----------------------------------------------------------------------------|
|                   Copyright (c) 2002, 2006 Erik Arvidsson                   |
|-----------------------------------------------------------------------------|
| Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| use this file except in compliance with the License.  You may obtain a copy |
| of the License at http://www.apache.org/licenses/LICENSE-2.0                |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| Unless  required  by  applicable law or  agreed  to  in  writing,  software |
| distributed under the License is distributed on an  "AS IS" BASIS,  WITHOUT |
| WARRANTIES OR  CONDITIONS OF ANY KIND,  either express or implied.  See the |
| License  for the  specific language  governing permissions  and limitations |
| under the License.                                                          |
|-----------------------------------------------------------------------------|
| 2002-10-14 | Original version released                                      |
| 2006-05-28 | Changed license to Apache Software License 2.0.                |
|-----------------------------------------------------------------------------|
| Created 2002-10-14 | All changes are in the log above. | Updated 2006-05-28 |
\----------------------------------------------------------------------------*/
function Timer(nPauseTime) {
    this._pauseTime = typeof nPauseTime == "undefined" ? 1000 : nPauseTime;
    this._timer = null;
    this._isStarted = false;
}
Timer.prototype.start = function () {
    if (this.isStarted())
        this.stop();
    var oThis = this;
    this._timer = window.setTimeout(function () {
        if (typeof oThis.ontimer == "function")
            oThis.ontimer();
    }, this._pauseTime);
    this._isStarted = false;
};
Timer.prototype.stop = function () {
    if (this._timer != null)
        window.clearTimeout(this._timer);
    this._isStarted = false;
};
Timer.prototype.isStarted = function () {
    return this._isStarted;
};
Timer.prototype.getPauseTime = function () {
    return this._pauseTime;
};
Timer.prototype.setPauseTime = function (nPauseTime) {
    this._pauseTime = nPauseTime;
};
Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,642 @@
/*!
 * 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}};
/*
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: "0",
    /**
     * 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('&');
        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);
});
//-------------------
// 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);
}
//********************************************
//----------
// DrawPolyLButtonDown
//----------
function DrawPolyLButtonDown(Flags, X, Y) {
    var CursorCoord = SGWorld.Window.pixelToWorld(X, Y);
    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, 0, CursorCoord.Position.x, CursorCoord.Position.y, 0])
        gPolyObj = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), 2, -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;
                SGWorld.Creator.DeleteObject(gPolyObj.ID);
                // Creating the polygon
                var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, 0, CursorCoord.Position.x, CursorCoord.Position.y, 0, CursorCoord.Position.x, CursorCoord.Position.y, 0])
                gPolyObj = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), 2, -1, gPolygonText);
                gPolyObj.LineStyle.Width = -2;
                gPolyObj.Terrain.GroundObject = true;
                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 = 0;
                gPolyObj.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, 0);
            }
        }
        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 = 0;
            gPolyObj.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, 0);
        }
    }
    if (gDrawPolyClick != null)
        gDrawPolyClick(gPolyObj.Geometry, gPolyObj.ObjectType);
    return true;
}
//-----------
// onFrame
//-----------
function DrawPolyOnFrame() {
    if (gPolyObj != null) {
        try {
            var mouseInfo = SGWorld.Window.GetMouseInfo()
            var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y);
            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 = 0;
            }
            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 = 0;
            }
        }
        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, null);
    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 = featureGroup.GetProperty("Altitude Method")
            for (var j = 0; j < featureGroup.Count; j++) {
                var ret = callbackFunc(featureGroup.Item(j).Geometry, featureGroup.GeometryType, altitudeType);
                if (!ret)
                    return;
            }
        }
    }
    else {
        var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
        while (node != -1 && node != 0) {
            if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))
                searchGeometriesLeaf2(node, callbackFunc);
            else {
                var Object = SGWorld.ProjectTree.GetObject(node);
                if (Object != null) {
                    var altitudeType = Object.Position.AltitudeType;
                    var ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType);
                    if (!ret)
                        return;
                }
            }
            node = SGWorld.ProjectTree.GetNextItem(node, 13);
        }
    }
}
Terra.YaoGan.Web/Terra.YaoGan.Web/Terra.YaoGan.Web.csproj
@@ -13,7 +13,7 @@
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Terra.YaoGan.Web</RootNamespace>
    <AssemblyName>Terra.YaoGan.Web</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <UseIISExpress>true</UseIISExpress>
    <Use64BitIISExpress />
    <IISExpressSSLPort>44302</IISExpressSSLPort>
@@ -23,6 +23,7 @@
    <UseGlobalApplicationHostFile />
    <NuGetPackageImportStamp>
    </NuGetPackageImportStamp>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
@@ -44,25 +45,24 @@
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
    <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="System.Web.DynamicData" />
    <Reference Include="System.Web.Entity" />
    <Reference Include="System.Web.ApplicationServices" />
    <Reference Include="System.ComponentModel.DataAnnotations" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Core" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="System.Web.Extensions" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Web" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Configuration" />
    <Reference Include="System.Web.Services" />
    <Reference Include="System.EnterpriseServices" />
    <Reference Include="System.Xml.Linq" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform">
@@ -1039,6 +1039,134 @@
    <Content Include="mp4\北宝5号监控\2024.4.2.mp4" />
    <Content Include="mp4\北宝6号监控\2024.3.21.mp4" />
    <Content Include="mp4\北宝6号监控\2024.4.2.mp4" />
    <Content Include="Resources\ImageComparison\1033\help.html" />
    <Content Include="Resources\ImageComparison\1033\Lang.js" />
    <Content Include="Resources\ImageComparison\2052\help.html" />
    <Content Include="Resources\ImageComparison\2052\Lang.js" />
    <Content Include="Resources\ImageComparison\BIMComparisonPopup.html" />
    <Content Include="Resources\ImageComparison\cursor_m.cur" />
    <Content Include="Resources\ImageComparison\cursor_wait.cur" />
    <Content Include="Resources\ImageComparison\help.html" />
    <Content Include="Resources\ImageComparison\ImageComparison.html" />
    <Content Include="Resources\ImageComparison\ImageComparison.ico" />
    <Content Include="Resources\ImageComparison\ImageComparisonPopup.html" />
    <Content Include="Resources\ImageComparison\Images\autoOff.gif" />
    <Content Include="Resources\ImageComparison\Images\autoOff.png" />
    <Content Include="Resources\ImageComparison\Images\autoOn.gif" />
    <Content Include="Resources\ImageComparison\Images\autoOn.png" />
    <Content Include="Resources\ImageComparison\Images\loading.gif" />
    <Content Include="Resources\ImageComparison\Images\slider.handle.horizontal.hover.png" />
    <Content Include="Resources\ImageComparison\Images\slider.handle.horizontal.png" />
    <Content Include="Resources\ImageComparison\Images\slider.handle.vertical.hover.png" />
    <Content Include="Resources\ImageComparison\Images\slider.handle.vertical.png" />
    <Content Include="Resources\ImageComparison\Images\space.gif" />
    <Content Include="Resources\ImageComparison\Images\SwipeIcon.png" />
    <Content Include="Resources\ImageComparison\Images\ZoomIn.gif" />
    <Content Include="Resources\ImageComparison\Images\ZoomOut.gif" />
    <Content Include="Resources\ImageComparison\Lang.js" />
    <Content Include="Resources\ImageComparison\MeshComparisonPopup.html" />
    <Content Include="Resources\ImageComparison\range.js" />
    <Content Include="Resources\ImageComparison\slider.css" />
    <Content Include="Resources\ImageComparison\slider.js" />
    <Content Include="Resources\ImageComparison\SnapshotComparison.html" />
    <Content Include="Resources\ImageComparison\SnapshotComparison.ico" />
    <Content Include="Resources\ImageComparison\SnapshotDetectionPopup.html" />
    <Content Include="Resources\ImageComparison\timer.js" />
    <Content Include="Resources\jquery\css\dark-hive\jquery-ui-1.10.4.custom.css" />
    <Content Include="Resources\jquery\css\dark-hive\jquery-ui-1.10.4.custom.min.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.bootstrap.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.bootstrap.min.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.bootstrap4.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.bootstrap4.min.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.foundation.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.foundation.min.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.jqueryui.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.jqueryui.min.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.semanticui.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\css\dataTables.semanticui.min.css" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\images\sort_asc.png" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\images\sort_asc_disabled.png" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\images\sort_both.png" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\images\sort_desc.png" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\images\sort_desc_disabled.png" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.bootstrap.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.bootstrap.min.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.bootstrap4.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.bootstrap4.min.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.foundation.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.foundation.min.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.jqueryui.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.jqueryui.min.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.semanticui.js" />
    <Content Include="Resources\jquery\DataTable\DataTables-1.10.18\js\dataTables.semanticui.min.js" />
    <Content Include="Resources\jquery\DataTable\datatables.css" />
    <Content Include="Resources\jquery\DataTable\datatables.js" />
    <Content Include="Resources\jquery\jquery-1.10.2.js" />
    <Content Include="Resources\jquery\jquery-3.1.1.min.js" />
    <Content Include="Resources\jquery\jquery-ui-1.10.4.custom.js" />
    <Content Include="Resources\jquery\jquery-ui-1.10.4.custom.min.js" />
    <Content Include="Resources\jquery\jquery-ui-Override.css" />
    <Content Include="Resources\jquery\jquery.flot.min.js" />
    <Content Include="Resources\jquery\jquery.flot.navigate.min.js" />
    <Content Include="Resources\jquery\jquery.flot.resize.min.js" />
    <Content Include="Resources\jquery\jquery.flot.selection.min.js" />
    <Content Include="Resources\jquery\jquery.flot.symbol.min.js" />
    <Content Include="Resources\jquery\jquery.min.js" />
    <Content Include="Resources\jquery\jscolor\arrow.gif" />
    <Content Include="Resources\jquery\jscolor\cross.gif" />
    <Content Include="Resources\jquery\jscolor\hs.png" />
    <Content Include="Resources\jquery\jscolor\hv.png" />
    <Content Include="Resources\jquery\jscolor\jscolor.js" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\changelog.txt" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\button_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\button_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\button_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\button_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\flip_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\flip_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\flip_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\flip_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\fullpage_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\fullpage_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\fullpage_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\fullpage_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\home_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\home_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\home_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\home_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\next_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\next_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\next_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\next_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\previous_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\previous_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\previous_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\previous_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\rotateleft_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\rotateleft_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\rotateleft_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\rotateleft_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\rotateright_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\rotateright_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\rotateright_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\rotateright_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\zoomin_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\zoomin_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\zoomin_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\zoomin_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\zoomout_grouphover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\zoomout_hover.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\zoomout_pressed.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\images\zoomout_rest.png" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\LICENSE.txt" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\openseadragon.js" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\openseadragon.min.js" />
    <Content Include="Resources\jquery\range.js" />
    <Content Include="Resources\jquery\slider.css" />
    <Content Include="Resources\jquery\slider.js" />
    <Content Include="Resources\jquery\timer.js" />
    <Content Include="Resources\jquery\ToolsCommon-NoJQ.js" />
    <Content Include="Resources\ToolsCommon.js" />
    <Content Include="src\css\default.css" />
    <Content Include="src\css\index.css" />
    <Content Include="src\css\loading.css" />
@@ -1358,6 +1486,8 @@
    <Content Include="src\js\plugin\layui\font\iconfont.ttf" />
    <Content Include="src\js\plugin\layui\font\iconfont.woff" />
    <Content Include="src\js\plugin\layui\font\iconfont.woff2" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\openseadragon.js.map" />
    <Content Include="Resources\jquery\openseadragon-bin-2.4.2\openseadragon.min.js.map" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Terra.YaoGan.Common\Terra.YaoGan.Common.csproj">
Terra.YaoGan.Web/Terra.YaoGan.Web/Web.config
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0"?>
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.7.2" />
        <httpRuntime targetFramework="4.7.2" />
    <compilation debug="true" targetFramework="4.0"/>
    <httpRuntime/>
    </system.web>
    <connectionStrings>
        <!--<add name="connString" connectionString="Server=127.0.0.1;DataBase=DDYuan;Uid=sa;Pwd=XN@qhch"/>-->
Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/fly/128.fly
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/±±±¦3ºÅ¼à¿Ø/2024.3.21.mp4
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/±±±¦3ºÅ¼à¿Ø/2024.4.2.mp4
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/±±±¦4ºÅ¼à¿Ø/2024.3.21.mp4
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/±±±¦4ºÅ¼à¿Ø/2024.4.2.mp4
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/±±±¦5ºÅ¼à¿Ø/2024.3.23.mp4
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/±±±¦5ºÅ¼à¿Ø/2024.4.2.mp4
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/±±±¦6ºÅ¼à¿Ø/2024.3.21.mp4
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/±±±¦6ºÅ¼à¿Ø/2024.4.2.mp4
Binary files differ
Terra.YaoGan.Web/Terra.YaoGan.Web/packages.config
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net472" />
  <package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net472" requireReinstallation="true" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />
</packages>