/*
 overlibmws_bubble.js plug-in module - Copyright Foteos Macrides 2003-2005
   For support of the BUBBLE feature.
   Initial: July 26, 2003 - Last Revised: June 8, 2005 
 See the Change History and Command Reference for overlibmws via:

	http://www.macridesweb.com/oltest/

 Published under an open source license: http://www.macridesweb.com/oltest/license.html
*/

OLloaded=0;
var OLbubbleCmds='bubble,bubbletype,adjbubble';
OLregCmds(OLbubbleCmds);

// DEFAULT CONFIGURATION
if(OLud('bubble'))var ol_bubble=0;
if(OLud('bubbletype'))var ol_bubbletype='';
if(OLud('adjbubble'))var ol_adjbubble=0;
// END CONFIGURATION

if(typeof OLbubbleImages=='undefined')
var OLbubbleImages='flower,oval,square,pushpin,quotation,roundcorners';
if(typeof OLbubbleImageDir=='undefined')var OLbubbleImageDir='./';
OLregisterImages('flower,oval,square,pushpin,quotation,roundcorners',OLbubbleImageDir);
var OLimgWidth=[250,330,144,202,200];
var OLimgHeight=[150,160,190,221,66];
var OLcontentWidth=[200,250,130,184,190];
var OLcontentHeight=[80,85,150,176,46];
var OLpadLeft=[30,40,7,9,5];
var OLpadTop=[25,48,10,34,4];
var OLarwTipX=[180,50,51,9,19];
var OLarwTipY=[148,5,180,221,64];
var OLbI,OLbContentWd=OLcontentWidth;

var o3_bubble=0,o3_bubbletype='',o3_adjbubble=0,OLbubbleHt=0;

function OLloadBubble(){
OLload(OLbubbleCmds);OLbubbleHt=0;
}

function OLparseBubble(pf,i,ar){
var k=i,t=OLtoggle;
if(k<ar.length){
if(Math.abs(ar[k])==BUBBLE){t(ar[k],pf+'bubble');return k;}
if(ar[k]==BUBBLETYPE){OLparQuo(ar[++k],pf+'bubbletype');return k;}
if(Math.abs(ar[k])==ADJBUBBLE){t(ar[k],pf+'adjbubble');return k;}}
return -1;
}

function OLchkForBubbleEffect() {
if(o3_bubble){o3_bubbletype=(o3_bubbletype)?o3_bubbletype:'flower';
for(var i=0;i<OLbTypes.length;i++){if(OLbTypes[i]==o3_bubbletype){OLbI=i;break;}}
// disable inappropriate parameters
o3_bgcolor=o3_fgcolor='';
o3_border=o3_base=0;
o3_fgbackground=o3_bgbackground=o3_cgbackground=o3_background='';
o3_cap='';
if(o3_sticky)o3_noclose=1;
o3_fullhtml=0;
if(OLshadowPI)o3_shadow=0;
if(o3_bubbletype!='roundcorners'){
o3_width=OLbContentWd[OLbI];
o3_hpos=RIGHT;
o3_vpos=BELOW;
o3_vauto=0;
o3_hauto=0;
o3_wrap=0;
o3_nojusty=1;}}
return true;
}

function OLregisterImages(imgStr,path) {
if(typeof imgStr!='string')return;
path=(path&&typeof path=='string')?path:'.';
if(path.charAt(path.length-1)=='/')path=path.substring(0,path.length-1);
if(typeof OLbTypes=='undefined')OLbTypes=imgStr.split(',');
if(typeof OLbubbleImg=='undefined'){
OLbubbleImg=new Array();
for(var i=0;i<OLbTypes.length;i++){
if(OLbubbleImages.indexOf(OLbTypes[i])<0)continue;
if(OLbTypes[i]=='roundcorners'){
OLbubbleImg[i]=new Array();
var o=OLbubbleImg[i];
o[0]=new Image();o[0].src=path+'/cornerTL.gif';
o[1]=new Image();o[1].src=path+'/edgeT.gif';
o[2]=new Image();o[2].src=path+'/cornerTR.gif';
o[3]=new Image();o[3].src=path+'/edgeL.gif';
o[4]=new Image();o[4].src=path+'/edgeR.gif';
o[5]=new Image();o[5].src=path+'/cornerBL.gif';
o[6]=new Image();o[6].src=path+'/edgeB.gif';
o[7]=new Image();o[7].src=path+'/cornerBR.gif';
}else{
OLbubbleImg[i]=new Image();OLbubbleImg[i].src=path+'/'+OLbTypes[i]+'.gif';}}}
}

function OLgenerateBubble(content) {
if(!o3_bubble)return;
if(o3_bubbletype=='roundcorners')return OLdoRoundCorners(content);
var ar,X,Y,fc=1.0,txt,sY,bHtDiff,bPadDiff=0,bLobj,bCobj;
var bTopPad=OLpadTop,bLeftPad=OLpadLeft;
var bContentHt=OLcontentHeight,bHt=OLimgHeight;
var bWd=OLimgWidth,bArwTipX=OLarwTipX,bArwTipY=OLarwTipY;
bHtDiff=fc*bContentHt[OLbI]-(OLns4?over.clip.height:over.offsetHeight);
if(o3_adjbubble){
fc=OLresizeBubble(bHtDiff,0.5,fc);
ar=OLgetHeightDiff(fc);
bHtDiff=ar[0];
content=ar[1];}
if(bHtDiff>0)bPadDiff=(bHtDiff<2)?0:parseInt(0.5*bHtDiff);
Y=(bHtDiff<0)?fc*bTopPad[OLbI]:fc*bTopPad[OLbI]+bPadDiff;
X=fc*bLeftPad[OLbI];
Y=Math.round(Y);
X=Math.round(X);
o3_width=fc*bWd[OLbI];
OLbubbleHt=fc*bHt[OLbI];
txt='<img src="'+OLbubbleImg[OLbI].src+'" width="'+o3_width+'" height="'
+(bHtDiff<0?OLbubbleHt-bHtDiff:OLbubbleHt)+'" />'+(OLns4?'<div id="bContent">':
'<div id="bContent" style="position:absolute; top:'+Y+'px; left:'+X+'px; width:'
+fc*OLbContentWd[OLbI]+'px; z-index:1;">')+content+'</div>';
OLlayerWrite(txt);
if(OLns4){
bCobj=over.document.layers['bContent'];
if(typeof bCobj=='undefined')return;
bCobj.top=Y;
bCobj.left=X;
bCobj.clip.width=fc*OLbContentWd[OLbI];
bCobj.zIndex=1;}
if(fc*bArwTipY[OLbI]<0.5*fc*bHt[OLbI])sY=fc*bArwTipY[OLbI]; 
else sY= -(fc*bHt[OLbI]+20);
o3_offsetx -=fc*bArwTipX[OLbI];
o3_offsety +=sY;
}

function OLdoRoundCorners(content) {
var txt,wd,ht,o=OLbubbleImg[OLbI];
wd=(OLns4)?over.clip.width:over.offsetWidth;
ht=(OLns4)?over.clip.height:over.offsetHeight;
txt='<table cellpadding="0" cellspacing="0" border="0">'
+'<tr><td align="right" valign="bottom"><img src="'+o[0].src+'" width="14" height="14"'
+(OLns6?' style="display:block;"':'')+' /></td><td valign="bottom"><img src="'+o[1].src
+'" height="14" width="'+wd+'"'+(OLns6?' style="display:block;"':'')
+' /></td><td align="left" valign="bottom"><img src="'+o[2].src+'" width="14" height="14"'
+(OLns6?' style="display:block;"':'')+' /></td></tr>'
+'<tr><td align="right"><img src="'+o[3].src+'" width="14" height="'+ht+'"'
+(OLns6?' style="display:block;"':'')+' /></td><td bgcolor="#ffffcc">'+content
+'</td><td align="left"><img src="'+o[4].src+'" width="14" height="'+ht+'"'
+(OLns6?' style="display:block;"':'')+ '/></td></tr>'+'<tr><td align="right" valign="top">'
+'<img src="'+o[5].src+'" width="14" height="14" /></td><td valign="top"><img src="'+o[6].src
+'" height="14" width="'+wd+'" /></td><td align="left" valign="top"><img src="'+o[7].src
+'" width="14" height="14" /></td></tr></table>';
OLlayerWrite(txt);
o3_width=wd+28;
OLbubbleHt=ht+28;
}

function OLresizeBubble(h1,dF,fold){
var df,h2,fnew,alpha,cnt=0;
while(cnt<2){
df= -OLsignOf(h1)*dF;
fnew=fold+df;
h2=OLgetHeightDiff(fnew)[0];
if(Math.abs(h2)<11)break;
if(OLsignOf(h1)!=OLsignOf(h2)){
alpha=Math.abs(h1)/(Math.abs(h1)+Math.abs(h2));
if(h1<0)fnew=alpha*fnew+(1.0-alpha)*fold;
else fnew=(1.0-alpha)*fnew+alpha*fold;
}else{
alpha=Math.abs(h1)/(Math.abs(h2)-Math.abs(h1));
if(h1<0)fnew=(1.0+alpha)*fold-alpha*fnew;
else fnew=(1.0+alpha)*fnew-alpha*fold;}
fold=fnew;
h1=h2;
dF*=0.5;
cnt++;}
return fnew;
}

function OLgetHeightDiff(f){
var lyrhtml;
o3_width=f*OLcontentWidth[OLbI];
lyrhtml=OLcontentSimple(o3_text);
OLlayerWrite(lyrhtml)
return [f*OLcontentHeight[OLbI]-((OLns4)?over.clip.height:over.offsetHeight),lyrhtml];
}

function OLsignOf(x){
return (x<0)? -1:1;
}

OLregRunTimeFunc(OLloadBubble);
OLregCmdLineFunc(OLparseBubble);

if(OLns4)
document.write(
'<style type="text/css">\n<!--\n#bContent{position:absolute;left:0px;top:0px;width:1024}\n'
+'-->\n<'+'\/style>');
OLbubblePI=1;
OLloaded=1;
