2011-12-13 12:29:05 +01:00
//\/////
//\ overLIB Crossframe Support Plugin
//\ This file requires overLIB 4.10 or later.
//\
//\ overLIB 4.05 - You may not remove or change this notice.
//\ Copyright Erik Bosrup 1998-2004. All rights reserved.
//\ Contributors are listed on the homepage.
//\ See http://www.bosrup.com/web/overlib/ for details.
2013-08-12 10:44:52 +02:00
//
2011-12-13 12:29:05 +01:00
//\/////
//\mini
////////
// PRE-INIT
// Ignore these lines, configuration is below.
////////
if ( typeof olInfo == 'undefined' || typeof olInfo . meets == 'undefined' || ! olInfo . meets ( 4.10 ) ) alert ( 'overLIB 4.10 or later is required for the Cross Frame Support Plugin.' ) ;
else {
registerCommands ( 'frame' ) ;
////////
// PLUGIN FUNCTIONS
///////
// Parses FRAME command
function parseFrameExtras ( pf , i , ar ) {
var k = i , v ;
if ( k < ar . length ) {
if ( ar [ k ] == FRAME ) { v = ar [ ++ k ] ; if ( pf == 'ol_' ) ol _frame = v ; else opt _FRAME ( v ) ; return k ; }
}
return - 1 ;
}
////////
// SUPPORT FUNCTIONS
////////
// Defines which frame we should point to.
function opt _FRAME ( frm ) {
o3 _frame = frm ;
over = createDivContainer ( 'overDiv' ) ;
return 0 ;
}
// Get frame depth of nested frames
function frmDepth ( thisFrame , ofrm ) {
var retVal = '' ;
for ( var i = 0 ; i < thisFrame . length ; i ++ ) {
if ( thisFrame [ i ] . length > 0 ) {
retVal = frmDepth ( thisFrame [ i ] , ofrm ) ;
if ( retVal == '' ) continue ;
} else if ( thisFrame [ i ] != ofrm ) continue ;
retVal = '[' + i + ']' + retVal ;
break ;
}
return retVal ;
}
// Gets frame reference value relative to top frame
function getFrmRef ( srcFrm , tgetFrm ) {
var rtnVal = ''
if ( tgetFrm != srcFrm ) {
var tFrm = frmDepth ( top . frames , tgetFrm )
var sFrm = frmDepth ( top . frames , srcFrm )
if ( sFrm . length == tFrm . length ) {
l = tFrm . lastIndexOf ( '[' )
if ( l ) {
while ( sFrm . substring ( 0 , l ) != tFrm . substring ( 0 , l ) )
l = tFrm . lastIndexOf ( '[' , l - 1 )
tFrm = tFrm . substr ( l )
sFrm = sFrm . substr ( l )
}
}
var cnt = 0 , p = '' , str = tFrm
while ( ( k = str . lastIndexOf ( '[' ) ) != - 1 ) {
cnt ++
str = str . substring ( 0 , k )
}
for ( var i = 0 ; i < cnt ; i ++ ) p = p + 'parent.'
rtnVal = p + 'frames' + sFrm + '.'
}
return rtnVal
}
function chkForFrmRef ( ) {
if ( o3 _frame != ol _frame ) fnRef = getFrmRef ( ol _frame , o3 _frame )
return true ;
}
////////
// PLUGIN REGISTRATIONS
////////
registerCmdLineFunction ( parseFrameExtras ) ;
registerPostParseFunction ( chkForFrmRef ) ;
}