From bb999f11625b2699184cd10bd16da1fc7784669a Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 03 四月 2024 16:19:32 +0800 Subject: [PATCH] q --- Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_a.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polygon.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/ToolIcon.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/help.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/prop.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Info.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/Style.css | 240 +++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Separator.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/alert.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon71.js | 792 ++++++++++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/SpaceStatistics.html | 286 ++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/lang.js | 3 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/2052/lang.js | 3 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpatialQuery.html | 164 ++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/point.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/js/Gis/Gis.js | 2 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon73.js | 831 ++++++++++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Help.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon70.js | 586 +++++++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpaceStatistics.html | 286 ++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/group.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon65.js | 703 ++++++++++ Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polyline.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/cursor_m.cur | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/delete.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_span.gif | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/img/ToolIcon.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/clipboard.png | 0 Terra.YaoGan.Web/Terra.YaoGan.Web/fly/127.fly | 0 31 files changed, 3,895 insertions(+), 1 deletions(-) diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Help.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Help.gif new file mode 100644 index 0000000..05a28c2 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Help.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Info.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Info.png new file mode 100644 index 0000000..03f92dd --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Info.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Separator.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Separator.gif new file mode 100644 index 0000000..8a4950b --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/Separator.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/alert.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/alert.png new file mode 100644 index 0000000..9a9960b --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/alert.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_a.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_a.gif new file mode 100644 index 0000000..47dcd23 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_a.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_span.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_span.gif new file mode 100644 index 0000000..82bec3d --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/bg_button_span.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/clipboard.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/clipboard.png new file mode 100644 index 0000000..43090af --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/clipboard.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.gif b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.gif new file mode 100644 index 0000000..d39535b --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.gif Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.png new file mode 100644 index 0000000..0c33d78 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/close.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/group.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/group.png new file mode 100644 index 0000000..80eb5e3 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/group.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/help.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/help.png new file mode 100644 index 0000000..2c04f79 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/help.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/point.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/point.png new file mode 100644 index 0000000..5833bdc --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/point.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polygon.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polygon.png new file mode 100644 index 0000000..e850514 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polygon.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polyline.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polyline.png new file mode 100644 index 0000000..5d4183b --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/polyline.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/prop.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/prop.png new file mode 100644 index 0000000..f711b74 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/CommonImg/prop.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/2052/lang.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/2052/lang.js new file mode 100644 index 0000000..bfce754 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/2052/lang.js @@ -0,0 +1,3 @@ +锘縎GLang.lang = $.extend(SGLang.lang, { + // +}); \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/SpaceStatistics.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/SpaceStatistics.html new file mode 100644 index 0000000..427cb62 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/SpaceStatistics.html @@ -0,0 +1,286 @@ +锘�<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <title>绌洪棿缁熻</title> + <meta http-equiv="Expires" content="0" /> + <meta http-equiv="Cache" content="no-cache" /> + <meta http-equiv="Pragma" content="no-cache" /> + <meta http-equiv="Cache-control" content="no-cache" /> + <!--<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />--> + <meta http-equiv="X-UA-Compatible" content="IE=9" /> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <script src="../Jquery/jquery.min.js"></script> + <script src="../ToolsCommon71.js"></script> + <link href="../Style.css" rel="StyleSheet" type="text/css" /> + <style> + html, body { + margin: 0; + padding: 0; + height: 100%; + width: 100%; + } + </style> + <script> + var gAsync = true; + var gDebug = false; + var groupName = "绌洪棿缁熻"; + var layerName = "JMD_1002"; + + var rs = { + count: 0, // 瑕佺礌鎬讳釜鏁� + + lineLen: 0, // 绾垮璞¢暱搴� + + polyArea: 0, // 澶氳竟褰㈤潰绉� + + volume: 0, // 涓夌淮浣撲綋绉� + + minHeight: 0, // 涓夌淮浣撴渶浣庨珮搴� + + maxHeight: 0, // 涓夌淮浣撴渶楂橀珮搴� + + reset: function () { + //SGWorld.ProjectTree.EnableRedraw(0); + var layers = getFeatureLayers(); + for (var i in layers) { + try{ + SGWorld.ProjectTree.GetObject(layers[i]).Refresh(); + } catch (e) { + console.log(e); + } + } + //SGWorld.ProjectTree.EnableRedraw(1); + + this.count = 0; + this.lineLen = 0; + this.polyArea = 0; + this.volume = 0; + this.minHeight = 0; + this.maxHeight = 0; + + return this; + }, + + format: function () { + this.lineLen = parseFloat(this.lineLen.toFixed(2)); + this.polyArea = parseFloat(this.polyArea.toFixed(2)); + this.volume = parseFloat(this.volume.toFixed(2)); + this.minHeight = parseFloat(this.minHeight.toFixed(2)); + this.maxHeight = parseFloat(this.maxHeight.toFixed(2)); + + return this; + }, + + setVal: function () { + $("#totalNum").html("" + this.count); + $("#lineLen").html("" + this.lineLen); + $("#polyArea").html("" + this.polyArea); + $("#volume").html("" + this.volume); + $("#minHeight").html("" + this.minHeight); + $("#maxHeight").html("" + this.maxHeight); + } + }; + + $(function () { + init(); + }); + + function init() { + window.ondragstart = function () { return false; } + } + + function getGroupId() { + var gid = SGWorld.ProjectTree.FindItem(groupName); + if (gid) return gid; + + return SGWorld.ProjectTree.CreateLockedGroup(groupName); + } + + function delGroup() { + try { + var gid = SGWorld.ProjectTree.FindItem(groupName); + if (gid) SGWorld.ProjectTree.DeleteItem(gid); + } + catch (e) { } + } + + function getFeatureLayers() { + var layers = []; + BuildObjectsList(SGWorld.ProjectTree.RootID, layers, 36); + + return layers; + } + + function clear(e) { + rs.reset(); + rs.setVal(); + delGroup(); + } + + function startQuery(e) { + this.clear(); + if (drawing.drawingEditMode != -1) { + drawing.abort(); + return; + } + + SGWorld.Window.ShowMessageBarText("鎸� Esc 閿��鍑�"); + drawing.drawPolygon({ + style: { + lineColor: "#ff0000", + lineWidth: 3, + }, + altitudeMethod: 2, // use 2 of "OnTerrain" and 3 for "Absolute" (above mean sea level) + deleteWhenExit: false, // + parentGoupID: getGroupId(), + saveOnExit: true, // save the polyline/polygon when exiting the project. Default = false + onFinish: DrawPoly, + onAbort: ResetAsync + }); + } + + function DrawPoly(geometry, type, altitudeType) { + var layers = getFeatureLayers(); + for (var i in layers) { + try { + var layer = SGWorld.ProjectTree.GetObject(layers[i]); + var fs = layer.ExecuteSpatialQuery(geometry, 1); // 1-IT_INTERSECT, 2-IT_WITHIN + if (fs.Count == 0) continue; + + rs.count += fs.Count; + if (layer.GeometryType == 1) { // LGT_POLYLINE + for (var j = 0; j < fs.Count; j++) { + var f = fs.Item(j); + rs.lineLen += f.Geometry.Length; + } + } + if (layer.GeometryType == 2) { // LGT_POLYGON + var flag = layerName == layer.TreeItem.Name; + for (var j = 0; j < fs.Count; j++) { + var f = fs.Item(j); + rs.polyArea += f.Geometry.Area; + + if (flag) { + var maxHeight = f.FeatureAttributes.GetFeatureAttribute("MaxHeight").Value; + var minHeight = f.FeatureAttributes.GetFeatureAttribute("MinHeight").Value; + var height = maxHeight - minHeight; + + rs.volume += f.Geometry.Area * height; + if (rs.maxHeight < height) rs.maxHeight = height; + if (!rs.minHeight || rs.minHeight > height) rs.minHeight = height; + } + } + } + for (var j = 0; j < fs.Count; j++) { + fs.Item(j).Tint.abgrColor = 0xff800080; + } + } catch (e) { + console.log(e); + //layers.splice(i, 1); + } + } + + rs.format(); + rs.setVal(); + } + + function ResetAsync(FirstTime, FromMouseInputMode) { + if (gAsync) + setTimeout(function () { Reset(FirstTime, FromMouseInputMode); }, 100); + else + Reset(FirstTime, FromMouseInputMode); + } + + function Reset(FirstTime, FromMouseInputMode) { + try { + if (gPolyObj != null) SGWorld.Creator.DeleteObject(gPolyObj.ID); + } catch (e) { } + + gPolyObj = null; + SGWorld.ProjectTree.EnableRedraw(1); + SGWorld.Window.HideMessageBarText(); + bInEdit = false; + + if (FirstTime != 1 && FromMouseInputMode == 0) SGWorld.Window.SetInputMode(0); + } + </script> +</head> +<body class="hideUntillTranslated"> + <table style="width: 100%; border: 0;" cellspacing="0" cellpadding="2"> + <tr> + <td class="ToolTopArea" id="TopAreaTD" width="100%" valign="middle"> + <table border="0" width="100%" cellspacing="0" cellpadding="0"> + <tr> + <td width="55px"> + <img style="margin-left: 5px;" src="img/ToolIcon.png" alt="" /></td> + <td id="TitleTD" align="center" class="s12w i18n">绌洪棿缁熻</td> + <td align="right" id="CloseHelpTd"> + <img style="margin-right: 5px; cursor: pointer;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="甯姪" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))" /></td> + </tr> + </table> + </td> + </tr> + <tr> + <td class="ToolTopSeperator"></td> + </tr> + <tr class="s8"> + <td> + <table class="PropertiesSheet" cellspacing="0" cellpadding="2"> + <tr class='TableOtherLine'> + <td class="s8b"> + <label for="Mode" class="i18n">瑕佺礌鎬讳釜鏁�</label> + </td> + <td> <span id="totalNum">0</span> 涓� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">绾垮璞¢暱搴�</label> + </td> + <td> <span id="lineLen">0</span> 绫� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">澶氳竟褰㈤潰绉�</label> + </td> + <td> <span id="polyArea">0</span> 骞虫柟绫� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">涓夌淮浣撲綋绉�</label> + </td> + <td> <span id="volume">0</span> 绔嬫柟绫� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">涓夌淮浣撻珮搴�</label> + </td> + <td> 鏈�浣� <span id="minHeight">0</span> 绫筹紝鏈�楂� <span id="maxHeight">0</span> 绫� + </td> + </tr> + </table> + </td> + </tr> + <tr class="s8"> + <td align="center" class="ToolButtonsArea"> + <div id="SurfaceDiv"> + <button id="clipboardButton" class="MenuButton" onclick="clear(this);" style="cursor: pointer;"> + <img src="img/delete.png" /><br /> + <span class="i18n">娓� 闄�</span></button> + <button id="DrawPlaneBtn" class="MenuButton MenuButtonLast" onclick="startQuery(this);" style="cursor: pointer;"> + <img src="../commonImg/polygon.png" /><br /> + <span class="i18n">寮�濮嬬粺璁�</span></button> + </div> + </td> + </tr> + <tr> + <td> + <object id="SGWorld" style="display:none" classid="CLSID:3a4f9199-65a8-11d5-85c1-0001023952c1"></object> + </td> + </tr> + </table> +</body> +</html> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/cursor_m.cur b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/cursor_m.cur new file mode 100644 index 0000000..4e0076c --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/cursor_m.cur Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/ToolIcon.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/ToolIcon.png new file mode 100644 index 0000000..059c96d --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/ToolIcon.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/delete.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/delete.png new file mode 100644 index 0000000..816806b --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/img/delete.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/lang.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/lang.js new file mode 100644 index 0000000..bfce754 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpaceStatistics/lang.js @@ -0,0 +1,3 @@ +锘縎GLang.lang = $.extend(SGLang.lang, { + // +}); \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpaceStatistics.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpaceStatistics.html new file mode 100644 index 0000000..698516c --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpaceStatistics.html @@ -0,0 +1,286 @@ +锘�<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <title>绌洪棿缁熻</title> + <meta http-equiv="Expires" content="0" /> + <meta http-equiv="Cache" content="no-cache" /> + <meta http-equiv="Pragma" content="no-cache" /> + <meta http-equiv="Cache-control" content="no-cache" /> + <!--<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />--> + <meta http-equiv="X-UA-Compatible" content="IE=9" /> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <script src="../Jquery/jquery.min.js"></script> + <script src="../ToolsCommon71.js"></script> + <link href="../Style.css" rel="StyleSheet" type="text/css" /> + <style> + html, body { + margin: 0; + padding: 0; + height: 100%; + width: 100%; + } + </style> + <script> + var gAsync = true; + var gDebug = false; + var groupName = "绌洪棿缁熻"; + var layerName = "abc"; + + var rs = { + count: 0, // 瑕佺礌鎬讳釜鏁� + + lineLen: 0, // 绾垮璞¢暱搴� + + polyArea: 0, // 澶氳竟褰㈤潰绉� + + volume: 0, // 涓夌淮浣撲綋绉� + + minHeight: 0, // 涓夌淮浣撴渶浣庨珮搴� + + maxHeight: 0, // 涓夌淮浣撴渶楂橀珮搴� + + reset: function () { + //SGWorld.ProjectTree.EnableRedraw(0); + var layers = getFeatureLayers(); + for (var i in layers) { + try{ + SGWorld.ProjectTree.GetObject(layers[i]).Refresh(); + } catch (e) { + console.log(e); + } + } + //SGWorld.ProjectTree.EnableRedraw(1); + + this.count = 0; + this.lineLen = 0; + this.polyArea = 0; + this.volume = 0; + this.minHeight = 0; + this.maxHeight = 0; + + return this; + }, + + format: function () { + this.lineLen = parseFloat(this.lineLen.toFixed(2)); + this.polyArea = parseFloat(this.polyArea.toFixed(2)); + this.volume = parseFloat(this.volume.toFixed(2)); + this.minHeight = parseFloat(this.minHeight.toFixed(2)); + this.maxHeight = parseFloat(this.maxHeight.toFixed(2)); + + return this; + }, + + setVal: function () { + $("#totalNum").html("" + this.count); + $("#lineLen").html("" + this.lineLen); + $("#polyArea").html("" + this.polyArea); + $("#volume").html("" + this.volume); + $("#minHeight").html("" + this.minHeight); + $("#maxHeight").html("" + this.maxHeight); + } + }; + + $(function () { + init(); + }); + + function init() { + window.ondragstart = function () { return false; } + } + + function getGroupId() { + var gid = SGWorld.ProjectTree.FindItem(groupName); + if (gid) return gid; + + return SGWorld.ProjectTree.CreateLockedGroup(groupName); + } + + function delGroup() { + try { + var gid = SGWorld.ProjectTree.FindItem(groupName); + if (gid) SGWorld.ProjectTree.DeleteItem(gid); + } + catch (e) { } + } + + function getFeatureLayers() { + var layers = []; + BuildObjectsList(SGWorld.ProjectTree.RootID, layers, 36); + + return layers; + } + + function clear(e) { + rs.reset(); + rs.setVal(); + delGroup(); + } + + function startQuery(e) { + this.clear(); + if (drawing.drawingEditMode != -1) { + drawing.abort(); + return; + } + + SGWorld.Window.ShowMessageBarText("鎸� Esc 閿��鍑�"); + drawing.drawPolygon({ + style: { + lineColor: "#ff0000", + lineWidth: 3, + }, + altitudeMethod: 2, // use 2 of "OnTerrain" and 3 for "Absolute" (above mean sea level) + deleteWhenExit: false, // + parentGoupID: getGroupId(), + saveOnExit: true, // save the polyline/polygon when exiting the project. Default = false + onFinish: DrawPoly, + onAbort: ResetAsync + }); + } + + function DrawPoly(geometry, type, altitudeType) { + var layers = getFeatureLayers(); + for (var i in layers) { + try { + var layer = SGWorld.ProjectTree.GetObject(layers[i]); + var fs = layer.ExecuteSpatialQuery(geometry, 1); // 1-IT_INTERSECT, 2-IT_WITHIN + if (fs.Count == 0) continue; + + rs.count += fs.Count; + if (layer.GeometryType == 1) { // LGT_POLYLINE + for (var j = 0; j < fs.Count; j++) { + var f = fs.Item(j); + rs.lineLen += f.Geometry.Length; + } + } + if (layer.GeometryType == 2) { // LGT_POLYGON + var flag = layerName == layer.TreeItem.Name; + for (var j = 0; j < fs.Count; j++) { + var f = fs.Item(j); + rs.polyArea += f.Geometry.Area; + + if (flag) { + var maxHeight = f.FeatureAttributes.GetFeatureAttribute("MaxHeight").Value; + var minHeight = f.FeatureAttributes.GetFeatureAttribute("MinHeight").Value; + var height = maxHeight - minHeight; + + rs.volume += f.Geometry.Area * height; + if (rs.maxHeight < height) rs.maxHeight = height; + if (!rs.minHeight || rs.minHeight > height) rs.minHeight = height; + } + } + } + for (var j = 0; j < fs.Count; j++) { + fs.Item(j).Tint.abgrColor = 0xff800080; + } + } catch (e) { + console.log(e); + //layers.splice(i, 1); + } + } + + rs.format(); + rs.setVal(); + } + + function ResetAsync(FirstTime, FromMouseInputMode) { + if (gAsync) + setTimeout(function () { Reset(FirstTime, FromMouseInputMode); }, 100); + else + Reset(FirstTime, FromMouseInputMode); + } + + function Reset(FirstTime, FromMouseInputMode) { + try { + if (gPolyObj != null) SGWorld.Creator.DeleteObject(gPolyObj.ID); + } catch (e) { } + + gPolyObj = null; + SGWorld.ProjectTree.EnableRedraw(1); + SGWorld.Window.HideMessageBarText(); + bInEdit = false; + + if (FirstTime != 1 && FromMouseInputMode == 0) SGWorld.Window.SetInputMode(0); + } + </script> +</head> +<body class="hideUntillTranslated"> + <table style="width: 100%; border: 0;" cellspacing="0" cellpadding="2"> + <tr> + <td class="ToolTopArea" id="TopAreaTD" width="100%" valign="middle"> + <table border="0" width="100%" cellspacing="0" cellpadding="0"> + <tr> + <td width="55px"> + <img style="margin-left: 5px;" src="img/ToolIcon.png" alt="" /></td> + <td id="TitleTD" align="center" class="s12w i18n">绌洪棿缁熻</td> + <td align="right" id="CloseHelpTd"> + <img style="margin-right: 5px; cursor: pointer;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="甯姪" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))" /></td> + </tr> + </table> + </td> + </tr> + <tr> + <td class="ToolTopSeperator"></td> + </tr> + <tr class="s8"> + <td> + <table class="PropertiesSheet" cellspacing="0" cellpadding="2"> + <tr class='TableOtherLine'> + <td class="s8b"> + <label for="Mode" class="i18n">瑕佺礌鎬讳釜鏁�</label> + </td> + <td> <span id="totalNum">0</span> 涓� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">绾垮璞¢暱搴�</label> + </td> + <td> <span id="lineLen">0</span> 绫� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">澶氳竟褰㈤潰绉�</label> + </td> + <td> <span id="polyArea">0</span> 骞虫柟绫� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">涓夌淮浣撲綋绉�</label> + </td> + <td> <span id="volume">0</span> 绔嬫柟绫� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">涓夌淮浣撻珮搴�</label> + </td> + <td> 鏈�浣� <span id="minHeight">0</span> 绫筹紝鏈�楂� <span id="maxHeight">0</span> 绫� + </td> + </tr> + </table> + </td> + </tr> + <tr class="s8"> + <td align="center" class="ToolButtonsArea"> + <div id="SurfaceDiv"> + <button id="clipboardButton" class="MenuButton" onclick="clear(this);" style="cursor: pointer;"> + <img src="img/delete.png" /><br /> + <span class="i18n">娓� 闄�</span></button> + <button id="DrawPlaneBtn" class="MenuButton MenuButtonLast" onclick="startQuery(this);" style="cursor: pointer;"> + <img src="../commonImg/polygon.png" /><br /> + <span class="i18n">寮�濮嬬粺璁�</span></button> + </div> + </td> + </tr> + <tr> + <td> + <object id="SGWorld" style="display:none" classid="CLSID:3a4f9199-65a8-11d5-85c1-0001023952c1"></object> + </td> + </tr> + </table> +</body> +</html> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpatialQuery.html b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpatialQuery.html new file mode 100644 index 0000000..a4d60ad --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/SpatialQuery.html @@ -0,0 +1,164 @@ +锘�<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <title>绌洪棿鍒嗘瀽</title> + <meta http-equiv="Expires" content="0" /> + <meta http-equiv="Cache" content="no-cache" /> + <meta http-equiv="Pragma" content="no-cache" /> + <meta http-equiv="Cache-control" content="no-cache" /> + <!--<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />--> + <meta http-equiv="X-UA-Compatible" content="IE=9" /> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <script src="../Jquery/jquery.min.js"></script> + <script src="../ToolsCommon71.js"></script> + <link href="../Style.css" rel="StyleSheet" type="text/css" /> + <style> + html, body { + margin: 0; + padding: 0; + height: 100%; + width: 100%; + } + </style> + <script> + $(function () { + init(); + }); + + function init() { + window.ondragstart = function () { return false; } + + refreshList(); + } + + function refreshList() { + try { + $("#LayerId").html(""); + + var layers = [], index = 0; + BuildObjectsList(SGWorld.ProjectTree.RootID, layers, 36); + + layers.forEach(function (val) { + var name = SGWorld.ProjectTree.GetItemName(val); + $("#LayerId").append("<option value=" + val + (0 == index ? " selected='selected' " : "") + ">" + name + "</option>"); + index++; + }); + + if (layers.length) SGWorld.ProjectTree.SelectItem(layers[0]); + } catch (e) { + console.log(e); + } + } + + function changeLayer(e) { + var id = $(e).val(); + if (id) SGWorld.ProjectTree.SelectItem(id); + } + + var buffer = 0; + + function changeBuffer(e) { + var val = $(e).val(); + if (val == buffer || isNaN(val)) return; + + buffer = parseFloat(val); + SGWorld.Command.Execute(1096, buffer); + } + + function changeSR(e) { + var val = parseInt($(e).val()); + SGWorld.Command.Execute(1097, val); + } + + function openPropTab(e) { + SGWorld.Command.Execute(1086, null); + } + + function startQuery(e) { + var id = parseInt($("#SelectType").val()); + SGWorld.Command.Execute(id, null); + } + </script> +</head> +<body class="hideUntillTranslated"> + <table style="width: 100%; border: 0;" cellspacing="0" cellpadding="2"> + <tr> + <td class="ToolTopArea" id="TopAreaTD" style="width: 100%; vertical-align: middle;"> + <table border="0" width="100%" cellspacing="0" cellpadding="0"> + <tr> + <td width="55px"> + <img style="margin-left: 5px;" src="img/ToolIcon.png" alt="" /></td> + <td id="TitleTD" align="center" class="s12w i18n">绌洪棿鍒嗘瀽</td> + <td align="right" id="CloseHelpTd"> + <img style="margin-right: 5px; cursor: pointer;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="甯姪" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))"/></td> + </tr> + </table> + </td> + </tr> + <tr> + <td class="ToolTopSeperator"></td> + </tr> + <tr class="s8"> + <td> + <table class="PropertiesSheet" cellspacing="0" cellpadding="2"> + <tr class='TableOtherLine'> + <td class="s8b"> + <label for="Mode" class="i18n">閫夋嫨鍥惧眰</label> + </td> + <td> <select id="LayerId" onchange="changeLayer(this);" style="width: 200pt;"></select> + <span id="refresh" onclick="refreshList();" style="text-decoration: underline; cursor: pointer;" class="i18n">鍒锋柊</span> + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">缂撳啿璺濈</label> + </td> + <td> <input id="Buffer" type="text" style="width: 95pt;" value="0" size="7" onchange="CheckNumberEx(Buffer, 0, 0, 9999999); changeBuffer(this);" /> + 绫� + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">绌洪棿鍏崇郴</label> + </td> + <td> <select id="SpatialRelationship" onchange="changeSR(this);" style="width: 100pt;"> + <option class="i18n" value="1" selected="selected">鐩镐氦</option> + <option class="i18n" value="2">鍖呭惈</option> + </select> + </td> + </tr> + <tr> + <td class="s8b"> + <label for="Mode" class="i18n">鏌ヨ绫诲瀷</label> + </td> + <td> <select id="SelectType" style="width: 100pt;"> + <option value="1071" selected="selected">闈㈡煡</option> + <option value="1072">绾挎煡</option> + <option value="1073">鐐规煡</option> + <option value="1156">閫夋嫨瀵硅薄</option> + </select> + </td> + </tr> + </table> + </td> + </tr> + <tr class="s8"> + <td align="center" class="ToolButtonsArea"> + <div id="SurfaceDiv"> + <button class="MenuButton" onclick="openPropTab(this);" style="cursor: pointer;"> + <img src="../commonImg/prop.png" /><br /> + <span class="i18n">灞炴�ц〃</span></button> + <button class="MenuButton MenuButtonLast" onclick="startQuery(this);" style="cursor: pointer;"> + <img src="../commonImg/polygon.png" /><br /> + <span class="i18n">寮�濮嬫煡璇�</span></button> + </div> + </td> + </tr> + <tr> + <td> + <object id="SGWorld" classid="CLSID:3a4f9199-65a8-11d5-85c1-0001023952c1"></object> + </td> + </tr> + </table> +</body> +</html> diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/img/ToolIcon.png b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/img/ToolIcon.png new file mode 100644 index 0000000..5d1e66b --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/SpatialQuery/img/ToolIcon.png Binary files differ diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/Style.css b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/Style.css new file mode 100644 index 0000000..36f75fa --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/Style.css @@ -0,0 +1,240 @@ + +html { overflow:hidden;height:100%;width:100%} +body { background-color: White; background-repeat: no-repeat; overflow-x:hidden; overflow-y:auto; height:100%;width:100%; } +.helpHtml { overflow:inherit} +.background { background-color: #555555; background-image: url(img\background.gif); background-repeat: no-repeat} +.s6 {font-family: Calibri,Arial; font-size: 8pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +.s7 {font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +.s7red {font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #B90000; text-decoration: none;} +.s8 {font-family: Calibri, Arial; font-size: 10pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +.s8w {font-family: Calibri,Arial; font-size: 10pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none;} +.s8b {font-family: Calibri,Arial; font-size: 10pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;} +.s8bu {font-family: Calibri, Arial; font-size: 10pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: underline;} +.s9 {font-family: Calibri,Arial; font-size: 11pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +.s9b {font-family: Calibri,Arial; font-size: 11pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;} +.s9w {font-family: Calibri,Arial; font-size: 11pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none;} +.s9red{font-family: Calibri,Arial;font-size: 11pt;font-style: normal;line-height: normal;font-weight: normal;font-variant: normal;text-transform: none;color: #B90000;text-decoration: none;} +.s9bred{font-family: Calibri,Arial;font-size: 11pt;font-style: normal;line-height: normal;font-weight: bold;font-variant: normal;text-transform: none;color: #B90000;text-decoration: none;} +.s10 {font-family: Calibri,Arial; font-size: 12pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +.s10w {font-family: Calibri,Arial; font-size: 12pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none;} +.s10b {font-family: Calibri,Arial; font-size: 12pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;} +.s12 {font-family: Calibri,Arial; font-size: 13pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +.s12b {font-family: Calibri,Arial; font-size: 13pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;} +.s12w {font-family: Calibri,Arial; font-size: 13pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none;} +.s13b {font-family: Calibri,Arial; font-size: 14pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;} +.s14b {font-family: Calibri,Arial; font-size: 16pt; font-style: normal; font-weight: bold; color: #000000; text-decoration: none;} +.s14bi {font-family: Calibri,Arial; font-size: 16pt; font-style: italic; font-weight: bold; color: #000000; text-decoration: none;} +.s18 {font-family: Calibri,Arial; font-size: 18pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} + +p {font-family: Calibri, Arial; font-size: 11pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +span {font-family: Calibri, Arial; font-size: 10pt; } + +h1 {margin-top:0in; margin-right:0in;margin-bottom:12.0pt; margin-left:.5in; text-indent:-.5in; page-break-before:always; page-break-after:avoid; border:none; padding:0in; font-size:16.0pt; font-family:Calibri; text-transform:uppercase; font-weight:bold;} +h2 {margin-top:24.0pt; margin-right:0in; margin-bottom:0in; margin-left:0in; margin-bottom:.0001pt; page-break-after:avoid; font-size:14.0pt; font-family:Calibri; font-weight:bold;} +h3 {margin-top:12.0pt; margin-right:0in; margin-bottom:3.0pt; margin-left:0in; page-break-after:avoid; font-size:11.0pt; font-family:Calibri; font-weight:bold;} +h4 {margin-top:6.0pt; margin-right:0in; margin-bottom:0in; margin-left:0in; margin-bottom:.0001pt; page-break-after:avoid; font-size:11.0pt; font-family:Calibri; font-weight:bold;} +h5 {margin-top:6.0pt; margin-right:0in; margin-bottom:0in; margin-left:0in; margin-bottom:.0001pt; page-break-after:avoid; font-size:8.0pt; font-family:Verdana; color:red; font-weight:bold;} +h6 {margin-top:12.0pt; margin-right:0in; margin-bottom:3.0pt; margin-left:0in; text-align:justify; font-size:11.0pt; font-family:"ITCCentury Light"; font-weight:bold;} + +.HelpTextHeader {font-family: Calibri,Arial; font-size: 24px; font-style: normal; font-weight: normal; color: #007F7F; text-decoration: none;} +.HelpText {font-family: Calibri,Arial; font-size: 14px; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} + +.ToolTopArea {background-color: #151515; height:30pt; color:#FFFFFF; font-weight:bold; font-size:9pt; vertical-align:middle; } +.ToolTopSeperator{background-color: #151515; height:1pt;} +.PropertiesSheet {background-color:#ffffff;width:100%; border-collapse: collapse;} +.PropertiesSheet td { border:1pt solid #cccccc; } +.TableOtherLine{background-color:#ffffff; } +.ToolButtonsArea {background-color:#151515; } +.MenuButton{height: 56pt;width: 48pt;padding: 1pt;white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #606060;font-family: Calibri,Arial; font-size: 10pt; color:white; line-height:120%} +.MenuButton2{height: 34pt;width: 34pt;padding: 2pt;white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #606060;font-family: Calibri,Arial; font-size: 10pt; color:white; line-height:120%} +.MenuButton img {margin-bottom: 4pt; width:24pt;} +.MenuButton:hover{background-color:#2B2B2B; } +.MenuButton2:hover{background-color:#2B2B2B;cursor: pointer;} +.MenuButtonLast{border-right:0pt} +.MenuButtonHighlight{background-color:#004975;font-weight: bold;} +.MenuButtonHighlight:hover{background-color:#0CC2DE; } +.MenuButtonMedium {height: 36pt;width: 48pt;margin: 2pt;white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #76757A;font-family: Calibri,Arial; font-size: 10pt; color:white;line-height:120%; } +.MenuButtonMedium:hover{background-color:#2B2B2B; } +.MenuButtonSmall {height: 15pt;margin: 0pt;white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #76757A;font-family: Calibri,Arial; font-size: 10pt; color:white; } +.MenuButtonSmallWhite {height: 15pt;margin: 0pt;white-space: normal;padding-left:4pt; padding-right: 4pt; background-color:white;border:0pt; border-right:1pt solid #000000;font-family: Calibri,Arial; font-size: 10pt; color:black;cursor: pointer; } +.MenuButtonSmall:hover{background-color:#2B2B2B; } +.MenuButtonSmallRound {margin: 0pt;padding: 2px 8px 2px 8px ; white-space: normal; background-color:#151515;border:0pt; border-right:1pt solid #76757A;font-family: Calibri,Arial; font-size: 12pt; color:white; border-radius: 3px; } +.MenuButtonSmallRound:hover{background-color:#2B2B2B; cursor: pointer;} +.MenuButtonSmallRoundOutline {margin: 0pt;padding: 2px 8px 2px 8px ; white-space: normal; background-color:#fafafa;border:1px solid #dddddd;font-family: Calibri,Arial; font-size: 12pt; font-weight: normal; color:black; border-radius: 3px; box-shadow: 0px 0px 1px 2px rgba(0,0,0,.04);} +.MenuButtonSmallRoundOutline:hover{border:1px solid #151515; cursor: pointer;} +.MenuButtonSmallRoundOutlineChecked { background-color:#0CC2DE;border:1px solid #cccccc; color:white; } +.MenuButtonWhiteMedium{background-color:white; padding: 5px 5px 5px 5px; width:48px; height:48px;border:0pt;box-shadow: 0px 0px 4px 2px rgba(0,0,0,.04);border-radius: 3px; margin-left: 4px; margin-right: 4px;} +.MenuButtonWhiteMedium:hover{background-color:#A4E8FF; cursor: pointer;} +.MenuButtonBlueShadow {background-color:#F0F7FF ; border:1px solid rgba(164, 232, 255, 1); border-radius: 2px; box-shadow: 0px 0px 8px 1px rgba(164, 232, 255, 1);} +.MenuButtonShort {height:20px;padding: 0px 4px 0px 4px ;} +.pointer {cursor: pointer} + +.SpanOutline {margin: 0pt;padding: 2px 8px 2px 8px ; white-space: normal; background-color:#fafafa;border:1px solid #dddddd;font-family: Calibri,Arial; font-size: 12pt; font-weight: normal; color:black; border-radius: 3px; box-shadow: 0px 0px 1px 2px rgba(0,0,0,.04);} +.ML5 {margin-left: 5px;} +.MR5 {margin-right: 5px;} +.tabArea {background-color:#151515;} +.tab {float: left;background-color: #2B2B2B;border: solid 1pt #2B2B2B;margin: 0px 3px 0px 3px;color:white;padding: 3pt;cursor: pointer; } +.tabSelected {background-color: #0CC2DE;border:solid 1pt #0CC2DE;} +.scrollbar-dark {scrollbar-base-color:white;scrollbar-face-color: #2b2b2b;scrollbar-arrow-color:white; scrollbar-shadow-color:#2b2b2b;scrollbar-3dlight-color: #2b2b2b;scrollbar-highlight-color:#2b2b2b;scrollbar-track-color: white; } + +.SectionCaption{font-style:normal; font-weight: bold;font-size:12pt;font-family: Calibri,Arial; color:rgb(69,103,131)} +.SectionText{font-style:normal; font-weight: normal;font-size:8pt;font-family: Calibri,Arial; color:rgb(49,74,95)} +.SectionTextWhite{font-style:normal; font-weight: normal;font-size:8pt;font-family: Calibri,Arial; color:black} + +.Footer{BORDER-top: rgb(198,207,214) 5pt solid;BORDER-bottom:rgb(198,207,214) 2pt solid;BACKGROUND-COLOR: rgb(239,243,247);font-style:normal; font-weight: normal;font-size:10pt;font-family: Calibri,Arial; color:rgb(49,74,95)} + +li{margin: 0 0 0 9; list-style-type: square; font-family: Calibri, Arial; font-size: 11pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +ol li{ list-style-type:inherit !important; } + +A {COLOR: #000000; text-decoration: none; font-weight: normal; cursor:pointer; } +A:link {COLOR: #000000; text-decoration: none; font-weight: bold; } +A:visited {color: #000000; text-decoration: none;; font-weight: bold;} +A:hover {COLOR: #E2A21B; text-decoration: none;} + +td.ColorWin { padding: 0 0 0 0; margin: 0 0 0 0; border: 0 0 0 0; height: 12pt; width: 12pt;} +#PS.td {border-bottom: solid 1pt #ffcc00;} +Select {width:98pt;font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +.SelectDark {border-style:solid; border-width: 1px; border-color: white ; height:20px; font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #ffffff; text-decoration: none; background-color:#000000;background-image: url(http://i62.tinypic.com/15xvbd5.png) no-repeat 96% 0; } +INPUT[type=text] {width:95pt;font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none; border: solid 1pt #aaaaaa;padding: 1px} +INPUT.checkbox {width:15pt;font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +INPUT.file {width:160pt;font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;} +INPUT.ColorButton {width:50pt;font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none;} +INPUT.ColorButton2 {width:97pt;font-family: Calibri,Arial; font-size: 9pt; font-style: normal; font-weight: normal;} +INPUT.button {width:124pt;border-width:1;filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#FFFAFAE2', endColorstr='#FFC0C18B')} +INPUT.button2 {width:124pt;border-width:1;filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#FFFFEEE7', endColorstr='#FFDBA47B')} +td{font-style:normal; font-weight: normal;font-size:9pt;font-family: Calibri,Arial; color:rgb(49,74,95)} + +.SelectSymbol1 {height: 150pt; overflow:auto} +.SelectSymbol2 {height: 150pt; overflow:auto; background-color: #FFFFFF;} +.SelectedSymbol {font-style: italic; background-color: #00FFFF;} +.UnSelectedSymbol {font-style: normal; background-color: #FFFFFF;} + + +.PropertiesTable{border-collapse :separate;BORDER-RIGHT: #c6cbce 1pt solid; BORDER-TOP: #c6cbce 1pt solid; BORDER-LEFT: #c6cbce 1pt solid; BORDER-BOTTOM: #c6cbce 1pt solid; BACKGROUND-COLOR: #f7f7f7} +.PropertiesTDTop{PADDING-Left: 1pt; BORDER-BOTTOM: #c6cbce 1pt solid;font-family: Calibri,Arial; FONT-SIZE: 8pt;font-weight: bold;BACKGROUND-COLOR: #e6e3e0;} +.PropertiesTD{PADDING-Left: 1pt; BORDER-BOTTOM: #c6cbce 1pt solid;font-family: Calibri,Arial; FONT-SIZE: 8pt;font-weight: normal;} + +.ButtonYellow{BACKGROUND-COLOR: #ffffff;PADDING-RIGHT: 0pt; BACKGROUND-POSITION: left top; PADDING-LEFT: 0pt; FONT-WEIGHT: bold; FONT-SIZE: 8pt; PADDING-BOTTOM: 0pt; MARGIN: 0pt; COLOR: black; BORDER-TOP-STYLE: none; PADDING-TOP: 0pt; BACKGROUND-REPEAT: no-repeat; FONT-FAMILY: Calibri,Arial; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 21pt; BORDER-BOTTOM-STYLE: none;text-align :center;line-height:15pt;cursor:hand} +.ButtonYellowLeftTD{BACKGROUND-IMAGE: url(Images\ButtonYellowLeft.gif);width:2pt; background-repeat:no-repeat} +.ButtonYellowCenterTD{width:100% ;BACKGROUND-IMAGE: url(Images\ButtonYellowCenter.gif);text-align:center ; FONT-WEIGHT: bold; FONT-SIZE: 8pt; PADDING-BOTTOM: 0pt; MARGIN: 0pt; COLOR: black; FONT-FAMILY: Calibri,Arial;height:21pt} +.ButtonYellowRightTD{BACKGROUND-IMAGE: url(Images\ButtonYellowRight.gif);width:3pt; background-repeat:no-repeat} +.ButtonYellowTable{PADDING: 0pt; MARGIN: 0pt; WIDTH: 100%; HEIGHT: 100%; BORDER-STYLE:none} + +.link {cursor:pointer; } +.link2 {cursor:pointer;COLOR: #000000; text-decoration: none; } +.link2:hover {COLOR: #E2A21B; text-decoration: none;cursor: pointer;} +.underline {text-decoration: underline;} + +a.button { + background: transparent url('commonImg/bg_button_a.gif') no-repeat scroll top right; + color: #444; + display: block; + float: left; + font: normal 9pt Calibri,Arial, sans-serif; + height: 23pt; + margin-right: 5pt; + padding-right: 8pt; + text-decoration: none; +} + +a.button span { + background: transparent url('commonImg/bg_button_span.gif') no-repeat; + display: block; + line-height: 10pt; + padding: 4pt 0 4pt 8pt; +} + +a.button:active { + background-position: bottom right; + color: #000; + outline: none; +} + +a.button:active span { + background-position: bottom left; + padding: 5pt 0 3pt 8pt; +} +.hideUntillTranslated +{ + display:none; +} + +/* Animated checkbox */ +.switch { + float: inherit ; + position: relative; + display: inline-block; + width: 30px; + left: 5px; + height: 4px; + top:8px; +} + +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +.slider { + position: absolute; + cursor: pointer; + top: -4px; + left: -1px; + right: 0; + bottom: 0; + background-color: #88898E; + -webkit-transition: 0.4s; + transition: 0.4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 13px; + width: 13px; + left: -2px; + bottom: -4px; + background-color:white; + border: 2px solid #88898E; + -webkit-transition: 0.4s; + transition: 0.4s; +} + +input:checked + .slider { + background-color: #00869E; +} +input:checked + .slider:before { + border: 2px solid #00869E; +} +input:focus + .slider { + box-shadow: 0 0 1px #00869E; +} +input:checked + .slider:before { + -webkit-transform: translateX(20px); + -ms-transform: translateX(20px); + transform: translateX(20px); +} +/* Rounded sliders */ +.slider.round { + border-radius: 34px; +} +.slider.round:before { + border-radius: 50%; +} + +/* new selection box*/ +.selectNew {font-size: 11pt; font-family: Calibri,Arial; color: #000000; padding: 1px 15px 1px 1px; width: 100%; max-width: 100%; box-sizing: border-box; margin: 0; border: solid 1px #dddddd;box-shadow: 0px 0px 1px 2px rgba(0,0,0,.04); border-radius: 1px; -moz-appearance: none; -webkit-appearance: none; appearance: none; background-color: #ffffff; + background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'), linear-gradient(to bottom, #ffffff 0%,#ffffff 100%); background-repeat: no-repeat, repeat; background-position: right 5px top 50%, 0 0; background-size: 8px auto, 100%;} +/* Hide arrow icon in IE browsers */ +.selectNew::-ms-expand { display: none;} +/* Hover style */ +.selectNew:hover { border-color: #000000;} +/* Focus style */ +.selectNew:focus { border-color: #000000; /* It'd be nice to use -webkit-focus-ring-color here but it doesn't work on box-shadow */ + color: #000000; outline: none;} +/* Set options to normal weight */ +.selectNew option { font-weight:normal;} +/* Disabled styles */ +.selectNew:disabled, .selectNew[aria-disabled=true] { color: graytext; background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'), linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%);} +.selectNew:disabled:hover, .selectNew[aria-disabled=true] { border-color: #aaa;} \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon65.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon65.js new file mode 100644 index 0000000..d1c5991 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon65.js @@ -0,0 +1,703 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? +e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= +j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, +"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= +true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| +c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", +L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, +"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ +a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], +d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== +a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& +!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= +true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", +i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", +" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= +this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= +e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= +null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), +fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| +d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, +"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= +a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, +isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= +{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; +if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& +!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, +toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, +u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), +function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; +if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; +for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- +1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, +CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, +relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= +l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; +h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= +m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| +!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= +h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, +gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; +c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? +a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& +this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| +u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== +1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); +this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], +"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, +animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= +j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); +this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| +c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? +function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= +this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; +k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& +f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); + + +/* + JSON2.js +http://www.JSON.org/json2.js +2011-01-18 + +Public Domain. + +NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + +See http://www.JSON.org/js.html +*/ + +if(!this.JSON){this.JSON={};} +(function(){function f(n){return n<10?'0'+n:n;} +if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+ +f(this.getUTCMonth()+1)+'-'+ +f(this.getUTCDate())+'T'+ +f(this.getUTCHours())+':'+ +f(this.getUTCMinutes())+':'+ +f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};} +var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';} +function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);} +if(typeof rep==='function'){value=rep.call(holder,key,value);} +switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';} +gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';} +v=partial.length===0?'[]':gap?'[\n'+gap+ +partial.join(',\n'+gap)+'\n'+ +mind+']':'['+partial.join(',')+']';gap=mind;return v;} +if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}} +v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+ +mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}} +if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;} +rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');} +return str('',{'':value});};} +if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}} +return reviver.call(holder,key,value);} +cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+ +('0000'+a.charCodeAt(0).toString(16)).slice(-4);});} +if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;} +throw new SyntaxError('JSON.parse');};}}()); + +/* jQuery cookie */ +jQuery.cookie=function(d,c,a){if(typeof c!="undefined"){a=a||{};if(c===null)c="",a.expires=-1;var b="";if(a.expires&&(typeof a.expires=="number"||a.expires.toUTCString))typeof a.expires=="number"?(b=new Date,b.setTime(b.getTime()+a.expires*864E5)):b=a.expires,b="; expires="+b.toUTCString();var e=a.path?"; path="+a.path:"",f=a.domain?"; domain="+a.domain:"",a=a.secure?"; secure":"";document.cookie=[d,"=",encodeURIComponent(c),b,e,f,a].join("")}else{c=null;if(document.cookie&&document.cookie!=""){a=document.cookie.split(";");for(b=0;b<a.length;b++)if(e=jQuery.trim(a[b]),e.substring(0,d.length+1)==d+"="){c=decodeURIComponent(e.substring(d.length+1));break}}return c}}; + +/* color picker */ +"use strict"; window.jscolor || (window.jscolor = function () { var e = { register: function () { e.attachDOMReadyEvent(e.init), e.attachEvent(document, "mousedown", e.onDocumentMouseDown), e.attachEvent(document, "touchstart", e.onDocumentTouchStart), e.attachEvent(window, "resize", e.onWindowResize) }, init: function () { e.jscolor.lookupClass && e.jscolor.installByClassName(e.jscolor.lookupClass) }, tryInstallOnElements: function (t, n) { var r = new RegExp("(^|\\s)(" + n + ")(\\s*(\\{[^}]*\\})|\\s|$)", "i"); for (var i = 0; i < t.length; i += 1) { if (t[i].type !== undefined && t[i].type.toLowerCase() == "color" && e.isColorAttrSupported) continue; var s; if (!t[i].jscolor && t[i].className && (s = t[i].className.match(r))) { var o = t[i], u = null, a = e.getDataAttr(o, "jscolor"); a !== null ? u = a : s[4] && (u = s[4]); var f = {}; if (u) try { f = (new Function("return (" + u + ")"))() } catch (l) { e.warn("Error parsing jscolor options: " + l + ":\n" + u) } o.jscolor = new e.jscolor(o, f) } } }, isColorAttrSupported: function () { var e = document.createElement("input"); if (e.setAttribute) { e.setAttribute("type", "color"); if (e.type.toLowerCase() == "color") return !0 } return !1 } (), isCanvasSupported: function () { var e = document.createElement("canvas"); return !!e.getContext && !!e.getContext("2d") } (), fetchElement: function (e) { return typeof e == "string" ? document.getElementById(e) : e }, isElementType: function (e, t) { return e.nodeName.toLowerCase() === t.toLowerCase() }, getDataAttr: function (e, t) { var n = "data-" + t, r = e.getAttribute(n); return r !== null ? r : null }, attachEvent: function (e, t, n) { e.addEventListener ? e.addEventListener(t, n, !1) : e.attachEvent && e.attachEvent("on" + t, n) }, detachEvent: function (e, t, n) { e.removeEventListener ? e.removeEventListener(t, n, !1) : e.detachEvent && e.detachEvent("on" + t, n) }, _attachedGroupEvents: {}, attachGroupEvent: function (t, n, r, i) { e._attachedGroupEvents.hasOwnProperty(t) || (e._attachedGroupEvents[t] = []), e._attachedGroupEvents[t].push([n, r, i]), e.attachEvent(n, r, i) }, detachGroupEvents: function (t) { if (e._attachedGroupEvents.hasOwnProperty(t)) { for (var n = 0; n < e._attachedGroupEvents[t].length; n += 1) { var r = e._attachedGroupEvents[t][n]; e.detachEvent(r[0], r[1], r[2]) } delete e._attachedGroupEvents[t] } }, attachDOMReadyEvent: function (e) { var t = !1, n = function () { t || (t = !0, e()) }; if (document.readyState === "complete") { setTimeout(n, 1); return } if (document.addEventListener) document.addEventListener("DOMContentLoaded", n, !1), window.addEventListener("load", n, !1); else if (document.attachEvent) { document.attachEvent("onreadystatechange", function () { document.readyState === "complete" && (document.detachEvent("onreadystatechange", arguments.callee), n()) }), window.attachEvent("onload", n); if (document.documentElement.doScroll && window == window.top) { var r = function () { if (!document.body) return; try { document.documentElement.doScroll("left"), n() } catch (e) { setTimeout(r, 1) } }; r() } } }, warn: function (e) { window.console && window.console.warn && window.console.warn(e) }, preventDefault: function (e) { e.preventDefault && e.preventDefault(), e.returnValue = !1 }, captureTarget: function (t) { t.setCapture && (e._capturedTarget = t, e._capturedTarget.setCapture()) }, releaseTarget: function () { e._capturedTarget && (e._capturedTarget.releaseCapture(), e._capturedTarget = null) }, fireEvent: function (e, t) { if (!e) return; if (document.createEvent) { var n = document.createEvent("HTMLEvents"); n.initEvent(t, !0, !0), e.dispatchEvent(n) } else if (document.createEventObject) { var n = document.createEventObject(); e.fireEvent("on" + t, n) } else e["on" + t] && e["on" + t]() }, classNameToList: function (e) { return e.replace(/^\s+|\s+$/g, "").split(/\s+/) }, hasClass: function (e, t) { return t ? -1 != (" " + e.className.replace(/\s+/g, " ") + " ").indexOf(" " + t + " ") : !1 }, setClass: function (t, n) { var r = e.classNameToList(n); for (var i = 0; i < r.length; i += 1) e.hasClass(t, r[i]) || (t.className += (t.className ? " " : "") + r[i]) }, unsetClass: function (t, n) { var r = e.classNameToList(n); for (var i = 0; i < r.length; i += 1) { var s = new RegExp("^\\s*" + r[i] + "\\s*|" + "\\s*" + r[i] + "\\s*$|" + "\\s+" + r[i] + "(\\s+)", "g"); t.className = t.className.replace(s, "$1") } }, getStyle: function (e) { return window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle }, setStyle: function () { var e = document.createElement("div"), t = function (t) { for (var n = 0; n < t.length; n += 1) if (t[n] in e.style) return t[n] }, n = { borderRadius: t(["borderRadius", "MozBorderRadius", "webkitBorderRadius"]), boxShadow: t(["boxShadow", "MozBoxShadow", "webkitBoxShadow"]) }; return function (e, t, r) { switch (t.toLowerCase()) { case "opacity": var i = Math.round(parseFloat(r) * 100); e.style.opacity = r, e.style.filter = "alpha(opacity=" + i + ")"; break; default: e.style[n[t]] = r } } } (), setBorderRadius: function (t, n) { e.setStyle(t, "borderRadius", n || "0") }, setBoxShadow: function (t, n) { e.setStyle(t, "boxShadow", n || "none") }, getElementPos: function (t, n) { var r = 0, i = 0, s = t.getBoundingClientRect(); r = s.left, i = s.top; if (!n) { var o = e.getViewPos(); r += o[0], i += o[1] } return [r, i] }, getElementSize: function (e) { return [e.offsetWidth, e.offsetHeight] }, getAbsPointerPos: function (e) { e || (e = window.event); var t = 0, n = 0; return typeof e.changedTouches != "undefined" && e.changedTouches.length ? (t = e.changedTouches[0].clientX, n = e.changedTouches[0].clientY) : typeof e.clientX == "number" && (t = e.clientX, n = e.clientY), { x: t, y: n} }, getRelPointerPos: function (e) { e || (e = window.event); var t = e.target || e.srcElement, n = t.getBoundingClientRect(), r = 0, i = 0, s = 0, o = 0; return typeof e.changedTouches != "undefined" && e.changedTouches.length ? (s = e.changedTouches[0].clientX, o = e.changedTouches[0].clientY) : typeof e.clientX == "number" && (s = e.clientX, o = e.clientY), r = s - n.left, i = o - n.top, { x: r, y: i} }, getViewPos: function () { var e = document.documentElement; return [(window.pageXOffset || e.scrollLeft) - (e.clientLeft || 0), (window.pageYOffset || e.scrollTop) - (e.clientTop || 0)] }, getViewSize: function () { var e = document.documentElement; return [window.innerWidth || e.clientWidth, window.innerHeight || e.clientHeight] }, redrawPosition: function () { if (e.picker && e.picker.owner) { var t = e.picker.owner, n, r; t.fixed ? (n = e.getElementPos(t.targetElement, !0), r = [0, 0]) : (n = e.getElementPos(t.targetElement), r = e.getViewPos()); var i = e.getElementSize(t.targetElement), s = e.getViewSize(), o = e.getPickerOuterDims(t), u, a, f; switch (t.position.toLowerCase()) { case "left": u = 1, a = 0, f = -1; break; case "right": u = 1, a = 0, f = 1; break; case "top": u = 0, a = 1, f = -1; break; default: u = 0, a = 1, f = 1 } var l = (i[a] + o[a]) / 2; if (!t.smartPosition) var c = [n[u], n[a] + i[a] - l + l * f]; else var c = [-r[u] + n[u] + o[u] > s[u] ? -r[u] + n[u] + i[u] / 2 > s[u] / 2 && n[u] + i[u] - o[u] >= 0 ? n[u] + i[u] - o[u] : n[u] : n[u], -r[a] + n[a] + i[a] + o[a] - l + l * f > s[a] ? -r[a] + n[a] + i[a] / 2 > s[a] / 2 && n[a] + i[a] - l - l * f >= 0 ? n[a] + i[a] - l - l * f : n[a] + i[a] - l + l * f : n[a] + i[a] - l + l * f >= 0 ? n[a] + i[a] - l + l * f : n[a] + i[a] - l - l * f]; var h = c[u], p = c[a], d = t.fixed ? "fixed" : "absolute", v = (c[0] + o[0] > n[0] || c[0] < n[0] + i[0]) && c[1] + o[1] < n[1] + i[1]; e._drawPosition(t, h, p, d, v) } }, _drawPosition: function (t, n, r, i, s) { var o = s ? 0 : t.shadowBlur; e.picker.wrap.style.position = i, e.picker.wrap.style.left = n + "px", e.picker.wrap.style.top = r + "px", e.setBoxShadow(e.picker.boxS, t.shadow ? new e.BoxShadow(0, o, t.shadowBlur, 0, t.shadowColor) : null) }, getPickerDims: function (t) { var n = !!e.getSliderComponent(t), r = [2 * t.insetWidth + 2 * t.padding + t.width + (n ? 2 * t.insetWidth + e.getPadToSliderPadding(t) + t.sliderSize : 0), 2 * t.insetWidth + 2 * t.padding + t.height + (t.closable ? 2 * t.insetWidth + t.padding + t.buttonHeight : 0)]; return r }, getPickerOuterDims: function (t) { var n = e.getPickerDims(t); return [n[0] + 2 * t.borderWidth, n[1] + 2 * t.borderWidth] }, getPadToSliderPadding: function (e) { return Math.max(e.padding, 1.5 * (2 * e.pointerBorderWidth + e.pointerThickness)) }, getPadYComponent: function (e) { switch (e.mode.charAt(1).toLowerCase()) { case "v": return "v" } return "s" }, getSliderComponent: function (e) { if (e.mode.length > 2) switch (e.mode.charAt(2).toLowerCase()) { case "s": return "s"; case "v": return "v" } return null }, onDocumentMouseDown: function (t) { t || (t = window.event); var n = t.target || t.srcElement; n._jscLinkedInstance ? n._jscLinkedInstance.showOnClick && n._jscLinkedInstance.show() : n._jscControlName ? e.onControlPointerStart(t, n, n._jscControlName, "mouse") : e.picker && e.picker.owner && e.picker.owner.hide() }, onDocumentTouchStart: function (t) { t || (t = window.event); var n = t.target || t.srcElement; n._jscLinkedInstance ? n._jscLinkedInstance.showOnClick && n._jscLinkedInstance.show() : n._jscControlName ? e.onControlPointerStart(t, n, n._jscControlName, "touch") : e.picker && e.picker.owner && e.picker.owner.hide() }, onWindowResize: function (t) { e.redrawPosition() }, onParentScroll: function (t) { e.picker && e.picker.owner && e.picker.owner.hide() }, _pointerMoveEvent: { mouse: "mousemove", touch: "touchmove" }, _pointerEndEvent: { mouse: "mouseup", touch: "touchend" }, _pointerOrigin: null, _capturedTarget: null, onControlPointerStart: function (t, n, r, i) { var s = n._jscInstance; e.preventDefault(t), e.captureTarget(n); var o = function (s, o) { e.attachGroupEvent("drag", s, e._pointerMoveEvent[i], e.onDocumentPointerMove(t, n, r, i, o)), e.attachGroupEvent("drag", s, e._pointerEndEvent[i], e.onDocumentPointerEnd(t, n, r, i)) }; o(document, [0, 0]); if (window.parent && window.frameElement) { var u = window.frameElement.getBoundingClientRect(), a = [-u.left, -u.top]; o(window.parent.window.document, a) } var f = e.getAbsPointerPos(t), l = e.getRelPointerPos(t); e._pointerOrigin = { x: f.x - l.x, y: f.y - l.y }; switch (r) { case "pad": switch (e.getSliderComponent(s)) { case "s": s.hsv[1] === 0 && s.fromHSV(null, 100, null); break; case "v": s.hsv[2] === 0 && s.fromHSV(null, null, 100) } e.setPad(s, t, 0, 0); break; case "sld": e.setSld(s, t, 0) } e.dispatchFineChange(s) }, onDocumentPointerMove: function (t, n, r, i, s) { return function (t) { var i = n._jscInstance; switch (r) { case "pad": t || (t = window.event), e.setPad(i, t, s[0], s[1]), e.dispatchFineChange(i); break; case "sld": t || (t = window.event), e.setSld(i, t, s[1]), e.dispatchFineChange(i) } } }, onDocumentPointerEnd: function (t, n, r, i) { return function (t) { var r = n._jscInstance; e.detachGroupEvents("drag"), e.releaseTarget(), e.dispatchChange(r) } }, dispatchChange: function (t) { t.valueElement && e.isElementType(t.valueElement, "input") && e.fireEvent(t.valueElement, "change") }, dispatchFineChange: function (e) { if (e.onFineChange) { var t; typeof e.onFineChange == "string" ? t = new Function(e.onFineChange) : t = e.onFineChange, t.call(e) } }, setPad: function (t, n, r, i) { var s = e.getAbsPointerPos(n), o = r + s.x - e._pointerOrigin.x - t.padding - t.insetWidth, u = i + s.y - e._pointerOrigin.y - t.padding - t.insetWidth, a = o * (360 / (t.width - 1)), f = 100 - u * (100 / (t.height - 1)); switch (e.getPadYComponent(t)) { case "s": t.fromHSV(a, f, null, e.leaveSld); break; case "v": t.fromHSV(a, null, f, e.leaveSld) } }, setSld: function (t, n, r) { var i = e.getAbsPointerPos(n), s = r + i.y - e._pointerOrigin.y - t.padding - t.insetWidth, o = 100 - s * (100 / (t.height - 1)); switch (e.getSliderComponent(t)) { case "s": t.fromHSV(null, o, null, e.leavePad); break; case "v": t.fromHSV(null, null, o, e.leavePad) } }, _vmlNS: "jsc_vml_", _vmlCSS: "jsc_vml_css_", _vmlReady: !1, initVML: function () { if (!e._vmlReady) { var t = document; t.namespaces[e._vmlNS] || t.namespaces.add(e._vmlNS, "urn:schemas-microsoft-com:vml"); if (!t.styleSheets[e._vmlCSS]) { var n = ["shape", "shapetype", "group", "background", "path", "formulas", "handles", "fill", "stroke", "shadow", "textbox", "textpath", "imagedata", "line", "polyline", "curve", "rect", "roundrect", "oval", "arc", "image"], r = t.createStyleSheet(); r.owningElement.id = e._vmlCSS; for (var i = 0; i < n.length; i += 1) r.addRule(e._vmlNS + "\\:" + n[i], "behavior:url(#default#VML);") } e._vmlReady = !0 } }, createPalette: function () { var t = { elm: null, draw: null }; if (e.isCanvasSupported) { var n = document.createElement("canvas"), r = n.getContext("2d"), i = function (e, t, i) { n.width = e, n.height = t, r.clearRect(0, 0, n.width, n.height); var s = r.createLinearGradient(0, 0, n.width, 0); s.addColorStop(0, "#F00"), s.addColorStop(1 / 6, "#FF0"), s.addColorStop(2 / 6, "#0F0"), s.addColorStop(.5, "#0FF"), s.addColorStop(4 / 6, "#00F"), s.addColorStop(5 / 6, "#F0F"), s.addColorStop(1, "#F00"), r.fillStyle = s, r.fillRect(0, 0, n.width, n.height); var o = r.createLinearGradient(0, 0, 0, n.height); switch (i.toLowerCase()) { case "s": o.addColorStop(0, "rgba(255,255,255,0)"), o.addColorStop(1, "rgba(255,255,255,1)"); break; case "v": o.addColorStop(0, "rgba(0,0,0,0)"), o.addColorStop(1, "rgba(0,0,0,1)") } r.fillStyle = o, r.fillRect(0, 0, n.width, n.height) }; t.elm = n, t.draw = i } else { e.initVML(); var s = document.createElement("div"); s.style.position = "relative", s.style.overflow = "hidden"; var o = document.createElement(e._vmlNS + ":fill"); o.type = "gradient", o.method = "linear", o.angle = "90", o.colors = "16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0"; var u = document.createElement(e._vmlNS + ":rect"); u.style.position = "absolute", u.style.left = "-1px", u.style.top = "-1px", u.stroked = !1, u.appendChild(o), s.appendChild(u); var a = document.createElement(e._vmlNS + ":fill"); a.type = "gradient", a.method = "linear", a.angle = "180", a.opacity = "0"; var f = document.createElement(e._vmlNS + ":rect"); f.style.position = "absolute", f.style.left = "-1px", f.style.top = "-1px", f.stroked = !1, f.appendChild(a), s.appendChild(f); var i = function (e, t, n) { s.style.width = e + "px", s.style.height = t + "px", u.style.width = f.style.width = e + 1 + "px", u.style.height = f.style.height = t + 1 + "px", o.color = "#F00", o.color2 = "#F00"; switch (n.toLowerCase()) { case "s": a.color = a.color2 = "#FFF"; break; case "v": a.color = a.color2 = "#000" } }; t.elm = s, t.draw = i } return t }, createSliderGradient: function () { var t = { elm: null, draw: null }; if (e.isCanvasSupported) { var n = document.createElement("canvas"), r = n.getContext("2d"), i = function (e, t, i, s) { n.width = e, n.height = t, r.clearRect(0, 0, n.width, n.height); var o = r.createLinearGradient(0, 0, 0, n.height); o.addColorStop(0, i), o.addColorStop(1, s), r.fillStyle = o, r.fillRect(0, 0, n.width, n.height) }; t.elm = n, t.draw = i } else { e.initVML(); var s = document.createElement("div"); s.style.position = "relative", s.style.overflow = "hidden"; var o = document.createElement(e._vmlNS + ":fill"); o.type = "gradient", o.method = "linear", o.angle = "180"; var u = document.createElement(e._vmlNS + ":rect"); u.style.position = "absolute", u.style.left = "-1px", u.style.top = "-1px", u.stroked = !1, u.appendChild(o), s.appendChild(u); var i = function (e, t, n, r) { s.style.width = e + "px", s.style.height = t + "px", u.style.width = e + 1 + "px", u.style.height = t + 1 + "px", o.color = n, o.color2 = r }; t.elm = s, t.draw = i } return t }, leaveValue: 1, leaveStyle: 2, leavePad: 4, leaveSld: 8, BoxShadow: function () { var e = function (e, t, n, r, i, s) { this.hShadow = e, this.vShadow = t, this.blur = n, this.spread = r, this.color = i, this.inset = !!s }; return e.prototype.toString = function () { var e = [Math.round(this.hShadow) + "px", Math.round(this.vShadow) + "px", Math.round(this.blur) + "px", Math.round(this.spread) + "px", this.color]; return this.inset && e.push("inset"), e.join(" ") }, e } (), jscolor: function (t, n) { function i(e, t, n) { e /= 255, t /= 255, n /= 255; var r = Math.min(Math.min(e, t), n), i = Math.max(Math.max(e, t), n), s = i - r; if (s === 0) return [null, 0, 100 * i]; var o = e === r ? 3 + (n - t) / s : t === r ? 5 + (e - n) / s : 1 + (t - e) / s; return [60 * (o === 6 ? 0 : o), 100 * (s / i), 100 * i] } function s(e, t, n) { var r = 255 * (n / 100); if (e === null) return [r, r, r]; e /= 60, t /= 100; var i = Math.floor(e), s = i % 2 ? e - i : 1 - (e - i), o = r * (1 - t), u = r * (1 - t * s); switch (i) { case 6: case 0: return [r, u, o]; case 1: return [u, r, o]; case 2: return [o, r, u]; case 3: return [o, u, r]; case 4: return [u, o, r]; case 5: return [r, o, u] } } function o() { e.unsetClass(d.targetElement, d.activeClass), e.picker.wrap.parentNode.removeChild(e.picker.wrap), delete e.picker.owner } function u() { function l() { var e = d.insetColor.split(/\s+/), n = e.length < 2 ? e[0] : e[1] + " " + e[0] + " " + e[0] + " " + e[1]; t.btn.style.borderColor = n } d._processParentElementsInDOM(), e.picker || (e.picker = { owner: null, wrap: document.createElement("div"), box: document.createElement("div"), boxS: document.createElement("div"), boxB: document.createElement("div"), pad: document.createElement("div"), padB: document.createElement("div"), padM: document.createElement("div"), padPal: e.createPalette(), cross: document.createElement("div"), crossBY: document.createElement("div"), crossBX: document.createElement("div"), crossLY: document.createElement("div"), crossLX: document.createElement("div"), sld: document.createElement("div"), sldB: document.createElement("div"), sldM: document.createElement("div"), sldGrad: e.createSliderGradient(), sldPtrS: document.createElement("div"), sldPtrIB: document.createElement("div"), sldPtrMB: document.createElement("div"), sldPtrOB: document.createElement("div"), btn: document.createElement("div"), btnT: document.createElement("span") }, e.picker.pad.appendChild(e.picker.padPal.elm), e.picker.padB.appendChild(e.picker.pad), e.picker.cross.appendChild(e.picker.crossBY), e.picker.cross.appendChild(e.picker.crossBX), e.picker.cross.appendChild(e.picker.crossLY), e.picker.cross.appendChild(e.picker.crossLX), e.picker.padB.appendChild(e.picker.cross), e.picker.box.appendChild(e.picker.padB), e.picker.box.appendChild(e.picker.padM), e.picker.sld.appendChild(e.picker.sldGrad.elm), e.picker.sldB.appendChild(e.picker.sld), e.picker.sldB.appendChild(e.picker.sldPtrOB), e.picker.sldPtrOB.appendChild(e.picker.sldPtrMB), e.picker.sldPtrMB.appendChild(e.picker.sldPtrIB), e.picker.sldPtrIB.appendChild(e.picker.sldPtrS), e.picker.box.appendChild(e.picker.sldB), e.picker.box.appendChild(e.picker.sldM), e.picker.btn.appendChild(e.picker.btnT), e.picker.box.appendChild(e.picker.btn), e.picker.boxB.appendChild(e.picker.box), e.picker.wrap.appendChild(e.picker.boxS), e.picker.wrap.appendChild(e.picker.boxB)); var t = e.picker, n = !!e.getSliderComponent(d), r = e.getPickerDims(d), i = 2 * d.pointerBorderWidth + d.pointerThickness + 2 * d.crossSize, s = e.getPadToSliderPadding(d), o = Math.min(d.borderRadius, Math.round(d.padding * Math.PI)), u = "crosshair"; t.wrap.style.clear = "both", t.wrap.style.width = r[0] + 2 * d.borderWidth + "px", t.wrap.style.height = r[1] + 2 * d.borderWidth + "px", t.wrap.style.zIndex = d.zIndex, t.box.style.width = r[0] + "px", t.box.style.height = r[1] + "px", t.boxS.style.position = "absolute", t.boxS.style.left = "0", t.boxS.style.top = "0", t.boxS.style.width = "100%", t.boxS.style.height = "100%", e.setBorderRadius(t.boxS, o + "px"), t.boxB.style.position = "relative", t.boxB.style.border = d.borderWidth + "px solid", t.boxB.style.borderColor = d.borderColor, t.boxB.style.background = d.backgroundColor, e.setBorderRadius(t.boxB, o + "px"), t.padM.style.background = t.sldM.style.background = "#FFF", e.setStyle(t.padM, "opacity", "0"), e.setStyle(t.sldM, "opacity", "0"), t.pad.style.position = "relative", t.pad.style.width = d.width + "px", t.pad.style.height = d.height + "px", t.padPal.draw(d.width, d.height, e.getPadYComponent(d)), t.padB.style.position = "absolute", t.padB.style.left = d.padding + "px", t.padB.style.top = d.padding + "px", t.padB.style.border = d.insetWidth + "px solid", t.padB.style.borderColor = d.insetColor, t.padM._jscInstance = d, t.padM._jscControlName = "pad", t.padM.style.position = "absolute", t.padM.style.left = "0", t.padM.style.top = "0", t.padM.style.width = d.padding + 2 * d.insetWidth + d.width + s / 2 + "px", t.padM.style.height = r[1] + "px", t.padM.style.cursor = u, t.cross.style.position = "absolute", t.cross.style.left = t.cross.style.top = "0", t.cross.style.width = t.cross.style.height = i + "px", t.crossBY.style.position = t.crossBX.style.position = "absolute", t.crossBY.style.background = t.crossBX.style.background = d.pointerBorderColor, t.crossBY.style.width = t.crossBX.style.height = 2 * d.pointerBorderWidth + d.pointerThickness + "px", t.crossBY.style.height = t.crossBX.style.width = i + "px", t.crossBY.style.left = t.crossBX.style.top = Math.floor(i / 2) - Math.floor(d.pointerThickness / 2) - d.pointerBorderWidth + "px", t.crossBY.style.top = t.crossBX.style.left = "0", t.crossLY.style.position = t.crossLX.style.position = "absolute", t.crossLY.style.background = t.crossLX.style.background = d.pointerColor, t.crossLY.style.height = t.crossLX.style.width = i - 2 * d.pointerBorderWidth + "px", t.crossLY.style.width = t.crossLX.style.height = d.pointerThickness + "px", t.crossLY.style.left = t.crossLX.style.top = Math.floor(i / 2) - Math.floor(d.pointerThickness / 2) + "px", t.crossLY.style.top = t.crossLX.style.left = d.pointerBorderWidth + "px", t.sld.style.overflow = "hidden", t.sld.style.width = d.sliderSize + "px", t.sld.style.height = d.height + "px", t.sldGrad.draw(d.sliderSize, d.height, "#000", "#000"), t.sldB.style.display = n ? "block" : "none", t.sldB.style.position = "absolute", t.sldB.style.right = d.padding + "px", t.sldB.style.top = d.padding + "px", t.sldB.style.border = d.insetWidth + "px solid", t.sldB.style.borderColor = d.insetColor, t.sldM._jscInstance = d, t.sldM._jscControlName = "sld", t.sldM.style.display = n ? "block" : "none", t.sldM.style.position = "absolute", t.sldM.style.right = "0", t.sldM.style.top = "0", t.sldM.style.width = d.sliderSize + s / 2 + d.padding + 2 * d.insetWidth + "px", t.sldM.style.height = r[1] + "px", t.sldM.style.cursor = "default", t.sldPtrIB.style.border = t.sldPtrOB.style.border = d.pointerBorderWidth + "px solid " + d.pointerBorderColor, t.sldPtrOB.style.position = "absolute", t.sldPtrOB.style.left = -(2 * d.pointerBorderWidth + d.pointerThickness) + "px", t.sldPtrOB.style.top = "0", t.sldPtrMB.style.border = d.pointerThickness + "px solid " + d.pointerColor, t.sldPtrS.style.width = d.sliderSize + "px", t.sldPtrS.style.height = m + "px", t.btn.style.display = d.closable ? "block" : "none", t.btn.style.position = "absolute", t.btn.style.left = d.padding + "px", t.btn.style.bottom = d.padding + "px", t.btn.style.padding = "0 15px", t.btn.style.height = d.buttonHeight + "px", t.btn.style.border = d.insetWidth + "px solid", l(), t.btn.style.color = d.buttonColor, t.btn.style.font = "12px sans-serif", t.btn.style.textAlign = "center"; try { t.btn.style.cursor = "pointer" } catch (c) { t.btn.style.cursor = "hand" } t.btn.onmousedown = function () { d.hide() }, t.btnT.style.lineHeight = d.buttonHeight + "px", t.btnT.innerHTML = "", t.btnT.appendChild(document.createTextNode(d.closeText)), a(), f(), e.picker.owner && e.picker.owner !== d && e.unsetClass(e.picker.owner.targetElement, d.activeClass), e.picker.owner = d, e.isElementType(v, "body") ? e.redrawPosition() : e._drawPosition(d, 0, 0, "relative", !1), t.wrap.parentNode != v && v.appendChild(t.wrap), e.setClass(d.targetElement, d.activeClass) } function a() { switch (e.getPadYComponent(d)) { case "s": var t = 1; break; case "v": var t = 2 } var n = Math.round(d.hsv[0] / 360 * (d.width - 1)), r = Math.round((1 - d.hsv[t] / 100) * (d.height - 1)), i = 2 * d.pointerBorderWidth + d.pointerThickness + 2 * d.crossSize, o = -Math.floor(i / 2); e.picker.cross.style.left = n + o + "px", e.picker.cross.style.top = r + o + "px"; switch (e.getSliderComponent(d)) { case "s": var u = s(d.hsv[0], 100, d.hsv[2]), a = s(d.hsv[0], 0, d.hsv[2]), f = "rgb(" + Math.round(u[0]) + "," + Math.round(u[1]) + "," + Math.round(u[2]) + ")", l = "rgb(" + Math.round(a[0]) + "," + Math.round(a[1]) + "," + Math.round(a[2]) + ")"; e.picker.sldGrad.draw(d.sliderSize, d.height, f, l); break; case "v": var c = s(d.hsv[0], d.hsv[1], 100), f = "rgb(" + Math.round(c[0]) + "," + Math.round(c[1]) + "," + Math.round(c[2]) + ")", l = "#000"; e.picker.sldGrad.draw(d.sliderSize, d.height, f, l) } } function f() { var t = e.getSliderComponent(d); if (t) { switch (t) { case "s": var n = 1; break; case "v": var n = 2 } var r = Math.round((1 - d.hsv[n] / 100) * (d.height - 1)); e.picker.sldPtrOB.style.top = r - (2 * d.pointerBorderWidth + d.pointerThickness) - Math.floor(m / 2) + "px" } } function l() { return e.picker && e.picker.owner === d } function c() { d.importColor() } this.value = null, this.valueElement = t, this.styleElement = t, this.required = !0, this.refine = !0, this.hash = !1, this.uppercase = !0, this.onFineChange = null, this.activeClass = "jscolor-active", this.minS = 0, this.maxS = 100, this.minV = 0, this.maxV = 100, this.hsv = [0, 0, 100], this.rgb = [255, 255, 255], this.width = 181, this.height = 101, this.showOnClick = !0, this.mode = "HSV", this.position = "bottom", this.smartPosition = !0, this.sliderSize = 16, this.crossSize = 8, this.closable = !1, this.closeText = "Close", this.buttonColor = "#000000", this.buttonHeight = 18, this.padding = 12, this.backgroundColor = "#FFFFFF", this.borderWidth = 1, this.borderColor = "#BBBBBB", this.borderRadius = 8, this.insetWidth = 1, this.insetColor = "#BBBBBB", this.shadow = !0, this.shadowBlur = 15, this.shadowColor = "rgba(0,0,0,0.2)", this.pointerColor = "#4C4C4C", this.pointerBorderColor = "#FFFFFF", this.pointerBorderWidth = 1, this.pointerThickness = 2, this.zIndex = 1e3, this.container = null; for (var r in n) n.hasOwnProperty(r) && (this[r] = n[r]); this.hide = function () { l() && o() }, this.show = function () { u() }, this.redraw = function () { l() && u() }, this.importColor = function () { this.valueElement ? e.isElementType(this.valueElement, "input") ? this.refine ? !this.required && /^\s*$/.test(this.valueElement.value) ? (this.valueElement.value = "", this.styleElement && (this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage, this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor, this.styleElement.style.color = this.styleElement._jscOrigStyle.color), this.exportColor(e.leaveValue | e.leaveStyle)) : this.fromString(this.valueElement.value) || this.exportColor() : this.fromString(this.valueElement.value, e.leaveValue) || (this.styleElement && (this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage, this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor, this.styleElement.style.color = this.styleElement._jscOrigStyle.color), this.exportColor(e.leaveValue | e.leaveStyle)) : this.exportColor() : this.exportColor() }, this.exportColor = function (t) { if (!(t & e.leaveValue) && this.valueElement) { var n = this.toString(); this.uppercase && (n = n.toUpperCase()), this.hash && (n = "#" + n), e.isElementType(this.valueElement, "input") ? this.valueElement.value = n : this.valueElement.innerHTML = n } t & e.leaveStyle || this.styleElement && (this.styleElement.style.backgroundImage = "none", this.styleElement.style.backgroundColor = "#" + this.toString(), this.styleElement.style.color = this.isLight() ? "#000" : "#FFF"), !(t & e.leavePad) && l() && a(), !(t & e.leaveSld) && l() && f() }, this.fromHSV = function (e, t, n, r) { if (e !== null) { if (isNaN(e)) return !1; e = Math.max(0, Math.min(360, e)) } if (t !== null) { if (isNaN(t)) return !1; t = Math.max(0, Math.min(100, this.maxS, t), this.minS) } if (n !== null) { if (isNaN(n)) return !1; n = Math.max(0, Math.min(100, this.maxV, n), this.minV) } this.rgb = s(e === null ? this.hsv[0] : this.hsv[0] = e, t === null ? this.hsv[1] : this.hsv[1] = t, n === null ? this.hsv[2] : this.hsv[2] = n), this.exportColor(r) }, this.fromRGB = function (e, t, n, r) { if (e !== null) { if (isNaN(e)) return !1; e = Math.max(0, Math.min(255, e)) } if (t !== null) { if (isNaN(t)) return !1; t = Math.max(0, Math.min(255, t)) } if (n !== null) { if (isNaN(n)) return !1; n = Math.max(0, Math.min(255, n)) } var o = i(e === null ? this.rgb[0] : e, t === null ? this.rgb[1] : t, n === null ? this.rgb[2] : n); o[0] !== null && (this.hsv[0] = Math.max(0, Math.min(360, o[0]))), o[2] !== 0 && (this.hsv[1] = o[1] === null ? null : Math.max(0, this.minS, Math.min(100, this.maxS, o[1]))), this.hsv[2] = o[2] === null ? null : Math.max(0, this.minV, Math.min(100, this.maxV, o[2])); var u = s(this.hsv[0], this.hsv[1], this.hsv[2]); this.rgb[0] = u[0], this.rgb[1] = u[1], this.rgb[2] = u[2], this.exportColor(r) }, this.fromString = function (e, t) { var n; if (n = e.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i)) return n[1].length === 6 ? this.fromRGB(parseInt(n[1].substr(0, 2), 16), parseInt(n[1].substr(2, 2), 16), parseInt(n[1].substr(4, 2), 16), t) : this.fromRGB(parseInt(n[1].charAt(0) + n[1].charAt(0), 16), parseInt(n[1].charAt(1) + n[1].charAt(1), 16), parseInt(n[1].charAt(2) + n[1].charAt(2), 16), t), !0; if (n = e.match(/^\W*rgba?\(([^)]*)\)\W*$/i)) { var r = n[1].split(","), i = /^\s*(\d*)(\.\d+)?\s*$/, s, o, u; if (r.length >= 3 && (s = r[0].match(i)) && (o = r[1].match(i)) && (u = r[2].match(i))) { var a = parseFloat((s[1] || "0") + (s[2] || "")), f = parseFloat((o[1] || "0") + (o[2] || "")), l = parseFloat((u[1] || "0") + (u[2] || "")); return this.fromRGB(a, f, l, t), !0 } } return !1 }, this.toString = function () { return (256 | Math.round(this.rgb[0])).toString(16).substr(1) + (256 | Math.round(this.rgb[1])).toString(16).substr(1) + (256 | Math.round(this.rgb[2])).toString(16).substr(1) }, this.toHEXString = function () { return "#" + this.toString().toUpperCase() }, this.toRGBString = function () { return "rgb(" + Math.round(this.rgb[0]) + "," + Math.round(this.rgb[1]) + "," + Math.round(this.rgb[2]) + ")" }, this.isLight = function () { return .213 * this.rgb[0] + .715 * this.rgb[1] + .072 * this.rgb[2] > 127.5 }, this._processParentElementsInDOM = function () { if (this._linkedElementsProcessed) return; this._linkedElementsProcessed = !0; var t = this.targetElement; do { var n = e.getStyle(t); n && n.position.toLowerCase() === "fixed" && (this.fixed = !0), t !== this.targetElement && (t._jscEventsAttached || (e.attachEvent(t, "scroll", e.onParentScroll), t._jscEventsAttached = !0)) } while ((t = t.parentNode) && !e.isElementType(t, "body")) }; if (typeof t == "string") { var h = t, p = document.getElementById(h); p ? this.targetElement = p : e.warn("Could not find target element with ID '" + h + "'") } else t ? this.targetElement = t : e.warn("Invalid target element: '" + t + "'"); if (this.targetElement._jscLinkedInstance) { e.warn("Cannot link jscolor twice to the same element. Skipping."); return } this.targetElement._jscLinkedInstance = this, this.valueElement = e.fetchElement(this.valueElement), this.styleElement = e.fetchElement(this.styleElement); var d = this, v = this.container ? e.fetchElement(this.container) : document.getElementsByTagName("body")[0], m = 3; if (e.isElementType(this.targetElement, "button")) if (this.targetElement.onclick) { var g = this.targetElement.onclick; this.targetElement.onclick = function (e) { return g.call(this, e), !1 } } else this.targetElement.onclick = function () { return !1 }; if (this.valueElement && e.isElementType(this.valueElement, "input")) { var y = function () { d.fromString(d.valueElement.value, e.leaveValue), e.dispatchFineChange(d) }; e.attachEvent(this.valueElement, "keyup", y), e.attachEvent(this.valueElement, "input", y), e.attachEvent(this.valueElement, "blur", c), this.valueElement.setAttribute("autocomplete", "off") } this.styleElement && (this.styleElement._jscOrigStyle = { backgroundImage: this.styleElement.style.backgroundImage, backgroundColor: this.styleElement.style.backgroundColor, color: this.styleElement.style.color }), this.value ? this.fromString(this.value) || this.exportColor() : this.importColor() } }; return e.jscolor.lookupClass = "jscolor", e.jscolor.installByClassName = function (t) { var n = document.getElementsByTagName("input"), r = document.getElementsByTagName("button"); e.tryInstallOnElements(n, t), e.tryInstallOnElements(r, t) }, e.register(), e.jscolor } ()); + + +/* +New API enums. Generated from Freeze20 +*/ +var ActionCode = {}; ActionCode.AC_FLYTO = 0; ActionCode.AC_CIRCLEPATTERN = 1; ActionCode.AC_OVALPATTERN = 2; ActionCode.AC_LINEPATTERN = 3; ActionCode.AC_ARCPATTERN = 4; ActionCode.AC_FOLLOWBEHIND = 5; ActionCode.AC_FOLLOWABOVE = 6; ActionCode.AC_FOLLOWBELOW = 7; ActionCode.AC_FOLLOWRIGHT = 8; ActionCode.AC_FOLLOWLEFT = 9; ActionCode.AC_FOLLOWBEHINDANDABOVE = 10; ActionCode.AC_FOLLOWCOCKPIT = 11; ActionCode.AC_FOLLOWFROMGROUND = 12; ActionCode.AC_STOP = 13; ActionCode.AC_JUMP = 14; ActionCode.AC_DELETE = 15; ActionCode.AC_EDIT_FINISHED = 16; ActionCode.AC_OBJECT_ADDED = 17; ActionCode.AC_PLAY = 18; ActionCode.AC_SHOW = 19; ActionCode.AC_EDIT_STARTED = 20; ActionCode.AC_SELCHANGED = 21; ActionCode.AC_WAYPOINT_REACHED = 22; ActionCode.AC_GROUP_ADDED = 23; ActionCode.AC_LAYER_ADDED = 24; ActionCode.AC_LAYER_REFRESHED = 25; ActionCode.AC_ITEM_MOVED=26; var AltitudeTypeCode = {}; AltitudeTypeCode.ATC_TERRAIN_RELATIVE = 0; AltitudeTypeCode.ATC_PIVOT_RELATIVE = 1; AltitudeTypeCode.ATC_ON_TERRAIN = 2; AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE = 3; AltitudeTypeCode.ATC_DEFAULT = 999; var DynamicMotionStyle = {}; DynamicMotionStyle.MOTION_GROUND_VEHICLE = 0; DynamicMotionStyle.MOTION_AIRPLANE = 1; DynamicMotionStyle.MOTION_HELICOPTER = 2; DynamicMotionStyle.MOTION_HOVER = 3; var DynamicObjectType = {}; DynamicObjectType.DYNAMIC_3D_MODEL = 0; DynamicObjectType.DYNAMIC_TEXT_LABEL = 1; DynamicObjectType.DYNAMIC_IMAGE_LABEL = 2; DynamicObjectType.DYNAMIC_VIRTUAL = 3; var LabelStyle = {}; LabelStyle.LS_DEFAULT = 0; LabelStyle.LS_STREET = 1; LabelStyle.LS_STATE = 2; var MsgClient6 = {}; MsgClient6.MC_LEFT = 0; MsgClient6.MC_MAIN = 2; MsgClient6.MC_MESSAGE_BAR = 3; MsgClient6.MC_FLOAT = 4; MsgClient6.MC_POPUP = 5; var MsgType = {}; MsgType.TYPE_TEXT = 0; MsgType.TYPE_URL = 1; MsgType.TYPE_SCRIPT = 3; var ModelTypeCode = {}; ModelTypeCode.MT_NORMAL = 0; ModelTypeCode.MT_ANIMATION = 1; ModelTypeCode.MT_PROGRESSIVE = 2; var LayerGeometryType = {}; LayerGeometryType.LGT_POINT = 0; LayerGeometryType.LGT_POLYLINE = 1; LayerGeometryType.LGT_POLYGON = 2; LayerGeometryType.LGT_COLLECTION = 3; LayerGeometryType.LGT_NONE = -1; var SphereStyle = {}; SphereStyle.SPHERE_NORMAL = 0; SphereStyle.SPHERE_UPPER_HALF = 1; SphereStyle.SPHERE_LOWER_HALF = 2; SphereStyle.SPHERE_UPPER_HALF_BASE = 3; SphereStyle.SPHERE_LOWER_HALF_BASE = 4; var ElevationBehaviorMode = {}; ElevationBehaviorMode.EB_REPLACE = 0; ElevationBehaviorMode.EB_BELOW = 1; ElevationBehaviorMode.EB_ABOVE = 2; var EditItemFlags = {}; EditItemFlags.EDIT_ITEM_USE_PROPERTY = 0; EditItemFlags.EDIT_ITEM = 1; EditItemFlags.EDIT_ITEM_VERTICES = 2; EditItemFlags.EDIT_ITEM_BUILDING_ROOF = 3; var ItemCode = {}; ItemCode.SELECTED = 10; ItemCode.CHILD = 11; ItemCode.FIRSTVISIBLE = 12; ItemCode.NEXT = 13; ItemCode.NEXTVISIBLE = 14; ItemCode.PARENT = 15; ItemCode.PREVIOUS = 16; ItemCode.PREVIOUSVISIBLE = 17; ItemCode.ROOT = 18; var SortType = {}; SortType.SORT_ALPHABETICALLY_AZ = 0; SortType.SORT_ALPHABETICALLY_ZA = 1; SortType.SORT_BY_TYPE = 2; SortType.SORT_NO_SORT = 3; var WorldPointType = {}; WorldPointType.WPT_MODEL = 1; WorldPointType.WPT_LABEL = 2; WorldPointType.WPT_PRIMITIVE = 4; WorldPointType.WPT_ANIM = 8; WorldPointType.WPT_BUILDING = 16; WorldPointType.WPT_SKY = 32; WorldPointType.WPT_ACCURATE_CPT = 64; WorldPointType.WPT_BBOX_CPT = 128; WorldPointType.WPT_VIDEO = 256; WorldPointType.WPT_UNDERGROUND = 512; WorldPointType.WPT_SCREEN_OVERLAY = 1024; WorldPointType.WPT_SCREEN_CONTROL = 2048; WorldPointType.WPT_SCREEN_COVERED = 4096; WorldPointType.WPT_ALL = -1; var MouseInputMode = {}; MouseInputMode.MI_FREE_FLIGHT = 0; MouseInputMode.MI_COM_CLIENT = 1; MouseInputMode.MI_CONTROLLED_FLIGHT = 2; MouseInputMode.MI_EDIT = 3; MouseInputMode.MI_MEASURAMENT = 4; var MessageBarTextAlignment = {}; MessageBarTextAlignment.MBT_LEFT = 0; MessageBarTextAlignment.MBT_CENTER = 1; MessageBarTextAlignment.MBT_RIGHT = 2; var AccuracyLevel = {}; AccuracyLevel.ACCURACY_NORMAL = 0; AccuracyLevel.ACCURACY_BEST_FROM_MEMORY = 1; AccuracyLevel.ACCURACY_BEST_FROM_MPT = 2; var PermissionType = {}; PermissionType.LMP_ENABLE_ALL = 0; PermissionType.LMP_DISABLE_API = 1; PermissionType.LMP_DISABLE_UI = 2; PermissionType.LMP_DISABLE_ALL = -1; var SliderDisplayMode = {}; SliderDisplayMode.MODE_TIME_NONE = 0; SliderDisplayMode.MODE_FIXED_TIME = 1; SliderDisplayMode.MODE_TIME = 2; SliderDisplayMode.MODE_RANGE_PROJECT = 4; SliderDisplayMode.MODE_RANGE_CUSTOM = 8; SliderDisplayMode.MODE_ADJUST_FOR_GROUP = 16; var TimeZoneType = {}; TimeZoneType.TIME_ZONE_TYPE_MY_COMPUTER = 0; TimeZoneType.TIME_ZONE_TYPE_UTC = 1; TimeZoneType.TIME_ZONE_TYPE_SPECIFIC = 2; var TEVesrionType = {}; TEVesrionType.TEVT_PRO = 0; TEVesrionType.TEVT_PLUS = 1; TEVesrionType.TEVT_VIEWER = 2; TEVesrionType.TEVT_UNKNOWN = -1; var ObjectTypeCode = {}; ObjectTypeCode.OT_UNDEFINED = 0; ObjectTypeCode.OT_POLYLINE = 1; ObjectTypeCode.OT_POLYGON = 2; ObjectTypeCode.OT_RECTANGLE = 3; ObjectTypeCode.OT_REGULAR_POLYGON = 4; ObjectTypeCode.OT_CIRCLE = 5; ObjectTypeCode.OT_3D_POLYGON = 6; ObjectTypeCode.OT_BUILDING = 7; ObjectTypeCode.OT_BOX = 8; ObjectTypeCode.OT_PYRAMID = 9; ObjectTypeCode.OT_CYLINDER = 10; ObjectTypeCode.OT_CONE = 11; ObjectTypeCode.OT_ELLIPSE = 12; ObjectTypeCode.OT_ARC = 13; ObjectTypeCode.OT_ARROW = 14; ObjectTypeCode.OT_3D_ARROW = 15; ObjectTypeCode.OT_SPHERE = 16; ObjectTypeCode.OT_MODEL = 17; ObjectTypeCode.OT_LABEL = 18; ObjectTypeCode.OT_LOCATION = 19; ObjectTypeCode.OT_TREE_HOTLINK = 20; ObjectTypeCode.OT_ROUTE = 21; ObjectTypeCode.OT_MESSAGE = 22; ObjectTypeCode.OT_DYNAMIC = 23; ObjectTypeCode.OT_IMAGE_LABEL = 24; ObjectTypeCode.OT_THREAT_DOME = 25; ObjectTypeCode.OT_IMAGERY_LAYER = 26; ObjectTypeCode.OT_TERRAIN_VIDEO = 27; ObjectTypeCode.OT_POINT_CLOUD = 28; ObjectTypeCode.OT_ELEVATION_LAYER = 29; ObjectTypeCode.OT_TERRAIN_MODIFIER = 30; ObjectTypeCode.OT_TERRAIN_HOLE = 31; ObjectTypeCode.OT_POPUP_MESSAGE = 32; ObjectTypeCode.OT_FEATURE = 33; ObjectTypeCode.OT_PRESENTATION = 34; ObjectTypeCode.OT_ANALYSIS_LOS = 35; var SGGeometryTypeId = {}; SGGeometryTypeId.SG_POINT = 0; SGGeometryTypeId.SG_LINESTRING = 1; SGGeometryTypeId.SG_LINEARRING = 2; SGGeometryTypeId.SG_POLYGON = 3; SGGeometryTypeId.SG_MULTIPOINT = 4; SGGeometryTypeId.SG_MULTILINESTRING = 5; SGGeometryTypeId.SG_MULTIPOLYGON = 6; var BuildingStyleCode = {}; BuildingStyleCode.BS_STRETCH_TERRAIN = 0; BuildingStyleCode.BS_POLYGONS = 1; var IntersectionType = {}; IntersectionType.IT_NONE = 0; IntersectionType.IT_INTERSECT = 1; IntersectionType.IT_WITHIN = 2; var StreamLayerStatus = {}; StreamLayerStatus.SLS_NOT_STREAMED_LAYER = 0; StreamLayerStatus.SLS_STREAMING = 1; StreamLayerStatus.SLS_STREAM_PAUSED = 2; var AltitudeUnitCode = {}; AltitudeUnitCode.AU_METER = 0; AltitudeUnitCode.AU_FEET = 1; AltitudeUnitCode.AU_CENTIMETER = 2; AltitudeUnitCode.AU_DECIMETER = 3; AltitudeUnitCode.AU_INCHE = 4; AltitudeUnitCode.AU_YARD = 5; AltitudeUnitCode.AU_UNDEFINED = -1; var LabelLockMode = {}; LabelLockMode.LM_DECAL = 0; LabelLockMode.LM_AXIS = 1; LabelLockMode.LM_AXIS_TEXTUP = 2; LabelLockMode.LM_AXIS_AUTOPITCH = 3; LabelLockMode.LM_AXIS_AUTOPITCH_TEXTUP = 4; var DistributionDir = {}; DistributionDir.DOWN_UP = 0; DistributionDir.UP_DOWN = 1; DistributionDir.RIGHT_LEFT = 2; DistributionDir.LEFT_RIGHT = 3; DistributionDir.FRONT_BACK = 4; DistributionDir.BACK_FRONT = 5; var CPTDataFormat = {}; CPTDataFormat.CPT_DF_INTENSITY = 0; CPTDataFormat.CPT_DF_RGB = 1; var _HTML_POPUP_FLAGS = {}; _HTML_POPUP_FLAGS.HTML_POPUP_NONE = 0; _HTML_POPUP_FLAGS.HTML_POPUP_ANCHOR_3D_WINDOW = 1; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_DRAG = 2; _HTML_POPUP_FLAGS.HTML_POPUP_NO_CAPTION = 4; _HTML_POPUP_FLAGS.HTML_POPUP_USE_DEFAULT_POS = 8; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_SIZE = 16; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_RESIZE = 32; _HTML_POPUP_FLAGS.HTML_POPUP_ADD_SHADOW = 64; _HTML_POPUP_FLAGS.HTML_POPUP_NO_BORDER = 128; _HTML_POPUP_FLAGS.HTML_POPUP_SET_FOCUS_TO_RENDER = 256; _HTML_POPUP_FLAGS.HTML_POPUP_NOT_USE_POINTER = 512; _HTML_POPUP_FLAGS.HTML_POPUP_ALWAYS_VISIBLE = 1024; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_POS = 2048; _HTML_POPUP_FLAGS.HTML_POPUP_USE_TEXT_AS_INNER_HTML = 4096; var PresentationStepContinue = {}; PresentationStepContinue.PSC_MOUSECLICK = 0; PresentationStepContinue.PSC_WAIT = 1; var PresentationStepFlightSpeed = {}; PresentationStepFlightSpeed.PSFS_VERYSLOW = 0; PresentationStepFlightSpeed.PSFS_SLOW = 1; PresentationStepFlightSpeed.PSFS_NORMAL = 2; PresentationStepFlightSpeed.PSFS_FAST = 3; PresentationStepFlightSpeed.PSFS_VERYFAST = 4; var PresentationPlayAlgorithm = {}; PresentationPlayAlgorithm.PPA_FLYTO = 0; PresentationPlayAlgorithm.PPA_SPLINE = 1; var PresentationPlayMode = {}; PresentationPlayMode.PPM_AUTOMATIC = 0; PresentationPlayMode.PPM_MANUAL = 1; var PresentationCaptionSizeType = {}; PresentationCaptionSizeType.PCST_FIXED = 0; PresentationCaptionSizeType.PCST_AUTOMATICALLYADJUST = 1; var PresentationCaptionPosition = {}; PresentationCaptionPosition.PCP_TOPLEFT = 0; PresentationCaptionPosition.PCP_TOPCENTER = 1; PresentationCaptionPosition.PCP_TOPRIGHT = 2; PresentationCaptionPosition.PCP_BOTTOMLEFT = 3; PresentationCaptionPosition.PCP_BOTTOMCENTER = 4; PresentationCaptionPosition.PCP_BOTTOMRIGHT = 5; var PresentationStatus = {}; PresentationStatus.PS_PLAYING = 0; PresentationStatus.PS_NOTPLAYING = 1; PresentationStatus.PS_PAUSED = 2; PresentationStatus.PS_WAITINGTIME = 3; PresentationStatus.PS_WAITINGCLICK = 4; var VideoPlayStatus = {}; VideoPlayStatus.VPS_PAUSE = 0; VideoPlayStatus.VPS_PLAY = 1; VideoPlayStatus.VPS_STOP = 2; var ContainerSite = {}; ContainerSite.CS_DOCK_LEFT = 0; ContainerSite.CS_DOCK_RIGHT = 1; ContainerSite.CS_DOCK_TOP = 2; ContainerSite.CS_DOCK_BOTTOM = 3; ContainerSite.CS_DOCK_FLOAT = 4; ContainerSite.CS_MAIN = 5; ContainerSite.CS_NOT_VALID = -1; var FaceFillTypeCode = {}; FaceFillTypeCode.FACE_COLOR = 0; FaceFillTypeCode.FACE_TEXTURE = 1; FaceFillTypeCode.FACE_TERRAIN_TEXTURE = 2; FaceFillTypeCode.FACE_UNDEFINED = -1; var RoofStyleCode = {}; RoofStyleCode.ROOFTOP_FLAT = 0; RoofStyleCode.ROOFTOP_ANGULAR = 1; var PresentationStepType = {}; PresentationStepType.ST_LOCATION = 0; PresentationStepType.ST_DYNAMICOBJECT = 1; PresentationStepType.ST_GROUPOROBJECT = 2; PresentationStepType.ST_UNDERGROUNDMODE = 3; PresentationStepType.ST_TIMESLIDER = 4; PresentationStepType.ST_CURRENTTIME = 5; PresentationStepType.ST_MESSAGE = 6; PresentationStepType.ST_TOOL = 7; PresentationStepType.ST_CAPTION = 8; PresentationStepType.ST_RESTARTDYNAMICOBJECT = 9; PresentationStepType.ST_FLIGHTSPEEDFACTOR = 10; PresentationStepType.ST_CLEARCAPTION = -1; var TilingMethodCode = {}; TilingMethodCode.TM_TILES_PER_SIDE = 0; TilingMethodCode.TM_TILES_PER_AXIS = 0; TilingMethodCode.TM_METERS_PER_TILE = 1; TilingMethodCode.TM_UNDEFINED = -1; var AttributeTypeCode = {}; AttributeTypeCode.AT_TEXT = 0; AttributeTypeCode.AT_INTEGER = 1; AttributeTypeCode.AT_DOUBLE = 2; AttributeTypeCode.AT_UNKNOWN = -1; var FeatureState = {}; FeatureState.FS_NONE = 0; FeatureState.FS_NEW = 1; FeatureState.FS_MODIFIED = 2; FeatureState.FS_DELETED = 3; + +SGLang = { + lang : {}, + /** + * APIProperty: defaultCode + * {String} Default language to use when a specific language can't be + * found. Default is "en". + */ + defaultCode: "2052", + + /** + * APIFunction: getCode + * Get the current language code. + * + * Returns: + * The current language code. + */ + getCode: function() { + //var lang = SGLang.getUrlParameters()["lang"]; + //if(!lang) + // lang = SGLang.defaultCode; + //return lang; + return "2052"; + }, + + getUrlParameters: function() + { + var vars = [], hash; + var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split(/&|\?/ig); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; + }, + + /** + * APIMethod: translate + * Looks up a key from a dictionary based on the current language string. + * The value of <getCode> will be used to determine the appropriate + * dictionary. Dictionaries are stored in <SGLang>. + * + * Parameters: + * key - {String} The key for an i18n string value in the dictionary. + * context - {Object} Optional context to be used with + * <SGAPI.String.format>. + * + * Returns: + * {String} A internationalized string. + */ + i18n: function(key, context) { + var message = SGLang.lang[key]; + if(!message) { + // Message not found, fall back to message key + message = key; + } + if(context) { + message = SGLang.format(message, context); + } + return message; + }, + + i18nFile: function(file) { + var code = this.getCode(); + if(code == "0" || code == "1033") + return file; + return code + "/" + file; + }, + + format: function(template, context, args) { + if(!context) { + context = window; + } + + // Example matching: + // str = ${foo.bar} + // match = foo.bar + var replacer = function(str, match) { + var replacement; + + // Loop through all subs. Example: ${a.b.c} + // 0 -> replacement = context[a]; + // 1 -> replacement = context[a][b]; + // 2 -> replacement = context[a][b][c]; + var subs = match.split(/\.+/); + for (var i=0; i< subs.length; i++) { + if (i == 0) { + replacement = context; + } + + replacement = replacement[subs[i]]; + } + + if(typeof replacement == "function") { + replacement = args ? + replacement.apply(null, args) : + replacement(); + } + + // If replacement is undefined, return the string 'undefined'. + // This is a workaround for a bugs in browsers not properly + // dealing with non-participating groups in regular expressions: + // http://blog.stevenlevithan.com/archives/npcg-javascript + if (typeof replacement == 'undefined') { + return 'undefined'; + } else { + return replacement; + } + }; + + return template.replace(SGLang.tokenRegEx, replacer); + }, + + /** + * Property: SGLang.tokenRegEx + * Used to find tokens in a string. + * Examples: ${a}, ${a.b.c}, ${a-b}, ${5} + */ + tokenRegEx: /\$\{([\w.]+?)\}/g +}; + +//------------------- +// load requested lang file +(function() { + // document.write("<script language='javascript' src='Lang.js'></script>"); + // var code = SGLang.getCode(); + // document.write("<script language='javascript' src='" + code + "/Lang.js'></script>"); + + var head = document.head || document.getElementsByTagName("head")[0]; + // New way to support IE10 + firstScript = head.getElementsByTagName("script")[0]; + + var script = document.createElement("script"); + script.setAttribute("src", "Lang.js"); + head.insertBefore(script, firstScript); + + var code = SGLang.getCode(); + + var script2 = document.createElement("script"); + script2.setAttribute("src", code + "/Lang.js"); + head.insertBefore(script2, firstScript); +})(); + +// hide document body, so that TextXXX won't be visible until we replace them on document ready +$(document.body).hide(); +//------------------- +$(document).ready(function () +{ + $(document.body).hide(); + var translateDocument = function() + { + document.title = SGLang.i18n(document.title); + $(".i18n").each(function () + { + if (this.tagName == "INPUT") + { + this.value = SGLang.i18n(this.value); + } + else if (this.tagName == "IMG") + { + $(this).attr("src",SGLang.i18n($(this).attr("src"))); + $(this).attr("alt", SGLang.i18n($(this).attr("alt"))); + $(this).attr("title", SGLang.i18n($(this).attr("title"))); + } + else + { + $(this).attr("title", SGLang.i18n($(this).attr("title"))); + $(this).attr("alt", SGLang.i18n($(this).attr("alt"))); + // set element html only if it does not contain any other html elements. + // otherwise it will erase them. + if ($(this).children().length == 0) + { + $(this).html(SGLang.i18n($.trim($(this).text()))); + } + } + }); + $(".i18nFile").each(function () + { + if (this.tagName == "IMG") + { + $(this).attr("src",SGLang.i18nFile($(this).attr("src"))); + } + }); + $(document.body).show(); + } + // make sure that hiding document body really worked. + // I am not sure if IE will update the document view, until the function has finished executing. + // so I am giving it here a few milliseconds of unused time. + setTimeout(translateDocument,1); +}); + +$(document).ready(function () +{ + if (GetParamValue("inSG","") == "1") + { + document.getElementById("TopAreaTD").style.height = "57"; + document.getElementById("TitleTD").align = "left"; + document.getElementById("CloseHelpTd").style.display = "none"; + } +}); + +//------------------- +// DisplayHelpPopup +function DisplayHelpPopup(HTMLSrc, title) { + if (title == null || title == "") + title = "?"; + var Cont = TE.interface("IContainer2"); + Cont.HTMLPopup(1, 5, 5, 850, 500, title, abspath() + "/" + HTMLSrc, 10, -1); +} + +//------------------- +// DisplayHelpPopup6 +function DisplayHelpPopup6(HTMLSrc, title) { + if (title == null || title == "") + title = "?"; + var popup = SGWorld.Creator.CreatePopupMessage(title, abspath() + "/" + HTMLSrc, 5, 5, 850, 500); + popup.AllowDrag = true; + popup.AllowResize = true; + SGWorld.Window.ShowPopup(popup); + +} +//------------------- +// CloseTool +function CloseTool (ToolName) +{ + var Cont = TE.interface("IContainer2"); + Cont.RemoveURL (1,ToolName); +} +//------------------- +// SGAPIDisplayHelpPopup +function SGAPIDisplayHelpPopup(HTMLSrc,title) +{ + //globe.teCore.IContainer.HTMLPopup (1, 5,5,500,500,"Help", SGAPI.toAbspath(HTMLSrc), 10, -1 ); + if (title == null || title == "") + title = "?"; + var popup = new SGPopup(title, HTMLSrc,0,0,650,500); + popup.align = "TopLeft"; + + globe.showPopup(popup); +} +//------------------- +// SGAPICloseTool +function SGAPICloseTool (ToolName) +{ + globe.teCore.IContainer.RemoveURL (1,ToolName); +} +//-------------- +// abspath +function abspath() +{ + var abspath = unescape(window.location.href); + + // Remove query String + var index=abspath.indexOf("?"); + if (index > 0) abspath = abspath.substr (0,index-1); + + index=abspath.lastIndexOf("/"); + var index2 = abspath.lastIndexOf("\\"); + + index = (index > index2) ? index : index2; + if (index <= 0) return abspath; + + abspath = abspath.substring(0,index); + + if(abspath.substring(0,1) == "/") abspath = abspath.slice(1); + + var re = /file:\/\/\//gi; + if (abspath.match(re) != null) abspath = abspath.replace(re,""); // if this is indeed a local file, we strip the "file://" prefix from it. + + return(abspath); +} +// GetParamValue +function GetParamValue(findParam, defaultValue) +{ + var arr = document.location.href.split("?"); + if (arr.length <= 1) return defaultValue; + arr = arr[1].split("&"); + for (var i = 0; i < arr.length; i++) { + if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) { + arr = arr[i].split("="); + return arr[1]; + } + } + return defaultValue; +} +//----------------- +// validateNumber +function validateNumber(strNum) +{ + strNum = strNum.replace(/,/, "."); + return parseFloat (strNum); +} +//******************************************** +var gDrawPolyAltitudeType = 2; +//---------- +// DrawPolyLButtonDown +//---------- +function DrawPolyLButtonDown(Flags, X, Y) { + var CursorCoord = SGWorld.Window.pixelToWorld(X, Y,-1 & ~(128|1024)); + if (CursorCoord == null) + return false; + + if (gPolyObj == null) { + // We always start with a polyline and change it to Polygon (for area) after the second click) + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]) + gPolyObj = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), gDrawPolyAltitudeType, -1, gPolylineText); + gPolyObj.LineStyle.Width = -2; + gPolyObj.Geometry.StartEdit(); + } + else { + + if (gPolyMethod == 2) // Polygon + { + if (gPolyObj.ObjectType == 1) { + // Deleting the temporary line + var x = gPolyObj.Geometry.Points.Item(0).X; + var y = gPolyObj.Geometry.Points.Item(0).Y; + var z = gPolyObj.Geometry.Points.Item(0).Z; + SGWorld.Creator.DeleteObject(gPolyObj.ID); + + // Creating the polygon + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, z, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]) + gPolyObj = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), gDrawPolyAltitudeType, -1, gPolygonText); + gPolyObj.LineStyle.Width = -2; + // gPolyObj.Terrain.GroundObject = true; // Arik removed it. Caused a bug in Viewshed query (got wrong GetGroundHeight values because of the polygon) + gPolyObj.Geometry.StartEdit(); + } + else { + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x; + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y; + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude; + gPolyObj.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude); + } + } + else { + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).X = CursorCoord.Position.x; + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Y = CursorCoord.Position.y; + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude; + gPolyObj.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude); + } + } + if (gDrawPolyClick != null) + gDrawPolyClick(gPolyObj.Geometry, gPolyObj.ObjectType); + gPolyObj.SetParam(5440, 1); + return true; +} +//----------- +// onFrame +//----------- +function DrawPolyOnFrame() { + if (gPolyObj != null) { + + try { + var mouseInfo = SGWorld.Window.GetMouseInfo() + var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, -1 & ~(128|1024)); + if (CursorCoord == null) + return false; + if (gPolyObj.ObjectType == 2) { + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x; + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y; + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude; + } + else { + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).X = CursorCoord.Position.x; + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Y = CursorCoord.Position.y; + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude; + } + gPolyObj.SetParam(5440, 1); + } + catch (e) { } + } +} + +//------------- +//DrawPolyInputModeChanged +function DrawPolyInputModeChanged(NewMode) { + + if (NewMode != 1) + if (gPolyObj != null) + Reset(0, 1); +} +//------------- +// DrawPolyRButtonUp +function DrawPolyRButtonUp(Flags, X, Y) { + if (gPolyObj == null || ((gPolyObj.ObjectType == 1 && gPolyObj.Geometry.Points.count <= 2) || (gPolyObj.ObjectType == 2 && gPolyObj.Geometry.Rings(0).Points.count <= 3))) { + Reset(0, 0); + return false; + } + if (gPolyObj.ObjectType == 1) + gPolyObj.Geometry.Points.DeletePoint(gPolyObj.Geometry.Points.count - 1); + else + gPolyObj.Geometry.Rings(0).Points.DeletePoint(gPolyObj.Geometry.Rings(0).Points.count - 1); + + gPolyObj.Geometry.EndEdit(); + + gEndDrawPoly(gPolyObj.Geometry, gPolyObj.ObjectType, gPolyObj.Position.AltitudeType); + Reset(0, 0); + return true; +} +//------------------- +//searchGeometries +function searchGeometries2(parentNode, callbackFunc) { + SGWorld.ProjectTree.EnableRedraw(0); + searchGeometriesLeaf2(parentNode, callbackFunc); + SGWorld.ProjectTree.EnableRedraw(1); +} +//------------------- +// searchGeometries +function searchGeometriesLeaf2(parentNode, callbackFunc) { + + if (SGWorld.ProjectTree.IsLayer(parentNode)) // Layer + { + var layer = SGWorld.ProjectTree.GetLayer(parentNode); + var featureGroups = layer.FeatureGroups; + for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers + { + var featureGroup = featureGroups.Item(i); + var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method")); + var features = featureGroup.Features; + for (var j = 0; j < features.Count; j++) { + var ret; + if (featureGroup.GeometryType != 0) + ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType); + else { + if (features.Item(j).Geometry.GeometryType == 0) // Point + { + var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z); + ret = callbackFunc(position, featureGroup.GeometryType, altitudeType); + } + } + if (!ret) + return; + } + } + } + else { + var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11); + while (node != "") { + if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node)) + searchGeometriesLeaf2(node, callbackFunc); + else { + var Object = SGWorld.Creator.GetObject(node); + if (Object != null) { + var altitudeType = Object.Position.AltitudeType; + var ret; + if (Object.ObjectType == 1 || Object.ObjectType == 2) + ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType); + else + ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType); + + if (!ret) + return; + } + } + + node = SGWorld.ProjectTree.GetNextItem(node, 13); + } + } +} + +function AltitudeMethodToAltitudeType(altitudeMethod) +{ + switch(altitudeMethod) + { + case 10: return AltitudeTypeCode.ATC_TERRAIN_RELATIVE; + case 11: return AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE; + case 12: return AltitudeTypeCode.ATC_ON_TERRAIN; + case 13: return AltitudeTypeCode.ATC_PIVOT_RELATIVE; + } +} +//------------------- +//searchGeometriesClipbaord +function searchGeometriesClipboard(callbackFunc) { + SGWorld.ProjectTree.EnableRedraw(0); + var Object; + for (i = 0; i < SGWorld.Application.Clipboard.Count; i++) { + try { + Object = SGWorld.Application.Clipboard.Item(i); + var altitudeType = Object.Position.AltitudeType; + var ret; + if (Object.ObjectType == 1 || Object.ObjectType == 2) + ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType); + else + ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType); + if (!ret) { + SGWorld.ProjectTree.EnableRedraw(1); + return; + } + } + catch (e) { } + } + SGWorld.ProjectTree.EnableRedraw(1); +} diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon70.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon70.js new file mode 100644 index 0000000..de85178 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon70.js @@ -0,0 +1,586 @@ + +/**** JQuery was removed from toolsCommon70. You should include one of the JQuery files under the "JQuery" folder ****/ + + +if(!this.JSON){this.JSON={};} +(function(){function f(n){return n<10?'0'+n:n;} +if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+ +f(this.getUTCMonth()+1)+'-'+ +f(this.getUTCDate())+'T'+ +f(this.getUTCHours())+':'+ +f(this.getUTCMinutes())+':'+ +f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};} +var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';} +function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);} +if(typeof rep==='function'){value=rep.call(holder,key,value);} +switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';} +gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';} +v=partial.length===0?'[]':gap?'[\n'+gap+ +partial.join(',\n'+gap)+'\n'+ +mind+']':'['+partial.join(',')+']';gap=mind;return v;} +if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}} +v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+ +mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}} +if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;} +rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');} +return str('',{'':value});};} +if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}} +return reviver.call(holder,key,value);} +cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+ +('0000'+a.charCodeAt(0).toString(16)).slice(-4);});} +if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;} +throw new SyntaxError('JSON.parse');};}}()); + +/* jQuery cookie */ +jQuery.cookie=function(d,c,a){if(typeof c!="undefined"){a=a||{};if(c===null)c="",a.expires=-1;var b="";if(a.expires&&(typeof a.expires=="number"||a.expires.toUTCString))typeof a.expires=="number"?(b=new Date,b.setTime(b.getTime()+a.expires*864E5)):b=a.expires,b="; expires="+b.toUTCString();var e=a.path?"; path="+a.path:"",f=a.domain?"; domain="+a.domain:"",a=a.secure?"; secure":"";document.cookie=[d,"=",encodeURIComponent(c),b,e,f,a].join("")}else{c=null;if(document.cookie&&document.cookie!=""){a=document.cookie.split(";");for(b=0;b<a.length;b++)if(e=jQuery.trim(a[b]),e.substring(0,d.length+1)==d+"="){c=decodeURIComponent(e.substring(d.length+1));break}}return c}}; + +/* color picker */ + +/* +New API enums. Generated from Freeze20 +*/ +var ActionCode = {}; ActionCode.AC_FLYTO = 0; ActionCode.AC_CIRCLEPATTERN = 1; ActionCode.AC_OVALPATTERN = 2; ActionCode.AC_LINEPATTERN = 3; ActionCode.AC_ARCPATTERN = 4; ActionCode.AC_FOLLOWBEHIND = 5; ActionCode.AC_FOLLOWABOVE = 6; ActionCode.AC_FOLLOWBELOW = 7; ActionCode.AC_FOLLOWRIGHT = 8; ActionCode.AC_FOLLOWLEFT = 9; ActionCode.AC_FOLLOWBEHINDANDABOVE = 10; ActionCode.AC_FOLLOWCOCKPIT = 11; ActionCode.AC_FOLLOWFROMGROUND = 12; ActionCode.AC_STOP = 13; ActionCode.AC_JUMP = 14; ActionCode.AC_DELETE = 15; ActionCode.AC_EDIT_FINISHED = 16; ActionCode.AC_OBJECT_ADDED = 17; ActionCode.AC_PLAY = 18; ActionCode.AC_SHOW = 19; ActionCode.AC_EDIT_STARTED = 20; ActionCode.AC_SELCHANGED = 21; ActionCode.AC_WAYPOINT_REACHED = 22; ActionCode.AC_GROUP_ADDED = 23; ActionCode.AC_LAYER_ADDED = 24; ActionCode.AC_LAYER_REFRESHED = 25; ActionCode.AC_ITEM_MOVED=26; var AltitudeTypeCode = {}; AltitudeTypeCode.ATC_TERRAIN_RELATIVE = 0; AltitudeTypeCode.ATC_PIVOT_RELATIVE = 1; AltitudeTypeCode.ATC_ON_TERRAIN = 2; AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE = 3; AltitudeTypeCode.ATC_DEFAULT = 999; var DynamicMotionStyle = {}; DynamicMotionStyle.MOTION_GROUND_VEHICLE = 0; DynamicMotionStyle.MOTION_AIRPLANE = 1; DynamicMotionStyle.MOTION_HELICOPTER = 2; DynamicMotionStyle.MOTION_HOVER = 3; var DynamicObjectType = {}; DynamicObjectType.DYNAMIC_3D_MODEL = 0; DynamicObjectType.DYNAMIC_TEXT_LABEL = 1; DynamicObjectType.DYNAMIC_IMAGE_LABEL = 2; DynamicObjectType.DYNAMIC_VIRTUAL = 3; var LabelStyle = {}; LabelStyle.LS_DEFAULT = 0; LabelStyle.LS_STREET = 1; LabelStyle.LS_STATE = 2; var MsgClient6 = {}; MsgClient6.MC_LEFT = 0; MsgClient6.MC_MAIN = 2; MsgClient6.MC_MESSAGE_BAR = 3; MsgClient6.MC_FLOAT = 4; MsgClient6.MC_POPUP = 5; var MsgType = {}; MsgType.TYPE_TEXT = 0; MsgType.TYPE_URL = 1; MsgType.TYPE_SCRIPT = 3; var ModelTypeCode = {}; ModelTypeCode.MT_NORMAL = 0; ModelTypeCode.MT_ANIMATION = 1; ModelTypeCode.MT_PROGRESSIVE = 2; var LayerGeometryType = {}; LayerGeometryType.LGT_POINT = 0; LayerGeometryType.LGT_POLYLINE = 1; LayerGeometryType.LGT_POLYGON = 2; LayerGeometryType.LGT_COLLECTION = 3; LayerGeometryType.LGT_NONE = -1; var SphereStyle = {}; SphereStyle.SPHERE_NORMAL = 0; SphereStyle.SPHERE_UPPER_HALF = 1; SphereStyle.SPHERE_LOWER_HALF = 2; SphereStyle.SPHERE_UPPER_HALF_BASE = 3; SphereStyle.SPHERE_LOWER_HALF_BASE = 4; var ElevationBehaviorMode = {}; ElevationBehaviorMode.EB_REPLACE = 0; ElevationBehaviorMode.EB_BELOW = 1; ElevationBehaviorMode.EB_ABOVE = 2; var EditItemFlags = {}; EditItemFlags.EDIT_ITEM_USE_PROPERTY = 0; EditItemFlags.EDIT_ITEM = 1; EditItemFlags.EDIT_ITEM_VERTICES = 2; EditItemFlags.EDIT_ITEM_BUILDING_ROOF = 3; var ItemCode = {}; ItemCode.SELECTED = 10; ItemCode.CHILD = 11; ItemCode.FIRSTVISIBLE = 12; ItemCode.NEXT = 13; ItemCode.NEXTVISIBLE = 14; ItemCode.PARENT = 15; ItemCode.PREVIOUS = 16; ItemCode.PREVIOUSVISIBLE = 17; ItemCode.ROOT = 18; var SortType = {}; SortType.SORT_ALPHABETICALLY_AZ = 0; SortType.SORT_ALPHABETICALLY_ZA = 1; SortType.SORT_BY_TYPE = 2; SortType.SORT_NO_SORT = 3; var WorldPointType = {}; WorldPointType.WPT_MODEL = 1; WorldPointType.WPT_LABEL = 2; WorldPointType.WPT_PRIMITIVE = 4; WorldPointType.WPT_ANIM = 8; WorldPointType.WPT_BUILDING = 16; WorldPointType.WPT_SKY = 32; WorldPointType.WPT_ACCURATE_CPT = 64; WorldPointType.WPT_BBOX_CPT = 128; WorldPointType.WPT_VIDEO = 256; WorldPointType.WPT_UNDERGROUND = 512; WorldPointType.WPT_SCREEN_OVERLAY = 1024; WorldPointType.WPT_SCREEN_CONTROL = 2048; WorldPointType.WPT_SCREEN_COVERED = 4096; WorldPointType.WPT_ALL = -1; var MouseInputMode = {}; MouseInputMode.MI_FREE_FLIGHT = 0; MouseInputMode.MI_COM_CLIENT = 1; MouseInputMode.MI_CONTROLLED_FLIGHT = 2; MouseInputMode.MI_EDIT = 3; MouseInputMode.MI_MEASURAMENT = 4; var MessageBarTextAlignment = {}; MessageBarTextAlignment.MBT_LEFT = 0; MessageBarTextAlignment.MBT_CENTER = 1; MessageBarTextAlignment.MBT_RIGHT = 2; var AccuracyLevel = {}; AccuracyLevel.ACCURACY_NORMAL = 0; AccuracyLevel.ACCURACY_BEST_FROM_MEMORY = 1; AccuracyLevel.ACCURACY_BEST_FROM_MPT = 2; var PermissionType = {}; PermissionType.LMP_ENABLE_ALL = 0; PermissionType.LMP_DISABLE_API = 1; PermissionType.LMP_DISABLE_UI = 2; PermissionType.LMP_DISABLE_ALL = -1; var SliderDisplayMode = {}; SliderDisplayMode.MODE_TIME_NONE = 0; SliderDisplayMode.MODE_FIXED_TIME = 1; SliderDisplayMode.MODE_TIME = 2; SliderDisplayMode.MODE_RANGE_PROJECT = 4; SliderDisplayMode.MODE_RANGE_CUSTOM = 8; SliderDisplayMode.MODE_ADJUST_FOR_GROUP = 16; var TimeZoneType = {}; TimeZoneType.TIME_ZONE_TYPE_MY_COMPUTER = 0; TimeZoneType.TIME_ZONE_TYPE_UTC = 1; TimeZoneType.TIME_ZONE_TYPE_SPECIFIC = 2; var TEVesrionType = {}; TEVesrionType.TEVT_PRO = 0; TEVesrionType.TEVT_PLUS = 1; TEVesrionType.TEVT_VIEWER = 2; TEVesrionType.TEVT_UNKNOWN = -1; var ObjectTypeCode = {}; ObjectTypeCode.OT_UNDEFINED = 0; ObjectTypeCode.OT_POLYLINE = 1; ObjectTypeCode.OT_POLYGON = 2; ObjectTypeCode.OT_RECTANGLE = 3; ObjectTypeCode.OT_REGULAR_POLYGON = 4; ObjectTypeCode.OT_CIRCLE = 5; ObjectTypeCode.OT_3D_POLYGON = 6; ObjectTypeCode.OT_BUILDING = 7; ObjectTypeCode.OT_BOX = 8; ObjectTypeCode.OT_PYRAMID = 9; ObjectTypeCode.OT_CYLINDER = 10; ObjectTypeCode.OT_CONE = 11; ObjectTypeCode.OT_ELLIPSE = 12; ObjectTypeCode.OT_ARC = 13; ObjectTypeCode.OT_ARROW = 14; ObjectTypeCode.OT_3D_ARROW = 15; ObjectTypeCode.OT_SPHERE = 16; ObjectTypeCode.OT_MODEL = 17; ObjectTypeCode.OT_LABEL = 18; ObjectTypeCode.OT_LOCATION = 19; ObjectTypeCode.OT_TREE_HOTLINK = 20; ObjectTypeCode.OT_ROUTE = 21; ObjectTypeCode.OT_MESSAGE = 22; ObjectTypeCode.OT_DYNAMIC = 23; ObjectTypeCode.OT_IMAGE_LABEL = 24; ObjectTypeCode.OT_THREAT_DOME = 25; ObjectTypeCode.OT_IMAGERY_LAYER = 26; ObjectTypeCode.OT_TERRAIN_VIDEO = 27; ObjectTypeCode.OT_POINT_CLOUD = 28; ObjectTypeCode.OT_ELEVATION_LAYER = 29; ObjectTypeCode.OT_TERRAIN_MODIFIER = 30; ObjectTypeCode.OT_TERRAIN_HOLE = 31; ObjectTypeCode.OT_POPUP_MESSAGE = 32; ObjectTypeCode.OT_FEATURE = 33; ObjectTypeCode.OT_PRESENTATION = 34; ObjectTypeCode.OT_ANALYSIS_LOS = 35; var SGGeometryTypeId = {}; SGGeometryTypeId.SG_POINT = 0; SGGeometryTypeId.SG_LINESTRING = 1; SGGeometryTypeId.SG_LINEARRING = 2; SGGeometryTypeId.SG_POLYGON = 3; SGGeometryTypeId.SG_MULTIPOINT = 4; SGGeometryTypeId.SG_MULTILINESTRING = 5; SGGeometryTypeId.SG_MULTIPOLYGON = 6; var BuildingStyleCode = {}; BuildingStyleCode.BS_STRETCH_TERRAIN = 0; BuildingStyleCode.BS_POLYGONS = 1; var IntersectionType = {}; IntersectionType.IT_NONE = 0; IntersectionType.IT_INTERSECT = 1; IntersectionType.IT_WITHIN = 2; var StreamLayerStatus = {}; StreamLayerStatus.SLS_NOT_STREAMED_LAYER = 0; StreamLayerStatus.SLS_STREAMING = 1; StreamLayerStatus.SLS_STREAM_PAUSED = 2; var AltitudeUnitCode = {}; AltitudeUnitCode.AU_METER = 0; AltitudeUnitCode.AU_FEET = 1; AltitudeUnitCode.AU_CENTIMETER = 2; AltitudeUnitCode.AU_DECIMETER = 3; AltitudeUnitCode.AU_INCHE = 4; AltitudeUnitCode.AU_YARD = 5; AltitudeUnitCode.AU_UNDEFINED = -1; var LabelLockMode = {}; LabelLockMode.LM_DECAL = 0; LabelLockMode.LM_AXIS = 1; LabelLockMode.LM_AXIS_TEXTUP = 2; LabelLockMode.LM_AXIS_AUTOPITCH = 3; LabelLockMode.LM_AXIS_AUTOPITCH_TEXTUP = 4; var DistributionDir = {}; DistributionDir.DOWN_UP = 0; DistributionDir.UP_DOWN = 1; DistributionDir.RIGHT_LEFT = 2; DistributionDir.LEFT_RIGHT = 3; DistributionDir.FRONT_BACK = 4; DistributionDir.BACK_FRONT = 5; var CPTDataFormat = {}; CPTDataFormat.CPT_DF_INTENSITY = 0; CPTDataFormat.CPT_DF_RGB = 1; var _HTML_POPUP_FLAGS = {}; _HTML_POPUP_FLAGS.HTML_POPUP_NONE = 0; _HTML_POPUP_FLAGS.HTML_POPUP_ANCHOR_3D_WINDOW = 1; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_DRAG = 2; _HTML_POPUP_FLAGS.HTML_POPUP_NO_CAPTION = 4; _HTML_POPUP_FLAGS.HTML_POPUP_USE_DEFAULT_POS = 8; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_SIZE = 16; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_RESIZE = 32; _HTML_POPUP_FLAGS.HTML_POPUP_ADD_SHADOW = 64; _HTML_POPUP_FLAGS.HTML_POPUP_NO_BORDER = 128; _HTML_POPUP_FLAGS.HTML_POPUP_SET_FOCUS_TO_RENDER = 256; _HTML_POPUP_FLAGS.HTML_POPUP_NOT_USE_POINTER = 512; _HTML_POPUP_FLAGS.HTML_POPUP_ALWAYS_VISIBLE = 1024; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_POS = 2048; _HTML_POPUP_FLAGS.HTML_POPUP_USE_TEXT_AS_INNER_HTML = 4096; var PresentationStepContinue = {}; PresentationStepContinue.PSC_MOUSECLICK = 0; PresentationStepContinue.PSC_WAIT = 1; var PresentationStepFlightSpeed = {}; PresentationStepFlightSpeed.PSFS_VERYSLOW = 0; PresentationStepFlightSpeed.PSFS_SLOW = 1; PresentationStepFlightSpeed.PSFS_NORMAL = 2; PresentationStepFlightSpeed.PSFS_FAST = 3; PresentationStepFlightSpeed.PSFS_VERYFAST = 4; var PresentationPlayAlgorithm = {}; PresentationPlayAlgorithm.PPA_FLYTO = 0; PresentationPlayAlgorithm.PPA_SPLINE = 1; var PresentationPlayMode = {}; PresentationPlayMode.PPM_AUTOMATIC = 0; PresentationPlayMode.PPM_MANUAL = 1; var PresentationCaptionSizeType = {}; PresentationCaptionSizeType.PCST_FIXED = 0; PresentationCaptionSizeType.PCST_AUTOMATICALLYADJUST = 1; var PresentationCaptionPosition = {}; PresentationCaptionPosition.PCP_TOPLEFT = 0; PresentationCaptionPosition.PCP_TOPCENTER = 1; PresentationCaptionPosition.PCP_TOPRIGHT = 2; PresentationCaptionPosition.PCP_BOTTOMLEFT = 3; PresentationCaptionPosition.PCP_BOTTOMCENTER = 4; PresentationCaptionPosition.PCP_BOTTOMRIGHT = 5; var PresentationStatus = {}; PresentationStatus.PS_PLAYING = 0; PresentationStatus.PS_NOTPLAYING = 1; PresentationStatus.PS_PAUSED = 2; PresentationStatus.PS_WAITINGTIME = 3; PresentationStatus.PS_WAITINGCLICK = 4; var VideoPlayStatus = {}; VideoPlayStatus.VPS_PAUSE = 0; VideoPlayStatus.VPS_PLAY = 1; VideoPlayStatus.VPS_STOP = 2; var ContainerSite = {}; ContainerSite.CS_DOCK_LEFT = 0; ContainerSite.CS_DOCK_RIGHT = 1; ContainerSite.CS_DOCK_TOP = 2; ContainerSite.CS_DOCK_BOTTOM = 3; ContainerSite.CS_DOCK_FLOAT = 4; ContainerSite.CS_MAIN = 5; ContainerSite.CS_NOT_VALID = -1; var FaceFillTypeCode = {}; FaceFillTypeCode.FACE_COLOR = 0; FaceFillTypeCode.FACE_TEXTURE = 1; FaceFillTypeCode.FACE_TERRAIN_TEXTURE = 2; FaceFillTypeCode.FACE_UNDEFINED = -1; var RoofStyleCode = {}; RoofStyleCode.ROOFTOP_FLAT = 0; RoofStyleCode.ROOFTOP_ANGULAR = 1; var PresentationStepType = {}; PresentationStepType.ST_LOCATION = 0; PresentationStepType.ST_DYNAMICOBJECT = 1; PresentationStepType.ST_GROUPOROBJECT = 2; PresentationStepType.ST_UNDERGROUNDMODE = 3; PresentationStepType.ST_TIMESLIDER = 4; PresentationStepType.ST_CURRENTTIME = 5; PresentationStepType.ST_MESSAGE = 6; PresentationStepType.ST_TOOL = 7; PresentationStepType.ST_CAPTION = 8; PresentationStepType.ST_RESTARTDYNAMICOBJECT = 9; PresentationStepType.ST_FLIGHTSPEEDFACTOR = 10; PresentationStepType.ST_CLEARCAPTION = -1; var TilingMethodCode = {}; TilingMethodCode.TM_TILES_PER_SIDE = 0; TilingMethodCode.TM_TILES_PER_AXIS = 0; TilingMethodCode.TM_METERS_PER_TILE = 1; TilingMethodCode.TM_UNDEFINED = -1; var AttributeTypeCode = {}; AttributeTypeCode.AT_TEXT = 0; AttributeTypeCode.AT_INTEGER = 1; AttributeTypeCode.AT_DOUBLE = 2; AttributeTypeCode.AT_UNKNOWN = -1; var FeatureState = {}; FeatureState.FS_NONE = 0; FeatureState.FS_NEW = 1; FeatureState.FS_MODIFIED = 2; FeatureState.FS_DELETED = 3; + +SGLang = { + lang : {}, + /** + * APIProperty: defaultCode + * {String} Default language to use when a specific language can't be + * found. Default is "en". + */ + defaultCode: "2052", + + /** + * APIFunction: getCode + * Get the current language code. + * + * Returns: + * The current language code. + */ + getCode: function() { + //var lang = SGLang.getUrlParameters()["lang"]; + //if(!lang) + // lang = SGLang.defaultCode; + //return lang; + return "2052"; + }, + + getUrlParameters: function() + { + var vars = [], hash; + var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split(/&|\?/ig); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; + }, + + /** + * APIMethod: translate + * Looks up a key from a dictionary based on the current language string. + * The value of <getCode> will be used to determine the appropriate + * dictionary. Dictionaries are stored in <SGLang>. + * + * Parameters: + * key - {String} The key for an i18n string value in the dictionary. + * context - {Object} Optional context to be used with + * <SGAPI.String.format>. + * + * Returns: + * {String} A internationalized string. + */ + i18n: function(key, context) { + var message = SGLang.lang[key]; + if(!message) { + // Message not found, fall back to message key + message = key; + } + if(context) { + message = SGLang.format(message, context); + } + return message; + }, + + i18nFile: function(file) { + var code = this.getCode(); + if(code == "0" || code == "1033") + return file; + return code + "/" + file; + }, + + format: function(template, context, args) { + if(!context) { + context = window; + } + + // Example matching: + // str = ${foo.bar} + // match = foo.bar + var replacer = function(str, match) { + var replacement; + + // Loop through all subs. Example: ${a.b.c} + // 0 -> replacement = context[a]; + // 1 -> replacement = context[a][b]; + // 2 -> replacement = context[a][b][c]; + var subs = match.split(/\.+/); + for (var i=0; i< subs.length; i++) { + if (i == 0) { + replacement = context; + } + + replacement = replacement[subs[i]]; + } + + if(typeof replacement == "function") { + replacement = args ? + replacement.apply(null, args) : + replacement(); + } + + // If replacement is undefined, return the string 'undefined'. + // This is a workaround for a bugs in browsers not properly + // dealing with non-participating groups in regular expressions: + // http://blog.stevenlevithan.com/archives/npcg-javascript + if (typeof replacement == 'undefined') { + return 'undefined'; + } else { + return replacement; + } + }; + + return template.replace(SGLang.tokenRegEx, replacer); + }, + + /** + * Property: SGLang.tokenRegEx + * Used to find tokens in a string. + * Examples: ${a}, ${a.b.c}, ${a-b}, ${5} + */ + tokenRegEx: /\$\{([\w.]+?)\}/g +}; + +//------------------- +// load requested lang file +(function() { + // document.write("<script language='javascript' src='Lang.js'></script>"); + // var code = SGLang.getCode(); + // document.write("<script language='javascript' src='" + code + "/Lang.js'></script>"); + + var head = document.head || document.getElementsByTagName("head")[0]; + // New way to support IE10 + firstScript = head.getElementsByTagName("script")[0]; + + var script = document.createElement("script"); + script.setAttribute("src", "Lang.js"); + head.insertBefore(script, firstScript); + + var code = SGLang.getCode(); + + var script2 = document.createElement("script"); + script2.setAttribute("src", code + "/Lang.js"); + head.insertBefore(script2, firstScript); +})(); + +// hide document body, so that TextXXX won't be visible until we replace them on document ready +$(document.body).hide(); +//------------------- +$(document).ready(function () +{ + $(document.body).hide(); + var translateDocument = function() + { + document.title = SGLang.i18n(document.title); + $(".i18n").each(function () + { + if (this.tagName == "INPUT") + { + this.value = SGLang.i18n(this.value); + } + else if (this.tagName == "IMG") + { + $(this).attr("src",SGLang.i18n($(this).attr("src"))); + $(this).attr("alt", SGLang.i18n($(this).attr("alt"))); + $(this).attr("title", SGLang.i18n($(this).attr("title"))); + } + else + { + $(this).attr("title", SGLang.i18n($(this).attr("title"))); + $(this).attr("alt", SGLang.i18n($(this).attr("alt"))); + // set element html only if it does not contain any other html elements. + // otherwise it will erase them. + if ($(this).children().length == 0) + { + $(this).html(SGLang.i18n($.trim($(this).text()))); + } + } + }); + $(".i18nFile").each(function () + { + if (this.tagName == "IMG") + { + $(this).attr("src",SGLang.i18nFile($(this).attr("src"))); + } + }); + $(document.body).show(); + } + // make sure that hiding document body really worked. + // I am not sure if IE will update the document view, until the function has finished executing. + // so I am giving it here a few milliseconds of unused time. + setTimeout(translateDocument,1); +}); + +$(document).ready(function () +{ + if (GetParamValue("inSG","") == "1") + { + document.getElementById("TopAreaTD").style.height = "57"; + document.getElementById("TitleTD").align = "left"; + document.getElementById("CloseHelpTd").style.display = "none"; + } +}); + +//------------------- +// DisplayHelpPopup +function DisplayHelpPopup(HTMLSrc, title) { + if (title == null || title == "") + title = "?"; + var Cont = TE.interface("IContainer2"); + Cont.HTMLPopup(1, 5, 5, 850, 500, title, abspath() + "/" + HTMLSrc, 10, -1); +} +//------------------- +// DisplayMessagePopup +function DisplayMessagePopup(title, header, icon,body, x, y, width, height, CloseButton) { + + var HTMLString = "<html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/><link rel='StyleSheet' href='" + abspath() + "/../Style.css' type='text/css'></head><body leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><object id='SGWorld' classid='CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1' style='display:none'></object>"; + HTMLString += "<table width='100%' height='100%' cellpadding=4pt cellspacing=0 border=0> <tr height='20pt'>"; + if (icon != "") + HTMLString += "<td align='left' width='50pt'><img src='"+icon+"' alt='' ></td>"; + if (header != "") + HTMLString += "<td align='middle'><span class='s12b'>" + header + "</span></td>"; + HTMLString += "<td width='50pt'></td></tr><tr><td valign='top' colspan=3><span class='s9'>" + body + "</span></td></tr>"; + if (CloseButton) + HTMLString += "<tr><td align='right' valign=bottom colspan=3><input type='button' class='MenuButtonSmall' value='Close' onClick='SGWorld.Window.RemovePopupByCaption(\"" + title + "\");' /></td></tr>"; + HTMLString += "</body></html>"; + var popupMsg = SGWorld.Creator.CreatePopupMessage(title, "", x, y, width, height, -1); + popupMsg.Flags = 2 + 32; + popupMsg.InnerText = HTMLString; + SGWorld.Window.ShowPopup(popupMsg); + +} +//------------------- +// DisplayHelpPopup6 +function DisplayHelpPopup6(HTMLSrc, title) { + if (title == null || title == "") + title = "?"; + var popup = SGWorld.Creator.CreatePopupMessage(title, abspath() + "/" + HTMLSrc, 5, 5, 850, 500); + popup.AllowDrag = true; + popup.AllowResize = true; + SGWorld.Window.ShowPopup(popup); + +} +//------------------- +// CloseTool +function CloseTool (ToolName) +{ + var Cont = TE.interface("IContainer2"); + Cont.RemoveURL (1,ToolName); +} +//------------------- +// SGAPIDisplayHelpPopup +function SGAPIDisplayHelpPopup(HTMLSrc,title) +{ + //globe.teCore.IContainer.HTMLPopup (1, 5,5,500,500,"Help", SGAPI.toAbspath(HTMLSrc), 10, -1 ); + if (title == null || title == "") + title = "?"; + var popup = new SGPopup(title, HTMLSrc,0,0,650,500); + popup.align = "TopLeft"; + + globe.showPopup(popup); +} +//------------------- +// SGAPICloseTool +function SGAPICloseTool (ToolName) +{ + globe.teCore.IContainer.RemoveURL (1,ToolName); +} +//-------------- +// abspath +function abspath() +{ + var abspath = unescape(window.location.href); + + // Remove query String + var index=abspath.indexOf("?"); + if (index > 0) abspath = abspath.substr (0,index-1); + + index=abspath.lastIndexOf("/"); + var index2 = abspath.lastIndexOf("\\"); + + index = (index > index2) ? index : index2; + if (index <= 0) return abspath; + + abspath = abspath.substring(0,index); + + if(abspath.substring(0,1) == "/") abspath = abspath.slice(1); + + var re = /file:\/\/\//gi; + if (abspath.match(re) != null) abspath = abspath.replace(re,""); // if this is indeed a local file, we strip the "file://" prefix from it. + + return(abspath); +} +// GetParamValue +function GetParamValue(findParam, defaultValue) +{ + var arr = document.location.href.split("?"); + if (arr.length <= 1) return defaultValue; + arr = arr[1].split("&"); + for (var i = 0; i < arr.length; i++) { + if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) { + arr = arr[i].split("="); + return arr[1]; + } + } + return defaultValue; +} +//----------------- +// validateNumber +function validateNumber(strNum) +{ + strNum = strNum.replace(/,/, "."); + return parseFloat (strNum); +} +//-------------- +// validateNumberEx +function validateNumberEx(field, defVal, MinNum, MaxNum) { + try { + field.val (validateNumber(field.val())); + + if (field.val() < MinNum) + field.val(MinNum); + if (field.val() > MaxNum) + field.val( MaxNum); + } + catch (e) {field.val(defVal); } +} +//******************************************** +var gDrawPolyAltitudeType = 2; + +//---------- +// DrawPolyLButtonDown +//---------- +function DrawPolyLButtonDown(Flags, X, Y) { + DrawPolyLButtonClicked(Flags, X, Y); +} +//---------- +// DrawPolyLButtonClicked +//---------- +function DrawPolyLButtonClicked(Flags, X, Y) { + var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, -1 & ~(128 | 1024)); + + + if (gPolyObj == null) { + // We always start with a polyline and change it to Polygon (for area) after the second click) + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]) + gPolyObj = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), gDrawPolyAltitudeType, -1, gPolylineText); + gPolyObj.LineStyle.Width = -2; + gPolyObj.Geometry.StartEdit(); + } + else { + + if (gPolyMethod == 2) // Polygon + { + if (gPolyObj.ObjectType == 1) { + // Deleting the temporary line + var x = gPolyObj.Geometry.Points.Item(0).X; + var y = gPolyObj.Geometry.Points.Item(0).Y; + var z = gPolyObj.Geometry.Points.Item(0).Z; + SGWorld.Creator.DeleteObject(gPolyObj.ID); + if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true) + CursorCoord.Position.Altitude = z; + + // Creating the polygon + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, z, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]) + gPolyObj = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), gDrawPolyAltitudeType, -1, gPolygonText); + gPolyObj.LineStyle.Width = -2; + // gPolyObj.Terrain.GroundObject = true; // Arik removed it. Caused a bug in Viewshed query (got wrong GetGroundHeight values because of the polygon) + gPolyObj.Geometry.StartEdit(); + } + else { + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x; + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y; + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true) + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = gPolyObj.Geometry.Rings(0).Points.Item(0).Z; + gPolyObj.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude); + } + } + else { + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).X = CursorCoord.Position.x; + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Y = CursorCoord.Position.y; + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true) + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = gPolyObj.Geometry.Points.Item(0).Z; + gPolyObj.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude); + } + } + if (gDrawPolyClick != null) + gDrawPolyClick(gPolyObj.Geometry, gPolyObj.ObjectType); + gPolyObj.SetParam(5440, 1); + return false; +} +//----------- +// onFrame +//----------- +function DrawPolyOnFrame() { + if (gPolyObj != null) { + + try { + var mouseInfo = SGWorld.Window.GetMouseInfo() + var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, -1 & ~(128|1024)); + if (CursorCoord == null) + return false; + if (gPolyObj.ObjectType == 2) { + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x; + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y; + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true) + gPolyObj.Geometry.Rings(0).Points.Item(gPolyObj.Geometry.Rings(0).Points.count - 1).Z = gPolyObj.Geometry.Rings(0).Points.Item(0).Z; + + } + else { + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).X = CursorCoord.Position.x; + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Y = CursorCoord.Position.y; + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof gPolyHorizontal !== "undefined" && gPolyHorizontal==true) + gPolyObj.Geometry.Points.Item(gPolyObj.Geometry.Points.count - 1).Z = gPolyObj.Geometry.Points.Item(0).Z; + } + gPolyObj.SetParam(5440, 1); + } + catch (e) { } + } +} + +//------------- +//DrawPolyInputModeChanged +function DrawPolyInputModeChanged(NewMode) { + + if (NewMode != 1) + if (gPolyObj != null) + Reset(0, 1); +} +//------------- +// DrawPolyRButtonUp +function DrawPolyRButtonUp(Flags, X, Y) { + if (gPolyObj == null || ((gPolyObj.ObjectType == 1 && gPolyObj.Geometry.Points.count <= 2) || (gPolyObj.ObjectType == 2 && gPolyObj.Geometry.Rings(0).Points.count <= 3))) { + Reset(0, 0); + return false; + } + if (gPolyObj.ObjectType == 1) + gPolyObj.Geometry.Points.DeletePoint(gPolyObj.Geometry.Points.count - 1); + else + gPolyObj.Geometry.Rings(0).Points.DeletePoint(gPolyObj.Geometry.Rings(0).Points.count - 1); + + gPolyObj.Geometry.EndEdit(); + + gEndDrawPoly(gPolyObj.Geometry, gPolyObj.ObjectType, gPolyObj.Position.AltitudeType); + Reset(0, 0); + return true; +} +//------------------- +//searchGeometries +function searchGeometries2(parentNode, callbackFunc) { + SGWorld.ProjectTree.EnableRedraw(0); + searchGeometriesLeaf2(parentNode, callbackFunc); + SGWorld.ProjectTree.EnableRedraw(1); +} +//------------------- +// searchGeometries +function searchGeometriesLeaf2(parentNode, callbackFunc) { + + if (SGWorld.ProjectTree.IsLayer(parentNode)) // Layer + { + var layer = SGWorld.ProjectTree.GetLayer(parentNode); + var featureGroups = layer.FeatureGroups; + for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers + { + var featureGroup = featureGroups.Item(i); + var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method")); + var features = featureGroup.Features; + for (var j = 0; j < features.Count; j++) { + var ret; + if (featureGroup.GeometryType != 0) + ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType); + else { + if (features.Item(j).Geometry.GeometryType == 0) // Point + { + var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z); + ret = callbackFunc(position, featureGroup.GeometryType, altitudeType); + } + } + if (!ret) + return; + } + } + } + else { + var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11); + while (node != "") { + if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node)) + searchGeometriesLeaf2(node, callbackFunc); + else { + var Object = SGWorld.Creator.GetObject(node); + if (Object != null) { + var altitudeType = Object.Position.AltitudeType; + var ret; + if (Object.ObjectType == 1 || Object.ObjectType == 2) + ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position); + else + ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position); + + if (!ret) + return; + } + } + + node = SGWorld.ProjectTree.GetNextItem(node, 13); + } + } +} + +function AltitudeMethodToAltitudeType(altitudeMethod) +{ + switch(altitudeMethod) + { + case 10: return AltitudeTypeCode.ATC_TERRAIN_RELATIVE; + case 11: return AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE; + case 12: return AltitudeTypeCode.ATC_ON_TERRAIN; + case 13: return AltitudeTypeCode.ATC_PIVOT_RELATIVE; + } +} +//------------------- +//searchGeometriesClipbaord +function searchGeometriesClipboard(callbackFunc) { + SGWorld.ProjectTree.EnableRedraw(0); + var Object; + for (var i = 0; i < SGWorld.Application.Clipboard.Count; i++) { + try { + Object = SGWorld.Application.Clipboard.Item(i); + var altitudeType = Object.Position.AltitudeType; + var ret; + if (Object.ObjectType == 1 || Object.ObjectType == 2) + ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position); + else + ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position); + if (!ret) { + SGWorld.ProjectTree.EnableRedraw(1); + return; + } + } + catch (e) { } + } + SGWorld.ProjectTree.EnableRedraw(1); +} diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon71.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon71.js new file mode 100644 index 0000000..4f8a538 --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon71.js @@ -0,0 +1,792 @@ + +/**** JQuery was removed from toolsCommon70. You should include one of the JQuery files under the "JQuery" folder ****/ + + +if(!this.JSON){this.JSON={};} +(function(){function f(n){return n<10?'0'+n:n;} +if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+ +f(this.getUTCMonth()+1)+'-'+ +f(this.getUTCDate())+'T'+ +f(this.getUTCHours())+':'+ +f(this.getUTCMinutes())+':'+ +f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};} +var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';} +function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);} +if(typeof rep==='function'){value=rep.call(holder,key,value);} +switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';} +gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';} +v=partial.length===0?'[]':gap?'[\n'+gap+ +partial.join(',\n'+gap)+'\n'+ +mind+']':'['+partial.join(',')+']';gap=mind;return v;} +if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}} +v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+ +mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}} +if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;} +rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');} +return str('',{'':value});};} +if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}} +return reviver.call(holder,key,value);} +cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+ +('0000'+a.charCodeAt(0).toString(16)).slice(-4);});} +if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;} +throw new SyntaxError('JSON.parse');};}}()); + +/* +New API enums. Generated from Freeze20 +*/ +var ActionCode = {}; ActionCode.AC_FLYTO = 0; ActionCode.AC_CIRCLEPATTERN = 1; ActionCode.AC_OVALPATTERN = 2; ActionCode.AC_LINEPATTERN = 3; ActionCode.AC_ARCPATTERN = 4; ActionCode.AC_FOLLOWBEHIND = 5; ActionCode.AC_FOLLOWABOVE = 6; ActionCode.AC_FOLLOWBELOW = 7; ActionCode.AC_FOLLOWRIGHT = 8; ActionCode.AC_FOLLOWLEFT = 9; ActionCode.AC_FOLLOWBEHINDANDABOVE = 10; ActionCode.AC_FOLLOWCOCKPIT = 11; ActionCode.AC_FOLLOWFROMGROUND = 12; ActionCode.AC_STOP = 13; ActionCode.AC_JUMP = 14; ActionCode.AC_DELETE = 15; ActionCode.AC_EDIT_FINISHED = 16; ActionCode.AC_OBJECT_ADDED = 17; ActionCode.AC_PLAY = 18; ActionCode.AC_SHOW = 19; ActionCode.AC_EDIT_STARTED = 20; ActionCode.AC_SELCHANGED = 21; ActionCode.AC_WAYPOINT_REACHED = 22; ActionCode.AC_GROUP_ADDED = 23; ActionCode.AC_LAYER_ADDED = 24; ActionCode.AC_LAYER_REFRESHED = 25; ActionCode.AC_ITEM_MOVED=26; var AltitudeTypeCode = {}; AltitudeTypeCode.ATC_TERRAIN_RELATIVE = 0; AltitudeTypeCode.ATC_PIVOT_RELATIVE = 1; AltitudeTypeCode.ATC_ON_TERRAIN = 2; AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE = 3; AltitudeTypeCode.ATC_DEFAULT = 999; var DynamicMotionStyle = {}; DynamicMotionStyle.MOTION_GROUND_VEHICLE = 0; DynamicMotionStyle.MOTION_AIRPLANE = 1; DynamicMotionStyle.MOTION_HELICOPTER = 2; DynamicMotionStyle.MOTION_HOVER = 3; var DynamicObjectType = {}; DynamicObjectType.DYNAMIC_3D_MODEL = 0; DynamicObjectType.DYNAMIC_TEXT_LABEL = 1; DynamicObjectType.DYNAMIC_IMAGE_LABEL = 2; DynamicObjectType.DYNAMIC_VIRTUAL = 3; var LabelStyle = {}; LabelStyle.LS_DEFAULT = 0; LabelStyle.LS_STREET = 1; LabelStyle.LS_STATE = 2; var MsgClient6 = {}; MsgClient6.MC_LEFT = 0; MsgClient6.MC_MAIN = 2; MsgClient6.MC_MESSAGE_BAR = 3; MsgClient6.MC_FLOAT = 4; MsgClient6.MC_POPUP = 5; var MsgType = {}; MsgType.TYPE_TEXT = 0; MsgType.TYPE_URL = 1; MsgType.TYPE_SCRIPT = 3; var ModelTypeCode = {}; ModelTypeCode.MT_NORMAL = 0; ModelTypeCode.MT_ANIMATION = 1; ModelTypeCode.MT_PROGRESSIVE = 2; var LayerGeometryType = {}; LayerGeometryType.LGT_POINT = 0; LayerGeometryType.LGT_POLYLINE = 1; LayerGeometryType.LGT_POLYGON = 2; LayerGeometryType.LGT_COLLECTION = 3; LayerGeometryType.LGT_NONE = -1; var SphereStyle = {}; SphereStyle.SPHERE_NORMAL = 0; SphereStyle.SPHERE_UPPER_HALF = 1; SphereStyle.SPHERE_LOWER_HALF = 2; SphereStyle.SPHERE_UPPER_HALF_BASE = 3; SphereStyle.SPHERE_LOWER_HALF_BASE = 4; var ElevationBehaviorMode = {}; ElevationBehaviorMode.EB_REPLACE = 0; ElevationBehaviorMode.EB_BELOW = 1; ElevationBehaviorMode.EB_ABOVE = 2; var EditItemFlags = {}; EditItemFlags.EDIT_ITEM_USE_PROPERTY = 0; EditItemFlags.EDIT_ITEM = 1; EditItemFlags.EDIT_ITEM_VERTICES = 2; EditItemFlags.EDIT_ITEM_BUILDING_ROOF = 3; var ItemCode = {}; ItemCode.SELECTED = 10; ItemCode.CHILD = 11; ItemCode.FIRSTVISIBLE = 12; ItemCode.NEXT = 13; ItemCode.NEXTVISIBLE = 14; ItemCode.PARENT = 15; ItemCode.PREVIOUS = 16; ItemCode.PREVIOUSVISIBLE = 17; ItemCode.ROOT = 18; var SortType = {}; SortType.SORT_ALPHABETICALLY_AZ = 0; SortType.SORT_ALPHABETICALLY_ZA = 1; SortType.SORT_BY_TYPE = 2; SortType.SORT_NO_SORT = 3; var WorldPointType = {}; WorldPointType.WPT_MODEL = 1; WorldPointType.WPT_LABEL = 2; WorldPointType.WPT_PRIMITIVE = 4; WorldPointType.WPT_ANIM = 8; WorldPointType.WPT_BUILDING = 16; WorldPointType.WPT_SKY = 32; WorldPointType.WPT_ACCURATE_CPT = 64; WorldPointType.WPT_BBOX_CPT = 128; WorldPointType.WPT_VIDEO = 256; WorldPointType.WPT_UNDERGROUND = 512; WorldPointType.WPT_SCREEN_OVERLAY = 1024; WorldPointType.WPT_SCREEN_CONTROL = 2048; WorldPointType.WPT_SCREEN_COVERED = 4096; WorldPointType.WPT_ALL = -1; var MouseInputMode = {}; MouseInputMode.MI_FREE_FLIGHT = 0; MouseInputMode.MI_COM_CLIENT = 1; MouseInputMode.MI_CONTROLLED_FLIGHT = 2; MouseInputMode.MI_EDIT = 3; MouseInputMode.MI_MEASURAMENT = 4; var MessageBarTextAlignment = {}; MessageBarTextAlignment.MBT_LEFT = 0; MessageBarTextAlignment.MBT_CENTER = 1; MessageBarTextAlignment.MBT_RIGHT = 2; var AccuracyLevel = {}; AccuracyLevel.ACCURACY_NORMAL = 0; AccuracyLevel.ACCURACY_BEST_FROM_MEMORY = 1; AccuracyLevel.ACCURACY_BEST_FROM_MPT = 2; var PermissionType = {}; PermissionType.LMP_ENABLE_ALL = 0; PermissionType.LMP_DISABLE_API = 1; PermissionType.LMP_DISABLE_UI = 2; PermissionType.LMP_DISABLE_ALL = -1; var SliderDisplayMode = {}; SliderDisplayMode.MODE_TIME_NONE = 0; SliderDisplayMode.MODE_FIXED_TIME = 1; SliderDisplayMode.MODE_TIME = 2; SliderDisplayMode.MODE_RANGE_PROJECT = 4; SliderDisplayMode.MODE_RANGE_CUSTOM = 8; SliderDisplayMode.MODE_ADJUST_FOR_GROUP = 16; var TimeZoneType = {}; TimeZoneType.TIME_ZONE_TYPE_MY_COMPUTER = 0; TimeZoneType.TIME_ZONE_TYPE_UTC = 1; TimeZoneType.TIME_ZONE_TYPE_SPECIFIC = 2; var TEVesrionType = {}; TEVesrionType.TEVT_PRO = 0; TEVesrionType.TEVT_PLUS = 1; TEVesrionType.TEVT_VIEWER = 2; TEVesrionType.TEVT_UNKNOWN = -1; var ObjectTypeCode = {}; ObjectTypeCode.OT_UNDEFINED = 0; ObjectTypeCode.OT_POLYLINE = 1; ObjectTypeCode.OT_POLYGON = 2; ObjectTypeCode.OT_RECTANGLE = 3; ObjectTypeCode.OT_REGULAR_POLYGON = 4; ObjectTypeCode.OT_CIRCLE = 5; ObjectTypeCode.OT_3D_POLYGON = 6; ObjectTypeCode.OT_BUILDING = 7; ObjectTypeCode.OT_BOX = 8; ObjectTypeCode.OT_PYRAMID = 9; ObjectTypeCode.OT_CYLINDER = 10; ObjectTypeCode.OT_CONE = 11; ObjectTypeCode.OT_ELLIPSE = 12; ObjectTypeCode.OT_ARC = 13; ObjectTypeCode.OT_ARROW = 14; ObjectTypeCode.OT_3D_ARROW = 15; ObjectTypeCode.OT_SPHERE = 16; ObjectTypeCode.OT_MODEL = 17; ObjectTypeCode.OT_LABEL = 18; ObjectTypeCode.OT_LOCATION = 19; ObjectTypeCode.OT_TREE_HOTLINK = 20; ObjectTypeCode.OT_ROUTE = 21; ObjectTypeCode.OT_MESSAGE = 22; ObjectTypeCode.OT_DYNAMIC = 23; ObjectTypeCode.OT_IMAGE_LABEL = 24; ObjectTypeCode.OT_THREAT_DOME = 25; ObjectTypeCode.OT_IMAGERY_LAYER = 26; ObjectTypeCode.OT_TERRAIN_VIDEO = 27; ObjectTypeCode.OT_POINT_CLOUD = 28; ObjectTypeCode.OT_ELEVATION_LAYER = 29; ObjectTypeCode.OT_TERRAIN_MODIFIER = 30; ObjectTypeCode.OT_TERRAIN_HOLE = 31; ObjectTypeCode.OT_POPUP_MESSAGE = 32; ObjectTypeCode.OT_FEATURE = 33; ObjectTypeCode.OT_PRESENTATION = 34; ObjectTypeCode.OT_ANALYSIS_LOS = 35; var SGGeometryTypeId = {}; SGGeometryTypeId.SG_POINT = 0; SGGeometryTypeId.SG_LINESTRING = 1; SGGeometryTypeId.SG_LINEARRING = 2; SGGeometryTypeId.SG_POLYGON = 3; SGGeometryTypeId.SG_MULTIPOINT = 4; SGGeometryTypeId.SG_MULTILINESTRING = 5; SGGeometryTypeId.SG_MULTIPOLYGON = 6; var BuildingStyleCode = {}; BuildingStyleCode.BS_STRETCH_TERRAIN = 0; BuildingStyleCode.BS_POLYGONS = 1; var IntersectionType = {}; IntersectionType.IT_NONE = 0; IntersectionType.IT_INTERSECT = 1; IntersectionType.IT_WITHIN = 2; var StreamLayerStatus = {}; StreamLayerStatus.SLS_NOT_STREAMED_LAYER = 0; StreamLayerStatus.SLS_STREAMING = 1; StreamLayerStatus.SLS_STREAM_PAUSED = 2; var AltitudeUnitCode = {}; AltitudeUnitCode.AU_METER = 0; AltitudeUnitCode.AU_FEET = 1; AltitudeUnitCode.AU_CENTIMETER = 2; AltitudeUnitCode.AU_DECIMETER = 3; AltitudeUnitCode.AU_INCHE = 4; AltitudeUnitCode.AU_YARD = 5; AltitudeUnitCode.AU_UNDEFINED = -1; var LabelLockMode = {}; LabelLockMode.LM_DECAL = 0; LabelLockMode.LM_AXIS = 1; LabelLockMode.LM_AXIS_TEXTUP = 2; LabelLockMode.LM_AXIS_AUTOPITCH = 3; LabelLockMode.LM_AXIS_AUTOPITCH_TEXTUP = 4; var DistributionDir = {}; DistributionDir.DOWN_UP = 0; DistributionDir.UP_DOWN = 1; DistributionDir.RIGHT_LEFT = 2; DistributionDir.LEFT_RIGHT = 3; DistributionDir.FRONT_BACK = 4; DistributionDir.BACK_FRONT = 5; var CPTDataFormat = {}; CPTDataFormat.CPT_DF_INTENSITY = 0; CPTDataFormat.CPT_DF_RGB = 1; var _HTML_POPUP_FLAGS = {}; _HTML_POPUP_FLAGS.HTML_POPUP_NONE = 0; _HTML_POPUP_FLAGS.HTML_POPUP_ANCHOR_3D_WINDOW = 1; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_DRAG = 2; _HTML_POPUP_FLAGS.HTML_POPUP_NO_CAPTION = 4; _HTML_POPUP_FLAGS.HTML_POPUP_USE_DEFAULT_POS = 8; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_SIZE = 16; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_RESIZE = 32; _HTML_POPUP_FLAGS.HTML_POPUP_ADD_SHADOW = 64; _HTML_POPUP_FLAGS.HTML_POPUP_NO_BORDER = 128; _HTML_POPUP_FLAGS.HTML_POPUP_SET_FOCUS_TO_RENDER = 256; _HTML_POPUP_FLAGS.HTML_POPUP_NOT_USE_POINTER = 512; _HTML_POPUP_FLAGS.HTML_POPUP_ALWAYS_VISIBLE = 1024; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_POS = 2048; _HTML_POPUP_FLAGS.HTML_POPUP_USE_TEXT_AS_INNER_HTML = 4096; var PresentationStepContinue = {}; PresentationStepContinue.PSC_MOUSECLICK = 0; PresentationStepContinue.PSC_WAIT = 1; var PresentationStepFlightSpeed = {}; PresentationStepFlightSpeed.PSFS_VERYSLOW = 0; PresentationStepFlightSpeed.PSFS_SLOW = 1; PresentationStepFlightSpeed.PSFS_NORMAL = 2; PresentationStepFlightSpeed.PSFS_FAST = 3; PresentationStepFlightSpeed.PSFS_VERYFAST = 4; var PresentationPlayAlgorithm = {}; PresentationPlayAlgorithm.PPA_FLYTO = 0; PresentationPlayAlgorithm.PPA_SPLINE = 1; var PresentationPlayMode = {}; PresentationPlayMode.PPM_AUTOMATIC = 0; PresentationPlayMode.PPM_MANUAL = 1; var PresentationCaptionSizeType = {}; PresentationCaptionSizeType.PCST_FIXED = 0; PresentationCaptionSizeType.PCST_AUTOMATICALLYADJUST = 1; var PresentationCaptionPosition = {}; PresentationCaptionPosition.PCP_TOPLEFT = 0; PresentationCaptionPosition.PCP_TOPCENTER = 1; PresentationCaptionPosition.PCP_TOPRIGHT = 2; PresentationCaptionPosition.PCP_BOTTOMLEFT = 3; PresentationCaptionPosition.PCP_BOTTOMCENTER = 4; PresentationCaptionPosition.PCP_BOTTOMRIGHT = 5; var PresentationStatus = {}; PresentationStatus.PS_PLAYING = 0; PresentationStatus.PS_NOTPLAYING = 1; PresentationStatus.PS_PAUSED = 2; PresentationStatus.PS_WAITINGTIME = 3; PresentationStatus.PS_WAITINGCLICK = 4; var VideoPlayStatus = {}; VideoPlayStatus.VPS_PAUSE = 0; VideoPlayStatus.VPS_PLAY = 1; VideoPlayStatus.VPS_STOP = 2; var ContainerSite = {}; ContainerSite.CS_DOCK_LEFT = 0; ContainerSite.CS_DOCK_RIGHT = 1; ContainerSite.CS_DOCK_TOP = 2; ContainerSite.CS_DOCK_BOTTOM = 3; ContainerSite.CS_DOCK_FLOAT = 4; ContainerSite.CS_MAIN = 5; ContainerSite.CS_NOT_VALID = -1; var FaceFillTypeCode = {}; FaceFillTypeCode.FACE_COLOR = 0; FaceFillTypeCode.FACE_TEXTURE = 1; FaceFillTypeCode.FACE_TERRAIN_TEXTURE = 2; FaceFillTypeCode.FACE_UNDEFINED = -1; var RoofStyleCode = {}; RoofStyleCode.ROOFTOP_FLAT = 0; RoofStyleCode.ROOFTOP_ANGULAR = 1; var PresentationStepType = {}; PresentationStepType.ST_LOCATION = 0; PresentationStepType.ST_DYNAMICOBJECT = 1; PresentationStepType.ST_GROUPOROBJECT = 2; PresentationStepType.ST_UNDERGROUNDMODE = 3; PresentationStepType.ST_TIMESLIDER = 4; PresentationStepType.ST_CURRENTTIME = 5; PresentationStepType.ST_MESSAGE = 6; PresentationStepType.ST_TOOL = 7; PresentationStepType.ST_CAPTION = 8; PresentationStepType.ST_RESTARTDYNAMICOBJECT = 9; PresentationStepType.ST_FLIGHTSPEEDFACTOR = 10; PresentationStepType.ST_CLEARCAPTION = -1; var TilingMethodCode = {}; TilingMethodCode.TM_TILES_PER_SIDE = 0; TilingMethodCode.TM_TILES_PER_AXIS = 0; TilingMethodCode.TM_METERS_PER_TILE = 1; TilingMethodCode.TM_UNDEFINED = -1; var AttributeTypeCode = {}; AttributeTypeCode.AT_TEXT = 0; AttributeTypeCode.AT_INTEGER = 1; AttributeTypeCode.AT_DOUBLE = 2; AttributeTypeCode.AT_UNKNOWN = -1; var FeatureState = {}; FeatureState.FS_NONE = 0; FeatureState.FS_NEW = 1; FeatureState.FS_MODIFIED = 2; FeatureState.FS_DELETED = 3; + +SGLang = { + lang : {}, + /** + * APIProperty: defaultCode + * {String} Default language to use when a specific language can't be + * found. Default is "en". + */ + defaultCode: "2052", + + /** + * APIFunction: getCode + * Get the current language code. + * + * Returns: + * The current language code. + */ + getCode: function() { + //var lang = SGLang.getUrlParameters()["lang"]; + //if(!lang) + // lang = SGLang.defaultCode; + //return lang; + return "2052"; + }, + + getUrlParameters: function() + { + var vars = [], hash; + var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split(/&|\?/ig); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; + }, + + /** + * APIMethod: translate + * Looks up a key from a dictionary based on the current language string. + * The value of <getCode> will be used to determine the appropriate + * dictionary. Dictionaries are stored in <SGLang>. + * + * Parameters: + * key - {String} The key for an i18n string value in the dictionary. + * context - {Object} Optional context to be used with + * <SGAPI.String.format>. + * + * Returns: + * {String} A internationalized string. + */ + i18n: function(key, context) { + var message = SGLang.lang[key]; + if(!message) { + // Message not found, fall back to message key + message = key; + } + if(context) { + message = SGLang.format(message, context); + } + return message; + }, + + i18nFile: function(file) { + var code = this.getCode(); + if(code == "0" || code == "1033") + return file; + return code + "/" + file; + }, + + format: function(template, context, args) { + if(!context) { + context = window; + } + + // Example matching: + // str = ${foo.bar} + // match = foo.bar + var replacer = function(str, match) { + var replacement; + + // Loop through all subs. Example: ${a.b.c} + // 0 -> replacement = context[a]; + // 1 -> replacement = context[a][b]; + // 2 -> replacement = context[a][b][c]; + var subs = match.split(/\.+/); + for (var i=0; i< subs.length; i++) { + if (i == 0) { + replacement = context; + } + + replacement = replacement[subs[i]]; + } + + if(typeof replacement == "function") { + replacement = args ? + replacement.apply(null, args) : + replacement(); + } + + // If replacement is undefined, return the string 'undefined'. + // This is a workaround for a bugs in browsers not properly + // dealing with non-participating groups in regular expressions: + // http://blog.stevenlevithan.com/archives/npcg-javascript + if (typeof replacement == 'undefined') { + return 'undefined'; + } else { + return replacement; + } + }; + + return template.replace(SGLang.tokenRegEx, replacer); + }, + + /** + * Property: SGLang.tokenRegEx + * Used to find tokens in a string. + * Examples: ${a}, ${a.b.c}, ${a-b}, ${5} + */ + tokenRegEx: /\$\{([\w.]+?)\}/g +}; + +//------------------- +// load requested lang file +(function() { + // document.write("<script language='javascript' src='Lang.js'></script>"); + // var code = SGLang.getCode(); + // document.write("<script language='javascript' src='" + code + "/Lang.js'></script>"); + + var head = document.head || document.getElementsByTagName("head")[0]; + + // New way to support IE10 + firstScript = head.getElementsByTagName("script")[0]; + + var script = document.createElement("script"); + script.setAttribute("src", "Lang.js"); + head.insertBefore(script, firstScript); + + var code = SGLang.getCode(); + + var script2 = document.createElement("script"); + script2.setAttribute("src", code + "/Lang.js"); + head.insertBefore(script2, firstScript); +})(); + +// hide document body, so that TextXXX won't be visible until we replace them on document ready +$(document.body).hide(); +//------------------- +$(document).ready(function () +{ + $(document.body).hide(); + var translateDocument = function() + { + document.title = SGLang.i18n(document.title); + $(".i18n").each(function () + { + if (this.tagName == "INPUT") + { + this.value = SGLang.i18n(this.value); + } + else if (this.tagName == "IMG") + { + $(this).attr("src",SGLang.i18n($(this).attr("src"))); + $(this).attr("alt", SGLang.i18n($(this).attr("alt"))); + $(this).attr("title", SGLang.i18n($(this).attr("title"))); + } + else + { + $(this).attr("title", SGLang.i18n($(this).attr("title"))); + $(this).attr("alt", SGLang.i18n($(this).attr("alt"))); + // set element html only if it does not contain any other html elements. + // otherwise it will erase them. + if ($(this).children().length == 0) + { + $(this).html(SGLang.i18n($.trim($(this).text()))); + } + } + }); + $(".i18nFile").each(function () + { + if (this.tagName == "IMG") + { + $(this).attr("src",SGLang.i18nFile($(this).attr("src"))); + } + }); + $(document.body).show(); + } + // make sure that hiding document body really worked. + // I am not sure if IE will update the document view, until the function has finished executing. + // so I am giving it here a few milliseconds of unused time. + setTimeout(translateDocument,1); +}); + +$(document).ready(function () +{ + if (GetParamValue("inSG","") == "1") + { + document.getElementById("TopAreaTD").style.height = "57"; + document.getElementById("TitleTD").align = "left"; + document.getElementById("CloseHelpTd").style.display = "none"; + } +}); + + +//------------------- +// DisplayMessagePopup +function DisplayMessagePopup(title, header, icon,body, x, y, width, height, CloseButton) { + + var HTMLString = "<html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/><link rel='StyleSheet' href='" + abspath() + "/../Style.css' type='text/css'></head><body leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><object id='SGWorld' classid='CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1' style='display:none'></object>"; + HTMLString += "<table width='100%' height='100%' cellpadding=4pt cellspacing=0 border=0> <tr height='20pt'>"; + if (icon != "") + HTMLString += "<td align='left' width='50pt'><img src='"+icon+"' alt='' ></td>"; + if (header != "") + HTMLString += "<td align='middle'><span class='s12b'>" + header + "</span></td>"; + HTMLString += "<td width='50pt'></td></tr><tr><td valign='top' colspan=3><span class='s9'>" + body + "</span></td></tr>"; + if (CloseButton) + HTMLString += "<tr><td align='right' valign=bottom colspan=3 style='background-color:#eeeeee'><input type='button' class='MenuButtonSmall' value='Close' onClick='SGWorld.Window.RemovePopupByCaption(\"" + title + "\");' /></td></tr>"; + HTMLString += "</body></html>"; + var popupMsg = SGWorld.Creator.CreatePopupMessage(title, "", x, y, width, height, -1); + popupMsg.Flags = 2 + 32 + 32768; + popupMsg.InnerText = HTMLString; + SGWorld.Window.ShowPopup(popupMsg); + +} +//------------------- +// TEAlert +function TEAlert(caption, text,info) { + var icon; + if (info==true) + icon=abspath() + "/../commonimg/info.png"; + else + icon=abspath() + "/../commonimg/alert.png"; + DisplayMessagePopup(caption, "",icon,text, (SGWorld.Window.Rect.Width)/2-200, (SGWorld.Window.Rect.Height)/2-75, 400, 150, true); + +} + +//------------------- +// DisplayHelpPopup6 +function DisplayHelpPopup6(HTMLSrc, title) { + if (title == null || title == "") + title = "?"; + var popup = SGWorld.Creator.CreatePopupMessage(title, abspath() + "/" + HTMLSrc, 5, 5, 850, 500); + popup.AllowDrag = true; + popup.AllowResize = true; + SGWorld.Window.ShowPopup(popup); + +} +//------------------- +// CloseTool +function CloseTool (ToolName) +{ + var Cont = TE.interface("IContainer2"); + Cont.RemoveURL (1,ToolName); +} + +//-------------- +// abspath +function abspath() +{ + var abspath = unescape(window.location.href); + + // Remove query String + var index=abspath.indexOf("?"); + if (index > 0) abspath = abspath.substr (0,index-1); + + index=abspath.lastIndexOf("/"); + var index2 = abspath.lastIndexOf("\\"); + + index = (index > index2) ? index : index2; + if (index <= 0) return abspath; + + abspath = abspath.substring(0,index); + + if(abspath.substring(0,1) == "/") abspath = abspath.slice(1); + + var re = /file:\/\/\//gi; + if (abspath.match(re) != null) abspath = abspath.replace(re,""); // if this is indeed a local file, we strip the "file://" prefix from it. + + return(abspath); +} +// GetParamValue +function GetParamValue(findParam, defaultValue) +{ + var arr = document.location.href.split("?"); + if (arr.length <= 1) return defaultValue; + arr = arr[1].split("&"); + for (var i = 0; i < arr.length; i++) { + if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) { + arr = arr[i].split("="); + return arr[1]; + } + } + return defaultValue; +} +//----------------- +// validateNumber +function validateNumber(strNum) +{ + strNum = strNum.replace(/,/, "."); + return parseFloat (strNum); +} +//-------------- +// validateNumberEx +function validateNumberEx(field, defVal, MinNum, MaxNum) { + try { + field.val (validateNumber(field.val())); + + if (field.val() < MinNum) + field.val(MinNum); + if (field.val() > MaxNum) + field.val( MaxNum); + } + catch (e) {field.val(defVal); } +} +//-------------- +// CheckNumberEx +function CheckNumberEx(field, defVal, MinNum, MaxNum) { + try { + if (isNaN(field.value)) + field.value = defVal; + + if (field.value < MinNum) + field.value = MinNum; + if (field.value > MaxNum) + field.value = MaxNum; + } + catch (e) { field.value = defVal } +} + + /** + * APIMethod: drawing tools + * + */ + +var gDrawingEditMode = 0; + +var drawing = { + drawingEditMode: -1, + polyObject: null, + helpLine: null, // Vertical line in case we select Horizontal Plane and want to see the connection between the cursor and the plane + drawPolygon: function (options) { drawing_startDrawing (2,options); }, + drawPolyline: function (options) { drawing_startDrawing (1,options); }, + //drawPoints: drawing_startDrawing (0,options), + abort: function (deleteObj) {drawing_finishDrawing(true); } +} + +//------------- +//drawing_startDrawing +function drawing_startDrawing(type,options) { + try { + drawing.drawingEditMode = type; + drawing.options = options; + + SGWorld.AttachEvent("OnLButtonClicked", drawing_DrawPolyLButtonClicked); + SGWorld.AttachEvent("OnRButtonUp", drawing_DrawPolyRButtonUp); + SGWorld.AttachEvent("OnFrame", drawing_DrawPolyOnFrame); + SGWorld.AttachEvent("OnInputModeChanged", drawing_DrawPolyInputModeChanged); + SGWorld.Window.SetInputMode(1, abspath() + "/cursor_m.cur", true); + } + catch (err) {if (gDebug) alert(err.message);} +} + +//------------- +//drawing_finishDrawing +function drawing_finishDrawing (deleteObject){ + try { + if (deleteObject && drawing.polyObject != null) + SGWorld.Creator.DeleteObject(drawing.polyObject.ID); + if (drawing.helpLine != null) + SGWorld.Creator.DeleteObject(drawing.helpLine.ID); + + drawing.polyObject = null; + drawing.helpLine = null; + drawing.options.onAbort(); + } + catch (err) {} + try { + SGWorld.Window.SetInputMode(0); + drawing.drawingEditMode = -1; + + SGWorld.DetachEvent("OnLButtonClicked", drawing_DrawPolyLButtonClicked); + SGWorld.DetachEvent("OnRButtonUp", drawing_DrawPolyRButtonUp); + SGWorld.DetachEvent("OnFrame", drawing_DrawPolyOnFrame); + SGWorld.DetachEvent("OnInputModeChanged", drawing_DrawPolyInputModeChanged); + } + catch (err) {} + +} +//------------- +//drawing_DrawPolyInputModeChanged +function drawing_DrawPolyInputModeChanged(NewMode) { + + if (NewMode != 1) + if (drawing.drawingEditMode != -1) + drawing.abort(); +} +//---------- +// drawing_DrawPolyLButtonDown +function drawing_DrawPolyLButtonDown(Flags, X, Y) { + drawing_DrawPolyLButtonClicked(Flags, X, Y); +} +//---------- +// drawing_DrawPolyLButtonClicked +function drawing_DrawPolyLButtonClicked(Flags, X, Y) { + try { + var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, -1 & ~(128 | 1024)); + + var altitudeMethod = (typeof drawing.options.altitudeMethod !== "undefined")?drawing.options.altitudeMethod :3; + var parentGroup = (typeof drawing.options.parentGoupID !== "undefined")?drawing.options.parentGoupID :SGWorld.ProjectTree.HiddenGroupID; + + if (drawing.polyObject == null) { + // We always start with a polyline and change it to Polygon (for area) after the second click) + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]) + drawing.polyObject = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), altitudeMethod, parentGroup, "polyline"); + drawing_StylePoly(drawing.polyObject); + drawing.polyObject.Geometry.StartEdit(); + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true){ + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([0, 0, 0, 0, 0, 0]) + drawing.helpLine = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), altitudeMethod, SGWorld.ProjectTree.HiddenGroupID, "helper"); + drawing_StyleHelpLine(drawing.helpLine); + drawing.helpLine.Geometry.StartEdit(); + } + + } + else { + + if (drawing.drawingEditMode == 2) // Polygon + { + if (drawing.polyObject.ObjectType == 1) { + if (drawing.polyObject.Geometry.Points.Item(0).X == CursorCoord.Position.x &&drawing.polyObject.Geometry.Points.Item(0).Y == CursorCoord.Position.y &&drawing.polyObject.Geometry.Points.Item(0).Z == CursorCoord.Position.Altitude ) + return; + // Deleting the temporary line + var x = drawing.polyObject.Geometry.Points.Item(0).X; + var y = drawing.polyObject.Geometry.Points.Item(0).Y; + var z = drawing.polyObject.Geometry.Points.Item(0).Z; + SGWorld.Creator.DeleteObject(drawing.polyObject.ID); + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + CursorCoord.Position.Altitude = z; + + // Creating the polygon + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, z, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]); + drawing.polyObject = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), altitudeMethod, parentGroup, "polygon"); + drawing_StylePoly(drawing.polyObject); + drawing.polyObject.Geometry.StartEdit(); + } + else { + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x; + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y; + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = drawing.polyObject.Geometry.Rings(0).Points.Item(0).Z; + drawing.polyObject.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude); + } + } + else { // Polyline + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).X = CursorCoord.Position.x; + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Y = CursorCoord.Position.y; + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = drawing.polyObject.Geometry.Points.Item(0).Z; + drawing.polyObject.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude); + } + } + + if (typeof drawing.options.onAddPoint !== "undefined") + drawing.options.onAddPoint(drawing.polyObject.Geometry, drawing.polyObject.ObjectType, drawing.polyObject.Position.AltitudeType); + + drawing.polyObject.SetParam(5440, 1); + } + catch (err) {if (gDebug) alert(err.message);} + + return false; +} + +//----------- +// drawing_StylePoly +function drawing_StylePoly (poly){ + try { + // Line style + poly.LineStyle.Width = (typeof drawing.options.style.lineWidth !== "undefined")?drawing.options.style.lineWidth*(-1):-2; + poly.LineStyle.Color.fromHTMLColor((typeof drawing.options.style.lineColor !== "undefined")?drawing.options.style.lineColor :"#ffffff"); + poly.LineStyle.Color.SetAlpha((typeof drawing.options.style.lineOpacity !== "undefined")?drawing.options.style.lineOpacity :1); + poly.LineStyle.Pattern = (typeof drawing.options.style.linePattern !== "undefined")?drawing.options.style.linePattern :0xffffffff; + // Line back color + poly.LineStyle.BackColor.fromHTMLColor((typeof drawing.options.style.lineBackColor !== "undefined")?drawing.options.style.lineBackColor :"#000000"); + poly.LineStyle.BackColor.SetAlpha((typeof drawing.options.style.lineBackOpacity !== "undefined")?drawing.options.style.lineBackOpacity :0); + // Fill style + poly.FillStyle.Color.fromHTMLColor((typeof drawing.options.style.fillColor !== "undefined")?drawing.options.style.fillColor :"#ffffff"); + poly.FillStyle.Color.SetAlpha((typeof drawing.options.style.fillOpacity !== "undefined")?drawing.options.style.fillOpacity :0); + // Generic style + poly.SaveInFlyFile = (typeof drawing.options.saveOnExit !== "undefined")?drawing.options.saveOnExit :false; + + } + catch (err) {if (gDebug) alert(err.message);} +} +//----------- +// drawing_StyleHelpLine +function drawing_StyleHelpLine (poly){ + try { + poly.LineStyle.Width = -2; + poly.LineStyle.Color.fromHTMLColor("#ffff00"); + poly.LineStyle.Pattern = 0xaaaaaaaa; + poly.SaveInFlyFile = false; + + } + catch (err) {if (gDebug) alert(err.message);} +} + +//----------- +// onFrame +function drawing_DrawPolyOnFrame() { + if (drawing.polyObject != null) { + + try { + var mouseInfo = SGWorld.Window.GetMouseInfo() + var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, -1 & ~(128|1024)); + if (CursorCoord == null) + return false; + if (drawing.polyObject.ObjectType == 2) { + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x; + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y; + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = drawing.polyObject.Geometry.Rings(0).Points.Item(0).Z; + + } + else { + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).X = CursorCoord.Position.x; + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Y = CursorCoord.Position.y; + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = drawing.polyObject.Geometry.Points.Item(0).Z; + } + drawing.polyObject.SetParam(5440, 1); + + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true && drawing.helpLine!= null){ + drawing.helpLine.Geometry.Points.Item(0).X = CursorCoord.Position.x; + drawing.helpLine.Geometry.Points.Item(0).Y = CursorCoord.Position.y; + drawing.helpLine.Geometry.Points.Item(0).Z = CursorCoord.Position.Altitude; + drawing.helpLine.Geometry.Points.Item(1).X = CursorCoord.Position.x; + drawing.helpLine.Geometry.Points.Item(1).Y = CursorCoord.Position.y; + drawing.helpLine.Geometry.Points.Item(1).Z = drawing.polyObject.Geometry.Points.Item(0).Z; + } + } + catch (e) { } + } +} +//------------- +// drawing_DrawPolyRButtonUp +function drawing_DrawPolyRButtonUp(Flags, X, Y) { + var deleteWhenExit = (typeof drawing.options.deleteWhenExit !== "undefined")?drawing.options.deleteWhenExit :true; + if (drawing.polyObject == null || ((drawing.polyObject.ObjectType == 1 && drawing.polyObject.Geometry.Points.count <= 2) || (drawing.polyObject.ObjectType == 2 && drawing.polyObject.Geometry.Rings(0).Points.count <= 3))) { + drawing_finishDrawing(deleteWhenExit); + return false; + } + if (drawing.polyObject.ObjectType == 1) + drawing.polyObject.Geometry.Points.DeletePoint(drawing.polyObject.Geometry.Points.count - 1); + else + drawing.polyObject.Geometry.Rings(0).Points.DeletePoint(drawing.polyObject.Geometry.Rings(0).Points.count - 1); + + drawing.polyObject.Geometry.EndEdit(); + + drawing.options.onFinish(drawing.polyObject.Geometry, drawing.polyObject.ObjectType, drawing.polyObject.Position.AltitudeType,drawing.polyObject.ID ); + drawing_finishDrawing (deleteWhenExit); + return true; +} +//------------------- +//searchGeometries +function searchGeometries2(parentNode, callbackFunc) { + SGWorld.ProjectTree.EnableRedraw(0); + searchGeometriesLeaf2(parentNode, callbackFunc); + SGWorld.ProjectTree.EnableRedraw(1); +} +//------------------- +// searchGeometries +function searchGeometriesLeaf2(parentNode, callbackFunc) { + + if (SGWorld.ProjectTree.IsLayer(parentNode)) // Layer + { + var layer = SGWorld.ProjectTree.GetLayer(parentNode); + var featureGroups = layer.FeatureGroups; + for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers + { + var featureGroup = featureGroups.Item(i); + var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method")); + var features = featureGroup.Features; + for (var j = 0; j < features.Count; j++) { + var ret; + if (featureGroup.GeometryType != 0) + ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType); + else { + if (features.Item(j).Geometry.GeometryType == 0) // Point + { + var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z); + ret = callbackFunc(position, featureGroup.GeometryType, altitudeType); + } + } + if (!ret) + return; + } + } + } + else { + var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11); + while (node != "") { + if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node)) + searchGeometriesLeaf2(node, callbackFunc); + else { + var Object = SGWorld.Creator.GetObject(node); + if (Object != null) { + var altitudeType = Object.Position.AltitudeType; + var ret; + if (Object.ObjectType == 1 || Object.ObjectType == 2) + ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position); + else + ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position); + + if (!ret) + return; + } + } + + node = SGWorld.ProjectTree.GetNextItem(node, 13); + } + } +} + +//------------------- +//AltitudeMethodToAltitudeType +function AltitudeMethodToAltitudeType(altitudeMethod) +{ + switch(altitudeMethod) + { + case 10: return AltitudeTypeCode.ATC_TERRAIN_RELATIVE; + case 11: return AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE; + case 12: return AltitudeTypeCode.ATC_ON_TERRAIN; + case 13: return AltitudeTypeCode.ATC_PIVOT_RELATIVE; + } +} +//------------------- +//searchGeometriesClipbaord +function searchGeometriesClipboard(callbackFunc) { + SGWorld.ProjectTree.EnableRedraw(0); + var Object; + for (var i = 0; i < SGWorld.Application.Clipboard.Count; i++) { + try { + Object = SGWorld.Application.Clipboard.Item(i); + var altitudeType = Object.Position.AltitudeType; + var ret; + if (Object.ObjectType == 1 || Object.ObjectType == 2) + ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position); + else + ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position); + if (!ret) { + SGWorld.ProjectTree.EnableRedraw(1); + return; + } + } + catch (e) { } + } + SGWorld.ProjectTree.EnableRedraw(1); +} +//---------------- +// GetElevationBuffer +function getElevationBuffer(geometry, resolution){ + + try { + var polygonGeometry = geometry.Clone(); // to enable edit geometry (ref) when geometry type is RelativeToPivot. Navon. + var envelope = polygonGeometry.Envelope; // Multi polygon evnelope (min/max) + var MinX = Math.min(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x); + var MaxX = Math.max(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x); + var MinY = Math.min(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y); + var MaxY = Math.max(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y); + + var stepX = Math.abs(MaxX - MinX) / resolution; + var stepY = Math.abs(MaxY - MinY) / resolution; + + // For now we call this query several times because of an engine bug!!! + var elevatuinBuffer = []; + elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray(); + elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray(); + elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray(); + return elevatuinBuffer; + } + catch (e) {return null; } +} +//------------------- +// BuildObjectsList +function BuildObjectsList(parentNode, list, objectType) { + try { + var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11); + while (node != "") { + if (!SGWorld.ProjectTree.IsLayer(node)) { + try{ + var Object = SGWorld.Creator.GetObject(node); + if (Object != null) { + if (Object.ObjectType == objectType) + list.push(Object.ID); + } + } + catch (err){} + if (SGWorld.ProjectTree.IsGroup(node)) + BuildObjectsList(node, list, objectType); + } + else if (objectType==36) + list.push(node); + node = SGWorld.ProjectTree.GetNextItem(node, 13); + } + } + catch (err) {if (gDebug) alert(err.message); } +} +//------------------- +// BuildFoldersList +function BuildFoldersList(parentNode, list) { + try { + var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11); + while (node != "") { + if (SGWorld.ProjectTree.IsGroup(node)){ + list.push(node); + BuildFoldersList(node, list); + } + node = SGWorld.ProjectTree.GetNextItem(node, 13); + } + } + catch (err) {if (gDebug) alert(err.message); } +} +//------------- +// ScanPolygon +// function scan2DPolygon (geometry, step, callback) { + +// var polygonGeometry = geometry.Clone(); // to enable edit geometry (ref) when geometry type is RelativeToPivot. Navon. +// var envelope = polygonGeometry.Envelope; // Multi polygon evnelope (min/max) +// var MinX = Math.min(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x); +// var MaxX = Math.max(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x); +// var MinY = Math.min(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y); +// var MaxY = Math.max(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y); + +// var currCoord = SGWorld.Creator.CreatePosition(MinX, MinY, 0 , 0, 0); + +// while (currCoord.x < MaxX) { +// currCoord.y = MinY; +// while (currCoord.y < MaxY) { +// var pointGeometry = SGWorld.Creator.GeometryCreator.CreatePointGeometry([currCoord.x, currCoord.y, 0]); +// if (polygonGeometry.SpatialRelation.Intersects(pointGeometry)) { +// var tmpCoord = currCoord.Copy(); // to avoid changes in the CurrCoord value in the DrawObject function +// if (callback(tmpCoord) == false) +// return false; +// } +// currCoord = currCoord.Move(step, 0, 0); +// } +// currCoord = currCoord.Move(step, 90, 0); +// } +// return true; +// } \ No newline at end of file diff --git a/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon73.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon73.js new file mode 100644 index 0000000..b4d3dfb --- /dev/null +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/Resources/ToolsCommon73.js @@ -0,0 +1,831 @@ + +/**** JQuery was removed from toolsCommon70. You should include one of the JQuery files under the "JQuery" folder ****/ + + +if(!this.JSON){this.JSON={};} +(function(){function f(n){return n<10?'0'+n:n;} +if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+ +f(this.getUTCMonth()+1)+'-'+ +f(this.getUTCDate())+'T'+ +f(this.getUTCHours())+':'+ +f(this.getUTCMinutes())+':'+ +f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};} +var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';} +function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);} +if(typeof rep==='function'){value=rep.call(holder,key,value);} +switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';} +gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';} +v=partial.length===0?'[]':gap?'[\n'+gap+ +partial.join(',\n'+gap)+'\n'+ +mind+']':'['+partial.join(',')+']';gap=mind;return v;} +if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}} +v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+ +mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}} +if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;} +rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');} +return str('',{'':value});};} +if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}} +return reviver.call(holder,key,value);} +cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+ +('0000'+a.charCodeAt(0).toString(16)).slice(-4);});} +if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;} +throw new SyntaxError('JSON.parse');};}}()); + +/* +New API enums. Generated from Freeze20 +*/ +var ActionCode = {}; ActionCode.AC_FLYTO = 0; ActionCode.AC_CIRCLEPATTERN = 1; ActionCode.AC_OVALPATTERN = 2; ActionCode.AC_LINEPATTERN = 3; ActionCode.AC_ARCPATTERN = 4; ActionCode.AC_FOLLOWBEHIND = 5; ActionCode.AC_FOLLOWABOVE = 6; ActionCode.AC_FOLLOWBELOW = 7; ActionCode.AC_FOLLOWRIGHT = 8; ActionCode.AC_FOLLOWLEFT = 9; ActionCode.AC_FOLLOWBEHINDANDABOVE = 10; ActionCode.AC_FOLLOWCOCKPIT = 11; ActionCode.AC_FOLLOWFROMGROUND = 12; ActionCode.AC_STOP = 13; ActionCode.AC_JUMP = 14; ActionCode.AC_DELETE = 15; ActionCode.AC_EDIT_FINISHED = 16; ActionCode.AC_OBJECT_ADDED = 17; ActionCode.AC_PLAY = 18; ActionCode.AC_SHOW = 19; ActionCode.AC_EDIT_STARTED = 20; ActionCode.AC_SELCHANGED = 21; ActionCode.AC_WAYPOINT_REACHED = 22; ActionCode.AC_GROUP_ADDED = 23; ActionCode.AC_LAYER_ADDED = 24; ActionCode.AC_LAYER_REFRESHED = 25; ActionCode.AC_ITEM_MOVED=26; var AltitudeTypeCode = {}; AltitudeTypeCode.ATC_TERRAIN_RELATIVE = 0; AltitudeTypeCode.ATC_PIVOT_RELATIVE = 1; AltitudeTypeCode.ATC_ON_TERRAIN = 2; AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE = 3; AltitudeTypeCode.ATC_DEFAULT = 999; var DynamicMotionStyle = {}; DynamicMotionStyle.MOTION_GROUND_VEHICLE = 0; DynamicMotionStyle.MOTION_AIRPLANE = 1; DynamicMotionStyle.MOTION_HELICOPTER = 2; DynamicMotionStyle.MOTION_HOVER = 3; var DynamicObjectType = {}; DynamicObjectType.DYNAMIC_3D_MODEL = 0; DynamicObjectType.DYNAMIC_TEXT_LABEL = 1; DynamicObjectType.DYNAMIC_IMAGE_LABEL = 2; DynamicObjectType.DYNAMIC_VIRTUAL = 3; var LabelStyle = {}; LabelStyle.LS_DEFAULT = 0; LabelStyle.LS_STREET = 1; LabelStyle.LS_STATE = 2; var MsgClient6 = {}; MsgClient6.MC_LEFT = 0; MsgClient6.MC_MAIN = 2; MsgClient6.MC_MESSAGE_BAR = 3; MsgClient6.MC_FLOAT = 4; MsgClient6.MC_POPUP = 5; var MsgType = {}; MsgType.TYPE_TEXT = 0; MsgType.TYPE_URL = 1; MsgType.TYPE_SCRIPT = 3; var ModelTypeCode = {}; ModelTypeCode.MT_NORMAL = 0; ModelTypeCode.MT_ANIMATION = 1; ModelTypeCode.MT_PROGRESSIVE = 2; var LayerGeometryType = {}; LayerGeometryType.LGT_POINT = 0; LayerGeometryType.LGT_POLYLINE = 1; LayerGeometryType.LGT_POLYGON = 2; LayerGeometryType.LGT_COLLECTION = 3; LayerGeometryType.LGT_NONE = -1; var SphereStyle = {}; SphereStyle.SPHERE_NORMAL = 0; SphereStyle.SPHERE_UPPER_HALF = 1; SphereStyle.SPHERE_LOWER_HALF = 2; SphereStyle.SPHERE_UPPER_HALF_BASE = 3; SphereStyle.SPHERE_LOWER_HALF_BASE = 4; var ElevationBehaviorMode = {}; ElevationBehaviorMode.EB_REPLACE = 0; ElevationBehaviorMode.EB_BELOW = 1; ElevationBehaviorMode.EB_ABOVE = 2; var EditItemFlags = {}; EditItemFlags.EDIT_ITEM_USE_PROPERTY = 0; EditItemFlags.EDIT_ITEM = 1; EditItemFlags.EDIT_ITEM_VERTICES = 2; EditItemFlags.EDIT_ITEM_BUILDING_ROOF = 3; var ItemCode = {}; ItemCode.SELECTED = 10; ItemCode.CHILD = 11; ItemCode.FIRSTVISIBLE = 12; ItemCode.NEXT = 13; ItemCode.NEXTVISIBLE = 14; ItemCode.PARENT = 15; ItemCode.PREVIOUS = 16; ItemCode.PREVIOUSVISIBLE = 17; ItemCode.ROOT = 18; var SortType = {}; SortType.SORT_ALPHABETICALLY_AZ = 0; SortType.SORT_ALPHABETICALLY_ZA = 1; SortType.SORT_BY_TYPE = 2; SortType.SORT_NO_SORT = 3; var WorldPointType = {}; WorldPointType.WPT_MODEL = 1; WorldPointType.WPT_LABEL = 2; WorldPointType.WPT_PRIMITIVE = 4; WorldPointType.WPT_ANIM = 8; WorldPointType.WPT_BUILDING = 16; WorldPointType.WPT_SKY = 32; WorldPointType.WPT_ACCURATE_CPT = 64; WorldPointType.WPT_BBOX_CPT = 128; WorldPointType.WPT_VIDEO = 256; WorldPointType.WPT_UNDERGROUND = 512; WorldPointType.WPT_SCREEN_OVERLAY = 1024; WorldPointType.WPT_SCREEN_CONTROL = 2048; WorldPointType.WPT_SCREEN_COVERED = 4096; WorldPointType.WPT_ALL = -1; var MouseInputMode = {}; MouseInputMode.MI_FREE_FLIGHT = 0; MouseInputMode.MI_COM_CLIENT = 1; MouseInputMode.MI_CONTROLLED_FLIGHT = 2; MouseInputMode.MI_EDIT = 3; MouseInputMode.MI_MEASURAMENT = 4; var MessageBarTextAlignment = {}; MessageBarTextAlignment.MBT_LEFT = 0; MessageBarTextAlignment.MBT_CENTER = 1; MessageBarTextAlignment.MBT_RIGHT = 2; var AccuracyLevel = {}; AccuracyLevel.ACCURACY_NORMAL = 0; AccuracyLevel.ACCURACY_BEST_FROM_MEMORY = 1; AccuracyLevel.ACCURACY_BEST_FROM_MPT = 2; var PermissionType = {}; PermissionType.LMP_ENABLE_ALL = 0; PermissionType.LMP_DISABLE_API = 1; PermissionType.LMP_DISABLE_UI = 2; PermissionType.LMP_DISABLE_ALL = -1; var SliderDisplayMode = {}; SliderDisplayMode.MODE_TIME_NONE = 0; SliderDisplayMode.MODE_FIXED_TIME = 1; SliderDisplayMode.MODE_TIME = 2; SliderDisplayMode.MODE_RANGE_PROJECT = 4; SliderDisplayMode.MODE_RANGE_CUSTOM = 8; SliderDisplayMode.MODE_ADJUST_FOR_GROUP = 16; var TimeZoneType = {}; TimeZoneType.TIME_ZONE_TYPE_MY_COMPUTER = 0; TimeZoneType.TIME_ZONE_TYPE_UTC = 1; TimeZoneType.TIME_ZONE_TYPE_SPECIFIC = 2; var TEVesrionType = {}; TEVesrionType.TEVT_PRO = 0; TEVesrionType.TEVT_PLUS = 1; TEVesrionType.TEVT_VIEWER = 2; TEVesrionType.TEVT_UNKNOWN = -1; var ObjectTypeCode = {}; ObjectTypeCode.OT_UNDEFINED = 0; ObjectTypeCode.OT_POLYLINE = 1; ObjectTypeCode.OT_POLYGON = 2; ObjectTypeCode.OT_RECTANGLE = 3; ObjectTypeCode.OT_REGULAR_POLYGON = 4; ObjectTypeCode.OT_CIRCLE = 5; ObjectTypeCode.OT_3D_POLYGON = 6; ObjectTypeCode.OT_BUILDING = 7; ObjectTypeCode.OT_BOX = 8; ObjectTypeCode.OT_PYRAMID = 9; ObjectTypeCode.OT_CYLINDER = 10; ObjectTypeCode.OT_CONE = 11; ObjectTypeCode.OT_ELLIPSE = 12; ObjectTypeCode.OT_ARC = 13; ObjectTypeCode.OT_ARROW = 14; ObjectTypeCode.OT_3D_ARROW = 15; ObjectTypeCode.OT_SPHERE = 16; ObjectTypeCode.OT_MODEL = 17; ObjectTypeCode.OT_LABEL = 18; ObjectTypeCode.OT_LOCATION = 19; ObjectTypeCode.OT_TREE_HOTLINK = 20; ObjectTypeCode.OT_ROUTE = 21; ObjectTypeCode.OT_MESSAGE = 22; ObjectTypeCode.OT_DYNAMIC = 23; ObjectTypeCode.OT_IMAGE_LABEL = 24; ObjectTypeCode.OT_THREAT_DOME = 25; ObjectTypeCode.OT_IMAGERY_LAYER = 26; ObjectTypeCode.OT_TERRAIN_VIDEO = 27; ObjectTypeCode.OT_POINT_CLOUD = 28; ObjectTypeCode.OT_ELEVATION_LAYER = 29; ObjectTypeCode.OT_TERRAIN_MODIFIER = 30; ObjectTypeCode.OT_TERRAIN_HOLE = 31; ObjectTypeCode.OT_POPUP_MESSAGE = 32; ObjectTypeCode.OT_FEATURE = 33; ObjectTypeCode.OT_PRESENTATION = 34; ObjectTypeCode.OT_ANALYSIS_LOS = 35; var SGGeometryTypeId = {}; SGGeometryTypeId.SG_POINT = 0; SGGeometryTypeId.SG_LINESTRING = 1; SGGeometryTypeId.SG_LINEARRING = 2; SGGeometryTypeId.SG_POLYGON = 3; SGGeometryTypeId.SG_MULTIPOINT = 4; SGGeometryTypeId.SG_MULTILINESTRING = 5; SGGeometryTypeId.SG_MULTIPOLYGON = 6; var BuildingStyleCode = {}; BuildingStyleCode.BS_STRETCH_TERRAIN = 0; BuildingStyleCode.BS_POLYGONS = 1; var IntersectionType = {}; IntersectionType.IT_NONE = 0; IntersectionType.IT_INTERSECT = 1; IntersectionType.IT_WITHIN = 2; var StreamLayerStatus = {}; StreamLayerStatus.SLS_NOT_STREAMED_LAYER = 0; StreamLayerStatus.SLS_STREAMING = 1; StreamLayerStatus.SLS_STREAM_PAUSED = 2; var AltitudeUnitCode = {}; AltitudeUnitCode.AU_METER = 0; AltitudeUnitCode.AU_FEET = 1; AltitudeUnitCode.AU_CENTIMETER = 2; AltitudeUnitCode.AU_DECIMETER = 3; AltitudeUnitCode.AU_INCHE = 4; AltitudeUnitCode.AU_YARD = 5; AltitudeUnitCode.AU_UNDEFINED = -1; var LabelLockMode = {}; LabelLockMode.LM_DECAL = 0; LabelLockMode.LM_AXIS = 1; LabelLockMode.LM_AXIS_TEXTUP = 2; LabelLockMode.LM_AXIS_AUTOPITCH = 3; LabelLockMode.LM_AXIS_AUTOPITCH_TEXTUP = 4; var DistributionDir = {}; DistributionDir.DOWN_UP = 0; DistributionDir.UP_DOWN = 1; DistributionDir.RIGHT_LEFT = 2; DistributionDir.LEFT_RIGHT = 3; DistributionDir.FRONT_BACK = 4; DistributionDir.BACK_FRONT = 5; var CPTDataFormat = {}; CPTDataFormat.CPT_DF_INTENSITY = 0; CPTDataFormat.CPT_DF_RGB = 1; var _HTML_POPUP_FLAGS = {}; _HTML_POPUP_FLAGS.HTML_POPUP_NONE = 0; _HTML_POPUP_FLAGS.HTML_POPUP_ANCHOR_3D_WINDOW = 1; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_DRAG = 2; _HTML_POPUP_FLAGS.HTML_POPUP_NO_CAPTION = 4; _HTML_POPUP_FLAGS.HTML_POPUP_USE_DEFAULT_POS = 8; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_SIZE = 16; _HTML_POPUP_FLAGS.HTML_POPUP_ALLOW_RESIZE = 32; _HTML_POPUP_FLAGS.HTML_POPUP_ADD_SHADOW = 64; _HTML_POPUP_FLAGS.HTML_POPUP_NO_BORDER = 128; _HTML_POPUP_FLAGS.HTML_POPUP_SET_FOCUS_TO_RENDER = 256; _HTML_POPUP_FLAGS.HTML_POPUP_NOT_USE_POINTER = 512; _HTML_POPUP_FLAGS.HTML_POPUP_ALWAYS_VISIBLE = 1024; _HTML_POPUP_FLAGS.HTML_POPUP_USE_LAST_POS = 2048; _HTML_POPUP_FLAGS.HTML_POPUP_USE_TEXT_AS_INNER_HTML = 4096; var PresentationStepContinue = {}; PresentationStepContinue.PSC_MOUSECLICK = 0; PresentationStepContinue.PSC_WAIT = 1; var PresentationStepFlightSpeed = {}; PresentationStepFlightSpeed.PSFS_VERYSLOW = 0; PresentationStepFlightSpeed.PSFS_SLOW = 1; PresentationStepFlightSpeed.PSFS_NORMAL = 2; PresentationStepFlightSpeed.PSFS_FAST = 3; PresentationStepFlightSpeed.PSFS_VERYFAST = 4; var PresentationPlayAlgorithm = {}; PresentationPlayAlgorithm.PPA_FLYTO = 0; PresentationPlayAlgorithm.PPA_SPLINE = 1; var PresentationPlayMode = {}; PresentationPlayMode.PPM_AUTOMATIC = 0; PresentationPlayMode.PPM_MANUAL = 1; var PresentationCaptionSizeType = {}; PresentationCaptionSizeType.PCST_FIXED = 0; PresentationCaptionSizeType.PCST_AUTOMATICALLYADJUST = 1; var PresentationCaptionPosition = {}; PresentationCaptionPosition.PCP_TOPLEFT = 0; PresentationCaptionPosition.PCP_TOPCENTER = 1; PresentationCaptionPosition.PCP_TOPRIGHT = 2; PresentationCaptionPosition.PCP_BOTTOMLEFT = 3; PresentationCaptionPosition.PCP_BOTTOMCENTER = 4; PresentationCaptionPosition.PCP_BOTTOMRIGHT = 5; var PresentationStatus = {}; PresentationStatus.PS_PLAYING = 0; PresentationStatus.PS_NOTPLAYING = 1; PresentationStatus.PS_PAUSED = 2; PresentationStatus.PS_WAITINGTIME = 3; PresentationStatus.PS_WAITINGCLICK = 4; var VideoPlayStatus = {}; VideoPlayStatus.VPS_PAUSE = 0; VideoPlayStatus.VPS_PLAY = 1; VideoPlayStatus.VPS_STOP = 2; var ContainerSite = {}; ContainerSite.CS_DOCK_LEFT = 0; ContainerSite.CS_DOCK_RIGHT = 1; ContainerSite.CS_DOCK_TOP = 2; ContainerSite.CS_DOCK_BOTTOM = 3; ContainerSite.CS_DOCK_FLOAT = 4; ContainerSite.CS_MAIN = 5; ContainerSite.CS_NOT_VALID = -1; var FaceFillTypeCode = {}; FaceFillTypeCode.FACE_COLOR = 0; FaceFillTypeCode.FACE_TEXTURE = 1; FaceFillTypeCode.FACE_TERRAIN_TEXTURE = 2; FaceFillTypeCode.FACE_UNDEFINED = -1; var RoofStyleCode = {}; RoofStyleCode.ROOFTOP_FLAT = 0; RoofStyleCode.ROOFTOP_ANGULAR = 1; var PresentationStepType = {}; PresentationStepType.ST_LOCATION = 0; PresentationStepType.ST_DYNAMICOBJECT = 1; PresentationStepType.ST_GROUPOROBJECT = 2; PresentationStepType.ST_UNDERGROUNDMODE = 3; PresentationStepType.ST_TIMESLIDER = 4; PresentationStepType.ST_CURRENTTIME = 5; PresentationStepType.ST_MESSAGE = 6; PresentationStepType.ST_TOOL = 7; PresentationStepType.ST_CAPTION = 8; PresentationStepType.ST_RESTARTDYNAMICOBJECT = 9; PresentationStepType.ST_FLIGHTSPEEDFACTOR = 10; PresentationStepType.ST_CLEARCAPTION = -1; var TilingMethodCode = {}; TilingMethodCode.TM_TILES_PER_SIDE = 0; TilingMethodCode.TM_TILES_PER_AXIS = 0; TilingMethodCode.TM_METERS_PER_TILE = 1; TilingMethodCode.TM_UNDEFINED = -1; var AttributeTypeCode = {}; AttributeTypeCode.AT_TEXT = 0; AttributeTypeCode.AT_INTEGER = 1; AttributeTypeCode.AT_DOUBLE = 2; AttributeTypeCode.AT_UNKNOWN = -1; var FeatureState = {}; FeatureState.FS_NONE = 0; FeatureState.FS_NEW = 1; FeatureState.FS_MODIFIED = 2; FeatureState.FS_DELETED = 3; + +SGLang = { + lang : {}, + /** + * APIProperty: defaultCode + * {String} Default language to use when a specific language can't be + * found. Default is "en". + */ + defaultCode: "2052", + + /** + * APIFunction: getCode + * Get the current language code. + * + * Returns: + * The current language code. + */ + getCode: function() { + //var lang = SGLang.getUrlParameters()["lang"]; + //if(!lang) + // lang = SGLang.defaultCode; + //return lang; + return "2052"; + }, + + getUrlParameters: function() + { + var query = window.location.href; + var keyValuePairs = query.split(/[&?]/g); + var params = {}; + for (var i = 0, n = keyValuePairs.length; i < n; ++i) { + var m = keyValuePairs[i].match(/^([^=]+)(?:=([\s\S]*))?/); + if (m) { + var key = decodeURIComponent(m[1]); + (params[key] || (params[key] = [])).push(decodeURIComponent(m[2])); + } + } + return params; + }, + + /** + * APIMethod: translate + * Looks up a key from a dictionary based on the current language string. + * The value of <getCode> will be used to determine the appropriate + * dictionary. Dictionaries are stored in <SGLang>. + * + * Parameters: + * key - {String} The key for an i18n string value in the dictionary. + * context - {Object} Optional context to be used with + * <SGAPI.String.format>. + * + * Returns: + * {String} A internationalized string. + */ + i18n: function(key, context) { + var message = SGLang.lang[key]; + if(!message) { + // Message not found, fall back to message key + message = key; + } + if(context) { + message = SGLang.format(message, context); + } + return message; + }, + + i18nFile: function(file) { + var code = this.getCode(); + if(code == "0" || code == "1033") + return file; + return code + "/" + file; + }, + + format: function(template, context, args) { + if(!context) { + context = window; + } + + // Example matching: + // str = ${foo.bar} + // match = foo.bar + var replacer = function(str, match) { + var replacement; + + // Loop through all subs. Example: ${a.b.c} + // 0 -> replacement = context[a]; + // 1 -> replacement = context[a][b]; + // 2 -> replacement = context[a][b][c]; + var subs = match.split(/\.+/); + for (var i=0; i< subs.length; i++) { + if (i == 0) { + replacement = context; + } + + replacement = replacement[subs[i]]; + } + + if(typeof replacement == "function") { + replacement = args ? + replacement.apply(null, args) : + replacement(); + } + + // If replacement is undefined, return the string 'undefined'. + // This is a workaround for a bugs in browsers not properly + // dealing with non-participating groups in regular expressions: + // http://blog.stevenlevithan.com/archives/npcg-javascript + if (typeof replacement == 'undefined') { + return 'undefined'; + } else { + return replacement; + } + }; + + return template.replace(SGLang.tokenRegEx, replacer); + }, + + /** + * Property: SGLang.tokenRegEx + * Used to find tokens in a string. + * Examples: ${a}, ${a.b.c}, ${a-b}, ${5} + */ + tokenRegEx: /\$\{([\w.]+?)\}/g +}; + +//------------------- +// load requested lang file +(function() { + // document.write("<script language='javascript' src='Lang.js'></script>"); + // var code = SGLang.getCode(); + // document.write("<script language='javascript' src='" + code + "/Lang.js'></script>"); + + var head = document.head || document.getElementsByTagName("head")[0]; + + // New way to support IE10 + firstScript = head.getElementsByTagName("script")[0]; + + var script = document.createElement("script"); + script.setAttribute("src", "Lang.js"); + head.insertBefore(script, firstScript); + + var code = SGLang.getCode(); + + var script2 = document.createElement("script"); + script2.setAttribute("src", code + "/Lang.js"); + head.insertBefore(script2, firstScript); +})(); + +// hide document body, so that TextXXX won't be visible until we replace them on document ready +$(document.body).hide(); +//------------------- +$(document).ready(function () +{ + $(document.body).hide(); + var translateDocument = function() + { + document.title = SGLang.i18n(document.title); + $(".i18n").each(function () + { + if (this.tagName == "INPUT") + { + this.value = SGLang.i18n(this.value); + } + else if (this.tagName == "IMG") + { + $(this).attr("src",SGLang.i18n($(this).attr("src"))); + $(this).attr("alt", SGLang.i18n($(this).attr("alt"))); + $(this).attr("title", SGLang.i18n($(this).attr("title"))); + } + else + { + $(this).attr("title", SGLang.i18n($(this).attr("title"))); + $(this).attr("alt", SGLang.i18n($(this).attr("alt"))); + // set element html only if it does not contain any other html elements. + // otherwise it will erase them. + if ($(this).children().length == 0) + { + $(this).html(SGLang.i18n($.trim($(this).text()))); + } + } + }); + $(".i18nFile").each(function () + { + if (this.tagName == "IMG") + { + $(this).attr("src",SGLang.i18nFile($(this).attr("src"))); + } + }); + $(document.body).show(); + } + // make sure that hiding document body really worked. + // I am not sure if IE will update the document view, until the function has finished executing. + // so I am giving it here a few milliseconds of unused time. + setTimeout(translateDocument,1); +}); + +$(document).ready(function () +{ + if (GetParamValue("inSG","") == "1") + { + document.getElementById("TopAreaTD").style.height = "57"; + document.getElementById("TitleTD").align = "left"; + document.getElementById("CloseHelpTd").style.display = "none"; + } +}); + + +//------------------- +// DisplayMessagePopup +function DisplayMessagePopup(title, header, icon,body, x, y, width, height, CloseButton) { + + var HTMLString = "<html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/><link rel='StyleSheet' href='" + abspath() + "/../Style.css' type='text/css'></head><body leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><object id='SGWorld' classid='CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1' style='display:none'></object>"; + HTMLString += "<table width='100%' height='100%' cellpadding=4pt cellspacing=0 border=0> <tr height='20pt'>"; + if (icon != "") + HTMLString += "<td align='left' width='50pt'><img src='"+icon+"' alt='' ></td>"; + if (header != "") + HTMLString += "<td align='middle'><span class='s12b'>" + header + "</span></td>"; + HTMLString += "<td width='50pt'></td></tr><tr><td valign='top' colspan=3><span class='s9'>" + body + "</span></td></tr>"; + if (CloseButton) + HTMLString += "<tr><td align='right' valign=bottom colspan=3 style='background-color:#eeeeee'><input type='button' class='MenuButtonSmall' value='Close' onClick='SGWorld.Window.RemovePopupByCaption(\"" + title + "\");' /></td></tr>"; + HTMLString += "</body></html>"; + var popupMsg = SGWorld.Creator.CreatePopupMessage(title, "", x, y, width, height, -1); + popupMsg.Flags = 2 + 32 + 32768; + popupMsg.InnerText = HTMLString; + SGWorld.Window.ShowPopup(popupMsg); + +} +//------------------- +// TEAlert +function TEAlert(caption, text,info) { + var icon; + if (info==true) + icon=abspath() + "/../commonimg/info.png"; + else + icon=abspath() + "/../commonimg/alert.png"; + DisplayMessagePopup(caption, "",icon,text, (SGWorld.Window.Rect.Width)/2-200, (SGWorld.Window.Rect.Height)/2-75, 400, 150, true); + +} + +//------------------- +// DisplayHelpPopup6 +function DisplayHelpPopup6(HTMLSrc, title) { + if (title == null || title == "") + title = "?"; + var popup = SGWorld.Creator.CreatePopupMessage(title, abspath() + "/" + HTMLSrc, 5, 5, 850, 500); + popup.AllowDrag = true; + popup.AllowResize = true; + SGWorld.Window.ShowPopup(popup); + +} +//------------------- +// CloseTool +function CloseTool (ToolName) +{ + var Cont = TE.interface("IContainer2"); + Cont.RemoveURL (1,ToolName); +} + +//-------------- +// abspath +function abspath() +{ + var abspath = unescape(window.location.href); + + // Remove query String + var index=abspath.indexOf("?"); + if (index > 0) abspath = abspath.substr (0,index-1); + + index=abspath.lastIndexOf("/"); + var index2 = abspath.lastIndexOf("\\"); + + index = (index > index2) ? index : index2; + if (index <= 0) return abspath; + + abspath = abspath.substring(0,index); + + if(abspath.substring(0,1) == "/") abspath = abspath.slice(1); + + var re = /file:\/\/\//gi; + if (abspath.match(re) != null) abspath = abspath.replace(re,""); // if this is indeed a local file, we strip the "file://" prefix from it. + + return(abspath); +} +// GetParamValue +function GetParamValue(findParam, defaultValue) +{ + var arr = document.location.href.split("?"); + if (arr.length <= 1) return defaultValue; + arr = arr[1].split("&"); + for (var i = 0; i < arr.length; i++) { + if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) { + arr = arr[i].split("="); + return arr[1]; + } + } + return defaultValue; +} +//----------------- +// validateNumber +function validateNumber(strNum) +{ + strNum = strNum.replace(/,/, "."); + return parseFloat (strNum); +} +//-------------- +// validateNumberEx +function validateNumberEx(field, defVal, MinNum, MaxNum) { + try { + field.val (validateNumber(field.val())); + + if (field.val() < MinNum) + field.val(MinNum); + if (field.val() > MaxNum) + field.val( MaxNum); + } + catch (e) {field.val(defVal); } +} +//-------------- +// CheckNumberEx +function CheckNumberEx(field, defVal, MinNum, MaxNum) { + try { + if (isNaN(field.value)) + field.value = defVal; + + if (field.value < MinNum) + field.value = MinNum; + if (field.value > MaxNum) + field.value = MaxNum; + } + catch (e) { field.value = defVal } +} + + /** + * APIMethod: drawing tools + * + */ + +var gDrawingEditMode = 0; + +var drawing = { + drawingEditMode: -1, + polyObject: null, + helpLine: null, // Vertical line in case we select Horizontal Plane and want to see the connection between the cursor and the plane + drawPolygon: function (options) { drawing_startDrawing (2,options); }, + drawPolyline: function (options) { drawing_startDrawing (1,options); }, + //drawPoints: drawing_startDrawing (0,options), + abort: function (deleteObj) {drawing_finishDrawing(true); } +} + +//------------- +//drawing_startDrawing +function drawing_startDrawing(type,options) { + try { + drawing.drawingEditMode = type; + drawing.options = options; + + SGWorld.AttachEvent("OnLButtonClicked", drawing_DrawPolyLButtonClicked); + SGWorld.AttachEvent("OnRButtonUp", drawing_DrawPolyRButtonUp); + SGWorld.AttachEvent("OnFrame", drawing_DrawPolyOnFrame); + SGWorld.AttachEvent("OnInputModeChanged", drawing_DrawPolyInputModeChanged); + SGWorld.Window.SetInputMode(1, abspath() + "/cursor_m.cur", true); + } + catch (err) {if (gDebug) alert(err.message);} +} + +//------------- +//drawing_finishDrawing +function drawing_finishDrawing (deleteObject){ + try { + if (deleteObject && drawing.polyObject != null) + SGWorld.Creator.DeleteObject(drawing.polyObject.ID); + if (drawing.helpLine != null) + SGWorld.Creator.DeleteObject(drawing.helpLine.ID); + + drawing.polyObject = null; + drawing.helpLine = null; + drawing.options.onAbort(); + } + catch (err) {} + try { + SGWorld.Window.SetInputMode(0); + drawing.drawingEditMode = -1; + + SGWorld.DetachEvent("OnLButtonClicked", drawing_DrawPolyLButtonClicked); + SGWorld.DetachEvent("OnRButtonUp", drawing_DrawPolyRButtonUp); + SGWorld.DetachEvent("OnFrame", drawing_DrawPolyOnFrame); + SGWorld.DetachEvent("OnInputModeChanged", drawing_DrawPolyInputModeChanged); + } + catch (err) {} + +} +//------------- +//drawing_DrawPolyInputModeChanged +function drawing_DrawPolyInputModeChanged(NewMode) { + + if (NewMode != 1) + if (drawing.drawingEditMode != -1) + drawing.abort(); +} +//---------- +// drawing_DrawPolyLButtonDown +function drawing_DrawPolyLButtonDown(Flags, X, Y) { + drawing_DrawPolyLButtonClicked(Flags, X, Y); +} +//---------- +// drawing_DrawPolyLButtonClicked +function drawing_DrawPolyLButtonClicked(Flags, X, Y) { + try { + var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, -1 & ~(128 | 1024)); + + var altitudeMethod = (typeof drawing.options.altitudeMethod !== "undefined")?drawing.options.altitudeMethod :3; + var parentGroup = (typeof drawing.options.parentGoupID !== "undefined")?drawing.options.parentGoupID :SGWorld.ProjectTree.HiddenGroupID; + + if (drawing.polyObject == null) { + // We always start with a polyline and change it to Polygon (for area) after the second click) + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]) + drawing.polyObject = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), altitudeMethod, parentGroup, "polyline"); + drawing_StylePoly(drawing.polyObject); + drawing.polyObject.Geometry.StartEdit(); + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true){ + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([0, 0, 0, 0, 0, 0]) + drawing.helpLine = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), altitudeMethod, SGWorld.ProjectTree.HiddenGroupID, "helper"); + drawing_StyleHelpLine(drawing.helpLine); + drawing.helpLine.Geometry.StartEdit(); + } + + } + else { + + if (drawing.drawingEditMode == 2) // Polygon + { + if (drawing.polyObject.ObjectType == 1) { + if (drawing.polyObject.Geometry.Points.Item(0).X == CursorCoord.Position.x &&drawing.polyObject.Geometry.Points.Item(0).Y == CursorCoord.Position.y &&drawing.polyObject.Geometry.Points.Item(0).Z == CursorCoord.Position.Altitude ) + return; + + // Deleting the temporary line + var x = drawing.polyObject.Geometry.Points.Item(0).X; + var y = drawing.polyObject.Geometry.Points.Item(0).Y; + var z = drawing.polyObject.Geometry.Points.Item(0).Z; + SGWorld.Creator.DeleteObject(drawing.polyObject.ID); + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + CursorCoord.Position.Altitude = z; + + // Creating the polygon + var myGeometry = SGWorld.Creator.GeometryCreator.CreateLinearRingGeometry([x, y, z, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude, CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude]); + drawing.polyObject = SGWorld.Creator.createPolygon(myGeometry, SGWorld.Creator.CreateColor(0, 255, 0, 1), SGWorld.Creator.CreateColor(0, 255, 0, 0.5), altitudeMethod, parentGroup, "polygon"); + drawing_StylePoly(drawing.polyObject); + drawing.polyObject.Geometry.StartEdit(); + } + else { + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x; + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y; + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = drawing.polyObject.Geometry.Rings(0).Points.Item(0).Z; + drawing.polyObject.Geometry.Rings(0).Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude); + } + } + else { // Polyline + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).X = CursorCoord.Position.x; + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Y = CursorCoord.Position.y; + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = drawing.polyObject.Geometry.Points.Item(0).Z; + drawing.polyObject.Geometry.Points.AddPoint(CursorCoord.Position.x, CursorCoord.Position.y, CursorCoord.Position.Altitude); + } + } + + if (typeof drawing.options.onAddPoint !== "undefined") + drawing.options.onAddPoint(drawing.polyObject.Geometry, drawing.polyObject.ObjectType, drawing.polyObject.Position.AltitudeType); + + drawing.polyObject.SetParam(5440, 1); + } + catch (err) {if (gDebug) alert(err.message);} + + return false; +} + +//----------- +// drawing_StylePoly +function drawing_StylePoly (poly){ + try { + // Line style + poly.LineStyle.Width = (typeof drawing.options.style.lineWidth !== "undefined")?drawing.options.style.lineWidth*(-1):-2; + poly.LineStyle.Color.fromHTMLColor((typeof drawing.options.style.lineColor !== "undefined")?drawing.options.style.lineColor :"#ffffff"); + poly.LineStyle.Color.SetAlpha((typeof drawing.options.style.lineOpacity !== "undefined")?drawing.options.style.lineOpacity :1); + poly.LineStyle.Pattern = (typeof drawing.options.style.linePattern !== "undefined")?drawing.options.style.linePattern :0xffffffff; + // Line back color + poly.LineStyle.BackColor.fromHTMLColor((typeof drawing.options.style.lineBackColor !== "undefined")?drawing.options.style.lineBackColor :"#000000"); + poly.LineStyle.BackColor.SetAlpha((typeof drawing.options.style.lineBackOpacity !== "undefined")?drawing.options.style.lineBackOpacity :0); + // Fill style + poly.FillStyle.Color.fromHTMLColor((typeof drawing.options.style.fillColor !== "undefined")?drawing.options.style.fillColor :"#ffffff"); + poly.FillStyle.Color.SetAlpha((typeof drawing.options.style.fillOpacity !== "undefined")?drawing.options.style.fillOpacity :0); + // Generic style + poly.SaveInFlyFile = (typeof drawing.options.saveOnExit !== "undefined")?drawing.options.saveOnExit :false; + + } + catch (err) {if (gDebug) alert(err.message);} +} +//----------- +// drawing_StyleHelpLine +function drawing_StyleHelpLine (poly){ + try { + poly.LineStyle.Width = -2; + poly.LineStyle.Color.fromHTMLColor("#ffff00"); + poly.LineStyle.Pattern = 0xaaaaaaaa; + poly.SaveInFlyFile = false; + + } + catch (err) {if (gDebug) alert(err.message);} +} + +//----------- +// onFrame +function drawing_DrawPolyOnFrame() { + if (drawing.polyObject != null) { + + try { + var mouseInfo = SGWorld.Window.GetMouseInfo() + var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, -1 & ~(128|1024)); + if (CursorCoord == null) + return false; + if (drawing.polyObject.ObjectType == 2) { + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).X = CursorCoord.Position.x; + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Y = CursorCoord.Position.y; + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + drawing.polyObject.Geometry.Rings(0).Points.Item(drawing.polyObject.Geometry.Rings(0).Points.count - 1).Z = drawing.polyObject.Geometry.Rings(0).Points.Item(0).Z; + + } + else { + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).X = CursorCoord.Position.x; + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Y = CursorCoord.Position.y; + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = CursorCoord.Position.Altitude; + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true) + drawing.polyObject.Geometry.Points.Item(drawing.polyObject.Geometry.Points.count - 1).Z = drawing.polyObject.Geometry.Points.Item(0).Z; + } + drawing.polyObject.SetParam(5440, 1); + + if (typeof drawing.options.horizontal !== "undefined" && drawing.options.horizontal==true && drawing.helpLine!= null){ + drawing.helpLine.Geometry.Points.Item(0).X = CursorCoord.Position.x; + drawing.helpLine.Geometry.Points.Item(0).Y = CursorCoord.Position.y; + drawing.helpLine.Geometry.Points.Item(0).Z = CursorCoord.Position.Altitude; + drawing.helpLine.Geometry.Points.Item(1).X = CursorCoord.Position.x; + drawing.helpLine.Geometry.Points.Item(1).Y = CursorCoord.Position.y; + drawing.helpLine.Geometry.Points.Item(1).Z = drawing.polyObject.Geometry.Points.Item(0).Z; + } + } + catch (e) { } + } +} +//------------- +// drawing_DrawPolyRButtonUp +function drawing_DrawPolyRButtonUp(Flags, X, Y) { + var deleteWhenExit = (typeof drawing.options.deleteWhenExit !== "undefined")?drawing.options.deleteWhenExit :true; + if (drawing.polyObject == null || ((drawing.polyObject.ObjectType == 1 && drawing.polyObject.Geometry.Points.count <= 2) || (drawing.polyObject.ObjectType == 2 && drawing.polyObject.Geometry.Rings(0).Points.count <= 3))) { + drawing_finishDrawing(deleteWhenExit); + return false; + } + if (drawing.polyObject.ObjectType == 1) + drawing.polyObject.Geometry.Points.DeletePoint(drawing.polyObject.Geometry.Points.count - 1); + else + drawing.polyObject.Geometry.Rings(0).Points.DeletePoint(drawing.polyObject.Geometry.Rings(0).Points.count - 1); + + drawing.polyObject.Geometry.EndEdit(); + + drawing.options.onFinish(drawing.polyObject.Geometry, drawing.polyObject.ObjectType, drawing.polyObject.Position.AltitudeType, drawing.polyObject.ID, null); + drawing_finishDrawing (deleteWhenExit); + return true; +} +//------------------- +//searchGeometries +function searchGeometries2(parentNode, callbackFunc, withAtt/*navon added this*/) { + + SGWorld.ProjectTree.EnableRedraw(0); + searchGeometriesLeaf2(parentNode, callbackFunc, withAtt); + SGWorld.ProjectTree.EnableRedraw(1); +} +//------------------- +// searchGeometries +function searchGeometriesLeaf2(parentNode, callbackFunc, withAtt/*navon added this*/) { + + if (SGWorld.ProjectTree.IsLayer(parentNode)) // Layer + { + var layer = SGWorld.ProjectTree.GetLayer(parentNode); + var featureGroups = layer.FeatureGroups; + for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers + { + + var featureGroup = featureGroups.Item(i); + var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method")); + var features = featureGroup.Features; + var attributes = layer.DataSourceInfo.Attributes;///navon added this + + for (var j = 0; j < features.Count; j++) { + var ret; + if (featureGroup.GeometryType != 0){ + if(features.Item(j).Geometry.GeometryType==5 || features.Item(j).Geometry.GeometryType==6) + { + for(var k=0;k<features.Item(j).Geometry.Count;k++) + ret = callbackFunc(features.Item(j).Geometry.Item(k), featureGroup.GeometryType, altitudeType, features(j), attributes); + } + else + ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType, features(j), attributes); + } + else { + if (features.Item(j).Geometry.GeometryType == 0) // Point + { + var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z); + ret = callbackFunc(position, featureGroup.GeometryType, altitudeType); + } + } + if (!ret) + return; + } + } + } + else { + var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11); + while (node != "") { + if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node)) + searchGeometriesLeaf2(node, callbackFunc); + else { + var Object = SGWorld.Creator.GetObject(node); + if (Object != null) { + var altitudeType = Object.Position.AltitudeType; + var ret; + if (Object.ObjectType == 1 || Object.ObjectType == 2){ + if(Object.Geometry.GeometryType==5 || Object.Geometry.GeometryType==6) + { + for(var j=0;j<Object.Geometry.Count;j++) + ret = callbackFunc(Object.Geometry.Item(j), Object.ObjectType, altitudeType, Object.Position); + } + else + ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position); + } + else + ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position); + + if (!ret) + return; + } + } + + node = SGWorld.ProjectTree.GetNextItem(node, 13); + } + } +} + +//------------------- +//AltitudeMethodToAltitudeType +function AltitudeMethodToAltitudeType(altitudeMethod) +{ + switch(altitudeMethod) + { + case 10: return AltitudeTypeCode.ATC_TERRAIN_RELATIVE; + case 11: return AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE; + case 12: return AltitudeTypeCode.ATC_ON_TERRAIN; + case 13: return AltitudeTypeCode.ATC_PIVOT_RELATIVE; + } +} +//------------------- +//searchGeometriesClipbaord +function searchGeometriesClipboard(callbackFunc) { + SGWorld.ProjectTree.EnableRedraw(0); + var Object; + for (var i = 0; i < SGWorld.Application.Clipboard.Count; i++) { + try { + Object = SGWorld.Application.Clipboard.Item(i); + var altitudeType = Object.Position.AltitudeType; + var ret; + if (Object.ObjectType == 1 || Object.ObjectType == 2) + { + if(Object.Geometry.GeometryType==5 || Object.Geometry.GeometryType==6) + { + for(var j=0;j<Object.Geometry.Count;j++) + ret = callbackFunc(Object.Geometry.Item(j), Object.ObjectType, altitudeType, Object.Position, null, null); + } + else + ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType, Object.Position, null, null); + } + else + ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position, null, null); + if (!ret) { + SGWorld.ProjectTree.EnableRedraw(1); + return; + } + } + catch (e) { } + } + SGWorld.ProjectTree.EnableRedraw(1); +} +//---------------- +// GetElevationBuffer +function getElevationBuffer(geometry, resolution){ + + try { + var polygonGeometry = geometry.Clone(); // to enable edit geometry (ref) when geometry type is RelativeToPivot. Navon. + var envelope = polygonGeometry.Envelope; // Multi polygon evnelope (min/max) + var MinX = Math.min(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x); + var MaxX = Math.max(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x); + var MinY = Math.min(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y); + var MaxY = Math.max(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y); + + var stepX = Math.abs(MaxX - MinX) / resolution; + var stepY = Math.abs(MaxY - MinY) / resolution; + + // For now we call this query several times because of an engine bug. TED 80 - fixed!!! + var elevatuinBuffer = []; + elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray(); + // elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray(); + // elevatuinBuffer = SGWorld.Analysis.QueryElevationBuffer(MinX, MaxY, stepX, stepY, resolution, resolution).toArray(); + return elevatuinBuffer; + } + catch (e) {return null; } +} +//------------------- +// BuildObjectsList +function BuildObjectsList(parentNode, list, objectType) { + try { + var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11); + while (node != "") { + if (!SGWorld.ProjectTree.IsLayer(node)) { + try{ + var Object = SGWorld.Creator.GetObject(node); + if (Object != null) { + if (Object.ObjectType == objectType) + list.push(Object.ID); + } + } + catch (err){} + if (SGWorld.ProjectTree.IsGroup(node)) + BuildObjectsList(node, list, objectType); + } + else if (objectType==36) + list.push(node); + node = SGWorld.ProjectTree.GetNextItem(node, 13); + } + } + catch (err) {if (gDebug) alert(err.message); } +} +//------------------- +// BuildFoldersList +function BuildFoldersList(parentNode, list) { + try { + var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11); + while (node != "") { + if (SGWorld.ProjectTree.IsGroup(node)){ + list.push(node); + BuildFoldersList(node, list); + } + node = SGWorld.ProjectTree.GetNextItem(node, 13); + } + } + catch (err) {if (gDebug) alert(err.message); } +} +//------------- +function getFuncName (callee) { + return callee.toString().match(/^function\s+([^(]+)/)[1]; +} +//------------- +function Deg2Rnd(degrees) +{ + var pi = Math.PI; + return degrees * (pi/180); +} +//------------- +// ScanPolygon +// function scan2DPolygon (geometry, step, callback) { + +// var polygonGeometry = geometry.Clone(); // to enable edit geometry (ref) when geometry type is RelativeToPivot. Navon. +// var envelope = polygonGeometry.Envelope; // Multi polygon evnelope (min/max) +// var MinX = Math.min(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x); +// var MaxX = Math.max(envelope.Rings(0).Points(0).x, envelope.Rings(0).Points(2).x); +// var MinY = Math.min(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y); +// var MaxY = Math.max(envelope.Rings(0).Points(0).y, envelope.Rings(0).Points(2).y); + +// var currCoord = SGWorld.Creator.CreatePosition(MinX, MinY, 0 , 0, 0); + +// while (currCoord.x < MaxX) { +// currCoord.y = MinY; +// while (currCoord.y < MaxY) { +// var pointGeometry = SGWorld.Creator.GeometryCreator.CreatePointGeometry([currCoord.x, currCoord.y, 0]); +// if (polygonGeometry.SpatialRelation.Intersects(pointGeometry)) { +// var tmpCoord = currCoord.Copy(); // to avoid changes in the CurrCoord value in the DrawObject function +// if (callback(tmpCoord) == false) +// return false; +// } +// currCoord = currCoord.Move(step, 0, 0); +// } +// currCoord = currCoord.Move(step, 90, 0); +// } +// return true; +// } \ 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 f7dacfb..a010f0f 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/js/Gis/Gis.js b/Terra.YaoGan.Web/Terra.YaoGan.Web/js/Gis/Gis.js index 33851e1..ba0f670 100644 --- a/Terra.YaoGan.Web/Terra.YaoGan.Web/js/Gis/Gis.js +++ b/Terra.YaoGan.Web/Terra.YaoGan.Web/js/Gis/Gis.js @@ -141,7 +141,7 @@ sgworld.Open(FlyPath); TBAX.setLogo(JSON.stringify(logo), "2"); TBAX.setOpacity(0.8); - TBAX.setLMenu(JSON.stringify(lMenu)); + //TBAX.setLMenu(JSON.stringify(lMenu)); TBAX.setFullBtn2(JSON.stringify(tMenu)); sgworld.AttachEvent("OnLoadFinished", OnloadFished); }, 2000); -- Gitblit v1.9.3