2007-02-07 17:14:23 +05:00
// eHelp<6C> Corporation Dynamic HTML JavaScript
// Copyright<68> 1998-2003 eHelp<6C> Corporation.All rights reserved.
// Version=4.82
// Warning:Do not modify this file.It is generated by RoboHELP<4C> and changes will be overwritten.
//// Segment Begin -- (JavaScript 1.0)
/// Section Begin - General and relative topics(JavaScript 1.0)
//{{HH_SYMBOL_SECTION
var HH _ChmFilename = "" ;
var HH _WindowName = "" ;
var HH _GlossaryFont = "" ;
var HH _Glossary = "" ;
var HH _Avenue = "" ;
var HH _ActiveX = false ;
//}}HH_SYMBOL_SECTION
//Begin to support previous generic parameters
//Get the information about the browser.
var gstrBsAgent = navigator . userAgent . toLowerCase ( ) ;
var gnBsVer = parseInt ( navigator . appVersion ) ;
var gbBsOpera = ( gstrBsAgent . indexOf ( 'opera' ) != - 1 ) ;
var gbBsKonqueror = ( gstrBsAgent . indexOf ( 'konqueror' ) != - 1 ) ;
var gbBsSafari = ( gstrBsAgent . indexOf ( 'safari' ) != - 1 ) ;
var gbBsIE = ( gstrBsAgent . indexOf ( 'msie' ) != - 1 ) && ! gbBsOpera && ! gbBsKonqueror && ! gbBsSafari ;
var gbBsNS = ( gstrBsAgent . indexOf ( 'mozilla' ) != - 1 ) && ( ( gstrBsAgent . indexOf ( 'spoofer' ) == - 1 ) && ( gstrBsAgent . indexOf ( 'compatible' ) == - 1 ) ) && ! gbBsOpera && ! gbBsKonqueror && ! gbBsSafari ;
var gbBsMac = ( gstrBsAgent . indexOf ( 'mac' ) != - 1 ) ;
var gbBsWindows = ( ( gstrBsAgent . indexOf ( 'win' ) != - 1 ) || ( gstrBsAgent . indexOf ( '16bit' ) != - 1 ) ) ;
var gbBsSunOS = ( gstrBsAgent . indexOf ( "sunos" ) != - 1 ) ;
var gbBsIE3Before = ( ( gbBsIE ) && ( gnBsVer <= 2 ) ) ;
var gbBsNS3Before = ( ( gbBsNS ) && ( gnBsVer <= 3 ) ) ;
var gbBsNS2 = ( ( gbBsNS ) && ( gnBsVer <= 2 ) ) ;
var gbBsNS3 = ( ( gbBsNS ) && ( gnBsVer == 3 ) ) ;
var gbBsIE300301 = ( ( gbBsIE ) && ( gnBsVer == 2 ) && ( ( gstrBsAgent . indexOf ( "3.00" ) != - 1 ) || ( gstrBsAgent . indexOf ( "3.0a" ) != - 1 ) || ( gstrBsAgent . indexOf ( "3.0b" ) != - 1 ) || ( gstrBsAgent . indexOf ( "3.01" ) != - 1 ) ) ) ;
var gbBsIE302 = ( ( gbBsIE ) && ( gnBsVer == 2 ) && ( gstrBsAgent . indexOf ( "3.02" ) != - 1 ) ) ;
var gbBsNS4 = ( ( gbBsNS ) && ( gnBsVer >= 4 ) ) ;
var gbBsNS6 = ( ( gbBsNS ) && ( gnBsVer >= 5 ) ) ;
var gbBsNS7 = false ;
var gbBsIE4 = ( ( gbBsIE ) && ( gnBsVer >= 4 ) ) ;
var gbBsIE5 = false ;
var gbBsIE55 = false ;
var gbBsOpera6 = false ;
var gbBsOpera7 = false ;
var gbBsKonqueror3 = false ;
gbBsIE = ( navigator . appName . indexOf ( "Microsoft" ) != - 1 ) && ! gbBsOpera && ! gbBsKonqueror && ! gbBsSafari ; ;
if ( gbBsIE )
{
if ( parseInt ( navigator . appVersion ) >= 4 ) {
gbBsIE4 = true ;
if ( gbBsIE4 ) {
var nPos = gstrBsAgent . indexOf ( "msie" ) ;
var strIEversion = gstrBsAgent . substring ( nPos + 5 ) ;
var nVersion = parseFloat ( strIEversion ) ;
if ( nVersion >= 5 )
gbBsIE5 = true ;
if ( nVersion >= 5.5 )
gbBsIE55 = true ;
}
}
}
if ( gbBsNS6 )
{
var nPos = gstrBsAgent . indexOf ( "gecko" ) ;
if ( nPos != - 1 )
{
var nPos2 = gstrBsAgent . indexOf ( "/" , nPos ) ;
if ( nPos2 != - 1 )
{
var nVersion = parseFloat ( gstrBsAgent . substring ( nPos2 + 1 ) ) ;
if ( nVersion >= 20020823 )
gbBsNS7 = true ;
}
}
}
if ( gbBsOpera )
{
var nPos = gstrBsAgent . indexOf ( "opera" ) ;
if ( nPos != - 1 )
{
var nVersion = parseFloat ( gstrBsAgent . substring ( nPos + 6 ) ) ;
if ( nVersion >= 6 )
{
gbBsOpera6 = true ;
if ( nVersion >= 7 )
gbBsOpera7 = true ;
}
}
}
if ( gbBsKonqueror )
{
var nPos = gstrBsAgent . indexOf ( "konqueror" ) ;
if ( nPos != - 1 )
{
var nVersion = parseFloat ( gstrBsAgent . substring ( nPos + 10 ) ) ;
if ( nVersion >= 3 )
{
gbBsKonqueror3 = true ;
}
}
}
function insertAdjacentHTML ( obj , where , htmlStr )
{
if ( gbBsIE || gbBsOpera7 )
{
obj . insertAdjacentHTML ( where , htmlStr ) ;
}
else if ( gbBsNS6 || gbBsSafari )
{
var r = obj . ownerDocument . createRange ( ) ;
r . setStartBefore ( obj ) ;
var parsedHTML = r . createContextualFragment ( htmlStr ) ;
switch ( where ) {
case 'beforeBegin' :
obj . parentNode . insertBefore ( parsedHTML , obj ) ;
break ;
case 'afterBegin' :
obj . insertBefore ( parsedHTML , obj . firstChild ) ;
break ;
case 'beforeEnd' :
obj . appendChild ( parsedHTML ) ;
break ;
case 'afterEnd' :
if ( obj . nextSibling ) {
obj . parentNode . insertBefore ( parsedHTML , obj . nextSibling ) ;
} else {
obj . parentNode . appendChild ( parsedHTML ) ;
}
break ;
}
}
}
// Utilities functions.
function BsscHasExtJs ( )
{
if ( gbBsIE3Before || gbBsNS3Before )
return false ;
return true ;
}
// Register event handler
var gBsOnLoads = new Array ( ) ; // An array holds all the onload event handler.
var gBsOnClicks = new Array ( ) ; // An array holds all the onClick event handler.
var gBsOnUnLoads = new Array ( ) ; // An array holds all the OnUnLoad event handler.
var gBsOnMouseOvers = new Array ( ) ; // An array holds all the OnMouseOver event handler.
var gBsOnMouseOuts = new Array ( ) ; // An array holds all the OnMouseOut event handler.
var gbOrignalOnMouseDown = null ;
function BsscRegisterOnLoad ( funcHandler )
{
var nLength = gBsOnLoads . length ;
gBsOnLoads [ nLength ] = funcHandler ;
}
function BsscRegisterOnClick ( funcHandler )
{
var nLength = gBsOnClicks . length ;
gBsOnClicks [ nLength ] = funcHandler ;
}
function BsscRegisterOnUnLoad ( funcHandler )
{
var nLength = gBsOnUnLoads . length ;
gBsOnUnLoads [ nLength ] = funcHandler ;
}
function BsscRegisterOnMouseOver ( funcHandler )
{
var nLength = gBsOnMouseOvers . length ;
gBsOnMouseOvers [ nLength ] = funcHandler ;
}
function BsscRegisterOnMouseOut ( funcHandler )
{
var nLength = gBsOnMouseOuts . length ;
gBsOnMouseOuts [ nLength ] = funcHandler ;
}
function BsGeneralOnLoad ( )
{
if ( ! gbBsIE4 && ! gbBsNS4 )
return ;
// Make everything visible in navigator
if ( gbBsNS4 && ! gbBsNS6 ) {
// Make some special effects items visible
for ( var iLayer = 0 ; iLayer < document . layers . length ; iLayer ++ ) {
document . layers [ iLayer ] . visibility = "show" ;
document . layers [ iLayer ] . left = 0 ;
}
}
}
// If resize the netscape browser, need to reload it.
function BsReDo ( )
{
if ( innerWidth != origWidth || innerHeight != origHeight )
location . reload ( ) ;
}
// End of the local functions.
// The following functions are used by the html files.
function BSSCOnLoad ( )
{
if ( ! BsscHasExtJs ( ) )
return ;
for ( var nElement = gBsOnLoads . length - 1 ; nElement >= 0 ; nElement -- )
gBsOnLoads [ nElement ] ( ) ;
}
function BSSCOnClick ( )
{
if ( ! BsscHasExtJs ( ) ) return ;
for ( var nElement = gBsOnClicks . length - 1 ; nElement >= 0 ; nElement -- )
gBsOnClicks [ nElement ] ( ) ;
}
function BSSCOnUnload ( )
{
if ( ! BsscHasExtJs ( ) ) return ;
for ( var nElement = gBsOnUnLoads . length - 1 ; nElement >= 0 ; nElement -- )
gBsOnUnLoads [ nElement ] ( ) ;
}
function BSSCOnMouseOver ( )
{
if ( ! BsscHasExtJs ( ) ) return ;
for ( var nElement = gBsOnMouseOvers . length - 1 ; nElement >= 0 ; nElement -- )
gBsOnMouseOvers [ nElement ] ( ) ;
}
function BSSCOnMouseOut ( )
{
if ( ! BsscHasExtJs ( ) ) return ;
for ( var nElement = gBsOnMouseOuts . length - 1 ; nElement >= 0 ; nElement -- )
{
gBsOnMouseOuts [ nElement ] ( ) ;
}
}
// End of invocation of the event handle functions.
// Add the GereralOnLoad to the onload array.
if ( typeof ( BsscRegisterOnLoad ) != "undefined" )
{
BsscRegisterOnLoad ( BsGeneralOnLoad ) ;
}
if ( gbBsNS4 && ! gbBsNS6 ) {
origWidth = innerWidth ;
origHeight = innerHeight ;
onresize = BsReDo ;
}
//End to support previous generic parameters
//Begin to support previous HHActiveX invoking
function BsHHActivateComponents ( )
{
if ( HH _ActiveX && ( HH _ChmFilename != "" ) && ( ( self == top ) || ( self == top . frames [ 0 ] ) ) )
{
var objBody = getElementsByTag ( document , "BODY" ) [ 0 ] ;
if ( typeof ( objBody ) == "object" )
{
insertAdjacentHTML ( objBody , "beforeEnd" , '<OBJECT ID="HHComponentActivator" CLASSID="CLSID:399CB6C4-7312-11D2-B4D9-00105A0422DF" width=0 height=0></OBJECT>' ) ;
if ( HHComponentActivator . object )
HHComponentActivator . Activate ( HH _ChmFilename , HH _WindowName , HH _GlossaryFont , HH _Glossary , HH _Avenue ) ;
}
}
}
function BsHHActivXOnLoad ( )
{
if ( gbBsIE4 )
BsHHActivateComponents ( ) ;
}
if ( typeof ( BsscRegisterOnLoad ) != "undefined" )
{
BsscRegisterOnLoad ( BsHHActivXOnLoad ) ;
}
//End to support previous HHActiveX invoking
//Begin to support previous relative topics
//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here
var gbPopupMenuTimeoutExpired = false ;
var gbInPopupMenu = false ;
var gbPopupMenuTopicList = null ;
var gOlddocumentClick = null ;
//////////////////////////////////////////////////////////////////////////////////////////
//
// Popup Menu code
//
//////////////////////////////////////////////////////////////////////////////////////////
var g _bIsPopupMenuInit = false ;
function _WritePopupMenuLayer ( )
{
if ( ! g _bIsPopupMenuInit )
{
if ( gbBsNS4 && ! gbBsNS6 ) {
//Do not try to write ininle styles for NS! NS can not handle it and will not stop downloading the html page...
document . write ( "<DIV CLASS='WebHelpPopupMenu' ID='PopupMenu'></DIV>" ) ;
} else {
document . write ( "<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>" ) ;
if ( ! ( gbBsNS4 && ! gbBsNS6 ) ) {
document . write ( "<STYLE TYPE='text/css'>" ) ;
if ( gbBsMac && gbBsIE4 ) {
document . write ( ".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}" ) ;
document . write ( ".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}" ) ;
} else {
document . write ( ".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}" ) ;
document . write ( ".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}" ) ;
}
document . write ( "</STYLE>" ) ;
}
}
g _bIsPopupMenuInit = true ;
}
}
//Seek for the bsscright frame
function _SeekFrameByName ( cRoot , strName )
{
if ( cRoot == null ) return null ;
if ( cRoot . frames == null ) return null ;
if ( cRoot . frames [ strName ] != null ) return cRoot . frames [ strName ] ;
for ( var i = 0 ; i < cRoot . frames . length ; i ++ )
{
var cObj = null ;
if ( ! gbBsNS6 )
cObj = _SeekFrameByName ( cRoot . frames ( i ) . document , strName ) ;
else
cObj = _SeekFrameByName ( cRoot . frames [ i ] , strName ) ;
if ( cObj != null ) return cObj ;
} ;
return null ;
}
function _GetFrameByName ( cRoot , strName )
{
if ( cRoot == null ) return null ;
var cRet = _SeekFrameByName ( cRoot , strName ) ;
if ( cRet != null ) return cRet ;
if ( cRoot . parent != cRoot )
return _GetFrameByName ( cRoot . parent , strName ) ;
else
return null ;
}
var gfn _arguments = null ;
function _PopupMenu _Invoke ( fn _arguments )
{
gfn _arguments = fn _arguments ;
if ( gbBsOpera6 && gbBsMac )
{
var wndOldPopupLinks = window . open ( document . location . href , "popuplinks" ) ;
wndOldPopupLinks . close ( ) ;
setTimeout ( "_PopupMenu_Invoke_2();" , 100 ) ;
}
else
{
_PopupMenu _Invoke _2 ( ) ;
}
}
function _PopupMenu _Invoke _2 ( )
{
var fn _arguments = gfn _arguments ;
gfn _arguments = null ;
// Make sure we have reasonable arguments
var argLen = fn _arguments . length ;
if ( argLen < 3 ) {
return false ;
}
// Check to see if we only have one target
var strTarget = "" ;
var targetDoc = null ;
if ( fn _arguments [ 1 ] == '' ) {
if ( BSSCPopup _IsPopup ( ) ) {
targetDoc = parent ;
strTarget = "TARGET= _parent" ;
}
else
targetDoc = window . document ;
} else {
targetDoc = _GetFrameByName ( parent , fn _arguments [ 1 ] ) ;
strTarget = "TARGET='" + fn _arguments [ 1 ] + "'" ;
}
if ( ( ! gbBsIE4 && ! gbBsNS4 && ! gbBsOpera7 && ! gbBsKonqueror3 && ! gbBsSafari ) || ( ( gbBsMac ) && ( gbBsIE4 ) && ( window . event . srcElement . tagName == "AREA" ) ) ) {
var argLen = fn _arguments . length ;
// Create the window that the hyperlinks will go into
var nHeight = argLen * 15 ;
var nWidth = 400 ;
var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto" ;
strParam += ",height=" + nHeight + ",width=200" ;
strParam += ",resizable" ;
var wndTemp = null ;
// Create a temporary window first to ensure the real popup comes up on top
if ( ! gbBsOpera )
wndTemp = window . open ( "" , "temp" , strParam ) ;
// Create the real popup window
var wndPopupLinks = null ;
if ( gbBsOpera && gbBsMac )
{
wndTemp = window . open ( document . location . href , "temp" , strParam ) ;
wndPopupLinks = window . open ( document . location . href , "popuplinks" , strParam ) ;
}
else
wndPopupLinks = window . open ( "" , "popuplinks" , strParam ) ;
wndPopupLinks . document . open ( "text/html" ) ;
// Close the temporary
if ( wndTemp )
wndTemp . close ( ) ;
var sHTML = "<html><head></head>" ;
sHTML += "<body onBlur=\'self.focus();\'>" ;
var strParaLine = "" ;
for ( var i = 0 ; i < ( argLen - 2 ) / 2 ; i ++ ) {
strParaLine = "" ;
strParaLine += "<a href=\"javascript:" ;
if ( gbBsIE ) {
strParaLine += "onBlur=null; " ;
}
strParaLine += "opener.location=\'" ;
strParaLine += fn _arguments [ 2 * i + 3 ] ;
strParaLine += "\';close();\"" ;
strParaLine += strTarget ;
strParaLine += ">" ;
strParaLine += fn _arguments [ 2 * i + 2 ] ;
strParaLine += "</a>" ;
strParaLine += "<br>" ;
sHTML += strParaLine ;
}
sHTML += "</body></html>" ;
wndPopupLinks . document . write ( sHTML ) ;
wndPopupLinks . document . close ( ) ;
window . gbInPopupMenu = true ;
if ( ! gbBsIE ) {
wndPopupLinks . focus ( ) ;
}
return false ;
}
if ( ( ( argLen < 5 ) && ( ( isNaN ( fn _arguments [ 2 ] ) ) || ( gbPopupMenuTopicList == null ) ) ) ||
( ( argLen < 4 ) && ( ( ! isNaN ( fn _arguments [ 2 ] ) ) && ( gbPopupMenuTopicList != null ) ) ) ) {
// Get the place that we will be putting the topic into
var strURL = "" ;
if ( isNaN ( fn _arguments [ 2 ] ) || ( gbPopupMenuTopicList == null ) ) {
strURL = fn _arguments [ 3 ] ;
}
else {
strURL = gbPopupMenuTopicList [ fn _arguments [ 2 ] ] . strURL ;
}
if ( targetDoc != null ) {
targetDoc . location . href = strURL ;
}
else {
if ( fn _arguments [ 1 ] != null && typeof ( fn _arguments [ 1 ] ) != "undefined" )
window . open ( strURL , fn _arguments [ 1 ] ) ;
else
window . open ( strURL ) ;
}
window . gbInPopupMenu = true ;
return false ;
}
var strMenu = "" ;
if ( gbBsNS4 && ! gbBsNS6 ) {
strMenu = '<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=3 BGCOLOR="#c0c0c0">' ;
} else {
strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0' ;
if ( gbBsMac ) {
strMenu += ' CELLPADDING=4' ;
} else {
strMenu += ' CELLPADDING=2' ;
}
strMenu += ' BGCOLOR=#c0c0c0>' ;
}
// Add each of the items
var i = 2 ;
while ( i <= argLen - 1 ) {
strMenu += '<TR><TD><NOBR>'
// If the destination is a number then look it up in the topic list
if ( isNaN ( fn _arguments [ i ] ) || ( gbPopupMenuTopicList == null ) ) {
strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn _arguments [ i + 1 ] + '"' + strTarget ;
} else {
strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + gbPopupMenuTopicList [ fn _arguments [ i ] ] . strURL + '"' + strTarget ;
}
strMenu += ' onclick="PopupMenu_HandleClick(event);"' ;
strMenu += ' onmouseover="PopupMenu_Over(event);"' ;
strMenu += ' onmouseout="PopupMenu_Out(event);"' ;
strMenu += '>' ;
if ( isNaN ( fn _arguments [ i ] ) || ( gbPopupMenuTopicList == null ) ) {
strMenu += '<SPAN CLASS="PopupNotOver">' + fn _arguments [ i ] + '</SPAN>' ;
} else {
strMenu += '<SPAN CLASS="PopupNotOver">' + gbPopupMenuTopicList [ fn _arguments [ i ] ] . strTitle + '</SPAN>' ;
}
strMenu += '</A></DIV></NOBR></TD></TR>' ;
if ( isNaN ( fn _arguments [ i ] ) || ( gbPopupMenuTopicList == null ) ) {
i += 2 ;
} else {
i += 1 ;
}
}
strMenu += "</TABLE>" ;
if ( gbBsMac ) {
// totally hack. because ie5 in mac need something. </TABLE> is one of them. mac is mad.
strMenu += "<TABLE></TABLE>" ;
}
var layerPopup = null ;
var stylePopup = null ;
var nEventX = 0 ;
var nEventY = 0 ;
var nWindowWidth = 0 ;
if ( gbBsIE4 || gbBsOpera7 ) {
layerPopup = getElement ( "PopupMenu" ) ;
layerPopup . innerHTML = strMenu ;
stylePopup = layerPopup . style ;
_BSPSGetClientSize ( ) ;
// Get the position of the item causing the event (relative to its parent)
nEventX = window . event . clientX ;
nEventY = window . event . clientY ;
if ( nEventY + layerPopup . scrollHeight + 10 < gBsClientHeight ) {
nEventY += document . body . scrollTop + 10 ;
} else {
nEventY = ( document . body . scrollTop + gBsClientHeight ) - layerPopup . scrollHeight - 20 ;
}
stylePopup . top = nEventY ;
var nPopupWidth = layerPopup . scrollWidth ;
if ( gbBsMac ) {
nPopupWidth = 80 ; // we have no idea how to get the dynamic width of the popup.
}
if ( nEventX + nPopupWidth + 20 > gBsClientWidth ) {
if ( gBsClientWidth - nPopupWidth < 5 ) {
stylePopup . left = 5 ;
} else {
stylePopup . left = gBsClientWidth - nPopupWidth - 5 ;
}
} else {
stylePopup . left = nEventX + document . body . scrollLeft + 20 ;
}
stylePopup . visibility = "visible" ;
if ( ! gOlddocumentClick && document . onclick )
gOlddocumentClick = document . onclick ;
document . onclick = PopupMenu _HandleClick ;
} else if ( gbBsNS6 || gbBsKonqueror3 || gbBsSafari ) {
layerPopup = getElement ( "PopupMenu" ) ;
layerPopup . style . visibility = "hidden" ;
if ( gbBsNS6 )
{
var e = fn _arguments [ 0 ] ;
nEventX = e . pageX ;
nEventY = e . pageY ;
}
else
{
nEventX = window . event . clientX ;
nEventY = window . event . clientY ;
}
_BSPSGetClientSize ( ) ;
layerPopup . innerHTML = strMenu ;
if ( nEventY + layerPopup . offsetHeight + 20 < window . pageYOffset + gBsClientHeight ) {
nEventY += 20 ;
} else {
nEventY = gBsClientHeight + window . pageYOffset - layerPopup . offsetHeight - 20 ;
}
if ( nEventX + layerPopup . offsetWidth + 20 > gBsClientWidth + window . pageXOffset ) {
if ( gBsClientWidth + window . pageXOffset - layerPopup . offsetWidth < 20 ) {
nEventX = 5 ;
} else {
nEventX = gBsClientWidth + window . pageXOffset - layerPopup . offsetWidth - 20 ;
}
} else {
nEventX += 20 ;
}
layerPopup . style . top = nEventY ;
layerPopup . style . left = nEventX ;
// set again to avoid the stupid frash in netscape 6.
layerPopup . innerHTML = strMenu ;
layerPopup . style . visibility = "visible" ;
//window.captureEvents(Event.MOUSEDOWN);
if ( ! gOlddocumentClick && document . onclick )
gOlddocumentClick = document . onclick ;
window . onclick = PopupMenu _HandleClick ;
}
else if ( gbBsNS4 ) {
layerPopup = document . layers . PopupMenu ;
layerPopup . visibility = "hide" ;
stylePopup = layerPopup . document ;
stylePopup . write ( strMenu ) ;
stylePopup . close ( ) ;
var e = fn _arguments [ 0 ] ;
nEventX = e . pageX ;
nEventY = e . pageY ;
_BSPSGetClientSize ( ) ;
if ( nEventY + layerPopup . clip . height + 20 < window . pageYOffset + gBsClientHeight ) {
nEventY += 20 ;
} else {
nEventY = gBsClientHeight + window . pageYOffset - layerPopup . clip . height - 20 ;
}
layerPopup . top = nEventY ;
if ( nEventX + layerPopup . clip . width + 20 > gBsClientWidth + window . pageXOffset ) {
if ( gBsClientWidth + window . pageXOffset - layerPopup . clip . width < 20 ) {
nEventX = 5 ;
} else {
nEventX = gBsClientWidth + window . pageXOffset - layerPopup . clip . width - 20 ;
}
} else {
nEventX += 20 ;
}
layerPopup . left = nEventX ;
layerPopup . visibility = "show" ;
window . captureEvents ( Event . MOUSEDOWN ) ;
if ( ! gOlddocumentClick && document . onmousedown )
gOlddocumentClick = document . onmousedown ;
window . onmousedown = PopupMenu _HandleClick ;
}
window . gbInPopupMenu = true ;
window . gbPopupMenuTimeoutExpired = false ;
setTimeout ( "PopupMenu_Timeout();" , 100 ) ;
return false ;
}
function PopupMenu _Timeout ( )
{
window . gbPopupMenuTimeoutExpired = true ;
}
function PopupMenu _Over ( e )
{
if ( gbBsIE4 || gbBsOpera7 )
e . srcElement . className = "PopupOver" ;
else if ( gbBsNS6 )
e . target . parentNode . className = "PopupOver" ;
return ;
}
function PopupMenu _Out ( e )
{
if ( gbBsIE4 || gbBsOpera7 )
e . srcElement . className = "PopupNotOver" ;
else if ( gbBsNS6 )
e . target . parentNode . className = "PopupNotOver" ;
return ;
}
function PopupMenu _HandleClick ( e )
{
if ( window . gbPopupMenuTimeoutExpired ) {
window . gbInPopupMenu = false ;
if ( gbBsNS4 && ! gbBsNS6 ) {
window . releaseEvents ( Event . MOUSEDOWN ) ;
}
var layerPopup = null ;
if ( gbBsNS4 && ! gbBsNS6 ) {
layerPopup = document . layers . PopupMenu ;
layerPopup . visibility = "hide" ;
} else {
layerPopup = getElement ( "PopupMenu" ) ;
layerPopup . style . visibility = "hidden" ;
}
if ( gOlddocumentClick )
{
if ( gbBsNS4 && ! gbBsNS6 )
document . onmousedown = gOlddocumentClick ;
else
document . onclick = gOlddocumentClick ;
}
}
return ;
}
function BSSCPopup _ClickMac ( )
{
if ( ( ! DHTMLPopupSupport ( ) ) && ( gbBsIE4 || gbBsOpera7 ) )
{
var bClickOnAnchor = false ;
var el ;
if ( ( window . event != null ) &&
( window . event . srcElement != null ) )
{
el = window . event . srcElement ;
while ( el != null )
{
if ( ( el . tagName == "A" ) || ( el . tagName == "AREA" ) ) {
bClickOnAnchor = true ;
break ;
}
if ( el . tagName == "BODY" ) {
break ;
}
el = getParentNode ( el ) ;
}
}
if ( BSSCPopup _IsPopup ( ) )
{
if ( ! bClickOnAnchor ) {
parent . window . gPopupWindow = null ;
self . close ( ) ;
}
}
else
{
bClosePopupWindow = true ;
if ( ( bClickOnAnchor ) &&
( el . href ) &&
( ( el . href . indexOf ( "javascript:BSSCPopup" ) != - 1 ) || ( el . href . indexOf ( "javascript:null" ) != - 1 ) || ( el . href . indexOf ( "javascript:void(0)" ) != - 1 ) ) )
{
bClosePopupWindow = false ;
}
if ( bClosePopupWindow )
{
if ( window . gPopupWindow != null && ! window . gPopupWindow . closed )
{
window . gPopupWindow . close ( ) ;
}
}
}
}
}
function BsPopupOnClick ( )
{
if ( ! gbBsIE4 && ! gbBsOpera7 )
return ;
BSSCPopup _ClickMac ( ) ;
}
function _BSSCOnError ( message )
{
if ( - 1 != message . indexOf ( "denied" )
|| - 1 != message . indexOf ( "Object required" ) )
return true ;
}
//End to support previous relative topics
/// Section End - General and relative topics (JavaScript 1.0)
/// Section Begin - Popup (JavaScript 1.0)
//Begin to support previous popup functions
//variables used to isolate the browser type
var gBsStyVisShow = null ;
var gBsStyVisHide = null ;
var gBsClientWidth = 640 ;
var gBsClientHeight = 480 ;
// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others.
var gBRateH _W = 0.618 ; // 1.618 Golden cut.
var gBMaxXOfParent = 0.8 ;
var gBMaxYOfParent = 0.8 ;
var gBscrollHeight = 16 ;
var gBscrollWidth = 16 ;
var gBpermitXDelta = 3 ;
var gBpermitYDelta = 3 ;
var arrayPopupURL = new Array ( ) ;
var arrayAbsPopupURL = new Array ( ) ;
var arrayDirty = new Array ( ) ;
function setAbsPopupURL ( nIndex , strURL )
{
arrayAbsPopupURL [ nIndex ] = strURL ;
}
function getAbsPopupURL ( nIndex )
{
if ( nIndex == - 1 || arrayAbsPopupURL . length <= nIndex ) return null ;
else
return arrayAbsPopupURL [ nIndex ] ;
}
function getPopupURL ( nIndex )
{
if ( nIndex == - 1 || arrayPopupURL . length <= nIndex ) return null ;
else
return arrayPopupURL [ nIndex ] ;
}
function getPopupID ( nIndex )
{
return gstrPopupID + nIndex ;
}
function getPopupShadowID ( nIndex )
{
return gstrPopupShadowID + nIndex ;
}
function getPopupTopicID ( nIndex )
{
return gstrPopupTopicID + nIndex ;
}
function getPopupIFrameID ( nIndex )
{
return gstrPopupIFrameID + nIndex ;
}
function getPopupIFrameName ( nIndex )
{
return gstrPopupIFrameName + nIndex ;
}
function getPopupTopicStyle ( nIndex )
{
return getElement ( getPopupTopicID ( nIndex ) ) . style ;
}
function getPopupShadowStyle ( nIndex )
{
return getElement ( getPopupShadowID ( nIndex ) ) . style ;
}
function getPopupIFrame ( nIndex )
{
if ( gbBsNS6 )
return eval ( "window.frames['" + getPopupIFrameName ( nIndex ) + "']" ) ;
else
return eval ( "document.frames['" + getPopupIFrameName ( nIndex ) + "']" ) ;
}
function getPopupDivStyle ( nIndex )
{
return getElement ( getPopupID ( nIndex ) ) . style ;
}
function getPopupIFrameStyle ( nIndex )
{
return getElement ( getPopupIFrameID ( nIndex ) ) . style ;
}
function findDiv ( strURL )
{
for ( var i = 0 ; i < arrayPopupURL . length ; i ++ ) {
if ( arrayPopupURL [ i ] == strURL ) {
return i ;
}
}
return - 1 ;
}
var gnToken = - 1 ;
function takeToken ( )
{
gnToken ++ ;
if ( gnToken > 10000 ) gnToken = 0 ;
return gnToken ;
}
function IsValidToken ( nToken )
{
return ( gnToken == nToken ) ;
}
function addDiv ( strURL )
{
for ( var i = 0 ; i < arrayPopupURL . length ; i ++ ) {
if ( arrayPopupURL [ i ] == null ) {
arrayPopupURL [ i ] = strURL ;
return i ;
}
}
arrayPopupURL [ i ] = strURL ;
arrayDirty [ i ] = true ;
return i ;
}
function setDirty ( )
{
for ( var i = 0 ; i < arrayPopupURL . length ; i ++ )
arrayDirty [ i ] = true ;
}
function IsDirty ( nIndex )
{
if ( nIndex == - 1 )
return true ;
else
if ( arrayDirty . length > nIndex )
return arrayDirty [ nIndex ] ;
else
return true ;
}
function hideAll ( )
{
for ( var i = 0 ; i < arrayPopupURL . length ; i ++ )
{
getPopupDivStyle ( i ) . visibility = gBsStyVisHide ;
getPopupIFrameStyle ( i ) . visibility = gBsStyVisHide ;
}
}
function getCurrentPopupIFrame ( )
{
for ( var i = 0 ; i < arrayPopupURL . length ; i ++ )
if ( getPopupDivStyle ( i ) . visibility == gBsStyVisShow )
return getPopupIFrame ( i ) ;
return null ;
}
function setClear ( nIndex )
{
if ( nIndex != - 1 )
arrayDirty [ nIndex ] = false ;
}
function _BSSCCreatePopupDiv ( strURL )
{
var nIndex = findDiv ( strURL ) ;
if ( nIndex == - 1 ) {
nIndex = addDiv ( strURL ) ;
BsPopup _CreateDiv ( nIndex ) ;
}
else {
if ( IsDirty ( nIndex ) ) {
if ( "object" == typeof ( getPopupIFrame ( nIndex ) . document ) )
getPopupIFrame ( nIndex ) . document . location . href = strURL ;
}
}
return nIndex ;
}
//Here is the browser type
function _BSPSGetBrowserInfo ( )
{
if ( gbBsNS4 && ! gbBsNS6 )
{
gBsStyVisShow = "show" ;
gBsStyVisHide = "hide" ;
}
else
{
gBsStyVisShow = "visible" ;
gBsStyVisHide = "hidden" ;
}
}
_BSPSGetBrowserInfo ( ) ;
//Get client size info
function _BSPSGetClientSize ( )
{
if ( gbBsNS4 || gbBsKonqueror3 || gbBsSafari )
{
gBsClientWidth = innerWidth ;
gBsClientHeight = innerHeight ;
}
else if ( gbBsIE4 || gbBsOpera7 )
{
gBsClientWidth = document . body . clientWidth ;
gBsClientHeight = document . body . clientHeight ;
}
}
var gstrPopupID = 'BSSCPopup' ;
var gstrPopupShadowID = 'BSSCPopupShadow' ;
var gstrPopupTopicID = 'BSSCPopupTopic' ;
var gstrPopupIFrameID = 'BSSCPopupIFrame' ;
var gstrPopupIFrameName = 'BSSCPopupIFrameName' ;
var gstrPopupSecondWindowName = 'BSSCPopup' ;
var gPopupWindow = null ;
var gnPopupClickX = 0 ;
var gnPopupClickY = 0 ;
var gnPopupScreenClickX = 0 ;
var gnPopupScreenClickY = 0 ;
var gbPopupTimeoutExpired = false ;
function DHTMLPopupSupport ( )
{
if ( ( ( gbBsIE4 ) && ( ! gbBsMac ) ) || gbBsOpera7 || gbBsNS7 ) {
return true ;
}
return false ;
}
function BSSCPopup _IsPopup ( )
{
if ( DHTMLPopupSupport ( ) && ( this . name . indexOf ( gstrPopupIFrameName ) != - 1 ) ) {
return true ;
} else if ( ( gbBsNS4 || gbBsIE4 || gbBsOpera7 ) && ( this . name . indexOf ( gstrPopupID ) != - 1 ) ) {
return true ;
} else {
return false ;
}
}
// If there is a hyperlink in a popup window, display the hyperlink in
// the original window. (bsscright)
if ( BSSCPopup _IsPopup ( ) && ! gbBsIE4 && ! gbBsOpera7 ) {
document . write ( "<base target=\"bsscright\">" ) ;
}
// Local functions.
function BsPopup _CreateDiv ( nIndex )
{
if ( ! DHTMLPopupSupport ( ) )
return ;
// DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone.
var strPopupDiv = "<DIV ID='" + getPopupID ( nIndex ) + "' STYLE='position:absolute; top:-100; left:0; z-index:600; visibility:hidden;'>" ;
strPopupDiv += "<DIV ID='" + getPopupShadowID ( nIndex ) + "' STYLE=\"position:absolute;top:0; left:0; background-color:#C0C0C0;\"></DIV>" ;
strPopupDiv += "<DIV ID='" + getPopupTopicID ( nIndex ) + "' STYLE=\"position:absolute;top:0; left:0; background-color:#FFFFFF;border:1px #000000 outset;\">" ;
strPopupDiv += "<IFRAME title=\"Popup Window\" ID='" + getPopupIFrameID ( nIndex ) + "' name='" + getPopupIFrameName ( nIndex ) + "' src = '" + getPopupURL ( nIndex ) + "' frameborder=0 scrolling=auto></IFRAME>" ;
strPopupDiv += "</DIV></DIV>" ;
var objBody = getElementsByTag ( document , "BODY" ) [ 0 ] ;
if ( typeof ( objBody ) != "object" )
return ;
insertAdjacentHTML ( objBody , "beforeEnd" , strPopupDiv ) ;
}
function handleLoadNS ( )
{
if ( this . id )
{
var nIndex = parseInt ( this . id . substring ( gstrPopupIFrameID . length ) ) ;
BSSCPopup _PostWork ( nIndex ) ;
}
}
function BSSCPopup _PostWork ( nIndex )
{
getPopupDivStyle ( nIndex ) . visibility = gBsStyVisShow ;
getPopupIFrameStyle ( nIndex ) . visibility = gBsStyVisShow ;
setClear ( nIndex ) ;
window . gbPopupTimeoutExpired = true ;
BSSCPopup _ChangeTargettoParent ( getPopupIFrame ( nIndex ) . document ) ;
if ( gbBsNS6 )
getPopupIFrame ( nIndex ) . document . body . addEventListener ( "click" , BSSCPopupClicked , false ) ;
else
getPopupIFrame ( nIndex ) . document . body . onclick = BSSCPopupClicked ;
if ( ! gbOrignalOnMouseDown && document . onmousedown )
gbOrignalOnMouseDown = document . onmousedown ;
if ( gbBsNS6 )
document . addEventListener ( "mousedown" , BSSCPopupParentClicked , false ) ;
else
document . onmousedown = BSSCPopupParentClicked ;
}
function BSSCPopup _Timeout ( nIndex , nToken )
{
if ( ! IsValidToken ( nToken ) ) return ;
if ( gbBsNS6 || ( ( getPopupIFrame ( nIndex ) . document . readyState == "complete" ) &&
( getPopupIFrame ( nIndex ) . document . body != null ) ) ) {
BSSCPopup _PostWork ( nIndex ) ;
} else {
setTimeout ( "BSSCPopup_Timeout(" + nIndex + "," + nToken + ")" , 100 ) ;
}
}
// VH 08/10/00
// do not change target to parent if the href is using javascript
function BSSCPopup _ChangeTargettoParent ( tagsObject )
{
var collA = getElementsByTag ( tagsObject , "A" ) ;
BSSCPopup _ChangeTargettoParent2 ( collA ) ;
var collIMG = getElementsByTag ( tagsObject , "IMG" ) ;
BSSCPopup _ChangeTargettoParent2 ( collIMG ) ;
}
function BSSCPopup _ChangeTargettoParent2 ( colls )
{
if ( colls != null ) {
for ( var j = 0 ; j < colls . length ; j ++ )
{
var strtemp = colls [ j ] . href ;
if ( strtemp )
{
strtemp = strtemp . toLowerCase ( ) ;
if ( strtemp . indexOf ( "javascript:" ) == - 1 )
if ( colls [ j ] . target == "" )
colls [ j ] . target = "_parent" ;
}
}
}
}
function BSPSPopupTopicWinHelp ( strURL )
{
_BSSCPopup ( strURL ) ;
return ;
}
function _BSSCPopup ( strURL , width , height )
{
var cuswidth = 0 ;
var cusheight = 0 ;
if ( "undefined" != typeof ( width ) && "undefined" != typeof ( height ) ) {
cuswidth = width ;
cusheight = height ;
}
if ( DHTMLPopupSupport ( ) ) {
var nToken = takeToken ( ) ; // take token first.
var nIndex = _BSSCCreatePopupDiv ( strURL ) ;
window . gbPopupTimeoutExpired = false ;
var ntWidth = gBsClientWidth ;
var ntHeight = gBsClientHeight ;
_BSPSGetClientSize ( ) ;
if ( ntWidth != gBsClientWidth || ntHeight != gBsClientHeight ) {
setDirty ( ) ;
}
if ( IsDirty ( nIndex ) ) {
if ( gbBsMac ) {
setTimeout ( "BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")" , 400 ) ;
} else {
setTimeout ( "BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")" , 100 ) ;
}
}
else {
MoveDivAndShow ( nIndex , nToken , cuswidth , cusheight ) ;
}
} else {
_BSSCPopup2 ( strURL , cuswidth , cusheight ) ;
}
return ;
}
if ( gbBsIE55 )
{
var ehlpdhtm _fOldBefureUnload = window . onbeforeunload ;
var gnBsUnload = 0 ;
window . onbeforeunload = window _BUnload ;
}
function window _BUnload ( )
{
gnBsUnload ++ ;
if ( gnBsUnload > 1 )
return ;
for ( var i = 0 ; i < arrayPopupURL . length ; i ++ )
removeThis ( document . all ( getPopupID ( i ) ) ) ;
arrayPopupURL . length = 0 ;
if ( ehlpdhtm _fOldBefureUnload )
ehlpdhtm _fOldBefureUnload ( ) ;
}
function _BSSCPopup2 ( strURL , width , height )
{
if ( gbBsOpera6 && gbBsMac )
{
var wmTemp = window . open ( document . location . href , gstrPopupSecondWindowName ) ;
wmTemp . close ( ) ;
setTimeout ( "_BSSCPopup3(\"" + strURL + "\"," + width + "," + height + ");" , 100 ) ;
}
else
_BSSCPopup3 ( strURL , width , height ) ;
}
function _BSSCPopup3 ( strURL , width , height )
{
if ( window . name == gstrPopupSecondWindowName ) {
window . location = strURL ;
} else {
if ( ! gbBsMac || ! gbBsNS4 ) {
BSSCHidePopupWindow ( ) ;
}
var nX = 0 ;
var nY = 0 ;
var nHeight = 300 ;
var nWidth = 400 ;
if ( width > 0 && height > 0 ) {
nHeight = height ;
nWidth = width ;
}
_BSPSGetClientSize ( ) ;
nX = window . gnPopupScreenClickX ;
nY = window . gnPopupScreenClickY ;
if ( nY + nHeight + 40 > screen . availHeight ) {
nY = screen . availHeight - nHeight - 40 ;
}
if ( nX + nWidth + 40 > screen . availWidth ) {
nX = screen . availWidth - nWidth - 40 ;
}
// Launch a separate window
var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes" ;
if ( gbBsNS ) {
if ( gbBsNS6 ) {
strParam += ",Height=" + nHeight + ",Width=" + nWidth ;
strParam += ",screenX=" + nX + ",screenY=" + nY ;
strParam += ",dependent=yes" ;
}
else {
strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth ;
strParam += ",screenX=" + nX + ",screenY=" + nY ;
strParam += ",dependent=yes" ;
}
}
else {
strParam += ",height=" + nHeight + ",width=" + nWidth ;
strParam += ",left=" + nX + ",top=" + nY ;
}
if ( gbBsSafari )
{
if ( window . gPopupWindow )
window . gPopupWindow . close ( ) ;
window . gPopupWindow = window . open ( strURL , "" , strParam ) ;
window . gPopupWindow . name = gstrPopupSecondWindowName ;
window . gPopupWindow . moveTo ( nX , nY ) ;
widnow . gPopupWindow . document . location . reload ( ) ;
}
else
{
var wmTemp = null ;
if ( gbBsKonqueror3 )
{
if ( window . gPopupWindow )
window . gPopupWindow . close ( ) ;
}
if ( gbBsOpera && gbBsMac )
{
wmTemp = window . open ( document . location . href , "Temp" , strParam ) ;
}
window . gPopupWindow = window . open ( strURL , gstrPopupSecondWindowName , strParam ) ;
if ( ! gbBsIE )
window . gPopupWindow . focus ( ) ;
if ( wmTemp )
wmTemp . close ( ) ;
}
if ( gbBsNS4 )
setEventHandle ( ) ;
else if ( gbBsIE4 || gbBsOpera7 || gbBsKonqueror3 )
setTimeout ( "setPopupFocus();" , 100 ) ;
}
return ;
}
function setEventHandle ( )
{
window . gPopupWindow . captureEvents ( Event . CLICK | Event . BLUR ) ;
window . gPopupWindow . onclick = NonIEPopup _HandleClick ;
window . gPopupWindow . onblur = NonIEPopup _HandleBlur ;
}
function setPopupFocus ( )
{
window . gPopupWindow . focus ( ) ;
}
function NonIEPopup _HandleBlur ( e )
{
window . gPopupWindow . focus ( ) ;
}
function NonIEPopup _HandleClick ( e )
{
// Because navigator will give the event to the handler before the hyperlink, let's
// first route the event to see if we are clicking on a Popup menu in a popup.
document . routeEvent ( e ) ;
// If a popup menu is active then don't do anything with the click
if ( window . gPopupWindow . gbInPopupMenu ) {
window . gPopupWindow . captureEvents ( Event . CLICK ) ;
window . gPopupWindow . onclick = NonIEPopup _HandleClick ;
return false ;
}
// Close the popup window
if ( e . target . href )
{
if ( e . target . href . indexOf ( "javascript:" ) == - 1 )
{
if ( e . target . target == "" )
window . location . href = e . target . href ;
else
window . open ( e . target . href , e . target . target ) ;
this . close ( ) ;
}
}
else
this . close ( ) ;
return false ;
}
function BSSCPopup _AfterLoad ( nIndex , nToken , cuswidth , cusheight )
{
if ( ! window . getPopupIFrame ( nIndex ) . document ) {
_BSSCPopup2 ( getPopupURL ( nIndex ) , cuswidth , cusheight ) ;
return ;
}
if ( ! IsValidToken ( nToken ) ) return ;
if ( gbBsNS6 )
{
setAbsPopupURL ( nIndex , window . getPopupIFrame ( nIndex ) . document . location . href ) ; // change URL to abs url.
BSSCPopup _ResizeAfterLoad ( nIndex , nToken , cuswidth , cusheight ) ;
return ;
}
if ( ( window . getPopupIFrame ( nIndex ) . document . readyState == "complete" ) &&
( window . getPopupIFrame ( nIndex ) . document . body != null ) ) {
if ( window . getPopupIFrame ( nIndex ) . document . location . href . indexOf ( "about:blank" ) != - 1 ) { // add this check. IE will use about:blank" as the default vaule for Iframe.
window . getPopupIFrame ( nIndex ) . document . location = getPopupURL ( nIndex ) ;
setTimeout ( "BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")" , 200 ) ;
}
else
{
setAbsPopupURL ( nIndex , window . getPopupIFrame ( nIndex ) . document . location . href ) ; // change URL to abs url.
BSSCPopup _ResizeAfterLoad ( nIndex , nToken , cuswidth , cusheight ) ;
}
} else {
setTimeout ( "BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")" , 200 ) ;
}
}
function BSSCPopup _ResizeAfterLoad ( nIndex , nToken , cuswidth , cusheight )
{
if ( window . gbPopupTimeoutExpired ) return ;
if ( ! IsValidToken ( nToken ) ) return ;
getPopupDivStyle ( nIndex ) . visibility = gBsStyVisHide ;
getPopupIFrameStyle ( nIndex ) . visibility = gBsStyVisHide ;
// Determine the width and height for the window
_BSPSGetClientSize ( ) ;
var size = new BSSCSize ( 0 , 0 ) ;
if ( cuswidth <= 0 || cusheight <= 0 )
BSSCGetContentSize ( window . getPopupIFrame ( nIndex ) , size ) ;
else {
size . x = cuswidth ;
size . y = cusheight ;
}
// Determine the width and height for the window
var nWidth = size . x ;
var nHeight = size . y ;
// for small popup size, we should allow any size.
// The popup size should be ok if bigger than 0
if ( nWidth < 0 || nHeight < 0 ) return ; // there must be something terribly wrong.
getPopupDivStyle ( nIndex ) . width = nWidth ;
getPopupDivStyle ( nIndex ) . height = nHeight ;
getPopupShadowStyle ( nIndex ) . width = nWidth ;
getPopupShadowStyle ( nIndex ) . height = nHeight ;
getPopupTopicStyle ( nIndex ) . width = nWidth ;
getPopupTopicStyle ( nIndex ) . height = nHeight ;
if ( gbBsIE55 )
{
getPopupShadowStyle ( nIndex ) . width = nWidth + 2 ;
getPopupShadowStyle ( nIndex ) . height = nHeight + 2 ;
getPopupTopicStyle ( nIndex ) . width = nWidth + 2 ;
getPopupTopicStyle ( nIndex ) . height = nHeight + 2 ;
}
getPopupIFrameStyle ( nIndex ) . width = nWidth ;
getPopupIFrameStyle ( nIndex ) . height = nHeight ;
if ( gbBsIE55 || gbBsNS6 )
{
getPopupIFrameStyle ( nIndex ) . top = 0 ;
getPopupIFrameStyle ( nIndex ) . left = 0 ;
}
var strURL = getPopupURL ( nIndex ) ;
if ( strURL . indexOf ( "#" ) != - 1 && gbBsNS6 )
getPopupIFrame ( nIndex ) . location . reload ( ) ;
else if ( strURL . indexOf ( "#" ) != - 1 || gbBsNS6 )
getPopupIFrame ( nIndex ) . location . href = strURL ; // reload again, this will fix the bookmark misunderstand in IE5.
MoveDivAndShow ( nIndex , nToken , cuswidth , cusheight ) ;
}
function getScrollLeft ( )
{
if ( document . body . scrollLeft )
return document . body . scrollLeft ;
else if ( window . pageXOffset )
return window . pageXOffset ;
else
return 0 ;
}
function getScrollTop ( )
{
if ( document . body . scrollTop )
return document . body . scrollTop ;
else if ( window . pageYOffset )
return window . pageYOffset ;
else
return 0 ;
}
function MoveDivAndShow ( nIndex , nToken , cuswidth , cusheight )
{
if ( window . getPopupIFrame ( nIndex ) . document . location . href != getAbsPopupURL ( nIndex ) ) { // if redirect, reload again.
window . getPopupIFrame ( nIndex ) . document . location = getPopupURL ( nIndex ) ;
setTimeout ( "BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")" , 200 ) ;
return ;
}
// Determine the position of the window
var nClickX = window . gnPopupClickX ;
var nClickY = window . gnPopupClickY ;
var nTop = 0 ;
var nLeft = 0 ;
var nWidth = parseInt ( getPopupDivStyle ( nIndex ) . width ) ;
var nHeight = parseInt ( getPopupDivStyle ( nIndex ) . height ) ;
if ( nClickY + nHeight + 20 < gBsClientHeight + getScrollTop ( ) ) {
nTop = nClickY + 10 ;
} else {
nTop = ( getScrollTop ( ) + gBsClientHeight ) - nHeight - 20 ;
}
if ( nClickX + nWidth < gBsClientWidth + getScrollLeft ( ) ) {
nLeft = nClickX ;
} else {
nLeft = ( getScrollLeft ( ) + gBsClientWidth ) - nWidth - 8 ;
}
if ( nTop < getScrollTop ( ) ) nTop = getScrollTop ( ) + 1 ;
if ( nLeft < getScrollLeft ( ) ) nLeft = getScrollLeft ( ) + 1 ;
getPopupDivStyle ( nIndex ) . left = nLeft ;
getPopupDivStyle ( nIndex ) . top = nTop ;
// Set the location of the background blocks
getPopupShadowStyle ( nIndex ) . left = 6 ;
getPopupShadowStyle ( nIndex ) . top = 6 ;
if ( gbBsIE55 )
{
getPopupShadowStyle ( nIndex ) . left = 4 ;
getPopupShadowStyle ( nIndex ) . top = 4 ;
}
if ( gbBsMac && gbBsIE4 ) {
// Total hack on the iMac to get the IFrame to position properly
getPopupIFrameStyle ( nIndex ) . pixelLeft = 100 ;
getPopupIFrameStyle ( nIndex ) . pixelLeft = 0 ;
// Explicitly call BSSCOnLoad because the Mac doesn't seem to do it
getPopupIFrame ( nIndex ) . window . BSSCOnLoad ( ) ;
}
if ( gbBsNS6 && IsDirty ( nIndex ) )
getElement ( getPopupIFrameID ( nIndex ) ) . addEventListener ( "load" , handleLoadNS , false ) ;
else
BSSCPopup _Timeout ( nIndex , nToken ) ;
return ;
}
function BSSCSize ( x , y )
{
this . x = x ;
this . y = y ;
}
function BSSCGetContentSize ( thisWindow , size )
{
if ( ! gbBsIE4 && ! gbBsOpera7 && ! gbBsNS4 )
return ;
if ( ( gbBsMac && gbBsIE4 ) || gbBsNS4 || gbBsOpera7 ) {
size . x = 320 ;
size . y = 180 ;
return ;
}
// Resize the width until it is wide enough to handle the content
// The trick is to start wide and determine when the scrollHeight changes
// because then we know a scrollbar is necessary. We can then go back
// to the next widest size (for no scrollbar)
var ClientRate = gBsClientHeight / gBsClientWidth ;
var GoldenSize = new BSSCSize ( 0 , 0 ) ;
GoldenSize . x = gBsClientWidth * gBMaxXOfParent ;
GoldenSize . y = gBsClientHeight * gBMaxYOfParent ;
if ( ClientRate > gBRateH _W ) {
GoldenSize . y = GoldenSize . x * gBRateH _W ;
}
else {
GoldenSize . x = GoldenSize . y / gBRateH _W ;
}
// Try to using parent specified max x.
var x = 0 ;
var maxgoldx = GoldenSize . x ;
var maxx = gBsClientWidth * gBMaxXOfParent ;
// This double resize causes the document to re-render (and we need it to)
if ( ! gbBsIE5 )
thisWindow . moveTo ( 10000 , 10000 ) ; // this is used to fix the flash on IE4.
thisWindow . resizeTo ( 1 , 1 ) ;
thisWindow . resizeTo ( 1 , 1 ) ;
thisWindow . resizeTo ( maxgoldx , thisWindow . document . body . scrollHeight + gBscrollHeight ) ;
thisWindow . resizeTo ( maxgoldx , thisWindow . document . body . scrollHeight + gBscrollHeight ) ;
var miny = thisWindow . document . body . scrollHeight + gBscrollHeight ;
if ( miny > GoldenSize . y ) // the popup does not fix in the parent wanted golden area. so try to expand itself as large as it can
{
thisWindow . resizeTo ( maxx , thisWindow . document . body . scrollHeight + gBscrollHeight ) ;
thisWindow . resizeTo ( maxx , thisWindow . document . body . scrollHeight + gBscrollHeight ) ;
miny = thisWindow . document . body . scrollHeight + gBscrollHeight ;
maxy = gBsClientHeight * gBMaxYOfParent ;
if ( miny > maxy ) { // the popup must have a scroll, OK let it be.
miny = maxy ;
size . x = maxx ;
size . y = maxy ;
thisWindow . document . body . scroll = 'yes' ; // At this time we do want to show scroll any more. so it will looks better a little.
}
else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent.
size . y = miny ;
// downsize from maxx , now I try to using binary divide.
x = maxx ;
deltax = - maxx / 2 ;
//j = 0;
while ( true ) {
x = x + deltax ;
thisWindow . resizeTo ( x , miny ) ;
thisWindow . resizeTo ( x , miny ) ;
diffy = thisWindow . document . body . scrollHeight + gBscrollHeight - x * ClientRate ;
if ( diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter
deltax = Math . abs ( deltax ) / 2 ;
else if ( diffy < - gBpermitYDelta ) // it is shorter than wanted, so x need to be narrow a little bitter
deltax = - Math . abs ( deltax ) / 2 ;
else
// the y is close enough to wanted.
break ;
if ( Math . abs ( deltax ) < gBpermitXDelta ) // the next change is too slight and it can be ignore.
break ;
}
size . x = thisWindow . document . body . scrollWidth ; //+ gBscrollWidth;
size . y = thisWindow . document . body . scrollHeight ; // + gBscrollHeight;
thisWindow . document . body . scroll = 'no' ;
}
}
else {
if ( thisWindow . document . body . scrollWidth > maxgoldx ) {
size . x = maxx ;
size . y = miny ;
thisWindow . document . body . scroll = 'yes' ;
}
else {
// downsize from maxgoldx , now I try to using binary divide.
x = maxgoldx ;
deltax = - maxgoldx / 2 ;
while ( true ) {
x = x + deltax ;
thisWindow . resizeTo ( x , miny ) ;
thisWindow . resizeTo ( x , miny ) ;
diffy = thisWindow . document . body . scrollHeight + gBscrollHeight - x * gBRateH _W ;
if ( diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter
deltax = Math . abs ( deltax ) / 2 ;
else if ( diffy < - gBpermitYDelta ) // it is shorter than wanted, so x need to be narrow a little bitter
deltax = - Math . abs ( deltax ) / 2 ;
else
// the y is close enough to wanted.
break ;
if ( Math . abs ( deltax ) < gBpermitXDelta ) // the next change is too slight and it can be ignore.
break ;
}
size . x = thisWindow . document . body . scrollWidth ; //+ gBscrollWidth;
size . y = thisWindow . document . body . scrollHeight ;
thisWindow . document . body . scroll = 'no' ; // At this time we do not want to show scroll any more. so it will looks better a little.
thisWindow . resizeTo ( size . x , size . y ) ;
if ( thisWindow . document . body . scrollWidth > size . x )
{
size . x = thisWindow . document . body . scrollWidth ;
}
if ( thisWindow . document . body . scrollHeight > size . y )
{
size . y = thisWindow . document . body . scrollHeight ;
}
}
}
thisWindow . resizeTo ( size . x , size . y ) ;
thisWindow . resizeTo ( size . x , size . y ) ;
return ;
}
function BSSCPopupParentClicked ( )
{
if ( ! window . gbPopupTimeoutExpired ) {
return false ;
}
document . onmousedown = gbOrignalOnMouseDown ;
// Simply hide the popup
hideAll ( ) ;
window . gbPopupTimeoutExpired = false ;
return true ;
}
function isInsideHyperLink ( obj )
{
if ( obj && obj != getParentNode ( obj ) )
{
if ( obj . tagName == "A" || obj . tagName == "IMG" )
return true ;
else
return isInsideHyperLink ( getParentNode ( obj ) ) ;
}
else
return false ;
}
function BSSCPopupClicked ( e )
{
if ( ! window . gbPopupTimeoutExpired ) {
return false ;
}
var popupIFrame = getCurrentPopupIFrame ( ) ;
if ( popupIFrame == null ) {
return true ;
}
if ( gbBsIE4 && ( ! ( ( popupIFrame . window . event != null ) &&
( popupIFrame . window . event . srcElement != null ) &&
isInsideHyperLink ( popupIFrame . window . event . srcElement ) ) ) ) {
document . onmousedown = gbOrignalOnMouseDown ;
// Simply hide the popup
hideAll ( ) ;
window . gbPopupTimeoutExpired = false ;
return true ;
}
else if ( gbBsNS6 && ( ! ( ( e != null ) &&
( e . target != null ) && isInsideHyperLink ( e . target ) ) ) )
{
document . addEventListener ( "mousedown" , gbOrignalOnMouseDown , false ) ;
// Simply hide the popup
hideAll ( ) ;
window . gbPopupTimeoutExpired = false ;
return true ;
}
}
//trace the mouse over's position for hotspot
function BSPSPopupOnMouseOver ( event )
{
if ( gbBsIE4 || gbBsOpera7 || gbBsKonqueror3 ) {
window . gnPopupClickX = event . clientX + getScrollLeft ( ) ;
window . gnPopupClickY = event . clientY + getScrollTop ( ) ;
window . gnPopupScreenClickX = event . screenX ;
window . gnPopupScreenClickY = event . screenY ;
} else if ( gbBsSafari ) {
window . gnPopupClickX = event . clientX + getScrollLeft ( ) ;
window . gnPopupClickY = event . clientY + getScrollTop ( ) ;
window . gnPopupScreenClickX = event . screenX + window . screenX ;
window . gnPopupScreenClickY = event . screenY + window . screenY ;
} else if ( gbBsNS4 ) {
window . gnPopupClickX = event . pageX - window . pageXOffset ;
window . gnPopupClickY = event . pageY - window . pageYOffset ;
window . gnPopupScreenClickX = event . screenX - window . pageXOffset ;
window . gnPopupScreenClickY = event . screenY - window . pageYOffset ;
}
}
function BSSCHidePopupWindow ( )
{
if ( window . gPopupWindow != null ) {
if ( gbBsNS4 ) {
if ( ( typeof window . gPopupWindow != "undefined" ) && ( ! window . gPopupWindow . closed ) ) {
window . gPopupWindow . close ( ) ;
window . gPopupWindow = null ;
}
}
}
return ;
}
// Add the PopupOnClick to the onclick array.
if ( typeof ( BsscRegisterOnClick ) != "undefined" )
{
BsscRegisterOnClick ( BsPopupOnClick ) ;
}
//End to support previous popup functions
/// Section End - Popup (JavaScript 1.0)
/// Section Begin - Embedded Stub (JavaScript 1.0)
function BSSCCreatePopupDiv ( )
{
return ;
}
function WritePopupMenuLayer ( )
{
if ( BsscHasExtJs ( ) ) { _WritePopupMenuLayer ( ) ; }
}
function BSSCPopup ( strURL , width , height )
{
var re = new RegExp ( "'" , 'g' ) ;
strURL = strURL . replace ( re , "%27" ) ;
if ( BsscHasExtJs ( ) ) {
_BSSCPopup ( strURL , width , height ) ;
} else {
//Create a temporary window first to ensure the real popup comes up on top
var wndTemp = null ;
if ( ! gbBsNS3 ) {
wndTemp = window . open ( "" , "temp" , "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4" ) ;
}
// Create the real popup window
var wndPopup = window . open ( strURL , "BSSCPopup" , "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400" ) ;
// Close the temporary
if ( ! gbBsNS3 ) {
wndTemp . close ( ) ;
} else {
wndPopup . focus ( ) ;
}
}
}
var gbWndTemp = null , gbWndPopupLinks = null ;
var gbstrParaTotal = "" ;
function PopupMenu _Invoke ( )
{
if ( typeof ( wfRelatedTopic ) == 'function' && typeof ( IsFlashSupported ) == 'function' )
{
if ( Number ( gsSkinVersion ) > 2 && IsFlashSupported ( ) )
{
return wfRelatedTopic ( PopupMenu _Invoke . arguments ) ;
}
}
if ( BsscHasExtJs ( ) ) {
return _PopupMenu _Invoke ( PopupMenu _Invoke . arguments ) ;
}
if ( gbBsNS3Before || gbBsIE3Before ) {
var argLen = PopupMenu _Invoke . arguments . length ;
if ( argLen < 5 ) {
window . document . location . href = PopupMenu _Invoke . arguments [ 3 ] ;
return false ;
}
gbWndTemp = null ;
gbWndPopupLinks = null ;
gbstrParaTotal = "" ;
for ( var i = 0 ; i < ( argLen - 2 ) / 2 ; i ++ ) {
var strParaLine = "" ;
if ( gbBsNS2 ) {
strParaLine += "<a href=\"" ;
strParaLine += PopupMenu _Invoke . arguments [ 2 * i + 3 ] ;
strParaLine += "\">"
strParaLine += PopupMenu _Invoke . arguments [ 2 * i + 2 ] ;
strParaLine += "</a>" ;
} else {
strParaLine += "<a href=\"javascript:" ;
strParaLine += "gotoUrl(\'" ;
strParaLine += PopupMenu _Invoke . arguments [ 2 * i + 3 ] ;
strParaLine += "\');\"" ;
if ( PopupMenu _Invoke . arguments [ 1 ] != '' ) {
strParaLine += " TARGET='" + PopupMenu _Invoke . arguments [ 1 ] + "'" ;
}
strParaLine += ">" ;
strParaLine += PopupMenu _Invoke . arguments [ 2 * i + 2 ] ;
strParaLine += "</a>" ;
}
strParaLine += "<br>" ;
gbstrParaTotal += strParaLine ;
}
var nHeight = argLen * 15 ;
var nWidth = 400 ;
var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto" ;
strParam += ",height=" + nHeight + ",width=200,resizable" ;
//Create a temporary window first to ensure the real popup comes up on top
//var wndTemp = null;
if ( ! gbBsNS3 ) {
gbWndTemp = window . open ( "" , "temp" , "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4" ) ;
}
gbWndPopupLinks = window . open ( "" , "popuplinks" , strParam ) ;
setTimeout ( "Wait_PopupMenuReady()" , 100 ) ;
}
return true ;
}
function Wait _PopupMenuReady ( )
{
if ( gbWndPopupLinks != null && "object" == typeof ( gbWndPopupLinks . document ) ) {
PopupMenu _InvokeReady ( ) ;
}
else
setTimeout ( "Wait_PopupMenuReady()" , 100 ) ;
}
function PopupMenu _InvokeReady ( )
{
if ( gbWndPopupLinks != null ) {
gbWndPopupLinks . document . open ( "text/html" ) ;
gbWndPopupLinks . document . write ( "<html><head>" ) ;
if ( gbBsNS2 ) {
gbWndPopupLinks . document . write ( "<base href=\"" + location + "\">" ) ;
} else {
//YJ: IE301,302 and NS3.x works fine
gbWndPopupLinks . document . write ( "<" ) ;
gbWndPopupLinks . document . write ( "script>" ) ;
gbWndPopupLinks . document . write ( "function gotoUrl(aUrl) {opener.window.location=aUrl; close();}" ) ;
gbWndPopupLinks . document . write ( "<" ) ;
gbWndPopupLinks . document . write ( "/script>" ) ;
}
gbWndPopupLinks . document . write ( "</head><body onBlur=\'self.focus();\'>" ) ;
gbWndPopupLinks . document . write ( gbstrParaTotal ) ;
gbWndPopupLinks . document . write ( "</body></html>" ) ;
gbWndPopupLinks . document . close ( ) ;
// Close the temporary
if ( ! gbBsNS3 && gbWndTemp != null ) {
gbWndTemp . close ( ) ;
} else {
gbWndPopupLinks . focus ( ) ;
}
return true ;
}
return false ;
}
/// Section End - Embedded Stub (JavaScript 1.0)
//// Segment End -- (JavaScript 1.0)
//// Segment Begin -- (JavaScript 1.2)
/// Section Begin - kadov DHTM (JavaScript 1.2)
//Begin to support extended and dropdown text effects.
function kadovIsParagraph ( el )
{
return ( el . tagName == "P" || el . tagName . indexOf ( "H" ) == 0 ) ? true : false ;
}
function kadovInitEachChild ( el )
{
for ( var i = 0 ; i < getChildNodes ( el ) . length ; i ++ )
{
var child = getChildNodes ( el ) [ i ] ;
if ( child . tagName == "SCRIPT" || child . tagName == "!" )
continue ;
if ( child . id != "" )
{
// to wipe out the onload effects
if ( gbBsIE4 && ! gbBsMac )
{
var onLoadEffect = child . style . getAttribute ( "x-on-pageload" ) ;
if ( ( onLoadEffect != null ) && ( onLoadEffect > "" ) )
child . style . setAttribute ( "x-on-pageload" , "" ) ;
}
var href = child . getAttribute ( "href" )
if ( href != null && href > "" && href . indexOf ( "BSSCPopup" ) >= 0 )
kadovFilePopupInit ( child . id ) ; // Init for Popup
else if ( child . className == "dropspot" || child . className == "expandspot" ||
child . className == "glossterm" )
kadovTextPopupInit ( child . id ) ; // Init for Expanding/Glossary or DropDown text
else if ( child . className == "trigger" )
kadovInitTrigger ( child . id ) ; // Init for Trigger
else
{
kadovInitEffects ( child . id ) ; // Init for DHTML effects
CEngine . SetOneTargetInitialState ( child . id ) ;
}
}
if ( ( child . tagName == "IMG" ) && ( child . getAttribute ( "dynsrc" ) > "" ) )
child . start = "mouseover" ; // to start a AVI file. fileopen doesn't work
kadovInitEachChild ( child ) ;
}
}
function kadovRetrieveTextInner ( el )
{
var x = "" ;
if ( ( ! el ) || ( el . tagName == "!" ) || ( el . tagName == "SCRIPT" ) )
return x ;
if ( kadovIsParagraph ( el ) )
{
var strNewID = " " ;
if ( el . id != "" )
strNewID += "id=" + el . id + "_NewSpan " ;
x = "<span" + strNewID + "style='" + el . style . cssText + "'>" + el . innerHTML + "</span>" ;
}
else
{
for ( var i = 0 ; i < getChildNodes ( el ) . length ; i ++ )
x += kadovRetrieveTextInner ( getChildNodes ( el ) [ i ] ) ;
}
return x ;
}
function kadovRetrieveCleanHTML ( strRawHTML , strTagOpen , strTagClose , nDistance )
{
var nTagOpen = strRawHTML . indexOf ( strTagOpen , 0 ) ;
if ( nTagOpen < 0 )
return strRawHTML ;
var nTagClose = strRawHTML . indexOf ( strTagClose , nTagOpen ) ;
if ( nTagClose < nTagOpen )
return strRawHTML ;
if ( typeof ( nDistance ) == "number" && nDistance > 0 )
if ( ( nTagClose - nTagOpen ) != nDistance )
return strRawHTML ;
var strCleanOnce = strRawHTML . substring ( 0 , nTagOpen ) + strRawHTML . substr ( nTagClose + strTagClose . length ) ;
return kadovRetrieveCleanHTML ( strCleanOnce , strTagOpen , strTagClose ) ;
}
function kadovAdjustObjectTag ( strRawHTML , nStartPos )
{ // adjust object tag for related topics HTML control, because innerHTML misses out the item settings
//Is there any DTC?
var strDTCTagOpen = '<!--Metadata type="DesignerControl" startspan' ;
var strDTCTagClose = '<!--Metadata type="DesignerControl" endspan-->' ;
var nDTCTagOpen = strRawHTML . indexOf ( strDTCTagOpen , nStartPos ) ;
if ( nDTCTagOpen < 0 )
return strRawHTML ;
var nDTCTagClose = strRawHTML . indexOf ( strDTCTagClose , nDTCTagOpen ) ;
if ( nDTCTagClose < nDTCTagOpen )
return strRawHTML ; // no Design Time Controls;
//Is the DTC HTML Help Control?
var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11' ;
var strRTObjTagClose = '</OBJECT>' ;
var nRTObjTagOpen = strRawHTML . indexOf ( strRTObjTagOpen , nDTCTagOpen ) ;
if ( nRTObjTagOpen < nDTCTagOpen )
return strRawHTML ;
var nRTObjTagClose = strRawHTML . indexOf ( strRTObjTagClose , nRTObjTagOpen ) ;
if ( nRTObjTagClose < nRTObjTagOpen )
return strRawHTML ; // is not a HTML help control
// Is it a related Topics html help control?
var strRTObjLabel = '<PARAM NAME=\"Command\" VALUE=\"Related Topics' ;
if ( strRawHTML . indexOf ( strRTObjLabel , nRTObjTagOpen ) < 0 )
return strRawHTML ;
// does the commented object tag contain a items parameters
var strRTItemsOpen = '<param name="Items" value="' ;
var strRTItemsClose = '$$**$$" >' ;
var strRTItemsClose2 = '$$**$$">' ;
var nRTItemsOpen = strRawHTML . indexOf ( strRTItemsOpen , nDTCTagOpen ) ;
if ( nRTItemsOpen < nDTCTagOpen )
return strRawHTML ;
var nRTItemsClose = strRawHTML . indexOf ( strRTItemsClose , nRTItemsOpen ) ;
if ( nRTItemsClose == - 1 )
nRTItemsClose = strRawHTML . indexOf ( strRTItemsClose2 , nRTItemsOpen ) ;
if ( nRTItemsClose < nRTItemsOpen )
return strRawHTML ;
// found a items string
var strItems = strRawHTML . substring ( nRTItemsOpen + strRTItemsOpen . length , nRTItemsClose ) ;
if ( strItems . length < 1 )
return strRawHTML ;
// to reconstruct the item(s) param tag(s)
var strItemsArray = strItems . split ( '$$**$$' ) ;
if ( strItemsArray . length < 1 )
return strRawHTML ;
var strRunTimeItemParam = "" ;
for ( var i = 0 ; i < strItemsArray . length ; i ++ )
{
strRunTimeItemParam += '<PARAM NAME="Item' + ( i + 1 ) ;
strRunTimeItemParam += '"' + ' VALUE="' ;
strRunTimeItemParam += strItemsArray [ i ] ;
strRunTimeItemParam += '">' ;
}
// to insert the reconstructed item params into runtime object tag
var strAdjustedHTML = strRawHTML . substring ( 0 , nRTObjTagClose ) + strRunTimeItemParam + strRawHTML . substring ( nRTObjTagClose , strRawHTML . length ) ;
return kadovAdjustObjectTag ( strAdjustedHTML , nDTCTagClose + strDTCTagClose . length ) ;
}
function kadovTextPopupOnLoad ( el )
{
if ( typeof ( el ) == "string" )
el = getElement ( el ) ;
var src = el . getAttribute ( "x-use-popup" ) ;
var bNeedMove = true ;
if ( ! src && el . id )
{
for ( var i = 0 ; i < gPopupData . length ; i ++ )
if ( gPopupData [ i ] . el == el . id )
{
src = gPopupData [ i ] . popupId ;
bNeedMove = false ;
break ;
}
}
if ( ! src )
src = el . style . getAttribute ( "x-use-popup" ) ;
if ( ! src )
return 0 ;
var name = src ;
if ( src . substr ( 0 , 1 ) == "#" )
name = src . substr ( 1 , src . length - 1 ) ;
var srcDiv = getElement ( name ) ;
if ( ! srcDiv )
return 1 ;
if ( bNeedMove )
{
var type = el . getAttribute ( "x-popup-type" ) ;
if ( ! type )
type = el . style . getAttribute ( "x-popup-type" ) ;
if ( ! type )
return 1 ;
var setup = el . getAttribute ( "x-tmp-setup" ) ;
var newId = name ;
if ( newId . indexOf ( "_tmp" ) <= 0 )
newId += "_tmp" ;
if ( ! setup )
{
el . setAttribute ( "x-tmp-setup" , 1 ) ;
if ( type == "pulldown" )
{
var strAdjust = kadovAdjustObjectTag ( srcDiv . innerHTML , 0 ) ;
var strCleanHTML = kadovRetrieveCleanHTML ( strAdjust , "<!--" , "-->" ) ;
strCleanHTML = kadovRetrieveCleanHTML ( strCleanHTML , "<SCRIPT" , "/SCRIPT>" ) ;
//work around the bug in HH.exe that highlight the phrases when use Search tab
//this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime
strCleanHTML = kadovRetrieveCleanHTML ( strCleanHTML , "<FONT color=#" , "\">" , 52 ) ;
var strStyle = " style='display:none; position:relative;" ;
var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>" ;
removeThis ( srcDiv ) ; // empty the original DIV tag
var elParentPra = kadovFindParentParagraph ( el ) ;
if ( elParentPra )
insertAdjacentHTML ( elParentPra , "afterEnd" , newDiv ) ;
}
else if ( type == "expanding" )
{
var inner = kadovRetrieveTextInner ( srcDiv ) ;
if ( inner == "" )
inner = srcDiv . innerHTML ;
var strAdjust = kadovAdjustObjectTag ( inner , 0 ) ;
var strCleanHTML = kadovRetrieveCleanHTML ( strAdjust , "<!--" , "-->" ) ;
strCleanHTML = kadovRetrieveCleanHTML ( strCleanHTML , "<SCRIPT" , "/SCRIPT>" ) ;
var strClassName = ( el . className == "glossterm" ) ? "glosstext" : "expandtext" ;
var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + "> " + strCleanHTML + "</span>" ;
removeThis ( srcDiv ) ; // empty the original DIV tag
insertAdjacentHTML ( el , "afterEnd" , newSpan ) ;
}
}
}
else
{
srcDiv . style . display = "none" ;
}
return 0 ;
}
function getElementsByTag ( obj , sTagName )
{
if ( obj . getElementsByTagName )
return obj . getElementsByTagName ( sTagName ) ;
else if ( obj . all )
return obj . all . tags ( sTagName ) ;
return null ;
}
function getElement ( sID )
{
if ( document . getElementById )
return document . getElementById ( sID ) ;
else if ( document . all )
return document . all ( sID ) ;
return null ;
}
function getParentNode ( obj )
{
if ( obj . parentNode )
return obj . parentNode ;
else if ( obj . parentElement )
return obj . parentElement ;
return null ;
}
function getChildNodes ( obj )
{
if ( obj . childNodes )
{
var children = new Array ( ) ;
for ( var i = 0 ; i < obj . childNodes . length ; i ++ )
{
if ( obj . childNodes [ i ] . nodeType == 1 )
children [ children . length ] = obj . childNodes [ i ] ;
}
return children ;
}
else if ( obj . children )
return obj . children ;
return null ;
}
function removeThis ( obj )
{
if ( obj . parentNode )
obj . parentNode . removeChild ( obj ) ;
else
obj . outerHTML = "" ;
}
function kadovTextPopup ( el )
{
if ( ! gbBsIE4 && ! gbBsOpera7 && ! gbBsSafari && ! gbBsNS6 && ! gbBsKonqueror3 )
return ;
var bNeedMove = true ;
if ( window . event )
window . event . cancelBubble = true ;
if ( typeof ( el ) == "string" )
el = getElement ( el ) ;
if ( ! el || el == window )
return ;
var src = el . getAttribute ( "x-use-popup" ) ;
if ( ! src && el . id )
{
for ( var i = 0 ; i < gPopupData . length ; i ++ )
if ( gPopupData [ i ] . el == el . id )
{
src = gPopupData [ i ] . popupId ;
bNeedMove = false ;
break ;
}
}
if ( ! src )
src = el . style . getAttribute ( "x-use-popup" ) ;
if ( ! src )
return ;
var name = src ;
if ( src . substr ( 0 , 1 ) == "#" )
if ( bNeedMove )
name = src . substr ( 1 , src . length - 1 ) + "_tmp" ;
else
name = src . substr ( 1 , src . length - 1 ) ;
var srcDiv = getElement ( name ) ;
if ( ! srcDiv )
return ;
if ( srcDiv )
{
if ( srcDiv . style . display == "" )
srcDiv . style . display = "none" ;
else
{
srcDiv . style . display = "" ;
if ( typeof ( srcDiv . bInitialized ) == "undefined" )
{
srcDiv . bInitialized = true ;
kadovInitEffects ( name ) ;
kadovInitEachChild ( srcDiv ) ;
}
}
}
if ( gbBsIE4 )
event . returnValue = false ;
return ;
}
function kadovFindParentParagraph ( el )
{
if ( typeof ( el ) == "string" )
el = getElement ( el ) ;
if ( ( ! el ) || el . tagName == "BODY" )
return null ;
if ( kadovIsParagraph ( getParentNode ( el ) ) )
return getParentNode ( el ) ;
else
return kadovFindParentParagraph ( getParentNode ( el ) ) ;
}
//Begin HTML code invoked function
function kadovRegisterEventHandler ( obj , strEvent , strEventHandler )
{
if ( ! gbBsIE4 )
return ;
CCSSP . RegisterEventHandler ( obj , strEvent , strEventHandler ) ;
}
function textPopupData ( el , popupId )
{
this . el = el ;
this . popupId = "#" + popupId ;
}
var gPopupData = new Array ( ) ;
function kadovTextPopupInit ( el , popupId )
{
if ( ! gbBsIE4 && ! gbBsOpera7 && ! gbBsSafari && ! gbBsNS6 && ! gbBsKonqueror3 )
return ;
if ( typeof ( el ) == "string" )
{
if ( popupId )
{
gPopupData [ gPopupData . length ] = new textPopupData ( el , popupId ) ;
}
el = getElement ( el ) ;
}
if ( el != null )
{
CCSSP . RegisterEventHandler ( el , "onclick" , "kadovTextPopup(\"" + el . id + "\");" ) ;
CCSSP . RegisterEventHandler ( window , "onload" , "kadovTextPopupOnLoad(\"" + el . id + "\");" ) ;
}
}
//End HTML code invoked function
//End to support extended and dropdown text effects.
//Begin to convert iWrite format to RoboEditor Format for DHTML effects
function kadovInitTriggersInHead ( )
{
if ( Object . xDelayedInitElements )
{
var x = Object . xDelayedInitElements ;
for ( i = 0 ; i < x . length ; i ++ )
kadovInitTrigger ( x [ i ] ) ;
}
}
//Begin HTML code invoked function
function kadovFilePopupInit ( el )
{
if ( typeof ( el ) == "string" )
el = getElement ( el ) ;
if ( el != null )
CCSSP . RegisterEventHandler ( el , "onmouseover" , "BSPSPopupOnMouseOver(event);" ) ;
}
function kadovInitTrigger ( element )
{
if ( ! gbBsIE4 )
return ;
var srcElement = element ;
if ( typeof ( srcElement ) == "string" )
{
srcElement = getElement ( element , 0 ) ;
if ( srcElement == null )
return ;
}
if ( ! kadovIsParentVisible ( srcElement ) )
return ;
var targets = srcElement . getAttribute ( "x-targets" ) ;
if ( ! targets )
targets = srcElement . style . getAttribute ( "x-targets" ) ;
if ( ! targets )
return ;
var arrOneTarget = targets . split ( "," ) ;
for ( var i = 0 ; i < arrOneTarget . length ; i ++ )
bsscFXInit ( element , arrOneTarget [ i ] , null , null , null , null ) ;
}
function kadovIsParentVisible ( el )
{
if ( typeof ( el ) == "string" )
el = getElement ( el ) ;
if ( ( ! el ) || el . tagName == "BODY" )
return true ;
if ( el . style . display == 'none' ) //el.visibility == 'hidden' ||
return false ;
else
return kadovIsParentVisible ( getParentNode ( el ) ) ;
}
function kadovInitEffects ( element )
{
if ( ! gbBsIE4 )
return ;
var srcElement = element ;
if ( typeof ( srcElement ) == "string" )
{
srcElement = getElement ( element , 0 ) ;
if ( srcElement == null )
return ;
}
if ( ! kadovIsParentVisible ( srcElement ) )
return ;
kadovInitEffect ( srcElement , "x-on-hover" ) ;
kadovInitEffect ( srcElement , "x-on-pageclick" ) ;
kadovInitEffect ( srcElement , "x-on-pageload" ) ;
kadovInitEffect ( srcElement , "x-on-trigger-1" ) ;
kadovInitEffect ( srcElement , "x-on-trigger-2" ) ;
}
//End HTML code invoked function
function kadovInitEffect ( element , prop )
{
var values = null ;
if ( element . getAttribute ( "currentStyle" ) && element . currentStyle . getAttribute )
values = element . currentStyle . getAttribute ( prop ) ;
else if ( element . style . getAttribute )
values = element . style . getAttribute ( prop ) ;
if ( ! values )
return ;
var functions = new Array ( ) ;
var nIdx = 0 , nStart = 0 ;
var nNext = values . indexOf ( "\)" , 0 ) ;
while ( nNext >= 0 && nNext < values . length )
{
functions [ nIdx ] = values . substr ( nStart , nNext - nStart + 1 ) ;
nStart = nNext + 1 ;
nIdx ++ ;
nNext = values . indexOf ( "\)" , nStart ) ;
}
for ( var i = 0 ; i < functions . length ; i ++ )
{
var id = element . getAttribute ( "id" ) ;
var translatedProp = kadovTranslateProp ( prop ) ;
var lp = functions [ i ] . indexOf ( "(" ) ;
var fnname = functions [ i ] . substring ( 0 , lp ) ;
var srcargs = functions [ i ] . substring ( lp + 1 , functions [ i ] . length - 1 ) ;
var nClickTimes = 1 ;
var arrForClickCount = srcargs . split ( "," ) ;
for ( var j = 0 ; j < arrForClickCount . length ; j ++ )
{ // to locate and get the "clicks=99" settings
var nPageClick = arrForClickCount [ j ] . indexOf ( "clicks" ) ;
if ( nPageClick >= 0 )
{
nPageClick = arrForClickCount [ j ] . indexOf ( "=" ) ;
if ( nPageClick > 0 )
{
nClickTimes = arrForClickCount [ j ] . substring ( nPageClick + 1 , arrForClickCount [ j ] . length ) * 1 ;
break ;
}
}
}
var args = srcargs ;
if ( j < arrForClickCount . length )
{ // to strip out the "clicks=99" from the arguments string
args = "" ;
for ( var k = 0 ; k < arrForClickCount . length ; k ++ )
{
if ( k != j )
{
args += arrForClickCount [ k ] ;
if ( k < arrForClickCount . length - 1 )
args += "," ;
}
}
}
bsscFXInit ( null , id , translatedProp , fnname , args , nClickTimes ) ;
}
}
function kadovTranslateProp ( prop )
{
switch ( prop )
{
case "x-on-hover" : return "bsschover" ;
case "x-on-pageclick" : return "bsscpageclick" ;
case "x-on-pageload" : return "bsscpageload" ;
case "x-on-trigger-1" : return "bssctrigger1" ;
case "x-on-trigger-2" : return "bssctrigger2" ;
}
return null ;
}
//End to convert iWrite format to RoboEditor Format for DHTML effects
//Begin the definition of one entry to DHTML effects
function bsscFXInit ( trigger _ID , target _ID , event _type ,
action _type , action _setting , event _addional )
{
if ( ( ! gbBsWindows && ! gbBsSunOS && ! ( gbBsMac && gbBsIE5 ) ) || typeof ( target _ID ) != "string" ) //MUST have a target_ID
return ; // we don't support Navigator yet
if ( typeof ( event _type ) == "string" )
event _type = event _type . toLowerCase ( ) ;
if ( typeof ( action _type ) == "string" )
action _type = action _type . toLowerCase ( ) ;
if ( typeof ( action _setting ) == "string" )
action _setting = action _setting . toLowerCase ( ) ;
// to get the target element then add it to the target list
var eleTarget = CCSSP . GetObject ( target _ID ) ;
if ( ( eleTarget != null ) && ( event _type != null ) && ( action _type != null ) )
{
CEngine . AddOneTarget ( target _ID , eleTarget ) ;
CEngine . BuildTargetObject ( target _ID , event _type , action _type , action _setting , event _addional ) ;
}
// to validate the trigger_ID parameter
if ( typeof ( trigger _ID ) == "string" && trigger _ID != "" )
CEngine . BuildTriggerObject ( trigger _ID , target _ID ) ;
}
//End the definition of one entry to DHTML effects
/// Section End - kadov DHTM (JavaScript 1.2)
/// Section Begin - CCSSP DHTM (JavaScript 1.2)
//Begin JavaScript libary for cross-platform positioning object.
function CCSSP ( ) { } // constructor of CCSSP class
CCSSP . GetObject = function ( obj )
{ //convert object name string or reference into a valid object reference
if ( typeof ( obj ) == "object" )
return obj ;
else if ( typeof ( obj ) == "string" && obj != "" )
{
if ( gbBsNS4 )
return eval ( "document." + obj ) ;
else
return eval ( "document.all(\"" + obj + "\")" ) ;
}
else
return null ;
}
CCSSP . MoveObjectTo = function ( obj , x , y )
{ //positioning an object at a specific pixel coordinate
if ( gbBsNS4 )
obj . moveTo ( x , y ) ;
else
{
obj . style . pixelLeft = x ;
obj . style . pixelTop = y ;
}
}
CCSSP . MoveObjectBy = function ( obj , dx , dy )
{ //moveing a object by x and/or y pixel
if ( gbBsNS4 )
obj . moveBy ( dx , dy ) ;
else
{
obj . style . pixelLeft += dx ;
obj . style . pixelTop += dy ;
}
}
CCSSP . SetObjectBGColor = function ( obj , color )
{ //set the background color of an object
if ( gbBsNS4 )
obj . bgColor = color ;
else
obj . style . backgroundColor = color ;
}
CCSSP . ShowObject = function ( obj , bShow )
{ // set the object to be visible or invisible
if ( gbBsNS4 )
obj . visibility = ( bShow == true ) ? 'show' : 'hide' ;
else
obj . style . visibility = ( bShow == true ) ? 'visible' : 'hidden' ; // when hidden, it still occupy some space.
}
CCSSP . GetObjectLeft = function ( obj )
{ // retrieve the x coordinate of a posionable object
if ( gbBsNS4 )
return obj . left ;
else
return obj . style . pixelLeft ;
}
CCSSP . GetObjectTop = function ( obj )
{ // retrieve the y coordinate of a posionable object
if ( gbBsNS4 )
return obj . top ;
else
return obj . style . pixelTop ;
}
CCSSP . GetObjectContainLeft = function ( obj )
{ // retrieve the x coordinate of a posionable object relative to it's parent element
if ( gbBsNS4 )
return obj . pageX ;
else
{
if ( obj == document . body )
return obj . clientLeft ;
else
return obj . offsetLeft ;
}
}
CCSSP . GetObjectWindowLeft = function ( obj )
{ // retrieve the x coordinate of a posionable object relative to browser window
if ( gbBsNS4 )
return obj . pageX ;
else
{
var nOffsetWindowLeft = 0 ;
for ( var element = obj ; element ; element = element . offsetParent )
nOffsetWindowLeft += CCSSP . GetObjectContainLeft ( element ) ;
return nOffsetWindowLeft ;
}
}
CCSSP . GetObjectContainTop = function ( obj )
{ // retrieve the y coordinate of a posionable object relative to it's parent element
if ( gbBsNS4 )
return obj . pageY ;
else
{
if ( obj == document . body )
return obj . clientTop ;
else
return obj . offsetTop ;
}
}
CCSSP . GetObjectWindowTop = function ( obj )
{ // retrieve the y coordinate of a posionable object relative to browser window
if ( gbBsNS4 )
return obj . pageY ;
else
{
var nOffsetWindowTop = 0 ;
for ( var element = obj ; element ; element = element . offsetParent )
nOffsetWindowTop += CCSSP . GetObjectContainTop ( element ) ;
return nOffsetWindowTop ;
}
}
CCSSP . GetObjectHeight = function ( obj )
{ // retrieve the height of a posionable object
if ( gbBsNS4 )
return obj . clip . height ;
else
return obj . offsetHeight ;
}
CCSSP . GetObjectWidth = function ( obj )
{ // retrieve the width of a posionable object
if ( gbBsNS4 )
return obj . clip . width ;
else
return obj . offsetWidth ;
}
CCSSP . RegisterEventHandler = function ( srcObj , rawEventName , funcHandler )
{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined
if ( gbBsNS4 && ! gbBsNS6 )
return ;
var oldHandler = "" ;
if ( gbBsMac && gbBsIE4 && ! gbBsIE5 )
{
if ( typeof ( srcObj [ rawEventName . toLowerCase ( ) ] ) == "unknown" )
{ //search for <SCRIPT> tag which define the event handler
for ( var i = 0 ; i < document . scripts . length ; i ++ )
{
var script = document . scripts [ i ] ;
if ( ( script . htmlFor == srcObj . id || script . htmlFor == srcObj ) && script . event == rawEventName )
{
oldHandler = script . innerHTML ;
break ;
}
}
}
}
else
{
var oldInlineHandler = srcObj [ rawEventName . toLowerCase ( ) ] ;
if ( oldInlineHandler != null && typeof ( oldInlineHandler ) != "undefined" )
{
var functionDefinition = oldInlineHandler . toString ( ) ;
var bodyStart = functionDefinition . indexOf ( "{" ) ;
var bodyEnd = functionDefinition . lastIndexOf ( "}" ) ;
if ( bodyStart > 0 || bodyEnd > bodyStart )
oldHandler = functionDefinition . substr ( bodyStart + 1 , bodyEnd - bodyStart - 2 ) ;
}
else if ( gbBsIE4 )
{ //search for <SCRIPT> tag which define the event handler
for ( var i = 0 ; i < document . scripts . length ; i ++ )
{
var script = document . scripts [ i ] ;
if ( ( script . htmlFor == srcObj . id || script . htmlFor == srcObj ) && script . event == rawEventName )
{
oldHandler = script . innerHTML ;
break ;
}
}
}
}
if ( oldHandler . indexOf ( funcHandler ) >= 0 )
return ; // to prevent register the funtion twice.
if ( gbBsNS4 ) // only "onload, onresize, onfocus" apply to window
{ // other raw events will apply to layer
var noOn = rawEventName . substring ( 2 , rawEventName . length ) ;
if ( typeof ( noOn ) == "string" && noOn . length > 3 ) {
if ( srcObj . captureEvents )
srcObj . captureEvents ( Event [ noOn . toUpperCase ( ) ] ) ;
}
}
var newHandler = oldHandler ;
if ( newHandler . length == 0 )
newHandler = funcHandler ;
else
newHandler += "; " + funcHandler ;
srcObj [ rawEventName . toLowerCase ( ) ] = new Function ( newHandler ) ;
}
CCSSP . GetWindowHeight = function ( )
{ // retrieve the height of available content in browser window
if ( gbBsNS4 )
return window . innerHeight ;
else
return document . body . clientHeight ;
}
CCSSP . GetWindowBottom = function ( )
{ // retrieve the bottom postion of browser window
if ( gbBsNS4 )
return window . outerHeight + window . pageYOffset ;
else
return document . body . clientHeight + document . body . scrollTop ;
}
CCSSP . GetWindowWidth = function ( )
{ // retrieve the width of available content in browser window
if ( gbBsNS4 )
return window . innerWidth ;
else
return document . body . clientWidth ;
}
CCSSP . GetWindowRight = function ( )
{ // retrieve the right postion of browser window
if ( gbBsNS4 )
return window . outerWidth + window . pageXOffset ;
else
return document . body . clientWidth + document . body . scrollLeft ;
}
CCSSP . TrimString = function ( objString , subtrim )
{ // to trim the "subtrim" in the beginning and ending of a string object
if ( typeof ( subtrim ) != "string" || subtrim == null )
return objString ;
var strHead = objString . substring ( 0 , 1 ) ;
var strRear = objString . substring ( objString . length - 1 , objString . length ) ;
if ( strHead != subtrim && strRear != subtrim )
return objString ;
var spacePos = objString . indexOf ( subtrim ) ;
if ( spacePos < 0 )
return objString ;
else if ( spacePos == objString . length - 1 )
return objString . substring ( 0 , spacePos ) ;
else
{
var newString = objString . substring ( spacePos + 1 , objString . length ) ;
return CCSSP . TrimString ( newString , subtrim ) ;
}
}
CCSSP . TrimSpace = function ( objString )
{
var Trim1 = CCSSP . TrimString ( objString , " " ) ;
return CCSSP . TrimString ( Trim1 , "\'" ) ;
}
CCSSP . GetEventElement = function ( navEventObject )
{ // to get the element who fired the current event
if ( gbBsNS4 )
if ( gbBsNS6 )
return null ;
else
navEventObject . target ;
else
return event . srcElement ;
}
CCSSP . PrepareFilter = function ( Obj )
{ //to prepare for making the filter work
Obj . style . filter = "" ;
if ( Obj . style . width != "" || Obj . style . height != "" || Obj . style . position == "absolute" )
return ;
Obj . style . height = CCSSP . GetObjectHeight ( Obj ) ;
}
CCSSP . IsDescendant = function ( progenitor , progeny )
{
if ( typeof ( progeny ) == "undefined" || progeny == null )
return false ;
else if ( progeny == progenitor )
return true ;
else if ( progeny . id == progenitor . id )
return true ;
else if ( getParentNode ( progeny ) == getParentNode ( progenitor ) )
return false ;
else
return CCSSP . IsDescendant ( progenitor , getParentNode ( progeny ) ) ;
}
CCSSP . IsTextTag = function ( Obj )
{
if ( typeof ( Obj . tagName ) == "undefined" )
return false ;
return ( Obj . tagName . indexOf ( "H" ) == 0 || Obj . tagName == "P" ||
Obj . tagName == "FONT" || Obj . tagName == "SPAN" ) ;
}
//End JavaScript libary for cross-platform positioning object.
/// Section End - CCSSP DHTM (JavaScript 1.2)
/// Section Begin - CCSSP DHTM 1 (JavaScript 1.2)
//Begin the definition of class CTrigger
function CTrigger ( TriggerElement )
{
// object : the trigger element. Never be null.
this . eleTrigger = TriggerElement ;
// number : the click counter number: only 3 values: 0,1,2;
this . nCounter = 0 ;
//object as associative array of string:
// the associate target ID strings; one element at least.
this . objStrTarget = new Object ( ) ;
this . eleTrigger . style . cursor = "hand" ;
if ( this . eleTrigger . tagName == "AREA" && this . eleTrigger . getAttribute ( "href" ) == "" )
this . eleTrigger . setAttribute ( "href" , "#" ) // to make a hand cursor for image map
}
CTrigger . prototype . AddTargetID = function ( strTargetID )
{ // add one target ID string to the objStrTarget
if ( typeof ( strTargetID ) != "string" )
return ;
if ( typeof ( this . objStrTarget [ strTargetID ] ) != "string" )
this . objStrTarget [ strTargetID ] = strTargetID ;
}
CTrigger . prototype . OnTriggerClick = function ( )
{ // to activate all asociated target
var strEventType = ( ( this . nCounter ++ ) % 2 == 0 ) ?
"bssctrigger1" : "bssctrigger2" ;
// to enumerate associative target element's ID string
for ( var strTargetID in this . objStrTarget )
CEngine . SendEventToOneTarget ( strTargetID , strEventType ) ;
}
//End the definition of class CTrigger
//Begin the definition of class CTarget
function CTarget ( TargetElement )
{
// object : the target element. Never be null.
this . eleTarget = TargetElement ;
this . objManager = new Object ( ) ; // object: the event manager
}
CTarget . nPageClickCounter = 0 ; // static class property.
CTarget . prototype . GetAgencyObject = function ( str _action _type , action _setting )
{ // return the action agency ( effect )object's refernece
switch ( str _action _type )
{
case "show" : return new CAgencyShow ( this . eleTarget , true ) ;
case "hide" : return new CAgencyShow ( this . eleTarget , false ) ;
case "flyin" :
return new CAgencyFly ( this . eleTarget , action _setting , true ) ;
case "flyout" :
return new CAgencyFly ( this . eleTarget , action _setting , false ) ;
case "spiralin" :
return new CAgencySpiral ( this . eleTarget , action _setting , true ) ;
case "spiralout" :
return new CAgencySpiral ( this . eleTarget , action _setting , false ) ;
case "zoomin" :
return new CAgencyZoom ( this . eleTarget , action _setting , true ) ;
case "zoomout" :
return new CAgencyZoom ( this . eleTarget , action _setting , false ) ;
case "elastic" :
return new CAgencyElastic ( this . eleTarget , action _setting ) ;
case "fadein" :
return ( gbBsIE4 ) ? new CAgencyAlpha ( this . eleTarget , action _setting , true ) : null ;
case "fadeout" :
return ( gbBsIE4 ) ? new CAgencyAlpha ( this . eleTarget , action _setting , false ) : null ;
case "rockrollstatic" :
case "rockroll" :
return ( gbBsIE4 ) ? new CAgencyWave ( this . eleTarget , action _setting , false ) : null ;
case "glow" :
return ( gbBsIE4 ) ? new CAgencyGlow ( this . eleTarget , action _setting ) : null ;
case "dropshadow" :
return ( gbBsIE4 ) ? new CAgencyDropShadow ( this . eleTarget , action _setting ) : null ;
case "transition" :
return ( gbBsIE4 ) ? new CAgencyRevealTrans ( this . eleTarget , action _setting ) : null ;
case "blur" :
return ( gbBsIE4 ) ? new CAgencyBlur ( this . eleTarget , action _setting ) : null ;
case "fliph" : // all these 4 do NOT need any parameters
case "flipv" :
case "invert" :
case "gray" :
return ( gbBsIE4 ) ? new CAgencyChangeFilter ( this . eleTarget , str _action _type ) : null ;
case "fontchange" : // the effects below change the style on the fly, so won't work in Navigator
return ( gbBsIE4 ) ? new CAgencyFontChange ( this . eleTarget , action _setting ) : null ;
case "boderchange" :
case "stylechange" :
return ( gbBsIE4 ) ? new CAgencyChangeStyle ( this . eleTarget , action _setting ) : null ;
default : return null ;
}
}
CTarget . prototype . SetEventManager = function (
one _event _type , str _action _type , action _setting , event _additional )
{ // to set the event manager with specified action
if ( typeof ( one _event _type ) != "string" ||
typeof ( str _action _type ) != "string" ||
typeof ( action _setting ) != "string" )
return false ;
if ( typeof ( this . objManager [ one _event _type ] ) == "undefined" )
{
this . objManager [ one _event _type ] = new Object ( ) ;
this . objManager [ one _event _type ] . length = 0 ;
}
var eventAgency = this . GetAgencyObject ( str _action _type , action _setting ) ;
if ( eventAgency != null )
{
var ct = this . objManager [ one _event _type ] . length ++ ;
this . objManager [ one _event _type ] [ ct ] = eventAgency ;
if ( one _event _type == "bsscpageclick" )
{ // to deal with the "number of pageclick" stuff
if ( typeof ( event _additional ) == "number" )
this . objManager [ one _event _type ] [ ct ] . nPageClick = event _additional ;
else // set the default number
this . objManager [ one _event _type ] [ ct ] . nPageClick = 1 ;
if ( ( typeof ( this . objManager . nMinPageClickIndex ) == "undefined" ) ||
( this . objManager [ one _event _type ] [ ct ] . nPageClick <
this . objManager [ one _event _type ] [ this . objManager . nMinPageClickIndex ] . nPageClick ) )
this . objManager . nMinPageClickIndex = ct ;
}
//hide the object blindly,SetState function will take care of the final correct state
if ( ( ( one _event _type == "bsscpageclick" ) &&
( this . objManager [ one _event _type ] [ ct ] . nPageClick == 1 ) ) ||
one _event _type == "bsscpageload" ||
one _event _type == "bssctrigger1" )
CCSSP . ShowObject ( this . eleTarget , false ) ;
if ( one _event _type == "bssctrigger1" || one _event _type == "bssctrigger2" )
if ( typeof ( this . strTriggerEvent ) == "undefined" )
this . strTriggerEvent = ( one _event _type == "bssctrigger1" ) ? "bssctrigger2" : "bssctrigger1" ;
return true ;
}
return false ;
}
CTarget . prototype . OnEvent = function ( strBsscEvent )
{ // response to the event ( bssc format )
if ( typeof ( this . objManager [ strBsscEvent ] ) == "object" )
{ // to get the event agency from the event manager
var eventAgency = this . objManager [ strBsscEvent ] ;
for ( var i = 0 ; i < eventAgency . length ; i ++ )
{
if ( strBsscEvent == "bsscpageclick" &&
eventAgency [ i ] . nPageClick != CTarget . nPageClickCounter )
continue ;
else if ( strBsscEvent == "bsschover" && event . type == "mouseout" )
eventAgency [ i ] . EndEffect ( ) ;
else // to invoke the unified function in effect object
eventAgency [ i ] . UpdateEffect ( ) ;
}
}
}
CTarget . prototype . SetState = function ( strBsscEvent )
{
if ( typeof ( this . objManager [ strBsscEvent ] ) != "object" )
return false ;
// to get the event agency from the event manager
var eventAgency = this . objManager [ strBsscEvent ] ;
if ( strBsscEvent == "bsscpageclick" )
{ // we only set the initial state for the minium number of pageclick
eventAgency [ this . objManager . nMinPageClickIndex ] . PrepareEffect ( ) ;
return true ;
}
else
{
for ( var i = 0 ; i < eventAgency . length ; i ++ )
eventAgency [ i ] . PrepareEffect ( ) ; // to invoke the unified function in effect object
if ( i > 0 )
return true ;
else
return false ;
}
}
//End the definition of class CTarget
//Begin the definition of CEngine class
function CEngine ( ) { } // all properities are going be "class" properities
// object : as associative array of trigger objects
CEngine . objTrigger = new Object ( ) ;
// object : as associative array of target objects
CEngine . objTarget = new Object ( ) ;
// Array : each element is a CAgencyXXX animation object
CEngine . arrAnimation = new Array ( ) ;
CEngine . PerformAnimation = function ( nIndex )
{ // animation : update effects function
CEngine . arrAnimation [ nIndex ] . UpdateEffect ( ) ;
}
CEngine . AddOneTrigger = function ( TriggerID , TriggerElement )
{ // add one Trigger object into the trigger array
if ( typeof ( TriggerID ) != "string" || TriggerElement == null ||
typeof ( TriggerElement ) != "object" )
return ;
if ( typeof ( CEngine . objTrigger [ TriggerID ] ) != "object" )
CEngine . objTrigger [ TriggerID ] = new CTrigger ( TriggerElement ) ;
}
CEngine . AddOneTarget = function ( TargetID , TargetElement )
{ // add one Target object into the target array
if ( typeof ( TargetID ) != "string" || TargetElement == null ||
typeof ( TargetElement ) != "object" )
return ;
if ( typeof ( CEngine . objTarget [ TargetID ] ) != "object" )
CEngine . objTarget [ TargetID ] = new CTarget ( TargetElement ) ;
}
CEngine . SendEventToOneTarget = function ( strTargetID , strBsscEvent )
{ // to activate one target object
if ( typeof ( CEngine . objTarget [ strTargetID ] ) == "object" )
{
if ( strBsscEvent == "bssctrigger1" || strBsscEvent == "bssctrigger2" )
{ //now, the "bssctrigger1" and "bssctrigger2" work like a toggle
if ( strBsscEvent == CEngine . objTarget [ strTargetID ] . strTriggerEvent )
strBsscEvent = ( strBsscEvent == "bssctrigger1" ) ? "bssctrigger2" : "bssctrigger1" ;
CEngine . objTarget [ strTargetID ] . strTriggerEvent = strBsscEvent ;
}
CEngine . objTarget [ strTargetID ] . OnEvent ( strBsscEvent ) ;
}
}
CEngine . SendEventToAllTarget = function ( strBsscEvent )
{ //to activate all target associative to the BSSC event
for ( var strTargetID in CEngine . objTarget ) //to enumerate all target
CEngine . SendEventToOneTarget ( strTargetID , strBsscEvent ) ;
}
CEngine . SetOneTargetInitialState = function ( strTargetID )
{ // only invoked after ALL effects for the target have been set
if ( typeof ( CEngine . objTarget [ strTargetID ] ) == "object" )
{ // to get target object
var objTarget = CEngine . objTarget [ strTargetID ] ;
if ( objTarget . SetState ( "bsscpageload" ) == false )
{
objTarget . SetState ( "bsscpageclick" ) ;
objTarget . SetState ( "bssctrigger1" ) ;
}
}
}
CEngine . AdjustPageClickCounter = function ( )
{
var nAdjustedClickCounter = CTarget . nPageClickCounter ;
var bAdjusted = false ;
for ( var strTargetID in CEngine . objTarget ) //to enumerate all target
{ // try to find the minum pageCliclConter greater than CTarget.nPageClickCounter
var objEventPageClick = CEngine . objTarget [ strTargetID ] . objManager . bsscpageclick ;
if ( objEventPageClick != null )
{
for ( var i = 0 ; i < objEventPageClick . length ; i ++ )
{
var nOtherPageClick = objEventPageClick [ i ] . nPageClick ;
if ( nOtherPageClick == CTarget . nPageClickCounter )
return ;
if ( nOtherPageClick > CTarget . nPageClickCounter )
{
if ( ! bAdjusted )
{
nAdjustedClickCounter = nOtherPageClick ;
bAdjusted = true ;
}
else if ( nOtherPageClick < nAdjustedClickCounter )
nAdjustedClickCounter = nOtherPageClick ;
}
}
}
}
CTarget . nPageClickCounter = nAdjustedClickCounter ;
}
CEngine . OnPageLoad = function ( )
{
// first, to set all target's initial state
for ( var strTargetID in CEngine . objTarget )
CEngine . SetOneTargetInitialState ( strTargetID ) ;
// to invoke all target's onpageload handler
CEngine . SendEventToAllTarget ( "bsscpageload" ) ;
}
CEngine . OnPageClick = function ( )
{ // to invoke all target's onpageclick handler
var src = CCSSP . GetEventElement ( arguments [ 0 ] ) ;
if ( src == null )
return ;
var objClickedTrigger = null ;
for ( var strTriggerID in CEngine . objTrigger )
{ // to detect which trigger is clicked
if ( CCSSP . IsDescendant ( CEngine . objTrigger [ strTriggerID ] . eleTrigger , src ) )
{
objClickedTrigger = CEngine . objTrigger [ strTriggerID ] ;
break ;
}
}
if ( objClickedTrigger != null ) // the clicked trigger found
objClickedTrigger . OnTriggerClick ( ) ;
else // no trigger is clicked
{ // to send PageClick event to all target
CTarget . nPageClickCounter ++ ;
CEngine . AdjustPageClickCounter ( ) ;
CEngine . SendEventToAllTarget ( "bsscpageclick" ) ;
}
}
CEngine . OnMouseOver = function ( )
{ // to invoke all target's onpageload handler
var src = CCSSP . GetEventElement ( arguments [ 0 ] ) ;
if ( src == null )
return ;
var strHoveredTargetID = null ;
for ( var strTargetID in CEngine . objTarget )
{ // to detect which Target is hovering on
if ( CCSSP . IsDescendant ( CEngine . objTarget [ strTargetID ] . eleTarget , src ) )
{
strHoveredTargetID = strTargetID ;
break ;
}
}
if ( strHoveredTargetID != null ) // the hovered target found
CEngine . SendEventToOneTarget ( strHoveredTargetID , "bsschover" ) ;
}
CEngine . BuildTargetObject = function ( target _ID , event _type , action _type ,
action _setting , event _additional )
{ // to build target object
// to get the target object
if ( typeof ( CEngine . objTarget [ target _ID ] ) != "object" )
return false ; // the engine's AddOneTarget function might have failed.
var TargetObject = CEngine . objTarget [ target _ID ] ;
// to prepare the parameters for the event manager
var arrEvent = event _type . split ( "|" ) ; // to split the combined event_type string
var arrAction = action _type . split ( "|" ) ; //to split the combined action_type string
for ( var trim = 0 ; trim < arrEvent . length ; trim ++ )
arrEvent [ trim ] = CCSSP . TrimSpace ( arrEvent [ trim ] ) ;
for ( trim = 0 ; trim < arrAction . length ; trim ++ )
arrAction [ trim ] = CCSSP . TrimSpace ( arrAction [ trim ] ) ;
var arrSetting = new Array ( ) ;
if ( typeof ( action _setting ) == "string" )
arrSetting = action _setting . split ( "|" ) ; // to split the combined action_setting string
// to calibrate the arrays
for ( var i = arrSetting . length ; i < arrAction . length ; i ++ )
{
if ( typeof ( arrSetting [ i ] ) != "string" )
arrSetting [ i ] = "" ;
}
// to prepare for dealing with the absolute posioning element
TargetObject . eleTarget . ABSX = CCSSP . GetObjectLeft ( TargetObject . eleTarget ) ;
TargetObject . eleTarget . ABSY = CCSSP . GetObjectTop ( TargetObject . eleTarget ) ;
if ( arrEvent . length > 1 )
{ // if event is combined, it must be : "bssctrigger1 | bssctrigger2"
if ( arrAction . length != 2 )
return false ; // if event is combined, there must be 2 actions
for ( i = 0 ; i < 2 ; i ++ )
{
if ( TargetObject . SetEventManager ( arrEvent [ i ] , arrAction [ i ] ,
arrSetting [ i ] , event _additional ) == false )
return false ; // the event manager has not been set up
}
}
else // the event_type string is not combined
{
for ( i = 0 ; i < arrAction . length ; i ++ )
{
TargetObject . SetEventManager ( event _type , arrAction [ i ] , arrSetting [ i ] , event _additional ) ;
// to validate the event manager
if ( typeof ( TargetObject . objManager [ event _type ] ) != "object" ||
typeof ( TargetObject . objManager [ event _type ] [ i ] ) != "object" )
return false ; // the event manager has not been set up
}
}
return true ;
}
CEngine . BuildTriggerObject = function ( trigger _ID , target _ID )
{ // to build the trigger object
var arrTrigger = trigger _ID . split ( "|" ) ; // to split the combined trigger_ID string
for ( var i = 0 ; i < arrTrigger . length ; i ++ )
{ // to get the trigger element then add it to the trigger list
arrTrigger [ i ] = CCSSP . TrimSpace ( arrTrigger [ i ] ) ;
var eleTrigger = CCSSP . GetObject ( arrTrigger [ i ] ) ;
if ( eleTrigger == null )
continue ; // the trigger_ID string in the HTML code maybe wrong
CEngine . AddOneTrigger ( arrTrigger [ i ] , eleTrigger ) ;
// to get the target object
if ( typeof ( this . objTrigger [ arrTrigger [ i ] ] ) != "object" )
continue ; // the engine's AddOneTarget function might have failed.
CEngine . objTrigger [ arrTrigger [ i ] ] . AddTargetID ( target _ID ) ;
}
}
//End the definition of CEngine class
/// Section End - CCSSP DHTM 1 (JavaScript 1.2)
/// Section Begin - CCSSP DHTM 2 (JavaScript 1.2)
//Begin the definition of CAgencyXXXX classes
//Begin of the CAgencyShow definition
function CAgencyShow ( element , bIsShow )
{
this . ele = element ;
this . bIsShow = bIsShow ;
}
CAgencyShow . prototype . PrepareEffect = function ( )
{
CCSSP . ShowObject ( this . ele , ! this . bIsShow ) ;
}
CAgencyShow . prototype . UpdateEffect = function ( )
{
CCSSP . ShowObject ( this . ele , this . bIsShow ) ;
}
CAgencyShow . prototype . EndEffect = function ( )
{
CCSSP . ShowObject ( this . ele , ! this . bIsShow ) ;
}
// End of the CAgencyShow definition
// Begin of CAgencyFly definition
function CAgencyFly ( element , settings , bIsIn )
{
this . ele = element ;
this . bIsIn = bIsIn ;
this . duration = 1000 ; // default
this . direction = "right" ;
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{ // to retrieve the setting
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "speed" : this . duration = 100000 / arrOneSet [ 1 ] ; break ;
case "direction" : this . direction = arrOneSet [ 1 ] ; break ;
}
}
if ( gbBsIE5 && this . ele . style . position != "absolute" )
this . ele . style . position = "relative" ;
this . timer = null ;
this . aniIndex = CEngine . arrAnimation . length ;
CEngine . arrAnimation [ this . aniIndex ] = this ;
}
CAgencyFly . prototype . PrepareEffect = function ( )
{
CCSSP . ShowObject ( this . ele , ! this . bIsIn ) ;
}
CAgencyFly . prototype . UpdateEffect = function ( )
{
if ( this . timer == null )
this . ResetParameters ( ) ;
var percent = ( ( new Date ( ) ) . getTime ( ) - this . startTime ) / this . duration ;
if ( percent >= 1.0 )
this . EndEffect ( ) ;
else
{
var newX = this . startX * ( 1.0 - percent ) + this . finalX * percent ;
var newY = this . startY * ( 1.0 - percent ) + this . finalY * percent ;
CCSSP . MoveObjectTo ( this . ele , newX , newY ) ;
if ( this . timer == null )
this . timer = setInterval ( "CEngine.PerformAnimation(" + this . aniIndex + ")" , 20 ) ;
}
}
CAgencyFly . prototype . EndEffect = function ( )
{
clearInterval ( this . timer ) ;
this . timer = null ;
if ( this . bIsIn ) // FlyIn
CCSSP . MoveObjectTo ( this . ele , this . finalX , this . finalY ) ;
else // FlyOut
CCSSP . MoveObjectTo ( this . ele , this . startX , this . startY ) ;
CCSSP . ShowObject ( this . ele , this . bIsIn ) ;
}
CAgencyFly . prototype . ResetParameters = function ( )
{
this . PrepareEffect ( ) ;
CCSSP . ShowObject ( this . ele , true ) ;
this . startX = 0 ;
this . startY = 0 ;
this . finalX = 0 ;
this . finalY = 0 ;
var offsetLeft = CCSSP . GetObjectWindowLeft ( this . ele ) + this . ele . offsetWidth ;
var offsetTop = CCSSP . GetObjectWindowTop ( this . ele ) + this . ele . offsetHeight ;
var offsetRight = CCSSP . GetWindowRight ( ) ;
var offsetBottom = CCSSP . GetWindowBottom ( ) ;
if ( this . bIsIn )
{ // FlyIn
this . finalX = this . ele . ABSX ;
this . finalY = this . ele . ABSY ;
switch ( this . direction )
{
case "right" : this . startX = offsetRight ; this . startY = this . finalY ; break ;
case "left" : this . startX = - offsetLeft ; this . startY = this . finalY ; break ;
case "down" : this . startY = offsetBottom ; this . startX = this . finalX ; break ;
case "up" : this . startY = - offsetTop ; this . startX = this . finalX ; break ;
case "downright" :
this . startX = ( offsetBottom < offsetRight ) ? offsetBottom : offsetRight ;
this . startY = this . startX ; break ;
case "upright" :
this . startX = ( offsetTop < offsetRight ) ? offsetTop : offsetRight ;
this . startY = - this . startX ; break ;
case "upleft" :
this . startX = - ( ( offsetTop < offsetRight ) ? offsetTop : offsetRight ) ;
this . startY = this . startX ; break ;
case "downleft" :
this . startX = - ( ( offsetBottom < offsetRight ) ? offsetBottom : offsetRight ) ;
this . startY = - this . startX ; break ;
}
}
else
{ // FlyOut
this . startX = this . ele . ABSX ;
this . startY = this . ele . ABSY ;
switch ( this . direction )
{
case "right" : this . finalX = offsetRight ; this . finalY = this . startY ; break ;
case "left" : this . finalX = - offsetLeft ; this . finalY = this . startY ; break ;
case "down" : this . finalY = offsetBottom ; this . finalX = this . startX ; break ;
case "up" : this . finalY = - offsetTop ; this . finalX = this . startX ; break ;
case "downright" :
this . finalX = ( offsetBottom < offsetRight ) ? offsetBottom : offsetRight ;
this . finalY = this . finalX ; break ;
case "upright" :
this . finalX = ( offsetTop < offsetRight ) ? offsetTop : offsetRight ;
this . finalY = - this . finalX ; break ;
case "upleft" :
this . finalX = - ( ( offsetTop < offsetRight ) ? offsetTop : offsetRight ) ;
this . finalY = this . finalX ; break ;
case "downleft" :
this . finalX = - ( ( offsetBottom < offsetRight ) ? offsetBottom : offsetRight ) ;
this . finalY = - this . finalX ; break ;
}
}
CCSSP . MoveObjectTo ( this . ele , this . startX , this . startY ) ;
this . startTime = ( new Date ( ) ) . getTime ( ) ;
}
// End of the CAgencyFly definition
// Begin of CAgencySpiral
function CAgencySpiral ( element , settings , bIsIn )
{
this . ele = element ;
this . bIsIn = bIsIn ;
this . duration = 1000 ; // default
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{ // to retrieve the setting
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "speed" : this . duration = 100000 / arrOneSet [ 1 ] ; break ;
}
}
if ( gbBsIE5 && this . ele . style . position != "absolute" )
this . ele . style . position = "relative" ;
this . timer = null ;
this . aniIndex = CEngine . arrAnimation . length ;
CEngine . arrAnimation [ this . aniIndex ] = this ;
}
CAgencySpiral . prototype . PrepareEffect = function ( )
{
CCSSP . ShowObject ( this . ele , ! this . bIsIn ) ;
}
CAgencySpiral . prototype . UpdateEffect = function ( )
{
if ( this . timer == null )
this . ResetParameters ( ) ;
var percent = ( ( new Date ( ) ) . getTime ( ) - this . startTime ) / this . duration ;
if ( percent >= 1.0 )
this . EndEffect ( ) ;
else
{
var rf = ( this . bIsIn ) ? ( 1.0 - percent ) : percent ;
var t = ( 1.0 - rf ) * 4.0 * Math . PI
var rxP = ( this . bIsIn ) ? this . startX : this . finalX ;
var ryP = ( this . bIsIn ) ? this . startY : this . finalY ;
var rx = ( Math . abs ( rxP ) < 200 ) ? Math . abs ( rxP ) : 200 ;
var ry = ( Math . abs ( ryP ) < 200 ) ? Math . abs ( ryP ) : 200 ;
var newX = Math . ceil ( - rf * Math . cos ( t ) * rx ) + this . ele . ABSX ;
var newY = Math . ceil ( - rf * Math . sin ( t ) * ry ) + this . ele . ABSY ;
CCSSP . MoveObjectTo ( this . ele , newX , newY ) ;
if ( this . timer == null )
this . timer = setInterval ( "CEngine.PerformAnimation(" + this . aniIndex + ")" , 20 ) ;
}
}
CAgencySpiral . prototype . EndEffect = function ( )
{
clearInterval ( this . timer ) ;
this . timer = null ;
if ( this . bIsIn ) // In
CCSSP . MoveObjectTo ( this . ele , this . finalX , this . finalY ) ;
else // Out
CCSSP . MoveObjectTo ( this . ele , this . startX , this . startY ) ;
CCSSP . ShowObject ( this . ele , this . bIsIn ) ;
}
CAgencySpiral . prototype . ResetParameters = function ( )
{
this . PrepareEffect ( ) ;
CCSSP . ShowObject ( this . ele , true ) ;
this . startX = ( this . bIsIn ) ? CCSSP . GetWindowRight ( ) : this . ele . ABSX ;
this . startY = ( this . bIsIn ) ? CCSSP . GetWindowBottom ( ) : this . ele . ABSY ;
this . finalX = ( this . bIsIn ) ? this . ele . ABSX : CCSSP . GetWindowRight ( ) ;
this . finalY = ( this . bIsIn ) ? this . ele . ABSY : CCSSP . GetWindowBottom ( ) ;
CCSSP . MoveObjectTo ( this . ele , this . startX , this . startY ) ;
this . startTime = ( new Date ( ) ) . getTime ( ) ;
}
// End of CAgencySpiral
// Begin of CAgencyElastic
function CAgencyElastic ( element , settings )
{
this . ele = element ;
this . duration = 1000 ; // default
this . direction = "right" ;
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{ // to retrieve the setting
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "speed" : this . duration = 100000 / arrOneSet [ 1 ] ; break ;
case "direction" : this . direction = arrOneSet [ 1 ] ; break ;
}
}
if ( gbBsIE5 && this . ele . style . position != "absolute" )
this . ele . style . position = "relative" ;
this . timer = null ;
this . aniIndex = CEngine . arrAnimation . length ;
CEngine . arrAnimation [ this . aniIndex ] = this ;
}
CAgencyElastic . prototype . PrepareEffect = function ( )
{
CCSSP . ShowObject ( this . ele , false ) ;
}
CAgencyElastic . prototype . UpdateEffect = function ( )
{
if ( this . timer == null )
this . ResetParameters ( ) ;
var percent = ( ( new Date ( ) ) . getTime ( ) - this . startTime ) / this . duration ;
if ( percent >= 1.0 )
this . EndEffect ( ) ;
else
{
var newX = this . startX ;
var newY = this . startY ;
var rf = Math . exp ( - percent * 3 ) ;
var t = percent * 1.5 * Math . PI
var rx = ( Math . abs ( this . startX ) > Math . abs ( this . startY ) ) ? this . startX : this . startY ;
switch ( this . direction )
{
case "left" :
case "right" : newX = rf * Math . cos ( t ) * rx + this . ele . ABSX ; break ;
case "up" :
case "down" : newY = rf * Math . cos ( t ) * rx + this . ele . ABSX ; break ;
}
CCSSP . MoveObjectTo ( this . ele , newX , newY ) ;
if ( this . timer == null )
this . timer = setInterval ( "CEngine.PerformAnimation(" + this . aniIndex + ")" , 20 ) ;
}
}
CAgencyElastic . prototype . EndEffect = function ( )
{
CCSSP . MoveObjectTo ( this . ele , this . finalX , this . finalY ) ;
clearInterval ( this . timer ) ;
this . timer = null ;
}
CAgencyElastic . prototype . ResetParameters = function ( )
{
CCSSP . ShowObject ( this . ele , true ) ;
this . startX = this . ele . ABSX ;
this . finalX = this . ele . ABSX ;
this . startY = this . ele . ABSY ;
this . finalY = this . ele . ABSY ;
switch ( this . direction )
{
case "left" : this . startX = - this . ele . offsetWidth ; break ;
case "right" : this . startX = this . ele . offsetWidth ; break ;
case "up" : this . startY = - this . ele . offsetHeight ; break ;
case "down" : this . startY = this . ele . offsetHeight ; break ;
}
CCSSP . MoveObjectTo ( this . ele , this . startX , this . startY ) ;
this . startTime = ( new Date ( ) ) . getTime ( ) ;
}
// End of CAgencyElastic
// Begin of CAgencyZoom
function CAgencyZoom ( element , settings , bIsIn )
{
this . ele = element ;
this . duration = 1000 ; // default
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{ // to retrieve the setting
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "speed" : this . duration = 100000 / arrOneSet [ 1 ] ; break ;
}
}
this . bIsIn = bIsIn ;
this . timer = null ;
this . aniIndex = CEngine . arrAnimation . length ;
CEngine . arrAnimation [ this . aniIndex ] = this ;
}
CAgencyZoom . prototype . PrepareEffect = function ( )
{
CCSSP . ShowObject ( this . ele , false ) ;
}
CAgencyZoom . prototype . UpdateEffect = function ( )
{
if ( this . timer == null )
this . ResetParameters ( ) ;
var percent = ( ( new Date ( ) ) . getTime ( ) - this . startTime ) / this . duration ;
if ( percent >= 1.0 )
this . EndEffect ( ) ;
else
{
var nFactorIn = Math . ceil ( 50 + 50 * percent ) ;
var nFactorOut = Math . ceil ( 100 + 200 * ( 1 - percent ) ) ;
var AlterFontsize = ( ( this . bIsIn ) ? nFactorIn : nFactorOut ) + "%" ;
var AlterFactor = ( ( this . bIsIn ) ? nFactorIn : nFactorOut ) / 100 ;
this . UpdateEffectAllChildren ( this . ele , AlterFontsize , AlterFactor ) ;
for ( var index = 0 ; index < this . ele . all . length ; index ++ )
this . UpdateEffectAllChildren ( this . ele . all [ index ] , AlterFontsize , AlterFactor ) ;
if ( this . timer == null )
this . timer = setInterval ( "CEngine.PerformAnimation(" + this . aniIndex + ")" , 20 ) ;
}
}
CAgencyZoom . prototype . UpdateEffectAllChildren = function ( child , FontSize , Factor )
{
if ( CCSSP . IsTextTag ( child ) )
child . style . fontSize = FontSize ;
else
{
if ( typeof ( child . orgWidth ) == "number" )
child . style . width = Factor * child . orgWidth ;
if ( typeof ( child . orgHeight ) == "number" )
child . style . height = Factor * child . orgHeight ;
}
}
CAgencyZoom . prototype . EndEffect = function ( )
{
this . EndEffectAllChildren ( this . ele ) ;
for ( var index = 0 ; index < this . ele . all . length ; index ++ )
this . EndEffectAllChildren ( this . ele . all [ index ] ) ;
clearInterval ( this . timer ) ;
this . timer = null ;
}
CAgencyZoom . prototype . EndEffectAllChildren = function ( child )
{
if ( CCSSP . IsTextTag ( child ) )
child . style . fontSize = child . orgFontSize ;
else
{
if ( typeof ( child . intactWidth ) != "undefined" )
{
child . width = child . intactWidth ;
child . height = child . intactHeight ;
}
else if ( typeof ( child . style . intactPixelWidth ) != "undefined" )
{
child . style . pixelWidth = child . style . intactPixelWidth ;
child . style . pixelHeight = child . style . intactPixelHeight ;
}
}
}
CAgencyZoom . prototype . ResetParameters = function ( )
{
this . PrepareEffect ( ) ;
this . ResetParametersAllChildren ( this . ele ) ;
for ( var index = 0 ; index < this . ele . all . length ; index ++ )
this . ResetParametersAllChildren ( this . ele . all [ index ] ) ;
this . startTime = ( new Date ( ) ) . getTime ( ) ;
}
CAgencyZoom . prototype . ResetParametersAllChildren = function ( child )
{
CCSSP . ShowObject ( child , true ) ;
if ( ( child . tagName == "DIV" ) && ( getParentNode ( child ) . tagName == "TD" ) )
child . width = "100%" ; // if the div is inside a cell of table, we need the this hack
if ( CCSSP . IsTextTag ( child ) )
child . orgFontSize = child . style . fontSize ;
else
{
if ( child . width > "" || child . height > "" )
{
child . orgWidth = child . intactWidth = child . width ;
child . orgHeight = child . intactHeight = child . height ;
}
else if ( ( typeof ( child . orgWidth ) != "number" ) && ( typeof ( child . orgHeight ) != "number" ) )
{
child . orgWidth = child . style . intactPixelWidth = child . style . pixelWidth ;
child . orgHeight = child . style . intactPixelHeight = child . style . pixelHeight ;
}
}
}
// End of CAgencyZoom
//// the following effects will use IE's exclusive "filter" function ////
// Begin of CAgencyAlpha definition
function CAgencyAlpha ( element , settings , bIsIn )
{ // because of "visual filter" style, this won't work in Navigator
this . ele = element ;
this . bIsIn = bIsIn ;
// to set the default value
this . startOpacity = ( this . bIsIn ) ? 0 : 100 ;
this . endOpacity = ( this . bIsIn ) ? 100 : 0 ;
this . duration = 1000 ; // default
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{ // to retrieve the setting
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "speed" : this . duration = 100000 / arrOneSet [ 1 ] ; break ;
}
}
this . timer = null ;
this . aniIndex = CEngine . arrAnimation . length ;
CEngine . arrAnimation [ this . aniIndex ] = this ;
}
CAgencyAlpha . prototype . PrepareEffect = function ( )
{ // to set the visual filter function
// the visual filter ONLY work when set by "Width and Height" or
// absolute position for DIV, SPAN and normal tag ( such as p )
// but, "absolute" cause the following elements overlap, so:
CCSSP . PrepareFilter ( this . ele ) ;
CCSSP . ShowObject ( this . ele , ! this . bIsIn ) ;
}
CAgencyAlpha . prototype . UpdateEffect = function ( )
{ // to set the visual filter function
if ( this . timer == null )
this . ResetParameters ( ) ;
if ( typeof ( this . ele . filters . alpha ) != "object" )
{
this . EndEffect ( ) ;
return ;
}
var percent = ( ( new Date ( ) ) . getTime ( ) - this . startTime ) / this . duration ;
if ( percent >= 1.0 )
this . EndEffect ( ) ;
else if ( typeof ( this . ele . filters . alpha ) == "object" )
{
this . ele . filters . alpha . opacity = this . startOpacity * ( 1.0 - percent ) + this . endOpacity * percent ;
if ( this . timer == null )
this . timer = setInterval ( "CEngine.PerformAnimation(" + this . aniIndex + ")" , 20 ) ;
}
}
CAgencyAlpha . prototype . EndEffect = function ( )
{ // to remove the visual filter function
clearInterval ( this . timer ) ;
this . timer = null ;
this . ele . style . filter = "" ;
CCSSP . ShowObject ( this . ele , this . bIsIn ) ;
}
CAgencyAlpha . prototype . ResetParameters = function ( )
{
this . PrepareEffect ( ) ;
CCSSP . ShowObject ( this . ele , true ) ;
this . ele . style . filter = "alpha(opacity=" + this . startOpacity + ")" ;
this . startTime = ( new Date ( ) ) . getTime ( ) ;
}
// End of the CAgencyAlpha definition
// Begin of CAgencyWave definition
function CAgencyWave ( element , settings )
{ // because of "visual filter" style, this won't work in Navigator
this . ele = element ;
this . duration = 0 ; // default
this . strength = 10 ;
this . freq = 1 ;
this . lightstrength = 1 ;
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{ // to retrieve the setting
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "duration" : this . duration = 100000 / arrOneSet [ 1 ] ; break ;
case "strength" : this . strength = arrOneSet [ 1 ] ; break ;
case "freq" : this . freq = arrOneSet [ 1 ] ; break ;
case "lightstrength" : this . lightstrength = arrOneSet [ 1 ] ; break ;
}
}
this . timer = null ;
this . aniIndex = CEngine . arrAnimation . length ;
CEngine . arrAnimation [ this . aniIndex ] = this ;
}
CAgencyWave . prototype . PrepareEffect = function ( )
{ // to set the visual filter function
CCSSP . PrepareFilter ( this . ele ) ;
CCSSP . ShowObject ( this . ele , true ) ;
}
CAgencyWave . prototype . UpdateEffect = function ( )
{ // to set the visual filter function
if ( this . timer == null )
this . ResetParameters ( ) ;
if ( typeof ( this . ele . filters . wave ) != "object" )
{
this . EndEffect ( ) ;
return ;
}
if ( this . duration > 0 )
{
var percent = ( ( new Date ( ) ) . getTime ( ) - this . startTime ) / this . duration ;
if ( percent >= 1.0 )
{
this . EndEffect ( ) ;
return ;
}
}
this . ele . filters . wave . phase += 5 ;
this . ele . filters . wave . phase %= 100 ;
if ( this . timer == null )
this . timer = setInterval ( "CEngine.PerformAnimation(" + this . aniIndex + ")" , 50 ) ;
}
CAgencyWave . prototype . EndEffect = function ( )
{ // to remove the visual filter function
this . ele . style . filter = "" ;
clearInterval ( this . timer ) ;
this . timer = null ;
}
CAgencyWave . prototype . ResetParameters = function ( )
{
this . PrepareEffect ( ) ;
this . ele . style . filter = "wave(strength=" + this . strength + ",freq=" +
this . freq + ", lightstrength=" + this . lightstrength + ",phase=0);" ;
this . startTime = ( new Date ( ) ) . getTime ( ) ;
}
// End of the CAgencyWave definition
// Begin of CAgencyGlow definition
function CAgencyGlow ( element , settings )
{ // because of "visual filter" style, this won't work in Navigator
this . ele = element ;
// to set the default value
this . glowColor = "green" ;
this . glowStrength = "3" ;
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "color" : this . glowColor = arrOneSet [ 1 ] ; break ;
case "strength" : this . glowStrength = arrOneSet [ 1 ] ; break ;
}
}
}
CAgencyGlow . prototype . PrepareEffect = function ( )
{
CCSSP . PrepareFilter ( this . ele ) ;
CCSSP . ShowObject ( this . ele , true ) ;
if ( this . ele . style . backgroundColor != "" )
{ //style.backgroundColor somehow stop the visual filter
this . ele . intactBackgroundColor = this . ele . style . backgroundColor ;
this . ele . style . backgroundColor = "" ;
}
}
CAgencyGlow . prototype . UpdateEffect = function ( )
{ // to set the visual filter function
this . PrepareEffect ( ) ;
this . ele . style . filter = "glow(Color=" + this . glowColor + ", Strength=" +
this . glowStrength + ", enabled=true" + ")" ;
}
CAgencyGlow . prototype . EndEffect = function ( )
{ // to remove the visual filter function
this . ele . style . filter = "" ;
if ( typeof ( this . ele . intactBackgroundColor ) != "undefined" )
this . ele . style . backgroundColor = this . ele . intactBackgroundColor ;
}
// End of the CAgencyGlow definition
// Begin of CAgencyDropShadow definition
function CAgencyDropShadow ( element , settings )
{ // because of "visual filter" style, this won't work in Navigator
this . ele = element ;
// to set the default value
this . shadowColor = "black" ;
this . shadowOffx = "1" ;
this . shadowOffy = "1" ;
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "color" : this . shadowColor = arrOneSet [ 1 ] ; break ;
case "offx" : this . shadowOffx = arrOneSet [ 1 ] ; break ;
case "offy" : this . shadowOffy = arrOneSet [ 1 ] ; break ;
}
}
}
CAgencyDropShadow . prototype . PrepareEffect = function ( )
{
CCSSP . PrepareFilter ( this . ele ) ;
CCSSP . ShowObject ( this . ele , true ) ;
if ( this . ele . style . backgroundColor != "" )
{ //style.backgroundColor somehow stop the visual filter
this . ele . intactBackgroundColor = this . ele . style . backgroundColor ;
this . ele . style . backgroundColor = "" ;
}
}
CAgencyDropShadow . prototype . UpdateEffect = function ( )
{ // to set the visual filter function
this . PrepareEffect ( ) ;
this . ele . style . filter = "dropshadow(color=" + this . shadowColor + ", offx=" +
this . shadowOffx + ", offy=" + this . shadowOffy + ")" ;
}
CAgencyDropShadow . prototype . EndEffect = function ( )
{ // to remove the visual filter function
this . ele . style . filter = "" ;
if ( typeof ( this . ele . intactBackgroundColor ) != "undefined" )
this . ele . style . backgroundColor = this . ele . intactBackgroundColor ;
}
// End of the CAgencyDropShadow definition
// Begin of CAgencyRevealTrans definition
function CAgencyRevealTrans ( element , settings )
{ // because of "visual filter" style, this won't work in Navigator
this . ele = element ;
// to set the default value
this . duration = 1.0 ; //The value is specified in seconds.milliseconds format (0.0000).
this . transition = 0 ;
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "type" : this . transition = arrOneSet [ 1 ] ; break ;
case "duration" : this . duration = 100 / arrOneSet [ 1 ] ; break ;
}
}
}
CAgencyRevealTrans . prototype . PrepareEffect = function ( )
{
CCSSP . PrepareFilter ( this . ele ) ;
CCSSP . ShowObject ( this . ele , false ) ;
}
CAgencyRevealTrans . prototype . UpdateEffect = function ( )
{ // to set the visual filter function
if ( typeof ( this . ele . filters . RevealTrans ) == "object" )
{
if ( this . ele . filters . RevealTrans . status == 2 )
this . ele . filters . RevealTrans . stop ( ) ;
}
this . PrepareEffect ( ) ;
this . ele . style . filter = "RevealTrans(duration=" + this . duration +
", transition=" + this . transition + ")" ;
if ( typeof ( this . ele . filters . RevealTrans ) == "object" )
{
this . ele . filters . RevealTrans . apply ( ) ;
CCSSP . ShowObject ( this . ele , true ) ;
this . ele . filters . RevealTrans . play ( ) ;
}
else
CCSSP . ShowObject ( this . ele , true ) ;
}
CAgencyRevealTrans . prototype . EndEffect = function ( )
{
if ( typeof ( this . ele . filters . RevealTrans ) == "object" )
this . ele . filters . RevealTrans . stop ( ) ;
this . ele . style . filter = "" ;
}
// End of the CAgencyRevealTrans definition
// Begin of CAgencyBlur definition
function CAgencyBlur ( element , settings )
{ // because of "visual filter" style, this won't work in Navigator
this . ele = element ;
// to set the default value
this . strength = "5" ;
this . direction = "90" ;
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "strength" : this . strength = arrOneSet [ 1 ] ; break ;
case "direction" : this . direction = arrOneSet [ 1 ] ; break ;
}
}
}
CAgencyBlur . prototype . PrepareEffect = function ( )
{
CCSSP . PrepareFilter ( this . ele ) ;
CCSSP . ShowObject ( this . ele , true ) ;
}
CAgencyBlur . prototype . UpdateEffect = function ( )
{ // to set the visual filter function
CCSSP . PrepareFilter ( this . ele ) ;
this . ele . style . filter = "blur(strength=" + this . strength +
", direction=" + this . direction + ")" ;
}
CAgencyBlur . prototype . EndEffect = function ( )
{ // to remove the visual filter function
this . ele . style . filter = "" ;
}
// End of the CAgencyBlur definition
// Begin of CAgencyChangeFilter definition
function CAgencyChangeFilter ( element , settings ) // flipH, flipV, invert, grey,
{ // because of "visual filter" style, this won't work in Navigator
this . ele = element ;
// to set the default value
this . filterFunction = settings ;
}
CAgencyChangeFilter . prototype . PrepareEffect = function ( )
{
CCSSP . PrepareFilter ( this . ele ) ;
CCSSP . ShowObject ( this . ele , true ) ;
}
CAgencyChangeFilter . prototype . UpdateEffect = function ( )
{ // to set the visual filter function
CCSSP . PrepareFilter ( this . ele ) ;
this . ele . style . filter = this . filterFunction ;
}
CAgencyChangeFilter . prototype . EndEffect = function ( )
{ // to remove the visual filter function
this . ele . style . filter = "" ;
}
// End of the CAgencyChangeFilter definition
// The effects below change the style on the fly, so they won't work in Navigator
// Begin of CAgencyFontChange definition,
function CAgencyFontChange ( element , settings )
{ //this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.
this . ele = element ;
// to retrieve the original font style
this . RetrieveOldFont ( this . ele ) ;
// to set the default font to change
this . newfontFamily = this . ele . oldFontFamily ;
this . newfColor = this . ele . oldColor ;
this . newtextDecoration = this . ele . oldTextDecoration ;
this . newfontWeight = this . ele . oldFontWeight ;
this . newfontStyle = this . ele . oldFontStyle ;
this . newfontSize = this . ele . oldFontSize ;
this . newBackgroundColor = this . ele . oldBackgroundColor ;
var arrAllSet = settings . split ( "," ) ;
for ( var i = 0 ; i < arrAllSet . length ; i ++ )
{ // to retrieve the setting
arrAllSet [ i ] = CCSSP . TrimSpace ( arrAllSet [ i ] ) ;
var arrOneSet = arrAllSet [ i ] . split ( "=" ) ;
for ( var j = 0 ; j < arrOneSet . length ; j ++ )
arrOneSet [ j ] = CCSSP . TrimSpace ( arrOneSet [ j ] ) ;
switch ( arrOneSet [ 0 ] )
{
case "font-family" : this . newfontFamily = arrOneSet [ 1 ] ; break ;
case "color" : this . newfColor = arrOneSet [ 1 ] ; break ;
case "underline" : this . newtextDecoration = ( arrOneSet [ 1 ] == "on" ) ? "underline" : "none" ; break ;
case "bold" : this . newfontWeight = ( arrOneSet [ 1 ] == "on" ) ? "bold" : "normal" ; break ;
case "italic" : this . newfontStyle = ( arrOneSet [ 1 ] == "on" ) ? "italic" : "normal" ; break ;
case "size" : this . newfontSize = arrOneSet [ 1 ] ; break ;
case "background-color" : this . newBackgroundColor = arrOneSet [ 1 ] ; break ;
}
}
}
CAgencyFontChange . prototype . RetrieveOldFont = function ( objChild )
{
if ( typeof ( objChild . oldFontFamily ) == "undefined" )
objChild . oldFontFamily = objChild . style . fontFamily ;
if ( typeof ( objChild . oldColor ) == "undefined" )
objChild . oldColor = objChild . style . color ;
if ( typeof ( objChild . oldTextDecoration ) == "undefined" )
objChild . oldTextDecoration = objChild . style . textDecoration ;
if ( typeof ( objChild . oldFontWeight ) == "undefined" )
objChild . oldFontWeight = objChild . style . fontWeight ;
if ( typeof ( objChild . oldFontStyle ) == "undefined" )
objChild . oldFontStyle = objChild . style . fontStyle ;
if ( typeof ( objChild . oldFontSize ) == "undefined" )
objChild . oldFontSize = objChild . style . fontSize ;
if ( typeof ( objChild . oldBackgroundColor ) == "undefined" )
objChild . oldBackgroundColor = objChild . style . backgroundColor ;
}
CAgencyFontChange . prototype . PrepareEffect = function ( )
{
// as for expanding text, the child is created after the constructor called
for ( var index = 0 ; index < this . ele . all . length ; index ++ )
this . RetrieveOldFont ( this . ele . all [ index ] ) ;
CCSSP . ShowObject ( this . ele , true ) ;
}
CAgencyFontChange . prototype . UpdateEffect = function ( )
{ // to change the font
this . PrepareEffect ( ) ;
this . UpdateEffectAllChildren ( this . ele ) ;
for ( var index = 0 ; index < this . ele . all . length ; index ++ )
this . UpdateEffectAllChildren ( this . ele . all [ index ] ) ;
}
CAgencyFontChange . prototype . UpdateEffectAllChildren = function ( objChild )
{
objChild . style . fontFamily = this . newfontFamily ;
objChild . style . color = this . newfColor ;
objChild . style . textDecoration = this . newtextDecoration ;
objChild . style . fontWeight = this . newfontWeight ;
objChild . style . fontStyle = this . newfontStyle ;
objChild . style . fontSize = this . newfontSize ;
objChild . style . backgroundColor = this . newBackgroundColor ;
}
CAgencyFontChange . prototype . EndEffect = function ( )
{ // to reinstate the original font style
this . EndEffectAllChildren ( this . ele ) ;
for ( var index = 0 ; index < this . ele . all . length ; index ++ )
this . EndEffectAllChildren ( this . ele . all [ index ] ) ;
}
CAgencyFontChange . prototype . EndEffectAllChildren = function ( objChild )
{
if ( typeof ( objChild . oldFontFamily ) != "undefined" )
objChild . style . fontFamily = objChild . oldFontFamily ;
if ( typeof ( objChild . oldColor ) != "undefined" )
objChild . style . color = objChild . oldColor ;
if ( typeof ( objChild . oldFontWeight ) != "undefined" )
objChild . style . fontWeight = objChild . oldFontWeight ;
if ( typeof ( objChild . oldFontStyle ) != "undefined" )
objChild . style . fontStyle = objChild . oldFontStyle ;
if ( typeof ( objChild . oldFontSize ) != "undefined" )
objChild . style . fontSize = objChild . oldFontSize ;
if ( typeof ( objChild . oldTextDecoration ) != "undefined" )
objChild . style . textDecoration = objChild . oldTextDecoration ;
if ( typeof ( objChild . oldBackgroundColor ) != "undefined" )
objChild . style . backgroundColor = objChild . oldBackgroundColor ;
}
// End of the CAgencyFontChange definition
// Begin of the CAgencyChangeStyle definition
function CAgencyChangeStyle ( element , settings )
{ //this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.
this . ele = element ;
// to retrieve the original style
this . oldstyle = this . ele . style . cssText ;
// to set the default style
this . newStyle = this . oldstyle ;
if ( typeof ( settings ) == "string" && settings . length > 1 )
this . newStyle = this . oldstyle + " " + settings ;
}
CAgencyChangeStyle . prototype . PrepareEffect = function ( )
{
CCSSP . ShowObject ( this . ele , true ) ;
}
CAgencyChangeStyle . prototype . UpdateEffect = function ( )
{ // to change the style
this . ele . style . cssText = this . newStyle ;
}
CAgencyChangeStyle . prototype . EndEffect = function ( )
{ // to reinstate the original style
this . ele . style . cssText = this . oldStyle ;
}
// End of the CAgencyChangeStyle definition
//End the definition of CAgencyXXXX classes
//Begin to collaborate with other event handler settings
CCSSP . RegisterEventHandler ( window , "onload" , "CEngine.OnPageLoad();BSSCOnLoad();kadovInitTriggersInHead();" ) ;
CCSSP . RegisterEventHandler ( document , "onclick" , "CEngine.OnPageClick();BSSCOnClick();" ) ;
CCSSP . RegisterEventHandler ( document , "onmouseover" , "CEngine.OnMouseOver();BSSCOnMouseOver();" ) ;
CCSSP . RegisterEventHandler ( document , "onmouseout" , "CEngine.OnMouseOver();BSSCOnMouseOut();" ) ;
CCSSP . RegisterEventHandler ( window , "onunload" , "BSSCOnUnload();" ) ;
//End to collaborate with other event handler settings
/// Section End - CCSSP DHTM 2 (JavaScript 1.2)
2005-11-28 14:57:47 +05:00
//// Segment End -- (JavaScript 1.2)