function LyricViewHTMLCacheDefn(bgcolor)
{
    /**
     * populate the cache
     * @param {String} bgcolor background color for lyric view elems
     */
    this.init = function(bgcolor) {
	this.fCache = new Array();
	var cols       = [ 1, -1 ];
	var txts    = [ "", " ", "N" ]; 	// since lyric color (and font) can change, we CANNOT
						// generate cache entries for . and ,
	var lv = new  LyricView();
	var cache = this.fCache;
	var txt;
	var i;
	var nc = cols.length;
	var nt = txts.length;
	for(var i = 0; i < 2; i++ ) {
	    var col = cols[i];
	    cache[col] = new Array();
	    var ic = cache[col];
	    for(var tt = 0; tt < nt; tt++ ) {
		txt = txts[tt];
		ic[txt] = lv.generateHTML(bgcolor, ((txt == "N") ? null: txt), ((col == -1) ? null: col));
	    }
	}
	return cache;
    }

    /**
     * cache date
     * @private
     */
    this.fCache = null;

    /**
     * get an element from cache
     * @param {int} 	cols	column span
     * @param {String} txt	txt of elem (can be null)
     */
    this.get = function(cols, txt) {
	if(this.fCache) {
	    if(cols != 1 ) cols = -1;
	    if(txt != "" && txt != " ")
		txt = "N";
	    return this.fCache[cols][txt];
	}
	return null;
    }
    this.init(bgcolor);
    bgcolor = null;
}
/**
 * @class
 * the lyric view HTML cache
 */
@class
the lyric view HTML cache
@class the lyric view HTML cache
function LyricViewHTMLCacheDefn(bgcolor)
{
    this.init = function(bgcolor) {
	this.fCache = new Array();
	var cols       = [ 1, -1 ];
	var txts    = [ "", " ", "N" ]; 	
	var lv = new  LyricView();
	var cache = this.fCache;
	var txt;
	var i;
	var nc = cols.length;
	var nt = txts.length;
	for(var i = 0; i < 2; i++ ) {
	    var col = cols[i];
	    cache[col] = new Array();
	    var ic = cache[col];
	    for(var tt = 0; tt < nt; tt++ ) {
		txt = txts[tt];
		ic[txt] = lv.generateHTML(bgcolor, ((txt == "N") ? null: txt), ((col == -1) ? null: col));
	    }
	}
	return cache;
    }
    this.fCache = null;
    this.get = function(cols, txt) {
	if(this.fCache) {
	    if(cols != 1 ) cols = -1;
	    if(txt != "" && txt != " ")
		txt = "N";
	    return this.fCache[cols][txt];
	}
	return null;
    }
    this.init(bgcolor);
    bgcolor = null;
}
function LyricViewHTMLCacheDefn ( bgcolor ) { this . init = function ( bgcolor ) { this . fCache = new Array ( ) ; var cols = [ 1 , - 1 ] ; var txts = [ "" , " " , "N" ] ; var lv = new LyricView ( ) ; var cache = this . fCache ; var txt ; var i ; var nc = cols . length ; var nt = txts . length ; for ( var i = 0 ; i < 2 ; i ++ ) { var col = cols [ i ] ; cache [ col ] = new Array ( ) ; var ic = cache [ col ] ; for ( var tt = 0 ; tt < nt ; tt ++ ) { txt = txts [ tt ] ; ic [ txt ] = lv . generateHTML ( bgcolor , ( ( txt == "N" ) ? null : txt ) , ( ( col == - 1 ) ? null : col ) ) ; } } return cache ; } this . fCache = null ; this . get = function ( cols , txt ) { if ( this . fCache ) { if ( cols != 1 ) cols = - 1 ; if ( txt != "" && txt != " " ) txt = "N" ; return this . fCache [ cols ] [ txt ] ; } return null ; } this . init ( bgcolor ) ; bgcolor = null ; }
@class
 the lyric view HTML cache
@class the lyric view HTML cache
/**
     * populate the cache
     * @param {String} bgcolor background color for lyric view elems
     */ // since lyric color (and font) can change, we CANNOT
 // generate cache entries for . and ,
 /**
     * cache date
     * @private
     */ /**
     * get an element from cache
     * @param {int} 	cols	column span
     * @param {String} txt	txt of elem (can be null)
     */