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
|
|