master c4cce13a8e0e cached
57 files
169.8 KB
43.4k tokens
52 symbols
1 requests
Download .txt
Repository: house9/jquery-iframe-auto-height
Branch: master
Commit: c4cce13a8e0e
Files: 57
Total size: 169.8 KB

Directory structure:
gitextract_ye6a3ol6/

├── .editorconfig
├── .gitignore
├── .jshintrc
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── Gruntfile.js
├── README-legacy.md
├── README.md
├── bower.json
├── demo/
│   ├── assets/
│   │   ├── application.css
│   │   ├── iframe_content.css
│   │   └── normalize.css
│   ├── castle.html
│   ├── form_1.html
│   ├── form_1_confirm.html
│   ├── index-callback.html
│   ├── index-dynamic.html
│   ├── index-form.html
│   ├── index-min-height.html
│   ├── index-with-pic.html
│   ├── index.html
│   ├── large.html
│   ├── medium.html
│   ├── pic1.html
│   ├── small.html
│   ├── xlarge.html
│   ├── xsmall.html
│   └── xxlarge.html
├── dist/
│   └── jquery-iframe-auto-height.js
├── package.json
├── release/
│   ├── 2.0.0+.js
│   ├── README
│   ├── jquery.browser.js
│   ├── jquery.iframe-auto-height.js
│   ├── jquery.iframe-auto-height.plugin.1.5.0.js
│   ├── jquery.iframe-auto-height.plugin.1.6.0.js
│   ├── jquery.iframe-auto-height.plugin.1.7.0.js
│   ├── jquery.iframe-auto-height.plugin.1.7.1.js
│   ├── jquery.iframe-auto-height.plugin.1.8.0.js
│   ├── jquery.iframe-auto-height.plugin.1.9.0.js
│   ├── jquery.iframe-auto-height.plugin.1.9.1.js
│   ├── jquery.iframe-auto-height.plugin.1.9.2.js
│   ├── jquery.iframe-auto-height.plugin.1.9.3.js
│   ├── jquery.iframe-auto-height.plugin.1.9.4.js
│   └── jquery.iframe-auto-height.plugin.1.9.5.js
├── src/
│   └── jquery-iframe-auto-height.js
├── tasks/
│   ├── aliases.yaml
│   ├── changelog.js
│   ├── clean.js
│   ├── concat.js
│   ├── groc.js
│   ├── jshint.js
│   ├── lintspaces.js
│   ├── uglify.js
│   ├── umd.js
│   └── watch.js
└── vendor/
    └── jquery.browser.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# http://editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false


================================================
FILE: .gitignore
================================================
.DS_Store
*/.DS_Store

*.pnproj
.bundle
_preview_README.html

node_modules
./dist
test/temp
tmp
docs
.DS_Store
npm-debug.log
coverage
report


================================================
FILE: .jshintrc
================================================
{
  "node": true,
  "browser": true,
  "esnext": true,
  "bitwise": true,
  "camelcase": true,
  "curly": true,
  "eqeqeq": true,
  "immed": true,
  "indent": 2,
  "latedef": true,
  "newcap": true,
  "noarg": true,
  "noempty": true,
  "nonew": true,
  "plusplus": false,
  "quotmark": "*",
  "regexp": true,
  "undef": true,
  "unused": true,
  "strict": false,
  "maxdepth": 3,
  "trailing": true,
  "smarttabs": true,
  "onevar": false,
  "jquery": true,
  "globals": {
    "require": true,
    "define": true,
    "describe": true,
    "it": true,
    "before": true,
    "after": true,
    "beforeEach": true,
    "afterEach": true,
    "alert": true
  }
}


================================================
FILE: CONTRIBUTING.md
================================================
See: [https://github.com/house9/jquery-iframe-auto-height#plugin-development](https://github.com/house9/jquery-iframe-auto-height#plugin-development)


================================================
FILE: CONTRIBUTORS.md
================================================
# CONTRIBUTORS

* aaron manela (https://github.com/aaronmanela)
* adamjgray (https://github.com/adamjgray)
* Bruno Wego (https://github.com/brunowego)
* ChristineP2 (https://github.com/ChristineP2)
* genesos (https://github.com/genesos)
* Hideki Abe (https://github.com/hideki-a)
* janmas (https://github.com/janmas)
* jbreton (https://github.com/jbreton)
* jcaspian (https://github.com/jcaspian)
* Jens Bissinger (https://github.com/bsingr)
* Jesse House (https://github.com/house9)
* Kees C. Bakker (https://github.com/KeesCBakker)
* Lawrence (https://github.com/mindmelting)
* Mmjavellana (https://github.com/Mmjavellana)
* NATHAN SMITH (http://sonspring.com/)
* Patrick Clark (https://github.com/hellopat)
* SLaks (https://github.com/SLaks)
* yiqing-95 (https://github.com/yiqing-95)


================================================
FILE: Gruntfile.js
================================================
/*global module:false*/
module.exports = function (grunt) {
  'use strict';

  require('time-grunt')(grunt);

  var config = {
    // Metadata.
    pkg: grunt.file.readJSON('package.json'),
    banner: '/*! <%= pkg.name %> - v<%= pkg.version %>\n' +
      ' *  Release on: <%= grunt.template.today("yyyy-mm-dd") %>\n' +
      '<%= pkg.homepage ? " *  " + pkg.homepage + "\\n" : "" %>' +
      ' *  Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>\n' +
      ' *  Licensed <%= pkg.license %> */\n',
  };

  var path = require('path');

  require('load-grunt-config')(grunt, {
    init: true,
    configPath: path.join(process.cwd(), 'tasks'),
    config: config,
    jitGrunt: {
      changelog: 'grunt-conventional-changelog'
    }
  });
};


================================================
FILE: README-legacy.md
================================================
#  jQuery iframe auto height plugin

## Alternatives:

You may want to consider one of these alternative solutions for your iframe resizing needs?

* Iframe-resizer
  * [http://davidjbradshaw.github.io/iframe-resizer/](http://davidjbradshaw.github.io/iframe-resizer/)
  * jQuery pluggin for cross domain sizing iframes to content with support for window resizing
* easyXDM
  * [http://easyxdm.net/wp/2010/03/17/resize-iframe-based-on-content/](http://easyxdm.net/wp/2010/03/17/resize-iframe-based-on-content/)
  * Resize iframe based on content
* jQuery resize plugin
  * [http://benalman.com/projects/jquery-resize-plugin/](http://benalman.com/projects/jquery-resize-plugin/)

## ATTENTION

This plugin will NOT work if the iframe contains a page from another domain, use one of the alternate libraries above if you need cross domain resize.

## Usage:

* include jquery in your page
* include the latest version from the [release directory](https://github.com/house9/jquery-iframe-auto-height/tree/master/release); minified or standard
* use the variable jQuery or its alias $ and pass a selector that matches one or more iframes

`jQuery('iframe').iframeAutoHeight();` will resize all iframes on the page

`$('iframe.photo').iframeAutoHeight();` will resize only iframes with the css class photo

code can be called from within $(document).ready or after iframes are declared in markup

```
<!-- with document ready, most likely in the html head -->
<script>
  $(document).ready(function () {
    $('iframe').iframeAutoHeight({debug: true});
  });
</script>

<!-- inline, after the iframe -->
<iframe src="my_iframe.html" class="auto-height" scrolling="no" frameborder="0"></iframe>
<script>
  $('iframe.auto-height').iframeAutoHeight({minHeight: 240});
</script>
```

### Note

* jQuery 1.9.0 and up: you must add the $.browser plugin feature - [https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.browser.js](https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.browser.js)
  * download and include after the jquery plugin and before the iframe plugin
* 1.7.1 and below: you can also install using jamjs - [http://jamjs.org/packages/#/details/jquery-iframe-auto-height](http://jamjs.org/packages/#/details/jquery-iframe-auto-height)

### Options

* callback: function
  * Default empty function
  * Optionally define a callback function (in this case inline) that will do something with the callbackObject.newFrameHeight value. This can for instance be used with easyXDM to alert another domain that the frame has changed height.
  * Example: `$('iframe').iframeAutoHeight({callback: function(callbackObject) { alert(callbackObject.newFrameHeight);} });`
  * you can also access the current iframe jquery wrapper object use the `this` keyword
  * for example: `callback: function(callbackObject) { alert(callbackObject.newFrameHeight + " and the iframe href is:" + $(this).attr('src')); } `
* debug: boolean
  * Default is false
  * Will log some internal information to the console, if available
  * Example: `$('iframe').iframeAutoHeight({debug: true})`
* heightOffset: integer
  * Default is 0
  * Unit is pixels
  * Optionally add some buffer to the bottom
  * Example: `$('iframe').iframeAutoHeight({heightOffset: 20});`
* minHeight: integer
  * Default is 0
  * Unit is pixels
  * Sets the iframe height to this value if the calculated value is less
  * Example: `$('iframe').iframeAutoHeight({minHeight: 200});`
* animate: boolean
  * Default is false
  * Uses [jquery animate](http://api.jquery.com/animate/) with duration of 500 when resizing the iframe
  * Example: `$('iframe').iframeAutoHeight({animate: true});`
* resetToMinHeight: boolean
  * Default is false
  * hard set the iframe height to the minHeight before re-sizing
* triggerFunctions: Array of functions
  * Default is an empty array
  * Optionally define 1 or more functions that will have access to the resize method
  * can be used to resize the iframe from external events such as click or window resize - see examples below
* heightCalculationOverrides: Array of 2 element arrays
  * Default is an empty array
  * Optionally re-define the height calculation method(s)
  * override the default implementation or just override specific browsers
  * Example: `$('iframe').iframeAutoHeight({strategyOverrides: [{ browser: 'mozilla', calculation: function () { return 2000; }}]);`
  * The `browser` key should be one of 'webkit', 'mozilla', 'msie', 'opera' or 'default', see [http://api.jquery.com/jQuery.browser/](http://api.jquery.com/jQuery.browser/)
  * The `calculation` key should be a function, usually with the signature `(iframe, $iframeBody, options, browser)`
  * see more examples below

## Examples:

### triggerFunctions
```
// fire iframe resize when window is resized
var windowResizeFunction = function (resizeFunction, iframe) {
  $(window).resize(function () {
    console.debug("window resized - firing resizeHeight on iframe");
    resizeFunction(iframe);
  });
};

// fire iframe resize when a link is clicked
var clickFunction = function (resizeFunction, iframe) {
  $('a').click(function () {
    $(iframe).contents().find('body').html(''); // clear content of iframe
    console.debug("link clicked - firing resizeHeight on iframe");
    resizeFunction(iframe);
  });
};

$('iframe').iframeAutoHeight({
  debug: true,
  triggerFunctions: [
    windowResizeFunction,
    clickFunction
  ]
});

```

### heightCalculationOverrides
```
// override all browser calculations using default
$('iframe').iframeAutoHeight({
  debug: true,
  heightCalculationOverrides: [{
    browser: 'default',
    calculation: function (iframe, $iframeBody, options, browser) {
      return 1000;
    }
  }]
});

// mozilla seems to be problematic for some
// this is the usual work around, but it breaks demo pages so not used in plugin
$('iframe').iframeAutoHeight({
  debug: true,
  heightCalculationOverrides: [{
    browser: 'mozilla',
    calculation: function (iframe, $iframeBody, options, browser) {
      // since the jquery browser is passed in you can also check specific versions if desired
      return iframe.contentDocument.documentElement.scrollHeight + options.heightOffset;
    }
  }]
});
```

## Summary:

original code by NATHAN SMITH; see [http://sonspring.com/journal/jquery-iframe-sizing](http://sonspring.com/journal/jquery-iframe-sizing)

The plugin will resize an iframe to the height of its contents

Will NOT work if the iframe contains a page from another domain

When viewing code locally, i.e. file:///, Google chrome will throw security errors;
Works fine in Firefox locally and should work ok in all browsers when served from the same domain.

All testing is done manually:

1.6.0 and 1.7.0 have not been officially tested, but the changes were minor
1.8.0 has had minor testing

* IE6 on windows XP (1.4.1, 1.5.0)
* IE8 on windows XP (1.4.1, 1.5.0)
* IE9 on windows Vista/W7 (1.4.1, 1.5.0)
* Firefox 5 on windows XP (1.4.1, 1.5.0)
* Firefox 6 on W7 (1.5.0)
* Chrome 13 on windows XP (1.4.1, 1.5.0)
* Firefox 5.1 on Mac (1.4.1, 1.5.0)
* Firefox 6.0 on Mac (1.5.0)
* Firefox 15.1 on Mac (1.8.0)
* Chrome 13 on Mac (1.4.1, 1.5.0)
* Chrome 21 on Mac (1.8.0)
* Safari 5 on Mac (1.4.1, 1.5.0)
* Opera 11.5 on Mac (1.4.1)
* Firefox 4 on Ubuntu 11.04 (1.4.1)
* Chrome 11 on Ubuntu 11.04 (1.4.1)

## License:

The plugin: release/jquery.iframe-auto-height.plugin.js

* [The Unlicense](http://unlicense.org) (aka: public domain)

See specific license for any other code included, i.e. jquery


## Changelog:
1.9.5 / 2014-05-17

* Update the way that the initial resize happens
 * load event may never trigger if content is already loaded

1.9.4 / 2014-05-14

* maxHeight option

1.9.3 / 2013-06-01

* the url was bad - doh!

1.9.2 / 2013-06-01

* update url for jquery browser plugin, original repo was removed from github
* jslint fixes

1.9.1 / 2013-02-02

* Add js alert warning if using jquery 1.9 and up, `$.browser` is needed

1.9.0 / 2012-11-11

* use the `$.browser.webkit` in-place of `$.browser.safari`, requires jquery 1.4 and up

1.8.0 / 2012-09-22

* new option - resetToMinHeight
* new option - triggerFunctions
* new option - heightCalculationOverrides

1.7.1 / 2012-06-02

* webkit browsers, don't set iframe.style.height to 0px on initial page load

1.7.0 / 2012-06-02

* adds the animate option

1.6.0 / 2012-01-07

* callback function invoking now allows access to the iframe in the callback

1.5.0 / 2011-08-18

* add minHeight option, refactoring height calculation

1.4.0 / 2011-07-25

* add debug option, small refactoring and minified version

1.3.0 / 2011-07-17

* fix issue on Webkit (Google Chrome & Safari) when tall iframe links to short iframe

1.2.0 / 2011-07-08

* If the iframe document is read in quirks mode, fixed a problem with IE not applying the correct height.

1.1.0 / 2011-05-29

* added the ability to pass in a callback function

1.0.0 / 2010-10-22 / Initial release

* converted code to plugin
* match on specified selector instead of all iframes on page

## Authors

* NATHAN SMITH (http://sonspring.com/)
* Jesse House (https://github.com/house9)
* aaron manela (https://github.com/aaronmanela)
* Hideki Abe (https://github.com/hideki-a)
* Patrick Clark (https://github.com/hellopat)
* ChristineP2 (https://github.com/ChristineP2)
* Mmjavellana (https://github.com/Mmjavellana)
* yiqing-95 (https://github.com/yiqing-95)
* jcaspian (https://github.com/jcaspian)
* adamjgray (https://github.com/adamjgray)
* Jens Bissinger (https://github.com/dpree)
* jbreton (https://github.com/jbreton)
* mindmelting (https://github.com/mindmelting)

## TODO List:

* create a bower package
* publish demo site to heroku
* automated tests

## Patches:

The 'master' source file is located in the demo_on_rails directory [here](https://github.com/house9/jquery-iframe-auto-height/tree/master/demo_on_rails/app/assets/javascripts/src/jquery.iframe-auto-height.plugin.js)
All html files in the [demo directory](https://github.com/house9/jquery-iframe-auto-height/tree/master/demo) point to this 'master' file.
When modifying the code you can view changes in the static html files in demo or fire up the rails app in demo_on_rails.

If you have ruby installed you might want to utilize some of these tools, first run `bundle` to install needed gems

jslint checking

`jslint demo_on_rails/app/assets/javascripts/src/jquery.iframe-auto-height.plugin.js`

before the rails app was part of this project I used webrick for testing the static html files in webkit browsers,
but using localhost and file:/// are problematic, webrick can use your local machine ip address and any port you want

`ruby webrick.rb --port 3333 --bind 192.168.0.5 --docroot .`

Building the release

First update the version.rb file, then run the ruby command. The script will put two files in the release directory,
one minified and one full. A small amount of search and replace takes place on the comment block for output files.

`ruby releaser.rb`


## Known Issues

* with IE8 it seems better to not specify the height attribute on the iframe

## Issues

If you come across issues feel free to post them using the 'Issues' tab above (github)







================================================
FILE: README.md
================================================
#  jQuery iframe auto height plugin

## Alternatives:

You may want to consider one of these alternative solutions for your iframe resizing needs?

* Iframe-resizer
  * [http://davidjbradshaw.github.io/iframe-resizer/](http://davidjbradshaw.github.io/iframe-resizer/)
  * jQuery pluggin for cross domain sizing iframes to content with support for window resizing
* easyXDM
  * [http://easyxdm.net/wp/2010/03/17/resize-iframe-based-on-content/](http://easyxdm.net/wp/2010/03/17/resize-iframe-based-on-content/)
  * Resize iframe based on content
* jQuery resize plugin
  * [http://benalman.com/projects/jquery-resize-plugin/](http://benalman.com/projects/jquery-resize-plugin/)

# ATTENTION

This plugin will NOT work if the iframe contains a page from another domain, use one of the alternate libraries above if you need cross domain resize.


## Installation

```
$ npm install --save-dev jquery-iframe-auto-height
```

* There is no longer a NuGet package, please use bower for all javascript packaging needs.

You will find versions before 2.0.0 in the release directory,
all newer versions are handled using bower and the packaged file is in the [dist](https://github.com/house9/jquery-iframe-auto-height/blob/master/dist/) directory.

### Notes

* jQuery 1.9.0 and up: you must add the $.browser plugin feature
  * [https://raw.github.com/house9/jquery-iframe-auto-height/master/vendor/jquery.browser.js](https://raw.github.com/house9/jquery-iframe-auto-height/master/vendor/jquery.browser.js)
  * download and include after the jquery plugin and before the iframe plugin
  * this file is also included in the bower main section

## Usage

* include jquery in your page
* include the latest version using bower or the grab the current file from the `dist` directory
* use the variable jQuery or its alias $ and pass a selector that matches one or more iframes

* `jQuery('iframe').iframeAutoHeight();`
  * will resize all iframes on the page
* `$('iframe.photo').iframeAutoHeight();`
  * will resize only iframes with the css class photo
* code can be called from within `$(document).ready` or after iframes are declared in markup

```
<!-- with document ready, most likely in the html head -->
<script>
  $(document).ready(function () {
    $('iframe').iframeAutoHeight({debug: true});
  });
</script>

<!-- inline, after the iframe -->
<iframe src="my_iframe.html" class="auto-height" scrolling="no" frameborder="0"></iframe>
<script>
  $('iframe.auto-height').iframeAutoHeight({minHeight: 240});
</script>
```

## Documentation

### Options

* callback: function
  * Default empty function
  * Optionally define a callback function (in this case inline) that will do something with the callbackObject.newFrameHeight value. This can for instance be used with easyXDM to alert another domain that the frame has changed height.
  * Example: `$('iframe').iframeAutoHeight({callback: function(callbackObject) { alert(callbackObject.newFrameHeight);} });`
  * you can also access the current iframe jquery wrapper object use the `this` keyword
  * for example: `callback: function(callbackObject) { alert(callbackObject.newFrameHeight + " and the iframe href is:" + $(this).attr('src')); } `
* debug: boolean
  * Default is false
  * Will log some internal information to the console, if available
  * Example: `$('iframe').iframeAutoHeight({debug: true})`
* heightOffset: integer
  * Default is 0
  * Unit is pixels
  * Optionally add some buffer to the bottom
  * Example: `$('iframe').iframeAutoHeight({heightOffset: 20});`
* minHeight: integer
  * Default is 0
  * Unit is pixels
  * Sets the iframe height to this value if the calculated value is less
  * Example: `$('iframe').iframeAutoHeight({minHeight: 200});`
* animate: boolean
  * Default is false
  * Uses [jquery animate](http://api.jquery.com/animate/) with duration of 500 when resizing the iframe
  * Example: `$('iframe').iframeAutoHeight({animate: true});`
* resetToMinHeight: boolean
  * Default is false
  * hard set the iframe height to the minHeight before re-sizing
* triggerFunctions: Array of functions
  * Default is an empty array
  * Optionally define 1 or more functions that will have access to the resize method
  * can be used to resize the iframe from external events such as click or window resize - see examples below
* heightCalculationOverrides: Array of 2 element arrays
  * Default is an empty array
  * Optionally re-define the height calculation method(s)
  * override the default implementation or just override specific browsers
  * Example: `$('iframe').iframeAutoHeight({strategyOverrides: [{ browser: 'mozilla', calculation: function () { return 2000; }}]);`
  * The `browser` key should be one of 'webkit', 'mozilla', 'msie', 'opera' or 'default', see [http://api.jquery.com/jQuery.browser/](http://api.jquery.com/jQuery.browser/)
  * The `calculation` key should be a function, usually with the signature `(iframe, $iframeBody, options, browser)`
  * see more examples below

### Examples:

#### triggerFunctions

```
// fire iframe resize when window is resized
var windowResizeFunction = function (resizeFunction, iframe) {
  $(window).resize(function () {
    console.debug("window resized - firing resizeHeight on iframe");
    resizeFunction(iframe);
  });
};

// fire iframe resize when a link is clicked
var clickFunction = function (resizeFunction, iframe) {
  $('a').click(function () {
    $(iframe).contents().find('body').html(''); // clear content of iframe
    console.debug("link clicked - firing resizeHeight on iframe");
    resizeFunction(iframe);
  });
};

$('iframe').iframeAutoHeight({
  debug: true,
  triggerFunctions: [
    windowResizeFunction,
    clickFunction
  ]
});

```

#### heightCalculationOverrides

```
// override all browser calculations using default
$('iframe').iframeAutoHeight({
  debug: true,
  heightCalculationOverrides: [{
    browser: 'default',
    calculation: function (iframe, $iframeBody, options, browser) {
      return 1000;
    }
  }]
});

// mozilla seems to be problematic for some
// this is the usual work around, but it breaks demo pages so not used in plugin
$('iframe').iframeAutoHeight({
  debug: true,
  heightCalculationOverrides: [{
    browser: 'mozilla',
    calculation: function (iframe, $iframeBody, options, browser) {
      // since the jquery browser is passed in you can also check specific versions if desired
      return iframe.contentDocument.documentElement.scrollHeight + options.heightOffset;
    }
  }]
});
```

## Plugin development

* fork the repo
* create a new branch
* run `grunt watch`
* modify the file `src/jquery-iframe-auto-height.js` as needed
  * grunt will auto compile it to the dist directory
* view your changes in the browser
  * run `python -m SimpleHTTPServer 8000` or another web server
  * open in a browser - `http://localhost:8000/demo/`
* verify all pages still function properly in as many browers as possible
* Add your name to the CONTRIBUTORS.md file
  * alphabetical order
* submit a Pull Request (PR)
  * include a list of OS / browser / version that the changes were tested in as part of the PR

## License

* [The Unlicense](http://unlicense.org) (aka: public domain)

## Changelog:

2.0.0 / 2015-06-28

* Changes entire repo directory structure
  * Use grunt for building and packaging code
  * Remove rails demo, use static html instead
  * Include jquery.browser.js in bower main
* Add chrome to strategyKeys array
* use `window.parent` instead of `window.top.document`

1.9.5 / 2014-05-17

* Update the way that the initial resize happens
 * load event may never trigger if content is already loaded

1.9.4 / 2014-05-14

* maxHeight option

1.9.3 / 2013-06-01

* the url was bad - doh!

1.9.2 / 2013-06-01

* update url for jquery browser plugin, original repo was removed from github
* jslint fixes

1.9.1 / 2013-02-02

* Add js alert warning if using jquery 1.9 and up, `$.browser` is needed

1.9.0 / 2012-11-11

* use the `$.browser.webkit` in-place of `$.browser.safari`, requires jquery 1.4 and up

1.8.0 / 2012-09-22

* new option - resetToMinHeight
* new option - triggerFunctions
* new option - heightCalculationOverrides

1.7.1 / 2012-06-02

* webkit browsers, don't set iframe.style.height to 0px on initial page load

1.7.0 / 2012-06-02

* adds the animate option

1.6.0 / 2012-01-07

* callback function invoking now allows access to the iframe in the callback

1.5.0 / 2011-08-18

* add minHeight option, refactoring height calculation

1.4.0 / 2011-07-25

* add debug option, small refactoring and minified version

1.3.0 / 2011-07-17

* fix issue on Webkit (Google Chrome & Safari) when tall iframe links to short iframe

1.2.0 / 2011-07-08

* If the iframe document is read in quirks mode, fixed a problem with IE not applying the correct height.

1.1.0 / 2011-05-29

* added the ability to pass in a callback function

1.0.0 / 2010-10-22 / Initial release

* converted code to plugin
* match on specified selector instead of all iframes on page

## TODO List

* Manual testing and documention of supported browser versions
* Add specs to take screenshots
  * Sauce Labs?
* Add instructions for defect reporting
  * code samples, screenshots, etc...

## Props

Original code by NATHAN SMITH; see [http://sonspring.com/journal/jquery-iframe-sizing](http://sonspring.com/journal/jquery-iframe-sizing)

* see also [CONTRIBUTORS.md](https://github.com/house9/jquery-iframe-auto-height/blob/master/CONTRIBUTORS.md)


================================================
FILE: bower.json
================================================
{
  "name": "jquery-iframe-auto-height",
  "version": "2.0.0",
  "description": "jQuery plugin to set the height of an iframe to its contents height",
  "main": [
    "dist/jquery-iframe-auto-height.js",
    "vendor/jquery.browser.js"
  ],
  "author": {
    "name": "Jesse House",
    "email": "mail@jessehouse.com"
  },
  "repository": {
    "url": "https://github.com/house9/jquery-iframe-auto-height",
    "type": "git"
  },
  "license": "MIT",
  "dependencies": {},
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ]
}


================================================
FILE: demo/assets/application.css
================================================
/*
 * This is a manifest file that'll automatically include all the stylesheets available in this directory
 * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
 * the top of the compiled file, but it's generally better to create a new file per style scope.


 * require_tree . 
*/
/* line 1, ../../app/assets/stylesheets/layout.css.scss */
* {
  margin: 0;
  padding: 0;
}

/* line 7, ../../app/assets/stylesheets/layout.css.scss */
a {
  color: #33c;
  font-weight: bold;
}

/* line 13, ../../app/assets/stylesheets/layout.css.scss */
body {
  background: #fff;
  color: #333;
  font: 15px Arial, sans-serif;
}

/* line 20, ../../app/assets/stylesheets/layout.css.scss */
#container {
  margin: 0 auto;
  padding: 20px 0 0;
  width: 960px;
}

/* line 27, ../../app/assets/stylesheets/layout.css.scss */
h1 {
  font-size: 30px;
  margin: 0 10px;
  padding: 0 0 10px;
  text-align: center;
}

/* line 35, ../../app/assets/stylesheets/layout.css.scss */
p {
  background: #ffc;
  border: 1px solid #999;
  margin: 0 10px 20px;
  padding: 10px;
  text-align: center;
}

/* line 44, ../../app/assets/stylesheets/layout.css.scss */
iframe {
  margin: 0 10px 20px;
}

/* line 49, ../../app/assets/stylesheets/layout.css.scss */
.photo {
  width: 940px;
}

/* line 54, ../../app/assets/stylesheets/layout.css.scss */
.column {
  float: left;
  width: 220px;
}

/* line 60, ../../app/assets/stylesheets/layout.css.scss */
.clear {
  clear: both;
  overflow: hidden;
  width: 0;
  height: 0;
}

/* line 68, ../../app/assets/stylesheets/layout.css.scss */
div.p {
  padding: 10px;
}


================================================
FILE: demo/assets/iframe_content.css
================================================
* {
  margin: 0;
  padding: 0;
}

body {
  background: #ddd;
  color: #333;
  font: 11px Arial, sans-serif;
  padding: 20px 20px 0;
}

a {
  color: #33c;
  font-weight: bold;
}

img {
  display: block;
}

h2,
p {
  padding: 0 0 20px;
}

h2 {
  font-size: 15px;
}

p {
  line-height: 1.5;
}


================================================
FILE: demo/assets/normalize.css
================================================
/*! normalize.css v2.1.3 | MIT License | git.io/normalize */

/* ==========================================================================
   HTML5 display definitions
   ========================================================================== */

/**
 * Correct `block` display not defined in IE 8/9.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
    display: block;
}

/**
 * Correct `inline-block` display not defined in IE 8/9.
 */

audio,
canvas,
video {
    display: inline-block;
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
    display: none;
    height: 0;
}

/**
 * Address `[hidden]` styling not present in IE 8/9.
 * Hide the `template` element in IE, Safari, and Firefox < 22.
 */

[hidden],
template {
    display: none;
}

/* ==========================================================================
   Base
   ========================================================================== */

/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
    font-family: sans-serif; /* 1 */
    -ms-text-size-adjust: 100%; /* 2 */
    -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove default margin.
 */

body {
    margin: 0;
}

/* ==========================================================================
   Links
   ========================================================================== */

/**
 * Remove the gray background color from active links in IE 10.
 */

a {
    background: transparent;
}

/**
 * Address `outline` inconsistency between Chrome and other browsers.
 */

a:focus {
    outline: thin dotted;
}

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */

a:active,
a:hover {
    outline: 0;
}

/* ==========================================================================
   Typography
   ========================================================================== */

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari 5, and Chrome.
 */

h1 {
    font-size: 2em;
    margin: 0.67em 0;
}

/**
 * Address styling not present in IE 8/9, Safari 5, and Chrome.
 */

abbr[title] {
    border-bottom: 1px dotted;
}

/**
 * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
 */

b,
strong {
    font-weight: bold;
}

/**
 * Address styling not present in Safari 5 and Chrome.
 */

dfn {
    font-style: italic;
}

/**
 * Address differences between Firefox and other browsers.
 */

hr {
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    height: 0;
}

/**
 * Address styling not present in IE 8/9.
 */

mark {
    background: #ff0;
    color: #000;
}

/**
 * Correct font family set oddly in Safari 5 and Chrome.
 */

code,
kbd,
pre,
samp {
    font-family: monospace, serif;
    font-size: 1em;
}

/**
 * Improve readability of pre-formatted text in all browsers.
 */

pre {
    white-space: pre-wrap;
}

/**
 * Set consistent quote types.
 */

q {
    quotes: "\201C" "\201D" "\2018" "\2019";
}

/**
 * Address inconsistent and variable font size in all browsers.
 */

small {
    font-size: 80%;
}

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */

sub,
sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
}

sup {
    top: -0.5em;
}

sub {
    bottom: -0.25em;
}

/* ==========================================================================
   Embedded content
   ========================================================================== */

/**
 * Remove border when inside `a` element in IE 8/9.
 */

img {
    border: 0;
}

/**
 * Correct overflow displayed oddly in IE 9.
 */

svg:not(:root) {
    overflow: hidden;
}

/* ==========================================================================
   Figures
   ========================================================================== */

/**
 * Address margin not present in IE 8/9 and Safari 5.
 */

figure {
    margin: 0;
}

/* ==========================================================================
   Forms
   ========================================================================== */

/**
 * Define consistent border, margin, and padding.
 */

fieldset {
    border: 1px solid #c0c0c0;
    margin: 0 2px;
    padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct `color` not being inherited in IE 8/9.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */

legend {
    border: 0; /* 1 */
    padding: 0; /* 2 */
}

/**
 * 1. Correct font family not being inherited in all browsers.
 * 2. Correct font size not being inherited in all browsers.
 * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
 */

button,
input,
select,
textarea {
    font-family: inherit; /* 1 */
    font-size: 100%; /* 2 */
    margin: 0; /* 3 */
}

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */

button,
input {
    line-height: normal;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
 * Correct `select` style inheritance in Firefox 4+ and Opera.
 */

button,
select {
    text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
    -webkit-appearance: button; /* 2 */
    cursor: pointer; /* 3 */
}

/**
 * Re-set default cursor for disabled elements.
 */

button[disabled],
html input[disabled] {
    cursor: default;
}

/**
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */

input[type="checkbox"],
input[type="radio"] {
    box-sizing: border-box; /* 1 */
    padding: 0; /* 2 */
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
 *    (include `-moz` to future-proof).
 */

input[type="search"] {
    -webkit-appearance: textfield; /* 1 */
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box; /* 2 */
    box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari 5 and Chrome
 * on OS X.
 */

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
    -webkit-appearance: none;
}

/**
 * Remove inner padding and border in Firefox 4+.
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
    border: 0;
    padding: 0;
}

/**
 * 1. Remove default vertical scrollbar in IE 8/9.
 * 2. Improve readability and alignment in all browsers.
 */

textarea {
    overflow: auto; /* 1 */
    vertical-align: top; /* 2 */
}

/* ==========================================================================
   Tables
   ========================================================================== */

/**
 * Remove most spacing between table cells.
 */

table {
    border-collapse: collapse;
    border-spacing: 0;
}


================================================
FILE: demo/castle.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <p>
        <a href="http://www.flickr.com/photos/grumbler/208896083" target="_top">
          <img alt="http://www.flickr.com/photos/grumbler/208896083" src="./assets/castle.jpg">
        </a>
      </p>
    </div>
  </body>
</html>


================================================
FILE: demo/form_1.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <h2>Form</h2>
      <p>
        Link:
        <a href="./xsmall.html">XS</a> |
        <a href="./small.html">S</a> |
        <a href="./medium.html">M</a> |
        <a href="./large.html">L</a> |
        <a href="./xlarge.html">XL</a> |
        <a href="./xxlarge.html">XXL</a>
      </p>

      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>

      <form accept-charset="UTF-8" action="./form_1_confirm.html" method="GET">
        <input id="name" name="name" type="text">
        <input name="commit" value="Submit" type="submit">
      </form>

      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
    </div>
  </body>
</html>


================================================
FILE: demo/form_1_confirm.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <h2>Confirm</h2>
      <p>
        you submitted the form
      </p>
    </div>
  </body>
</html>


================================================
FILE: demo/index-callback.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/application.css" media="screen" rel="stylesheet" type="text/css">

    <script src="http://code.jquery.com/jquery-1.11.3.js"></script>
    <script src="../vendor/jquery.browser.js"></script>
    <script src="../dist/jquery-iframe-auto-height.js"></script>
    <script>
      jQuery(function() {
        $('#xsmall-iframe').iframeAutoHeight({
          debug: true,
          minHeight: 420,
          resetToMinHeight: true,
          heightCalculationOverrides: [
            {
              browser: 'mozilla',
              calculation: function() {
                return 420;
              }
            }, {
              browser: 'chrome',
              calculation: function() {
                return 120;
              }
            }, {
              browser: 'webkit',
              calculation: function() {
                return 520;
              }
            }, {
              browser: 'msie',
              calculation: function() {
                return 620;
              }
            }
          ],
          callback: function(callbackObject) {
            return console.debug("CallBack: height='" + callbackObject.newFrameHeight + "' / iframe-id='" + (jQuery(this).attr('id')) + "'");
          }
        });
        $('#small-iframe').iframeAutoHeight({
          debug: true,
          minHeight: 120,
          callback: function(callbackObject) {
            return console.debug("CallBack: height='" + callbackObject.newFrameHeight + "' / iframe-id='" + (jQuery(this).attr('id')) + "'");
          },
          triggerFunctions: [
            function(resizeFunction, iframe) {
              return $('#resize-clicker').click(function() {
                $(iframe).contents().find('body').html('');
                console.debug("clear content on small-iframe");
                return resizeFunction(iframe);
              });
            }
          ]
        });
        return $('#medium-iframe').iframeAutoHeight({
          debug: true,
          callback: function(callbackObject) {
            return console.debug("CallBack: height='" + callbackObject.newFrameHeight + "' / iframe-id='" + (jQuery(this).attr('id')) + "'");
          },
          fireOnResize: true,
          triggerFunctions: [
            function(resizeFunction, iframe) {
              return $(window).resize(function() {
                console.debug("window resized - firing resizeHeight on iframe");
                return resizeFunction(iframe);
              });
            }
          ]
        });
      });
    </script>
  </head>
  <body>
    <div id="container">
      <h1>
        jQuery » iFrame Auto Height Plugin
      </h1>
      <p>
        This <a href="http://jquery.com/">jQuery</a> plugin sets the height on iframes based on their content.
        <a href="http://github.com/house9/jquery-iframe-auto-height">http://github.com/house9/jquery-iframe-auto-height</a>
      </p>

      <div style="clear:both">
        <div>
          <div class="p">
            Callback Testing, check the console for debug messages<br>
            x-small is using hardcoded heights by browser override
          </div>
        </div>
        <div>
          <iframe src="./xsmall.html" class="column" scrolling="no" id="xsmall-iframe" style="height: 420px;" frameborder="0"></iframe>

          <iframe style="height: 230px;" src="./small.html" class="column" scrolling="no" id="small-iframe" frameborder="0"></iframe>

          <iframe style="height: 501px;" src="./medium.html" class="column" scrolling="no" id="medium-iframe" frameborder="0"></iframe>
        </div>

        <div style="clear:both; line-height: 0px; font-size: 0px">
          &nbsp;
        </div>
        <p>
          Clear iframe 2 (small-iframe) and then <a href="javascript:void(0)" id="resize-clicker">resize</a> it.
        </p>
      </div>

      <div class="clear">
        &nbsp;
      </div>
      <p>
        More: <a href="./">Main</a> |
        <a href="./index-with-pic.html">Another Pic</a> |
        <a href="./index-dynamic.html">Dynamic</a> |
        <a href="./index-min-height.html">Min-Height</a> |
        <a href="./index-callback.html">Callback</a> |
        <a href="./index-form.html">Form</a>
      </p>
      <p>
        Original code by Nathan Smith, see <a href="http://sonspring.com/journal/jquery-iframe-sizing">original article</a>.
      </p>
      <div class="clear">
        &nbsp;
      </div>
    </div>
  </body>
</html>


================================================
FILE: demo/index-dynamic.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/application.css" media="screen" rel="stylesheet" type="text/css">

    <script src="http://code.jquery.com/jquery-1.11.3.js"></script>
    <script src="../vendor/jquery.browser.js"></script>
    <script src="../dist/jquery-iframe-auto-height.js"></script>
  </head>
  <body>
    <div id="container">
      <h1>
        jQuery » iFrame Auto Height Plugin
      </h1>
      <p>
        This <a href="http://jquery.com/">jQuery</a> plugin sets the height on iframes based on their content.
        <a href="http://github.com/house9/jquery-iframe-auto-height">http://github.com/house9/jquery-iframe-auto-height</a>
      </p>

      <p>
        <a href="javascript:void(0);" id="load-static-large-link">Load large</a> |
        <a href="javascript:void(0);" id="load-dynamic-medium-link">Dynamic medium</a> |
        <a href="javascript:void(0);" id="remove-dynamic-iframe-link">Remove iframe</a>
      </p>

      <div id="iframe-container" style="border:1px solid black; background-color:gray">
        <!-- load iframe here -->
        Append Iframes here
      </div>

      <div class="clear" style="height: 30px">
        &nbsp;
      </div>

      <div id="static-container" style="border:1px solid black; background-color:gray">
        Iframe with changing src
        <iframe style="height: 240px;" id="iframe-loader" src="./pic1.html" class="photo" scrolling="no" frameborder="0"></iframe>
      </div>

      <div class="clear" style="height: 30px">
        &nbsp;
      </div>

      <div class="clear">
        &nbsp;
      </div>
      <p>
        More: <a href="./">Main</a> |
        <a href="./index-with-pic.html">Another Pic</a> |
        <a href="./index-dynamic.html">Dynamic</a> |
        <a href="./index-min-height.html">Min-Height</a> |
        <a href="./index-callback.html">Callback</a> |
        <a href="./index-form.html">Form</a>
      </p>
      <p>
        Original code by Nathan Smith, see <a href="http://sonspring.com/journal/jquery-iframe-sizing">original article</a>.
      </p>
      <div class="clear">
        &nbsp;
      </div>
    </div>

    <script>
      $(document).ready(function () {
        var counter = 0;

        // static iframe
        $('#iframe-loader').iframeAutoHeight();
        // click handling
        $("#load-static-large-link").click(function () {
          $("#iframe-loader").attr("src", "./large.html");
        });

        // dynamic handling
        $("#load-dynamic-medium-link").click(function () {
          var id = "iframe-medium-" + counter;
          $("<iframe />", {
            src: "./medium.html",
            id: id,
            frameborder: 0,
            "class": "photo"
          }).appendTo("#iframe-container");

          $('#' + id).iframeAutoHeight({heightOffset: 40});
          counter++;
        });

        $("#remove-dynamic-iframe-link").click(function () {
          $("#iframe-container iframe").remove();
        });
      });
    </script>
  </body>
</html>


================================================
FILE: demo/index-form.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/application.css" media="screen" rel="stylesheet" type="text/css">

    <script src="http://code.jquery.com/jquery-1.11.3.js"></script>
    <script src="../vendor/jquery.browser.js"></script>
    <script src="../dist/jquery-iframe-auto-height.js"></script>
    <script>
      jQuery(function() {
        $('iframe').iframeAutoHeight({
          debug: true,
          minHeight: 180,
          diagnostics: true
        });
      });
    </script>
  </head>
  <body>
    <div id="container">
      <h1>
        jQuery » iFrame Auto Height Plugin
      </h1>
      <p>
        This <a href="http://jquery.com/">jQuery</a> plugin sets the height on iframes based on their content.
        <a href="http://github.com/house9/jquery-iframe-auto-height">http://github.com/house9/jquery-iframe-auto-height</a>
      </p>

      <div style="clear:both">
        <div>
          <div class="p">
            Form
          </div>
        </div>

        <div>
          <iframe src="./form_1.html" class="column" scrolling="no" style="width: 666px; height: 1228px;" frameborder="0"></iframe>
        </div>

        <div style="clear:both; line-height: 0px; font-size: 0px">
          &nbsp;
        </div>
      </div>

      <div class="clear">
        &nbsp;
      </div>
      <p>
        More: <a href="./">Main</a> |
        <a href="./index-with-pic.html">Another Pic</a> |
        <a href="./index-dynamic.html">Dynamic</a> |
        <a href="./index-min-height.html">Min-Height</a> |
        <a href="./index-callback.html">Callback</a> |
        <a href="./index-form.html">Form</a>
      </p>
      <p>
        Original code by Nathan Smith, see <a href="http://sonspring.com/journal/jquery-iframe-sizing">original article</a>.
      </p>
      <div class="clear">
        &nbsp;
      </div>
    </div>
  </body>
</html>


================================================
FILE: demo/index-min-height.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/application.css" media="screen" rel="stylesheet" type="text/css">

    <script src="http://code.jquery.com/jquery-1.11.3.js"></script>
    <script src="../vendor/jquery.browser.js"></script>
    <script src="../dist/jquery-iframe-auto-height.js"></script>
    <script>
      jQuery(function() {
        $('iframe').iframeAutoHeight({
          debug: true,
          minHeight: 480,
          animate: true
        });
      });
    </script>
  </head>
  <body>
    <div id="container">
      <h1>
        jQuery » iFrame Auto Height Plugin
      </h1>
      <p>
        This <a href="http://jquery.com/">jQuery</a> plugin sets the height on iframes based on their content.
        <a href="http://github.com/house9/jquery-iframe-auto-height">http://github.com/house9/jquery-iframe-auto-height</a>
      </p>

      <div style="clear:both">
        <div style="float: left; width: 280px">
          <div class="p">
            This content is inside the container page. The iframe is to the right with a minHeight larger than the content.
          </div>
            <div class="p">
              The quick brown fox jumps over the lazy dog. The quick brown fox
              jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
              The quick brown fox jumps over the lazy dog. The quick brown fox
              jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
            </div>
            <div class="p">
              The quick brown fox jumps over the lazy dog. The quick brown fox
              jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
              The quick brown fox jumps over the lazy dog. The quick brown fox
              jumps  over the lazy dog. The quick brown fox jumps over the lazy dog.
            </div>
            <div class="p">
              The quick brown fox jumps over the lazy dog. The quick brown fox
              jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
              The quick brown fox jumps over the lazy dog. The quick brown fox
              jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
            </div>
        </div>
        <div style="float: left">
          <iframe style="height: 480px;" src="./xsmall.html" class="column" scrolling="no" frameborder="0"></iframe>
        </div>
        <div style="clear:both; line-height: 0px; font-size: 0px">
          &nbsp;
        </div>
      </div>

      <div class="clear">
        &nbsp;
      </div>
      <p>
        More: <a href="./">Main</a> |
        <a href="./index-with-pic.html">Another Pic</a> |
        <a href="./index-dynamic.html">Dynamic</a> |
        <a href="./index-min-height.html">Min-Height</a> |
        <a href="./index-callback.html">Callback</a> |
        <a href="./index-form.html">Form</a>
      </p>
      <p>
        Original code by Nathan Smith, see <a href="http://sonspring.com/journal/jquery-iframe-sizing">original article</a>.
      </p>
      <div class="clear">
        &nbsp;
      </div>
    </div>
  </body>
</html>


================================================
FILE: demo/index-with-pic.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/application.css" media="screen" rel="stylesheet" type="text/css">

    <script src="http://code.jquery.com/jquery-1.11.3.js"></script>
    <script src="../vendor/jquery.browser.js"></script>
    <script src="../dist/jquery-iframe-auto-height.js"></script>
    <script>
      jQuery(function() {
        $('iframe').iframeAutoHeight({
          debug: true,
          minHeight: 180,
          diagnostics: true
        });
      });
    </script>
  </head>
  <body>
    <div id="container">
      <h1>
        jQuery » iFrame Auto Height Plugin
      </h1>
      <p>
        This <a href="http://jquery.com/">jQuery</a> plugin sets the height on iframes based on their content.
        <a href="http://github.com/house9/jquery-iframe-auto-height">http://github.com/house9/jquery-iframe-auto-height</a>
      </p>

      <div style="clear:both">
        <div style="float: left; width: 280px">
          <div class="p">
            This content is inside the container page. The pic is in an iframe.
          </div>
          <div class="p">
            The quick brown fox jumps over the lazy dog. The quick brown fox
            jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
            The quick brown fox jumps over the lazy dog. The quick brown fox
            jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
          </div>
          <div class="p">
            The quick brown fox jumps over the lazy dog. The quick brown fox
            jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
            The quick brown fox jumps over the lazy dog. The quick brown fox
            jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
          </div>
          <div class="p">
            The quick brown fox jumps over the lazy dog. The quick brown fox
            jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
            The quick brown fox jumps over the lazy dog. The quick brown fox
            jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
          </div>
        </div>
        <div style="float: left">
          <iframe src="./castle.html" style="width: 660px; height: 680px;" scrolling="no" frameborder="0"></iframe>
        </div>
        <div style="clear:both; line-height: 0px; font-size: 0px">
          &nbsp;
        </div>
      </div>
      <div class="clear">
        &nbsp;
      </div>
      <p>
        More: <a href="./">Main</a> |
        <a href="./index-with-pic.html">Another Pic</a> |
        <a href="./index-dynamic.html">Dynamic</a> |
        <a href="./index-min-height.html">Min-Height</a> |
        <a href="./index-callback.html">Callback</a> |
        <a href="./index-form.html">Form</a>
      </p>
      <p>
        Original code by Nathan Smith, see <a href="http://sonspring.com/journal/jquery-iframe-sizing">original article</a>.
      </p>
      <div class="clear">
        &nbsp;
      </div>
    </div>
  </body>
</html>


================================================
FILE: demo/index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/application.css" media="screen" rel="stylesheet" type="text/css">

    <script src="http://code.jquery.com/jquery-1.11.3.js"></script>
    <script src="../vendor/jquery.browser.js"></script>
    <script src="../dist/jquery-iframe-auto-height.js"></script>
    <script>
      jQuery(function() {
        $('iframe').iframeAutoHeight({
          debug: true,
          minHeight: 180,
          diagnostics: true
        });
      });
    </script>
  </head>
  <body>
    <div id="container">
      <h1>
        jQuery » iFrame Auto Height Plugin
      </h1>
      <p>
        This <a href="http://jquery.com/">jQuery</a> plugin sets the height on iframes based on their content.
        <a href="http://github.com/house9/jquery-iframe-auto-height">http://github.com/house9/jquery-iframe-auto-height</a>
      </p>

      <iframe style="height: 240px;" src="./pic1.html" class="photo" scrolling="no" frameborder="0"></iframe>

      <iframe style="height: 230px;" src="./small.html" class="column" scrolling="no" frameborder="0"></iframe>
      <iframe style="height: 230px;" src="./small.html" class="column" scrolling="no" frameborder="0"></iframe>
      <iframe style="height: 230px;" src="./small.html" class="column" scrolling="no" frameborder="0"></iframe>
      <iframe style="height: 230px;" src="./small.html" class="column" scrolling="no" frameborder="0"></iframe>

      <div class="clear">&nbsp;</div>

      <iframe style="height: 501px;" src="./medium.html" class="column" scrolling="no" frameborder="0"></iframe>
      <iframe style="height: 501px;" src="./medium.html" class="column" scrolling="no" frameborder="0"></iframe>
      <iframe style="height: 907px;" src="./medium.html" class="column" scrolling="no" frameborder="0"></iframe>
      <iframe style="height: 501px;" src="./medium.html" id="test-case" class="column" scrolling="no" frameborder="0"></iframe>

      <div class="clear">
        &nbsp;
      </div>
      <p>
        More: <a href="./">Main</a> |
        <a href="./index-with-pic.html">Another Pic</a> |
        <a href="./index-dynamic.html">Dynamic</a> |
        <a href="./index-min-height.html">Min-Height</a> |
        <a href="./index-callback.html">Callback</a> |
        <a href="./index-form.html">Form</a>
      </p>
      <p>
        Original code by Nathan Smith, see <a href="http://sonspring.com/journal/jquery-iframe-sizing">original article</a>.
      </p>
      <div class="clear">
        &nbsp;
      </div>
    </div>
  </body>
</html>


================================================
FILE: demo/large.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <h2>large content</h2>
<p>
  Link:
        <a href="./xsmall.html">XS</a> |
        <a href="./small.html">S</a> |
        <a href="./medium.html">M</a> |
        <a href="./large.html">L</a> |
        <a href="./xlarge.html">XL</a> |
        <a href="./xxlarge.html">XXL</a>
</p>

  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>

    </div>
  </body>
</html>


================================================
FILE: demo/medium.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <h2>medium content</h2>
      <p>
        Link:
        <a href="./xsmall.html">XS</a> |
        <a href="./small.html">S</a> |
        <a href="./medium.html">M</a> |
        <a href="./large.html">L</a> |
        <a href="./xlarge.html">XL</a> |
        <a href="./xxlarge.html">XXL</a>
      </p>

        <p>
      	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
        <p>
      	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>
        <p>
      	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>

    </div>
  </body>
</html>


================================================
FILE: demo/pic1.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <p>
        <img alt="Arizona Horizon" src="assets/panoramic.jpg">
      </p>
    </div>
  </body>
</html>


================================================
FILE: demo/small.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <h2>small content</h2>
      <p>
        Link:
        <a href="./xsmall.html">XS</a> |
        <a href="./small.html">S</a> |
        <a href="./medium.html">M</a> |
        <a href="./large.html">L</a> |
        <a href="./xlarge.html">XL</a> |
        <a href="./xxlarge.html">XXL</a>
      </p>

      <p>
      	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
      eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
      minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
      ex ea commodo consequat.
      </p>

    </div>
  </body>
</html>


================================================
FILE: demo/xlarge.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <h2>x-large content</h2>
<p>
  Link:
        <a href="./xsmall.html">XS</a> |
        <a href="./small.html">S</a> |
        <a href="./medium.html">M</a> |
        <a href="./large.html">L</a> |
        <a href="./xlarge.html">XL</a> |
        <a href="./xxlarge.html">XXL</a>
</p>

  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>

    </div>
  </body>
</html>


================================================
FILE: demo/xsmall.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <h2>x-small content</h2>
<p>
  Link:
        <a href="./xsmall.html">XS</a> |
        <a href="./small.html">S</a> |
        <a href="./medium.html">M</a> |
        <a href="./large.html">L</a> |
        <a href="./xlarge.html">XL</a> |
        <a href="./xxlarge.html">XXL</a>
</p>

Too small.

    </div>
  </body>
</html>


================================================
FILE: demo/xxlarge.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>jQuery - iFrame Auto Height Plugin</title>
    <link href="assets/iframe_content.css" media="screen" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="container">
      <h2>xx-large content</h2>
<p>
  Link:
        <a href="./xsmall.html">XS</a> |
        <a href="./small.html">S</a> |
        <a href="./medium.html">M</a> |
        <a href="./large.html">L</a> |
        <a href="./xlarge.html">XL</a> |
        <a href="./xxlarge.html">XXL</a>
</p>

  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>
  <p>
	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.
</p>

    </div>
  </body>
</html>


================================================
FILE: dist/jquery-iframe-auto-height.js
================================================
/*! jquery-iframe-auto-height - v2.0.0
 *  Release on: 2015-06-28
 *  Copyright (c) 2015 Jesse House
 *  Licensed The Unlicense */
(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module unless amdModuleId is set
    define([], function () {
      return (factory());
    });
  } else if (typeof exports === 'object') {
    // Node. Does not work with strict CommonJS, but
    // only CommonJS-like environments that support module.exports,
    // like Node.
    module.exports = factory();
  } else {
    factory();
  }
}(this, function () {

(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    var undef;
    if ($.browser === undef) {
      var message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.browser.js");
      alert(message.join("\n"));
      return $;
    }

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        maxHeight: 0,
        callback: function () {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.parent).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera', 'chrome'];
      var strategies = {};
      strategies['default'] = function (iframe, $iframeBody, options) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function (index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      var iframeDoc = this.contentDocument || this.contentWindow.document;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.parent).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight;
        }

        if (options.maxHeight > 0 && newHeight > options.maxHeight) {
          debug("new height is greater than maxHeight");
          newHeight = options.maxHeight;
        }

        newHeight += options.heightOffset;

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera || $.browser.chrome) {
        debug("browser is webkit (Safari/Chrome) or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        if(iframeDoc.readyState  === 'complete') {
          resizeHeight(this);
        } else {
          $(this).load(function () {
            resizeHeight(this);
          });
        }
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


}));


================================================
FILE: package.json
================================================
{
  "name": "jquery-iframe-auto-height",
  "version": "2.0.0",
  "description": "jQuery plugin to set the height of an iframe to its contents height",
  "main": "dist/jquery-iframe-auto-height.js",
  "readmeFilename": "README.md",
  "author": {
    "name": "Jesse House",
    "email": "mail@jessehouse.com"
  },
  "repository": {
    "url": "https://github.com/house9/jquery-iframe-auto-height",
    "type": "git"
  },
  "license": "The Unlicense",
  "engines": {
    "node": ">= 0.10.0"
  },
  "devDependencies": {
    "grunt": "^0.4.5",
    "grunt-contrib-concat": "^0.4.0",
    "grunt-contrib-jshint": "^0.10.0",
    "grunt-contrib-uglify": "^0.5.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-contrib-clean": "^0.5.0",
    "grunt-jscs": "^1.1.0",
    "grunt-lintspaces": "^0.5.1",
    "jit-grunt": "^0.7.0",
    "jshint-stylish": "^0.2.0",
    "load-grunt-config": "^0.10.0",
    "grunt-umd": "^2.3.0",
    "time-grunt": "^0.3.2",
    "grunt-conventional-changelog": "^1.1.0",
    "grunt-groc": "^0.4.5"
  }
}


================================================
FILE: release/2.0.0+.js
================================================
alert('Find 2.0.0 + in the dist directory');


================================================
FILE: release/README
================================================
## NOTE

* use files from the dist directory for 2.0.0 and above
* this directory exists for legacy reaons only


================================================
FILE: release/jquery.browser.js
================================================
(function( jQuery ) {
	var matched,
		userAgent = navigator.userAgent || "";

	// Use of jQuery.browser is frowned upon.
	// More details: http://api.jquery.com/jQuery.browser
	// jQuery.uaMatch maintained for back-compat
	jQuery.uaMatch = function( ua ) {
		ua = ua.toLowerCase();

		var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
			/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
			/(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
			/(msie) ([\w.]+)/.exec( ua ) ||
			ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
			[];

		return {
			browser: match[ 1 ] || "",
			version: match[ 2 ] || "0"
		};
	};

	matched = jQuery.uaMatch( userAgent );

	jQuery.browser = {};

	if ( matched.browser ) {
		jQuery.browser[ matched.browser ] = true;
		jQuery.browser.version = matched.version;
	}

	// Deprecated, use jQuery.browser.webkit instead
	// Maintained for back-compat only
	if ( jQuery.browser.webkit ) {
		jQuery.browser.safari = true;
	}

}( jQuery ));

================================================
FILE: release/jquery.iframe-auto-height.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.9.5
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)
  adamjgray (https://github.com/adamjgray)
  Jens Bissinger (https://github.com/dpree)
  jbreton (https://github.com/jbreton)
  mindmelting (https://github.com/mindmelting)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    var undef;
    if ($.browser === undef) {
      var message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.browser.js");
      alert(message.join("\n"));
      return $;
    }

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        maxHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera'];
      var strategies = {};
      strategies['default'] = function (iframe, $iframeBody, options, browser) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function (index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      var iframeDoc = this.contentDocument || this.contentWindow.document;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight;
        }

        if (options.maxHeight > 0 && newHeight > options.maxHeight) {
          debug("new height is greater than maxHeight");
          newHeight = options.maxHeight;
        }

        newHeight += options.heightOffset;

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera || $.browser.chrome) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        if(iframeDoc.readyState  === 'complete') {
          resizeHeight(this);
        } else {
          $(this).load(function () {
            resizeHeight(this);
          });
        }
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


================================================
FILE: release/jquery.iframe-auto-height.plugin.1.5.0.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.5.0  
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  
  File: jquery.iframe-auto-height.plugin.js  
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing      
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {
    
    // set default option values
    var options = $.extend({
        heightOffset: 0, 
        minHeight: 0, 
        callback: function (newHeight) {},
        debug: false,
        diagnostics: false // used for development only
      }, spec);
    
    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }    

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");      
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");                  
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");        
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block         
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }
    
    // show all option values
    debug(options);    

    // ******************************************************
    // iterate over the matched elements passed to the plugin
    $(this).each(function () {
      // for use by webkit only
      var loadCounter = 0;
            
      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }     
     
        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var newHeight = $body[0].scrollHeight + options.heightOffset;
        
        if (newHeight < options.minHeight) {          
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        iframe.style.height = newHeight + 'px';
        options.callback({newFrameHeight: newHeight});
      }
      
      // debug me
      debug(this);    
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }      
      
      // Check if browser is Opera or Safari (Webkit really, so includes Chrome)
      if ($.browser.safari || $.browser.opera) {
        debug("browser is webkit or opera");
        
        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;  
          // Reset iframe height to 0 to force new frame size to fit window properly          
          iframe.style.height = '0px';                     
          var delayedResize = function () {
            resizeHeight(iframe);
          };
          
          if (loadCounter === 0) {
            delay = 500; // delay the first one
          }
          
          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;          
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser
             
    }); // $(this).each(function () {    
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


================================================
FILE: release/jquery.iframe-auto-height.plugin.1.6.0.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.6.0  
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  
  File: jquery.iframe-auto-height.plugin.js  
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing      
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {
    
    // set default option values
    var options = $.extend({
        heightOffset: 0, 
        minHeight: 0, 
        callback: function (newHeight) {},
        debug: false,
        diagnostics: false // used for development only
      }, spec);
    
    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }    

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");      
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");                  
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");        
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block         
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }
    
    // show all option values
    debug(options);    

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {
     
      // for use by webkit only
      var loadCounter = 0;
            
      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }     
     
        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var newHeight = $body[0].scrollHeight + options.heightOffset;
        
        if (newHeight < options.minHeight) {          
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        iframe.style.height = newHeight + 'px';
        
        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      }
      
      // debug me
      debug(this);    
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }      
      
      // Check if browser is Opera or Safari (Webkit really, so includes Chrome)
      if ($.browser.safari || $.browser.opera) {
        debug("browser is webkit or opera");
        
        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;  
          // Reset iframe height to 0 to force new frame size to fit window properly          
          iframe.style.height = '0px';                     
          var delayedResize = function () {
            resizeHeight(iframe);
          };
          
          if (loadCounter === 0) {
            delay = 500; // delay the first one
          }
          
          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;          
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser
             
    }); // $(this).each(function () {    
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


================================================
FILE: release/jquery.iframe-auto-height.plugin.1.7.0.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.7.0
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false // used for development only
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // for use by webkit only
      var loadCounter = 0;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var newHeight = $body[0].scrollHeight + options.heightOffset;

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      }

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // Check if browser is Opera or Safari (Webkit really, so includes Chrome)
      if ($.browser.safari || $.browser.opera) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;
          // Reset iframe height to 0 to force new frame size to fit window properly
          iframe.style.height = '0px';
          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            delay = 500; // delay the first one
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


================================================
FILE: release/jquery.iframe-auto-height.plugin.1.7.1.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.7.1
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false // used for development only
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // for use by webkit only
      var loadCounter = 0;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var newHeight = $body[0].scrollHeight + options.heightOffset;
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      }

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // Check if browser is Opera or Safari (Webkit really, so includes Chrome)
      if ($.browser.safari || $.browser.opera) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


================================================
FILE: release/jquery.iframe-auto-height.plugin.1.8.0.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.8.0
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)
  adamjgray (https://github.com/adamjgray)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera'];
      var strategies = [];
      strategies['default'] = function (iframe, $iframeBody, options, browser) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function(index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Opera or Safari (Webkit really, so includes Chrome)
      if ($.browser.safari || $.browser.opera) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {

================================================
FILE: release/jquery.iframe-auto-height.plugin.1.9.0.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.9.0
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)
  adamjgray (https://github.com/adamjgray)
  Jens Bissinger (https://github.com/dpree)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera'];
      var strategies = [];
      strategies['default'] = function (iframe, $iframeBody, options, browser) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function(index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {

================================================
FILE: release/jquery.iframe-auto-height.plugin.1.9.1.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.9.1
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)
  adamjgray (https://github.com/adamjgray)
  Jens Bissinger (https://github.com/dpree)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    var undef;
    if ($.browser == undef) {
      message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/jquery/jquery-browser/master/src/jquery.browser.js");
      alert(message.join("\n"));
      return $;
    }

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera'];
      var strategies = [];
      strategies['default'] = function (iframe, $iframeBody, options, browser) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function(index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {

================================================
FILE: release/jquery.iframe-auto-height.plugin.1.9.2.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.9.2
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)
  adamjgray (https://github.com/adamjgray)
  Jens Bissinger (https://github.com/dpree)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    var undef;
    if ($.browser === undef) {
      var message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/house9/jquery-iframe-auto-height/release/jquery.browser.js");
      alert(message.join("\n"));
      return $;
    }

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera'];
      var strategies = [];
      strategies['default'] = function (iframe, $iframeBody, options, browser) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function (index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {

================================================
FILE: release/jquery.iframe-auto-height.plugin.1.9.3.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.9.3
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)
  adamjgray (https://github.com/adamjgray)
  Jens Bissinger (https://github.com/dpree)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    var undef;
    if ($.browser === undef) {
      var message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.browser.js");
      alert(message.join("\n"));
      return $;
    }

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera'];
      var strategies = [];
      strategies['default'] = function (iframe, $iframeBody, options, browser) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function (index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight + options.heightOffset;
        }

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {

================================================
FILE: release/jquery.iframe-auto-height.plugin.1.9.4.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.9.4
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)
  adamjgray (https://github.com/adamjgray)
  Jens Bissinger (https://github.com/dpree)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    var undef;
    if ($.browser === undef) {
      var message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.browser.js");
      alert(message.join("\n"));
      return $;
    }

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        maxHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera'];
      var strategies = [];
      strategies['default'] = function (iframe, $iframeBody, options, browser) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function (index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight;
        }

        if (options.maxHeight > 0 && newHeight > options.maxHeight) {
          debug("new height is greater than maxHeight");
          newHeight = options.maxHeight;
        }

        newHeight += options.heightOffset;

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        $(this).load(function () {
          resizeHeight(this);
        });
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


================================================
FILE: release/jquery.iframe-auto-height.plugin.1.9.5.js
================================================
/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: false, newcap: true, immed: true */
/*global window, console, jQuery, setTimeout */

/*
  Plugin: iframe autoheight jQuery Plugin
  Version: 1.9.5
  Author and Contributors
  ========================================
  NATHAN SMITH (http://sonspring.com/)
  Jesse House (https://github.com/house9)
  aaron manela (https://github.com/aaronmanela)
  Hideki Abe (https://github.com/hideki-a)
  Patrick Clark (https://github.com/hellopat)
  ChristineP2 (https://github.com/ChristineP2)
  Mmjavellana (https://github.com/Mmjavellana)
  yiqing-95 (https://github.com/yiqing-95)
  jcaspian (https://github.com/jcaspian)
  adamjgray (https://github.com/adamjgray)
  Jens Bissinger (https://github.com/dpree)
  jbreton (https://github.com/jbreton)
  mindmelting (https://github.com/mindmelting)

  File: jquery.iframe-auto-height.plugin.js
  Remarks: original code from http://sonspring.com/journal/jquery-iframe-sizing
  Description: when the page loads set the height of an iframe based on the height of its contents
  see README: http://github.com/house9/jquery-iframe-auto-height

*/
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    var undef;
    if ($.browser === undef) {
      var message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.browser.js");
      alert(message.join("\n"));
      return $;
    }

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        maxHeight: 0,
        callback: function (newHeight) {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.top.document).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera'];
      var strategies = {};
      strategies['default'] = function (iframe, $iframeBody, options, browser) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function (index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      var iframeDoc = this.contentDocument || this.contentWindow.document;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.top.document).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight;
        }

        if (options.maxHeight > 0 && newHeight > options.maxHeight) {
          debug("new height is greater than maxHeight");
          newHeight = options.maxHeight;
        }

        newHeight += options.heightOffset;

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera || $.browser.chrome) {
        debug("browser is webkit or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        if(iframeDoc.readyState  === 'complete') {
          resizeHeight(this);
        } else {
          $(this).load(function () {
            resizeHeight(this);
          });
        }
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


================================================
FILE: src/jquery-iframe-auto-height.js
================================================
(function ($) {
  $.fn.iframeAutoHeight = function (spec) {

    var undef;
    if ($.browser === undef) {
      var message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.browser.js");
      alert(message.join("\n"));
      return $;
    }

    // set default option values
    var options = $.extend({
        heightOffset: 0,
        minHeight: 0,
        maxHeight: 0,
        callback: function () {},
        animate: false,
        debug: false,
        diagnostics: false, // used for development only
        resetToMinHeight: false,
        triggerFunctions: [],
        heightCalculationOverrides: []
      }, spec);

    // logging
    function debug(message) {
      if (options.debug && options.debug === true && window.console) {
        console.log(message);
      }
    }

    // not used by production code
    function showDiagnostics(iframe, calledFrom) {
      debug("Diagnostics from '" + calledFrom + "'");
      try {
        debug("  " + $(iframe, window.parent).contents().find('body')[0].scrollHeight + " for ...find('body')[0].scrollHeight");
        debug("  " + $(iframe.contentWindow.document).height() + " for ...contentWindow.document).height()");
        debug("  " + $(iframe.contentWindow.document.body).height() + " for ...contentWindow.document.body).height()");
      } catch (ex) {
        // ie fails when called during for each, ok later on
        // probably not an issue if called in a document ready block
        debug("  unable to check in this state");
      }
      debug("End diagnostics -> results vary by browser and when diagnostics are requested");
    }

    // show all option values
    debug(options);

    // ******************************************************
    // iterate over the matched elements passed to the plugin ; return will make it chainable
    return this.each(function () {

      // ******************************************************
      // http://api.jquery.com/jQuery.browser/
      var strategyKeys = ['webkit', 'mozilla', 'msie', 'opera', 'chrome'];
      var strategies = {};
      strategies['default'] = function (iframe, $iframeBody, options) {
        // NOTE: this is how the plugin determines the iframe height, override if you need custom
        return $iframeBody[0].scrollHeight + options.heightOffset;
      };

      jQuery.each(strategyKeys, function (index, value) {
        // use the default strategy for all browsers, can be overridden if desired
        strategies[value] = strategies['default'];
      });

      // override strategies if registered in options
      jQuery.each(options.heightCalculationOverrides, function (index, value) {
        strategies[value.browser] = value.calculation;
      });

      function findStrategy(browser) {
        var strategy = null;

        jQuery.each(strategyKeys, function (index, value) {
          if (browser[value]) {
            strategy = strategies[value];
            return false;
          }
        });

        if (strategy === null) {
          strategy = strategies['default'];
        }

        return strategy;
      }
      // ******************************************************

      // for use by webkit only
      var loadCounter = 0;

      var iframeDoc = this.contentDocument || this.contentWindow.document;

      // resizeHeight
      function resizeHeight(iframe) {
        if (options.diagnostics) {
          showDiagnostics(iframe, "resizeHeight");
        }

        // set the iframe size to minHeight so it'll get smaller on resizes in FF and IE
        if (options.resetToMinHeight && options.resetToMinHeight === true) {
          iframe.style.height = options.minHeight + 'px';
        }

        // get the iframe body height and set inline style to that plus a little
        var $body = $(iframe, window.parent).contents().find('body');
        var strategy = findStrategy($.browser);
        var newHeight = strategy(iframe, $body, options, $.browser);
        debug(newHeight);

        if (newHeight < options.minHeight) {
          debug("new height is less than minHeight");
          newHeight = options.minHeight;
        }

        if (options.maxHeight > 0 && newHeight > options.maxHeight) {
          debug("new height is greater than maxHeight");
          newHeight = options.maxHeight;
        }

        newHeight += options.heightOffset;

        debug("New Height: " + newHeight);
        if (options.animate) {
          $(iframe).animate({height: newHeight + 'px'}, {duration: 500});
        } else {
          iframe.style.height = newHeight + 'px';
        }

        options.callback.apply($(iframe), [{newFrameHeight: newHeight}]);
      } // END resizeHeight

      // debug me
      debug(this);
      if (options.diagnostics) {
        showDiagnostics(this, "each iframe");
      }

      // if trigger functions are registered, invoke them
      if (options.triggerFunctions.length > 0) {
        debug(options.triggerFunctions.length + " trigger Functions");
        for (var i = 0; i < options.triggerFunctions.length; i++) {
          options.triggerFunctions[i](resizeHeight, this);
        }
      }

      // Check if browser is Webkit (Safari/Chrome) or Opera
      if ($.browser.webkit || $.browser.opera || $.browser.chrome) {
        debug("browser is webkit (Safari/Chrome) or opera");

        // Start timer when loaded.
        $(this).load(function () {
          var delay = 0;
          var iframe = this;

          var delayedResize = function () {
            resizeHeight(iframe);
          };

          if (loadCounter === 0) {
            // delay the first one
            delay = 500;
          } else {
            // Reset iframe height to 0 to force new frame size to fit window properly
            // this is only an issue when going from large to small iframe, not executed on page load
            iframe.style.height = options.minHeight + 'px';
          }

          debug("load delay: " + delay);
          setTimeout(delayedResize, delay);
          loadCounter++;
        });

        // Safari and Opera need a kick-start.
        var source = $(this).attr('src');
        $(this).attr('src', '');
        $(this).attr('src', source);
      } else {
        // For other browsers.
        if(iframeDoc.readyState  === 'complete') {
          resizeHeight(this);
        } else {
          $(this).load(function () {
            resizeHeight(this);
          });
        }
      } // if browser

    }); // $(this).each(function () {
  }; // $.fn.iframeAutoHeight = function (options) {
}(jQuery)); // (function ($) {


================================================
FILE: tasks/aliases.yaml
================================================
default:
  - build

build:
  - clean
  - jshint:src
  - lintspaces:src
  - umd
  - concat
  - uglify


================================================
FILE: tasks/changelog.js
================================================
module.exports = {
  options: {
    dest: 'CHANGELOG.md'
  }
};


================================================
FILE: tasks/clean.js
================================================
module.exports = {
  dist: 'dist'
};


================================================
FILE: tasks/concat.js
================================================
module.exports = {
  options: {
    banner: '<%= banner %>',
    stripBanners: true
  },
  dist: {
    src: ['dist/<%= pkg.name.replace(/.js$/, "") %>.js'],
    dest: 'dist/<%= pkg.name.replace(/.js$/, "") %>.js'
  }
};


================================================
FILE: tasks/groc.js
================================================
module.exports = {
  groc: {
    files: {
      src: ['src/**/*.js']
    },
    options: {
      out: 'docs/'
    }
  }
};


================================================
FILE: tasks/jshint.js
================================================
module.exports = {
  options: {
    jshintrc: '.jshintrc',
    reporter: require('jshint-stylish')
  },
  gruntfile: {
    src: ['Gruntfile.js', 'tasks/{,*/}*.js']
  },
  src: {
    src: ['src/**/*.js']
  },
  test: {
    src: ['test/**/*.js']
  }
};


================================================
FILE: tasks/lintspaces.js
================================================
module.exports = {
  options: {
    editorconfig: '.editorconfig'
  },
  gruntfile: {
    src: ['Gruntfile.js', 'tasks/{,*/}*.js']
  },
  src: {
    src: ['src/**/*.js']
  },
  test: {
    src: ['test/spec/**/*.js']
  }
};


================================================
FILE: tasks/uglify.js
================================================
module.exports = {
  options: {
    banner: '<%= banner %>'
  },
  dist: {
    src: '<%= concat.dist.dest %>',
    dest: 'dist/<%= pkg.name.replace(/.js$/, "") %>.min.js'
  }
};


================================================
FILE: tasks/umd.js
================================================
module.exports = {
  src: {
    template: 'umd',
    indent: '  ',
    src: 'src/<%= pkg.name.replace(/.js$/, "") %>.js',
    dest: 'dist/<%= pkg.name.replace(/.js$/, "") %>.js',
    returnExportsGlobal: 'jquery-iframe-auto-height',
    deps: {
      default: [],
      amd: [],
      cjs: [],
      global: []
    }
  }
};


================================================
FILE: tasks/watch.js
================================================
module.exports = {
  gruntfile: {
    files: '<%= jshint.gruntfile.src %>',
    tasks: [
      'jshint:gruntfile',
      'jscs:gruntfile',
      'lintspaces:gruntfile'
    ]
  },
  src: {
    files: '<%= jshint.src.src %>',
    tasks: [
      'build'
    ]
  },
  test: {
    files: '<%= jshint.test.src %>',
    tasks: [
      'jshint:test',
      'lintspaces:test'
    ]
  }
};


================================================
FILE: vendor/jquery.browser.js
================================================
(function( jQuery ) {
	var matched,
		userAgent = navigator.userAgent || "";

	// Use of jQuery.browser is frowned upon.
	// More details: http://api.jquery.com/jQuery.browser
	// jQuery.uaMatch maintained for back-compat
	jQuery.uaMatch = function( ua ) {
		ua = ua.toLowerCase();

		var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
			/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
			/(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
			/(msie) ([\w.]+)/.exec( ua ) ||
			ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
			[];

		return {
			browser: match[ 1 ] || "",
			version: match[ 2 ] || "0"
		};
	};

	matched = jQuery.uaMatch( userAgent );

	jQuery.browser = {};

	if ( matched.browser ) {
		jQuery.browser[ matched.browser ] = true;
		jQuery.browser.version = matched.version;
	}

	// Deprecated, use jQuery.browser.webkit instead
	// Maintained for back-compat only
	if ( jQuery.browser.webkit ) {
		jQuery.browser.safari = true;
	}

}( jQuery ));
Download .txt
gitextract_ye6a3ol6/

├── .editorconfig
├── .gitignore
├── .jshintrc
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── Gruntfile.js
├── README-legacy.md
├── README.md
├── bower.json
├── demo/
│   ├── assets/
│   │   ├── application.css
│   │   ├── iframe_content.css
│   │   └── normalize.css
│   ├── castle.html
│   ├── form_1.html
│   ├── form_1_confirm.html
│   ├── index-callback.html
│   ├── index-dynamic.html
│   ├── index-form.html
│   ├── index-min-height.html
│   ├── index-with-pic.html
│   ├── index.html
│   ├── large.html
│   ├── medium.html
│   ├── pic1.html
│   ├── small.html
│   ├── xlarge.html
│   ├── xsmall.html
│   └── xxlarge.html
├── dist/
│   └── jquery-iframe-auto-height.js
├── package.json
├── release/
│   ├── 2.0.0+.js
│   ├── README
│   ├── jquery.browser.js
│   ├── jquery.iframe-auto-height.js
│   ├── jquery.iframe-auto-height.plugin.1.5.0.js
│   ├── jquery.iframe-auto-height.plugin.1.6.0.js
│   ├── jquery.iframe-auto-height.plugin.1.7.0.js
│   ├── jquery.iframe-auto-height.plugin.1.7.1.js
│   ├── jquery.iframe-auto-height.plugin.1.8.0.js
│   ├── jquery.iframe-auto-height.plugin.1.9.0.js
│   ├── jquery.iframe-auto-height.plugin.1.9.1.js
│   ├── jquery.iframe-auto-height.plugin.1.9.2.js
│   ├── jquery.iframe-auto-height.plugin.1.9.3.js
│   ├── jquery.iframe-auto-height.plugin.1.9.4.js
│   └── jquery.iframe-auto-height.plugin.1.9.5.js
├── src/
│   └── jquery-iframe-auto-height.js
├── tasks/
│   ├── aliases.yaml
│   ├── changelog.js
│   ├── clean.js
│   ├── concat.js
│   ├── groc.js
│   ├── jshint.js
│   ├── lintspaces.js
│   ├── uglify.js
│   ├── umd.js
│   └── watch.js
└── vendor/
    └── jquery.browser.js
Download .txt
SYMBOL INDEX (52 symbols across 14 files)

FILE: dist/jquery-iframe-auto-height.js
  function debug (line 49) | function debug(message) {
  function showDiagnostics (line 56) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 96) | function findStrategy(browser) {
  function resizeHeight (line 120) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.js
  function debug (line 57) | function debug(message) {
  function showDiagnostics (line 64) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 104) | function findStrategy(browser) {
  function resizeHeight (line 128) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.5.0.js
  function debug (line 36) | function debug(message) {
  function showDiagnostics (line 43) | function showDiagnostics(iframe, calledFrom) {
  function resizeHeight (line 67) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.6.0.js
  function debug (line 37) | function debug(message) {
  function showDiagnostics (line 44) | function showDiagnostics(iframe, calledFrom) {
  function resizeHeight (line 69) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.7.0.js
  function debug (line 39) | function debug(message) {
  function showDiagnostics (line 46) | function showDiagnostics(iframe, calledFrom) {
  function resizeHeight (line 71) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.7.1.js
  function debug (line 39) | function debug(message) {
  function showDiagnostics (line 46) | function showDiagnostics(iframe, calledFrom) {
  function resizeHeight (line 71) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.8.0.js
  function debug (line 43) | function debug(message) {
  function showDiagnostics (line 50) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 90) | function findStrategy(browser) {
  function resizeHeight (line 112) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.9.0.js
  function debug (line 44) | function debug(message) {
  function showDiagnostics (line 51) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 91) | function findStrategy(browser) {
  function resizeHeight (line 113) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.9.1.js
  function debug (line 54) | function debug(message) {
  function showDiagnostics (line 61) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 101) | function findStrategy(browser) {
  function resizeHeight (line 123) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.9.2.js
  function debug (line 54) | function debug(message) {
  function showDiagnostics (line 61) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 101) | function findStrategy(browser) {
  function resizeHeight (line 123) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.9.3.js
  function debug (line 54) | function debug(message) {
  function showDiagnostics (line 61) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 101) | function findStrategy(browser) {
  function resizeHeight (line 123) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.9.4.js
  function debug (line 55) | function debug(message) {
  function showDiagnostics (line 62) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 102) | function findStrategy(browser) {
  function resizeHeight (line 124) | function resizeHeight(iframe) {

FILE: release/jquery.iframe-auto-height.plugin.1.9.5.js
  function debug (line 57) | function debug(message) {
  function showDiagnostics (line 64) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 104) | function findStrategy(browser) {
  function resizeHeight (line 128) | function resizeHeight(iframe) {

FILE: src/jquery-iframe-auto-height.js
  function debug (line 29) | function debug(message) {
  function showDiagnostics (line 36) | function showDiagnostics(iframe, calledFrom) {
  function findStrategy (line 76) | function findStrategy(browser) {
  function resizeHeight (line 100) | function resizeHeight(iframe) {
Condensed preview — 57 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (184K chars).
[
  {
    "path": ".editorconfig",
    "chars": 214,
    "preview": "# http://editorconfig.org\nroot = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_tr"
  },
  {
    "path": ".gitignore",
    "chars": 141,
    "preview": ".DS_Store\n*/.DS_Store\n\n*.pnproj\n.bundle\n_preview_README.html\n\nnode_modules\n./dist\ntest/temp\ntmp\ndocs\n.DS_Store\nnpm-debug"
  },
  {
    "path": ".jshintrc",
    "chars": 663,
    "preview": "{\n  \"node\": true,\n  \"browser\": true,\n  \"esnext\": true,\n  \"bitwise\": true,\n  \"camelcase\": true,\n  \"curly\": true,\n  \"eqeqe"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 150,
    "preview": "See: [https://github.com/house9/jquery-iframe-auto-height#plugin-development](https://github.com/house9/jquery-iframe-au"
  },
  {
    "path": "CONTRIBUTORS.md",
    "chars": 788,
    "preview": "# CONTRIBUTORS\n\n* aaron manela (https://github.com/aaronmanela)\n* adamjgray (https://github.com/adamjgray)\n* Bruno Wego "
  },
  {
    "path": "Gruntfile.js",
    "chars": 765,
    "preview": "/*global module:false*/\nmodule.exports = function (grunt) {\n  'use strict';\n\n  require('time-grunt')(grunt);\n\n  var conf"
  },
  {
    "path": "README-legacy.md",
    "chars": 11209,
    "preview": "#  jQuery iframe auto height plugin\n\n## Alternatives:\n\nYou may want to consider one of these alternative solutions for y"
  },
  {
    "path": "README.md",
    "chars": 9448,
    "preview": "#  jQuery iframe auto height plugin\n\n## Alternatives:\n\nYou may want to consider one of these alternative solutions for y"
  },
  {
    "path": "bower.json",
    "chars": 571,
    "preview": "{\n  \"name\": \"jquery-iframe-auto-height\",\n  \"version\": \"2.0.0\",\n  \"description\": \"jQuery plugin to set the height of an i"
  },
  {
    "path": "demo/assets/application.css",
    "chars": 1627,
    "preview": "/*\n * This is a manifest file that'll automatically include all the stylesheets available in this directory\n * and any s"
  },
  {
    "path": "demo/assets/iframe_content.css",
    "chars": 290,
    "preview": "* {\n  margin: 0;\n  padding: 0;\n}\n\nbody {\n  background: #ddd;\n  color: #333;\n  font: 11px Arial, sans-serif;\n  padding: 2"
  },
  {
    "path": "demo/assets/normalize.css",
    "chars": 7546,
    "preview": "/*! normalize.css v2.1.3 | MIT License | git.io/normalize */\n\n/* ======================================================="
  },
  {
    "path": "demo/castle.html",
    "chars": 534,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/form_1.html",
    "chars": 6705,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/form_1_confirm.html",
    "chars": 398,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/index-callback.html",
    "chars": 4634,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/index-dynamic.html",
    "chars": 3145,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/index-form.html",
    "chars": 2003,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/index-min-height.html",
    "chars": 3263,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/index-with-pic.html",
    "chars": 3184,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/index.html",
    "chars": 2674,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/large.html",
    "chars": 2082,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/medium.html",
    "chars": 1474,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/pic1.html",
    "chars": 407,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/small.html",
    "chars": 909,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/xlarge.html",
    "chars": 2819,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/xsmall.html",
    "chars": 625,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "demo/xxlarge.html",
    "chars": 5515,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <title>jQuer"
  },
  {
    "path": "dist/jquery-iframe-auto-height.js",
    "chars": 7511,
    "preview": "/*! jquery-iframe-auto-height - v2.0.0\n *  Release on: 2015-06-28\n *  Copyright (c) 2015 Jesse House\n *  Licensed The Un"
  },
  {
    "path": "package.json",
    "chars": 1019,
    "preview": "{\n  \"name\": \"jquery-iframe-auto-height\",\n  \"version\": \"2.0.0\",\n  \"description\": \"jQuery plugin to set the height of an i"
  },
  {
    "path": "release/2.0.0+.js",
    "chars": 45,
    "preview": "alert('Find 2.0.0 + in the dist directory');\n"
  },
  {
    "path": "release/README",
    "chars": 112,
    "preview": "## NOTE\n\n* use files from the dist directory for 2.0.0 and above\n* this directory exists for legacy reaons only\n"
  },
  {
    "path": "release/jquery.browser.js",
    "chars": 984,
    "preview": "(function( jQuery ) {\n\tvar matched,\n\t\tuserAgent = navigator.userAgent || \"\";\n\n\t// Use of jQuery.browser is frowned upon."
  },
  {
    "path": "release/jquery.iframe-auto-height.js",
    "chars": 8132,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.5.0.js",
    "chars": 4768,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.6.0.js",
    "chars": 4881,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.7.0.js",
    "chars": 4842,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.7.1.js",
    "chars": 5025,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.8.0.js",
    "chars": 7097,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.9.0.js",
    "chars": 7121,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.9.1.js",
    "chars": 7592,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.9.2.js",
    "chars": 7606,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.9.3.js",
    "chars": 7613,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.9.4.js",
    "chars": 7836,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "release/jquery.iframe-auto-height.plugin.1.9.5.js",
    "chars": 8132,
    "preview": "/*jslint white: true, indent: 2, onevar: false, browser: true, undef: true, nomen: false, eqeqeq: true, plusplus: false,"
  },
  {
    "path": "src/jquery-iframe-auto-height.js",
    "chars": 6892,
    "preview": "(function ($) {\n  $.fn.iframeAutoHeight = function (spec) {\n\n    var undef;\n    if ($.browser === undef) {\n      var mes"
  },
  {
    "path": "tasks/aliases.yaml",
    "chars": 101,
    "preview": "default:\n  - build\n\nbuild:\n  - clean\n  - jshint:src\n  - lintspaces:src\n  - umd\n  - concat\n  - uglify\n"
  },
  {
    "path": "tasks/changelog.js",
    "chars": 64,
    "preview": "module.exports = {\n  options: {\n    dest: 'CHANGELOG.md'\n  }\n};\n"
  },
  {
    "path": "tasks/clean.js",
    "chars": 37,
    "preview": "module.exports = {\n  dist: 'dist'\n};\n"
  },
  {
    "path": "tasks/concat.js",
    "chars": 220,
    "preview": "module.exports = {\n  options: {\n    banner: '<%= banner %>',\n    stripBanners: true\n  },\n  dist: {\n    src: ['dist/<%= p"
  },
  {
    "path": "tasks/groc.js",
    "chars": 123,
    "preview": "module.exports = {\n  groc: {\n    files: {\n      src: ['src/**/*.js']\n    },\n    options: {\n      out: 'docs/'\n    }\n  }\n"
  },
  {
    "path": "tasks/jshint.js",
    "chars": 251,
    "preview": "module.exports = {\n  options: {\n    jshintrc: '.jshintrc',\n    reporter: require('jshint-stylish')\n  },\n  gruntfile: {\n "
  },
  {
    "path": "tasks/lintspaces.js",
    "chars": 223,
    "preview": "module.exports = {\n  options: {\n    editorconfig: '.editorconfig'\n  },\n  gruntfile: {\n    src: ['Gruntfile.js', 'tasks/{"
  },
  {
    "path": "tasks/uglify.js",
    "chars": 178,
    "preview": "module.exports = {\n  options: {\n    banner: '<%= banner %>'\n  },\n  dist: {\n    src: '<%= concat.dist.dest %>',\n    dest:"
  },
  {
    "path": "tasks/umd.js",
    "chars": 324,
    "preview": "module.exports = {\n  src: {\n    template: 'umd',\n    indent: '  ',\n    src: 'src/<%= pkg.name.replace(/.js$/, \"\") %>.js'"
  },
  {
    "path": "tasks/watch.js",
    "chars": 380,
    "preview": "module.exports = {\n  gruntfile: {\n    files: '<%= jshint.gruntfile.src %>',\n    tasks: [\n      'jshint:gruntfile',\n     "
  },
  {
    "path": "vendor/jquery.browser.js",
    "chars": 984,
    "preview": "(function( jQuery ) {\n\tvar matched,\n\t\tuserAgent = navigator.userAgent || \"\";\n\n\t// Use of jQuery.browser is frowned upon."
  }
]

About this extraction

This page contains the full source code of the house9/jquery-iframe-auto-height GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 57 files (169.8 KB), approximately 43.4k tokens, and a symbol index with 52 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!