| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834 | // ******* AxQuery Plugins ******** //$axure.internal(function($ax) {    $ax.constants = {};    $ax.constants.TABLE_TYPE = 'table';    $ax.constants.MENU_OBJECT_TYPE = 'menuObject';    $ax.constants.MASTER_TYPE = 'master';    $ax.constants.PAGE_TYPE = 'page';    $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE = 'referenceDiagramObject';    $ax.constants.REPEATER_TYPE = 'repeater';    $ax.constants.DYNAMIC_PANEL_TYPE = 'dynamicPanel';    $ax.constants.LAYER_TYPE = 'layer';    $ax.constants.TEXT_BOX_TYPE = 'textBox';    $ax.constants.TEXT_AREA_TYPE = 'textArea';    $ax.constants.LIST_BOX_TYPE = 'listBox';    $ax.constants.COMBO_BOX_TYPE = 'comboBox';    $ax.constants.CHECK_BOX_TYPE = 'checkbox';    $ax.constants.RADIO_BUTTON_TYPE = 'radioButton';    $ax.constants.BUTTON_TYPE = 'button'; //html button    $ax.constants.IMAGE_MAP_REGION_TYPE = 'imageMapRegion';    $ax.constants.IMAGE_BOX_TYPE = 'imageBox';    $ax.constants.VECTOR_SHAPE_TYPE = 'vectorShape';    $ax.constants.SNAPSHOT_TYPE = 'screenshot';    $ax.constants.TREE_NODE_OBJECT_TYPE = 'treeNodeObject';    $ax.constants.TABLE_CELL_TYPE = 'tableCell';    $ax.constants.VERTICAL_LINE_TYPE = 'verticalLine';    $ax.constants.HORIZONTAL_LINE_TYPE = 'horizontalLine';    $ax.constants.INLINE_FRAME_TYPE = 'inlineFrame';    $ax.constants.CONNECTOR_TYPE = 'connector';    $ax.constants.ALL_TYPE = '*';    $ax.constants.TEXT_TYPE = 'richTextPanel';    $ax.constants.LINK_TYPE = 'hyperlink';    // TODO: Need solid passo f this. Constants should be able to bemade local, may need some public lists or something.    //       public.fn function should take not arg and use this. May need some $ax.IsType fuctions that will take a type arg and be static    $ax.public.fn.IsTable = function (type) { return type == $ax.constants.TABLE_TYPE; }    $ax.public.fn.IsMenuObject = function (type) { return type == $ax.constants.MENU_OBJECT_TYPE; }    $ax.public.fn.IsMaster = function (type) { return type == $ax.constants.MASTER_TYPE; }    $ax.public.fn.IsPage = function (type) { return type == $ax.constants.PAGE_TYPE; }    $ax.public.fn.IsReferenceDiagramObject = function (type) { return type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE; }    $ax.public.fn.IsRepeater = function (type) { return type == $ax.constants.REPEATER_TYPE; }    $ax.public.fn.IsDynamicPanel = $ax.IsDynamicPanel = function (type) { return type == $ax.constants.DYNAMIC_PANEL_TYPE; }    $ax.public.fn.IsLayer = $ax.IsLayer = function (type) { return type == $ax.constants.LAYER_TYPE; }    $ax.public.fn.IsTextBox = function (type) { return type == $ax.constants.TEXT_BOX_TYPE; }    $ax.public.fn.IsTextArea = function (type) { return type == $ax.constants.TEXT_AREA_TYPE; }    $ax.public.fn.IsListBox = function (type) { return type == $ax.constants.LIST_BOX_TYPE; }    $ax.public.fn.IsComboBox = function (type) { return type == $ax.constants.COMBO_BOX_TYPE; }    $ax.public.fn.IsCheckBox = function (type) { return type == $ax.constants.CHECK_BOX_TYPE; }    $ax.public.fn.IsRadioButton = function (type) { return type == $ax.constants.RADIO_BUTTON_TYPE; }    $ax.public.fn.IsButton = function (type) { return type == $ax.constants.BUTTON_TYPE; }    $ax.public.fn.IsIamgeMapRegion = function (type) { return type == $ax.constants.IMAGE_MAP_REGION_TYPE; }    $ax.public.fn.IsImageBox = function (type) { return type == $ax.constants.IMAGE_BOX_TYPE; }    $ax.public.fn.IsVector = function (type) { return type == $ax.constants.VECTOR_SHAPE_TYPE; }    $ax.public.fn.IsSnapshot = function (type) { return type == $ax.constants.SNAPSHOT_TYPE; }    $ax.public.fn.IsTreeNodeObject = function (type) { return type == $ax.constants.TREE_NODE_OBJECT_TYPE; }    $ax.public.fn.IsTableCell = function (type) { return type == $ax.constants.TABLE_CELL_TYPE; }    $ax.public.fn.IsInlineFrame = function (type) { return type == $ax.constants.INLINE_FRAME_TYPE; }    $ax.public.fn.IsConnector = function (type) { return type == $ax.constants.CONNECTOR_TYPE; }    $ax.public.fn.IsContainer = function (type) { return type== $ax.constants.VECTOR_SHAPE_TYPE || type == $ax.constants.TABLE_TYPE || type == $ax.constants.MENU_OBJECT_TYPE || type == $ax.constants.TREE_NODE_OBJECT_TYPE; }    var PLAIN_TEXT_TYPES = [$ax.constants.TEXT_BOX_TYPE, $ax.constants.TEXT_AREA_TYPE, $ax.constants.LIST_BOX_TYPE,        $ax.constants.COMBO_BOX_TYPE, $ax.constants.CHECK_BOX_TYPE, $ax.constants.RADIO_BUTTON_TYPE, $ax.constants.BUTTON_TYPE];    $ax.public.fn.IsResizable = function (type) { return $.inArray(type, RESIZABLE_TYPES) !== -1; }    var RESIZABLE_TYPES = [        $ax.constants.BUTTON_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.IMAGE_BOX_TYPE, $ax.constants.IMAGE_MAP_REGION_TYPE,        $ax.constants.INLINE_FRAME_TYPE, $ax.constants.LAYER_TYPE, $ax.constants.LIST_BOX_TYPE, $ax.constants.COMBO_BOX_TYPE,        $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.TEXT_AREA_TYPE, $ax.constants.TEXT_BOX_TYPE, $ax.constants.SNAPSHOT_TYPE    ];    $ax.public.fn.IsSelectionButton = function(type) {        return type == $ax.constants.RADIO_BUTTON_TYPE || type == $ax.constants.CHECK_BOX_TYPE;    };        $ax.public.fn.SupportsRichText = function() {        var obj = $obj(this.getElementIds()[0]);        // Catch root tree nodes as they are not supported.        if(obj.type == $ax.constants.TREE_NODE_OBJECT_TYPE) return obj.friendlyType == 'Tree Node';        // Do the same for tree node icons maybe?        return $.inArray(obj.type, SUPPORTS_RICH_TEXT_TYPES) != -1;    }    var SUPPORTS_RICH_TEXT_TYPES = [$ax.constants.CHECK_BOX_TYPE, $ax.constants.RADIO_BUTTON_TYPE,        $ax.constants.IMAGE_BOX_TYPE, $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.TABLE_CELL_TYPE, $ax.constants.CONNECTOR_TYPE];    var _addJQueryFunction = function(name) {        $ax.public.fn[name] = function() {            var val = $.fn[name].apply(this.jQuery(), arguments);            return arguments[0] ? this : val;        };    };    var _jQueryFunctionsToAdd = ['text', 'val', 'css'];    for (var jqueryFunctionIndex = 0; jqueryFunctionIndex < _jQueryFunctionsToAdd.length; jqueryFunctionIndex++) _addJQueryFunction(_jQueryFunctionsToAdd[jqueryFunctionIndex]);    //    var _addJQueryEventFunction = function(name) {    //        $ax.public.fn[name] = function() {    //            $.fn[name].apply(this.jQuery(), arguments);    //            return this;    //        };    //    };    //    var _addJQueryEventFunction = function(name) {    //        $ax.public.fn[name] = (function(nn) {    //            return function() {    //                $.fn[nn].apply(this.jQuery(), arguments);    //                return this;    //            };    //        })(name);    //    };    var _addJQueryEventFunction = function(name) {        $ax.public.fn[name] = function() {            //With Martin - No idea why this is necessary. We tried encapsulating the function thinking it was related to closure (above),            //but that didn't fix the problem. If we don't add this Repeaters will give "Uncaught TypeError: Object #<Object> has no method 'apply'"            //here (but Indeterminately, often on larger/slower Repeaters) because it is Undefined. However it seems the catch is never hit            //if we surround the statement with the try/catch. Perhaps the try/catch block creates a scope or closure.            try {                $.fn[name].apply(this.jQuery(), arguments);            } catch(e) {                console.log("Couldn't find the event: " + name);            }            return this;        };    };    var _jQueryEventFunctionsToAdd = ['click', 'mouseenter', 'mouseleave', 'bind'];    for(var jqueryEventIndex = 0; jqueryEventIndex < _jQueryEventFunctionsToAdd.length; jqueryEventIndex++) _addJQueryEventFunction(_jQueryEventFunctionsToAdd[jqueryEventIndex]);    $ax.public.fn.openLink = function(url, includeVariables) {        this.jQuery().each(function() {            if(!($(this).is('iframe'))) {                return;            }            var objIframe = $(this).get(0);            $ax.navigate({                url: url,                target: "frame",                includeVariables: includeVariables,                frame: objIframe            });        });        return this;    };    $ax.public.fn.SetPanelState = function(stateNumber, options, showWhenSet) {        var animateInInfo = _getAnimateInfo(options && options.animateIn, 500);        var animateOutInfo = _getAnimateInfo(options && options.animateOut, 500);        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];            if ($ax.public.fn.IsDynamicPanel($ax.getTypeFromElementId(elementId))) {                var stateName = $ax.visibility.GetPanelStateId(elementId, Number(stateNumber) - 1);                var wasVisible = $ax.visibility.IsIdVisible(elementId);                // If compressing because you are fit to content and the change of state may change size, must be before the change.                if(options.compress && $ax.dynamicPanelManager.isIdFitToContent(elementId) && wasVisible) {                    $ax.dynamicPanelManager.compressDelta(elementId, $ax.visibility.GetPanelState(elementId), stateName, options.vertical, options.compressEasing, options.compressDuration);                }                $ax.visibility.SetPanelState(elementId, stateName, animateOutInfo.easingType, animateOutInfo.direction, animateOutInfo.duration,                    animateInInfo.easingType, animateInInfo.direction, animateInInfo.duration, showWhenSet);                // If compressing because of a show, must be after state is set.                if(options.compress && !wasVisible && showWhenSet) {                    $ax.dynamicPanelManager.compressToggle(elementId, options.vertical, true, options.compressEasing, options.compressDuration);                }            }        }        return this;    };    $ax.public.fn.show = function(options, eventInfo) {        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];            var lightboxId = $ax.repeater.applySuffixToElementId(elementId, '_lightbox');            var lightbox = $jobj(lightboxId);            if(options && options.showType == 'lightbox') {                $ax.flyoutManager.unregisterPanel(elementId, true);                // Add lightbox if there isn't one                if(lightbox.length == 0) {                    lightbox = $('<div></div>');                    lightbox.attr('id', lightboxId);                    var color = 'rgb(' + options.lightbox.r + ',' + options.lightbox.g + ',' + options.lightbox.b + ')';                    lightbox.css({                        position: 'fixed',                        left: '0px',                        top: '0px',                        width: '10000px',                        height: '10000px',                        'background-color': color,                        opacity: options.lightbox.a / 255                    });                    var parents = $ax('#' + elementId).getParents(true, ['dynamicPanel'])[0];                    var fixedParentPanelId = undefined;                    for(var j = 0; j < parents.length; j++) {                        var parentId = parents[j];                        if($jobj(parentId).css('z-index') != 'auto' || $ax.features.supports.mobile) {                            fixedParentPanelId = parents[j];                            break;                        }                    }                    if(!fixedParentPanelId) $('#base').append(lightbox);                    else $jobj(fixedParentPanelId).append(lightbox);                    var wasVisible = $ax.visibility.IsIdVisible(elementId);                    (function(lightbox, query) {                        $ax.event.attachClick(lightbox, function() {                            $ax.action.addAnimation(elementId, $ax.action.queueTypes.fade, function() {                                if(!wasVisible) query.hide();                                else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade);                                lightbox.remove();                            });                        });                    })(lightbox, this);                }                $ax.legacy.BringToFront(lightboxId, true);                $ax.legacy.BringToFront(elementId, true);            } else if(options && options.showType == 'flyout') {                // Remove lightbox if there is one                lightbox.remove();                var src = eventInfo.thiswidget;                var target = $ax.getWidgetInfo(elementId);                var rects = {};                if(src.valid) rects.src = $ax.geometry.genRect(src, true);                if(target.valid) rects.target = $ax.geometry.genRect(target, true);                $ax.flyoutManager.registerFlyout(rects, elementId, eventInfo.srcElement);                //$ax.style.AddRolloverOverride(elementId);                $ax.legacy.BringToFront(elementId);            } else {                // Remove lightbox, unregister flyout                lightbox.remove();                $ax.flyoutManager.unregisterPanel(elementId, true);            }            _setVisibility(elementId, true, options);        }        return this;    };    var _getAnimateInfo = function (options, defaultDuration, useHide) {        var durationOption, easingOption, animationOption;        if(options) {            if (useHide) {                durationOption = options.durationHide;                easingOption = options.easingHide;                animationOption = options.animationHide;            } else {                durationOption = options.duration;                easingOption = options.easing;                animationOption = options.animation;            }            if (animationOption == 'none') animationOption = 'swing';        } else {            durationOption = defaultDuration;            easingOption = 'none',            animationOption = 'swing';        }        var animateInfo = { duration: durationOption };        switch (easingOption) {        case 'fade':            animateInfo.easingType = 'fade';            animateInfo.direction = '';            break;        case 'slideLeft':            animateInfo.easingType = animationOption;            animateInfo.direction = 'left';            break;        case 'slideRight':            animateInfo.easingType = animationOption;            animateInfo.direction = 'right';            break;        case 'slideUp':            animateInfo.easingType = animationOption;            animateInfo.direction = 'up';            break;        case 'slideDown':            animateInfo.easingType = animationOption;            animateInfo.direction = 'down';            break;        case 'flipLeft':            animateInfo.easingType = 'flip';            animateInfo.direction = 'left';            break;        case 'flipRight':            animateInfo.easingType = 'flip';            animateInfo.direction = 'right';            break;        case 'flipUp':            animateInfo.easingType = 'flip';            animateInfo.direction = 'up';            break;        case 'flipDown':            animateInfo.easingType = 'flip';            animateInfo.direction = 'down';            break;        default:            animateInfo.easingType = 'none';            animateInfo.direction = '';        }        return animateInfo;    };    $ax.public.fn.hide = function(options) {        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];//            var wasShown = $ax.visibility.IsIdVisible(elementId);            _setVisibility(elementId, false, options, true);        }        return this;    };    $ax.public.fn.toggleVisibility = function(options) {        var elementIds = this.getElementIds();        for (var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];            var show = !$ax.visibility.IsIdVisible(elementId);            _setVisibility(elementId, show, options, !show);        }        return this;    };    var _setVisibility = function (elementId, value, options, useHide) {        var animateInfo = _getAnimateInfo(options, 0, useHide);        var wasShown = $ax.visibility.IsIdVisible(elementId);        var compress = options && options.showType == 'compress' && wasShown != value;        if (compress) $ax.dynamicPanelManager.compressToggle(elementId, options.vertical, value, options.compressEasing, options.compressDuration);        var onComplete = function () {            $ax.dynamicPanelManager.fitParentPanel(elementId);        };        $ax.visibility.SetWidgetVisibility(elementId, {            value: value,            easing: animateInfo.easingType,            direction: animateInfo.direction,            duration: animateInfo.duration,            animation: animateInfo.animation,            fire: true,            onComplete: onComplete        });                if(options && options.bringToFront) $ax.legacy.BringToFront(elementId);    };    $ax.public.fn.setOpacity = function(opacity, easing, duration) {        if(!easing || ! duration) {            easing = 'none';            duration = 0;        }        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];            var onComplete = function() {                $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade);            };            var query = $jobj(elementId);            if(duration == 0 || easing == 'none') {                query.css('opacity', opacity);                onComplete();            } else query.animate({ opacity: opacity }, { duration: duration, easing: easing, queue: false, complete: onComplete });        }    }    //move one widget.  I didn't combine moveto and moveby, since this is in .public, and separate them maybe more clear for the user    var _move = function (elementId, x, y, options, moveTo) {        if(!options.easing) options.easing = 'none';        if(!options.duration) options.duration = 500;        var obj = $obj(elementId);        // Layer move using container now.        if($ax.public.fn.IsLayer(obj.type)) {            $ax.move.MoveWidget(elementId, x, y, options, moveTo,                function () {                    if(options.onComplete) options.onComplete();                    $ax.dynamicPanelManager.fitParentPanel(elementId);                }, false);        } else {            var xDelta = x;            var yDelta = y;            if (moveTo) {                var jobj = $jobj(elementId);                var left = $ax.getNumFromPx(jobj.css('left'));                var top = $ax.getNumFromPx(jobj.css('top'));                xDelta = x - left;                yDelta = y - top;            }            $ax.move.MoveWidget(elementId, xDelta, yDelta, options, false,                function () { $ax.dynamicPanelManager.fitParentPanel(elementId); }, true);        }    };    $ax.public.fn.moveTo = function (x, y, options) {        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) {            _move(elementIds[index], x, y, options, true);        }        return this;    };    $ax.public.fn.moveBy = function (x, y, options) {        var elementIds = this.getElementIds();        if(x == 0 && y == 0) {            for(var i = 0; i < elementIds.length; i++) {                var elementId = elementIds[i];                $ax.move.nopMove(elementId, options);                //$ax.event.raiseSyntheticEvent(elementId, "onMove");                $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move);                //if($axure.fn.IsLayer($obj(elementId).type)) {                //    var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true);                //    for(var j = 0; j < childrenIds.length; j++) $ax.event.raiseSyntheticEvent(childrenIds[j], 'onMove');                //}            }            return this;        }        for(var index = 0; index < elementIds.length; index++) {            _move(elementIds[index], x, y, options, false);        }        return this;    };    $ax.public.fn.circularMoveAndRotate = function(degreeChange, options, centerPointLeft, centerPointTop, doRotation, moveDelta, resizeOffset, rotatableMove, moveComplete) {        if(!rotatableMove) rotatableMove = { x: 0, y: 0 };        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];            var onComplete = function () {                $ax.dynamicPanelManager.fitParentPanel(elementId);                if (moveComplete) moveComplete();            }            $ax.move.circularMove(elementId, degreeChange, { x: centerPointLeft, y: centerPointTop }, moveDelta, rotatableMove, resizeOffset, options, true, onComplete, doRotation);            if(doRotation) $ax.move.rotate(elementId, degreeChange, options.easing, options.duration, false, true, function () { $ax.dynamicPanelManager.fitParentPanel(elementId); });            else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.rotate);        }    };    $ax.public.fn.rotate = function (degree, easing, duration, to, axShouldFire) {        var elementIds = this.getElementIds();        // this function will no longer handle compound vectors.        for(var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];            degree = parseFloat(degree);            $ax.move.rotate(elementId, degree, easing, duration, to, axShouldFire, function () { $ax.dynamicPanelManager.fitParentPanel(elementId); });        }    };    $ax.public.fn.resize = function(newLocationAndSizeCss, resizeInfo, axShouldFire, moves, onCompletedFunc) {        var elementIds = this.getElementIds();        if(!elementIds) return;        var completeAndFire = function(moved, id) {            if(axShouldFire) {                $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.resize);                if(moves) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move);            }            if(onCompletedFunc) onCompletedFunc();        };        for(var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];            var obj = $obj(elementId);            if(!$ax.public.fn.IsResizable(obj.type)) {                //$ax.dynamicPanelManager.fitParentPanel(elementId);                completeAndFire(moves, elementId);                continue;            }            var oldSize = $ax('#' + elementId).size();            var oldWidth = oldSize.width;            var oldHeight = oldSize.height;            var query = $jobj(elementId);            var isDynamicPanel = $ax.public.fn.IsDynamicPanel(obj.type);            if(isDynamicPanel) {                // No longer fitToContent, calculate additional styling that needs to be done.                $ax.dynamicPanelManager.setFitToContentCss(elementId, false, oldWidth, oldHeight);                if (query.css('position') == 'fixed' && ((obj.fixedHorizontal && obj.fixedHorizontal == 'center') || (obj.fixedVertical && obj.fixedVertical == 'middle'))) {                    moves = true;                    var loc = $ax.dynamicPanelManager.getFixedPosition(elementId, oldWidth, oldHeight, newLocationAndSizeCss.width, newLocationAndSizeCss.height);                    if(loc) {                        if (loc[0] != 0 && !$ax.dynamicPanelManager.isPercentWidthPanel(obj)) newLocationAndSizeCss['margin-left'] = '+=' + (Number(newLocationAndSizeCss['margin-left'].substr(2)) + loc[0]);                        if (loc[1] != 0) newLocationAndSizeCss['margin-top'] = '+=' + (Number(newLocationAndSizeCss['margin-top'].substr(2)) + loc[1]);                    }                }                var onComplete = function() {                    $ax.flyoutManager.updateFlyout(elementId);                    $ax.dynamicPanelManager.fitParentPanel(elementId);                    $ax.dynamicPanelManager.updatePanelPercentWidth(elementId);                    $ax.dynamicPanelManager.updatePanelContentPercentWidth(elementId);                    completeAndFire(moves, elementId);                    $ax.event.raiseSyntheticEvent(elementId, 'onResize');                };            } else {                ////if contains text                //var textChildren = query.children('div.text');                //if(textChildren && textChildren.length != 0) {                //    var textDivId = textChildren.attr('id');                //    var padding = $ax.style.getPadding(textDivId);                //    var leftPadding = padding.paddingLeft;                //    var rightPadding = padding.paddingRight;                //    //var textObj = $ax('#' + textDivId);                //    //var leftPadding = textObj.left(true);                //    //var rightPadding = oldWidth - leftPadding - textObj.width();                //    //greater or equal to 1px                //    var newTextWidth = Math.max(newLocationAndSizeCss.width - leftPadding - rightPadding, 1);                //    var textChildCss = { width: newTextWidth };                //    var textStepFunction = function() {                //        //change the width of the text div may effect the height                //        //var currentTextHeight = Number($(textChildren.children('p')[0]).css('height').replace('px', ''));                //        //textChildren.css('height', currentTextHeight);                //        //var display = $ax.public.fn.displayHackStart(document.getElementById(textDivId));                //        var trap = _displayWidget(textDivId);                //        $ax.style.setTextAlignment([textDivId]);                //        trap();                //        //$ax.public.fn.displayHackEnd(display);                //    };                //}                //get all the other children that matters                onComplete = function() {                    $ax.dynamicPanelManager.fitParentPanel(elementId);                    completeAndFire(moves, elementId);                    $ax.annotation.adjustIconLocation(elementId);                    $ax.event.raiseSyntheticEvent(elementId, 'onResize');                };            }            var children = query.children().not('div.text');            while(children && children.length && $(children[0]).attr('id').indexOf('container') != -1) {                children = children.children().not('div.text');            }            if(children && children.length !== 0) {                var childAnimationArray = [];                var isConnector = $ax.public.fn.IsConnector(obj.type);                children.each(function (i, child) {                    var childCss = {                        width: newLocationAndSizeCss.width,                        height: newLocationAndSizeCss.height                    };                    //$ax.size() use outerWidth/Height(false), which include padding and borders(no margins)                    var childSizingObj = $ax('#' + child.id).size();                    var differentSizedImage = childSizingObj.width - oldWidth != 0 || childSizingObj.height - oldHeight != 0;                    if ((differentSizedImage || isConnector) && child.tagName == 'IMG') {                        //oldwidth is zero for connectors                        var widthOffset = oldWidth ? (childSizingObj.width - oldWidth) * newLocationAndSizeCss.width / oldWidth : childSizingObj.width;                        var heightOffset = oldHeight ? (childSizingObj.height - oldHeight) * newLocationAndSizeCss.height / oldHeight : childSizingObj.height;                        childCss.width += widthOffset;                        childCss.height += heightOffset;                    }                    //there are elements like inputs, come with a padding and border, so need to use outerwidth for starting point, due to jquery 1.7 css() on width/height bugs                    if($(child).css('position') === 'absolute') {                        if(child.offsetLeft) {                            childSizingObj.left = child.offsetLeft;                            childCss.left = oldWidth ? child.offsetLeft * newLocationAndSizeCss.width / oldWidth : child.offsetLeft; //- transformedShift.x;                        }                        if(child.offsetTop) {                            childSizingObj.top = child.offsetTop;                            childCss.top = oldHeight ? child.offsetTop * newLocationAndSizeCss.height / oldHeight : child.offsetTop; //- transformedShift.y;                        }                    }                    childAnimationArray.push({ obj: child, sizingObj: childSizingObj, sizingCss: childCss });                });            }                        if (newLocationAndSizeCss.left || newLocationAndSizeCss.top) {                //var movedLeft = newLocationAndSizeCss.left;                //var movedTop = newLocationAndSizeCss.top;                //$ax.visibility.setMovedLocation(elementId, movedLeft, movedTop);                var movedLeft = newLocationAndSizeCss.deltaX;                var movedTop = newLocationAndSizeCss.deltaY;                $ax.visibility.moveMovedLocation(elementId, movedLeft, movedTop);            }            if (newLocationAndSizeCss.width || newLocationAndSizeCss.height) {                var resizedWidth = newLocationAndSizeCss.width;                var resizedHeight = newLocationAndSizeCss.height;                $ax.visibility.setResizedSize(elementId, resizedWidth, resizedHeight);            }            if (!resizeInfo.easing || resizeInfo.easing == 'none') {                if (childAnimationArray) {                    $(childAnimationArray).each(function (i, animationObj) {                        if(animationObj.resizeMatrixFunction) {                            $(animationObj.obj).css($ax.public.fn.setTransformHowever(animationObj.resizeMatrixFunction(animationObj.width, animationObj.height)));                        } else {                            //var sizingCss = animationObj.sizingCss;                            //if (sizingCss.left || sizingCss.top) {                            //    var movedLeft = sizingCss.left;                            //    var movedTop = sizingCss.top;                            //    $ax.visibility.setMovedLocation(animationObj.obj.id, movedLeft, movedTop);                            //}                            //if (sizingCss.width || sizingCss.height) {                            //    var resizedWidth = sizingCss.width;                            //    var resizedHeight = sizingCss.height;                            //    $ax.visibility.setResizedSize(animationObj.obj.id, resizedWidth, resizedHeight);                            //}                            $(animationObj.obj).animate(animationObj.sizingCss, { queue: false, duration: 0 });                        }                    });                }                //if(childCss) children.animate(childCss, 0);                //if(sketchyImage && sketchyImageCss) $(sketchyImage).animate(sketchyImageCss, 0);                //if(textChildCss) {                //    textChildren.animate(textChildCss, {                //        duration: 0,                //        step: textStepFunction                //    });                //}                query.animate(newLocationAndSizeCss, { queue: false, duration: 0, complete: onComplete });            } else {                if(childAnimationArray) {                    $(childAnimationArray).each(function (i, animationObj) {                        if(animationObj.resizeMatrixFunction) {                            $(animationObj.sizingObj).animate(animationObj.sizingCss, {                                queue: false,                                duration: resizeInfo.duration,                                easing: resizeInfo.easing,                                step: function (now) {                                    var widthRatio = (animationObj.width - 1.0) * now + 1.0;                                    var heightRatio = (animationObj.height - 1.0) * now + 1.0;                                    $(animationObj.obj).css($ax.public.fn.setTransformHowever(animationObj.resizeMatrixFunction(widthRatio, heightRatio)));                                }                            });                        } else {                            $(animationObj.sizingObj).animate(animationObj.sizingCss, {                                queue: false,                                duration: resizeInfo.duration,                                easing: resizeInfo.easing,                                step: function (now, tween) {                                    $(animationObj.obj).css(tween.prop, now);                                }                            });                        }                    });                }                //if(textChildCss) {                //    textChildren.animate(textChildCss, {                //        queue: false,                //        duration: resizeInfo.duration,                //        easing: resizeInfo.easing,                //        step: textStepFunction                //    });                //}                if(isDynamicPanel) {                    query.animate(newLocationAndSizeCss, { queue: false, duration: resizeInfo.duration, easing: resizeInfo.easing, complete: onComplete });                } else {                    var locObj = {                        left: $ax.public.fn.GetFieldFromStyle(query, 'left'), top: $ax.public.fn.GetFieldFromStyle(query, 'top'),                        width: $ax.public.fn.GetFieldFromStyle(query, 'width'), height: $ax.public.fn.GetFieldFromStyle(query, 'height'),                    };                    $(locObj).animate(newLocationAndSizeCss, {                        queue: false,                        duration: resizeInfo.duration,                        easing: resizeInfo.easing,                        step: function (now, tween) {                            query.css(tween.prop, now);                        },                        complete: onComplete                    });                }            }        }    };    $ax.public.fn.bringToFront = function() {        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) { $ax.legacy.BringToFront(elementIds[index]); }        return this;    };    $ax.public.fn.sendToBack = function() {        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) { $ax.legacy.SendToBack(elementIds[index]); }        return this;    };    $ax.public.fn.text = function() {        if(arguments[0] == undefined) {            var firstId = this.getElementIds()[0];            if(!firstId) { return undefined; }            return getWidgetText(firstId);        } else {            var elementIds = this.getElementIds();            for(var index = 0; index < elementIds.length; index++) {                var currentItem = elementIds[index];                var widgetType = $ax.getTypeFromElementId(currentItem);                if($ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)) { //For non rtf                    SetWidgetFormText(currentItem, arguments[0]);                } else {                    var idRtf = '#' + currentItem;                    if($(idRtf).length == 0) idRtf = '#u' + (Number(currentItem.substring(1)) + 1);                    if($(idRtf).length != 0) {                        //If the richtext div already has some text in it,                        //preserve only the first style and get rid of the rest                        //If no pre-existing p-span tags, don't do anything                        if($(idRtf).find('p').find('span').length > 0) {                            $(idRtf).find('p:not(:first)').remove();                            $(idRtf).find('p').find('span:not(:first)').remove();                            //Replace new-lines with NEWLINE token, then html encode the string,                            //finally replace NEWLINE token with linebreak                            var textWithLineBreaks = arguments[0].replace(/\n/g, '--NEWLINE--');                            var textHtml = $('<div/>').text(textWithLineBreaks).html();                            $(idRtf).find('span').html(textHtml.replace(/--NEWLINE--/g, '<br>'));                        }                    }                }            }            return this;        }    };    var getWidgetText = function(id) {        var idQuery = $jobj(id);        var inputQuery = $jobj($ax.INPUT(id));        if(inputQuery.length) idQuery = inputQuery;        if (idQuery.is('input') && ($ax.public.fn.IsCheckBox(idQuery.attr('type')) || idQuery.attr('type') == 'radio')) {            idQuery = idQuery.parent().find('label').find('div');        }        if(idQuery.is('div')) {            var $rtfObj = idQuery.hasClass('text') ? idQuery : idQuery.find('.text');            if($rtfObj.length == 0) return '';            var textOut = '';            $rtfObj.children('p,ul,ol').each(function(index) {                if(index != 0) textOut += '\n';                //var htmlContent = $(this).html();                //if(isSoloBr(htmlContent)) return; // It has a solo br, then it was just put in for a newline, and paragraph already added the new line.                if (isSoloBr($(this).children())) return;                var htmlContent = $(this).html();                            //Replace line breaks (set in SetWidgetRichText) with newlines and nbsp's with regular spaces.                htmlContent = htmlContent.replace(/<br[^>]*>/ig, '\n').replace(/ /ig, ' ');                textOut += $(htmlContent).text();                //textOut += htmlContent.replace(/<[^>]*>/g, '');            });            return textOut;        } else {            var val = idQuery.val();            return val == undefined ? '' : val;        }    };    var isSoloBr = function($html) {        //html = $(html);        // Html needs one and only one span        var spanChildren = $html.length == 1 && $html.is('span') ? $html.children() : false;        // Span children needs exactly one br and no text in the span        return spanChildren && spanChildren.length == 1 && spanChildren.is('br') && spanChildren.text().trim() == '';    };    $ax.public.fn.setRichTextHtml = function() {        if(arguments[0] == undefined) {            //No getter function, so just return undefined            return undefined;        } else {            var elementIds = this.getElementIds();            for(var index = 0; index < elementIds.length; index++) {                var currentItem = elementIds[index];                var widgetType = $ax.getTypeFromElementId(currentItem);                if ($ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)) { //Do nothing for non rtf                    continue;                } else {                    //TODO -- [mas] fix this!                    var idRtf = '#' + currentItem;                    if($(idRtf).length == 0) idRtf = '#u' + (parseInt(currentItem.substring(1)) + 1);                    if($(idRtf).length != 0) SetWidgetRichText(idRtf, arguments[0]);                }            }            return this;        }    };    $ax.public.fn.value = function() {        if(arguments[0] == undefined) {            var firstId = this.getElementIds()[0];            if(!firstId) {                return undefined;            }            var widgetType = $ax.getTypeFromElementId(firstId);            if ($ax.public.fn.IsComboBox(widgetType) || $ax.public.fn.IsListBox(widgetType)) { //for select lists and drop lists                return $('#' + firstId + ' :selected').text();            } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { //for radio/checkboxes                return $('#' + firstId + '_input').is(':selected');            } else if ($ax.public.fn.IsTextBox(widgetType)) { //for text box                return $('#' + firstId + '_input').val();            } else { //for text based form elements                return this.jQuery().first().val();            }        } else {            var elementIds = this.getElementIds();            for(var index = 0; index < elementIds.length; index++) {                var widgetType = $ax.getTypeFromElementId(elementIds[index]);                var elementIdQuery = $('#' + elementIds[index]);                if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { //for radio/checkboxes                    if(arguments[0] == true) {                        elementIdQuery.prop('selected', true);                    } else if(arguments[0] == false) {                        elementIdQuery.prop('selected', false);                    }                } else { //For select lists, drop lists, text based form elements                    elementIdQuery.val(arguments[0]);                }            }            return this;        }    };    $ax.public.fn.checked = function() {        if(arguments[0] == undefined) {            return this.selected();        } else {            this.selected(arguments[0]);            return this;        }    };    //var _getRelativeLeft = function (id, parent) {    //    var currentNode = window.document.getElementById(id).offsetParent;    //    var left = $ax('#' + id).left(true);    //    while (currentNode != null && currentNode.tagName != "BODY" && currentNode != parent) {    //        left += currentNode.offsetLeft;    //        currentNode = currentNode.offsetParent;    //    }    //    return left;    //};    //var _getRelativeTop = function(id, parent) {    //    var currentNode = window.document.getElementById(id).offsetParent;    //    var top = $ax('#' + id).top(true);    //    while(currentNode != null && currentNode.tagName != "BODY" && currentNode != parent) {    //        top += currentNode.offsetTop;    //        currentNode = currentNode.offsetParent;    //    }    //    return top;    //};    var _scrollHelper = function(id, scrollX, scrollY, easing, duration) {        var target = window.document.getElementById(id);        var scrollable = $ax.legacy.GetScrollable(target);        var $scrollable = $(scrollable);        var viewportLocation;        if ($scrollable.is('body')) viewportLocation = $ax('#' + id).viewportLocation();        else viewportLocation = $ax('#' + id).pageBoundingRect(true, $scrollable.attr('id')).location;        var targetLeft = viewportLocation.left;        var targetTop = viewportLocation.top;        //var targetLeft = _getRelativeLeft(id, scrollable);        //var targetTop = _getRelativeTop(id, scrollable);        if(!scrollX) targetLeft = scrollable.scrollLeft;        if(!scrollY) targetTop = scrollable.scrollTop;                if($scrollable.is('body')) {            $scrollable = $('html,body');        }        if(easing == 'none') {            if(scrollY) $scrollable.scrollTop(targetTop);            if(scrollX) $scrollable.scrollLeft(targetLeft);        } else {            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);            }        }    };    $ax.public.fn.scroll = function(scrollOption) {        var easing = 'none';        var duration = 500;        if(scrollOption && scrollOption.easing) {            easing = scrollOption.easing;            if(scrollOption.duration) {                duration = scrollOption.duration;            }        }        var scrollX = true;        var scrollY = true;        // TODO: check this without vertical option -- might scroll outside of device frame        if(scrollOption.direction == 'vertical') {            scrollX = false;        } else if(scrollOption.direction == 'horizontal') {            scrollY = false;        }        var elementIds = this.getElementIds();        for(var index = 0; index < elementIds.length; index++) {            //            if($ax.getTypeFromElementId(elementIds[index]) == IMAGE_MAP_REGION_TYPE) {            _scrollHelper(elementIds[index], scrollX, scrollY, easing, duration);            //            }        }        return this;    };    $ax.public.fn.enabled = function() {        if(arguments[0] == undefined) {            var firstId = this.getElementIds()[0];            if(!firstId) return undefined;            var widgetType = $ax.getTypeFromElementId(firstId);            if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType)                || $ax.public.fn.IsLayer(widgetType)) return !$ax.style.IsWidgetDisabled(firstId);            else return this.jQuery().children(':disabled').length <= 0;        } else {            var elementIds = this.getElementIds();            for(var index = 0; index < elementIds.length; index++) {                var elementId = elementIds[index];                var widgetType = $ax.getTypeFromElementId(elementId);                var enabled = arguments[0];                if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType)                    || $ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)                    || $ax.public.fn.IsComboBox(widgetType) || $ax.public.fn.IsListBox(widgetType)                    || $ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)                ) $ax.style.SetWidgetEnabled(elementId, enabled);                if ($ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)) {                    $ax.style.SetWidgetEnabled(elementId, enabled);                    var children = this.getChildren(false, true)[index].children;                    for(var i = 0; i < children.length; i++) {                        $axure('#' + children[i]).enabled(enabled);                    }                }                var obj = $obj(elementId);                var images = obj.images;                if(PLAIN_TEXT_TYPES.indexOf(widgetType) != -1 && images) {                    var img = $jobj($ax.repeater.applySuffixToElementId(elementId, '_image_sketch'));                    var key = (enabled ? 'normal~' : 'disabled~') + ($ax.adaptive.currentViewId || '');                    img.attr('src', images[key]);                }                var jobj = $jobj(elementId);                var input = $jobj($ax.INPUT(elementId));                if(input.length) jobj = input;                //if (OS_MAC && WEBKIT && $ax.public.fn.IsComboBox(widgetType)) jobj.css('color', enabled ? '' : 'grayText');                if(enabled) jobj.prop('disabled', false);                else jobj.prop('disabled', true);            }            return this;        }    };    $ax.public.fn.visible = function() {        var ids = this.getElementIds();        for(var index = 0; index < ids.length; index++) $ax.visibility.SetIdVisible(ids[index], arguments[0]);        return this;    };    $ax.public.fn.selected = function() {        if(arguments[0] == undefined) {            var firstId = this.getElementIds()[0];            if(!firstId) return undefined;            var widgetType = $ax.getTypeFromElementId(firstId);            if ($ax.public.fn.IsTreeNodeObject(widgetType)) {                var treeNodeButtonShapeId = '';                var allElementIds = $ax.getAllElementIds();                for(var i = 0; i < allElementIds.length; i++) {                    var elementId = allElementIds[i];                    var currObj = $ax.getObjectFromElementId(elementId);                    if ($ax.public.fn.IsVector(currObj.type) && currObj.parent && currObj.parent.scriptIds && currObj.parent.scriptIds[0] == firstId) {                        treeNodeButtonShapeId = elementId;                        break;                    }                }                if(treeNodeButtonShapeId == '') return undefined;                return $ax.style.IsWidgetSelected(treeNodeButtonShapeId);            } else if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsTableCell(widgetType) || $ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)                || $ax.public.fn.IsTextArea(widgetType) || $ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsListBox(widgetType) || $ax.public.fn.IsComboBox(widgetType)) {                return $ax.style.IsWidgetSelected(firstId);            } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) {                return $jobj($ax.INPUT(firstId)).prop('checked');            }            return this;        }        var elementIds = this.getElementIds();        var func = typeof (arguments[0]) === 'function' ? arguments[0] : null;        var enabled = arguments[0]; // If this is a function it will be overridden with the return value;        for(var index = 0; index < elementIds.length; index++) {            var elementId = elementIds[index];            if(func) {                enabled = func($axure('#' + elementId));            }            var widgetType = $ax.getTypeFromElementId(elementId);            if ($ax.public.fn.IsTreeNodeObject(widgetType)) { //for tree node                var treeRootId = $('#' + elementIds[index]).parents('.treeroot').attr('id');                var treeNodeButtonShapeId = '';                var childElementIds = $jobj(elementId).children();                for(var i = 0; i < childElementIds.length; i++) {                    var elementId = childElementIds[i].id;                    var currObj = $ax.getObjectFromElementId(elementId);                    if (currObj && currObj.type == $ax.constants.VECTOR_SHAPE_TYPE && currObj.parent &&                        currObj.parent.scriptIds && currObj.parent.scriptIds[0] == elementIds[index]) {                        treeNodeButtonShapeId = elementId;                        break;                    }                }                if(treeNodeButtonShapeId == '') continue;                $ax.tree.SelectTreeNode(elementId, enabled);            } else if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsTableCell(widgetType) || $ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)                || $ax.public.fn.IsTextArea(widgetType) || $ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsListBox(widgetType) || $ax.public.fn.IsComboBox(widgetType)) {                $ax.style.SetWidgetSelected(elementIds[index], enabled);            } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) {                var query = $jobj($ax.INPUT(elementId));                var curr = query.prop('checked');                //NOTE: won't fire onselect nore onunselect event if states didn't changes                if(curr != enabled) {                    query.prop('checked', enabled);                    $ax.style.SetWidgetSelected(elementIds[index], enabled, true);                }            }        }        return this;    };    $ax.public.fn.focus = function() {        var firstId = this.getElementIds()[0];        var focusableId = $ax.event.getFocusableWidgetOrChildId(firstId);        // This will scroll but not focus        $('#' + focusableId).triggerHandler("focus");        // This will focus but does not call our custom scroll so will not animate scroll        $('#' + focusableId).focus();        return this;    };    $ax.public.fn.expanded = function() {        if(arguments[0] == undefined) {            var firstId = this.getElementIds()[0];            return firstId && !$ax.public.fn.IsTreeNodeObject($ax.getTypeFromElementId(firstId)) && $ax.visibility.IsIdVisible(firstId + '_children');        } else {            var elementIds = this.getElementIds();            for(var index = 0; index < elementIds.length; index++) {                if ($ax.public.fn.IsTreeNodeObject($ax.getTypeFromElementId(elementIds[index]))) {                    var treeNodeId = elementIds[index];                    var childContainerId = treeNodeId + '_children';                    var scriptId = $ax.repeater.getScriptIdFromElementId(treeNodeId);                    var itemId = $ax.repeater.getItemIdFromElementId(treeNodeId);                    var plusMinusId = 'u' + (parseInt(scriptId.substring(1)) + 1);                    if(itemId) plusMinusId = $ax.repeater.createElementId(plusMinusId, itemId);                    if($('#' + childContainerId).length == 0 || !$jobj(plusMinusId).children().first().is('img'))                        plusMinusId = '';                    if(arguments[0] == true) {                        $ax.tree.ExpandNode(treeNodeId, childContainerId, plusMinusId);                    } else if(arguments[0] == false) {                        $ax.tree.CollapseNode(treeNodeId, childContainerId, plusMinusId);                    }                }            }            return this;        }    };    var _populateBoundingRect = function (boundingRect) {        boundingRect.right = boundingRect.left + boundingRect.width;        boundingRect.bottom = boundingRect.top + boundingRect.height;        boundingRect.x = boundingRect.left;        boundingRect.y = boundingRect.top;        boundingRect.location = {            x: boundingRect.left,            y: boundingRect.top,            left: boundingRect.left,            top: boundingRect.top        };        boundingRect.size = {            width: boundingRect.width,            height: boundingRect.height        };        boundingRect.centerPoint = {            x: boundingRect.width / 2 + boundingRect.left,            y: boundingRect.height / 2 + boundingRect.top        };        return boundingRect;    }    //boundingrect relative to its offset parent    //var _getBoundingRectForSingleWidget = function (elementId) {    //    var element = document.getElementById(elementId);    //    var tempBoundingRect, position;    //    var state = $ax.style.generateState(elementId);    //    var style = $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId);    //    position = { left: style.location.x, top: style.location.y };    //    tempBoundingRect = { left: style.location.x, top: style.location.y, width: style.size.width, height: style.size.height };    //    if ($ax.public.fn.isCompoundVectorHtml(element)) {    //        tempBoundingRect.width = Number(element.getAttribute('data-width'));    //        tempBoundingRect.height = Number(element.getAttribute('data-height'));    //    } else {    //        var boundingElement = element;    //        if ($ax.dynamicPanelManager.isIdFitToContent(elementId)) {    //            var stateId = $ax.visibility.GetPanelState(elementId);    //            if (stateId != '') boundingElement = document.getElementById(stateId);    //            tempBoundingRect = boundingElement.getBoundingClientRect();    //        }    //        //From getLoc    //        //var fixed = _fixedOffset(id, vert);    //        //if (fixed.valid) loc = !vert && fixed.fullWidth ? 0 : fixed.offset;    //        var jElement = $(element);    //        if (jElement.css('position') == 'fixed') {    //            position = jElement.position();    //            position.left += Number(jElement.css('margin-left').replace("px", ""));    //            position.top += Number(jElement.css('margin-top').replace("px", ""));    //        }    //    }            //    var boundingRect = {    //        left: position.left,    //        top: position.top,    //        width: tempBoundingRect.width,    //        height: tempBoundingRect.height    //    };            //    return _populateBoundingRect(boundingRect);    //};    //var _getBoundingRectForMultipleWidgets = function (widgetsIdArray) {    //    if (!widgetsIdArray || widgetsIdArray.constructor !== Array) return undefined;    //    if (widgetsIdArray.length == 0) return { left: 0, top: 0, centerPoint: { x: 0, y: 0 }, width: 0, height: 0 };    //    var widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[0]);    //    var boundingRect = { left: widgetRect.left, right: widgetRect.right, top: widgetRect.top, bottom: widgetRect.bottom };    //    for (var index = 1; index < widgetsIdArray.length; index++) {    //        widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[index]);    //        boundingRect.left = Math.min(boundingRect.left, widgetRect.left);    //        boundingRect.top = Math.min(boundingRect.top, widgetRect.top);    //        boundingRect.right = Math.max(boundingRect.right, widgetRect.right);    //        boundingRect.bottom = Math.max(boundingRect.bottom, widgetRect.bottom);    //    }    //    boundingRect.centerPoint = { x: (boundingRect.right + boundingRect.left) / 2.0, y: (boundingRect.bottom + boundingRect.top) / 2.0 };    //    boundingRect.width = boundingRect.right - boundingRect.left;    //    boundingRect.height = boundingRect.bottom - boundingRect.top;    //    return _populateBoundingRect(boundingRect);    //};    //var _getLayerChildrenDeep = $ax.public.fn.getLayerChildrenDeep = function (layerId, includeLayers, includeHidden) {    //    var deep = [];    //    var children = $ax('#' + layerId).getChildren()[0].children;    //    for (var index = 0; index < children.length; index++) {    //        var childId = children[index];    //        if (!includeHidden && !$ax.visibility.IsIdVisible(childId)) continue;    //        if ($ax.public.fn.IsLayer($obj(childId).type)) {    //            if (includeLayers) deep.push(childId);    //            var recursiveChildren = _getLayerChildrenDeep(childId, includeLayers, includeHidden);    //            for (var j = 0; j < recursiveChildren.length; j++) deep.push(recursiveChildren[j]);    //        } else deep.push(childId);    //    }    //    return deep;    //};    var _boundingRectForIds = function(childIds) {        // Default size        var childrenBoundingRect = { left: childIds.length > 0 ? 9999999 : 0, top: childIds.length > 0 ? 9999999 : 0, right: 0, bottom: 0 };        for (var i = 0; i < childIds.length; i++) {            var childId = childIds[i];            var childObj = $obj(childId);            if (!childObj) continue;            // Ignore fixed and hidden            if ($ax.visibility.limboIds[childId] ||                !$ax.visibility.IsIdVisible(childId) ||                $ax.public.fn.IsDynamicPanel(childObj.type) && childObj.fixedHorizontal) continue;            var boundingRect = $ax('#' + childId).offsetBoundingRect();            // Ignore empty groups            if ($ax.public.fn.IsLayer(childObj.type) && boundingRect.width == 0 && boundingRect.height == 0) continue;            childrenBoundingRect.left = Math.min(childrenBoundingRect.left, boundingRect.left);            childrenBoundingRect.top = Math.min(childrenBoundingRect.top, boundingRect.top);            childrenBoundingRect.right = Math.max(childrenBoundingRect.right, boundingRect.right);            childrenBoundingRect.bottom = Math.max(childrenBoundingRect.bottom, boundingRect.bottom);        }        childrenBoundingRect.width = childrenBoundingRect.right - childrenBoundingRect.left;        childrenBoundingRect.height = childrenBoundingRect.bottom - childrenBoundingRect.top;        return _populateBoundingRect(childrenBoundingRect);    }    $ax.public.fn.getPageSize = function() {        var containerQuery = $('#base');        var children = containerQuery.children();        var childIds = [];        for (var i = 0; i < children.length; i++) {            var child = $(children[i]);            var childId = child.attr('id');            childIds.push(childId);        }        return _boundingRectForIds(childIds);    }    $ax.public.fn.childrenBoundingRect = function () {                var childIds = this.getChildren()[0].children;        return _boundingRectForIds(childIds);    };    var _fixedLocation = function (elementId, size) {        var axObj = $obj(elementId);        if (!axObj || !axObj.fixedVertical) return { valid: false };        var win = ((SAFARI && IOS) || SHARE_APP) ? $('#ios-safari-html') : $(window);        var windowWidth = win.width();        var windowHeight = win.height();        //getting the scroll forces layout. consider caching these values.        var windowScrollLeft = win.scrollLeft();        var windowScrollTop = win.scrollTop();        var newLeft = 0;        var newTop = 0;        var width = size.width;        var height = size.height;        var horz = axObj.fixedHorizontal;        if(horz == 'left') {            newLeft = windowScrollLeft + (axObj.percentWidth ? 0 : $ax.getNumFromPx($jobj(elementId).css('left')));        } else if(horz == 'center') {            newLeft = windowScrollLeft + ((windowWidth - width) / 2) + axObj.fixedMarginHorizontal;        } else if(horz == 'right') {            newLeft = windowScrollLeft + windowWidth - width - axObj.fixedMarginHorizontal;        }        var vert = axObj.fixedVertical;        if(vert == 'top') {            newTop = windowScrollTop + $ax.getNumFromPx($jobj(elementId).css('top'));        } else if(vert == 'middle') {            newTop = windowScrollTop + ((windowHeight - height) / 2) + axObj.fixedMarginVertical;        } else if(vert == 'bottom') {            newTop = windowScrollTop + windowHeight - height - axObj.fixedMarginVertical;        }        //probably need to make this relative to the page for hit testing        return { valid: true, top: newTop, left: axObj.isPercentWidthPanel ? 0 : newLeft };    };    //relative to the parent    $ax.public.fn.offsetBoundingRect = function (ignoreRotation) {        var elementId = this.getElementIds()[0];        if (!elementId) return undefined;                //element is null if RDO        //data- values are for layers (legacy compound)         var element = document.getElementById(elementId);        var position, size, rotation;        var trap;        var state;        var style;        var movedLoc = $ax.visibility.getMovedLocation(elementId);        var resizedSize = $ax.visibility.getResizedSize(elementId);                if (movedLoc) {            position = movedLoc;        } else if(element && element.getAttribute('data-left')) {            position = {                left: Number(element.getAttribute('data-left')),                top: Number(element.getAttribute('data-top'))            };        } else if($obj(elementId)) {            state = $ax.style.generateState(elementId);            style = $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId);            position = { left: style.location.x, top: style.location.y };            var oShadow = style.outerShadow;            if (oShadow.on) {                if (oShadow.offsetX < 0) {                    position.left += oShadow.offsetX;                    position.left -= oShadow.blurRadius;                }                if (oShadow.offsetY < 0) {                    position.top += oShadow.offsetY;                    position.top -= oShadow.blurRadius;                }            }            var parents = this.getParents(true, '*')[0];            //if(parents.length > 0) {            //    var parentId = parents[0];            //    var type = $ax.getTypeFromElementId(parentId);            //    if ($axure.fn.IsReferenceDiagramObject(type)) {            //        var rdoLoc = $ax('#' + parentId).offsetLocation();            //        position.left += rdoLoc.x;            //        position.top += rdoLoc.y;            //    }            //}            for(var i = 0; i < parents.length; i++) {                var parentId = parents[i];                var type = $ax.getTypeFromElementId(parentId);                if ($axure.fn.IsReferenceDiagramObject(type)) {                    var rdoLoc = $ax('#' + parentId).offsetLocation();                    position.left += rdoLoc.x;                    position.top += rdoLoc.y;                    break;                } else if (!$axure.fn.IsLayer(type)) break;            }        } else {            if (!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId));            var jObjPosition = $(element).position();            position = { left: jObjPosition.left, top: jObjPosition.top };        }        if (resizedSize) {            size = resizedSize;        } else if (element && element.getAttribute('data-width')) {            size = {                width: Number(element.getAttribute('data-width')),                height: Number(element.getAttribute('data-height'))            };        } else if($obj(elementId)) {            state = state || $ax.style.generateState(elementId);            style = style || $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId);            size = { width: style.size.width, height: style.size.height };            var oShadow = style.outerShadow;            if (oShadow.on) {                if (oShadow.offsetX < 0) size.width -= oShadow.offsetX;                else size.width += oShadow.offsetX;                if (oShadow.offsetY < 0) size.height -= oShadow.offsetY;                else size.height += oShadow.offsetY;                size.width += oShadow.blurRadius;                size.height += oShadow.blurRadius;            }        } else {            if(!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId));            var jObj = $(element);            size = { width: jObj.outerWidth(), height: jObj.outerHeight() };        }                var fixed = _fixedLocation(elementId, size);        if(fixed.valid) {            position.left = fixed.left;            position.top = fixed.top;        }        var boundingRect = {            left: position.left,            top: position.top,            width: size.width,            height: size.height,            isFixed: fixed.valid        };        if(!ignoreRotation) {            var rotatedAngle = $ax.visibility.getRotatedAngle(elementId);            if(rotatedAngle) {                rotation = rotatedAngle;            } else if(element && element.getAttribute('data-rotation')) {                rotation = Number(element.getAttribute('data-rotation'));            } else if($obj(elementId)) {                state = state || $ax.style.generateState(elementId);                style = style || $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId);                rotation = style.rotation;            } else {                if (!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId));                rotation = $ax.move.getRotationDegreeFromElement(element);            }            if(rotation && rotation != 0)                boundingRect = $ax.public.fn.getBoundingRectForRotate(_populateBoundingRect(boundingRect), rotation);        }        if (trap) trap();        return _populateBoundingRect(boundingRect);    };    //relative to the page    $ax.public.fn.pageBoundingRect = function (ignoreRotation, scrollableId) {        var boundingRect = this.offsetBoundingRect(ignoreRotation);        if(!boundingRect) return undefined;        if(boundingRect.isFixed) return _populateBoundingRect(boundingRect);        var loc = boundingRect.location;        //var parents = [];        //var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent        //while ($ax.public.fn.IsContainer(parObj.type)) {        //    parents.push($ax.getScriptIdFromPath([parObj.id], strippedId));        //    parObj = parObj.parent;        //}        //var otherParents = $ax('#' + id).getParents(true, ['item', 'repeater', 'dynamicPanel', 'layer'])[0];        //for (var i = 0; i < otherParents.length; i++) {        //    parents.push(otherParents[i]);        //}        var elementId = this.getElementIds()[0];        //    var strippedId = $ax.repeater.removeSuffixFromElementId(id);        //        var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent        var parentIds = [];        var parObj = $obj(elementId).parent;        while ($ax.public.fn.IsContainer(parObj.type)) {            parentIds.push($ax.getScriptIdFromPath([parObj.id], this.id));            parObj = parObj.parent;        }        var otherParents = $ax('#' + elementId).getParents(true, ['item', 'repeater', 'dynamicPanel'])[0];        for (var i = 0; i < otherParents.length; i++) {            parentIds.push(otherParents[i]);        }        var parentScrollableId = scrollableId ? scrollableId.split('_')[0] : scrollableId;        for (var i = 0; i < parentIds.length; i++) {            //var parentId = $ax.visibility.getWidgetFromContainer(parents[0]);            //var parent = $ax.visibility.applyWidgetContainer(parentId, true);            //if(parent.length) {            //var parentId = parentIds[i];            //var fixed = _fixedOffset(parentId, vert);            //if (fixed.valid) {            //    loc += fixed.offset;            //    break;            //} else loc += $ax.getNumFromPx(parent.css(prop));            //}                        var parentId = parentIds[i];            if (parentId == parentScrollableId) break;            var parentLoc = $ax('#' + parentId).offsetLocation();            loc = {                 x: loc.x + parentLoc.x,                y: loc.y + parentLoc.y,                left: loc.left + parentLoc.left,                top: loc.top + parentLoc.top,             }            var axObj = $obj(parentId);            if(axObj && axObj.fixedVertical) {                boundingRect.isFixed = true;                break;            }        }        boundingRect.left = loc.x;        boundingRect.top = loc.y;        return _populateBoundingRect(boundingRect);    };    $ax.public.fn.viewportBoundingRect = function (scrollableId) {        var boundingRect = this.pageBoundingRect(true, scrollableId);        if (!boundingRect) return undefined;        if(!boundingRect.isFixed) boundingRect.left = _bodyToWorld(boundingRect.left, false);        return _populateBoundingRect(boundingRect);    }    $ax.public.fn.size = function () {        var boundingRect = this.offsetBoundingRect(true);        return boundingRect ? boundingRect.size : undefined;        //var firstId = this.getElementIds()[0];        //if(!firstId) return undefined;        //var object = $ax.getObjectFromElementIdDisregardHex(firstId);        //if(object && (object.type == 'layer' || object.generateCompound)) {        //    var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId);        //    return { width: boundingRect.width, height: boundingRect.height };        //}        //var firstIdObject = $jobj(firstId);        //var trap = _displayWidget($ax.repeater.removeSuffixFromElementId(firstId));        //var size = { width: firstIdObject.outerWidth(), height: firstIdObject.outerHeight() };        //trap();        //return size;    };    $ax.public.fn.width = function () {        var boundingRect = this.offsetBoundingRect(true);        return boundingRect ? boundingRect.width : undefined;        //var firstId = this.getElementIds()[0];        //if(!firstId) return undefined;        //var object = $ax.getObjectFromElementIdDisregardHex(firstId);        //if (object && (object.type == 'layer' || object.generateCompound)) {        //    var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId);        //    return boundingRect.width;        //}        //var firstIdObject = $jobj(firstId);        //return firstIdObject.outerWidth();    };    $ax.public.fn.height = function () {        var boundingRect = this.offsetBoundingRect(true);        return boundingRect ? boundingRect.height : undefined;        //var firstId = this.getElementIds()[0];        //if(!firstId) return undefined;        //var object = $ax.getObjectFromElementIdDisregardHex(firstId);        //if (object && (object.type == 'layer' || object.generateCompound)) {        //    var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId);        //    return boundingRect.height;        //}        //var firstIdObject = $jobj(firstId);        //return firstIdObject.outerHeight();    };    //this should replace locRelativeIgnoreLayer    $ax.public.fn.offsetLocation = function () {        var boundingRect = this.offsetBoundingRect(true);        return boundingRect ? boundingRect.location : undefined;    };    //$ax.public.fn.offsetLeft = function () {    //    var boundingRect = this.offsetBoundingRect();    //    return boundingRect ? boundingRect.left : undefined;    //};    //$ax.public.fn.offsetTop = function () {    //    var boundingRect = this.offsetBoundingRect();    //    return boundingRect ? boundingRect.top : undefined;    //};    $ax.public.fn.viewportLocation = function (scrollableId) {        var boundingRect = this.viewportBoundingRect(scrollableId);        return boundingRect ? boundingRect.location : undefined;    };    //$ax.public.fn.pageLeft = function () {    //    var boundingRect = this.pageBoundingRect();    //    return boundingRect ? boundingRect.left : undefined;    //};    //$ax.public.fn.pageTop = function () {    //    var boundingRect = this.pageBoundingRect();    //    return boundingRect ? boundingRect.top : undefined;    //};    //This is getting its position in the Editor    //It was needed because the widget would be contained so getting the position from jQuery would not be accurate    //This can use the editor values    //$ax.public.fn.locRelativeIgnoreLayer = function (vert) {    //    var elementId = this.getElementIds()[0];    //    if(!elementId) return undefined;    //    var parents = this.getParents(true, '*')[0];    //    for(var i = 0; i < parents.length; i++) {    //        var type = $ax.getTypeFromElementId(parents[i]);    //        if(!$axure.fn.IsLayer(type) && !$axure.fn.IsReferenceDiagramObject(type)) {    //            var func = vert ? _getRelativeTop : _getRelativeLeft;    //            return func(elementId, $jobj(parents[i])[0]);    //        }    //    }    //    var axThis = $ax('#' + elementId);    //    return vert ? axThis.top() : _bodyToWorld(axThis.left(), true);    //};    var _bodyToWorld = $axure.fn.bodyToWorld = function(x, from) {        var body = $('body');        if (body.css('position') != 'relative') return x;        var offset = $ax.getNumFromPx(body.css('left')) + Math.max(0, ($(window).width() - body.width()) / 2);        if(from) offset *= -1;        return x + offset;    }    $ax.public.fn.left = function (relative) {        return relative ? this.offsetLocation().left : this.viewportLocation().left;        //var firstId = this.getElementIds()[0];        //if(!firstId) return undefined;        //var left = _getLoc(firstId, false, false, relative);        //// If you are absolute, unless your are a pinned panel...        //if(relative || $obj(firstId) && $obj(firstId).fixedVertical) return left;        //// ... or you are in one...        //var parentPanels = $ax('#' + firstId).getParents(true, 'dynamicPanel')[0];        //for(var i = 0; i < parentPanels.length; i++) if ($obj(parentPanels[i]).fixedVertical) return left;        //// ... you must convert from body to world coordinates        //return _bodyToWorld(left);    };    $ax.public.fn.top = function(relative) {        return relative ? this.offsetLocation().top : this.viewportLocation().top;        //var firstId = this.getElementIds()[0];        //return firstId && _getLoc(firstId, true, false, relative);    };    //var _getLoc = function(id, vert, high, relative) {    //    var mathFunc = high ? 'max' : 'min';    //    var prop = vert ? 'top' : 'left';    //    var dim = vert ? 'height' : 'width';    //    var obj = $jobj(id);    //    var strippedId = $ax.repeater.removeSuffixFromElementId(id);    //    var axObj = $obj(strippedId);    //    var oldDisplay = obj.css('display');    //    var displaySet = false;    //    if(oldDisplay == 'none') {    //        obj.css('display', '');    //        displaySet = true;    //    }    //    var loc = Math.NaN;    //    var rdo = axObj.type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE;    //    if (!rdo) loc = $ax.getNumFromPx(obj.css(prop));    //    var fixed = _fixedOffset(id, vert);    //    if(fixed.valid) loc = !vert && fixed.fullWidth ? 0 : fixed.offset;    //    else if (!relative) {    //        var parents = [];    //        var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent    //        while($ax.public.fn.IsContainer(parObj.type)) {    //            parents.push($ax.getScriptIdFromPath([parObj.id], strippedId));    //            parObj = parObj.parent;    //        }    //        var otherParents = $ax('#' + id).getParents(true, ['item', 'repeater', 'dynamicPanel', 'layer'])[0];    //        for(var i = 0; i < otherParents.length; i++) {    //            parents.push(otherParents[i]);    //        }    //        for(var i = 0; i < parents.length; i++) {    //            var parentId = $ax.visibility.getWidgetFromContainer(parents[i]);    //            var parent = $ax.visibility.applyWidgetContainer(parentId, true);    //            // Layer may not have container, and will be at 0,0 otherwise.    //            if (!parent.length) continue;    //            fixed = _fixedOffset(parentId, vert);    //            if(fixed.valid) {    //                loc += fixed.offset;    //                break; // If fixed ignore any parents if there are any, they don't matter.    //            } else loc += $ax.getNumFromPx(parent.css(prop));    //        }    //    }    //    if (high) loc += obj[dim]();    //    // Special Layer code    //    if (axObj.type == 'layer') {    //        // If layer has a container, then use that. Otherwise must deal with children. Children can move in container after created, but ignoring for now.    //        var container = $ax.visibility.applyWidgetContainer(id, true, true);    //        if(container.length) loc += $ax.getNumFromPx(container.css(prop));    //        else loc += (_getChildLoc(axObj.objs, vert, high, dim, true, id) || 0);    //    }    //    if(displaySet) obj.css('display', oldDisplay);    //    return loc;    //};    //var _getChildLoc = function (children, vert, high, dim, root, path, itemId) {    //    if (typeof (path) == 'string') {    //        itemId = $ax.repeater.getItemIdFromElementId(path);    //        path = $ax.getPathFromScriptId(path);    //        path.pop(); // Remove object id, only want rdo path.    //    }    //    var mathFunc = high ? 'max' : 'min';    //    var childLoc = NaN;    //    for (var i = 0; i < children.length; i++) {    //        var childObj = children[i];    //        var childId = $ax.getElementIdFromPath([childObj.id], { relativeTo: path });    //        if (!childId) continue;    //        childId = $ax.repeater.createElementId(childId, itemId);    //        if($ax.public.fn.IsReferenceDiagramObject(childObj.type)) {    //            path.push(childObj.id);    //            var childProp = _getChildLoc($ax.pageData.masters[$obj(childId).masterId].diagram.objects, vert, high, dim, false, path, itemId);    //            path.pop();    //            if(isNaN(childProp)) continue;    //        } else if($ax.public.fn.IsLayer(childObj.type)) {    //            childProp = _getChildLoc(childObj.objs, vert, high, dim, false, path, itemId);    //        } else {    //            if(!$ax.visibility.IsIdVisible(childId)) continue;    //            childProp = $ax('#' + childId).locRelativeIgnoreLayer(vert);    //            if(high) childProp += $jobj(childId)[dim]();    //        }    //        if(isNaN(childLoc)) childLoc = childProp;    //        else if(!isNaN(childProp)) childLoc = Math[mathFunc](childLoc, childProp);    //    }    //    return root && isNaN(childLoc) ? 0 : childLoc;    //};    //var _fixedOffset = function (id, vert) {    //    var axObj = $obj(id);    //    //I think this is only for pinned panels? So why are we coming through here for rtps?    //    if(!axObj) return { valid: false };    //    var dim = vert ? 'height' : 'width';    //    var alignment = axObj['fixed' + (vert ? 'Vertical' : 'Horizontal')];    //    if(!alignment) return { valid: false };    //    var loc = 0;    //    // TODO: This returns 0 for width/height it or any parent is display none. Similar issue when using axquery width/height    //    // TODO:  Look into replacing this with axquery width/height and fixing that to use this hack. Potentially want to make js generic trapper.    //    var trap = _displayWidget(id);    //    var query = $jobj(id);    //    var objSize = query[dim]();    //    trap();    //    if(alignment == 'center' || alignment == 'middle') {    //        loc = $ax.getNumFromPx(query.css('margin-' + (vert ? 'top' : 'left')));    //        loc += ($(window)[dim]()) / 2;    //    } else if(alignment == 'bottom' || alignment == 'right') {    //        loc = $ax.getNumFromPx(query.css(vert ? 'bottom' : 'right'));    //        loc = $(window)[dim]() - objSize - loc; // subract loc because margin here moves farther left/up as it gets bigger.    //    } else {    //        loc = $ax.getNumFromPx(query.css(vert ? 'top' : 'left'));    //    }    //    var scrollKey = 'scroll' + (vert ? 'Top' : 'Left');    //    return { offset: $(window)[scrollKey]() + loc, valid: true, fullWidth: axObj.percentWidth == 1 };    //};    var _displayWidget = function(id) {        var parents = $ax('#' + id).getParents(true, '*')[0];        parents.push(id); // also need to show self        var displayed = [];        for(var i = 0; i < parents.length; i++) {            var currId = parents[i];            var currObj = $jobj(currId);            if(currObj.css('display') == 'none') {                currObj.css('display', 'block');                displayed.push(currId);            }        }        return function() {            for(var i = 0; i < displayed.length; i++) {                $jobj(displayed[i]).css('display', 'none');            }        };    }});
 |