/******************************************************************************* * 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 frames()  * @type frames  * @super Array  * @memberOf frames  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537459.aspx*/function frames(){};frames.prototype= new Array();/**  * Property length  * @type Number  * @returns {Number}
  * @memberOf frames  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534101.aspx*/frames.prototype.length=0;/**  * function item(vIndex)  * @param {Number} vIndex  * @memberOf frames  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536461.aspx*/frames.prototype.item=function(vIndex){};/**  * function item(vIndex)  * @param {Number} vIndex  * @memberOf frames  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536461.aspx*/frames.prototype.item=function(vIndex){};/**  * Property filters  * @type filters  * @returns {filters}
  * @memberOf frames  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537452.aspx*/frames.prototype.filters= new filters();/**  * function namedItem(sName)  * @param {String} sName  * @memberOf frames  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536634.aspx*/frames.prototype.namedItem=function(sName){};