﻿/** * Project Name:	jActivating * Project URI:	http://jactivating.sourceforge.net * Description:	Allows website users to interact with embedded content without 'activating' it first * Author:		David Muñoz <donraspu AT gmail DOT com> * Version:		1.2.0 alpha 2 - May 16, 2007 * License:		This software is Public Domain (no rights reserved) * * Installation:  * 1) Upload embeddedcontent.js into some directory on your web server. * 2) Include the JavaScript file in the <head> of your document like this: * 		<script type="text/javascript" src="embeddedcontent.js" defer="defer"></script> */var jActivating ={/** * Declare constants * IS_MSIE	checks for Internet Explorer 6 and later versions * TAGS		array with affected HTML tags */IS_MSIE : (document.removeNode && document.createAttribute) ? true : false,TAGS : ['object', 'embed', 'applet'],/** * Activates embedded content reinserting it. * @return void */activateContent : function(){var i = 0;for(var _tagName; _tagName = jActivating.TAGS[i]; i++){var j = 0;for(var _node; _node = document.getElementsByTagName(_tagName)[j]; j++){if(jActivating.IS_MSIE){jActivating.reinsertHtml(_node);}else{jActivating.reinsertNode(_node);}}}jActivating = null;},/** * Sets outerHTML property. * @param object	- The node * @return void */reinsertHtml : function(_node){var _htmlCode = jActivating.getHtmlCode(_node);if(_htmlCode){_node.outerHTML = _htmlCode;}},/** * Replaces the node for a clone. * @param object - The original node * @return void */reinsertNode : function(_node){var _clone = _node.cloneNode(true);var _parent = _node.parentNode;if(_clone && _parent){_parent.replaceChild(_clone, _node);}},/** * Retrieves the object and its content in HTML. * @param object - The analyzed node * @return string - The HTML received, NULL for malformed syntax (end tag) */getHtmlCode : function(_node){var _htmlCode = _node.outerHTML;var _name = _node.nodeName.toLowerCase();if(_name == 'embed'){return _htmlCode;}if(_name == 'object' || _name == 'applet'){var _startTag = _htmlCode.substr(0, _htmlCode.indexOf('>') + 1);var _endTag = _htmlCode.substr(_htmlCode.length - 9).toLowerCase();// Filters malformed syntax for avoid unexpected resultsif(_endTag != '</object>' && _endTag != '</applet>'){return null;}var _innerHtml = jActivating.getInnerHtml(_node);_htmlCode = _startTag + _innerHtml + _endTag;return _htmlCode;}},/** * Retrieves the HTML between start and end tags of the object. * @param object - The analyzed node * @return string - The HTML received * * NOTE: the innerHTML property isn't used because Internet Explorer * sometimes returns a empty result. */getInnerHtml : function(_node){var _innerHtml = '';var i = 0;for(var _childNode; _childNode = _node.childNodes[i]; i++){_innerHtml += _childNode.outerHTML;}return _innerHtml;}}// Execute script only for Internet Explorer (6+) and Opera (9+)if(jActivating.IS_MSIE){jActivating.activateContent();}else if(window.opera){document.addEventListener('DOMContentLoaded', jActivating.activateContent, false);}