/******************************************************************************* * Copyright (c) 2007, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     IBM Corporation - initial API and implementation ****************************************************************************** * **//**  * Object hr()  * @type hr  * @super Object  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535254.aspx*/function hr(){};hr.prototype= new Object();/**  * Property accessKey  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533062.aspx*/hr.prototype.accessKey="";/**  * Property align  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533069.aspx*/hr.prototype.align="";/**  * Property canHaveHTML  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537836.aspx*/hr.prototype.canHaveHTML=false;/**  * Property className  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533560.aspx*/hr.prototype.className="";/**  * Property color  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533579.aspx*/hr.prototype.color=new Object();/**  * Property firstChild  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533755.aspx*/hr.prototype.firstChild=new Object();/**  * Property childNodes  * @type childNodes  * @returns {childNodes}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537445.aspx*/hr.prototype.childNodes= new childNodes();/**  * Property hideFocus  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533783.aspx*/hr.prototype.hideFocus=false;/**  * Property id  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533880.aspx*/hr.prototype.id="";/**  * Property isContentEditable  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537838.aspx*/hr.prototype.isContentEditable=false;/**  * Property isDisabled  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533902.aspx*/hr.prototype.isDisabled=false;/**  * Property isMultiLine  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537839.aspx*/hr.prototype.isMultiLine=false;/**  * Property isTextEdit  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533920.aspx*/hr.prototype.isTextEdit=false;/**  * Property TextRange  * @type TextRange  * @returns {TextRange}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535872.aspx*/hr.prototype.TextRange= new TextRange();/**  * Property language  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533940.aspx*/hr.prototype.language="";/**  * Property lastChild  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533943.aspx*/hr.prototype.lastChild=new Object();/**  * Property nextSibling  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534189.aspx*/hr.prototype.nextSibling=new Object();/**  * Property nodeName  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534190.aspx*/hr.prototype.nodeName="";/**  * Property nodeType  * @type Number  * @returns {Number}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534191.aspx*/hr.prototype.nodeType=0;/**  * Property nodeValue  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534192.aspx*/hr.prototype.nodeValue=new Object();/**  * Property noShade  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534195.aspx*/hr.prototype.noShade=false;/**  * Property offsetHeight  * @type Number  * @returns {Number}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534199.aspx*/hr.prototype.offsetHeight=0;/**  * Property offsetParent  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534302.aspx*/hr.prototype.offsetParent=new Object();/**  * Property offsetLeft  * @type Number  * @returns {Number}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534200.aspx*/hr.prototype.offsetLeft=0;/**  * Property offsetTop  * @type Number  * @returns {Number}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534303.aspx*/hr.prototype.offsetTop=0;/**  * Property offsetWidth  * @type Number  * @returns {Number}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534304.aspx*/hr.prototype.offsetWidth=0;/**  * Property outerHTML  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534310.aspx*/hr.prototype.outerHTML="";/**  * Property outerText  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534311.aspx*/hr.prototype.outerText="";/**  * Property ownerDocument  * @type document  * @returns {document}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534315.aspx*/hr.prototype.ownerDocument=new document();/**  * Property document  * @type document  * @returns {document}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms531073.aspx*/hr.prototype.document= new document();/**  * Property parentElement  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534327.aspx*/hr.prototype.parentElement=new Object();/**  * Property parentNode  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534328.aspx*/hr.prototype.parentNode=new Object();/**  * Property parentTextEdit  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534330.aspx*/hr.prototype.parentTextEdit=new Object();/**  * Property previousSibling  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534350.aspx*/hr.prototype.previousSibling=new Object();/**  * Property readyState  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534358.aspx*/hr.prototype.readyState=new Object();/**  * Property scopeName  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534388.aspx*/hr.prototype.scopeName="";/**  * Property size  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534632.aspx*/hr.prototype.size=new Object();/**  * Property sourceIndex  * @type Number  * @returns {Number}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534635.aspx*/hr.prototype.sourceIndex=0;/**  * Property all  * @type all  * @returns {all}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537434.aspx*/hr.prototype.all= new all();/**  * Property tabIndex  * @type Number  * @returns {Number}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534654.aspx*/hr.prototype.tabIndex=0;/**  * Property tagName  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534657.aspx*/hr.prototype.tagName="";/**  * Property tagUrn  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534658.aspx*/hr.prototype.tagUrn="";/**  * Property title  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534683.aspx*/hr.prototype.title="";/**  * Property uniqueID  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534704.aspx*/hr.prototype.uniqueID="";/**  * function addBehavior(sUrl)  * @param {String} sUrl  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535922.aspx*/hr.prototype.addBehavior=function(sUrl){};/**  * function applyElement(oNewElement)  * @param {String} oNewElement  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536341.aspx*/hr.prototype.applyElement=function(oNewElement){};/**  * function attachEvent(sEvent,fpNotify)  * @param {String} sEvent  * @param {Boolean} fpNotify  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536343.aspx*/hr.prototype.attachEvent=function(sEvent,fpNotify){};/**  * function blur()  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536347.aspx*/hr.prototype.blur=function(){};/**  * Property onblur  * @type onblur  * @returns {onblur}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536909.aspx*/hr.prototype.onblur= new onblur();/**  * function clearAttributes()  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536350.aspx*/hr.prototype.clearAttributes=function(){};/**  * function click()  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536363.aspx*/hr.prototype.click=function(){};/**  * Property onclick  * @type onclick  * @returns {onclick}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536913.aspx*/hr.prototype.onclick= new onclick();/**  * function cloneNode(bCloneChildren)  * @param {Boolean} bCloneChildren  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536365.aspx*/hr.prototype.cloneNode=function(bCloneChildren){};/**  * function componentFromPoint(iCoordX,iCoordY)  * @param {Number} iCoordX  * @param {Number} iCoordY  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536375.aspx*/hr.prototype.componentFromPoint=function(iCoordX,iCoordY){};/**  * function contains(oElement)  * @param {Boolean} oElement  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536377.aspx*/hr.prototype.contains=function(oElement){};/**  * function detachEvent(sEvent,fpNotify)  * @param {String} sEvent  * @param {attachEvent} fpNotify  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536411.aspx*/hr.prototype.detachEvent=function(sEvent,fpNotify){};/**  * function dragDrop()  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536415.aspx*/hr.prototype.dragDrop=function(){};/**  * function fireEvent(sEvent,oEventObject)  * @param {String} sEvent  * @param {event} oEventObject  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536423.aspx*/hr.prototype.fireEvent=function(sEvent,oEventObject){};/**  * function focus()  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536425.aspx*/hr.prototype.focus=function(){};/**  * Property onfocus  * @type onfocus  * @returns {onfocus}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536934.aspx*/hr.prototype.onfocus= new onfocus();/**  * function getAdjacentText(sWhere)  * @param {String} sWhere  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536427.aspx*/hr.prototype.getAdjacentText=function(sWhere){};/**  * function getAttribute(sAttrName,iFlags,sAttrName)  * @param {String} sAttrName  * @param {Number} iFlags  * @param {getAttribute} sAttrName  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536429.aspx*/hr.prototype.getAttribute=function(sAttrName,iFlags,sAttrName){};/**  * function getAttributeNode(sName)  * @param {String} sName  * @type attribute  * @returns {attribute}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536430.aspx*/hr.prototype.getAttributeNode=function(sName){};/**  * Property attribute  * @type attribute  * @returns {attribute}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535187.aspx*/hr.prototype.attribute= new attribute();/**  * Property name  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534184.aspx*/hr.prototype.name="";/**  * function getElementsByTagName(sTagName)  * @param {String} sTagName  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536439.aspx*/hr.prototype.getElementsByTagName=function(sTagName){};/**  * function getExpression(sPropertyName)  * @param {String} sPropertyName  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/aa358797.aspx*/hr.prototype.getExpression=function(sPropertyName){};/**  * function hasChildNodes()  * @type HTML Elements  * @returns {HTML}
 Elements  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536445.aspx*/hr.prototype.hasChildNodes=function(){};/**  * function insertAdjacentElement(sWhere,oElement)  * @param {String} sWhere  * @param {insertAdjacentElement} oElement  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536451.aspx*/hr.prototype.insertAdjacentElement=function(sWhere,oElement){};/**  * function insertAdjacentHTML(sWhere,sText)  * @param {String} sWhere  * @param {String} sText  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536452.aspx*/hr.prototype.insertAdjacentHTML=function(sWhere,sText){};/**  * function insertAdjacentText(sWhere,sText)  * @param {String} sWhere  * @param {String} sText  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536453.aspx*/hr.prototype.insertAdjacentText=function(sWhere,sText){};/**  * function mergeAttributes(oSource,bPreserve)  * @param {Object} oSource  * @param {Boolean} bPreserve  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536614.aspx*/hr.prototype.mergeAttributes=function(oSource,bPreserve){};/**  * function normalize()  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536646.aspx*/hr.prototype.normalize=function(){};/**  * function releaseCapture()  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536689.aspx*/hr.prototype.releaseCapture=function(){};/**  * function removeAttribute(sName,iCaseSensitive)  * @param {String} sName  * @param {Number} iCaseSensitive  * @type Boolean  * @returns {Boolean}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536696.aspx*/hr.prototype.removeAttribute=function(sName,iCaseSensitive){};/**  * function removeAttributeNode(oSrcAttribute)  * @param {attribute} oSrcAttribute  * @type attribute  * @returns {attribute}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536698.aspx*/hr.prototype.removeAttributeNode=function(oSrcAttribute){};/**  * function removeBehavior(iID)  * @param {Number} iID  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536700.aspx*/hr.prototype.removeBehavior=function(iID){};/**  * function removeExpression(sPropertyName)  * @param {String} sPropertyName  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/aa358798.aspx*/hr.prototype.removeExpression=function(sPropertyName){};/**  * function replaceAdjacentText(sWhere,sReplaceText)  * @param {String} sWhere  * @param {String} sReplaceText  * @type String  * @returns {String}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536714.aspx*/hr.prototype.replaceAdjacentText=function(sWhere,sReplaceText){};/**  * function scrollIntoView(bAlignToTop)  * @param {Boolean} bAlignToTop  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536730.aspx*/hr.prototype.scrollIntoView=function(bAlignToTop){};/**  * function setActive()  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536738.aspx*/hr.prototype.setActive=function(){};/**  * function setAttribute(sName,vValue)  * @param {String} sName  * @param {Number} vValue  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536739.aspx*/hr.prototype.setAttribute=function(sName,vValue){};/**  * function setAttributeNode(oSrcAttribute)  * @param {attribute} oSrcAttribute  * @type attribute  * @returns {attribute}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536741.aspx*/hr.prototype.setAttributeNode=function(oSrcAttribute){};/**  * function setCapture(bContainerCapture)  * @param {Boolean} bContainerCapture  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536742.aspx*/hr.prototype.setCapture=function(bContainerCapture){};/**  * function setExpression(sPropertyName,sExpression,sLanguage)  * @param {String} sPropertyName  * @param {String} sExpression  * @param {String} sLanguage  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms531196.aspx*/hr.prototype.setExpression=function(sPropertyName,sExpression,sLanguage){};/**  * function swapNode(oNode)  * @param {Object} oNode  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536774.aspx*/hr.prototype.swapNode=function(oNode){};/**  * Property onactivate  * @type onactivate  * @returns {onactivate}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536787.aspx*/hr.prototype.onactivate= new onactivate();/**  * Property activeElement  * @type Object  * @returns {Object}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533065.aspx*/hr.prototype.activeElement=new Object();/**  * Property onbeforeactivate  * @type onbeforeactivate  * @returns {onbeforeactivate}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536791.aspx*/hr.prototype.onbeforeactivate= new onbeforeactivate();/**  * Property onbeforecut  * @type onbeforecut  * @returns {onbeforecut}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536902.aspx*/hr.prototype.onbeforecut= new onbeforecut();/**  * Property onbeforedeactivate  * @type onbeforedeactivate  * @returns {onbeforedeactivate}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536903.aspx*/hr.prototype.onbeforedeactivate= new onbeforedeactivate();/**  * Property onbeforepaste  * @type onbeforepaste  * @returns {onbeforepaste}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536905.aspx*/hr.prototype.onbeforepaste= new onbeforepaste();/**  * Property onblur  * @type onblur  * @returns {onblur}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536909.aspx*/hr.prototype.onblur= new onblur();/**  * Property onclick  * @type onclick  * @returns {onclick}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536913.aspx*/hr.prototype.onclick= new onclick();/**  * Property oncontextmenu  * @type oncontextmenu  * @returns {oncontextmenu}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536914.aspx*/hr.prototype.oncontextmenu= new oncontextmenu();/**  * Property oncontrolselect  * @type oncontrolselect  * @returns {oncontrolselect}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537844.aspx*/hr.prototype.oncontrolselect= new oncontrolselect();/**  * Property oncopy  * @type oncopy  * @returns {oncopy}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536916.aspx*/hr.prototype.oncopy= new oncopy();/**  * Property oncut  * @type oncut  * @returns {oncut}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536917.aspx*/hr.prototype.oncut= new oncut();/**  * Property ondblclick  * @type ondblclick  * @returns {ondblclick}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536921.aspx*/hr.prototype.ondblclick= new ondblclick();/**  * Property ondeactivate  * @type ondeactivate  * @returns {ondeactivate}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536922.aspx*/hr.prototype.ondeactivate= new ondeactivate();/**  * Property ondrag  * @type ondrag  * @returns {ondrag}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536923.aspx*/hr.prototype.ondrag= new ondrag();/**  * Property ondragend  * @type ondragend  * @returns {ondragend}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536924.aspx*/hr.prototype.ondragend= new ondragend();/**  * Property ondragenter  * @type ondragenter  * @returns {ondragenter}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536925.aspx*/hr.prototype.ondragenter= new ondragenter();/**  * Property ondragleave  * @type ondragleave  * @returns {ondragleave}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536926.aspx*/hr.prototype.ondragleave= new ondragleave();/**  * Property ondragover  * @type ondragover  * @returns {ondragover}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536927.aspx*/hr.prototype.ondragover= new ondragover();/**  * Property ondragstart  * @type ondragstart  * @returns {ondragstart}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536928.aspx*/hr.prototype.ondragstart= new ondragstart();/**  * Property ondrop  * @type ondrop  * @returns {ondrop}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536929.aspx*/hr.prototype.ondrop= new ondrop();/**  * Property onfocus  * @type onfocus  * @returns {onfocus}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536934.aspx*/hr.prototype.onfocus= new onfocus();/**  * Property onfocusin  * @type onfocusin  * @returns {onfocusin}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536935.aspx*/hr.prototype.onfocusin= new onfocusin();/**  * Property onfocusout  * @type onfocusout  * @returns {onfocusout}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536936.aspx*/hr.prototype.onfocusout= new onfocusout();/**  * Property onhelp  * @type onhelp  * @returns {onhelp}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536937.aspx*/hr.prototype.onhelp= new onhelp();/**  * Property onkeydown  * @type onkeydown  * @returns {onkeydown}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536938.aspx*/hr.prototype.onkeydown= new onkeydown();/**  * Property onkeypress  * @type onkeypress  * @returns {onkeypress}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536939.aspx*/hr.prototype.onkeypress= new onkeypress();/**  * Property onkeyup  * @type onkeyup  * @returns {onkeyup}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536940.aspx*/hr.prototype.onkeyup= new onkeyup();/**  * Property onlayoutcomplete  * @type onlayoutcomplete  * @returns {onlayoutcomplete}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536941.aspx*/hr.prototype.onlayoutcomplete= new onlayoutcomplete();/**  * Property onlosecapture  * @type onlosecapture  * @returns {onlosecapture}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536943.aspx*/hr.prototype.onlosecapture= new onlosecapture();/**  * Property onmousedown  * @type onmousedown  * @returns {onmousedown}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536944.aspx*/hr.prototype.onmousedown= new onmousedown();/**  * Property onmouseenter  * @type onmouseenter  * @returns {onmouseenter}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536945.aspx*/hr.prototype.onmouseenter= new onmouseenter();/**  * Property onmouseleave  * @type onmouseleave  * @returns {onmouseleave}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536946.aspx*/hr.prototype.onmouseleave= new onmouseleave();/**  * Property onmousemove  * @type onmousemove  * @returns {onmousemove}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536947.aspx*/hr.prototype.onmousemove= new onmousemove();/**  * Property onmouseout  * @type onmouseout  * @returns {onmouseout}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536948.aspx*/hr.prototype.onmouseout= new onmouseout();/**  * Property onmouseover  * @type onmouseover  * @returns {onmouseover}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536949.aspx*/hr.prototype.onmouseover= new onmouseover();/**  * Property onmouseup  * @type onmouseup  * @returns {onmouseup}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536950.aspx*/hr.prototype.onmouseup= new onmouseup();/**  * Property onmousewheel  * @type onmousewheel  * @returns {onmousewheel}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536951.aspx*/hr.prototype.onmousewheel= new onmousewheel();/**  * Property onmove  * @type onmove  * @returns {onmove}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536952.aspx*/hr.prototype.onmove= new onmove();/**  * Property onmoveend  * @type onmoveend  * @returns {onmoveend}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536953.aspx*/hr.prototype.onmoveend= new onmoveend();/**  * Property onmovestart  * @type onmovestart  * @returns {onmovestart}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536954.aspx*/hr.prototype.onmovestart= new onmovestart();/**  * Property onpaste  * @type onpaste  * @returns {onpaste}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536955.aspx*/hr.prototype.onpaste= new onpaste();/**  * Property onpropertychange  * @type onpropertychange  * @returns {onpropertychange}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536956.aspx*/hr.prototype.onpropertychange= new onpropertychange();/**  * Property onreadystatechange  * @type onreadystatechange  * @returns {onreadystatechange}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536957.aspx*/hr.prototype.onreadystatechange= new onreadystatechange();/**  * Property onresize  * @type onresize  * @returns {onresize}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536959.aspx*/hr.prototype.onresize= new onresize();/**  * Property onresizeend  * @type onresizeend  * @returns {onresizeend}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536960.aspx*/hr.prototype.onresizeend= new onresizeend();/**  * Property onresizestart  * @type onresizestart  * @returns {onresizestart}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536961.aspx*/hr.prototype.onresizestart= new onresizestart();/**  * Property onselectstart  * @type onselectstart  * @returns {onselectstart}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536969.aspx*/hr.prototype.onselectstart= new onselectstart();/**  * Property ontimeerror  * @type ontimeerror  * @returns {ontimeerror}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533588.aspx*/hr.prototype.ontimeerror= new ontimeerror();/**  * Property all  * @type all  * @returns {all}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537434.aspx*/hr.prototype.all= new all();/**  * Property attributes  * @type attributes  * @returns {attributes}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537438.aspx*/hr.prototype.attributes= new attributes();/**  * Property behaviorUrns  * @type behaviorUrns  * @returns {behaviorUrns}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537439.aspx*/hr.prototype.behaviorUrns= new behaviorUrns();/**  * Property childNodes  * @type childNodes  * @returns {childNodes}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537445.aspx*/hr.prototype.childNodes= new childNodes();/**  * Property TextNode  * @type TextNode  * @returns {TextNode}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535905.aspx*/hr.prototype.TextNode= new TextNode();/**  * Property children  * @type children  * @returns {children}
  * @memberOf hr  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537446.aspx*/hr.prototype.children= new children();