/*
TIPSTER v3.1 RC (c) 2001-2004 Angus Turnbull, http://www.twinhelix.com
Altering this notice or redistributing this file is prohibited.

*/

var isDOM=document.getElementById?1:0,isIE=document.all?1:0,isNS4=navigator.appName=='Netscape'&&!isDOM?1:0,isOp=self.opera?1:0,isDyn=isDOM||isIE||isNS4;function getRef(i,p){p=!p?document:p.navigator?p.document:p;return isIE?p.all[i]:isDOM?(p.getElementById?p:p.ownerDocument).getElementById(i):isNS4?p.layers[i]:null};function getSty(i,p){var r=getRef(i,p);return r?isNS4?r:r.style:null};if(!self.LayerObj)var LayerObj=new Function('i','p','this.ref=getRef(i,p);this.sty=getSty(i,p);return this');function getLyr(i,p){return new LayerObj(i,p)};function LyrFn(n,f){LayerObj.prototype[n]=new Function('var a=arguments,p=a[0],px=isNS4||isOp?0:"px";with(this){'+f+'}')};LyrFn('x','if(!isNaN(p))sty.left=p+px;else return parseInt(sty.left)');LyrFn('y','if(!isNaN(p))sty.top=p+px;else return parseInt(sty.top)');LyrFn('w','if(p)(isNS4?sty.clip:sty).width=p+px;else return(isNS4?ref.document.width:ref.offsetWidth)');LyrFn('h','if(p)(isNS4?sty.clip:sty).height=p+px;else return(isNS4?ref.document.height:ref.offsetHeight)');LyrFn('vis','sty.visibility=p');LyrFn('write','if(isNS4)with(ref.document){write(p);close()}else ref.innerHTML=p');LyrFn('alpha','var f=ref.filters,d=(p==null),o=d?"inherit":p/100;if(f){if(!d&&sty.filter.indexOf("alpha")==-1)sty.filter+=" alpha(opacity="+p+")";else if(f.length&&f.alpha)with(f.alpha){if(d)enabled=false;else{opacity=p;enabled=true}}}else if(isDOM)sty.opacity=sty.MozOpacity=o');if(!self.page)var page={win:self,minW:0,minH:0,MS:isIE&&!isOp};page.db=function(p){with(this.win.document)return(isDOM?documentElement[p]:0)||body[p]||0};page.winW=function(){with(this)return Math.max(minW,MS?db('clientWidth'):win.innerWidth)};page.winH=function(){with(this)return Math.max(minH,MS?db('clientHeight'):win.innerHeight)};page.scrollX=function(){with(this)return MS?db('scrollLeft'):win.pageXOffset};page.scrollY=function(){with(this)return MS?db('scrollTop'):win.pageYOffset};function TipObj(myName){this.myName=myName;this.template='';this.tips=new Array();this.parentObj=null;this.div=null;this.actTip='';this.showTip=false;this.xPos=this.yPos=this.sX=this.sY=this.mX=this.mY=0;this.trackTimer=this.fadeTimer=0;this.alpha=0;this.doFades=true;this.minAlpha=0;this.maxAlpha=100;this.fadeInSpeed=20;this.fadeOutSpeed=20;this.tipStick=1;this.showDelay=50;this.hideDelay=250;this.IESelectBoxFix=0;TipObj.list[myName]=this};TipObj.list=[];var ToPt=TipObj.prototype;ToPt.track=function(evt){with(this){if(!isIE||document.body){evt=evt||window.event;sX=page.scrollX();sY=page.scrollY();mX=isNS4?evt.pageX:sX+evt.clientX;mY=isNS4?evt.pageY:sY+evt.clientY;if(tipStick==1)position()}}};ToPt.position=function(forcePos){with(this){if(!actTip)return;var wW=page.winW(),wH=page.winH();if(!isIE||isOp){wW-=16;wH-=16}var t=tips[actTip],tipX=eval(t[0]),tipY=eval(t[1]),tipW=div.w(),tipH=div.h(),adjY=1;if(typeof(t[0])=='number')tipX+=mX;if(typeof(t[1])=='number')tipY+=mY;if(tipX+tipW+5>sX+wW)tipX=sX+wW-tipW-5;if(tipY+tipH+5>sY+wH)tipY=sY+wH-tipH-5;if(tipX<sX+5)tipX=sX+5;if(tipY<sY+5)tipY=sY+5;if((!showTip&&(doFades?!alpha:true))||forcePos){xPos=tipX;yPos=tipY}xPos+=(tipX-xPos)*tipStick;yPos+=(tipY-yPos)*tipStick;div.x(xPos);div.y(yPos);return}};ToPt.replaceContent=function(tipN){with(this){actTip=tipN;if(tipStick==parseInt(tipStick)){var rE='';if(isNS4){div.ref.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT);rE=';return this.routeEvent(evt)'}div.ref.onmouseover=new Function('evt',myName+'.show("'+tipN+'"'+(parentObj?','+parentObj.myName:'')+')'+rE);div.ref.onmouseout=new Function('evt',myName+'.hide()'+rE)}var str=template;for(var i=0;i<tips[tipN].length;i++)str=str.replace(new RegExp('%'+i+'%','g'),tips[tipN][i]);if(window.createPopup&&IESelectBoxFix){var filt='filter:progid:DXImageTransform.Microsoft.Alpha(opacity=';str+='<iframe src="about:blank" style="position:absolute;left:0px;top:0px;height:expression('+myName+'.div.h());z-index:1;border:none;'+filt+'0)"></iframe><div style="position:absolute;left:0px;top:0px;z-index:2;'+filt+'100)">'+str+'</div>'}if(isDOM&&!isOp)div.sty.width='auto';div.write(str+(isIE&&!isOp&&!window.external?'<small><br/></small>':''));position(true)}};ToPt.show=function(tipN,par){with(this){if(!isDyn)return;clearTimeout(fadeTimer);parentObj=par;if(par)par.show(par.actTip,par.parentObj);if(!div)div=getLyr(myName+'Layer');if(!div)return;clearInterval(trackTimer);if(tipStick!=parseInt(tipStick))trackTimer=setInterval(myName+'.position()',50);var showStr='with('+myName+'){showTip=true;'+(actTip!=tipN?'replaceContent("'+tipN+'");':'')+'fade()}';if(showDelay&&!actTip)fadeTimer=setTimeout(showStr,showDelay);else eval(showStr)}};ToPt.newTip=function(tName){with(this){if(!tips[tName])tips[tName]=[];for(var i=1;i<arguments.length;i++)tips[tName][i-1]=arguments[i];show(tName);return}};ToPt.hide=function(){with(this){clearTimeout(fadeTimer);if(!isDyn||!actTip||!div)return;if(isNS4&&tipStick==0&&xPos<=mX&&mX<=xPos+div.w()&&yPos<=mY&&mY<=yPos+div.h())return;with(tips[actTip])if(parentObj)parentObj.hide();fadeTimer=setTimeout('with('+myName+'){showTip=false;fade()}',hideDelay);return}};ToPt.fade=function(){with(this){clearTimeout(fadeTimer);if(showTip){div.vis('visible');if(doFades){alpha+=fadeInSpeed;if(alpha>maxAlpha)alpha=maxAlpha;div.alpha(alpha);if(alpha<maxAlpha)fadeTimer=setTimeout(myName+'.fade()',75)}}else{if(doFades&&alpha>minAlpha){alpha-=fadeOutSpeed;if(alpha<minAlpha)alpha=minAlpha;div.alpha(alpha);fadeTimer=setTimeout(myName+'.fade()',75);return}div.vis('hidden');actTip='';clearInterval(trackTimer)}}};var tipOR=window.onresize,nsWinW=window.innerWidth,nsWinH=window.innerHeight;document.tipMM=document.onmousemove;if(isNS4)document.captureEvents(Event.MOUSEMOVE);document.onmousemove=function(evt){for(var t in TipObj.list)TipObj.list[t].track(evt);return document.tipMM?document.tipMM(evt):(isNS4?document.routeEvent(evt):true)};window.onresize=function(){if(tipOR)tipOR();if(isNS4&&(nsWinW!=innerWidth||nsWinH!=innerHeight))location.reload()};



// Welcome to Tipster! Before you start, make sure you've read and agree to the
// "Conditions of Use" in the HTML document below.


// This script is object orientated.
// It works by creating "tip objects", each of which corresponds to a DIV in the page below.
// Each object contains a 'template' used for formatting tips, and settings for that object.
// Here are some examples to get you started:


// First, create a new tip object, and pass it its own name so it can reference itself.
var docTips = new TipObj('docTips');
with (docTips)
{
 // Next, we set the appearance and style of the tips displayed by this tip object.
 // Each tip object must have a string called 'template' that contains some specially-formatted
 // HTML to write to its DIV. This example has two nested tables, a border and a background.
 // The special bits are the %2%, %3% and so on halfway through. These correspond to values we
 // set in the tips.tipName arrays later: %0% is the X value, %1% is Y, and %2% onwards are
 // whatever other info we have in there (width, text etc...). This example sets the width %2%
 // of the table, and inserts some content which is the text %3%.
 // You might want to put extra information in the tip arrays, and use %4%, %5% onwards in the
 // template for tip headers, footers, customisable colours etc... see the next tip object for
 // another example.

 template = '<table bgcolor="#FFFFFF" cellpadding="1" cellspacing="0" width="%2%" border="0">' +
  '<tr><td><table bgcolor="#FFCC00" cellpadding="3" cellspacing="0" width="100%" border="0">' +
  '<tr><td class="tipClass">%3%</td></tr></table></td></tr></table>';

 // Next, you can list one or more named tips to call later on in your page. This is useful if
 // you want to show the same tip several times in the page, or on several pages.
 //
 // We organise tips in arrays like so: tips.tipName = new Array(X, Y, width, text, ....);
 // The first two parameters, X and Y, are the distances of the tip from the mouse cursor position
 // if they're set as numbers. If they're strings ('in quotes'), the script calculates them as
 // expressions and ignores the mouse position. They are the only compulsory parameters.
 // You can also use the 'page' object included with this script for fancy positioning
 // effects. Functions include 'page.winW()' and 'page.winH()' to get the window area dimensions,
 // and 'page.scrollX()' and 'page.scrollY()' for the current scroll position, so you can align
 // your tips however you want... see the examples below.
 //
 // Alternatively, you can also create tips inline later in the page like so:
 // <tag onmouseover="tipObjectName.newTip('tipName', X, Y, ....and so on....)">
 // This automatically creates and shows a new tip (just give them random names).
 // Make sure you don't use HTML formatting inside HTML tag event handlers for your tip text.
 //
 // And if you don't want to do *that*, see below for an optional function that can convert
 // TITLE="..." attributes into tips automatically.


 // This 'mysite' tip will show 75px left of the cursor and 15px below. As you can see %2% is
 // a width of 150px, and %3% is a text string, according to our template above.
 tips.mysite = new Array(-75, 15, 150, 'Visit this for updates, help and more info');
 tips.welcome = new Array(5, 5, 100, 'Hope you like it...');
 tips.useful = new Array(5, 5, 150, 'This can add important context information to any link...');
 // This next tip uses a formula to position the tip 110 pixels from the right edge of the screen.
 tips.formulae = new Array('page.scrollX() + page.winW() - 110', -20, 100,
  'This tip is always on the right edge...');
 tips.format = new Array(5, 5, 150, 'That means <i>italics</i>...<br /><hr />...etc');


 // Finally, you can set some optional properties to customise the behavious of this object.
 //
 // How much of a delay do you want between pointing and action? Defaults are:
 //showDelay = 50;
 //hideDelay = 200;
 //
 // False will hide tips instantaneously. Fading only works under IE/Win and NS6+.
 //doFades = false;
 // You can change the minimum and maximum opacity percentages, defaults:
 //minAlpha = 0;
 //maxAlpha = 100;
 //
 // How fast the transparency changes (between 1 and 100), higher means faster fades.
 //fadeInSpeed = 20;
 //fadeOutSpeed = 20;
 //
 // Tip stickiness, from 0 to 1, defines how readily the tip follows the cursor. 1 means it
 // follows it perfectly (the default), 0 is a static tip, and decimals are 'floating' tips.
 //tipStick = 0.2;
 //
 // IE 5.5+ select box fix. This will enable tips to appear over <SELECT> elements in the page.
 //IESelectBoxFix = true;
}

// Later in the document, use this syntax to show tips from links or other HTML tags:
// <a href="file.html" onmouseover="tipObjName.show('tipName')" onmouseout="tipObjName.hide()">




// Here's a second demo tip object. Feel free to delete it if you're not using it!
// I've included a tip header here in this template, %3% is the header text and %4% is
// now the main text. As you can see you can basically format your tips any way you want.
// This tip also includes mouse event handlers to show a second-level tip, just like in
// the body of the page below, so you can nest tips within tips, and a 'tipStick' of 0 so
// it never follows the mouse.
var staticTip = new TipObj('staticTip');
with (staticTip)
{
 // I'm using tables here for legacy NS4 support, but feel free to use styled DIVs.
 template = '<table bgcolor="#000000" cellpadding="0" cellspacing="0" border="0" class="fade">' +
  '<tr><td><table cellpadding="3" cellspacing="1" border="0">' +
  '<tr><td bgcolor="#279ec4" height="18" nowrap>%3%</td></tr>' +
  '</table></td></tr></table>';

 // HIERARCHIAL TIPS: To call one tip object from within another tip object, make sure you
 // pass the a reference to the current object as the second parameter to the show() function.
 tips.service = new Array(5, 5, 100, '<a href="fib_repairs.html" class="white">FIBREGLASS REPAIR</a><BR><a href="spray_booth.html" class="white">OUR SPRAY BOOTH</a><br><span class="white">PAINTING:</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="paint_fg.html" class="white">FIBREGLASS</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="paint_alum.html" class="white">ALUMINUM</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="paint_wood.html" class="white">WOOD</a><br><a href="thrusters.html" class="white">THRUSTERS</a><br><a href="osmosis.html" class="white">OSMOSIS BLISTERING</a><br><a href="woodwork.html" class="white">WOOD WORK</a><br><a href="antifouling.html" class="white">ANTIFOULING</a><br><a href="opt_keels.html" class="white">OPTIMIZING KEELS</a><br><a href="fairing.html" class="white">FAIRING</a><br><a href="shipwright.html" class="white">SHIPWRIGHT</a><br><a href="installations.html" class="white">INSTALLATIONS</a><br><a href="stabilizers.html" class="white">STABILIZERS</a>');
 tips.paint = new Array(5, 5, 100, '<a href="paint_fg.html" class="white">FIBREGLASS</a><br><a href="paint_alum.html" class="white">ALUMINUM</a><br><a href="paint_wood.html" class="white">WOOD</a>');

 tipStick = 0;
}

// Here's the other tip object called by the one above, for hierarchial tips.
var nestTip = new TipObj('nestTip');
with (nestTip)
{
 template = '<table bgcolor="#000000" cellpadding="1" cellspacing="0" width="%2%" border="0">' +
  '<tr><td><table bgcolor="#009999" cellpadding="3" cellspacing="0" width="100%" border="0">' +
  '<tr><td class="tipClass">%3%</td></tr></table></td></tr></table>';

 tips.nest1 = new Array(10, 0, 90,
  '<a href="javascript:alert(\'A regular popup menu...\')">Relative Position</a>');

 // This tip is positioned via formulae based on its parent tip's position...
 tips.nest2 = new Array('staticTip.xPos + 95', 'staticTip.yPos + 50', 120,
  '<a href="javascript:alert(\'Nested tip 2\')">Absolutely positioned static tip...</a>');

 tipStick = 0;
}


// Here's one illustrating a decimal tipStick value so it floats along behind the cursor.
var stickyTip = new TipObj('stickyTip');
with (stickyTip)
{
 template = '<table bgcolor="#000000" cellpadding="1" cellspacing="0" width="%2%" border="0">' +
  '<tr><td><table bgcolor="#339966" cellpadding="4" cellspacing="0" width="100%" border="0">' +
  '<tr><td align="center" class="tipClass">%3%</td></tr></table></td></tr></table>';

 tips.floating = new Array(5, 5, 100, 'Floating tips can have extra effect!');

 tipStick = 0.2;
}

function js_window(url,wide,tall){
	window.open(url,'Anti', 'toolbar=no,status=no,width='+wide+',height='+tall)
}