Project

General

Profile

1
//\/////
2

    
3
//\  overLIB Anchor Plugin
4

    
5
//\  This file requires overLIB 4.10 or later.
6

    
7
//\
8

    
9
//\  overLIB 4.10 - You may not remove or change this notice.
10

    
11
//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
12

    
13
//\  Contributors are listed on the homepage.
14

    
15
//\  See http://www.bosrup.com/web/overlib/ for details.
16

    
17
//\/////
18

    
19
//\  THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
20

    
21
if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Anchor Plugin.');else{registerCommands('anchor,anchorx,anchory,noanchorwarn,anchoralign');
22

    
23
if(typeof ol_anchor=='undefined')var ol_anchor='';if(typeof ol_anchorx=='undefined')var ol_anchorx=0;if(typeof ol_anchory=='undefined')var ol_anchory=0;if(typeof ol_noanchorwarn=='undefined')var ol_noanchorwarn=1;if(typeof ol_anchoralign=='undefined')var ol_anchoralign='UL';
24

    
25
var o3_anchor="",o3_anchorx=0,o3_anchory=0,o3_noanchorwarn=1,o3_anchoralign='UL',mrkObj,rmrkPosition;
26

    
27
function setAnchorVariables(){o3_anchor=ol_anchor;o3_anchorx=ol_anchorx;o3_anchory=ol_anchory;o3_noanchorwarn=ol_noanchorwarn;o3_anchoralign=ol_anchoralign;mrkObj=null;}
28

    
29
function parseAnchorExtras(pf,i,ar){var v,k=i;
30

    
31
if(k<ar.length){if(ar[k]==ANCHOR){eval(pf+"anchor='"+escSglQuote(ar[++k])+"'");return k;}
32

    
33
if(ar[k]==ANCHORX){eval(pf+'anchorx='+ar[++k]);return k;}
34

    
35
if(ar[k]==ANCHORY){eval(pf+'anchory='+ar[++k]);return k;}
36

    
37
if(ar[k]==NOANCHORWARN){eval(pf+'noanchorwarn=('+pf+'noanchorwarn==1)?0:1');return k;}
38

    
39
if(ar[k]==ANCHORALIGN){k=opt_MULTIPLEARGS(++k,ar,(pf+'anchoralign')); return k;}}
40

    
41
return-1;}
42

    
43
function checkAnchorObject(){var w=o3_anchor;
44

    
45
if(w){if(!(mrkObj=getAnchorObjectRef(w))){if(o3_noanchorwarn){alert('WARNING!  Reference mark "'+w+'" not found.');return false;}else w='';}}
46

    
47
return true;}
48

    
49
function anchorHorizontal(browserWidth,horizontalScrollAmount,widthFix){var hasAnchor=(typeof o3_anchor!='undefined'&&o3_anchor);if(!hasAnchor)return void(0);
50

    
51
if(typeof o3_followscroll!='undefined'&&o3_followscroll&&o3_sticky)o3_relx=rmrkPosition[0];
52

    
53
return rmrkPosition[0];}
54

    
55
function anchorVertical(browserHeight,verticalScrollAmount){var hasAnchor=(typeof o3_anchor!='undefined'&&o3_anchor);if(!hasAnchor)return void(0);
56

    
57
if(typeof o3_followscroll!='undefined'&&o3_followscroll&&o3_sticky)o3_rely=rmrkPosition[1];
58

    
59
return rmrkPosition[1];}
60

    
61
function anchorPreface(){if(!mrkObj)return;rmrkPosition=getAnchorLocation(mrkObj);}
62

    
63
function getAnchorObjectRef(aObj){return getRefById(aObj,o3_frame.document)||getRefByName(aObj,o3_frame.document)}
64

    
65
function getAnchorLocation(objRef){var mkObj,of,offsets,mlyr
66

    
67
mkObj=mlyr=objRef
68

    
69
offsets=[o3_anchorx,o3_anchory]
70

    
71
if(document.layers){if(typeof mlyr.length!='undefined'&& mlyr.length>1){mkObj=mlyr[0]
72

    
73
offsets[0]+=mlyr[0].x+mlyr[1].pageX
74

    
75
offsets[1]+=mlyr[0].y+mlyr[1].pageY
76

    
77
}else{if(mlyr.toString().indexOf('Image')!=-1||mlyr.toString().indexOf('Anchor')!=-1){offsets[0]+=mlyr.x
78

    
79
offsets[1]+=mlyr.y
80

    
81
}else{offsets[0]+=mlyr.pageX
82

    
83
offsets[1]+=mlyr.pageY}}
84

    
85
}else{offsets[0]+=pageLocation(mlyr,'Left')
86

    
87
offsets[1]+=pageLocation(mlyr,'Top')}
88

    
89
of=getAnchorOffsets(mkObj)
90

    
91
if(typeof o3_dragimg!='undefined'&& o3_dragimg){olImgLeft=offsets[0];olImgTop=offsets[1];}
92

    
93
offsets[0]+=of[0]
94

    
95
offsets[1]+=of[1]
96

    
97
if(typeof o3_dragimg!='undefined'&& o3_dragimg){olImgRight=offsets[0];olImgBottom=offsets[1];return;}
98

    
99
return offsets;}
100

    
101
function getAnchorOffsets(mkObj){var fx=fy=0, mp,puc,mkAry,sx=sy=0,w=o3_anchoralign
102

    
103
var mW=mH=pW=pH=0
104

    
105
var off=[0,0]
106

    
107
mkAry=w.split(',');
108

    
109
if(mkAry.length<3){mp=mkAry[0].toUpperCase();puc=(mkAry.length==1)?mp:mkAry[1].toUpperCase();}else if(mkAry.length==3){if(!isNaN(mkAry[0])){mp=mkAry.slice(0,2);puc=mkAry[2].toUpperCase();}else{mp=mkAry[0].toUpperCase();puc=mkAry.slice(1);}
110

    
111
}else{mp=mkAry.slice(0,2);puc=mkAry.slice(2);}
112

    
113
var shdwPresent=typeof o3_shadow!='undefined'&& o3_shadow
114

    
115
if(shdwPresent){sx=Math.abs(o3_shadowx);sy=Math.abs(o3_shadowy);}
116

    
117
pW=(shdwPresent?parseInt(o3_width):(olNs4?over.clip.width:over.offsetWidth))
118

    
119
pH=(shdwPresent?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight))
120

    
121
if(olOp&& o3_wrap){pW=(shdwPresent?parseInt(o3_width):(olNs4?over.clip.width:over.offsetWidth))
122

    
123
pH=(shdwPresent?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight))}
124

    
125
if(!olOp&& mkObj.toString().indexOf('Image')!=-1){mW=mkObj.width
126

    
127
mH=mkObj.height
128

    
129
}else if(!olOp&& mkObj.toString().indexOf('Anchor')!=-1){mp='UL'
130

    
131
}else{mW=(olNs4)?mkObj.clip.width:mkObj.offsetWidth
132

    
133
mH=(olNs4)?mkObj.clip.height:mkObj.offsetHeight}
134

    
135
if(!isNaN(mp)||typeof mp=='object'){if(typeof mp=='object'){fx=parseFloat(mp[0]);fy=parseFloat(mp[1]);}else
136

    
137
fx=fy=parseFloat(mp);off=[Math.round(fx*mW),Math.round(fy*mH)];}else{if(mp=='UR')off=[mW,0]
138

    
139
else if(mp=='LL')off=[0,mH]
140

    
141
else if(mp=='LR')off=[mW,mH]}
142

    
143
if(typeof o3_dragimg!='undefined'&& o3_dragimg)return off;else{if(!isNaN(puc)||typeof puc=='object' ){if(typeof puc=='object'){fx=parseFloat(puc[0]);fy=parseFloat(puc[1]);}else
144

    
145
fx=fy=parseFloat(puc);off[0]-=Math.round(fx*(pW-sx));off[1]-=Math.round(fy*(pH-sy));}else{if(puc=='UR'){off[0]-=(pW-sx);off[1]-=sy
146

    
147
}else if(puc=='LL'){off[0]-=sx;off[1]-=(pH-sy)
148

    
149
}else if(puc=='LR'){off[0]-=(pW-sx);off[1]-=(pH-sy)}}
150

    
151
return off}}
152

    
153
function pageLocation(o,t){var x=0
154

    
155
while(o.offsetParent){x+=o['offset'+t]
156

    
157
o=o.offsetParent}
158

    
159
x+=o['offset'+t]
160

    
161
return x}
162

    
163
function getRefById(l,d){var r="",j
164

    
165
d=(d||document)
166

    
167
if(d.all)return d.all[l]
168

    
169
else if(d.getElementById)return d.getElementById(l)
170

    
171
else if(d.layers&& d.layers.length>0){if(d.layers[l])return d.layers[l]
172

    
173
for(j=0;j<d.layers.length;j++){r=getRefById(l,d.layers[j].document)
174

    
175
if(r)return r}}
176

    
177
return false}
178

    
179
function getRefByName(l,d){var r=null,j
180

    
181
d=(d||document)
182

    
183
if(d.images[l])return d.images[l]
184

    
185
else if(d.anchors[l])return d.anchors[l];else if(d.layers&& d.layers.length>0){for(j=0;j<d.layers.length;j++){r=getRefByName(l,d.layers[j].document)
186

    
187
if(r&& r.length>0)return r
188

    
189
else if(r)return [r,d.layers[j]]}}
190

    
191
return null}
192

    
193
registerRunTimeFunction(setAnchorVariables);registerCmdLineFunction(parseAnchorExtras);registerPostParseFunction(checkAnchorObject);registerHook("createPopup",anchorPreface,FAFTER);registerHook("horizontalPlacement",anchorHorizontal,FCHAIN);registerHook("verticalPlacement",anchorVertical,FCHAIN);if(olInfo.meets(4.10))registerNoParameterCommands('noanchorwarn');
194

    
195
}
196

    
(1-1/11)