WordPress.org

Plugin Directory

Changeset 702668


Ignore:
Timestamp:
04/24/13 07:19:26 (12 months ago)
Author:
M66B
Message:

1.46 dev SimpleModal 1.4.4

Location:
shortcode-exec-php
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • shortcode-exec-php/tags/1.45/readme.txt

    r699913 r702668  
    2626Please report any issue you have with this plugin in [the forum](http://forum.faircode.eu/), but please note there is no support on shortcode definitions. 
    2727 
    28 See my [other plugins](http://wordpress.org/extend/plugins/profile/m66b "Marcel Bokhorst") 
     28See my [other plugins](http://wordpress.org/extend/plugins/profile/m66b "Marcel Bokhorst"). 
    2929 
    3030== Installation == 
     
    122122 
    123123= Development version = 
     124* Updated SimpleModal to version 1.4.4 
    124125* Added clarification 
    125126* Updated Dutch (nl\_NL) and Flemish (nl\_BE) translations 
  • shortcode-exec-php/trunk/readme.txt

    r699910 r702668  
    122122 
    123123= Development version = 
     124* Updated SimpleModal to version 1.4.4 
    124125* Added clarification 
    125126* Updated Dutch (nl\_NL) and Flemish (nl\_BE) translations 
  • shortcode-exec-php/trunk/simplemodal/css/basic.css

    r528532 r702668  
    11/* 
    22 * SimpleModal Basic Modal Dialog 
    3  * http://www.ericmmartin.com/projects/simplemodal/ 
    4  * http://code.google.com/p/simplemodal/ 
     3 * http://simplemodal.com 
    54 * 
    6  * Copyright (c) 2010 Eric Martin - http://ericmmartin.com 
     5 * Copyright (c) 2013 Eric Martin - http://ericmmartin.com 
    76 * 
    87 * Licensed under the MIT license: 
    98 *   http://www.opensource.org/licenses/mit-license.php 
    10  * 
    11  * Revision: $Id: basic.css 257 2010-07-27 23:06:56Z emartin24 $ 
    129 */ 
    1310 
     
    1512 
    1613/* Overlay */ 
    17 #simplemodal-overlay {background-color:#000; cursor:wait;} 
     14#simplemodal-overlay {background-color:#000;} 
    1815 
    1916/* Container */ 
  • shortcode-exec-php/trunk/simplemodal/css/basic_ie.css

    r528532 r702668  
    11/* 
    22 * SimpleModal Basic Modal Dialog 
    3  * http://www.ericmmartin.com/projects/simplemodal/ 
    4  * http://code.google.com/p/simplemodal/ 
     3 * http://simplemodal.com 
    54 * 
    6  * Copyright (c) 2010 Eric Martin - http://ericmmartin.com 
     5 * Copyright (c) 2013 Eric Martin - http://ericmmartin.com 
    76 * 
    87 * Licensed under the MIT license: 
    98 *   http://www.opensource.org/licenses/mit-license.php 
    10  * 
    11  * Revision: $Id: basic_ie.css 238 2010-03-11 05:56:57Z emartin24 $ 
    12  * 
    139 */ 
    1410 
  • shortcode-exec-php/trunk/simplemodal/js/basic.js

    r528532 r702668  
    11/* 
    22 * SimpleModal Basic Modal Dialog 
    3  * http://www.ericmmartin.com/projects/simplemodal/ 
    4  * http://code.google.com/p/simplemodal/ 
     3 * http://simplemodal.com 
    54 * 
    6  * Copyright (c) 2010 Eric Martin - http://ericmmartin.com 
     5 * Copyright (c) 2013 Eric Martin - http://ericmmartin.com 
    76 * 
    87 * Licensed under the MIT license: 
    98 *   http://www.opensource.org/licenses/mit-license.php 
    10  * 
    11  * Revision: $Id: basic.js 254 2010-07-23 05:14:44Z emartin24 $ 
    129 */ 
    1310 
  • shortcode-exec-php/trunk/simplemodal/js/jquery.simplemodal.js

    r530949 r702668  
    11/* 
    2  * SimpleModal 1.4.2 - jQuery Plugin 
     2 * SimpleModal 1.4.4 - jQuery Plugin 
    33 * http://simplemodal.com/ 
    4  * Copyright (c) 2011 Eric Martin 
     4 * Copyright (c) 2013 Eric Martin 
    55 * Licensed under MIT and GPL 
    6  * Date: Sat, Dec 17 2011 15:35:38 -0800 
     6 * Date: Sun, Jan 20 2013 15:58:56 -0800 
    77 */ 
    8  
    9 /** 
    10  * SimpleModal is a lightweight jQuery plugin that provides a simple 
    11  * interface to create a modal dialog. 
    12  * 
    13  * The goal of SimpleModal is to provide developers with a cross-browser 
    14  * overlay and container that will be populated with data provided to 
    15  * SimpleModal. 
    16  * 
    17  * There are two ways to call SimpleModal: 
    18  * 1) As a chained function on a jQuery object, like $('#myDiv').modal();. 
    19  * This call would place the DOM object, #myDiv, inside a modal dialog. 
    20  * Chaining requires a jQuery object. An optional options object can be 
    21  * passed as a parameter. 
    22  * 
    23  * @example $('<div>my data</div>').modal({options}); 
    24  * @example $('#myDiv').modal({options}); 
    25  * @example jQueryObject.modal({options}); 
    26  * 
    27  * 2) As a stand-alone function, like $.modal(data). The data parameter 
    28  * is required and an optional options object can be passed as a second 
    29  * parameter. This method provides more flexibility in the types of data 
    30  * that are allowed. The data could be a DOM object, a jQuery object, HTML 
    31  * or a string. 
    32  * 
    33  * @example $.modal('<div>my data</div>', {options}); 
    34  * @example $.modal('my data', {options}); 
    35  * @example $.modal($('#myDiv'), {options}); 
    36  * @example $.modal(jQueryObject, {options}); 
    37  * @example $.modal(document.getElementById('myDiv'), {options}); 
    38  * 
    39  * A SimpleModal call can contain multiple elements, but only one modal 
    40  * dialog can be created at a time. Which means that all of the matched 
    41  * elements will be displayed within the modal container. 
    42  * 
    43  * SimpleModal internally sets the CSS needed to display the modal dialog 
    44  * properly in all browsers, yet provides the developer with the flexibility 
    45  * to easily control the look and feel. The styling for SimpleModal can be 
    46  * done through external stylesheets, or through SimpleModal, using the 
    47  * overlayCss, containerCss, and dataCss options. 
    48  * 
    49  * SimpleModal has been tested in the following browsers: 
    50  * - IE 6+ 
    51  * - Firefox 2+ 
    52  * - Opera 9+ 
    53  * - Safari 3+ 
    54  * - Chrome 1+ 
    55  * 
    56  * @name SimpleModal 
    57  * @type jQuery 
    58  * @requires jQuery v1.2.4 
    59  * @cat Plugins/Windows and Overlays 
    60  * @author Eric Martin (http://ericmmartin.com) 
    61  * @version 1.4.2 
    62  */ 
    63  
    64 ;(function (factory) { 
    65     if (typeof define === 'function' && define.amd) { 
    66         // AMD. Register as an anonymous module. 
    67         define(['jquery'], factory); 
    68     } else { 
    69         // Browser globals 
    70         factory(jQuery); 
    71     } 
    72 } 
    73 (function ($) { 
    74     var d = [], 
    75         doc = $(document), 
    76         ie6 = $.browser.msie && parseInt($.browser.version) === 6 && typeof window['XMLHttpRequest'] !== 'object', 
    77         ie7 = $.browser.msie && parseInt($.browser.version) === 7, 
    78         ieQuirks = null, 
    79         wndw = $(window), 
    80         w = []; 
    81  
    82     /* 
    83      * Create and display a modal dialog. 
    84      * 
    85      * @param {string, object} data A string, jQuery object or DOM object 
    86      * @param {object} [options] An optional object containing options overrides 
    87      */ 
    88     $.modal = function (data, options) { 
    89         return $.modal.impl.init(data, options); 
    90     }; 
    91  
    92     /* 
    93      * Close the modal dialog. 
    94      */ 
    95     $.modal.close = function () { 
    96         $.modal.impl.close(); 
    97     }; 
    98  
    99     /* 
    100      * Set focus on first or last visible input in the modal dialog. To focus on the last 
    101      * element, call $.modal.focus('last'). If no input elements are found, focus is placed 
    102      * on the data wrapper element. 
    103      */ 
    104     $.modal.focus = function (pos) { 
    105         $.modal.impl.focus(pos); 
    106     }; 
    107  
    108     /* 
    109      * Determine and set the dimensions of the modal dialog container. 
    110      * setPosition() is called if the autoPosition option is true. 
    111      */ 
    112     $.modal.setContainerDimensions = function () { 
    113         $.modal.impl.setContainerDimensions(); 
    114     }; 
    115  
    116     /* 
    117      * Re-position the modal dialog. 
    118      */ 
    119     $.modal.setPosition = function () { 
    120         $.modal.impl.setPosition(); 
    121     }; 
    122  
    123     /* 
    124      * Update the modal dialog. If new dimensions are passed, they will be used to determine 
    125      * the dimensions of the container. 
    126      * 
    127      * setContainerDimensions() is called, which in turn calls setPosition(), if enabled. 
    128      * Lastly, focus() is called is the focus option is true. 
    129      */ 
    130     $.modal.update = function (height, width) { 
    131         $.modal.impl.update(height, width); 
    132     }; 
    133  
    134     /* 
    135      * Chained function to create a modal dialog. 
    136      * 
    137      * @param {object} [options] An optional object containing options overrides 
    138      */ 
    139     $.fn.modal = function (options) { 
    140         return $.modal.impl.init(this, options); 
    141     }; 
    142  
    143     /* 
    144      * SimpleModal default options 
    145      * 
    146      * appendTo:        (String:'body') The jQuery selector to append the elements to. For .NET, use 'form'. 
    147      * focus:           (Boolean:true) Focus in the first visible, enabled element? 
    148      * opacity:         (Number:50) The opacity value for the overlay div, from 0 - 100 
    149      * overlayId:       (String:'simplemodal-overlay') The DOM element id for the overlay div 
    150      * overlayCss:      (Object:{}) The CSS styling for the overlay div 
    151      * containerId:     (String:'simplemodal-container') The DOM element id for the container div 
    152      * containerCss:    (Object:{}) The CSS styling for the container div 
    153      * dataId:          (String:'simplemodal-data') The DOM element id for the data div 
    154      * dataCss:         (Object:{}) The CSS styling for the data div 
    155      * minHeight:       (Number:null) The minimum height for the container 
    156      * minWidth:        (Number:null) The minimum width for the container 
    157      * maxHeight:       (Number:null) The maximum height for the container. If not specified, the window height is used. 
    158      * maxWidth:        (Number:null) The maximum width for the container. If not specified, the window width is used. 
    159      * autoResize:      (Boolean:false) Automatically resize the container if it exceeds the browser window dimensions? 
    160      * autoPosition:    (Boolean:true) Automatically position the container upon creation and on window resize? 
    161      * zIndex:          (Number: 1000) Starting z-index value 
    162      * close:           (Boolean:true) If true, closeHTML, escClose and overClose will be used if set. 
    163                                 If false, none of them will be used. 
    164      * closeHTML:       (String:'<a class="modalCloseImg" title="Close"></a>') The HTML for the default close link. 
    165                                 SimpleModal will automatically add the closeClass to this element. 
    166      * closeClass:      (String:'simplemodal-close') The CSS class used to bind to the close event 
    167      * escClose:        (Boolean:true) Allow Esc keypress to close the dialog? 
    168      * overlayClose:    (Boolean:false) Allow click on overlay to close the dialog? 
    169      * fixed:           (Boolean:true) If true, the container will use a fixed position. If false, it will use a 
    170                                 absolute position (the dialog will scroll with the page) 
    171      * position:        (Array:null) Position of container [top, left]. Can be number of pixels or percentage 
    172      * persist:         (Boolean:false) Persist the data across modal calls? Only used for existing 
    173                                 DOM elements. If true, the data will be maintained across modal calls, if false, 
    174                                 the data will be reverted to its original state. 
    175      * modal:           (Boolean:true) User will be unable to interact with the page below the modal or tab away from the dialog. 
    176                                 If false, the overlay, iframe, and certain events will be disabled allowing the user to interact 
    177                                 with the page below the dialog. 
    178      * onOpen:          (Function:null) The callback function used in place of SimpleModal's open 
    179      * onShow:          (Function:null) The callback function used after the modal dialog has opened 
    180      * onClose:         (Function:null) The callback function used in place of SimpleModal's close 
    181      */ 
    182     $.modal.defaults = { 
    183         appendTo: 'body', 
    184         focus: true, 
    185         opacity: 50, 
    186         overlayId: 'simplemodal-overlay', 
    187         overlayCss: {}, 
    188         containerId: 'simplemodal-container', 
    189         containerCss: {}, 
    190         dataId: 'simplemodal-data', 
    191         dataCss: {}, 
    192         minHeight: null, 
    193         minWidth: null, 
    194         maxHeight: null, 
    195         maxWidth: null, 
    196         autoResize: false, 
    197         autoPosition: true, 
    198         zIndex: 1000, 
    199         close: true, 
    200         closeHTML: '<a class="modalCloseImg" title="Close"></a>', 
    201         closeClass: 'simplemodal-close', 
    202         escClose: true, 
    203         overlayClose: false, 
    204         fixed: true, 
    205         position: null, 
    206         persist: false, 
    207         modal: true, 
    208         onOpen: null, 
    209         onShow: null, 
    210         onClose: null 
    211     }; 
    212  
    213     /* 
    214      * Main modal object 
    215      * o = options 
    216      */ 
    217     $.modal.impl = { 
    218         /* 
    219          * Contains the modal dialog elements and is the object passed 
    220          * back to the callback (onOpen, onShow, onClose) functions 
    221          */ 
    222         d: {}, 
    223         /* 
    224          * Initialize the modal dialog 
    225          */ 
    226         init: function (data, options) { 
    227             var s = this; 
    228  
    229             // don't allow multiple calls 
    230             if (s.d.data) { 
    231                 return false; 
    232             } 
    233  
    234             // $.boxModel is undefined if checked earlier 
    235             ieQuirks = $.browser.msie && !$.boxModel; 
    236  
    237             // merge defaults and user options 
    238             s.o = $.extend({}, $.modal.defaults, options); 
    239  
    240             // keep track of z-index 
    241             s.zIndex = s.o.zIndex; 
    242  
    243             // set the onClose callback flag 
    244             s.occb = false; 
    245  
    246             // determine how to handle the data based on its type 
    247             if (typeof data === 'object') { 
    248                 // convert DOM object to a jQuery object 
    249                 data = data instanceof jQuery ? data : $(data); 
    250                 s.d.placeholder = false; 
    251  
    252                 // if the object came from the DOM, keep track of its parent 
    253                 if (data.parent().parent().size() > 0) { 
    254                     data.before($('<span></span>') 
    255                         .attr('id', 'simplemodal-placeholder') 
    256                         .css({display: 'none'})); 
    257  
    258                     s.d.placeholder = true; 
    259                     s.display = data.css('display'); 
    260  
    261                     // persist changes? if not, make a clone of the element 
    262                     if (!s.o.persist) { 
    263                         s.d.orig = data.clone(true); 
    264                     } 
    265                 } 
    266             } 
    267             else if (typeof data === 'string' || typeof data === 'number') { 
    268                 // just insert the data as innerHTML 
    269                 data = $('<div></div>').html(data); 
    270             } 
    271             else { 
    272                 // unsupported data type! 
    273                 alert('SimpleModal Error: Unsupported data type: ' + typeof data); 
    274                 return s; 
    275             } 
    276  
    277             // create the modal overlay, container and, if necessary, iframe 
    278             s.create(data); 
    279             data = null; 
    280  
    281             // display the modal dialog 
    282             s.open(); 
    283  
    284             // useful for adding events/manipulating data in the modal dialog 
    285             if ($.isFunction(s.o.onShow)) { 
    286                 s.o.onShow.apply(s, [s.d]); 
    287             } 
    288  
    289             // don't break the chain =) 
    290             return s; 
    291         }, 
    292         /* 
    293          * Create and add the modal overlay and container to the page 
    294          */ 
    295         create: function (data) { 
    296             var s = this; 
    297  
    298             // get the window properties 
    299             s.getDimensions(); 
    300  
    301             // add an iframe to prevent select options from bleeding through 
    302             if (s.o.modal && ie6) { 
    303                 s.d.iframe = $('<iframe src="javascript:false;"></iframe>') 
    304                     .css($.extend(s.o.iframeCss, { 
    305                         display: 'none', 
    306                         opacity: 0, 
    307                         position: 'fixed', 
    308                         height: w[0], 
    309                         width: w[1], 
    310                         zIndex: s.o.zIndex, 
    311                         top: 0, 
    312                         left: 0 
    313                     })) 
    314                     .appendTo(s.o.appendTo); 
    315             } 
    316  
    317             // create the overlay 
    318             s.d.overlay = $('<div></div>') 
    319                 .attr('id', s.o.overlayId) 
    320                 .addClass('simplemodal-overlay') 
    321                 .css($.extend(s.o.overlayCss, { 
    322                     display: 'none', 
    323                     opacity: s.o.opacity / 100, 
    324                     height: s.o.modal ? d[0] : 0, 
    325                     width: s.o.modal ? d[1] : 0, 
    326                     position: 'fixed', 
    327                     left: 0, 
    328                     top: 0, 
    329                     zIndex: s.o.zIndex + 1 
    330                 })) 
    331                 .appendTo(s.o.appendTo); 
    332  
    333             // create the container 
    334             s.d.container = $('<div></div>') 
    335                 .attr('id', s.o.containerId) 
    336                 .addClass('simplemodal-container') 
    337                 .css($.extend( 
    338                     {position: s.o.fixed ? 'fixed' : 'absolute'}, 
    339                     s.o.containerCss, 
    340                     {display: 'none', zIndex: s.o.zIndex + 2} 
    341                 )) 
    342                 .append(s.o.close && s.o.closeHTML 
    343                     ? $(s.o.closeHTML).addClass(s.o.closeClass) 
    344                     : '') 
    345                 .appendTo(s.o.appendTo); 
    346  
    347             s.d.wrap = $('<div></div>') 
    348                 .attr('tabIndex', -1) 
    349                 .addClass('simplemodal-wrap') 
    350                 .css({height: '100%', outline: 0, width: '100%'}) 
    351                 .appendTo(s.d.container); 
    352  
    353             // add styling and attributes to the data 
    354             // append to body to get correct dimensions, then move to wrap 
    355             s.d.data = data 
    356                 .attr('id', data.attr('id') || s.o.dataId) 
    357                 .addClass('simplemodal-data') 
    358                 .css($.extend(s.o.dataCss, { 
    359                         display: 'none' 
    360                 })) 
    361                 .appendTo('body'); 
    362             data = null; 
    363  
    364             s.setContainerDimensions(); 
    365             s.d.data.appendTo(s.d.wrap); 
    366  
    367             // fix issues with IE 
    368             if (ie6 || ieQuirks) { 
    369                 s.fixIE(); 
    370             } 
    371         }, 
    372         /* 
    373          * Bind events 
    374          */ 
    375         bindEvents: function () { 
    376             var s = this; 
    377  
    378             // bind the close event to any element with the closeClass class 
    379             $('.' + s.o.closeClass).bind('click.simplemodal', function (e) { 
    380                 e.preventDefault(); 
    381                 s.close(); 
    382             }); 
    383  
    384             // bind the overlay click to the close function, if enabled 
    385             if (s.o.modal && s.o.close && s.o.overlayClose) { 
    386                 s.d.overlay.bind('click.simplemodal', function (e) { 
    387                     e.preventDefault(); 
    388                     s.close(); 
    389                 }); 
    390             } 
    391  
    392             // bind keydown events 
    393             doc.bind('keydown.simplemodal', function (e) { 
    394                 if (s.o.modal && e.keyCode === 9) { // TAB 
    395                     s.watchTab(e); 
    396                 } 
    397                 else if ((s.o.close && s.o.escClose) && e.keyCode === 27) { // ESC 
    398                     e.preventDefault(); 
    399                     s.close(); 
    400                 } 
    401             }); 
    402  
    403             // update window size 
    404             wndw.bind('resize.simplemodal orientationchange.simplemodal', function () { 
    405                 // redetermine the window width/height 
    406                 s.getDimensions(); 
    407  
    408                 // reposition the dialog 
    409                 s.o.autoResize ? s.setContainerDimensions() : s.o.autoPosition && s.setPosition(); 
    410  
    411                 if (ie6 || ieQuirks) { 
    412                     s.fixIE(); 
    413                 } 
    414                 else if (s.o.modal) { 
    415                     // update the iframe & overlay 
    416                     s.d.iframe && s.d.iframe.css({height: w[0], width: w[1]}); 
    417                     s.d.overlay.css({height: d[0], width: d[1]}); 
    418                 } 
    419             }); 
    420         }, 
    421         /* 
    422          * Unbind events 
    423          */ 
    424         unbindEvents: function () { 
    425             $('.' + this.o.closeClass).unbind('click.simplemodal'); 
    426             doc.unbind('keydown.simplemodal'); 
    427             wndw.unbind('.simplemodal'); 
    428             this.d.overlay.unbind('click.simplemodal'); 
    429         }, 
    430         /* 
    431          * Fix issues in IE6 and IE7 in quirks mode 
    432          */ 
    433         fixIE: function () { 
    434             var s = this, p = s.o.position; 
    435  
    436             // simulate fixed position - adapted from BlockUI 
    437             $.each([s.d.iframe || null, !s.o.modal ? null : s.d.overlay, s.d.container.css('position') === 'fixed' ? s.d.container : null], function (i, el) { 
    438                 if (el) { 
    439                     var bch = 'document.body.clientHeight', bcw = 'document.body.clientWidth', 
    440                         bsh = 'document.body.scrollHeight', bsl = 'document.body.scrollLeft', 
    441                         bst = 'document.body.scrollTop', bsw = 'document.body.scrollWidth', 
    442                         ch = 'document.documentElement.clientHeight', cw = 'document.documentElement.clientWidth', 
    443                         sl = 'document.documentElement.scrollLeft', st = 'document.documentElement.scrollTop', 
    444                         s = el[0].style; 
    445  
    446                     s.position = 'absolute'; 
    447                     if (i < 2) { 
    448                         s.removeExpression('height'); 
    449                         s.removeExpression('width'); 
    450                         s.setExpression('height','' + bsh + ' > ' + bch + ' ? ' + bsh + ' : ' + bch + ' + "px"'); 
    451                         s.setExpression('width','' + bsw + ' > ' + bcw + ' ? ' + bsw + ' : ' + bcw + ' + "px"'); 
    452                     } 
    453                     else { 
    454                         var te, le; 
    455                         if (p && p.constructor === Array) { 
    456                             var top = p[0] 
    457                                 ? typeof p[0] === 'number' ? p[0].toString() : p[0].replace(/px/, '') 
    458                                 : el.css('top').replace(/px/, ''); 
    459                             te = top.indexOf('%') === -1 
    460                                 ? top + ' + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"' 
    461                                 : parseInt(top.replace(/%/, '')) + ' * ((' + ch + ' || ' + bch + ') / 100) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'; 
    462  
    463                             if (p[1]) { 
    464                                 var left = typeof p[1] === 'number' ? p[1].toString() : p[1].replace(/px/, ''); 
    465                                 le = left.indexOf('%') === -1 
    466                                     ? left + ' + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"' 
    467                                     : parseInt(left.replace(/%/, '')) + ' * ((' + cw + ' || ' + bcw + ') / 100) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'; 
    468                             } 
    469                         } 
    470                         else { 
    471                             te = '(' + ch + ' || ' + bch + ') / 2 - (this.offsetHeight / 2) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'; 
    472                             le = '(' + cw + ' || ' + bcw + ') / 2 - (this.offsetWidth / 2) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'; 
    473                         } 
    474                         s.removeExpression('top'); 
    475                         s.removeExpression('left'); 
    476                         s.setExpression('top', te); 
    477                         s.setExpression('left', le); 
    478                     } 
    479                 } 
    480             }); 
    481         }, 
    482         /* 
    483          * Place focus on the first or last visible input 
    484          */ 
    485         focus: function (pos) { 
    486             var s = this, p = pos && $.inArray(pos, ['first', 'last']) !== -1 ? pos : 'first'; 
    487  
    488             // focus on dialog or the first visible/enabled input element 
    489             var input = $(':input:enabled:visible:' + p, s.d.wrap); 
    490             setTimeout(function () { 
    491                 input.length > 0 ? input.focus() : s.d.wrap.focus(); 
    492             }, 10); 
    493         }, 
    494         getDimensions: function () { 
    495             // fix a jQuery/Opera bug with determining the window height 
    496             var s = this, 
    497                 h = $.browser.opera && $.browser.version > '9.5' && $.fn.jquery < '1.3' 
    498                         || $.browser.opera && $.browser.version < '9.5' && $.fn.jquery > '1.2.6' 
    499                 ? wndw[0].innerHeight : wndw.height(); 
    500  
    501             d = [doc.height(), doc.width()]; 
    502             w = [h, wndw.width()]; 
    503         }, 
    504         getVal: function (v, d) { 
    505             return v ? (typeof v === 'number' ? v 
    506                     : v === 'auto' ? 0 
    507                     : v.indexOf('%') > 0 ? ((parseInt(v.replace(/%/, '')) / 100) * (d === 'h' ? w[0] : w[1])) 
    508                     : parseInt(v.replace(/px/, ''))) 
    509                 : null; 
    510         }, 
    511         /* 
    512          * Update the container. Set new dimensions, if provided. 
    513          * Focus, if enabled. Re-bind events. 
    514          */ 
    515         update: function (height, width) { 
    516             var s = this; 
    517  
    518             // prevent update if dialog does not exist 
    519             if (!s.d.data) { 
    520                 return false; 
    521             } 
    522  
    523             // reset orig values 
    524             s.d.origHeight = s.getVal(height, 'h'); 
    525             s.d.origWidth = s.getVal(width, 'w'); 
    526  
    527             // hide data to prevent screen flicker 
    528             s.d.data.hide(); 
    529             height && s.d.container.css('height', height); 
    530             width && s.d.container.css('width', width); 
    531             s.setContainerDimensions(); 
    532             s.d.data.show(); 
    533             s.o.focus && s.focus(); 
    534  
    535             // rebind events 
    536             s.unbindEvents(); 
    537             s.bindEvents(); 
    538         }, 
    539         setContainerDimensions: function () { 
    540             var s = this, 
    541                 badIE = ie6 || ie7; 
    542  
    543             // get the dimensions for the container and data 
    544             var ch = s.d.origHeight ? s.d.origHeight : $.browser.opera ? s.d.container.height() : s.getVal(badIE ? s.d.container[0].currentStyle['height'] : s.d.container.css('height'), 'h'), 
    545                 cw = s.d.origWidth ? s.d.origWidth : $.browser.opera ? s.d.container.width() : s.getVal(badIE ? s.d.container[0].currentStyle['width'] : s.d.container.css('width'), 'w'), 
    546                 dh = s.d.data.outerHeight(true), dw = s.d.data.outerWidth(true); 
    547  
    548             s.d.origHeight = s.d.origHeight || ch; 
    549             s.d.origWidth = s.d.origWidth || cw; 
    550  
    551             // mxoh = max option height, mxow = max option width 
    552             var mxoh = s.o.maxHeight ? s.getVal(s.o.maxHeight, 'h') : null, 
    553                 mxow = s.o.maxWidth ? s.getVal(s.o.maxWidth, 'w') : null, 
    554                 mh = mxoh && mxoh < w[0] ? mxoh : w[0], 
    555                 mw = mxow && mxow < w[1] ? mxow : w[1]; 
    556  
    557             // moh = min option height 
    558             var moh = s.o.minHeight ? s.getVal(s.o.minHeight, 'h') : 'auto'; 
    559             if (!ch) { 
    560                 if (!dh) {ch = moh;} 
    561                 else { 
    562                     if (dh > mh) {ch = mh;} 
    563                     else if (s.o.minHeight && moh !== 'auto' && dh < moh) {ch = moh;} 
    564                     else {ch = dh;} 
    565                 } 
    566             } 
    567             else { 
    568                 ch = s.o.autoResize && ch > mh ? mh : ch < moh ? moh : ch; 
    569             } 
    570  
    571             // mow = min option width 
    572             var mow = s.o.minWidth ? s.getVal(s.o.minWidth, 'w') : 'auto'; 
    573             if (!cw) { 
    574                 if (!dw) {cw = mow;} 
    575                 else { 
    576                     if (dw > mw) {cw = mw;} 
    577                     else if (s.o.minWidth && mow !== 'auto' && dw < mow) {cw = mow;} 
    578                     else {cw = dw;} 
    579                 } 
    580             } 
    581             else { 
    582                 cw = s.o.autoResize && cw > mw ? mw : cw < mow ? mow : cw; 
    583             } 
    584  
    585             s.d.container.css({height: ch, width: cw}); 
    586             s.d.wrap.css({overflow: (dh > ch || dw > cw) ? 'auto' : 'visible'}); 
    587             s.o.autoPosition && s.setPosition(); 
    588         }, 
    589         setPosition: function () { 
    590             var s = this, top, left, 
    591                 hc = (w[0]/2) - (s.d.container.outerHeight(true)/2), 
    592                 vc = (w[1]/2) - (s.d.container.outerWidth(true)/2), 
    593                 st = s.d.container.css('position') !== 'fixed' ? wndw.scrollTop() : 0; 
    594  
    595             if (s.o.position && Object.prototype.toString.call(s.o.position) === '[object Array]') { 
    596                 top = st + (s.o.position[0] || hc); 
    597                 left = s.o.position[1] || vc; 
    598             } else { 
    599                 top = st + hc; 
    600                 left = vc; 
    601             } 
    602             s.d.container.css({left: left, top: top}); 
    603         }, 
    604         watchTab: function (e) { 
    605             var s = this; 
    606  
    607             if ($(e.target).parents('.simplemodal-container').length > 0) { 
    608                 // save the list of inputs 
    609                 s.inputs = $(':input:enabled:visible:first, :input:enabled:visible:last', s.d.data[0]); 
    610  
    611                 // if it's the first or last tabbable element, refocus 
    612                 if ((!e.shiftKey && e.target === s.inputs[s.inputs.length -1]) || 
    613                         (e.shiftKey && e.target === s.inputs[0]) || 
    614                         s.inputs.length === 0) { 
    615                     e.preventDefault(); 
    616                     var pos = e.shiftKey ? 'last' : 'first'; 
    617                     s.focus(pos); 
    618                 } 
    619             } 
    620             else { 
    621                 // might be necessary when custom onShow callback is used 
    622                 e.preventDefault(); 
    623                 s.focus(); 
    624             } 
    625         }, 
    626         /* 
    627          * Open the modal dialog elements 
    628          * - Note: If you use the onOpen callback, you must "show" the 
    629          *          overlay and container elements manually 
    630          *       (the iframe will be handled by SimpleModal) 
    631          */ 
    632         open: function () { 
    633             var s = this; 
    634             // display the iframe 
    635             s.d.iframe && s.d.iframe.show(); 
    636  
    637             if ($.isFunction(s.o.onOpen)) { 
    638                 // execute the onOpen callback 
    639                 s.o.onOpen.apply(s, [s.d]); 
    640             } 
    641             else { 
    642                 // display the remaining elements 
    643                 s.d.overlay.show(); 
    644                 s.d.container.show(); 
    645                 s.d.data.show(); 
    646             } 
    647  
    648             s.o.focus && s.focus(); 
    649  
    650             // bind default events 
    651             s.bindEvents(); 
    652         }, 
    653         /* 
    654          * Close the modal dialog 
    655          * - Note: If you use an onClose callback, you must remove the 
    656          *         overlay, container and iframe elements manually 
    657          * 
    658          * @param {boolean} external Indicates whether the call to this 
    659          *     function was internal or external. If it was external, the 
    660          *     onClose callback will be ignored 
    661          */ 
    662         close: function () { 
    663             var s = this; 
    664  
    665             // prevent close when dialog does not exist 
    666             if (!s.d.data) { 
    667                 return false; 
    668             } 
    669  
    670             // remove the default events 
    671             s.unbindEvents(); 
    672  
    673             if ($.isFunction(s.o.onClose) && !s.occb) { 
    674                 // set the onClose callback flag 
    675                 s.occb = true; 
    676  
    677                 // execute the onClose callback 
    678                 s.o.onClose.apply(s, [s.d]); 
    679             } 
    680             else { 
    681                 // if the data came from the DOM, put it back 
    682                 if (s.d.placeholder) { 
    683                     var ph = $('#simplemodal-placeholder'); 
    684                     // save changes to the data? 
    685                     if (s.o.persist) { 
    686                         // insert the (possibly) modified data back into the DOM 
    687                         ph.replaceWith(s.d.data.removeClass('simplemodal-data').css('display', s.display)); 
    688                     } 
    689                     else { 
    690                         // remove the current and insert the original, 
    691                         // unmodified data back into the DOM 
    692                         s.d.data.hide().remove(); 
    693                         ph.replaceWith(s.d.orig); 
    694                     } 
    695                 } 
    696                 else { 
    697                     // otherwise, remove it 
    698                     s.d.data.hide().remove(); 
    699                 } 
    700  
    701                 // remove the remaining elements 
    702                 s.d.container.hide().remove(); 
    703                 s.d.overlay.hide(); 
    704                 s.d.iframe && s.d.iframe.hide().remove(); 
    705                 s.d.overlay.remove(); 
    706  
    707                 // reset the dialog object 
    708                 s.d = {}; 
    709             } 
    710         } 
    711     }; 
    712 })); 
     8(function(b){"function"===typeof define&&define.amd?define(["jquery"],b):b(jQuery)})(function(b){var j=[],n=b(document),k=navigator.userAgent.toLowerCase(),l=b(window),g=[],o=null,p=/msie/.test(k)&&!/opera/.test(k),q=/opera/.test(k),m,r;m=p&&/msie 6./.test(k)&&"object"!==typeof window.XMLHttpRequest;r=p&&/msie 7.0/.test(k);b.modal=function(a,h){return b.modal.impl.init(a,h)};b.modal.close=function(){b.modal.impl.close()};b.modal.focus=function(a){b.modal.impl.focus(a)};b.modal.setContainerDimensions= 
     9function(){b.modal.impl.setContainerDimensions()};b.modal.setPosition=function(){b.modal.impl.setPosition()};b.modal.update=function(a,h){b.modal.impl.update(a,h)};b.fn.modal=function(a){return b.modal.impl.init(this,a)};b.modal.defaults={appendTo:"body",focus:!0,opacity:50,overlayId:"simplemodal-overlay",overlayCss:{},containerId:"simplemodal-container",containerCss:{},dataId:"simplemodal-data",dataCss:{},minHeight:null,minWidth:null,maxHeight:null,maxWidth:null,autoResize:!1,autoPosition:!0,zIndex:1E3, 
     10close:!0,closeHTML:'<a class="modalCloseImg" title="Close"></a>',closeClass:"simplemodal-close",escClose:!0,overlayClose:!1,fixed:!0,position:null,persist:!1,modal:!0,onOpen:null,onShow:null,onClose:null};b.modal.impl={d:{},init:function(a,h){if(this.d.data)return!1;o=p&&!b.support.boxModel;this.o=b.extend({},b.modal.defaults,h);this.zIndex=this.o.zIndex;this.occb=!1;if("object"===typeof a){if(a=a instanceof b?a:b(a),this.d.placeholder=!1,0<a.parent().parent().size()&&(a.before(b("<span></span>").attr("id", 
     11"simplemodal-placeholder").css({display:"none"})),this.d.placeholder=!0,this.display=a.css("display"),!this.o.persist))this.d.orig=a.clone(!0)}else if("string"===typeof a||"number"===typeof a)a=b("<div></div>").html(a);else return alert("SimpleModal Error: Unsupported data type: "+typeof a),this;this.create(a);this.open();b.isFunction(this.o.onShow)&&this.o.onShow.apply(this,[this.d]);return this},create:function(a){this.getDimensions();if(this.o.modal&&m)this.d.iframe=b('<iframe src="javascript:false;"></iframe>').css(b.extend(this.o.iframeCss, 
     12{display:"none",opacity:0,position:"fixed",height:g[0],width:g[1],zIndex:this.o.zIndex,top:0,left:0})).appendTo(this.o.appendTo);this.d.overlay=b("<div></div>").attr("id",this.o.overlayId).addClass("simplemodal-overlay").css(b.extend(this.o.overlayCss,{display:"none",opacity:this.o.opacity/100,height:this.o.modal?j[0]:0,width:this.o.modal?j[1]:0,position:"fixed",left:0,top:0,zIndex:this.o.zIndex+1})).appendTo(this.o.appendTo);this.d.container=b("<div></div>").attr("id",this.o.containerId).addClass("simplemodal-container").css(b.extend({position:this.o.fixed? 
     13"fixed":"absolute"},this.o.containerCss,{display:"none",zIndex:this.o.zIndex+2})).append(this.o.close&&this.o.closeHTML?b(this.o.closeHTML).addClass(this.o.closeClass):"").appendTo(this.o.appendTo);this.d.wrap=b("<div></div>").attr("tabIndex",-1).addClass("simplemodal-wrap").css({height:"100%",outline:0,width:"100%"}).appendTo(this.d.container);this.d.data=a.attr("id",a.attr("id")||this.o.dataId).addClass("simplemodal-data").css(b.extend(this.o.dataCss,{display:"none"})).appendTo("body");this.setContainerDimensions(); 
     14this.d.data.appendTo(this.d.wrap);(m||o)&&this.fixIE()},bindEvents:function(){var a=this;b("."+a.o.closeClass).bind("click.simplemodal",function(b){b.preventDefault();a.close()});a.o.modal&&a.o.close&&a.o.overlayClose&&a.d.overlay.bind("click.simplemodal",function(b){b.preventDefault();a.close()});n.bind("keydown.simplemodal",function(b){a.o.modal&&9===b.keyCode?a.watchTab(b):a.o.close&&a.o.escClose&&27===b.keyCode&&(b.preventDefault(),a.close())});l.bind("resize.simplemodal orientationchange.simplemodal", 
     15function(){a.getDimensions();a.o.autoResize?a.setContainerDimensions():a.o.autoPosition&&a.setPosition();m||o?a.fixIE():a.o.modal&&(a.d.iframe&&a.d.iframe.css({height:g[0],width:g[1]}),a.d.overlay.css({height:j[0],width:j[1]}))})},unbindEvents:function(){b("."+this.o.closeClass).unbind("click.simplemodal");n.unbind("keydown.simplemodal");l.unbind(".simplemodal");this.d.overlay.unbind("click.simplemodal")},fixIE:function(){var a=this.o.position;b.each([this.d.iframe||null,!this.o.modal?null:this.d.overlay, 
     16"fixed"===this.d.container.css("position")?this.d.container:null],function(b,e){if(e){var f=e[0].style;f.position="absolute";if(2>b)f.removeExpression("height"),f.removeExpression("width"),f.setExpression("height",'document.body.scrollHeight > document.body.clientHeight ? document.body.scrollHeight : document.body.clientHeight + "px"'),f.setExpression("width",'document.body.scrollWidth > document.body.clientWidth ? document.body.scrollWidth : document.body.clientWidth + "px"');else{var c,d;a&&a.constructor=== 
     17Array?(c=a[0]?"number"===typeof a[0]?a[0].toString():a[0].replace(/px/,""):e.css("top").replace(/px/,""),c=-1===c.indexOf("%")?c+' + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"':parseInt(c.replace(/%/,""))+' * ((document.documentElement.clientHeight || document.body.clientHeight) / 100) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"',a[1]&&(d="number"===typeof a[1]? 
     18a[1].toString():a[1].replace(/px/,""),d=-1===d.indexOf("%")?d+' + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"':parseInt(d.replace(/%/,""))+' * ((document.documentElement.clientWidth || document.body.clientWidth) / 100) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"')):(c='(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"', 
     19d='(document.documentElement.clientWidth || document.body.clientWidth) / 2 - (this.offsetWidth / 2) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"');f.removeExpression("top");f.removeExpression("left");f.setExpression("top",c);f.setExpression("left",d)}}})},focus:function(a){var h=this,a=a&&-1!==b.inArray(a,["first","last"])?a:"first",e=b(":input:enabled:visible:"+a,h.d.wrap);setTimeout(function(){0<e.length?e.focus():h.d.wrap.focus()}, 
     2010)},getDimensions:function(){var a="undefined"===typeof window.innerHeight?l.height():window.innerHeight;j=[n.height(),n.width()];g=[a,l.width()]},getVal:function(a,b){return a?"number"===typeof a?a:"auto"===a?0:0<a.indexOf("%")?parseInt(a.replace(/%/,""))/100*("h"===b?g[0]:g[1]):parseInt(a.replace(/px/,"")):null},update:function(a,b){if(!this.d.data)return!1;this.d.origHeight=this.getVal(a,"h");this.d.origWidth=this.getVal(b,"w");this.d.data.hide();a&&this.d.container.css("height",a);b&&this.d.container.css("width", 
     21b);this.setContainerDimensions();this.d.data.show();this.o.focus&&this.focus();this.unbindEvents();this.bindEvents()},setContainerDimensions:function(){var a=m||r,b=this.d.origHeight?this.d.origHeight:q?this.d.container.height():this.getVal(a?this.d.container[0].currentStyle.height:this.d.container.css("height"),"h"),a=this.d.origWidth?this.d.origWidth:q?this.d.container.width():this.getVal(a?this.d.container[0].currentStyle.width:this.d.container.css("width"),"w"),e=this.d.data.outerHeight(!0),f= 
     22this.d.data.outerWidth(!0);this.d.origHeight=this.d.origHeight||b;this.d.origWidth=this.d.origWidth||a;var c=this.o.maxHeight?this.getVal(this.o.maxHeight,"h"):null,d=this.o.maxWidth?this.getVal(this.o.maxWidth,"w"):null,c=c&&c<g[0]?c:g[0],d=d&&d<g[1]?d:g[1],i=this.o.minHeight?this.getVal(this.o.minHeight,"h"):"auto",b=b?this.o.autoResize&&b>c?c:b<i?i:b:e?e>c?c:this.o.minHeight&&"auto"!==i&&e<i?i:e:i,c=this.o.minWidth?this.getVal(this.o.minWidth,"w"):"auto",a=a?this.o.autoResize&&a>d?d:a<c?c:a:f? 
     23f>d?d:this.o.minWidth&&"auto"!==c&&f<c?c:f:c;this.d.container.css({height:b,width:a});this.d.wrap.css({overflow:e>b||f>a?"auto":"visible"});this.o.autoPosition&&this.setPosition()},setPosition:function(){var a,b;a=g[0]/2-this.d.container.outerHeight(!0)/2;b=g[1]/2-this.d.container.outerWidth(!0)/2;var e="fixed"!==this.d.container.css("position")?l.scrollTop():0;this.o.position&&"[object Array]"===Object.prototype.toString.call(this.o.position)?(a=e+(this.o.position[0]||a),b=this.o.position[1]||b): 
     24a=e+a;this.d.container.css({left:b,top:a})},watchTab:function(a){if(0<b(a.target).parents(".simplemodal-container").length){if(this.inputs=b(":input:enabled:visible:first, :input:enabled:visible:last",this.d.data[0]),!a.shiftKey&&a.target===this.inputs[this.inputs.length-1]||a.shiftKey&&a.target===this.inputs[0]||0===this.inputs.length)a.preventDefault(),this.focus(a.shiftKey?"last":"first")}else a.preventDefault(),this.focus()},open:function(){this.d.iframe&&this.d.iframe.show();b.isFunction(this.o.onOpen)? 
     25this.o.onOpen.apply(this,[this.d]):(this.d.overlay.show(),this.d.container.show(),this.d.data.show());this.o.focus&&this.focus();this.bindEvents()},close:function(){if(!this.d.data)return!1;this.unbindEvents();if(b.isFunction(this.o.onClose)&&!this.occb)this.occb=!0,this.o.onClose.apply(this,[this.d]);else{if(this.d.placeholder){var a=b("#simplemodal-placeholder");this.o.persist?a.replaceWith(this.d.data.removeClass("simplemodal-data").css("display",this.display)):(this.d.data.hide().remove(),a.replaceWith(this.d.orig))}else this.d.data.hide().remove(); 
     26this.d.container.hide().remove();this.d.overlay.hide();this.d.iframe&&this.d.iframe.hide().remove();this.d.overlay.remove();this.d={}}}}}); 
Note: See TracChangeset for help on using the changeset viewer.