I am having a similar problem, but the generation of my menu system is dynamic.
Therefore, I need to simply make a change somewhere in the script to generate HTML to create a target to my iFrame.
The menu.js script looks like this -
var expanded = new Array( );
var roll_out = new Array( );
var roll_over = new Array( );
var images = new Array( );
// preload parent images
i = 0;
while ( i < parents.length ) {
images[ i ] = new Image( image_width, image_height );
images[ i ].src = parents[ i ];
i++;
images[ i ] = new Image( image_width, image_height );
images[ i ].src = parents_over[ i ];
i++;
images[ i ] = new Image( image_width, image_height );
images[ i ].src = parents_down[ i ];
i++;
}
// preload children images
for ( var j = 0; j < children.length; j++ ) {
for ( var k = 0; k < children[ j ].length; k++ ) {
images[ i ] = new Image( image_width, image_height );
images[ i ].src = children[ j ][ k ];
i++;
images[ i ] = new Image( image_width, image_height );
images[ i ].src = children_over[ j ][ k ];
i++;
}
}
function prestoChango( id, over ) {
if( document.images ) {
if ( over ) {
if ( roll_over[ id ] != "nochange" )
document[ "slot" + id ].src = ( roll_over[ id ] ? roll_over[ id ] : image_shim );
}
else {
if ( roll_out[ id ] != "nochange" )
document[ "slot" + id ].src = ( roll_out[ id ] ? roll_out[ id ] : image_shim );
}
}
}
function pullout( needle, haystack ) {
var newarray = new Array( );
var newarrayindex = 0;
for ( var i = 0; i < haystack.length; i++ )
if ( haystack[ i ] != needle )
newarray[ newarrayindex++ ] = haystack[ i ];
return newarray;
}
function inArray( needle, haystack ) {
for ( var i = 0; i < haystack.length; i++ )
if ( haystack[ i ] == needle )
return true;
return false;
}
function selMe( id ) {
if( document.images ) {
var slotcount = 0;
var parentslot = 0;
var selected = false;
for ( i = 0; slotcount < totalslots; i++ ) {
if ( parents[ i ] ) {
selected = ( children[ i ] && inArray( i, expanded ) );
nowselected = ( parentslot == id );
document[ "slot" + slotcount ].src = ( ( ( nowselected && !selected ) || ( !nowselected && selected ) ) ? parents_down[ i ] : parents[ i ] );
roll_out[ slotcount ] = ( ( ( nowselected && !selected ) || ( !nowselected && selected ) ) ? "nochange" : parents[ i ] );
roll_over[ slotcount ] = ( ( ( nowselected && !selected ) || ( !nowselected && selected ) ) ? "nochange" : parents_over[ i ] );
if ( ( nowselected ) && ( parents_urls[ i ] ) ) {
if ( parents_urls[ i ] == "popup:contact" )
window.open( "contact.php", "contact", "width=520,height=430,toolbar=no,resizable=yes,scr ollbars=yes" );
else
top.location = parents_urls[ i ];
}
else if ( ( nowselected ) && ( selected ) ) {
expanded = pullout( i, expanded );
}
else if ( ( children[ i ] ) && ( nowselected || selected ) ) {
if ( !selected )
expanded[ expanded.length ] = i;
for ( var childcount = 0; ( childcount < children[ i ].length ) && ( (slotcount+1) < totalslots ); childcount++ ) {
slotcount++;
if ( ( slotcount != parentslot ) && ( slotcount == id ) && ( children_urls[ i ][ childcount ] ) ) {
top.location = children_urls[ i ][ childcount ];
}
document[ "slot" + slotcount ].src = children[ i ][ childcount ];
roll_out[ slotcount ] = children[ i ][ childcount ];
roll_over[ slotcount ] = children_over[ i ][ childcount ];
}
}
parentslot++;
parentslot += ( selected ? children[ i ].length : 0 );
}
else {
document[ "slot" + slotcount ].src = image_shim;
roll_out[ slotcount ] = "";
roll_over[ slotcount ] = "";
}
slotcount++;
}
}
}
function printTable() {
var is_open = false;
document.writeln('<table cellspacing="0" cellpadding="0" border="0">');
for ( var i = 0, iP = 0; i < totalslots; i++, iP++ ) {
// does this parent start opened?
is_open = ( (initexpand-1) == iP );
// print parent slot & set rollovers
document.writeln('<tr><td><a href="javascript:selMe(' + i + ');" onMouseOver="prestoChango(' + i + ',true);" onMouseOut="prestoChango(' + i + ',false);"><img src="' + ( parents[ iP ] ? ( is_open ? parents_down[ iP ] : parents[ iP ] ) : image_shim ) + '" name="slot' + i + '" width=' + image_width + ' height=' + image_height + ' alt="" border="0"></a></td></tr>');
roll_out[ i ] = ( is_open ? parents_down[ iP ] : parents[ iP ] );
roll_over[ i ] = ( is_open ? parents_down[ iP ] : parents_over[ iP ] );
if ( ( is_open ) && ( children[ iP ] ) ) {
for ( var iC = 0; ( (i+1) < totalslots ) && ( iC < children[ iP ].length ); iC++ ) {
i++;
// print child slot & set rollovers
document.writeln('<tr><td><a href="javascript:selMe(' + i + ');" onMouseOver="prestoChango(' + i + ',true);" onMouseOut="prestoChango(' + i + ',false);"><img src="' + children[ iP ][ iC ] + '" name="slot' + i + '" width=' + image_width + ' height=' + image_height + ' alt="" border="0"></a></td></tr>');
roll_out[ i ] = children[ iP ][ iC ];
roll_over[ i ] = children_over[ iP ][ iC ];
}
// remember that this parent is open
expanded[ 0 ] = iP;
}
}
document.writeln('</table>');
}
The HTML file looks like this -
<head>
<title>Go Financial :: Witty Tagline</title>
<link rel="stylesheet" type="text/css" href="3balstil.css">
<script language="javascript">
<!-- php generated javascript
var totalslots = 32;
var initexpand = 0;
var image_width = 167;
var image_height = 18;
var image_shim = "nav/shim.gif";
parents = new Array( "nav/top_bit.gif", "nav/new/about_us.gif", "nav/new/consultant_program.gif", "nav/new/for_consumers.gif", "nav/new/lenders.gif", "nav/new/careers.gif", "nav/new/contact.gif" );
parents_over = new Array( "nav/top_bit.gif", "nav/new/about_us_roll.gif", "nav/new/consultant_program_roll.gif", "nav/new/for_consumers_roll.gif", "nav/new/lenders_roll.gif", "nav/new/careers_roll.gif", "nav/new/contact_roll.gif" );
parents_down = new Array( "nav/top_bit.gif", "nav/new/about_us_click.gif", "nav/new/consultant_program_click.gif", "nav/new/for_consumers_click.gif", "nav/new/lenders_click.gif", "nav/new/careers_click.gif", "nav/new/contact_click.gif" );
parents_urls = new Array( "", "", "", "", "", "", "" );
children = new Array( );
children[0] = new Array( );
children[1] = new Array( "nav/new/whatisgo.gif", "nav/new/howwedoit.gif", "nav/new/faq.gif", "nav/new/feedback.gif", "nav/new/press.gif" );
children[2] = new Array( "nav/new/programinfo.gif", "nav/new/tools.gif", "nav/new/success.gif", "nav/new/become_consultant.gif" );
children[3] = new Array( "nav/new/tools_calculators.gif", "nav/new/debt_consolidation.gif", "nav/new/creditcard.gif", "nav/new/student_loan.gif", "nav/new/consumer_success.gif", "nav/new/consumer_apply.gif" );
children[4] = new Array( "nav/new/listing.gif", "nav/new/lender_feedback.gif", "nav/new/benefits_lenders.gif", "nav/new/jointhenetwork.gif" );
children[5] = new Array( "nav/new/openings.gif", "nav/new/benefits_employees.gif", "nav/new/apply.gif" );
children[6] = new Array( "nav/new/contact_consumer.gif", "nav/new/contact_consultant.gif", "nav/new/contact_lender.gif" );
children_over = new Array( );
children_over[0] = new Array( );
children_over[1] = new Array( "nav/new/whatisgo_roll.gif", "nav/new/howwedoit_roll.gif", "nav/new/faq_roll.gif", "nav/new/feedback_roll.gif", "nav/new/press_roll.gif" );
children_over[2] = new Array( "nav/new/programinfo_roll.gif", "nav/new/tools_roll.gif", "nav/new/success_roll.gif", "nav/new/become_consultant_roll.gif" );
children_over[3] = new Array( "nav/new/tools_calculators_roll.gif", "nav/new/debt_consolidation_roll.gif", "nav/new/creditcard_roll.gif", "nav/new/student_loan_roll.gif", "nav/new/consumer_success_roll.gif", "nav/new/consumer_apply_roll.gif" );
children_over[4] = new Array( "nav/new/listing_roll.gif", "nav/new/lender_feedback_roll.gif", "nav/new/benefits_lenders_roll.gif", "nav/new/jointhenetwork_roll.gif" );
children_over[5] = new Array( "nav/new/openings_roll.gif", "nav/new/benefits_employees_roll.gif", "nav/new/apply_roll.gif" );
children_over[6] = new Array( "nav/new/contact_consumer_roll.gif", "nav/new/contact_consultant_roll.gif", "nav/new/contact_lender_roll.gif" );
children_urls = new Array( );
children_urls[0] = new Array( );
children_urls[1] = new Array( "index2.php", "then_now_so.php", "human_first.php", "tribal_meaning.php", "tribal_meaning.php" );
children_urls[2] = new Array( "where.php?worldwide", "where.php?americas", "where.php?asia%20pacific", "where.php?europe" );
children_urls[3] = new Array( "clients.php", "services.php" );
children_urls[4] = new Array( "press.php", "speaking.php" );
children_urls[5] = new Array( );
children_urls[6] = new Array( );
//-->
</script>
<script language="javascript" src="menu.js"></script>
I tried changing the children URL's, but the menu.js script did not like that.
I have no idea what to do and simply want the the menu system to open pages in a different iFrame so that I do not need to load the menu system time after time.
Also, a base href="iFrame" will not work because of the fact that there are href="#" for the times that people need to expand the menu system.
Thanks so much,
David Young