// ************************** GLOBAL VARS *********************************//
// A table to cache the outerHTML of the _rtf elements before the rollover
// state is applied.
var gv_OriginalTextCache = new Object();
// A table to cache the src image before the rollover
// state is applied.
var gv_OriginalImgSrc = new Object();
// A table to store all the vertical alignments of all the parents of the text
// objects.
var gv_vAlignTable = new Object();
// ************************************************************************//
//stored on each browser event
var windowEvent;
//Check if IE
var bIE = false;
if ((index = navigator.userAgent.indexOf("MSIE")) >= 0) {
bIE = true;
}
var Forms = document.getElementsByTagName("FORM");
for (var i = 0; i < Forms.length; i++) {
var Form = Forms[i];
Form.onclick = SuppressBubble;
}
function SuppressBubble(event) {
if (bIE) {
window.event.cancelBubble = true;
window.event.returnValue = false;
}
else {
if (event) {
event.stopPropagation();
}
}
}
function InsertAfterBegin(dom, html) {
if (!bIE) {
var phtml; var range = dom.ownerDocument.createRange();
range.selectNodeContents(dom);
range.collapse(true);
phtml = range.createContextualFragment(html);
dom.insertBefore(phtml, dom.firstChild);
} else {
dom.insertAdjacentHTML("afterBegin", html);
}
}
function InsertBeforeEnd(dom, html) {
if (!bIE) {
var phtml; var range = dom.ownerDocument.createRange();
range.selectNodeContents(dom);
range.collapse(dom);
phtml = range.createContextualFragment(html);
dom.appendChild(phtml);
} else {
dom.insertAdjacentHTML("beforeEnd", html);
}
}
var MaxZIndex = 1000;
var MinZIndex = -1000;
//Get the id of the Workflow Dialog belonging to element with id = id
function Workflow(id) {
return id + 'WF';
}
function BringToFront(id, skipFixed) {
BringToFrontHelper(id);
if (!skipFixed) BringFixedToFront();
}
function BringToFrontHelper(id) {
var target = document.getElementById(id);
if (target == null) return;
MaxZIndex = MaxZIndex + 1;
target.style.zIndex = MaxZIndex;
};
function BringFixedToFront() {
$axure(function (diagramObject) { return diagramObject.fixedKeepInFront; }).each(function (diagramObject) {
$.each(diagramObject.scriptIds, function (index, item) {
BringToFrontHelper(item);
});
});
}
function SendToBack(id) {
var target = document.getElementById(id);
if (target == null) return;
MinZIndex = MinZIndex - 1;
target.style.zIndex = MinZIndex;
}
function HideElement(id) {
var source = document.getElementById(id);
source.style.visibility = "hidden";
RefreshScreen();
}
function RefreshScreen() {
var oldColor = document.body.style.backgroundColor;
var setColor = (oldColor == "rgb(0,0,0)") ? "#FFFFFF" : "#000000";
document.body.style.backgroundColor = setColor;
document.body.style.backgroundColor = oldColor;
}
function getAbsoluteLeft(node) {
var currentNode = node;
var left = 0;
var fixed = false;
while (currentNode != null && currentNode.tagName != "BODY") {
left += currentNode.offsetLeft;
if (currentNode.id != '' && $('#' + currentNode.id).css('position') == 'fixed') fixed = true;
currentNode = currentNode.offsetParent;
}
if (fixed) left += document.body.scrollLeft;
return left;
}
function getAbsoluteTop(node) {
var currentNode = node;
var top = 0;
var fixed = false;
while (currentNode != null && currentNode.tagName != "BODY") {
top += currentNode.offsetTop;
if (currentNode.id != '' && $('#' + currentNode.id).css('position') == 'fixed') fixed = true;
currentNode = currentNode.offsetParent;
}
if (fixed) top += document.body.scrollTop;
return top;
}
// ****************** Annotation and Link Functions ****************** //
function GetAnnotationHtml(annJson) {
var retVal = "";
for (var noteName in annJson) {
if (noteName != "label") {
retVal += "
" + noteName + "
";
retVal += "" + annJson[noteName] + "
";
}
}
return retVal;
}
var dialogs = new Object();
function ToggleWorkflow(event, id, width, height, hasWorkflow) {
if (dialogs[id]) {
var $dialog = dialogs[id];
// reset the dialog
dialogs[id] = undefined;
if ($dialog.dialog("isOpen")) {
$dialog.dialog("close");
return;
}
}
// we'll need to save the scroll position just for stupid IE which will skip otherwise
var win = $(window);
var scrollY = win.scrollTop();
var scrollX = win.scrollLeft();
var target = document.getElementById(Workflow(id));
var bufferH = 10;
var bufferV = 10;
var blnLeft = false;
var blnAbove = false;
var sourceTop = event.pageY - document.body.scrollTop;
var sourceLeft = event.pageX - document.body.scrollLeft;
if (sourceLeft > width + bufferH + document.body.scrollLeft) {
blnLeft = true;
}
if (sourceTop > height + bufferV + document.body.scrollTop) {
blnAbove = true;
}
var top = 0;
var left = 0;
if (blnAbove) top = sourceTop - height - 20;
else top = sourceTop + 10;
if (blnLeft) left = sourceLeft - width - 4;
else left = sourceLeft - 6;
if (bIE) height += 50;
MaxZIndex = MaxZIndex + 1;
var dObj = $axure.pageData.scriptIdToObject[id];
var ann = dObj.annotation;
var $dialog = $('')
.appendTo('body')
.html(GetAnnotationHtml(ann))
.dialog({
title: dObj.label,
width: width,
height: height,
minHeight: 150,
zIndex: MaxZIndex,
position: [left, top],
dialogClass: 'dialogFix'
});
dialogs[id] = $dialog;
// scroll ... just for IE
window.scrollTo(scrollX, scrollY);
}
function ToggleLinks(event, linksid) {
var links = document.getElementById(linksid);
if (links.style.visibility == "visible") { HideElement(linksid); }
else {
if (bIE) {
links.style.top = window.event.clientY + document.body.scrollTop;
links.style.left = window.event.clientX + document.body.scrollLeft;
}
else {
links.style.top = event.pageY;
links.style.left = event.pageX;
}
links.style.visibility = "visible";
BringToFront(linksid, true);
}
RefreshScreen();
}
// ****************** Utils for Interaction Action Functions ****************** //
function IsTrueMouseOut(idNoSpace, e) {
if (!e) e = window.event;
var target = window.event ? e.srcElement : e.target;
while (target.nodeName != 'HTML') {
if (target.style.visibility == 'hidden') return false;
target = target.parentNode;
}
return IsTrueMouseEvent(idNoSpace, e.relatedTarget || e.toElement);
}
function IsTrueMouseOver(idNoSpace, e) {
if (!e) e = window.event;
return IsTrueMouseEvent(idNoSpace, e.relatedTarget || e.toElement);
}
function IsTrueMouseEvent(idNoSpace, relTarget) {
while (relTarget != null && relTarget.nodeName != 'HTML') {
var id = relTarget.id;
var index = id.indexOf('Links');
if (index > 0 && id.substring(0, index) == idNoSpace) return false;
relTarget = relTarget.parentNode;
if (relTarget == null || relTarget.id == idNoSpace) return false;
}
return true;
}
// ****************** Interaction Action Functions ****************** //
function NewTab(hyperlink, name) {
window.open(hyperlink, name);
}
function NewWindow(hyperlink, name, features, center, width, height) {
if (center) {
var winl = (screen.width - width) / 2;
var wint = (screen.height - height) / 2;
features = features + ', left=' + winl + ', top=' + wint;
}
window.open(hyperlink, name, features);
}
function ParentWindowNeedsReload(newPageName) {
var reload = false;
try {
var oldParentUrl = top.opener.window.location.href.split("#")[0];
var lastslash = oldParentUrl.lastIndexOf("/");
if (lastslash > 0) {
oldParentUrl = oldParentUrl.substring(lastslash + 1, oldParentUrl.length);
if (oldParentUrl == encodeURI(newPageName)) {
reload = true;
}
}
} catch (e) { }
return reload;
}
function FrameWindowNeedsReload(iframe, newPageName) {
var reload = false;
try {
var oldFrameUrl = iframe.contentWindow.location.href.split("#")[0];
var lastslash = oldFrameUrl.lastIndexOf("/");
if (lastslash > 0) {
oldFrameUrl = oldFrameUrl.substring(lastslash + 1, oldFrameUrl.length);
if (oldFrameUrl == encodeURI(newPageName)) {
reload = true;
}
}
} catch (e) { }
return reload;
}
function GetScrollable(target) {
var $target = $(target);
var inScrollable = false;
var current = $target;
var last = $target;
while (!current.is('body')) {
var elementId = current.attr('id');
var diagramObject = elementId && $axure.pageData.scriptIdToObject[elementId];
if (diagramObject && diagramObject.type == 'dynamicPanel' && diagramObject.scrollbars != 'none') {
//returns the panel diagram div which handles scrolling
return document.getElementById(last.attr('id'));
}
last = current;
current = current.parent();
}
return document.body;
}
function ScrollToWidget(id, scrollX, scrollY, easing, duration) {
var target = document.getElementById(id);
var scrollable = GetScrollable(target);
var targetLeft = getRelativeLeft(target, scrollable);
var targetTop = getRelativeTop(target, scrollable);
if (!scrollX) targetLeft = scrollable.scrollLeft;
if (!scrollY) targetTop = scrollable.scrollTop;
if (easing == 'none') {
if (scrollY) scrollable.scrollTop = targetTop;
if (scrollX) scrollable.scrollLeft = targetLeft;
} else {
var $scrollable = $(scrollable);
if ($(target).is('body')) { $scrollable = $('html,body'); }
if (!scrollX) { $scrollable.animate({ scrollTop: targetTop }, duration, easing);
} else if (!scrollY) { $scrollable.animate({ scrollLeft: targetLeft }, duration, easing);
} else { $scrollable.animate({ scrollTop: targetTop, scrollLeft: targetLeft }, duration, easing); }
}
}
function getRelativeLeft(node, parent) {
var currentNode = node;
var left = 0;
while (currentNode != null && currentNode.tagName != "BODY") {
left += currentNode.offsetLeft;
currentNode = currentNode.offsetParent;
if (currentNode == parent) break;
}
return left;
}
function getRelativeTop(node, parent) {
var currentNode = node;
var top = 0;
while (currentNode != null && currentNode.tagName != "BODY") {
top += currentNode.offsetTop;
currentNode = currentNode.offsetParent;
if (currentNode == parent) break;
}
return top;
}
// ****************** Visibility and State Functions ****************** //
var widgetIdToShowFunction = new Object();
var widgetIdToHideFunction = new Object();
function SetPanelVisibility(dpId, value, easing, duration) {
var dp = $('#' + dpId);
var dpVisibility = document.getElementById(dpId).style.visibility;
//cannot use dp.css('visibility') because that gets the effective visiblity
//i.e. won't be able to set visibility on panels inside hidden panels
if (value == 'toggle') {
if (dpVisibility == 'hidden') {
value = '';
} else {
value = 'hidden';
}
}
if ((dpVisibility == 'hidden' && value == 'hidden') ||
(dpVisibility == '' && value == '')) {
return;
}
if (easing == 'none') {
dp.css('display', '');
dp.css('visibility', value);
} else if (easing == 'fade') {
if (value == 'hidden') {
if (dpVisibility != 'hidden') {
dp.fadeOut(duration, function () {
dp.css('visibility', 'hidden');
});
}
} else {
if (dpVisibility == 'hidden') {
dp.css('display', 'none');
dp.css('visibility', '');
dp.fadeIn(duration, function () { });
}
}
}
if (value == 'hidden') {
var hideFunction = widgetIdToHideFunction[dpId];
if (hideFunction) {
hideFunction();
}
} else {
var showFunction = widgetIdToShowFunction[dpId];
if (showFunction) {
showFunction();
}
}
}
var widgetIdToPanelStateChangeFunction = new Object();
function SetPanelState(dpId, stateid, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn) {
var dpWasHidden = $('#' + dpId).css('visibility') == "hidden";
if ($('#' + stateid).css('visibility') != "hidden" && !dpWasHidden) {
return;
}
var width = $('#' + dpId).width();
var height = $('#' + dpId).height();
var oldStateId = GetPanelState(dpId);
if (oldStateId == '') {
$('#' + dpId + '> div[visibility!=hidden]').css('visibility', 'hidden');
$('#' + dpId + '> div[visibility!=hidden]').css('display', '');
} else {
var oldState = $('#' + oldStateId);
if (easingOut == 'none') {
oldState.css('visibility', 'hidden');
oldState.css('display', '');
BringPanelStateToFront(dpId, stateid);
} else if (easingOut == 'fade') {
oldState.fadeOut(durationOut, function () {
oldState.css('visibility', 'hidden');
BringPanelStateToFront(dpId, stateid);
});
} else {
var oldTop = oldState.css('top');
var oldLeft = oldState.css('left');
var onComplete = function () {
oldState.css('visibility', 'hidden');
oldState.css('top', oldTop);
oldState.css('left', oldLeft);
BringPanelStateToFront(dpId, stateid);
};
if (directionOut == "right") {
MoveWidgetBy(oldStateId, width, 0, easingOut, durationOut, onComplete);
} else if (directionOut == "left") {
MoveWidgetBy(oldStateId, -width, 0, easingOut, durationOut, onComplete);
} else if (directionOut == "up") {
MoveWidgetBy(oldStateId, 0, -height, easingOut, durationOut, onComplete);
} else if (directionOut == "down") {
MoveWidgetBy(oldStateId, 0, height, easingOut, durationOut, onComplete);
}
}
}
var dp = $('#' + dpId);
dp.css('display', '');
dp.css('visibility', '');
var newState = $('#' + stateid);
if (easingIn == 'none') {
newState.css('visibility', '');
newState.css('display', '');
} else if (easingIn == 'fade') {
newState.css('display','none');
newState.css('visibility', '');
newState.fadeIn(durationIn, function () {});
} else {
var oldTop = Number(newState.css('top').replace("px", ""));
var oldLeft = Number(newState.css('left').replace("px", ""));
if (directionIn == "right") {
newState.css('left', oldLeft - width + 'px');
} else if (directionIn == "left") {
newState.css('left', oldLeft + width + 'px');
} else if (directionIn == "up") {
newState.css('top', oldTop + height + 'px');
} else if (directionIn == "down") {
newState.css('top', oldTop - height + 'px');
}
newState.css('display', '');
newState.css('visibility', '');
if (directionIn == "right") {
MoveWidgetBy(stateid, width, 0, easingIn, durationIn);
} else if (directionIn == "left") {
MoveWidgetBy(stateid, -width, 0, easingIn, durationIn);
} else if (directionIn == "up") {
MoveWidgetBy(stateid, 0, -height, easingIn, durationIn);
} else if (directionIn == "down") {
MoveWidgetBy(stateid, 0, height, easingIn, durationIn);
}
}
var panelStateChangeFunction = widgetIdToPanelStateChangeFunction[dpId];
if (panelStateChangeFunction) {
panelStateChangeFunction();
}
if (dpWasHidden) {
var showFunction = widgetIdToShowFunction[dpId];
if (showFunction) {
showFunction();
}
}
}
function SetPanelStateNext(dpId, loop, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn) {
var oldStateId = GetPanelState(dpId);
if (oldStateId != '') {
var index = Number(oldStateId.substring(2, oldStateId.indexOf('u'))) + 1;
if (index >= $('#' + dpId).children().length) {
if (loop) index = 0;
else return;
}
var stateid = 'pd' + index + dpId;
SetPanelState(dpId, stateid, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn);
}
}
function SetPanelStatePrevious(dpId, loop, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn) {
var oldStateId = GetPanelState(dpId);
if (oldStateId != '') {
var index = Number(oldStateId.substring(2, oldStateId.indexOf('u'))) - 1;
if (index < 0) {
if (loop) index = $('#' + dpId).children().length - 1;
else return;
}
var stateid = 'pd' + index + dpId;
SetPanelState(dpId, stateid, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn);
}
}
function SetPanelStateByValue(dpId, value, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn) {
var toMatch = $.trim(value).toLowerCase();
var stateId;
$('#' + dpId).children('*[data-label]').each(function (index, element) {
// the || is to make sure it matches only the first one
if (!stateId && element.getAttribute('data-label').toLowerCase() == toMatch) stateId = element.id;
});
if (stateId) {
SetPanelState(dpId, stateId, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn);
} else if (isNaN(value)) {
return;
} else {
var index = value - 1;
var stateId = 'pd' + index + dpId;
if ($('#' + dpId).children('[id="' + stateId + '"]').length > 0)
SetPanelState(dpId, stateId, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn);
}
}
function BringPanelStateToFront(dpId, stateid) {
$('#' + stateid).appendTo($('#' + dpId));
}
// ****************** Move Functions ****************** //
var widgetIdToMoveFunction = new Object();
var widgetMoveInfo = new Object();
function MoveWidgetTo(id, x, y, easing, duration) {
var widget = $('#' + id);
var deltaX = x - Number(widget.css('left').replace("px", ""));
var deltaY = y - Number(widget.css('top').replace("px", ""));
MoveWidgetBy(id, deltaX, deltaY, easing, duration);
}
function MoveWidgetBy(id, x, y, easing, duration, animationCompleteCallback) {
LogMovedWidgetForDrag(id);
var widget = $('#' + id);
var horzProp = 'left';
var vertProp = 'top';
var horzX = x;
var vertY = y;
if (widget.css('left') == 'auto') {
horzProp = 'right';
horzX = -x;
} else if (widget.css('left') == '50%') {
horzProp = 'margin-left';
}
if (widget.css('top') == 'auto') {
vertProp = 'bottom';
vertY = -y;
} else if (widget.css('top') == '50%') {
vertProp = 'margin-top';
}
var cssStyles = {};
cssStyles[horzProp] = '+=' + horzX;
cssStyles[vertProp] = '+=' + vertY;
if (easing == 'none') {
$('#' + id).animate(cssStyles, 0);
} else {
$('#' + id).animate(cssStyles, duration, easing, animationCompleteCallback);
}
var moveInfo = new Object();
moveInfo.x = x;
moveInfo.y = y;
moveInfo.easing = easing;
moveInfo.duration = duration;
widgetMoveInfo[id] = moveInfo;
var moveFunction = widgetIdToMoveFunction[id];
if (moveFunction) {
moveFunction();
}
}
function MoveWidgetWithThis(id, srcId) {
var moveInfo = widgetMoveInfo[srcId];
if (moveInfo) {
MoveWidgetBy(id, moveInfo.x, moveInfo.y, moveInfo.easing, moveInfo.duration);
}
}
function MoveWidgetToLocationBeforeDrag(id, easing, duration) {
if (widgetDragInfo.movedWidgets[id]) {
var loc = widgetDragInfo.movedWidgets[id];
MoveWidgetTo(id, loc.x, loc.y, easing, duration);
}
}
function LogMovedWidgetForDrag(id) {
if (widgetDragInfo.hasStarted) {
var widget = $('#' + id);
var y = Number(widget.css('top').replace("px", ""));
var x = Number(widget.css('left').replace("px", ""));
var movedWidgets = widgetDragInfo.movedWidgets;
if (!movedWidgets[id]) {
movedWidgets[id] = new Location(x, y);
}
}
}
// ****************** Drag Functions ****************** //
var widgetIdToStartDragFunction = new Object();
var widgetIdToDragFunction = new Object();
var widgetIdToDragDropFunction = new Object();
var widgetIdToSwipeLeftFunction = new Object();
var widgetIdToSwipeRightFunction = new Object();
var widgetDragInfo = new Object();
function StartDragWidget(event, id) {
var x, y;
var tg;
if (bIE) {
x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
tg = window.event.srcElement;
}
else {
if (event.changedTouches) {
x = event.changedTouches[0].pageX;
y = event.changedTouches[0].pageY;
} else {
x = event.pageX;
y = event.pageY;
event.preventDefault();
}
tg = event.target;
}
widgetDragInfo.hasStarted = false;
widgetDragInfo.widgetId = id;
widgetDragInfo.cursorStartX = x;
widgetDragInfo.cursorStartY = y;
widgetDragInfo.lastX = x;
widgetDragInfo.lastY = y;
widgetDragInfo.currentX = x;
widgetDragInfo.currentY = y;
widgetDragInfo.movedWidgets = new Object();
widgetDragInfo.startTime = (new Date()).getTime();
widgetDragInfo.targetWidget = tg;
if (bIE) {
document.attachEvent("onmousemove", DragWidget);
document.attachEvent("onmouseup", StopDragWidget);
}
else {
document.addEventListener("mousemove", DragWidget, true);
document.addEventListener("mouseup", StopDragWidget, true);
document.addEventListener("touchmove", DragWidget, true);
document.addEventListener("touchend", StopDragWidget, true);
}
SuppressBubble(event);
}
function DragWidget(event) {
var x, y;
if (bIE) {
x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
}
else {
if (event.changedTouches) {
x = event.changedTouches[0].pageX;
y = event.changedTouches[0].pageY;
//allow scroll (defaults) if only swipe events have cases and delta x is less than 5px and not blocking scrolling
var deltaX = x - widgetDragInfo.currentX;
var target = document.getElementById(widgetDragInfo.widgetId);
if (widgetIdToDragFunction[widgetDragInfo.widgetId] || (deltaX * deltaX) > 25 || ($axure.pageData.options.preventScroll && GetScrollable(target) == document.body)) {
event.preventDefault();
}
} else {
x = event.pageX;
y = event.pageY;
}
}
widgetDragInfo.xDelta = x - widgetDragInfo.currentX;
widgetDragInfo.yDelta = y - widgetDragInfo.currentY;
widgetDragInfo.lastX = widgetDragInfo.currentX;
widgetDragInfo.lastY = widgetDragInfo.currentY;
widgetDragInfo.currentX = x;
widgetDragInfo.currentY = y;
widgetDragInfo.currentTime = (new Date()).getTime();
SuppressBubble(event);
if (!widgetDragInfo.hasStarted) {
widgetDragInfo.hasStarted = true;
var startFunction = widgetIdToStartDragFunction[widgetDragInfo.widgetId];
if (startFunction) {
startFunction();
}
widgetDragInfo.oldBodyCursor = document.body.style.cursor;
document.body.style.cursor = 'move';
var widget = document.getElementById(widgetDragInfo.widgetId);
widgetDragInfo.oldCursor = widget.style.cursor;
widget.style.cursor = 'move';
}
var dragFunction = widgetIdToDragFunction[widgetDragInfo.widgetId];
if (dragFunction) {
dragFunction();
}
}
function SuppressClickAfterDrag(event) {
if (bIE) { window.event.srcElement.detachEvent("onclick", SuppressClickAfterDrag);
} else { document.removeEventListener("click", SuppressClickAfterDrag, true); }
SuppressBubble(event);
}
function StopDragWidget(event) {
var tg;
if (bIE) {
document.detachEvent("onmousemove", DragWidget);
document.detachEvent("onmouseup", StopDragWidget);
tg = window.event.srcElement;
}
else {
document.removeEventListener("mousemove", DragWidget, true);
document.removeEventListener("mouseup", StopDragWidget, true);
document.removeEventListener("touchmove", DragWidget, true);
document.removeEventListener("touchend", StopDragWidget, true);
tg = event.target;
}
if (widgetDragInfo.hasStarted) {
widgetDragInfo.currentTime = (new Date()).getTime();
var dragDropFunction = widgetIdToDragDropFunction[widgetDragInfo.widgetId];
if (dragDropFunction) {
dragDropFunction();
}
if (GetGlobalVariableValue('TotalDragX') < -30 && GetGlobalVariableValue('DragTime') < 1000) {
var swipeLeftFunction = widgetIdToSwipeLeftFunction[widgetDragInfo.widgetId];
if (swipeLeftFunction) {
swipeLeftFunction();
}
}
if (GetGlobalVariableValue('TotalDragX') > 30 && GetGlobalVariableValue('DragTime') < 1000) {
var swipeRightFunction = widgetIdToSwipeRightFunction[widgetDragInfo.widgetId];
if (swipeRightFunction) {
swipeRightFunction();
}
}
document.body.style.cursor = widgetDragInfo.oldBodyCursor;
var widget = document.getElementById(widgetDragInfo.widgetId);
widget.style.cursor=widgetDragInfo.oldCursor;
if (widgetDragInfo.targetWidget == tg && !event.changedTouches) {
// suppress the click after the drag on desktop browsers
if (bIE && widgetDragInfo.targetWidget) { widgetDragInfo.targetWidget.attachEvent("onclick", SuppressClickAfterDrag); }
else { document.addEventListener("click", SuppressClickAfterDrag, true); }
}
}
widgetDragInfo.hasStarted = false;
widgetDragInfo.movedWidgets=new Object();
return false;
}
function GetDragX() {
if (widgetDragInfo.hasStarted) return widgetDragInfo.xDelta;
return 0;
}
function GetDragY() {
if (widgetDragInfo.hasStarted) return widgetDragInfo.yDelta;
return 0;
}
function GetTotalDragX() {
if (widgetDragInfo.hasStarted) return widgetDragInfo.currentX - widgetDragInfo.cursorStartX;
return 0;
}
function GetTotalDragY() {
if (widgetDragInfo.hasStarted) return widgetDragInfo.currentY - widgetDragInfo.cursorStartY;
return 0;
}
function GetDragTime() {
if (widgetDragInfo.hasStarted) return widgetDragInfo.currentTime - widgetDragInfo.startTime;
return 600000;
}
function GetDragCursorRectangles() {
var rects = new Object();
rects.lastRect = new Rectangle(widgetDragInfo.lastX, widgetDragInfo.lastY, 1, 1);
rects.currentRect = new Rectangle(widgetDragInfo.currentX, widgetDragInfo.currentY, 1, 1);
return rects;
}
function GetWidgetRectangles(id) {
var widget = document.getElementById(id);
var rects = new Object();
rects.lastRect = new Rectangle(getAbsoluteLeft(widget), getAbsoluteTop(widget), Number($('#' + id).css('width').replace("px", "")), Number($('#' + id).css('height').replace("px", "")));
rects.currentRect = rects.lastRect;
return rects;
}
function IsEntering(movingRects, targetRects) {
return !movingRects.lastRect.IntersectsWith(targetRects.currentRect) && movingRects.currentRect.IntersectsWith(targetRects.currentRect);
}
function IsLeaving(movingRects, targetRects) {
return movingRects.lastRect.IntersectsWith(targetRects.currentRect) && !movingRects.currentRect.IntersectsWith(targetRects.currentRect);
}
function IsOver(movingRects, targetRects) {
return movingRects.currentRect.IntersectsWith(targetRects.currentRect);
}
function IsNotOver(movingRects, targetRects) {
return !IsOver(movingRects, targetRects);
}
function Rectangle(x, y, width, height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.right = x + width;
this.bottom = y + height;
this.IntersectsWith = IntersectsWith;
function IntersectsWith(rect) {
return this.x < rect.right && this.right > rect.x && this.y < rect.bottom && this.bottom > rect.y;
}
}
function Location(x, y) {
this.x = x;
this.y = y;
}
// ****************** String Function ****************** //
function ValueContains(inputString, value) {
return inputString.indexOf(value) > -1;
}
function ValueNotContains(inputString, value) {
return !ValueContains(inputString, value);
}
// ****************** Date Functions ****************** //
function GetDayString(day) {
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";
return weekday[day];
}
function GetMonthString(m) {
var month = new Array(12);
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";
return month[m];
}
// ****************** Sim Functions ****************** //
function SetCheckState(id, value) {
var boolValue = Boolean(value);
if (value == 'false') {
boolValue = false;
}
document.getElementById(id).checked = boolValue;
}
function SetSelectedOption(id, value) {
document.getElementById(id).value = value;
}
function SetGlobalVariableValue(id, value) {
$axure.globalVariableProvider.setVariableValue(id, value);
}
function SetWidgetFormText(id, value) {
document.getElementById(id).value = value;
}
function SetFocusedWidgetText(value) {
if (lastFocusedControl) {
lastFocusedControl.focus();
lastFocusedControl.value = value;
}
}
function GetRtfElementHeight(rtfElement) {
if (rtfElement.innerHTML == '') rtfElement.innerHTML = ' ';
return rtfElement.offsetHeight;
}
function SetWidgetRichText(id, value) {
//use the .visibility property instead of jquery's effective visibility
var rtfVisibility = document.getElementById(id).style.visibility;
if (rtfVisibility == 'hidden') $('#' + id).css('visibility', '');
var rtfElement = document.getElementById(id + '_rtf');
var oldHeight = GetRtfElementHeight(rtfElement);
//Replace any newlines with line breaks
value = value.replace(/\n/g, '
');
rtfElement.innerHTML = value;
var newHeight = GetRtfElementHeight(rtfElement);
var oldTop = Number($('#' + id).css('top').replace("px", ""));
var vAlign = gv_vAlignTable[id];
if (vAlign == "center") {
var newTop = oldTop - (newHeight - oldHeight) / 2;
$('#' + id).css('top', newTop + 'px');
} else if (vAlign == "bottom") {
var newTop = oldTop - newHeight + oldHeight;
$('#' + id).css('top', newTop + 'px');
} // do nothing if the alignment is top
if (gv_OriginalTextCache[id]) {
CacheOriginalText(id);
}
}
function GetCheckState(id) {
return document.getElementById(id).checked;
}
function GetSelectedOption(id) {
return document.getElementById(id).value;
}
function GetNum(str) {
//Setting a GlobalVariable to some blank text then setting a widget to the value of that variable would result in 0 not ""
//I have fixed this another way so commenting this should be fine now
//if (!str) return "";
return isNaN(str) ? str : Number(str);
}
function GetGlobalVariableValue(id) {
return $axure.globalVariableProvider.getVariableValue(id);
}
function GetGlobalVariableLength(id) {
return GetGlobalVariableValue(id).length;
}
function GetWidgetText(id) {
var idQuery = $('#' + id);
if (idQuery.is('div')) {
var $rtfObj = idQuery.find('div[id$="_rtf"]');
if ($rtfObj.length == 0) return;
var textOut = '';
$rtfObj.children('p').each(function (index) {
if (index != 0) textOut += '\n';
//Replace line breaks (set in SetWidgetRichText) with newlines and nbsp's with regular spaces.
var htmlContent = $(this).html().replace(/
/ig, '\n').replace(/ /ig, ' ');
textOut += $(htmlContent).text();
});
return textOut;
} else if (idQuery.is('input') &&
(idQuery.attr('type') == 'checkbox' || idQuery.attr('type') == 'radio')) {
return idQuery.parent().find('label').find('div[id$="_rtf"]').text();
} else {
return idQuery.val();
}
}
function GetFocusedWidgetText(id) {
if (lastFocusedControl) {
return lastFocusedControl.value;
} else {
return "";
}
}
function GetWidgetValueLength(id) {
return document.getElementById(id).value.length;
}
function GetWidgetVisibility(id) {
if (document.getElementById(id).style.visibility == 'hidden') {
return false;
} else { return true; }
}
function GetPanelState(id) {
var el = document.getElementById(id);
if (el.style.visibility == 'hidden') { return ''; }
var children = el.childNodes;
for (var i = 0; i < children.length; i++) {
if (children[i].style) {
if (children[i].style.visibility != 'hidden') {
return children[i].id;
}
}
}
return '';
}
// ***************** Validation Functions ***************** //
function IsValueAlpha(val) {
var isAlphaRegex = new RegExp("^[a-z\\s]+$", "gi");
return isAlphaRegex.test(val);
}
function IsValueNumeric(val) {
var isNumericRegex = new RegExp("^[0-9,\\.\\s]+$", "gi");
return isNumericRegex.test(val);
}
function IsValueAlphaNumeric(val) {
var isAlphaNumericRegex = new RegExp("^[0-9a-z\\s]+$", "gi");
return isAlphaNumericRegex.test(val);
}
function IsValueOneOf(val, values) {
for (i = 0; i < values.length; i++) {
var option = values[i];
if (val == option) return true;
}
// by default, return false
return false;
}
function IsValueNotAlpha(val) {
return !IsValueAlpha(val);
}
function IsValueNotNumeric(val) {
return !IsValueNumeric(val);
}
function IsValueNotAlphaNumeric(val) {
return !IsValueAlphaNumeric(val);
}
function IsValueNotOneOf(val, values) {
return !IsValueOneOf(val, values);
}
// ****************** Rollover Functions ****************** //
var gv_hoveredObject = '';
function HookHover(id, bringFront) {
// return;
//
// $('.' + id + '_container').hover(
// function (e) { // mouseenter
// if (id == gv_hoveredObject) return;
// gv_hoveredObject = id;
// SetWidgetHover(id, bringFront);
// },
// function () { // mouseleave
// if (id == gv_hoveredObject) gv_hoveredObject = '';
// SetWidgetNotHover(id, bringFront);
// }
// );
}
function HookClick(id, bringFront) {
//
// $('.' + id + '_container')
// .mousedown(function () {
// SetWidgetMouseDown(id, bringFront);
// })
// .mouseup(function () {
// SetWidgetNotMouseDown(id, bringFront);
// })
// ;
}
function SetWidgetOriginal(id, bringFront) {
ApplyImageAndTextJson(id, 'normal', bringFront, true);
}
function SetWidgetHover(id, bringFront) {
if (IsWidgetSelected(id) || IsWidgetDisabled(id)) { return; }
ApplyImageAndTextJson(id, 'mouseOver', bringFront, false);
}
function SetWidgetNotHover(id, bringFront) {
if (IsWidgetSelected(id) || IsWidgetDisabled(id)) { return; }
SetWidgetOriginal(id, bringFront);
}
function GetWidgetCurrentState(id) {
if (IsWidgetDisabled(id)) return "disabled";
if (IsWidgetSelected(id)) return "selected";
if ($axure.eventManager.mouseOverObjectId == id ||
$axure.eventManager.mouseOverLinkId) return "mouseOver";
if ($axure.eventManager.mouseDownObjectId == id ||
$axure.eventManager.mouseDownLinkId) return "mouseDown";
return "normal";
}
function SetLinkStyle(id, parentId, styleName) {
var style = GetStyleOverridesForState(id, parentId, styleName);
if ($.isEmptyObject(style)) return;
var textId = GetTextIdFromLink(id);
if (!gv_OriginalTextCache[textId]) { CacheOriginalText(textId); }
var parentObjectCache = gv_OriginalTextCache[textId].styleCache;
TextTransformWithVerticalAlignment(textId, function () {
var cssProps = GetCssStyleProperties(style);
$('#' + id).find('*').andSelf().each(function (index, element) {
element.setAttribute('style', parentObjectCache[element.id]);
ApplyCssProps(element, cssProps);
});
});
}
function ResetLinkStyle(id) {
var textId = GetTextIdFromLink(id);
var parentObjectCache = gv_OriginalTextCache[textId].styleCache;
TextTransformWithVerticalAlignment(textId, function () {
$('#' + id).find('*').andSelf().each(function (index, element) {
element.style.cssText = parentObjectCache[element.id];
});
});
if ($axure.eventManager.mouseDownObjectId) {
SetWidgetMouseDown($axure.eventManager.mouseDownObjectId);
} else if ($axure.eventManager.mouseOverObjectId) {
SetWidgetHover($axure.eventManager.mouseOverObjectId);
}
}
function SetLinkHover(id) {
var parentId = $axure.eventManager.mouseOverObjectId;
SetLinkStyle(id, parentId, "mouseOver");
}
function SetLinkNotHover(id) {
ResetLinkStyle(id);
}
function SetLinkMouseDown(id) {
var parentId = $axure.eventManager.mouseOverObjectId;
SetLinkStyle(id, parentId, "mouseDown");
}
function SetLinkNotMouseDown(id) {
ResetLinkStyle(id);
var style = GetStyleOverridesForState(id, $axure.eventManager.mouseOverObjectId, "mouseOver");
if(!$.isEmptyObject(style)) {
SetLinkHover(id);
} // we dont do anything here bocause the widget not mouse down has taken over here
}
function SetWidgetMouseDown(id, bringFront) {
if (IsWidgetSelected(id) || IsWidgetDisabled(id)) { return; }
var widgetObject = $axure.pageData.scriptIdToObject[id];
if (!(widgetObject && widgetObject.style && widgetObject.style.stateStyles &&
widgetObject.style.stateStyles.mouseDown)) return;
ApplyImageAndTextJson(id, 'mouseDown', bringFront, false);
}
function SetWidgetNotMouseDown(id, bringFront) {
if (IsWidgetSelected(id) || IsWidgetDisabled(id)) { return; }
var widgetObject = $axure.pageData.scriptIdToObject[id];
var hasMouseOver = widgetObject && widgetObject.style && widgetObject.style.stateStyles && widgetObject.style.stateStyles.mouseOver;
if(hasMouseOver) {
SetWidgetHover(id, bringFront);
} else {
SetWidgetOriginal(id, bringFront);
}
}
var gv_SelectedWidgets = new Object();
function SetWidgetSelected(id) {
var group = $('#' + id).attr('selectiongroup');
if (group) {
$("[selectiongroup='" + group + "'][visibility!='hidden']").each(function (i, obj) {
SetWidgetNotSelected($(obj).attr('id'));
});
}
var widgetObject = $axure.pageData.scriptIdToObject[id];
if (widgetObject) {
while (widgetObject.isContained) widgetObject = widgetObject.parent;
var hasSelected = widgetObject && widgetObject.style && widgetObject.style.stateStyles && widgetObject.style.stateStyles.selected;
if (hasSelected) ApplyImageAndTextJson(id, 'selected', false, false);
}
gv_SelectedWidgets[id] = 'true';
}
function SetWidgetNotSelected(id) {
var widgetObject = $axure.pageData.scriptIdToObject[id];
if (widgetObject) {
while (widgetObject.isContained) widgetObject = widgetObject.parent;
var hasSelected = widgetObject && widgetObject.style && widgetObject.style.stateStyles && widgetObject.style.stateStyles.selected;
if (hasSelected) SetWidgetOriginal(id, false);
}
gv_SelectedWidgets[id] = 'false';
}
function IsWidgetSelected(id) {
if (gv_SelectedWidgets[id] && gv_SelectedWidgets[id] == 'true') { return true; }
return false;
}
var gv_DisabledWidgets = new Object();
function DisableImageWidget(id) {
gv_DisabledWidgets[id] = true;
ApplyImageAndTextJson(id, 'disabled', false, false);
$('#' + id).find('a').css('cursor', 'default');
}
function EnableImageWidget(id) {
//document.getElementById(id).style.visibility = '';
gv_DisabledWidgets[id] = false;
SetWidgetOriginal(id, false);
$('#' + id).find('a').css('cursor', 'pointer');
}
function IsWidgetDisabled(id) {
return Boolean(gv_DisabledWidgets[id]);
}
function GetTextIdFromShape(id) {
return $.grep(
$('#' + id).children().map(function (i, obj) { return obj.id; }), // all the child ids
function (item) { return item.indexOf(id) < 0; })[0]; // that are not similar to the parent
}
function GetTextIdFromLink(id) {
var rtfElementId = $('#' + id).parentsUntil('[id^="u"][id$="_rtf"]').last().parent().attr('id');
return rtfElementId ? rtfElementId.replace('_rtf', '') : '';
}
function GetShapeIdFromText(textId) {
return $('#' + textId).parent().attr('id');
}
function ApplyImageAndTextJson(id, event, bringToFront, isOriginal) {
var obj = document.getElementById(id);
if (obj && obj.style.visibility == 'hidden' && isOriginal) { return; }
var textid = GetTextIdFromShape(id);
ResetImagesAndTextJson(id, textid);
if (event != '') {
var e = $('#' + id + '_img').data('events');
if (e && e[event]) {
$('#' + id + '_img').trigger(event);
}
var style = GetStyleOverridesForState(id, null, event);
ApplyImageStyle(id, event, style);
if(!$.isEmptyObject(style)) ApplyTextStyle(textid, style);
}
if (bringToFront) { BringToFront(id + '_container'); BringToFront(id); BringToFront(id + 'ann'); }
}
function GetStyleOverridesForState(id, parentId, state) {
var stateStyles = { };
if(parentId) {
var parent = $axure.pageData.scriptIdToObject[parentId];
$.extend(stateStyles, parent && parent.getStateStyleOverrides(state));
}
var diagramObject = $axure.pageData.scriptIdToObject[id];
var isHyperlink = $('#' + id).is('a');
if(isHyperlink) {
if(state == 'mouseOver') {
$.extend(stateStyles, $axure.pageData.stylesheet.defaultStyles.hyperlinkMouseOver);
$.extend(stateStyles, diagramObject && GetFullStateStyle(diagramObject.style, 'mouseOver'));
} else if(state == 'mouseDown') {
$.extend(stateStyles, $axure.pageData.stylesheet.defaultStyles.hyperlinkMouseOver);
$.extend(stateStyles, diagramObject && GetFullStateStyle(diagramObject.style, 'mouseOver'));
$.extend(stateStyles, $axure.pageData.stylesheet.defaultStyles.hyperlinkMouseDown);
$.extend(stateStyles, diagramObject && GetFullStateStyle(diagramObject.style, 'mouseDown'));
} else $.extend(stateStyles, diagramObject && diagramObject.getStateStyleOverrides(state));
} else $.extend(stateStyles, diagramObject && diagramObject.getStateStyleOverrides(state));
return stateStyles;
}
function GetFullStateStyle(style, state) {
var stateStyle = style && style.stateStyles && style.stateStyles[state];
if(stateStyle) {
// acount for the custom style property
var customStyle = stateStyle.baseStyle && $axure.pageData.stylesheet.stylesById[stateStyle.baseStyle];
return $.extend(customStyle || {}, stateStyle);
}
return { };
}
function ApplyImageStyle(id, event, style) {
if (!(style && event)) return;
CacheOriginalImgSrc(id);
var diagramObject = $axure.pageData.scriptIdToObject[id];
var img = $('#' + id + '_img');
if (diagramObject.type != 'imageBox' || (style.image && style.image.cssStyle)) {
var styleName = style.image ? style.image.cssStyle : (id + "_" + event);
img.removeClass().empty().addClass(styleName);
} else if (style.image && style.image.url) {
//If this is a basic link (only for axure.com), then set the image border to none
//Resolves issue of blue borders around basic link images in Firefox 3.x
var basicLinkNoBorder = (img.parents('a.basiclink').length > 0) ? " style='border:none;' " : "";
img.removeClass().html("");
}
}
function CacheOriginalImgSrc(id) {
if (!gv_OriginalImgSrc[id + '_img']) {
var src = $('#' + id + '_img > img').attr('src');
if (src) gv_OriginalImgSrc[id + '_img'] = src;
else gv_OriginalImgSrc[id + '_img'] = 'none';
}
}
function ResetImagesAndTextJson(id, textid) {
CacheOriginalImgSrc(id);
var img = $('#' + id + '_img'), e = img.data('events');
if (e && e['_normal']) {
img.trigger('_normal');
} else {
img.removeClass().empty();
if (gv_OriginalImgSrc[id + '_img'] && gv_OriginalImgSrc[id + '_img'] != 'none') {
//If this is a basic link (only for axure.com), then set the image border to none
//Resolves issue of blue borders around basic link images in Firefox 3.x
var basicLinkNoBorder = (img.parents('a.basiclink').length > 0) ? " style='border:none;' " : "";
img.html("");
} else {
img.addClass(id + '_normal');
}
}
var cacheObject = gv_OriginalTextCache[textid];
if (cacheObject) {
var styleCache = cacheObject.styleCache;
$('#' + textid + "_rtf").find('*').each(function (index, element) {
element.style.cssText = styleCache[element.id];
});
var container = document.getElementById(textid);
container.style.top = cacheObject.top;
}
}
// Preserves the alingment for the element textid after executing transformFn
function TextTransformWithVerticalAlignment(textId, transformFn) {
if (!gv_OriginalTextCache[textId]) { CacheOriginalText(textId); }
var rtfElement = document.getElementById(textId + '_rtf');
if (!rtfElement) return;
var oldHeight = GetRtfElementHeight(rtfElement);
transformFn();
// now handle vertical alignment
var newHeight = GetRtfElementHeight(rtfElement);
var oldTop = Number($('#' + textId).css('top').replace("px", ""));
var vAlign = gv_vAlignTable[textId];
if (vAlign == "center") {
var newTop = oldTop - (newHeight - oldHeight) / 2;
$('#' + textId).css('top', newTop + 'px');
} else if (vAlign == "bottom") {
var newTop = oldTop - newHeight + oldHeight;
$('#' + textId).css('top', newTop + 'px');
} // do nothing if the alignment is top
}
//-------------------------------------------------------------------------
// ApplyTextRollover
//
// Applies a rollover style to a text element.
// id : the id of the text object to set.
// styleProperties : an object mapping style properties to values. eg:
// { 'fontWeight' : 'bold',
// 'fontStyle' : 'italic' }
//-------------------------------------------------------------------------
function ApplyTextStyle(id, style) {
TextTransformWithVerticalAlignment(id, function () {
var styleProperties = GetCssStyleProperties(style);
$('#' + id + "_rtf").find('*').each(function (index, element) {
ApplyCssProps(element, styleProperties);
});
});
}
function ApplyCssProps(element, styleProperties) {
var nodeName = element.nodeName.toLowerCase();
if(nodeName == 'p') {
var parProps = styleProperties.parProps;
for(var prop in parProps) element.style[prop] = parProps[prop];
} else if(nodeName != 'a') {
var runProps = styleProperties.runProps;
for(prop in runProps) element.style[prop] = runProps[prop];
}
}
function GetCssStyleProperties(style) {
var toApply = {};
toApply.runProps = {};
toApply.parProps = {};
if(style.italic !== undefined) toApply.runProps.fontStyle = style.italic ? 'italic' : 'normal';
if(style.bold !== undefined) toApply.runProps.fontWeight = style.bold ? 'bold' : 'normal';
if(style.underline !== undefined) toApply.runProps.textDecoration = style.underline ? 'underline' : 'none';
if(style.fontName) toApply.runProps.fontFamily = style.fontName;
if(style.fontSize) toApply.runProps.fontSize = style.fontSize;
if(style.foreGroundFill) {
var colorString = '00000' + style.foreGroundFill.color.toString(16);
toApply.runProps.color = '#' + colorString.substring(colorString.length - 6);
}
if(style.horizontalAlignment) toApply.parProps.textAlign = style.horizontalAlignment;
if(style.lineSpacing) toApply.parProps.lineHeight = style.lineSpacing;
return toApply;
}
// //--------------------------------------------------------------------------
// // ApplyStyleRecursive
// //
// // Applies a style recursively to all span and div tags including elementNode
// // and all of its children.
// //
// // element : the element to apply the style to
// // styleName : the name of the style property to set (eg. 'font-weight')
// // styleValue : the value of the style to set (eg. 'bold')
// //--------------------------------------------------------------------------
// function ApplyStyleRecursive(element, styleName, styleValue) {
// var nodeName = element.nodeName.toLowerCase();
// if (nodeName == 'div' || nodeName == 'span' || nodeName == 'p') {
// element.style[styleName] = styleValue;
// }
// for (var i = 0; i < element.childNodes.length; i++) {
// ApplyStyleRecursive(element.childNodes[i], styleName, styleValue);
// }
// }
// //---------------------------------------------------------------------------
// // ApplyTextProperty
// //
// // Applies a text property to rtfElement.
// //
// // rtfElement : the the root text element of the rtf object (this is the
// // element named _rtf
// // prop : the style property to set.
// // value : the style value to set.
// //---------------------------------------------------------------------------
// function ApplyTextProperty(rtfElement, prop, value) {
// /*
// var oldHtml = rtfElement.innerHTML;
// if (prop == 'fontWeight') {
// rtfElement.innerHTML = oldHtml.replace(/< *b *\/?>/gi, "");
// } else if (prop == 'fontStyle') {
// rtfElement.innerHTML = oldHtml.replace(/< *i *\/?>/gi, "");
// } else if (prop == 'textDecoration') {
// rtfElement.innerHTML = oldHtml.replace(/< *u *\/?>/gi, "");
// }
// */
// for (var i = 0; i < rtfElement.childNodes.length; i++) {
// ApplyStyleRecursive(rtfElement.childNodes[i], prop, value);
// }
// }
//}
//---------------------------------------------------------------------------
// GetAndCacheOriginalText
//
// Gets the html for the pre-rollover state and returns the Html representing
// the Rich text.
//---------------------------------------------------------------------------
var CACHE_COUNTER = 0;
function CacheOriginalText(id) {
var rtfQuery = $('#' + id + "_rtf");
if (rtfQuery.length > 0) {
var styleCache = {};
rtfQuery.find('*').each(function (index, element) {
var elementId = element.id;
if (!elementId) element.id = elementId = 'cache' + CACHE_COUNTER++;
styleCache[elementId] = element.style.cssText;
});
var cacheObject = {
top: $('#' + id).css('top'),
styleCache:styleCache
};
gv_OriginalTextCache[id] = cacheObject;
}
}