You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

647 lines
27 KiB

4 years ago
  1. //CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebParts.js
  2. var __wpm = null;
  3. function Point(x, y) {
  4. this.x = x;
  5. this.y = y;
  6. }
  7. function __wpTranslateOffset(x, y, offsetElement, relativeToElement, includeScroll) {
  8. while ((typeof(offsetElement) != "undefined") && (offsetElement != null) && (offsetElement != relativeToElement)) {
  9. x += offsetElement.offsetLeft;
  10. y += offsetElement.offsetTop;
  11. var tagName = offsetElement.tagName;
  12. if ((tagName != "TABLE") && (tagName != "BODY")) {
  13. x += offsetElement.clientLeft;
  14. y += offsetElement.clientTop;
  15. }
  16. if (includeScroll && (tagName != "BODY")) {
  17. x -= offsetElement.scrollLeft;
  18. y -= offsetElement.scrollTop;
  19. }
  20. offsetElement = offsetElement.offsetParent;
  21. }
  22. return new Point(x, y);
  23. }
  24. function __wpGetPageEventLocation(event, includeScroll) {
  25. if ((typeof(event) == "undefined") || (event == null)) {
  26. event = window.event;
  27. }
  28. return __wpTranslateOffset(event.offsetX, event.offsetY, event.srcElement, null, includeScroll);
  29. }
  30. function __wpClearSelection() {
  31. document.selection.empty();
  32. }
  33. function WebPart(webPartElement, webPartTitleElement, zone, zoneIndex, allowZoneChange) {
  34. this.webPartElement = webPartElement;
  35. this.allowZoneChange = allowZoneChange;
  36. this.zone = zone;
  37. this.zoneIndex = zoneIndex;
  38. this.title = ((typeof(webPartTitleElement) != "undefined") && (webPartTitleElement != null)) ?
  39. webPartTitleElement.innerText : "";
  40. webPartElement.__webPart = this;
  41. if ((typeof(webPartTitleElement) != "undefined") && (webPartTitleElement != null)) {
  42. webPartTitleElement.style.cursor = "move";
  43. webPartTitleElement.attachEvent("onmousedown", WebPart_OnMouseDown);
  44. webPartElement.attachEvent("ondragstart", WebPart_OnDragStart);
  45. webPartElement.attachEvent("ondrag", WebPart_OnDrag);
  46. webPartElement.attachEvent("ondragend", WebPart_OnDragEnd);
  47. }
  48. this.UpdatePosition = WebPart_UpdatePosition;
  49. this.Dispose = WebPart_Dispose;
  50. }
  51. function WebPart_Dispose() {
  52. this.webPartElement.__webPart = null
  53. }
  54. function WebPart_OnMouseDown() {
  55. var currentEvent = window.event;
  56. var draggedWebPart = WebPart_GetParentWebPartElement(currentEvent.srcElement);
  57. if ((typeof(draggedWebPart) == "undefined") || (draggedWebPart == null)) {
  58. return;
  59. }
  60. document.selection.empty();
  61. try {
  62. __wpm.draggedWebPart = draggedWebPart;
  63. __wpm.DragDrop();
  64. }
  65. catch (e) {
  66. __wpm.draggedWebPart = draggedWebPart;
  67. window.setTimeout("__wpm.DragDrop()", 0);
  68. }
  69. currentEvent.returnValue = false;
  70. currentEvent.cancelBubble = true;
  71. }
  72. function WebPart_OnDragStart() {
  73. var currentEvent = window.event;
  74. var webPartElement = currentEvent.srcElement;
  75. if ((typeof(webPartElement.__webPart) == "undefined") || (webPartElement.__webPart == null)) {
  76. currentEvent.returnValue = false;
  77. currentEvent.cancelBubble = true;
  78. return;
  79. }
  80. var dataObject = currentEvent.dataTransfer;
  81. dataObject.effectAllowed = __wpm.InitiateWebPartDragDrop(webPartElement);
  82. }
  83. function WebPart_OnDrag() {
  84. __wpm.ContinueWebPartDragDrop();
  85. }
  86. function WebPart_OnDragEnd() {
  87. __wpm.CompleteWebPartDragDrop();
  88. }
  89. function WebPart_GetParentWebPartElement(containedElement) {
  90. var elem = containedElement;
  91. while ((typeof(elem.__webPart) == "undefined") || (elem.__webPart == null)) {
  92. elem = elem.parentElement;
  93. if ((typeof(elem) == "undefined") || (elem == null)) {
  94. break;
  95. }
  96. }
  97. return elem;
  98. }
  99. function WebPart_UpdatePosition() {
  100. var location = __wpTranslateOffset(0, 0, this.webPartElement, null, false);
  101. this.middleX = location.x + this.webPartElement.offsetWidth / 2;
  102. this.middleY = location.y + this.webPartElement.offsetHeight / 2;
  103. }
  104. function Zone(zoneElement, zoneIndex, uniqueID, isVertical, allowLayoutChange, highlightColor) {
  105. var webPartTable = null;
  106. if (zoneElement.rows.length == 1) {
  107. webPartTableContainer = zoneElement.rows[0].cells[0];
  108. }
  109. else {
  110. webPartTableContainer = zoneElement.rows[1].cells[0];
  111. }
  112. var i;
  113. for (i = 0; i < webPartTableContainer.childNodes.length; i++) {
  114. var node = webPartTableContainer.childNodes[i];
  115. if (node.tagName == "TABLE") {
  116. webPartTable = node;
  117. break;
  118. }
  119. }
  120. this.zoneElement = zoneElement;
  121. this.zoneIndex = zoneIndex;
  122. this.webParts = new Array();
  123. this.uniqueID = uniqueID;
  124. this.isVertical = isVertical;
  125. this.allowLayoutChange = allowLayoutChange;
  126. this.allowDrop = false;
  127. this.webPartTable = webPartTable;
  128. this.highlightColor = highlightColor;
  129. this.savedBorderColor = (webPartTable != null) ? webPartTable.style.borderColor : null;
  130. this.dropCueElements = new Array();
  131. if (webPartTable != null) {
  132. if (isVertical) {
  133. for (i = 0; i < webPartTable.rows.length; i += 2) {
  134. this.dropCueElements[i / 2] = webPartTable.rows[i].cells[0].childNodes[0];
  135. }
  136. }
  137. else {
  138. for (i = 0; i < webPartTable.rows[0].cells.length; i += 2) {
  139. this.dropCueElements[i / 2] = webPartTable.rows[0].cells[i].childNodes[0];
  140. }
  141. }
  142. }
  143. this.AddWebPart = Zone_AddWebPart;
  144. this.GetWebPartIndex = Zone_GetWebPartIndex;
  145. this.ToggleDropCues = Zone_ToggleDropCues;
  146. this.UpdatePosition = Zone_UpdatePosition;
  147. this.Dispose = Zone_Dispose;
  148. webPartTable.__zone = this;
  149. webPartTable.attachEvent("ondragenter", Zone_OnDragEnter);
  150. webPartTable.attachEvent("ondrop", Zone_OnDrop);
  151. }
  152. function Zone_Dispose() {
  153. for (var i = 0; i < this.webParts.length; i++) {
  154. this.webParts[i].Dispose();
  155. }
  156. this.webPartTable.__zone = null;
  157. }
  158. function Zone_OnDragEnter() {
  159. var handled = __wpm.ProcessWebPartDragEnter();
  160. var currentEvent = window.event;
  161. if (handled) {
  162. currentEvent.returnValue = false;
  163. currentEvent.cancelBubble = true;
  164. }
  165. }
  166. function Zone_OnDragOver() {
  167. var handled = __wpm.ProcessWebPartDragOver();
  168. var currentEvent = window.event;
  169. if (handled) {
  170. currentEvent.returnValue = false;
  171. currentEvent.cancelBubble = true;
  172. }
  173. }
  174. function Zone_OnDrop() {
  175. var handled = __wpm.ProcessWebPartDrop();
  176. var currentEvent = window.event;
  177. if (handled) {
  178. currentEvent.returnValue = false;
  179. currentEvent.cancelBubble = true;
  180. }
  181. }
  182. function Zone_GetParentZoneElement(containedElement) {
  183. var elem = containedElement;
  184. while ((typeof(elem.__zone) == "undefined") || (elem.__zone == null)) {
  185. elem = elem.parentElement;
  186. if ((typeof(elem) == "undefined") || (elem == null)) {
  187. break;
  188. }
  189. }
  190. return elem;
  191. }
  192. function Zone_AddWebPart(webPartElement, webPartTitleElement, allowZoneChange) {
  193. var webPart = null;
  194. var zoneIndex = this.webParts.length;
  195. if (this.allowLayoutChange && __wpm.IsDragDropEnabled()) {
  196. webPart = new WebPart(webPartElement, webPartTitleElement, this, zoneIndex, allowZoneChange);
  197. }
  198. else {
  199. webPart = new WebPart(webPartElement, null, this, zoneIndex, allowZoneChange);
  200. }
  201. this.webParts[zoneIndex] = webPart;
  202. return webPart;
  203. }
  204. function Zone_ToggleDropCues(show, index, ignoreOutline) {
  205. if (ignoreOutline == false) {
  206. this.webPartTable.style.borderColor = (show ? this.highlightColor : this.savedBorderColor);
  207. }
  208. if (index == -1) {
  209. return;
  210. }
  211. var dropCue = this.dropCueElements[index];
  212. if (dropCue && dropCue.style) {
  213. if (dropCue.style.height == "100%" && !dropCue.webPartZoneHorizontalCueResized) {
  214. var oldParentHeight = dropCue.parentElement.clientHeight;
  215. var realHeight = oldParentHeight - 10;
  216. dropCue.style.height = realHeight + "px";
  217. var dropCueVerticalBar = dropCue.getElementsByTagName("DIV")[0];
  218. if (dropCueVerticalBar && dropCueVerticalBar.style) {
  219. dropCueVerticalBar.style.height = dropCue.style.height;
  220. var heightDiff = (dropCue.parentElement.clientHeight - oldParentHeight);
  221. if (heightDiff) {
  222. dropCue.style.height = (realHeight - heightDiff) + "px";
  223. dropCueVerticalBar.style.height = dropCue.style.height;
  224. }
  225. }
  226. dropCue.webPartZoneHorizontalCueResized = true;
  227. }
  228. dropCue.style.visibility = (show ? "visible" : "hidden");
  229. }
  230. }
  231. function Zone_GetWebPartIndex(location) {
  232. var x = location.x;
  233. var y = location.y;
  234. if ((x < this.webPartTableLeft) || (x > this.webPartTableRight) ||
  235. (y < this.webPartTableTop) || (y > this.webPartTableBottom)) {
  236. return -1;
  237. }
  238. var vertical = this.isVertical;
  239. var webParts = this.webParts;
  240. var webPartsCount = webParts.length;
  241. for (var i = 0; i < webPartsCount; i++) {
  242. var webPart = webParts[i];
  243. if (vertical) {
  244. if (y < webPart.middleY) {
  245. return i;
  246. }
  247. }
  248. else {
  249. if (x < webPart.middleX) {
  250. return i;
  251. }
  252. }
  253. }
  254. return webPartsCount;
  255. }
  256. function Zone_UpdatePosition() {
  257. var topLeft = __wpTranslateOffset(0, 0, this.webPartTable, null, false);
  258. this.webPartTableLeft = topLeft.x;
  259. this.webPartTableTop = topLeft.y;
  260. this.webPartTableRight = (this.webPartTable != null) ? topLeft.x + this.webPartTable.offsetWidth : topLeft.x;
  261. this.webPartTableBottom = (this.webPartTable != null) ? topLeft.y + this.webPartTable.offsetHeight : topLeft.y;
  262. for (var i = 0; i < this.webParts.length; i++) {
  263. this.webParts[i].UpdatePosition();
  264. }
  265. }
  266. function WebPartDragState(webPartElement, effect) {
  267. this.webPartElement = webPartElement;
  268. this.dropZoneElement = null;
  269. this.dropIndex = -1;
  270. this.effect = effect;
  271. this.dropped = false;
  272. }
  273. function WebPartMenu(menuLabelElement, menuDropDownElement, menuElement) {
  274. this.menuLabelElement = menuLabelElement;
  275. this.menuDropDownElement = menuDropDownElement;
  276. this.menuElement = menuElement;
  277. this.menuLabelElement.__menu = this;
  278. this.menuLabelElement.attachEvent('onclick', WebPartMenu_OnClick);
  279. this.menuLabelElement.attachEvent('onkeypress', WebPartMenu_OnKeyPress);
  280. this.menuLabelElement.attachEvent('onmouseenter', WebPartMenu_OnMouseEnter);
  281. this.menuLabelElement.attachEvent('onmouseleave', WebPartMenu_OnMouseLeave);
  282. if ((typeof(this.menuDropDownElement) != "undefined") && (this.menuDropDownElement != null)) {
  283. this.menuDropDownElement.__menu = this;
  284. }
  285. this.menuItemStyle = "";
  286. this.menuItemHoverStyle = "";
  287. this.popup = null;
  288. this.hoverClassName = "";
  289. this.hoverColor = "";
  290. this.oldColor = this.menuLabelElement.style.color;
  291. this.oldTextDecoration = this.menuLabelElement.style.textDecoration;
  292. this.oldClassName = this.menuLabelElement.className;
  293. this.Show = WebPartMenu_Show;
  294. this.Hide = WebPartMenu_Hide;
  295. this.Hover = WebPartMenu_Hover;
  296. this.Unhover = WebPartMenu_Unhover;
  297. this.Dispose = WebPartMenu_Dispose;
  298. var menu = this;
  299. this.disposeDelegate = function() { menu.Dispose(); };
  300. window.attachEvent('onunload', this.disposeDelegate);
  301. }
  302. function WebPartMenu_Dispose() {
  303. this.menuLabelElement.__menu = null;
  304. this.menuDropDownElement.__menu = null;
  305. window.detachEvent('onunload', this.disposeDelegate);
  306. }
  307. function WebPartMenu_Show() {
  308. if ((typeof(__wpm.menu) != "undefined") && (__wpm.menu != null)) {
  309. __wpm.menu.Hide();
  310. }
  311. var menuHTML =
  312. "<html><head><style>" +
  313. "a.menuItem, a.menuItem:Link { display: block; padding: 1px; text-decoration: none; " + this.itemStyle + " }" +
  314. "a.menuItem:Hover { " + this.itemHoverStyle + " }" +
  315. "</style><body scroll=\"no\" style=\"border: none; margin: 0; padding: 0;\" ondragstart=\"window.event.returnValue=false;\" onclick=\"popup.hide()\">" +
  316. this.menuElement.innerHTML +
  317. "</body></html>";
  318. var width = 16;
  319. var height = 16;
  320. this.popup = window.createPopup();
  321. __wpm.menu = this;
  322. var popupDocument = this.popup.document;
  323. popupDocument.write(menuHTML);
  324. this.popup.show(0, 0, width, height);
  325. var popupBody = popupDocument.body;
  326. width = popupBody.scrollWidth;
  327. height = popupBody.scrollHeight;
  328. if (width < this.menuLabelElement.offsetWidth) {
  329. width = this.menuLabelElement.offsetWidth + 16;
  330. }
  331. if (this.menuElement.innerHTML.indexOf("progid:DXImageTransform.Microsoft.Shadow") != -1) {
  332. popupBody.style.paddingRight = "4px";
  333. }
  334. popupBody.__wpm = __wpm;
  335. popupBody.__wpmDeleteWarning = __wpmDeleteWarning;
  336. popupBody.__wpmCloseProviderWarning = __wpmCloseProviderWarning;
  337. popupBody.popup = this.popup;
  338. this.popup.hide();
  339. this.popup.show(0, this.menuLabelElement.offsetHeight, width, height, this.menuLabelElement);
  340. }
  341. function WebPartMenu_Hide() {
  342. if (__wpm.menu == this) {
  343. __wpm.menu = null;
  344. if ((typeof(this.popup) != "undefined") && (this.popup != null)) {
  345. this.popup.hide();
  346. this.popup = null;
  347. }
  348. }
  349. }
  350. function WebPartMenu_Hover() {
  351. if (this.labelHoverClassName != "") {
  352. this.menuLabelElement.className = this.menuLabelElement.className + " " + this.labelHoverClassName;
  353. }
  354. if (this.labelHoverColor != "") {
  355. this.menuLabelElement.style.color = this.labelHoverColor;
  356. }
  357. }
  358. function WebPartMenu_Unhover() {
  359. if (this.labelHoverClassName != "") {
  360. this.menuLabelElement.style.textDecoration = this.oldTextDecoration;
  361. this.menuLabelElement.className = this.oldClassName;
  362. }
  363. if (this.labelHoverColor != "") {
  364. this.menuLabelElement.style.color = this.oldColor;
  365. }
  366. }
  367. function WebPartMenu_OnClick() {
  368. var menu = window.event.srcElement.__menu;
  369. if ((typeof(menu) != "undefined") && (menu != null)) {
  370. window.event.returnValue = false;
  371. window.event.cancelBubble = true;
  372. menu.Show();
  373. }
  374. }
  375. function WebPartMenu_OnKeyPress() {
  376. if (window.event.keyCode == 13) {
  377. var menu = window.event.srcElement.__menu;
  378. if ((typeof(menu) != "undefined") && (menu != null)) {
  379. window.event.returnValue = false;
  380. window.event.cancelBubble = true;
  381. menu.Show();
  382. }
  383. }
  384. }
  385. function WebPartMenu_OnMouseEnter() {
  386. var menu = window.event.srcElement.__menu;
  387. if ((typeof(menu) != "undefined") && (menu != null)) {
  388. menu.Hover();
  389. }
  390. }
  391. function WebPartMenu_OnMouseLeave() {
  392. var menu = window.event.srcElement.__menu;
  393. if ((typeof(menu) != "undefined") && (menu != null)) {
  394. menu.Unhover();
  395. }
  396. }
  397. function WebPartManager() {
  398. this.overlayContainerElement = null;
  399. this.zones = new Array();
  400. this.dragState = null;
  401. this.menu = null;
  402. this.draggedWebPart = null;
  403. this.AddZone = WebPartManager_AddZone;
  404. this.IsDragDropEnabled = WebPartManager_IsDragDropEnabled;
  405. this.DragDrop = WebPartManager_DragDrop;
  406. this.InitiateWebPartDragDrop = WebPartManager_InitiateWebPartDragDrop;
  407. this.CompleteWebPartDragDrop = WebPartManager_CompleteWebPartDragDrop;
  408. this.ContinueWebPartDragDrop = WebPartManager_ContinueWebPartDragDrop;
  409. this.ProcessWebPartDragEnter = WebPartManager_ProcessWebPartDragEnter;
  410. this.ProcessWebPartDragOver = WebPartManager_ProcessWebPartDragOver;
  411. this.ProcessWebPartDrop = WebPartManager_ProcessWebPartDrop;
  412. this.ShowHelp = WebPartManager_ShowHelp;
  413. this.ExportWebPart = WebPartManager_ExportWebPart;
  414. this.Execute = WebPartManager_Execute;
  415. this.SubmitPage = WebPartManager_SubmitPage;
  416. this.UpdatePositions = WebPartManager_UpdatePositions;
  417. window.attachEvent("onunload", WebPartManager_Dispose);
  418. }
  419. function WebPartManager_Dispose() {
  420. for (var i = 0; i < __wpm.zones.length; i++) {
  421. __wpm.zones[i].Dispose();
  422. }
  423. window.detachEvent("onunload", WebPartManager_Dispose);
  424. }
  425. function WebPartManager_AddZone(zoneElement, uniqueID, isVertical, allowLayoutChange, highlightColor) {
  426. var zoneIndex = this.zones.length;
  427. var zone = new Zone(zoneElement, zoneIndex, uniqueID, isVertical, allowLayoutChange, highlightColor);
  428. this.zones[zoneIndex] = zone;
  429. return zone;
  430. }
  431. function WebPartManager_IsDragDropEnabled() {
  432. return ((typeof(this.overlayContainerElement) != "undefined") && (this.overlayContainerElement != null));
  433. }
  434. function WebPartManager_DragDrop() {
  435. if ((typeof(this.draggedWebPart) != "undefined") && (this.draggedWebPart != null)) {
  436. var tempWebPart = this.draggedWebPart;
  437. this.draggedWebPart = null;
  438. tempWebPart.dragDrop();
  439. window.setTimeout("__wpClearSelection()", 0);
  440. }
  441. }
  442. function WebPartManager_InitiateWebPartDragDrop(webPartElement) {
  443. var webPart = webPartElement.__webPart;
  444. this.UpdatePositions();
  445. this.dragState = new WebPartDragState(webPartElement, "move");
  446. var location = __wpGetPageEventLocation(window.event, true);
  447. var overlayContainerElement = this.overlayContainerElement;
  448. overlayContainerElement.style.left = location.x - webPartElement.offsetWidth / 2;
  449. overlayContainerElement.style.top = location.y + 4 + (webPartElement.clientTop ? webPartElement.clientTop : 0);
  450. overlayContainerElement.style.display = "block";
  451. overlayContainerElement.style.width = webPartElement.offsetWidth;
  452. overlayContainerElement.style.height = webPartElement.offsetHeight;
  453. overlayContainerElement.appendChild(webPartElement.cloneNode(true));
  454. if (webPart.allowZoneChange == false) {
  455. webPart.zone.allowDrop = true;
  456. }
  457. else {
  458. for (var i = 0; i < __wpm.zones.length; i++) {
  459. var zone = __wpm.zones[i];
  460. if (zone.allowLayoutChange) {
  461. zone.allowDrop = true;
  462. }
  463. }
  464. }
  465. document.body.attachEvent("ondragover", Zone_OnDragOver);
  466. return "move";
  467. }
  468. function WebPartManager_CompleteWebPartDragDrop() {
  469. var dragState = this.dragState;
  470. this.dragState = null;
  471. if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
  472. dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false);
  473. }
  474. document.body.detachEvent("ondragover", Zone_OnDragOver);
  475. for (var i = 0; i < __wpm.zones.length; i++) {
  476. __wpm.zones[i].allowDrop = false;
  477. }
  478. this.overlayContainerElement.removeChild(this.overlayContainerElement.firstChild);
  479. this.overlayContainerElement.style.display = "none";
  480. if ((typeof(dragState) != "undefined") && (dragState != null) && (dragState.dropped == true)) {
  481. var currentZone = dragState.webPartElement.__webPart.zone;
  482. var currentZoneIndex = dragState.webPartElement.__webPart.zoneIndex;
  483. if ((currentZone != dragState.dropZoneElement.__zone) ||
  484. ((currentZoneIndex != dragState.dropIndex) &&
  485. (currentZoneIndex != (dragState.dropIndex - 1)))) {
  486. var eventTarget = dragState.dropZoneElement.__zone.uniqueID;
  487. var eventArgument = "Drag:" + dragState.webPartElement.id + ":" + dragState.dropIndex;
  488. this.SubmitPage(eventTarget, eventArgument);
  489. }
  490. }
  491. }
  492. function WebPartManager_ContinueWebPartDragDrop() {
  493. var dragState = this.dragState;
  494. if ((typeof(dragState) != "undefined") && (dragState != null)) {
  495. var style = this.overlayContainerElement.style;
  496. var location = __wpGetPageEventLocation(window.event, true);
  497. style.left = location.x - dragState.webPartElement.offsetWidth / 2;
  498. style.top = location.y + 4 + (dragState.webPartElement.clientTop ? dragState.webPartElement.clientTop : 0);
  499. }
  500. }
  501. function WebPartManager_Execute(script) {
  502. if (this.menu) {
  503. this.menu.Hide();
  504. }
  505. var scriptReference = new Function(script);
  506. return (scriptReference() != false);
  507. }
  508. function WebPartManager_ProcessWebPartDragEnter() {
  509. var dragState = __wpm.dragState;
  510. if ((typeof(dragState) != "undefined") && (dragState != null)) {
  511. var currentEvent = window.event;
  512. var newDropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement);
  513. if ((typeof(newDropZoneElement.__zone) == "undefined") || (newDropZoneElement.__zone == null) ||
  514. (newDropZoneElement.__zone.allowDrop == false)) {
  515. newDropZoneElement = null;
  516. }
  517. var newDropIndex = -1;
  518. if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) {
  519. newDropIndex = newDropZoneElement.__zone.GetWebPartIndex(__wpGetPageEventLocation(currentEvent, false));
  520. if (newDropIndex == -1) {
  521. newDropZoneElement = null;
  522. }
  523. }
  524. if (dragState.dropZoneElement != newDropZoneElement) {
  525. if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
  526. dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false);
  527. }
  528. dragState.dropZoneElement = newDropZoneElement;
  529. dragState.dropIndex = newDropIndex;
  530. if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) {
  531. newDropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false);
  532. }
  533. }
  534. else if (dragState.dropIndex != newDropIndex) {
  535. if (dragState.dropIndex != -1) {
  536. dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false);
  537. }
  538. dragState.dropIndex = newDropIndex;
  539. if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) {
  540. newDropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false);
  541. }
  542. }
  543. if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
  544. currentEvent.dataTransfer.effectAllowed = dragState.effect;
  545. }
  546. return true;
  547. }
  548. return false;
  549. }
  550. function WebPartManager_ProcessWebPartDragOver() {
  551. var dragState = __wpm.dragState;
  552. var currentEvent = window.event;
  553. var handled = false;
  554. if ((typeof(dragState) != "undefined") && (dragState != null) &&
  555. (typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
  556. var dropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement);
  557. if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dropZoneElement.__zone.allowDrop == false)) {
  558. dropZoneElement = null;
  559. }
  560. if (((typeof(dropZoneElement) == "undefined") || (dropZoneElement == null)) &&
  561. (typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) {
  562. dragState.dropZoneElement.__zone.ToggleDropCues(false, __wpm.dragState.dropIndex, false);
  563. dragState.dropZoneElement = null;
  564. dragState.dropIndex = -1;
  565. }
  566. else if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null)) {
  567. var location = __wpGetPageEventLocation(currentEvent, false);
  568. var newDropIndex = dropZoneElement.__zone.GetWebPartIndex(location);
  569. if (newDropIndex == -1) {
  570. dropZoneElement = null;
  571. }
  572. if (dragState.dropZoneElement != dropZoneElement) {
  573. if ((dragState.dropIndex != -1) || (typeof(dropZoneElement) == "undefined") || (dropZoneElement == null)) {
  574. dragState.dropZoneElement.__zone.ToggleDropCues(false, __wpm.dragState.dropIndex, false);
  575. }
  576. dragState.dropZoneElement = dropZoneElement;
  577. }
  578. else {
  579. dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, true);
  580. }
  581. dragState.dropIndex = newDropIndex;
  582. if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null)) {
  583. dropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false);
  584. }
  585. }
  586. handled = true;
  587. }
  588. if ((typeof(dragState) == "undefined") || (dragState == null) ||
  589. (typeof(dragState.dropZoneElement) == "undefined") || (dragState.dropZoneElement == null)) {
  590. currentEvent.dataTransfer.effectAllowed = "none";
  591. }
  592. return handled;
  593. }
  594. function WebPartManager_ProcessWebPartDrop() {
  595. var dragState = this.dragState;
  596. if ((typeof(dragState) != "undefined") && (dragState != null)) {
  597. var currentEvent = window.event;
  598. var dropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement);
  599. if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dropZoneElement.__zone.allowDrop == false)) {
  600. dropZoneElement = null;
  601. }
  602. if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dragState.dropZoneElement == dropZoneElement)) {
  603. dragState.dropped = true;
  604. }
  605. return true;
  606. }
  607. return false;
  608. }
  609. function WebPartManager_ShowHelp(helpUrl, helpMode) {
  610. if ((typeof(this.menu) != "undefined") && (this.menu != null)) {
  611. this.menu.Hide();
  612. }
  613. if (helpMode == 0 || helpMode == 1) {
  614. if (helpMode == 0) {
  615. var dialogInfo = "edge: Sunken; center: yes; help: no; resizable: yes; status: no";
  616. window.showModalDialog(helpUrl, null, dialogInfo);
  617. }
  618. else {
  619. window.open(helpUrl, null, "scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no,location=no");
  620. }
  621. }
  622. else if (helpMode == 2) {
  623. window.location = helpUrl;
  624. }
  625. }
  626. function WebPartManager_ExportWebPart(exportUrl, warn, confirmOnly) {
  627. if (warn == true && __wpmExportWarning.length > 0 && this.personalizationScopeShared != true) {
  628. if (confirm(__wpmExportWarning) == false) {
  629. return false;
  630. }
  631. }
  632. if (confirmOnly == false) {
  633. window.location = exportUrl;
  634. }
  635. return true;
  636. }
  637. function WebPartManager_UpdatePositions() {
  638. for (var i = 0; i < this.zones.length; i++) {
  639. this.zones[i].UpdatePosition();
  640. }
  641. }
  642. function WebPartManager_SubmitPage(eventTarget, eventArgument) {
  643. if ((typeof(this.menu) != "undefined") && (this.menu != null)) {
  644. this.menu.Hide();
  645. }
  646. __doPostBack(eventTarget, eventArgument);
  647. }