Lines Matching +full:demo +full:- +full:job

4  * $Date: 2014-08-30 08:00:00 (Sat, 30 Aug 2014) $
7 * Copyright (c) 2014 Kevin Dalman (http://jquery-dev.com)
11 * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
13 * SEE: http://layout.jquery-dev.com/LICENSE.txt
15 * Changelog: http://layout.jquery-dev.com/changelog.cfm
17 * Docs: http://layout.jquery-dev.com/documentation.html
18 * Tips: http://layout.jquery-dev.com/tips.html
19 * Help: http://groups.google.com/group/jquery-ui-layout
22 /* JavaDoc Info: http://code.google.com/closure/compiler/docs/js-for-compiler.html
23 * {!Object} non-nullable type (never NULL)
24 * {?string} nullable type (sometimes NULL) - default for {Object}
30 * check $.fn.disableSelection - this is in jQuery UI 1.9.x
33 // NOTE: For best readability, view with a fixed-width font and tabs equal to 4-chars
37 // alias Math methods - used a lot!
64 * GENERIC $.layout METHODS - used by all layouts
69 , revision: 1.0403 // eg: 1.4.1 final = 1.0401 - major(n+).minor(nn)+patch(nn+)
75 // MUST list effect here - OR MUST set an fxSettings option (can be an empty hash: {})
110 // INTERNAL CONFIG DATA - DO NOT CHANGE THIS!
122 , offscreenCSS: { left: "-99999px", right: "auto" } // used by hide/close if useOffscreenClose=true
134 , textAlign: "left" // to counter-act "center" alignment!
135 , overflow: "hidden" // prevent toggler-button from overflowing
138 , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
155 , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
163 , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
167 , cssDemoPane: { // DEMO CSS - REMOVE scrolling from 'pane' when it has a content-div
172 , panes: { // defaults for ALL panes - overridden by 'per-pane settings' below
178 , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
250 // CALLBACK FUNCTION NAMESPACE - used to store reusable callback functions
259 // see if this container is directly-nested inside an outer-pane
292 $.layout.msg('LAYOUT ERROR - Invalid pane-name: "'+ pane +'"');
299 // LAYOUT-PLUGIN REGISTRATION
309 // arrays of plugin or other methods to be triggered for events in *each layout* - will be passed '…
310 , onCreate: [] // runs when layout is just starting to be created - right after options are set
312 , onReady: [] // runs after initialization *completes* - ie, after initPanes completes successfully
326 …var $c = $('<div style="position: absolute; top: -10000px; left: -10000px; width: 100px; height: 1…
327 , d = { width: $c.outerWidth - $c[0].clientWidth, height: 100 - $c[0].clientHeight };
358 * @see $.swap() - swaps CSS, runs callback, resets CSS
383 // dimensions hash - start with current data IF passed
414 // calc the TRUE inner-dimensions, even in quirks-mode!
415 d.innerWidth = max(0, d.outerWidth - i.left - i.right);
416 d.innerHeight = max(0, d.outerHeight - i.top - i.bottom);
418 // layoutW/H only differs from innerW/H when in quirks-mode - then is like outerW/H
461 * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
470 , bs = !lb.boxModel ? "border-box" : lb.boxSizing ? $E.css("boxSizing") : "content-box"
476 if (bs !== "border-box")
477 W -= (b($E, "Left") + b($E, "Right"));
478 if (bs === "content-box")
479 W -= (n($E, "paddingLeft") + n($E, "paddingRight"));
487 * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
496 , bs = !lb.boxModel ? "border-box" : lb.boxSizing ? $E.css("boxSizing") : "content-box"
502 if (bs !== "border-box")
503 H -= (b($E, "Top") + b($E, "Bottom"));
504 if (bs === "content-box")
505 H -= (n($E, "paddingTop") + n($E, "paddingBottom"));
510 * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist
513 * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
534 * Mouse-tracking utility - FUTURE REFERENCE
574 * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title
575 * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR-
576 …* @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-da…
579 * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped
580 * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped
609 …$l.children("ul").append('<li style="padding: 4px 10px; margin: 0; border-top: 1px solid #CCC;">'+…
614 …s +'; top: 5px; z-index: 999999; max-width: 25%; overflow: hidden; border: 1px solid #000; border-
615 …+ '<div style="font-size: 13px; font-weight: bold; padding: 5px 10px; background: #F6F6F6; border-
616 …+ '<span style="float: right; padding-left: 7px; cursor: pointer;" title="Remove Console" onclick=…
617 …+ '<ul style="font-size: 13px; font-weight: none; list-style: none; margin: 0; padding: 0 0 2px;">…
620 $e.css('left', $(window).width() - $e.outerWidth() - 5)
621 if ($.ui.draggable) $e.draggable({ handle: ':first-child' });
654 // ONLY IE reverts to old box-model - Note that compatMode was deprecated as of IE8
661 * so if this is IE, use support.boxModel to test for quirks-mode (ONLY IE changes boxModel) */
669 * LAYOUT & LAYOUT-CONTAINER OPTIONS
670 * - none of these options are applicable to individual panes
672 name: "" // Not required, but useful for buttons and used for the state-cookie
673 , containerClass: "ui-layout-container" // layout-container element
674 , inset: null // custom container-inset values (override padding)
678 , resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized
679 , maskPanesEarly: false // true = create pane-masks on resizer.mouseDown instead of waiting for…
680 , onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific
681 , onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific
682 , onload_start: null // CALLBACK when Layout inits - after options initialized, but before elem…
683 , onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized
686 , initPanes: true // false = DO NOT initialize the panes onLoad - will init later
688 , showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has…
690 , zIndex: null // the PANE zIndex - resizers and masks will be +1
692 , zIndexes: { // set _default_ z-index values here...
693 pane_normal: 0 // normal z-index for panes
695 , resizer_normal: 2 // normal z-index for resizer-bars
697 , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer
698 , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged'
701 pane: "pane" // description of "layout pane element" - used only in error messages
702 , selector: "selector" // description of "jQuery-selector" - used only in error messages
704 …, containerMissing: "UI Layout Initialization Error\nThe specified layout-container does not exis…
705 …neMissing: "UI Layout Initialization Error\nThe center-pane element does not exist.\nThe center-p…
706 …I Layout Initialization Warning\nThe layout-container \"CONTAINER\" has no height.\nTherefore the …
711 * - settings under the 'panes' key become the default settings for *all panes*
712 …* - ALL pane-options can also be set specifically for each panes, which will override these 'defau…
714 , panes: { // default options for 'all panes' - will be overridden by 'per-pane settings'
718 , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out
720 , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing
722 //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane
723 …, contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not…
724 , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content'
726 // GENERIC ROOT-CLASSES - for auto-generated classNames
727 , paneClass: "ui-layout-pane" // Layout Pane
728 , resizerClass: "ui-layout-resizer" // Resizer Bar
729 , togglerClass: "ui-layout-toggler" // Toggler Button
730 …, buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-clos…
732 //, size: 100 // MUST be pane-specific -initial size of pane
735 , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open'
736 , spacing_closed: 6 // ditto - when pane is 'closed'
737 …, togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on e…
738 …, togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hi…
740 …, togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom…
746 …, autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? F…
748 //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar
749 , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES
750 … maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets…
751 …ndex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes
752 , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20]
754 , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged
757 , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding'
760 , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open
762 , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show?
764 …ematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE
765 // PANE-SPECIFIC TIPS & MESSAGES
772 , Unpin: "Un-Pin"
777 // HOT-KEYS & MISC
780 //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character
781 , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT'
783 …// NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not …
784 …, fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'clos…
785 , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration
787 , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation
788 …, animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() i…
789 …/* NOTE: Action-specific FX options are auto-generated from the options above if not specifically…
792 fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true
801 , children: null // Layout-options for nested/child layout - even {} is valid as options
804 , destroyChildren: true // true = destroy child-layout if this pane is destroyed
805 , resizeChildren: true // true = trigger child-layout.resizeAll() when this pane is resized
810 , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start
811 , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end
812 , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start
813 , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end
820 , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS
821 , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS
828 * PANE-SPECIFIC SETTINGS
829 * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes'
830 * - all options under the 'panes' key can also be set specifically for any pane
831 * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane
834 paneSelector: ".ui-layout-north"
836 , resizerCursor: "n-resize" // custom = url(myCursor.cur)
840 paneSelector: ".ui-layout-south"
842 , resizerCursor: "s-resize"
846 paneSelector: ".ui-layout-east"
848 , resizerCursor: "e-resize"
852 paneSelector: ".ui-layout-west"
854 , resizerCursor: "w-resize"
858 paneSelector: ".ui-layout-center"
865 // layout/global options - NOT pane-options
871 // default.panes options that apply to the center-pane (most options apply _only_ to border-panes)
876 // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key
881 * Processes options passed in converts flat-format data into subkey (JSON) format
882 * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName
885 * @param {!Object} hash Data/options passed by user - may be a single level or nested levels
895 // convert all 'flat-keys' to 'sub-key' format
900 c = keys.length - 1;
901 // convert underscore-delimited to subkeys
913 // recurse to sub-key for next loop - if not done
921 // INTERNAL CONFIG DATA - DO NOT CHANGE THIS!
979 , c = a.length - 1
984 if (D.branch[ k ] == undefined) { // child-key does not exist
986 D.branch = D.branch[ k ] = {}; // create child-branch
992 D.branch = D.branch[ k ]; // get child-branch
1045 * options - populated by initOptions()
1051 * layout-state object
1075 * parent/child-layout pointers
1077 //, hasParentLayout = false - exists ONLY inside Instance so can be set externally
1102 * Alert or console.log a message - IF option is enabled.
1104 * @param {(string|!Object)} msg Message (or debug-data) to display
1120 …n)=} [skipBoundEvents=false] True = do not run events bound to the elements - only the callbacks s…
1129 , shrt = lng.match(/_end$/) ? lng.substr(0, lng.length - 4) : ""
1161 // pass data: pane-name, pane-element, pane-state, pane-options, and layout-name
1163 else // must be a layout/container callback - pass suitable info
1176 if ( hasPane ) { // PANE events can be bound to each pane-elements
1183 else { // LAYOUT events can be bound to the container-element
1190 // ALWAYS resizeChildren after an onresize_end event - even during initialization
1191 // IGNORE onsizecontent_end event because causes child-layouts to resize TWICE
1193 resizeChildren(pane+"", true); // compiler hack -force string
1205 if (browser.mozilla) return; // skip FireFox - it auto-refreshes iframes onShow
1233 minWidth: 1001 - cssW($P, 1000)
1234 , minHeight: 1001 - cssH($P, 1000)
1259 if (!browser.mozilla) // FireFox refreshes iframes - IE does not
1282 if (!browser.mozilla) // FireFox refreshes iframes - IE does not
1293 * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated
1305 size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal
1314 …avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_ope…
1316 …avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0…
1318 if (size === -1) // -1 == 100%
1325 // auto-size the pane
1343 …* Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane
1394 // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them
1395 …, limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize…
1403 , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east
1412 case "south": r.min = top + H - maxSize - rW;
1413 r.max = top + H - minSize - rW;
1415 case "east": r.min = left + W - maxSize - rW;
1416 r.max = left + W - minSize - rW;
1437 // calc center-pane outer dimensions
1438 d.width = sC.innerWidth - d.left - d.right; // outerWidth
1439 d.height = sC.innerHeight - d.bottom - d.top; // outerHeight
1461 , _pane = "-"+ pane // eg: "-west"
1462 , _open = "-open"
1463 , _closed = "-closed"
1464 , _slide = "-sliding"
1465 , _hover = "-hover " // NOTE the trailing space
1470 if (allStates) // when 'removing' classes, also remove alternate-state classes
1481 evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar
1494 // ignore closed-panes and mouse moving back & forth over resizer!
1508 timer.clear(name); // cancel enableSelection timer - may re/set below
1510 // enough time for dragging to kick-in and set the isResizing flag
1512 if (!el) // 1st call - mouseleave event
1515 else if (options.maskPanesEarly && !state.paneResizing) // 2nd call - by timer
1526 * Initialize the layout - called automatically whenever an instance of layout is created
1528 * @see none - triggered onInit
1551 // bind hotkey function - keyDown - if required
1581 * Initialize the layout - called automatically whenever an instance of layout is created
1594 // SEE: http://layout.jquery-dev.com/samples/test_popup_window.html
1612 initPanes(); // size & position panes - calls initHandles() - which calls initResizable()
1639 * Initialize nested layouts for a specific pane - can optionally pass layout-options
1642 * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].children
1643 * @return An object pointer to the layout instance created - or null
1657 cos = [ cos ]; // convert a hash to a 1-elem array
1665 // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane
1670 , child = $cont.data("layout") // see if a child-layout ALREADY exists on this element
1675 // set a unique child-instance key for this layout, if not already set
1678 // then see if it also contains state-data for this child-layout
1688 co_sm.autoSave = false; // disable autoSave because saving handled by parent-layout
1689 co_sm.includeChildren = true; // cascade option - FOR NOW
1690 co_sm.autoLoad = $.extend(true, {}, childState); // COPY the state-hash
1699 // add the child and update all layout-pointers
1700 // MAY have already been done by child-layout calling parent.refreshChildren()
1717 else key = key.replace(/[^\w-]/gi, '_').replace(/_{2,}/g, '_'); // ensure is valid as a hash key
1725 * @param {Object=} newChild New child-layout Instance to add to this pane
1743 // see if there is a directly-nested layout inside this pane
1744 // if there is, then there can be only ONE child-layout, so check that...
1752 newChild.hasParentLayout = true; // set parent-flag in child
1753 // instanceKey is a key-name used in both state and children
1755 // set a unique child-instance key for this layout, if not already set
1765 // if newChild was NOT passed - see if there is a child layout NOW
1767 createChildren(pane); // MAY create a child and re-call this method
1775 …// resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay an…
1785 // ALSO set fixed-delay timer, if not already running
1824 // see if this container is a 'pane' inside an outer-layout
1825 , parent = $N.data("parentLayout") // parent-layout Instance
1826 , pane = $N.data("layoutEdge") // pane-name in parent-layout
1836 // try to find a parent-layout
1846 …, layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID
1856 // loop hash and bind all methods - include layoutID namespacing
1865 // set pointers to THIS child-layout (Instance) in parent-layout
1871 // handle props like overflow different for BODY & HTML - has 'system default' values
1882 height: "auto" // FF would return a fixed px-size!
1888 else // handle props normally for non-body elements
1902 // can specify a single number for equal outset all-around
1914 // if HTML has padding, use this as an outer-spacing around BODY
1916 // use padding from parent-elem (HTML) as outset
1925 // can specify a single number for equal outset all-around
1943 // IE6 CANNOT use the trick of setting absolute positioning on all 4 sides - must have 'height'
1952 // convert body padding to an inset option - the border cannot be measured in IE6!
1962 // apply edge-positioning created above
1965 // set current layout-container dimensions
1974 // set current layout-container dimensions
1977 if (sC.innerHeight < 1) // container has no 'height' - warn developer
1982 // if container has min-width/height, then enable scrollbar(s)
1990 * Bind layout hotkeys - if options enabled
2002 return false; // BREAK - binding was done
2015 // reprocess user's layout-options to have correct options sub-key structure
2018 // auto-rename old options for backward compatibility
2021 // if user-options has 'panes' key (pane-defaults), clean it...
2023 // REMOVE any pane-defaults that MUST be set per-pane
2029 // REMOVE any layout-options specified under opts.panes
2037 // MOVE any NON-layout-options from opts-root to opts.panes
2055 // apply 'pane-defaults' to CONFIG.[PANE]
2061 // center-pane uses SOME keys in defaults.panes branch
2064 data = $.layout.optionsMap.center; // list of 'center-pane keys'
2067 // only need to use pane-default if pane-specific value not set
2069 o[key] = d[key]; // pane-default
2073 // border-panes use ALL keys in defaults.panes branch
2074 o = options[pane] = $.extend(true, {}, d, o); // re-apply pane-specific opts AFTER pane-defaults
2076 // ensure all border-pane-specific base-classes exist
2077 if (!o.resizerClass) o.resizerClass = "ui-layout-resizer";
2078 if (!o.togglerClass) o.togglerClass = "ui-layout-toggler";
2080 // ensure we have base pane-class (ALL panes)
2081 if (!o.paneClass) o.paneClass = "ui-layout-pane";
2084 // update options.zIndexes if a zIndex-option specified
2093 // DELETE 'panes' key now that we are done - values were copied to EACH pane
2118 // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects
2133 || null // DEFAULT - let fxSetting.duration control speed
2148 // DONE creating action-specific-settings for this pane,
2149 // so DELETE generic options - are no longer meaningful
2178 // stopPropagation if called by trigger("layoutinitpanes") - use evtPane utility
2181 // NOTE: do north & south FIRST so we can measure their height - do center LAST
2186 // init the pane-handles NOW in case we have to hide or close the pane below
2189 // now that all panes have been initialized and initially-sized,
2197 // size center-pane AGAIN in case we 'closed' a border-pane in loop above
2204 // process pane contents and callbacks, and init/resize child-layout if exists
2211 * Add a pane to the layout - subroutine of initPanes()
2231 // if pane-pointer already exists, remove the old one first
2249 // create alias for pane data in Instance - initHandles will add more
2262 , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
2267 .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles
2268 ….addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-we…
2302 // loop hash and bind all methods - include layoutID namespacing
2307 // see if this pane has a 'scrolling-content element'
2308 initContent(pane, false); // false = do NOT sizeContent() - called later
2311 // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden)
2319 // state for border-panes
2323 s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible!
2325 // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close
2330 …s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or i…
2331 …s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide aut…
2332 s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic
2344 $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes
2357 hide(pane); // will be completely invisible - no resizer or spacing
2359 // make the pane visible - in case was initially hidden
2361 // ELSE setAsOpen() - called later by initHandles()
2363 // RESET visibility now - pane will appear IF display:block
2366 // check option for auto-handling of pop-ups & drop-downs
2383 // see if there is a directly-nested layout inside this pane
2387 // process pane contents and callbacks, and init/resize child-layout if exists
2397 // resize child - IF inner-layout already exists (created before this layout)
2401 // init childLayouts - even if pane is not visible
2421 if (!$P) return; // pane does not exist - skip
2423 // set css-position to account for container borders & padding
2464 if (!$P) return; // pane does not exist - skip
2473 , _pane = "-"+ pane // used for classNames
2474 , _state = (s.isVisible ? "-open" : "-closed") // used for classNames
2486 …Selector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer"
2487 .attr("id", paneId ? paneId +"-resizer" : "" )
2490 , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
2495 .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles
2497 ….hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handl…
2499 .mousedown($.layout.disableTextSelection) // prevent text-selection OUTSIDE resizer
2504 $R.disableSelection(); // prevent text-selection INSIDE resizer
2509 …elector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler"
2510 .attr("id", paneId ? paneId +"-toggler" : "" )
2513 , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
2518 .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles
2520 ….hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handl…
2524 // ADD INNER-SPANS TO TOGGLER
2525 if (o.togglerContent_open) // ui-layout-open
2533 .addClass("content content-open")
2536 //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead!
2538 if (o.togglerContent_closed) // ui-layout-closed
2544 .addClass("content content-closed")
2547 //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead!
2556 // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open"
2572 * Initialize scrolling ui-layout-content div - if exists
2574 * @see initPane() - or externally after an Ajax injection
2588 ? $P.find(sel).eq(0) // match 1-element only
2598 $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div
2601 // ensure no vertical scrollbar on pane - will mess up measurements
2615 * Add resize-bars to all panes that specify it in options
2616 * -dependancy: $.fn.resizable - will skip if not found
2641 , lastPos = 0 // used when live-resizing
2643 // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process
2644 , resizerClass = base+"-drag" // resizer-drag
2645 , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag
2646 // 'helper' class is applied to the CLONED resizer-bar while it is being dragged
2647 , helperClass = base+"-dragging" // resizer-dragging
2648 , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging
2649 , helperLimitClass = base+"-dragging-limit" // resizer-drag
2650 , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag
2656 .css("cursor", o.resizerCursor); // n-resize, s-resize, etc
2664 // basic format for helper - style it using class: .ui-draggable-dragging
2667 , addClasses: false // avoid ui-state-disabled class when disabled
2675 // re-read options
2678 // ondrag_start callback - will CANCEL hide if returns false
2686 // SET RESIZER LIMITS - used in drag()
2692 helperClassesSet = false; // reset logic var - see drag()
2700 //$(".ui-draggable-dragging")
2704 .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar
2707 // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane!
2710 // CONTAIN RESIZER-BAR TO RESIZING LIMITS
2714 limit = -1;
2720 // ADD/REMOVE dragging-limit CLASS
2722 ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit
2726 ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit
2731 if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) {
2738 $('body').enableSelection(); // RE-ENABLE TEXT SELECTION
2752 * Sub-routine called from stop() - and drag() if livePaneResizing
2769 case "south": resizerPos = sC.layoutHeight - dragPos.top - o.spacing_open; break;
2770 case "east": resizerPos = sC.layoutWidth - dragPos.left - o.spacing_open; break;
2773 var newSize = resizerPos - sC.inset[c.side];
2778 if (Math.abs(newSize - s.size) < o.liveResizingTolerance)
2789 if (s.isSliding) // RE-SHOW 'object-masks' so objects won't show through sliding pane
2798 * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane
2806 // only masks over an IFRAME-pane need manual resizing
2842 panes.push( _c.oppositeEdge[pane] ); // ADD the oppositeEdge-pane
2866 // ensure no pane is resizing - could be a timing issue
2872 var i = $Ms.length - 1
2874 for (; i >= 0; i--) {
2924 el.className = "ui-layout-mask ui-layout-mask-"+ pane; // for user styling
2930 if (isIframe) { // IFRAME-only props
2936 //el.allowTransparency = true; - for IE, but breaks masking ability!
2938 else { // DIV-only props
2944 // NOTE sizing done by a subroutine so can be called during live-resizing
2945 css.zIndex = z.pane_normal+1; // 1-higher than pane
2950 $M.addClass("ui-layout-mask-inside-pane");
2968 * @param {boolean=} [destroyChildren=false] Destory Child-Layouts first?
2976 // stopPropagation if called by trigger("layoutdestroy") - use evtPane utility
2984 // reset layout-container
3000 …// do NOT reset container CSS if is a 'pane' (or 'content') in an outer-layout - ie, THIS layout i…
3005 // for full-page layouts, also reset the <HTML> CSS
3012 // trigger state-management and onunload callback
3016 // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options );
3022 // if this is a child layout, CLEAR the child-pointer in the parent
3036 * Remove a pane from the layout - subroutine of destroy()
3042 …* @param {boolean=} [destroyChild=true] Destroy Child-layouts? If not passed, obeys options sett…
3069 // FIRST destroy the child-layout(s)
3073 child.destroy(true);// tell child-layout to destroy ALL its child-layouts too
3084 // Note: can't 'remove' a pane element with non-destroyed children
3086 $P.remove(); // remove the pane-element and everything inside it
3088 // create list of ALL pane-classes that need to be removed
3089 var root = o.paneClass // default="ui-layout-pane"
3090 , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west"
3091 , _open = "-open"
3092 , _sliding= "-sliding"
3093 , _closed = "-closed"
3095 pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes
3097 $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes
3098 // remove all Layout classes from pane-element
3099 $P .removeClass( classes.join(" ") ) // remove ALL pane-classes
3113 // a content-div may not have a specific width, so give it one to contain the Layout
3184 * Completely 'hides' a pane, including its spacing - as if it does not exist
3185 * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it
3200 // onhide_start callback - will CANCEL hide if returns false
3207 if ($R) $R.hide(); // hide resizer-bar
3209 s.isClosed = true; // to trigger open-animation on show()
3225 * Show a hidden pane - show as 'closed' by default unless openPane = true
3242 // onshow_start callback - will CANCEL show if returns false
3246 //s.isHidden = false; - will be set by open/close - if not cancelled
3251 //if ($R) $R.show(); - will be shown by open/close
3283 * Utility method used during init or other auto-processes
3334 // onclose_start callback - will CANCEL hide if returns false
3361 // if this pane has a resizer bar, move it NOW - before animation
3385 // if opposite-pane was autoClosed, see if it can be autoOpened now
3393 // onclose callback - UNLESS just 'showing' a hidden pane as 'closed'
3416 , _pane = "-"+ pane // used for classNames
3417 , _open = "-open"
3418 , _sliding= "-sliding"
3419 , _closed = "-closed"
3427 // handle already-hidden panes in case called by swap() or a similar method
3428 if (s.isHidden) $R.hide(); // hide resizer-bar
3430 // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvents?
3434 .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here
3446 // toggler-content - if exists
3447 $T.children(".content-open").hide();
3448 $T.children(".content-closed").css("display","block");
3501 // onopen_start callback - will CANCEL open if returns false
3507 // update pane-state again in case options were changed in onopen_start
3512 syncPinBtns(pane, false); // make sure pin-buttons are reset
3518 if (slide) // START Sliding - will set isSliding=true
3519 bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane
3520 else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead
3521 bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false
3537 // update isHidden BEFORE sizing panes - WHY??? Old?
3588 , _pane = "-"+ pane // used for classNames
3589 , _open = "-open"
3590 , _closed = "-closed"
3591 , _sliding= "-sliding"
3609 $R.css("cursor", "default"); // n-resize, s-resize, etc
3617 // toggler-content - if exists
3618 $T.children(".content-closed").hide();
3619 $T.children(".content-open").css("display","block");
3625 // update pane-state dimensions - BEFORE resizing content
3631 // resize content every time pane opens - to be sure
3638 // onshow callback - TODO: should this be here?
3641 // ALSO call onresize because layout-size *may* have changed while pane was closed
3653 * Pass-though methods for sliding
3667 // trigger = mouseenter - use a delay
3677 bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane
3679 open(pane, true); // true = slide - open() will handle binding
3689 , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override
3697 return; // handle Chrome quick-close on slide-open
3699 return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE
3700 else if (evt) // trigger = mouseleave - use a delay
3711 bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here?
3729 * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored!
3742 $P.css({ top: sC.inset.top + sC.innerHeight - $P.outerHeight() });
3744 $P.css({ left: sC.inset.left + sC.innerWidth - $P.outerWidth() });
3746 else { // animation DONE - RESET CSS
3751 // if pane is positioned 'off-screen', then DO NOT screw with it!
3752 else if (pane=="east" && !$P.css("left").match(/\-99999/))
3754 // fix anti-aliasing in IE - only needed for animations that change opacity
3782 // must remove double-click-toggle when using dblclick-slide
3829 // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not
3854 $R.attr("title", enable ? o.tips.Close : ""); // use Toggler-tip, eg: "Close Pane"
3866 * Hides/closes a pane if there is insufficient room - reverses this when there is room again
3904 // see if there is enough room to fit the border-pane
3910 if (s.size > s.maxSize) // pane is too big - shrink it
3912 else if (s.size < s.minSize) // pane is too small - enlarge it
3914 // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen
3916 // make sure resizer-bar is positioned correctly
3935 else { // !hasRoom - pane CANNOT fit
3950 …* manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resi…
3953 * @param {number} size The *desired* new size for this pane - will be validated
3967 // ANY call to manualSizePane disables autoResize - ie, percentage sizing
3969 // flow-through...
3977 * @param {number} size The *desired* new size for this pane - will be validated
3999 setSizeLimits(pane); // update pane-state
4010 // IF newSize is same as oldSize, then nothing to do - abort
4051 //$.extend(s, elDims($P)); // update state dimensions - CANNOT do this when not visible! }
4075 , msg = 'Inaccurate size after resizing the '+ pane +'-pane.'
4081 thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size));
4083 thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual));
4091 // log attempts and alert the user of this *non-fatal error* (if showDebugMessages)
4101 lastTry = tries[ tries.length - 1 ];
4105 // update pane-state dimensions
4110 // reposition the resizer-bar
4112 // resize the content-div
4122 // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize
4127 // if opposite-pane was autoClosed, see if it can be autoOpened now
4134 // DEBUG - ALERT user/developer so they know there was a sizing problem
4142 * @param {(Array.<string>|string)} panes The pane(s) being resized, comma-delmited string
4150 if (!$Ps[pane]) return; // NO PANE - skip
4165 // update pane-state dimensions
4171 return true; // SKIP - pane already the correct size
4183 // NEW - allow pane to extend 'below' visible area rather than hide it
4190 reqPx = o.minWidth - s.outerWidth
4199 newE = max( sizeE-minE, sizeE-reqPx );
4200 reqPx -= sizeE-newE;
4203 newW = max( sizeW-minW, sizeW-reqPx );
4204 reqPx -= sizeW-newW;
4209 …sizePane('east', newE, true, true, force); // true = skipCallback/noAnimation - initPanes will han…
4225 return true; // SKIP - pane already the correct size
4231 // NEW - allow pane to extend 'below' visible area rather than hide it
4247 makePaneFit(pane); // will re-open/show auto-closed/hidden pane
4264 return true; // DONE - next pane
4267 * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes
4268 * Normally these panes have only 'left' & 'right' positions so pane auto-sizes
4271 * TODO: Sounds like a job for $P.outerWidth( sC.innerWidth ) SETTER METHOD
4290 * @param {(Object|boolean)=} evt_or_refresh If 'true', then also reset pane-positioning
4296 // stopPropagation if called by trigger("layoutdestroy") - use evtPane utility
4329 // NOTE special order for sizing: S-N-E-W
4331 if (!$Ps[pane]) return; // no pane - SKIP
4349 if (state[pane].isVisible) // undefined for non-existent panes
4350 _runCallbacks("onresize_end", pane); // callback - if exists
4367 // ensure the pane-children are up-to-date
4379 * IF pane has a content-div, then resize all elements inside pane to fit pane-height
4398 if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip
4400 // if content-element was REMOVED, update OR remove the pointer
4402 initContent(pane, false); // false = do NOT sizeContent() - already there!
4403 if (!$C) return; // no replacement element found - pointer have been removed
4409 // skip re-measuring offsets if live-resizing
4412 // if any footers are below pane-bottom, they may not measure correctly,
4413 // so allow pane overflow and re-measure
4421 …var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom…
4424 // size the Content element to fit new pane-size - will autoHide if not enough room
4439 , $Fs = $C.nextAll().not(".ui-layout-mask").not(ignore || ":lt(0)") // not :lt(0) = ALL
4447 , hiddenFooters: $Fs.length - $Fs_vis.length
4450 m.spaceAbove = m.top; // just for state - not used in calc
4453 …//spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFoot…
4454 m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F);
4455 else // no footer - check marginBottom on Content element itself
4505 paneLen = sC.innerWidth; // handle offscreen-panes
4511 , left: left > -9999 ? left : sC.inset.left // handle offscreen-panes
4547 case "right": offset = paneLen - togLen;
4551 default: offset = round((paneLen - togLen) / 2); // 'default' catches typos
4557 else offset = paneLen - togLen + x; // NOTE: x is negative!
4572 $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative
4586 $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative
4708 * Move a pane from source-side (eg, west) to target-side (eg, east)
4709 * If pane exists on target-side, move that to source-side, ie, 'swap' the panes
4791 // save pane-options that should be retained
4794 // RETAIN side-specific FX Settings - more below
4807 layoutPane: Instance[pane] // NEW pointer to pane-alias-object
4819 // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west
4820 re = new RegExp(o.paneClass +"-"+ oldPane, "g");
4821 P.className = P.className.replace(re, o.paneClass +"-"+ pane);
4829 setSizeLimits(pane); // update pane-state
4831 // use manualSizePane to disable autoResize - not useful after panes are swapped
4838 // ADD CLASSNAMES & SLIDE-BINDINGS
4853 * INTERNAL method to sync pin-buttons when pane is opened or closed
4854 * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes
4870 * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed
4881 38: "north" // Up Cursor - $.ui.keyCode.UP
4882 , 40: "south" // Down Cursor - $.ui.keyCode.DOWN
4883 , 37: "west" // Left Cursor - $.ui.keyCode.LEFT
4884 , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT
4893 if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey
4895 else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey
4928 * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work
4986 // save the current overflow settings - even if blank!
5027 // reset Overflow - if necessary
5047 // return the Instance-pointer if layout has already been initialized
5053 $Ps = {} // Panes x5 - set in initPanes()
5054 , $Cs = {} // Content x5 - set in initPanes()
5055 , $Rs = {} // Resizers x4 - set in initHandles()
5056 , $Ts = {} // Togglers x4 - set in initHandles()
5057 , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV)
5060 , sID = state.id // alias for unique layout ID/namespace - eg: "layout435"
5066 options: options // property - options hash
5067 , state: state // property - dimensions hash
5069 , container: $N // property - object pointers for layout container
5070 , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center
5071 , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center
5072 , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north
5073 , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north
5074 // border-pane open/close
5075 , hide: hide // method - ditto
5076 , show: show // method - ditto
5077 , toggle: toggle // method - pass a 'pane' ("north", "west", etc)
5078 , open: open // method - ditto
5079 , close: close // method - ditto
5080 , slideOpen: slideOpen // method - ditto
5081 , slideClose: slideClose // method - ditto
5082 , slideToggle: slideToggle // method - ditto
5084 , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data
5085 , _sizePane: sizePane // method -intended for user by plugins only!
5086 …, sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, o…
5087 , sizeContent: sizeContent // method - pass a 'pane'
5088 , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them
5089 …, showMasks: showMasks // method - pass a 'pane' OR list of panes - default = all panes with ma…
5090 , hideMasks: hideMasks // method - ditto'
5092 , initContent: initContent // method - ditto
5093 , addPane: addPane // method - pass a 'pane'
5094 …, removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete …
5095 …, createChildren: createChildren // method - pass a 'pane' and (optional) layout-options (OVERRID…
5096 , refreshChildren: refreshChildren // method - pass a 'pane' and a layout-instance
5098 , enableClosable: enableClosable // method - pass a 'pane'
5099 , disableClosable: disableClosable // method - ditto
5100 , enableSlidable: enableSlidable // method - ditto
5101 , disableSlidable: disableSlidable // method - ditto
5102 , enableResizable: enableResizable // method - ditto
5103 , disableResizable: disableResizable// method - ditto
5105 , allowOverflow: allowOverflow // utility - pass calling element (this)
5106 , resetOverflow: resetOverflow // utility - ditto
5108 , destroy: destroy // method - no parameters
5109 , initPanes: isInitialized // method - no parameters
5110 , resizeAll: resizeAll // method - no parameters
5112 …, runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("ono…
5113 // alias collections of options, state and children - created in addPane and extended elsewhere
5115 , children: children // pointers to child-layouts, eg: Instance.children.west.layoutName
5126 …else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init l…
5139 * $Date: 2014-08-30 08:00:00 (Sat, 30 Aug 2014) $
5145 * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
5150 * @see: http://groups.google.com/group/jquery-ui-layout
5217 $.ui.cookie.write(name, "", {expires: -1});
5236 * State-management options stored in options.stateManagement, which includes a .cookie hash
5247 …* @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using …
5259 * CUSTOM STATE-MANAGEMENT (eg, saved in a database)
5267 // Add State-Management options to layout.defaults
5269 enabled: false // true = enable state-management, even if not using cookies
5270 , autoSave: true // Save a state-cookie when page exits?
5271 , autoLoad: true // Load the state-cookie when Layout inits?
5274 // List state-data to save - must be pane-specific
5282 , expires: "" // 'days' to keep cookie - leave blank for 'session cookie'
5287 // Set stateManagement as a 'layout-option', NOT a 'pane-option'
5289 // Update config so layout does not move options into the pane-default branch (panes)
5310 , data = inst.state.stateData = inst.readState( keys || sm.stateKeys ) // read current panes-state
5327 * Read & return data from the cookie - as JSON
5365 // add missing/default state-restore options
5379 //delete o.center; // center has no state-data - only children
5383 // update CURRENT layout-options with saved state data
5410 // open/close as necessary - DO NOT CHANGE THIS ORDER!
5421 * RECURSE INTO CHILD-LAYOUTS
5443 * @param {object=} [opts] // State-Managements override options
5476 // recurse into the child-layouts for each pane
5489 // if we have PREVIOUS (onLoad) state for this child-layout, KEEP IT!
5502 * Stringify a JSON hash so can save in a cookie or db-field
5515 if (t == 'string') // STRING - add quotes
5517 else if (t == 'object') // SUB-KEY - recurse into it
5540 // ADD State-Management plugin methods to inst
5542 // readCookie - update options from cookie - returns hash of cookie data
5546 // saveCookie - optionally pass keys-list and cookie-options (hash)
5548 // loadCookie - readCookie and use to loadState() - returns hash of cookie data
5550 // loadState - pass a hash of state to use to update options
5552 // readState - returns hash of current layout-state
5562 // autoLoad MUST BE one of: data-array, data-hash, callback-function, or TRUE
5565 // When state-data exists in the autoLoad key USE IT,
5614 * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
5620 * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
5624 * @support: http://groups.google.com/group/jquery-ui-layout
5637 // Add State-Management options to layout.defaults
5639 // Set stateManagement as a layout-option, NOT a pane-option
5654 * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons
5659 var pre = "ui-layout-button-"
5662 $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) {
5664 $("."+pre+action+"-"+pane).each(function(){
5679 * - ui-layout-button-pin
5680 * - ui-layout-pane-button-toggle
5681 * - ui-layout-pane-button-open
5682 * - ui-layout-pane-button-close
5684 …g|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
5686 … If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns nu…
5696 else if ($.layout.buttons.config.borderPanes.indexOf(pane) === -1) { // invalid 'pane' sepecified
5701 var btn = o[pane].buttonClass +"-"+ action;
5702 $E .addClass( btn +" "+ btn +"-"+ pane )
5703 .data("layoutName", o.name); // add layout identifier - even if blank!
5710 * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc.
5712 …tring|!Object)} sel jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
5723 case "toggle-slide": _.addToggle (inst, sel, pane, true); break;
5724 case "open-slide": _.addOpen (inst, sel, pane, true); break;
5732 …g|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
5734 * @param {boolean=} slide true = slide-open, false = pin-open
5748 …g|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
5750 * @param {boolean=} slide true = slide-open, false = pin-open
5765 …g|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
5782 * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin:
5783 * - ui-layout-pane-pin
5784 * - ui-layout-pane-west-pin
5785 * - ui-layout-pane-pin-up
5786 * - ui-layout-pane-west-pin-up
5788 …g|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
5798 else inst.close( pane ); // slide-closed
5814 * @param {Array.<Object>} $Pin The pin-span element in a jQuery wrapper
5822 pin = inst.options[pane].buttonClass +"-pin"
5823 , side = pin +"-"+ pane
5824 , UP = pin +"-up "+ side +"-up"
5825 , DN = pin +"-down "+side +"-down"
5837 * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes
5844 // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE
5862 // init state array to hold pin-buttons
5868 // auto-init buttons onLoad if option is enabled
5890 * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $
5896 * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
5900 * @see: http://groups.google.com/group/jquery-ui-layout
5963 return calc((r.left - r.right), d.body.offsetWidth);
5968 return false; // no match, so cannot - or don't need to - track zoom
5984 * UI Layout Plugin: Slide-Offscreen Animation
5988 * This plug-in adds a new animation called "slideOffscreen".
5994 * Version: 1.1 - 2012-11-18
5995 * Author: Kevin Dalman (kevin@jquery-dev.com)
5996 * @preserve jquery.layout.slideOffscreen-1.1.js
6039 animation[ref] = (show ? (pos ? '+=' : '-=') : (pos ? '-=' : '+=')) + dist;
6047 $el.css(ref, isNaN(dist) ? "-" + dist : -dist); // Shift outside the left/top edge
6049 else { // bottom (south) or right (east) - shift all the way across container
6071 else // Move the pane off-screen (left: -99999, right: 'auto')