/**
 * Automatically set height to <iframe> and/or <object>
 *
 * Copyright (c) 2008, Alert Investor Relations AB. All rights reserved.
 * Code licensed under the BSD License:
 * http://www.alertir.com/license.txt
 *
 * @version 2008-05-06
 * @author Alert Investor Relations AB <alertir@alertir.com>
 * @copyright Alert Investor Relations AB <alertir@alertir.com>
 *
 * Usage
 *
 * Page holding <iframe src="/foo/bar/" id="FOOBAR"></iframe> or
 * <object type="text/html" data="/foo/bar/" id="FOOBAR"></object>
 *
 * [...]
 * <head>
 * <script type="text/javascript">
 * document.domain = 'www.foo.se';
 * </script>
 * </head>
 * [...]
 * <iframe src="/foo/bar/" id="FOOBAR"></iframe>
 * <script type="text/javascript" src="afw_element_resizer.js"></script>
 * [...]
 *
 * The page living inside an iframe or object
 *
 * [...]
 * <script type="text/javascript">
 * document.domain = 'www.foo.se';
 * try {
 *     if (parent.AFWElementResizer) {
 *         parent.AFWElementResizer.addEvent(window, 'load', function() {
 *             parent.AFWElementResizer.autoHeight('FOOBAR', window)
 *         }, false);
 *     }
 * } catch (e) {}
 * </script>
 * [...]
 *
 * An alternative to document.domain = 'www.foo.se' is
 *
 * document.domain = document.domain.replace(/[^.]*\./, '');
 */
var afw_debug = (window.location.hash == '#afw_debug') ? true : false;
var AFWElementResizer = {
	autoHeight: function(sElementId, oWin, bBubble) {
		var oResizeElement = document.getElementById ? document.getElementById(sElementId) : document.all ? document.all[sElementId] : null;
		var iChildDocumentHeight = AFWElementResizer.getDocumentHeight(oWin.document);
		var bubble = bBubble || false;
		if (oResizeElement && iChildDocumentHeight) {
			oResizeElement.style.height = (iChildDocumentHeight + 60) + 'px';
		}
		if (bubble) {
			AFWElementResizer.bubble(sElementId, oWin);
		}
	},
	getDocumentHeight: function(oDocument) {
		var iHeight = 0;
		if (oDocument.body) {
			if (document.addEventListener) {
				iHeight = oDocument.documentElement.offsetHeight;
			} else {
				iHeight = oDocument.body.scrollHeight;
			}
		}
		return iHeight;
	},
	addEvent: function(oElement, eventType, fn, useCapture){
		if (oElement.addEventListener) {
			oElement.addEventListener(eventType, fn, useCapture);
			return true;
		} else if (oElement.attachEvent) {
			var evt = oElement.attachEvent('on' + eventType, fn);
			return evt;
		} else {
			oElement['on'+eventType] = fn;
			return true;
		}
	},
	bubble: function(sElementId, oWin) {
		try {
			if (parent.AFWElementResizer) {
				parent.AFWElementResizer.addEvent(window, 'load', function() {
					parent.AFWElementResizer.autoHeight(sElementId, window, true)
				}, false);
			}
		} catch (e) {}
	}
};


