/*
filename: dynamicMenus.js
programmer: Mattias Östergren WiDE (mattias.ostergren@wide.se)
version: 1.1.1 
*/

NS4 = (navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 4);
IE4 = (navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4);

MENU_ID_SEED = 0;
POSITION_FIXED = 0;
ORIENTATION_VERTICAL = 0;
ORIENTATION_HORIZONTAL = 1;

TEXT_ITEM = 0;

ALL_MENUS = new Array();


/*
popUp - public method that displays a floating menu with title. 
It accepts the following input:
event - the by the system generated instance of Event class
category - a category tag (preferalby an integer) for this meny
titleText - the title (escaped string) for this menu
id - a string identifying a particular stock
*/
function popUp( event, category, titleText, id ) {

	var foundOne = false;

	for( var i = 0; i < ALL_MENUS.length; i++ )
	
		if( ALL_MENUS[i].category != null &&
			ALL_MENUS[i].id != null ) 
		
			if( ALL_MENUS[i].id == id &&
				ALL_MENUS[i].category == category ) {
			
				foundOne = true;
			
				if( IE4 ) {
				
					var dx = window.document.body.clientWidth - event.x - ALL_MENUS[i].width;
					var dy = window.document.body.clientHeight - event.y - ALL_MENUS[i].height;
					
					var y = event.y + window.document.body.scrollTop + (dy > 0? 0:dy);
					var x = event.x + window.document.body.scrollLeft + (dx > 0? 0:dx);

					ALL_MENUS[i].popUp( y - 10, x - 10);
										
				}
				else {
				
					var scrollBarWidth = window.document.width > window.innerWidth? 20:0;
					var scrollBarHeight = window.document.height > window.innerHeight? 20:0;

					var winLeft = window.pageXOffset + window.innerWidth - scrollBarHeight;
					var winBottom = window.pageYOffset + window.innerHeight - scrollBarWidth;
		
					var x = event.x + ALL_MENUS[i].width > winLeft? 
						winLeft - ALL_MENUS[i].width: event.x;
					var y = event.y + ALL_MENUS[i].height > winBottom?
						 winBottom - ALL_MENUS[i].height: event.y;				
							
					ALL_MENUS[i].popUp( y - 10, x - 10 );
			
				}	
								
				break;	
			}
					
	if( !foundOne ) {

		var tmp;
		var readAction;
		var downloadAction ;
		
		if( category == 0 ) {
			if( IE4 ) 
				readAction = 'var win = window.open(\'abstract_' + id + '.htm\',\'Abstract\', \'width=300,height=500,top=10,left=10,resizable=no,scrollbar=yes,location=no,directories=no,menubar=no,copyhistory=no\');';
			else
				readAction = 'var win = window.open(\'abstract_' + id + '.htm\',\'Abstract\', \'width=300,height=500,screenY=10,screenX=10,resizable=no,scrollbar=yes,location=no,directories=no,menubar=no,copyhistory=no\');';
			downloadAction = 'location.href=\'' + id + '.pdf\';';
			
			
			tmp = new menu(new title(titleText,250,20,'#ffff7d'),ORIENTATION_VERTICAL,POSITION_FIXED,0,0,1,'black', 
					new item(TEXT_ITEM,'Read Abstract',readAction,150,20,'white','#ECECEC'), 
					new item(TEXT_ITEM,'Download PDF',downloadAction,150,20,'white','#ECECEC') );

		}
		else if( category == 1 ) {

			if( IE4 ) 
				readAction = 'var win = window.open(\'disclaimer_' + id + '.htm\',\'Disclaimer\', \'width=400,height=500,top=10,left=10,resizable=no,scrollbar=yes,location=no,directories=no,menubar=no,copyhistory=no\');';
			else
				readAction = 'var win = window.open(\'disclaimer_' + id + '.htm\',\'Disclaimer\', \'width=400,height=500,screenY=10,screenX=10,resizable=no,scrollbar=yes,location=no,directories=no,menubar=no,copyhistory=no\');';
			downloadAction = 'location.href=\'' + id + '.zip\';';
			
			tmp = new menu(new title(titleText,250,20,'#ffff7d'),ORIENTATION_VERTICAL,POSITION_FIXED,0,0,1,'black', 
					new item(TEXT_ITEM,'Read Disclaimer',readAction,150,20,'white','#ECECEC'), 
					new item(TEXT_ITEM,'Download Archive (.zip)',downloadAction,150,20,'white','#ECECEC') );
		
		}
		
		
		tmp.category = category;	
		tmp.id = id;

		if( IE4 ) {
			var dx = window.document.body.clientWidth - event.x - ALL_MENUS[i].width;
			var dy = window.document.body.clientHeight - event.y - ALL_MENUS[i].height;
					
			var y = event.y + window.document.body.scrollTop + (dy > 0? 0:dy);
			var x = event.x + window.document.body.scrollLeft + (dx > 0? 0:dx);

			ALL_MENUS[i].popUp( y - 10, x - 10 );
		}		
		else {

			var scrollBarWidth = window.document.width > window.innerWidth? 20:0;
			var scrollBarHeight = window.document.height > window.innerHeight? 20:0;

			var winLeft = window.pageXOffset + window.innerWidth - scrollBarHeight;
			var winBottom = window.pageYOffset + window.innerHeight - scrollBarWidth;
		
			var x = event.x + ALL_MENUS[i].width > winLeft? 
				winLeft - ALL_MENUS[i].width: event.x;
			var y = event.y + ALL_MENUS[i].height > winBottom?
				 winBottom - ALL_MENUS[i].height: event.y;				
					
			ALL_MENUS[i].popUp( y - 10, x - 10 );
			
		}
	
	}

}

/*
Constructor for menu object
* mandatory arguments:
title - a title object (see below)
orientation - either ORIENTATION_VERTICAL or ORIENTATION_HORIZONTAL
position - POSITION_FIXED
top - top coordinate of menu
left - left coordinate of menu
borderWidth - the width of the border
borderColor - string (in standard css syntax) specifying a color
* optional arguments:
item1, ... itemN - item object(s) (see below)
*/

function menu( title, orientation, position, top, left, borderWidth, borderColor ) {

	var args = menu.arguments;

	this.title;
	this.orientation;
	this.top;
	this.left;
	this.position;
	this.items = new Array();
	this.width;
	this.height;
	this.id;
	this.borderWidth;
	this.borderColor;
	this.menuElement = null;
	
	if( args.length >= 7 ) {
	
		this.setId();
		this.setTitle( title );
		this.setOrientation( orientation ) ;
		this.setPosition( position, top, left  );
		this.setBorder( borderWidth, borderColor ) ;			
					
		for( var i = 7; i < args.length; i++ ) 
		
			this.items[i - 7] = args[i];
	
		this.setWidth();
		this.setHeight();
	
	}
	
	ALL_MENUS[this.id] = this;
}

/*
menuPopUpNS - public method of class menu if IE
optional arguments:
top - the top coordinate to display the menu at
left - the left coordinate
*/
function menuPopUpIE(top, left) {

	if( this.menuElement == null ) {		
		var body;
		var fun;
		body = this.render();
		
		fun = new Function( body )
		this.menuElement = fun();			
	} 

	if( menuPopUpIE.arguments.length == 2 ) {
		this.menuElement.style.setAttribute( 'top', top + 'px' );
		this.menuElement.style.setAttribute( 'left', left + 'px' );			
	}
				
	this.menuElement.style.setAttribute( 'visibility', 'visible' );

	
}
if(IE4) menu.prototype.popUp = menuPopUpIE;


/*
menuPopUpNS - public method of class menu if NS
optional arguments:
top - the top coordinate to display the menu at
left - the left coordinate
*/
function menuPopUpNS(top, left) {

	if( this.menuElement == null ) {
		
		var body;
		var fun;
		body = this.render();
		
		fun = new Function( body )
		this.menuElement = fun();
		
	}
	
	if( menuPopUpNS.arguments.length == 2 ) {
		this.menuElement.top = top;
		this.menuElement.left = left;			
	}
				
	this.menuElement.visibility = 'show';

}
if(NS4) menu.prototype.popUp = menuPopUpNS;

/*
menuHasTitle - public method of menu class
Return true if and only if this menu has a title.
*/
function menuHasTitle() {

	return( this.title != null );

}
menu.prototype.hasTitle = menuHasTitle;

/*
menuSetId - private method of menu class
*/
function menuSetId() {

	this.id = MENU_ID_SEED;
	MENU_ID_SEED++;
	
}
menu.prototype.setId = menuSetId;

/*
menuSetTitle - private method of menu class
*/
function menuSetTitle( title ) {

	if( title == null )
		
		this.title = null;
		
	else if( typeof(title) == 'object' ) 
	
		this.title = title;
			
}
menu.prototype.setTitle = menuSetTitle;

/*
menuSetOrientation - private method of menu class
*/
function menuSetOrientation( orientation ) {

	if( orientation == ORIENTATION_VERTICAL || orientation == ORIENTATION_HORIZONTAL ) 
	
		this.orientation =  orientation  ;
			
}
menu.prototype.setOrientation = menuSetOrientation;

/*
menuSetPosition - private method of menu class
*/
function menuSetPosition( position, top, left ) {

	if( position == POSITION_FIXED ) {
	
		this.position = new Number( position );
		this.top = new Number( top );
		this.left = new Number( left );
	
	}
	
}
menu.prototype.setPosition = menuSetPosition;

/*
menuSetBorder - private method of class menu
*/
function menuSetBorder( width, color ) {

	
	this.borderWidth = new Number( width );
	this.borderColor = color;
		

}
menu.prototype.setBorder = menuSetBorder;

/*
menuSetHeight - private method of menu class
*/
function menuSetHeight() {

	var height = this.hasTitle()? this.title.height: 0;
	
	if( this.orientation == ORIENTATION_HORIZONTAL )
	
		for( var i = 0; i < this.items.length; i++ )
		
			height = this.items[i].height > height? this.items[i].height: height;
	
	else
	
		for( var i = 0; i < this.items.length; i++ )
		
			height += this.items[i].height ;			

	this.height = new Number( height );

}
menu.prototype.setHeight = menuSetHeight;

/*
menuSetWidth - private method of menu class
*/
function menuSetWidth() {

	var width = this.hasTitle()? this.title.width: 0;
	
	if( this.orientation == ORIENTATION_HORIZONTAL )
	
		for( var i = 0; i < this.items.length; i++ )
		
			width += this.items[i].width ;
	
	else
	
		for( var i = 0; i < this.items.length; i++ )
		
			width = this.items[i].width > width? this.items[i].width: width

	this.width = new Number( width );

}
menu.prototype.setWidth = menuSetWidth;

/*
menuRenderIE - private method of class menu if IE
*/
function menuRenderIE() {

	var codeBody = 'if(document.all[\'mnu' + this.id + '\']) document.all[\'mnu' + this.id + '\'].outerHTML = \'\';\n';
	var i = 0;
	
	codeBody += 'var htmlStr = \'<div id=\"mnu' + this.id + '\" onmouseout=\"if(this.style.visibility==\\\'visible\\\' && !event.toElement.id.match(/^m' + this.id + '/)) this.style.setAttribute(\\\'visibility\\\',\\\'hidden\\\')\" style=\"visibility:hidden;position:absolute;border-style:solid;border-color:' + this.borderColor + ';border-width:' + this.borderWidth + ';top:' + this.top + 'px;left:' + this.left + 'px;width:' + this.width + 'px;height:' + this.height +'px;\">\';\n';
	codeBody += 'htmlStr += \'<table border=0 cellspacing=0 cellpadding=0>\';\n';
	
	if( this.orientation == ORIENTATION_HORIZONTAL )
		codeBody += 'htmlStr += \'<tr>\';\n';
			
	if( this.hasTitle() ) {
	
		codeBody += this.title.render( this.id, i, this.orientation	);	
		i++;	
	
	}
	
	for( var j = 0; j < this.items.length; j++, i++ ) 
	
		codeBody += this.items[j].render( this.id, i, this.orientation );

	if( this.orientation == ORIENTATION_HORIZONTAL )
		codeBody += 'htmlStr += \'</tr>\';\n';

	codeBody += 'htmlStr += \'</table></div>\';\n';
	codeBody += 'document.body.insertAdjacentHTML(\'beforeEnd\',htmlStr);\n';			

	codeBody += 'return(document.all[\'mnu' + this.id + '\']);\n';
	
	return( codeBody );
	
}
if( IE4 ) menu.prototype.render = menuRenderIE;

/*
menuRender - private method of menu class
*/
function menuRenderNS() {
			
	var i = 0;
	var codeBody = '';			
	var totWidth = (this.width + 2 * this.borderWidth);
	var totHeight = (this.height + 2 * this.borderWidth);
			
	codeBody = 'var aLayer = new Array();\n';	
	codeBody += 'aLayer[' + i + '] = new Layer(' + totWidth + ',window);\n';
	codeBody += 'aLayer[' + i + '].visibility = \'hide\';\n';
	codeBody += 'aLayer[' + i + '].top = ' + this.top + ';\n';
	codeBody += 'aLayer[' + i + '].left = ' + this.left + ';\n';	
	codeBody += 'aLayer[' + i + '].resizeTo(' + totWidth + ',' + totHeight +');\n';	
	codeBody += 'aLayer[' + i + '].bgColor = \'' + this.borderColor + '\';\n';
	
	i++;
	
	if( this.hasTitle() ) {
	
		codeBody += this.title.render( i, this.borderWidth );				
		i++;
	
	}	
	
	for( var j = 0; j < this.items.length; j++, i++ )
		
		codeBody += this.items[j].render( i, this.orientation, this.borderWidth );
	
	codeBody += 'aLayer[0].onmouseout = new Function(\'this.visibility = \\\'hide\\\';return true;\');\n';

	codeBody += 'return(aLayer[0]);\n';
			
	return( codeBody );
		
}
if( NS4 ) menu.prototype.render = menuRenderNS;

/******************************************************************************/

/*
Constructor for item object
* mandatory arguments
type - TEXT_ITEM
text - string to display
action - string with code to execute when user selects this item (must be Javascript1.2 compatible)
width - the width of the item in pixels
height - the height of the item in pixels
outColor - string (in standard css notation) stating the background color
overColor - string (in standard css notation) stating the color to switch to when user moves over this item
* optional arguments
menu - menu object (see above) which is a sub menu of this item (not yet supported)
*/

function item( type, text, action, width, height, outColor, overColor, menu ) {

	var args = item.arguments;
	
	this.type;
	this.text;
	this.action;
	this.menu;
	this.width;
	this.height;
	this.overColor;
	this.outColor;
	
	if( args.length >= 7 ) {

		if( args.length == 7 ) {
		
			this.setType( type );
			this.setText( text );				
			this.setAction( action );
			this.setDimension( width, height );		
			this.setColor( outColor, overColor );
			this.setMenu( null );
		
		}
		else if( args.length == 8 ) {
	
			this.setType( type );
			this.setText( text );				
			this.setAction( action );
			this.setColor( outColor, overColor );
			this.setDimension( width, height );
			this.setMenu( menu );				

		
		}
	
	
	}
	else {
		
		this.setType( TEXT_ITEM );
		this.setText( '' );
		this.setAction( null );
		this.setDimension( 100, 20 );
		this.setColor( 'orange', 'yellow' );
		this.setMenu( null );
	
	}


}

/*
itemSetType - private method of item class
*/
function itemSetType( type ) {

	if( type == TEXT_ITEM )
		this.type = new Number(type);
		
}
item.prototype.setType = itemSetType;

/*
itemSetText - private method of item class
*/
function itemSetText( text ) {

	if( typeof(text) == 'string' )
		this.text = text.replace( /'/g, '\\\'' );
}
item.prototype.setText = itemSetText;

/*
itemSetAction - private method of item class
*/
function itemSetAction( action ) {

	if( typeof(action) == 'string' )
	
		this.action = action.replace( /'/g, '\\\'' );
	
}
item.prototype.setAction = itemSetAction;

/*
itemSetColor - private method of item class
*/
function itemSetColor( outColor, overColor ) {

	if( typeof(outColor) == 'string' && typeof(overColor) == 'string' ) {
	
		this.outColor = outColor;
		this.overColor = overColor;
	
	}

}
item.prototype.setColor = itemSetColor;

/*
itemSetDimension - private method of item class
*/
function itemSetDimension( width, height ) {

	if( typeof(width) == 'number' && typeof(height) == 'number' ) {
	
		this.width = width;
		this.height = height;
	
	}

}
item.prototype.setDimension = itemSetDimension;

/*
itemSetMenu - private method of item class
*/
function itemSetMenu( menu ) {

	if( menu == null )
		
		this.menu = menu;
		
	else if( typeof( menu ) == 'object' )
					
		this.menu = menu;
				
}
item.prototype.setMenu = itemSetMenu;

/*
itemHasAction - private method of item class
*/
function itemHasAction() {

	return( this.action != null );

}
item.prototype.hasAction = itemHasAction;

/*
itemHasMenu - private method of item class
*/
function itemHasMenu() {

	return( this.menu != null );

}
item.prototype.hasMenu = itemHasMenu;

/*
itemRenderIE - private method of class item if IE
*/
function itemRenderIE( id, i, orientation ) {

	var codeBody;
	var nm = 'm' + id + 'i' + i;

	if( orientation == ORIENTATION_HORIZONTAL ) 
		codeBody = 'htmlStr += \'<td id=\"' + nm + '\" style=\"background:' + this.outColor + ';height:' + this.height+ ';width:' + this.width +';\" onfocus=\"document.all[\\\'mnu' + id + '\\\'].style.setAttribute(\\\'visibility\\\', \\\'hidden\\\');' + this.action + '\" onmouseout=\"this.style.background=\\\'' + this.outColor + '\\\';\" onmouseover=\"this.style.background=\\\'' + this.overColor + '\\\';\" class=\"textItem\">' + this.text + '</td>\';\n';
	else	
		codeBody = 'htmlStr += \'<tr><td id=\"' + nm + '\" style=\"background:' + this.outColor + ';height:' + this.height+ ';width:' + this.width +';\" onfocus=\"document.all[\\\'mnu' + id + '\\\'].style.setAttribute(\\\'visibility\\\', \\\'hidden\\\');' + this.action + '\" onmouseout=\"this.style.background=\\\'' + this.outColor + '\\\';\" onmouseover=\"this.style.background=\\\'' + this.overColor + '\\\';\" class=\"textItem\">' + this.text + '</td></tr>\';\n';

	return( codeBody );
	
}
if( IE4 ) item.prototype.render = itemRenderIE;

/*
itemRenderNS - private method of item class
*/
function itemRenderNS( i, orientation, borderWidth ) {

	var codeBody = '';

	codeBody += 'aLayer[' + i + '] = new Layer(' + this.width + ',aLayer[0]);\n';
	codeBody += 'aLayer[' + i + '].bgColor = \'' + this.outColor + '\';\n';
	
	codeBody += 'aLayer[' + i + '].document.write(\'<table height=\"' + this.height + '\" width=\"' + this.width + '\" border=\"0\"  cellpadding=\"0\" cellspacing=\"0\"><tr><td><span class=\"textItem\">' + this.text + '</span></td></tr></table>\');\n';
	
	codeBody += 'aLayer[' + i + '].document.close();\n';
	
	if( orientation == ORIENTATION_HORIZONTAL ) {

		if( i == 1 ) 
			codeBody += 'aLayer[' + i + '].left = ' + borderWidth + ';\n';
		else
			codeBody += 'aLayer[' + i + '].left = aLayer[' + (i - 1) + '].left + aLayer[' + (i - 1) + '].document.width;\n';
			
		codeBody += 'aLayer[' + i + '].top = ' + borderWidth + ';\n';
	
	} else {
	
		if( i == 1 ) 
			codeBody += 'aLayer[' + i + '].top = ' + borderWidth + ';\n';
		else
			codeBody += 'aLayer[' + i + '].top = aLayer[' + (i - 1) + '].top + aLayer[' + (i - 1) + '].document.height;\n';
			
		codeBody += 'aLayer[' + i + '].left = ' + borderWidth + ';\n';

	}
	
	codeBody += 'aLayer[' + i + '].onmouseover = new Function(\'this.bgColor = \\\'' + this.overColor + '\\\';return true;\');\n';
	codeBody += 'aLayer[' + i + '].onmouseout = new Function(\'this.bgColor = \\\'' + this.outColor + '\\\';return true;\');\n';
	
	codeBody += 'aLayer[' + i + '].captureEvents(Event.MOUSEUP);\n';
	codeBody += 'aLayer[' + i + '].onmouseup = new Function( \'e\', \'this.parentLayer.visibility = \\\'hide\\\';'+ this.action + ';return true;\');\n';

	codeBody += 'aLayer[' + i + '].visibility = \'inherit\';\n';
	
	return( codeBody );
	
}
if( NS4 ) item.prototype.render = itemRenderNS;

/******************************************************************************/

/*
Constructor for title object
* mandatory arguments:
text - The text to display
width - width in pixels
height - height in pixels
color - string (in standard css notation) specifying the background color
*/
function title( text, width, height, color ) {

	this.text;
	this.width;
	this.height;
	this.color;
	
	if( title.arguments.length == 4 ) {

			this.setText( text );				
			this.setDimension( width, height );		
			this.setColor( color );

	}
	else {
			this.setText( '' );				
			this.setDimension( 0, 0 );		
			this.setColor( 'white' );	
	}
	
}

title.prototype.setText = itemSetText;
title.prototype.setDimension = itemSetDimension;

/*
titleSetColor - private  method of title class
*/
function titleSetColor( color ) {

	if( typeof(color) == 'string' )
	
		this.color = color;

}
title.prototype.setColor = titleSetColor;

/*
titleRenderIE - private method of class item if IE
*/
function titleRenderIE( id, i, orientation ) {

	var codeBody;
	var nm = 'm' + id + 'i' + i;

	if( orientation == ORIENTATION_HORIZONTAL ) 

		codeBody = 'htmlStr += \'<td id=\"' + nm + '\" style=\"background:' + this.color + ';height:' + this.height+ ';width:' + this.width +';\" class=\"title\">' + this.text + '</td>\';\n';

	else	

		codeBody = 'htmlStr += \'<tr><td id=\"' + nm + '\" style=\"background:' + this.color + ';height:' + this.height+ ';width:' + this.width +';\" class=\"title\">' + this.text + '</td></tr>\';\n';

	return( codeBody );
	
}
if( IE4 ) title.prototype.render = titleRenderIE;

/*
titleRenderNS - private method of item class
*/
function titleRenderNS( i, borderWidth ) {

	var codeBody = '';

	codeBody += 'aLayer[' + i + '] = new Layer(' + this.width + ',aLayer[0]);\n';	
	codeBody += 'aLayer[' + i + '].bgColor = \'' + this.color + '\';\n';
	
	codeBody += 'aLayer[' + i + '].document.write(\'<table height=\"' + this.height + '\" width=\"' + this.width + '\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><span class=\"title\">' + this.text + '</span></td></tr></table>\');\n';	
	codeBody += 'aLayer[' + i + '].document.close();\n';
	
	codeBody += 'aLayer[' + i + '].left = ' + borderWidth + ';\n';			
	codeBody += 'aLayer[' + i + '].top = ' + borderWidth + ';\n';
	
	codeBody += 'aLayer[' + i + '].visibility = \'inherit\';\n';
	
	return( codeBody );
	
}
if( NS4 ) title.prototype.render = titleRenderNS;

/******************************************************************************/

/*
Capture appropriate events. The events run code that hides the layer if clicking in a 
non-menu area.
*/
if(NS4) {
	window.captureEvents(Event.MOUSEUP);
	window.onMouseUp = new Function( 'e', 'routeEvent(e);for( var i = 0; i < ALL_MENUS.length; i++ ) if( ALL_MENUS[i].menuElement != null )if( ALL_MENUS[i].menuElement.visibility == \'show\' )ALL_MENUS[i].menuElement.visibility = \'hide\';return( true );' );
}

if(IE4)
	if( parseInt(navigator.appVersion) > 4 )	
		window.document.attachEvent( 'onmouseup', new Function( 'e','for( var i = 0; i < ALL_MENUS.length; i++ ) if( ALL_MENUS[i].menuElement != null ) if( ALL_MENUS[i].menuElement.style.visibility == \'visible\' ) ALL_MENUS[i].menuElement.style.setAttribute(\'visibility\',\'hidden\');return true;' ) );	
	else
		window.document.onmouseup = new Function( 'e','for( var i = 0; i < ALL_MENUS.length; i++ ) if( ALL_MENUS[i].menuElement != null ) if( ALL_MENUS[i].menuElement.style.visibility == \'visible\' ) ALL_MENUS[i].menuElement.style.setAttribute(\'visibility\',\'hidden\');return true;' ) ;	


