From 412022ac7410aa48a675d08c9e0fa2f57e74dab7 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 03 四月 2024 20:12:00 +0800 Subject: [PATCH] 1 --- Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Lang.js | 62 + Terra.YaoGan.Web/Terra.YaoGan.Web/Web.config | 44 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_wait.cur | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.ico | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/help.html | 54 Terra.YaoGan.Web/Terra.YaoGan.Web/fly/128.fly | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparisonPopup.html | 286 ++++ Terra.YaoGan.Web/Terra.YaoGan.Model/Terra.YaoGan.Model.csproj | 3 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/Lang.js | 62 + Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/help.html | 38 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.hover.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/timer.js | 62 + Terra.YaoGan.Web/Terra.YaoGan.Service/Terra.YaoGan.Service.csproj | 3 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/SwipeIcon.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.js | 489 ++++++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/MeshComparisonPopup.html | 446 +++++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon.js | 642 +++++++++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/loading.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.html | 140 ++ Terra.YaoGan.Web/Terra.YaoGan.Web/Terra.YaoGan.Web.csproj | 142 ++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/space.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.hover.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_m.cur | 0 Terra.YaoGan.Web/Terra.YaoGan.Common/Terra.YaoGan.Common.csproj | 3 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/help.html | 52 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomIn.gif | 0 /dev/null | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotDetectionPopup.html | 205 +++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.ico | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.html | 88 + Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/Lang.js | 62 + Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/range.js | 132 ++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/BIMComparisonPopup.html | 383 ++++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.css | 75 + Terra.YaoGan.Web/Terra.YaoGan.Web/packages.config | 4 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomOut.gif | 0 43 files changed, 3,444 insertions(+), 33 deletions(-) diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Common/Terra.YaoGan.Common.csproj b/Terra.YaoGan.Web/Terra.YaoGan.Common/Terra.YaoGan.Common.csproj index 5a14a0a..8146da8 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Common/Terra.YaoGan.Common.csproj +++ b/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> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Model/Terra.YaoGan.Model.csproj b/Terra.YaoGan.Web/Terra.YaoGan.Model/Terra.YaoGan.Model.csproj index bff7b7d..2aaa035 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Model/Terra.YaoGan.Model.csproj +++ b/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> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Service/Terra.YaoGan.Service.csproj b/Terra.YaoGan.Web/Terra.YaoGan.Service/Terra.YaoGan.Service.csproj index 2e6d9b2..920abcd 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Service/Terra.YaoGan.Service.csproj +++ b/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> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/Lang.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/Lang.js new file mode 100644 index 0000000..e26bb28 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/Lang.js @@ -0,0 +1,62 @@ +锘縎GLang.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" +}); \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/help.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/1033/help.html new file mode 100644 index 0000000..d6225ae --- /dev/null +++ b/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> 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> The Imagery Layer Swipe & Fade tool let you + compare the 3D view with and without an Imagery layer</P> + <P class=MsoNormal> 1. Zoom to an area with visible Imagery Layer +</P> + <P class=MsoNormal> 2. Click the <B>Swipe & Fade</B> button</P> + <P class=MsoNormal> <B>The Imagery Layer Swipe & Fade tool opens + with the following controls:</B></P> + <P class=MsoNormal> 1. Transparency Slider 鈥� change the transparency + slider to control the imagery layer opacity.</P> + <P class=MsoNormal> 2. Clicking the <B>Auto</B> button automatically + change the layer opacity value between 0-100%. </P> + <P class=MsoNormal> 3. Clip Slider 鈥� change the Clip slider to reveal + the base terrain under the Imagery Layer.</P> + <P class=MsoNormal> 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> The 3D View Comparison tool let you compare + snapshots of two project scenarios. </P> + <P class=MsoNormal> 1. Fly to a location of you desire</P> + <P class=MsoNormal> 2. click <B>Capture A</B></P> + <P class=MsoNormal> 3. Turn on the different layers in the Project + Tree</P> + <P class=MsoNormal> 4. click <B>Capture B</B></P> + <P class=MsoNormal> 5. click <B>Compare</B></P> + <P class=MsoNormal> <B>The 3D View Comparison tool opens with the + following controls:</B></P> + <P class=MsoNormal> 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> 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--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/Lang.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/Lang.js new file mode 100644 index 0000000..09f442e --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/Lang.js @@ -0,0 +1,62 @@ +锘縎GLang.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: "鍦ㄨ繘琛屽姣旀搷浣滃墠鐢ㄦ埛蹇呴』鍏堟埅鍙栧満鏅疉鍜屽満鏅疊. ", + 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: "瀹屾垚" +}); \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/help.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/2052/help.html new file mode 100644 index 0000000..a02ddd0 --- /dev/null +++ b/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>浣跨敤褰卞儚鍥惧眰瀵规瘮 & 娓愬彉瀵规瘮</H3> + <P class=MsoNormal>褰卞儚鍥惧眰瀵规瘮 & 娓愬彉宸ュ叿璁╃敤鎴峰彲浠ュ皢3D绐楀彛涓坊鍔犵殑褰卞儚鍥惧眰鍜孧PT褰卞儚杩涜瀵规瘮. </P> + <P class=MsoNormal>1.鏀惧ぇ鍒板寘鍚奖鍍忓浘灞傜殑鍖哄煙</P> + <P class=MsoNormal>2.鐐瑰嚮<B>瀵规瘮& 娓愬彉</B>鎸夐挳. </P> + <P class=MsoNormal><B>鎵撳紑褰卞儚鍥惧眰瀵规瘮& 娓愬彉宸ュ叿锛屽寘鍚涓嬫帶浠�:</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鐨勯�忔槑搴︼紝鎱㈡參闇插嚭涓嬫柟鐨勫満鏅疉鐨勬埅灞�. </P> + <P class=MsoNormal>2.瑁佸垏婊戝潡-婊戝姩瑁佸垏婊戝潡鏉ラ湶鍑轰笅鏂瑰満鏅疉鐨勯儴鍒嗗尯鍩�. +</P></DIV></TD></TR></TBODY></TABLE></BODY></HTML> + + +<!--Sig:00000040iXnHat0m4i35MLkJ7R9q4TbhR9OYkaGsv3qJVyjhS5uB8Qe0fsXvkVrhZ9OO9#V8g5tMbHa8Gl3otmyWlNC3MrJJ--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/BIMComparisonPopup.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/BIMComparisonPopup.html new file mode 100644 index 0000000..ac35762 --- /dev/null +++ b/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> + <span class="i18n s8w">Text_ModelName</span> + <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--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.html new file mode 100644 index 0000000..5657e3e --- /dev/null +++ b/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--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.ico b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.ico new file mode 100644 index 0000000..1074238 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparison.ico Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparisonPopup.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/ImageComparisonPopup.html new file mode 100644 index 0000000..cb91c0d --- /dev/null +++ b/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--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/SwipeIcon.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/SwipeIcon.png new file mode 100644 index 0000000..60d28a3 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/SwipeIcon.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomIn.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomIn.gif new file mode 100644 index 0000000..9c719e5 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomIn.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomOut.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomOut.gif new file mode 100644 index 0000000..0ced93e --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/ZoomOut.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.gif new file mode 100644 index 0000000..3618bd8 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.png new file mode 100644 index 0000000..005325a --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOff.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.gif new file mode 100644 index 0000000..ddea44f --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.png new file mode 100644 index 0000000..55b0745 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/autoOn.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/loading.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/loading.gif new file mode 100644 index 0000000..2b70afe --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/loading.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.hover.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.hover.png new file mode 100644 index 0000000..491fcde --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.hover.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.png new file mode 100644 index 0000000..861ad3c --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.horizontal.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.hover.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.hover.png new file mode 100644 index 0000000..379cdc2 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.hover.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.png new file mode 100644 index 0000000..7f82ae8 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/slider.handle.vertical.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/space.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/space.gif new file mode 100644 index 0000000..b5fd56c --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Images/space.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Lang.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Lang.js new file mode 100644 index 0000000..e26bb28 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/Lang.js @@ -0,0 +1,62 @@ +锘縎GLang.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" +}); \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/MeshComparisonPopup.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/MeshComparisonPopup.html new file mode 100644 index 0000000..e6cd393 --- /dev/null +++ b/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> + <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--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.html new file mode 100644 index 0000000..a978f35 --- /dev/null +++ b/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--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.ico b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.ico new file mode 100644 index 0000000..359b4af --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotComparison.ico Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotDetectionPopup.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/SnapshotDetectionPopup.html new file mode 100644 index 0000000..062d97d --- /dev/null +++ b/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--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_m.cur b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_m.cur new file mode 100644 index 0000000..4e0076c --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_m.cur Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_wait.cur b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_wait.cur new file mode 100644 index 0000000..7aa16ff --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/cursor_wait.cur Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/help.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/help.html new file mode 100644 index 0000000..ee0e7a1 --- /dev/null +++ b/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> 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> The Imagery Layer Swipe & Fade tool let you compare the 3D view with and without an Imagery layer</p> + +<p class=MsoNormal> 1. Zoom to an area with visible Imagery Layer </p> +<p class=MsoNormal> 2. Click the <b>Swipe & Fade</b> button</p> +<p class=MsoNormal> <b>The Imagery Layer Swipe & Fade tool opens with the following controls:</b></p> +<p class=MsoNormal> 1. Transparency Slider � change the transparency slider to control the imagery layer opacity.</p> +<p class=MsoNormal> 2. Clicking the <b>Auto</b> button automatically change the layer opacity value between 0-100%. </p> +<p class=MsoNormal> 3. Clip Slider � change the Clip slider to reveal the base terrain under the Imagery Layer.</p> +<p class=MsoNormal> 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> The 3D View Comparison tool let you compare snapshots of two project scenarios. </p> +<p class=MsoNormal> 1. Fly to a location of you desire</p> +<p class=MsoNormal> 2. click <b>Capture A</b></p> +<p class=MsoNormal> 3. Turn on the different layers in the Project Tree</p> +<p class=MsoNormal> 4. click <b>Capture B</b></p> +<p class=MsoNormal> 5. click <b>Compare</b></p> +<p class=MsoNormal> <b>The 3D View Comparison tool opens with the following controls:</b></p> +<p class=MsoNormal> 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> 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--> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/range.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/range.js new file mode 100644 index 0000000..53c8f34 --- /dev/null +++ b/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; +}; diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.css b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.css new file mode 100644 index 0000000..9839100 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/slider.js new file mode 100644 index 0000000..6b84292 --- /dev/null +++ b/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(); +}; \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/timer.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ImageComparison/timer.js new file mode 100644 index 0000000..0c1e897 --- /dev/null +++ b/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; +}; \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon.js new file mode 100644 index 0000000..c0ad51d --- /dev/null +++ b/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); + } + } +} diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Terra.YaoGan.Web.csproj b/Terra.YaoGan.Web/Terra.YaoGan.Web/Terra.YaoGan.Web.csproj index bf9be5e..60aba4b 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Web/Terra.YaoGan.Web.csproj +++ b/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"> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Web.config b/Terra.YaoGan.Web/Terra.YaoGan.Web/Web.config index bd4d30a..4d01f0e 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Web/Web.config +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Web.config @@ -1,24 +1,24 @@ -锘�<?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" /> - </system.web> - <connectionStrings> - <!--<add name="connString" connectionString="Server=127.0.0.1;DataBase=DDYuan;Uid=sa;Pwd=XN@qhch"/>--> - <add name="connString" connectionString="Server=localhost;DataBase=DDYuan;Uid=sa;Pwd=sa"/> - </connectionStrings> - <system.webServer> - <staticContent> - <mimeMap fileExtension=".fly" mimeType="application/stream"/> - <remove fileExtension=".mp4"/> - <mimeMap fileExtension=".mp4" mimeType="video/mp4"/> - </staticContent> - </system.webServer> - <system.codedom> - <compilers> - <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" /> - <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" /> - </compilers> - </system.codedom> + <system.web> + <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"/>--> + <add name="connString" connectionString="Server=localhost;DataBase=DDYuan;Uid=sa;Pwd=sa"/> + </connectionStrings> + <system.webServer> + <staticContent> + <mimeMap fileExtension=".fly" mimeType="application/stream"/> + <remove fileExtension=".mp4"/> + <mimeMap fileExtension=".mp4" mimeType="video/mp4"/> + </staticContent> + </system.webServer> + <system.codedom> + <compilers> + <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/> + <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/> + </compilers> + </system.codedom> </configuration> \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly b/Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly index a010f0f..fc420db 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/fly/128.fly b/Terra.YaoGan.Web/Terra.YaoGan.Web/fly/128.fly index c2bbd5f..c2985f4 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Web/fly/128.fly +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/fly/128.fly Binary files differ diff --git "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2353\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" "b/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2353\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" deleted file mode 100644 index a462783..0000000 --- "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2353\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" +++ /dev/null Binary files differ diff --git "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2353\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" "b/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2353\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" deleted file mode 100644 index e3c4631..0000000 --- "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2353\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" +++ /dev/null Binary files differ diff --git "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2354\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" "b/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2354\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" deleted file mode 100644 index 36c59ee..0000000 --- "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2354\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" +++ /dev/null Binary files differ diff --git "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2354\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" "b/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2354\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" deleted file mode 100644 index 987fead..0000000 --- "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2354\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" +++ /dev/null Binary files differ diff --git "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2355\345\217\267\347\233\221\346\216\247/2024.3.23.mp4" "b/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2355\345\217\267\347\233\221\346\216\247/2024.3.23.mp4" deleted file mode 100644 index e0c2418..0000000 --- "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2355\345\217\267\347\233\221\346\216\247/2024.3.23.mp4" +++ /dev/null Binary files differ diff --git "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2355\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" "b/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2355\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" deleted file mode 100644 index f1d7c59..0000000 --- "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2355\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" +++ /dev/null Binary files differ diff --git "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2356\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" "b/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2356\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" deleted file mode 100644 index 5f47848..0000000 --- "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2356\345\217\267\347\233\221\346\216\247/2024.3.21.mp4" +++ /dev/null Binary files differ diff --git "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2356\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" "b/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2356\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" deleted file mode 100644 index e724338..0000000 --- "a/Terra.YaoGan.Web/Terra.YaoGan.Web/mp4/\345\214\227\345\256\2356\345\217\267\347\233\221\346\216\247/2024.4.2.mp4" +++ /dev/null Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/packages.config b/Terra.YaoGan.Web/Terra.YaoGan.Web/packages.config index a8fe395..b83a524 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Web/packages.config +++ b/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> \ No newline at end of file -- Gitblit v1.9.3