//\/////
//\  overLIB 4.14 - You may not remove or change this notice.
//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
//\
//\  Contributors are listed on the homepage.
//\  This file might be old, always check for the latest version at:
//\  http://www.bosrup.com/web/overlib/
//\
//\  Please read the license agreement (available through the link above)
//\  before using overLIB. Direct any licensing questions to erik@bosrup.com.
//\
//\  Do not sell this as your own work or remove this copyright notice. 
//\  For full details on copying or changing this script please read the
//\  license agreement at the link above. Please give credit on sites that
//\  use overLIB and submit changes of the script so other people can use
//\  them as well.
//   $Revision: 1.107 $                $Date: 2004/12/26 15:34:56 $
//\/////

var pmStart = 10000000, pmUpper = 10001000, pmCount = pmStart+1, pmt='', pms = new Array(), FREPLACE = 0, FBEFORE = 1, FAFTER = 2, FALTERNATE = 3, FCHAIN=4;
registerCommands('sticky,caption,left,right,fgcolor,bgcolor,textcolor,capcolor,width,status,above,below,function,closeclick,cssoff');

if (typeof l_fgcolor=='undefined') var l_fgcolor="#CCCCFF";
if (typeof l_bgcolor=='undefined') var l_bgcolor="#333399";
if (typeof l_textcolor=='undefined') var l_textcolor="#000000";
if (typeof l_width=='undefined') var l_width="200";
if (typeof l_sticky=='undefined') var l_sticky=0;
if (typeof l_cap=='undefined') var l_cap="";
var o_text="";
var o_cap="";
var o_sticky=0;
var o_close="Close";
var o_fgcolor="";
var o_bgcolor="";
var o_textcolor="";
var o_capcolor="#FFFFFF";
var o_closecolor="#9999FF";
var o_width=100;
var o_status="";
var o_allowmove=0;
var o_closeclick=1;
var o_css=CSSOFF;
var o_x = 0;
var o_y = 0;
var o_showingsticky = 0;
var o_removecounter = 0;
var over = null;
var fnRef, hoveringSwitch = false;
var isMac = (navigator.userAgent.indexOf("Mac") != -1);
var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode);
var olNs6 = (document.getElementById) ? true : false;
var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent));
var olIe4 = (document.all) ? true : false;
var docRoot = 'document.body';

docRoot= ('document.documentElement');

if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false);
else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler);

var olCheckMouseCapture = true;
if ((olNs6 || olIe4)) {
olMouseCapture();
} else {
overlib = no_overlib;
nd = no_overlib;
ver3fix = true;
}

function overlib() {
if (over) {
over = (typeof over.id != 'string') ? self.document.all['overDiv'] : over;
cClick();
}
o_sticky=l_sticky;
o_fgcolor=l_fgcolor;
o_bgcolor=l_bgcolor;
o_textcolor=l_textcolor;
o_width=l_width;
o_cap=l_cap;
fnRef = '';
if(!(over=createDivContainer())) return false;
parseTokens('o_', overlib.arguments);
return runHook("olMain", FREPLACE);
}

function nd() {
if (o_removecounter >= 1) { o_showingsticky = 0 };
if (o_showingsticky == 0) {
o_allowmove = 0;
if (over != null) runHook("hideObject", FREPLACE, over);
} else {
o_removecounter++;
}
return true;
}

function cClick() {
runHook("hideObject", FREPLACE, over);
o_showingsticky = 0;
return false;
}

function olMain() {
var layerhtml;
 runHook("olMain", FBEFORE);

o_fgcolor = "bgcolor=\""+o_fgcolor+"\"";
o_bgcolor = "bgcolor=\""+o_bgcolor+"\"";

if (o_cap=="") {
layerhtml = runHook('l_content_simple', FALTERNATE, o_css, o_text);
} else {
if (o_sticky) {
layerhtml = runHook('l_content_caption', FALTERNATE, o_css, o_text, o_cap, o_close);
} else {
layerhtml = runHook('l_content_caption', FALTERNATE, o_css, o_text, o_cap, "");
}
}

if (o_sticky) {
o_showingsticky = 1;
o_removecounter = 0;
}
if (!runHook("createPopup", FREPLACE, layerhtml)) return false;
o_allowmove = 0;
runHook("disp", FREPLACE, o_status);
runHook("olMain", FAFTER);
return (olOp && event && event.type == 'mouseover' && !o_status) ? '' : (o_status != '');
}

function l_content_simple(text) {
txt='<table width="'+o_width+ '" border="0" cellpadding="1" cellspacing="0" '+o_bgcolor+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0" '+o_fgcolor+'><tr><td valign="TOP">'+wrapStr(0,'text')+text+wrapStr(1)+'</td></tr></table></td></tr></table>';
return txt;
}

function l_content_caption(text,title,close) {
var nameId;
closing="";
closeevent="onmouseover";
if (o_closeclick==1) closeevent= "title='Close'" + " onclick";
if (close != "") 
closing='<td align="RIGHT"><a href="javascript:return '+fnRef+'cClick();" '+closeevent+'="return '+fnRef+'cClick();">'+wrapStr(0,'close')+close+wrapStr(1,'close')+'</a></td>';
txt='<table width="'+o_width+ '" border="0" cellpadding="1" cellspacing="0" '+o_bgcolor+'><tr><td><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td><b>'+wrapStr(0,'caption')+title+wrapStr(1)+'</b></td>'+closing+'</tr></table><table width="100%" border="0" cellpadding="2" cellspacing="0" '+o_fgcolor+'><tr><td valign="TOP">'+wrapStr(0,'text')+text+wrapStr(1) + '</td></tr></table></td></tr></table>';
return txt;
}

var olShowId=-1;

function disp(statustext) {
runHook("disp", FBEFORE);
if (o_allowmove == 0) {
runHook("placeLayer", FREPLACE);
runHook("showObject", FREPLACE, over);
o_allowmove = (o_sticky) ? 0 : 1;
}
runHook("disp", FAFTER);
if (statustext != "") self.status = statustext;
}

function createPopup(lyrContent){
runHook("createPopup", FBEFORE);
layerWrite(lyrContent);
runHook("createPopup", FAFTER, lyrContent);
return true;
}

function placeLayer() {
var placeX, placeY, widthFix = 0;
if (self.innerWidth) widthFix=18; 
iwidth = windowWidth();
winoffset=(olIe4) ? eval('self.'+docRoot+'.scrollLeft') : self.pageXOffset;
placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
if (self.innerHeight) {
iheight=self.innerHeight;
} else if (eval('self.'+docRoot)&&eval("typeof self."+docRoot+".clientHeight=='number'")&&eval('self.'+docRoot+'.clientHeight')) { 
iheight=eval('self.'+docRoot+'.clientHeight');
}
scrolloffset=(olIe4) ? eval('self.'+docRoot+'.scrollTop') : self.pageYOffset;
placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
repositionTo(over, placeX, placeY);
}

function olMouseMove(e) {
var e = (e) ? e : event;
if (e.pageX) {
o_x = e.pageX;
o_y = e.pageY;
} else if (e.clientX) {
o_x = eval('e.clientX+self.'+docRoot+'.scrollLeft');
o_y = eval('e.clientY+self.'+docRoot+'.scrollTop');
}
if (o_allowmove == 1) runHook("placeLayer", FREPLACE);
if (hoveringSwitch) {
cClick();
hoveringSwitch = !hoveringSwitch;
}
}

function no_overlib() { return ver3fix; }

function olMouseCapture() {
capExtent = document;
var fN, str, l, k, f, mseHandler = olMouseMove;
var re = /function[ ]*(\w*)\(/;
if (document.onmousemove || (!olIe4 && window.onmousemove)) {
if (window.onmousemove) capExtent = window;
f = capExtent.onmousemove.toString();
fN = f.match(re);
if (fN==null) {
str=f+'(e); ';
} else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove') {
olCheckMouseCapture = false;
return;
} else {
if (fN[1]) str = fN[1]+'(e); ';
else {
l=f.indexOf('{')+1;
k=f.lastIndexOf('}');
str=f.substring(l,k) + '\n';
}
}
str += 'olMouseMove(e); ';
mseHandler = new Function('e', str);
}
capExtent.onmousemove = mseHandler;
}

function parseTokens(pf, ar) {
var v, mode=-1, par = (pf != 'l_');
var fnMark = (par && !ar.length ? 1 : 0);
for (i = 0; i < ar.length; i++) {
if (mode < 0) {
if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) {
fnMark = (par ? 1 : 0);
i--;
} else o_text=ar[i].toString();  
mode = 0;
} else {
if (ar[i] >= pmCount) { continue; }
if (ar[i]==STICKY) { if (pf!='l_') eval(pf+'sticky=1'); continue; }
if (ar[i]==CAPTION) { eval(pf+"cap='"+ar[++i]+"'"); continue; }
if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; }
if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; }
if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; }
if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; }
if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; }
if (ar[i]==STATUS) { eval(pf+"status='"+ar[++i]+"'"); continue; }
if (ar[i]==CLOSECLICK) { eval('o_closeclick=1'); continue; }
if (ar[i]==CSSOFF) { eval(pf+'css='+ar[i]); continue; }
i = parseCmdLine(pf, i, ar);
}
}
if ((pf == 'o_') && o_sticky) {
if (!o_close && (self != l_frame)) o_close = l_close;
}
}

function layerWrite(txt) {
txt += "\n";
if (typeof over.innerHTML != 'undefined') {
over.innerHTML = txt;
} else {
range = self.document.createRange();
range.setStartAfter(over);
domfrag = range.createContextualFragment(txt);

while (over.hasChildNodes()) {
over.removeChild(over.lastChild);
}
over.appendChild(domfrag);
}
}

function showObject(obj) {
runHook("showObject", FBEFORE);
var theObj=obj.style;
theObj.visibility = 'visible';
runHook("showObject", FAFTER);
}

function hideObject(obj) {
runHook("hideObject", FBEFORE);
var theObj=obj.style;
theObj.visibility = 'hidden';
theObj.top=theObj.left=-10000 + 'px';
self.status = "";
if (obj.onmouseout || obj.onmouseover) {
obj.onmouseout = obj.onmouseover = null;
}
runHook("hideObject", FAFTER);
}

function repositionTo(obj, xL, yL) {
var theObj=obj.style;
theObj.left = xL + 'px';
theObj.top = yL + 'px';
}

function OLonLoad_handler(e) {
var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i;
if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false);
else if(window.detachEvent) {
window.detachEvent("onload",OLonLoad_handler);
var fN = document.body.getAttribute('onload');
if (fN) {
fN=fN.toString().match(re);
if (fN && fN.length) {
for (i=0; i<fN.length; i++) {
if (/anonymous/.test(fN[i])) continue;
while((l=fN[i].search(/\)[;\s]+/)) != -1) {
fn=fN[i].substring(0,l+1);
fN[i] = fN[i].substring(l+2);
if (olre.test(fn)) eval(fn);
}
}
}
}
}
}

function wrapStr(endWrap,whichString) {
var fontStr, fontColor, isClose=((whichString=='close') ? 1 : 0), hasDims=/[%\-a-z]+$/.test(1);
if (endWrap) return (hasDims) ? (isClose ? '</span>' : '</div>') : '</font>';
else {
fontStr='o_'+whichString+'font';
fontColor='o_'+((whichString=='caption')? 'cap' : whichString)+'color';
return (hasDims) ? (isClose ? '<span style="font-family: Verdana,Arial,Helvetica; color: '+eval(fontColor)+'; font-size:1;">' : '<div style="font-family: Verdana,Arial,Helvetica; color: '+eval(fontColor)+'; font-size: 1;">') : '<font face="Verdana,Arial,Helvetica" color="'+eval(fontColor)+'" size="1">';
}
}

function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) {
var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount;
var parsedWidth = parseInt(o_width);
if ((o_x - winoffset) > (iwidth / 2)) {
placeX = o_x-10-parsedWidth;
if (placeX < winoffset) placeX = winoffset;
} else {
placeX = o_x+10;
if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) {
placeX = iwidth+winoffset - parsedWidth - widthFix;
if (placeX < 0) placeX = 0;
}}
return placeX;
}

function verticalPlacement(browserHeight,verticalScrollAmount) {
var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount;
var parsedHeight=(over.offsetHeight);
if ((o_y - scrolloffset) > (iheight / 2) && (o_y + parsedHeight + 10 - (scrolloffset + iheight) > 0)) {
placeY = o_y - (parsedHeight+10);
if (placeY < scrolloffset) placeY = scrolloffset;
} else placeY = o_y+10; 
return placeY;
}

function windowWidth() {
var w;
if (self.innerWidth) w=self.innerWidth;
else if (eval('self.'+docRoot)&&eval("typeof self."+docRoot+".clientWidth=='number'")&&eval('self.'+docRoot+'.clientWidth')) 
w=eval('self.'+docRoot+'.clientWidth');
return w;
}

function createDivContainer(id,frm,zValue) {
id = (id || 'overDiv'), frm = (frm || self), zValue = (zValue || 1000);
var objRef, divContainer = layerReference(id);
if (divContainer == null) {
var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]);
if (olIe4&&!document.getElementById) {
body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');
divContainer=layerReference(id);
} else {
divContainer = frm.document.createElement("DIV");
divContainer.id = id;
body.appendChild(divContainer);
}
objRef = divContainer.style;

with (objRef) {
position = 'absolute';
visibility = 'hidden';
zIndex = zValue;
}
}
return divContainer;
}

function layerReference(id) {
return (document.all ? self.document.all[id] : self.document.getElementById(id));
}

function parseCmdLine(pf, i, args) {
if (typeof cmdLine != 'undefined' && cmdLine.length) { 
for (var k = 0; k < cmdLine.length; k++) { 
var j = cmdLine[k](pf, i, args);
if (j >- 1) {
i = j;
break;
}
}
}
return i;
}

function registerCommands(cmdStr) {
if (typeof cmdStr!='string') return;
var pM = cmdStr.split(',');
pms = pms.concat(pM);
for (var i = 0; i< pM.length; i++) {
eval(pM[i].toUpperCase()+'='+pmCount++);
}
}

function registerHook(fnHookTo, fnRef, hookType, optPm) {
var hookPt, last = typeof optPm;
if (fnHookTo == 'plgIn') return;
if (typeof hookPts == 'undefined') hookPts = new Array();
if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference();
hookPt = hookPts[fnHookTo];
if (hookType != null) {
if (hookType == FREPLACE) {
hookPt.ovload = fnRef;
if (fnHookTo.indexOf('l_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; 
} else if (hookType == FBEFORE || hookType == FAFTER) {
var hookPt=(hookType == 1 ? hookPt.before : hookPt.after);
if (typeof fnRef == 'object') {
hookPt = hookPt.concat(fnRef);
} else {
hookPt[hookPt.length++] = fnRef;
}
} else if (hookType == FALTERNATE) {
if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef;
} else if (hookType == FCHAIN) {
hookPt = hookPt.chain; 
if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef);
else hookPt[hookPt.length++]=fnRef;
}
return;
}
}

function runHook(fnHookTo, hookType) {
var l = hookPts[fnHookTo], k, rtnVal, optPm, arS, ar = runHook.arguments;
if (hookType == FREPLACE) {
arS = argToString(ar, 2);
if (typeof l == 'undefined' || !(l = l.ovload)) return eval(fnHookTo+'('+arS+')');
else return eval('l('+arS+')');
} else if (hookType == FBEFORE || hookType == FAFTER) {
if (typeof l == 'undefined') return;
l=(hookType == 1 ? l.before : l.after);
if (!l.length) return;
arS = argToString(ar, 2);
for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')'); 
} else if (hookType == FALTERNATE) {
optPm = ar[2];
arS = argToString(ar, 3);
if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') {
return eval(fnHookTo+'('+arS+')');
} else {
return eval('l('+arS+')');
}
} else if (hookType == FCHAIN) {
arS=argToString(ar,2);
l=l.chain;
for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) return rtnVal;
}
}

function argToString(array, strtInd, argName) {
var jS = strtInd, aS = '', ar = array;
argName=(argName ? argName : 'ar');
if (ar.length > jS) {
for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], ';
aS = aS.substring(0, aS.length-2);
}
return aS;
}

function FunctionReference() {
this.ovload = null;
this.before = new Array();
this.after = new Array();
this.alt = new Array();
this.chain = new Array();
}

registerHook("l_content_simple", l_content_simple, FALTERNATE, CSSOFF);
registerHook("l_content_caption", l_content_caption, FALTERNATE, CSSOFF);
registerHook("horizontalPlacement", horizontalPlacement, FCHAIN);
registerHook("verticalPlacement", verticalPlacement, FCHAIN);