/*************************************************************************    
    This code is from Dynamic Web Coding at http://www.dyn-web.com/
    See Terms of Use at http://www.dyn-web.com/bus/terms.html
    regarding conditions under which you may use this code.
    This notice must be retained in the code as is!
*************************************************************************/
var dw_event = {
  
  add: function(obj, etype, fp, cap) {
    cap = cap || false;
    if (obj.addEventListener) obj.addEventListener(etype, fp, cap);
    else if (obj.attachEvent) obj.attachEvent("on" + etype, fp);
  }, 

  remove: function(obj, etype, fp, cap) {
    cap = cap || false;
    if (obj.removeEventListener) obj.removeEventListener(etype, fp, cap);
    else if (obj.detachEvent) obj.detachEvent("on" + etype, fp);
  }, 

  DOMit: function(e) { 
    e = e? e: window.event;
    e.tgt = e.srcElement? e.srcElement: e.target;
    
    if (!e.preventDefault) e.preventDefault = function () { return false; }
    if (!e.stopPropagation) e.stopPropagation = function () { if (window.event) window.event.cancelBubble = true; }
        
    return e;
  }
}

var viewport = {
  getWinWidth: function () {
    this.width = 0;
    if (window.innerWidth) this.width = window.innerWidth - 18;
    else if (document.documentElement && document.documentElement.clientWidth) 
  		this.width = document.documentElement.clientWidth;
    else if (document.body && document.body.clientWidth) 
  		this.width = document.body.clientWidth;
  },
  
  getWinHeight: function () {
    this.height = 0;
    if (window.innerHeight) this.height = window.innerHeight - 18;
  	else if (document.documentElement && document.documentElement.clientHeight) 
  		this.height = document.documentElement.clientHeight;
  	else if (document.body && document.body.clientHeight) 
  		this.height = document.body.clientHeight;
  },
  
  getScrollX: function () {
    this.scrollX = 0;
  	if (typeof window.pageXOffset == "number") this.scrollX = window.pageXOffset;
  	else if (document.documentElement && document.documentElement.scrollLeft)
  		this.scrollX = document.documentElement.scrollLeft;
  	else if (document.body && document.body.scrollLeft) 
  		this.scrollX = document.body.scrollLeft; 
  	else if (window.scrollX) this.scrollX = window.scrollX;
  },
  
  getScrollY: function () {
    this.scrollY = 0;    
    if (typeof window.pageYOffset == "number") this.scrollY = window.pageYOffset;
    else if (document.documentElement && document.documentElement.scrollTop)
  		this.scrollY = document.documentElement.scrollTop;
  	else if (document.body && document.body.scrollTop) 
  		this.scrollY = document.body.scrollTop; 
  	else if (window.scrollY) this.scrollY = window.scrollY;
  },
  
  getAll: function () {
    this.getWinWidth(); this.getWinHeight();
    this.getScrollX();  this.getScrollY();
  }
}

var Tooltip = {
    followMouse: true,
    offX: 8,
    offY: 12,
    tipID: "tipDiv",
    showDelay: 100,
    hideDelay: 200,
    
    ready:false, timer:null, tip:null, 
  
    init: function() {  
        if ( document.createElement && document.body && typeof document.body.appendChild != "undefined" ) {
            if ( !document.getElementById(this.tipID) ) {
                var el = document.createElement("DIV");
                el.id = this.tipID; document.body.appendChild(el);
            }
            this.ready = true;
        }
    },
    
    show: function(e, msg) {
        if (this.timer) { clearTimeout(this.timer);	this.timer = 0; }
        this.tip = document.getElementById( this.tipID );
        if (this.followMouse) // set up mousemove 
            dw_event.add( document, "mousemove", this.trackMouse, true );
        this.writeTip("");  // for mac ie
        this.writeTip(msg);
        viewport.getAll();
        this.positionTip(e);
        this.timer = setTimeout("Tooltip.toggleVis('" + this.tipID + "', 'visible')", this.showDelay);
    },
    
    writeTip: function(msg) {
        if ( this.tip && typeof this.tip.innerHTML != "undefined" ) this.tip.innerHTML = msg;
    },
    
    positionTip: function(e) {
        if ( this.tip && this.tip.style ) {
            // put e.pageX/Y first! (for Safari)
            var x = e.pageX? e.pageX: e.clientX + viewport.scrollX;
            var y = e.pageY? e.pageY: e.clientY + viewport.scrollY;
    
            if ( x + this.tip.offsetWidth + this.offX > viewport.width + viewport.scrollX ) {
                x = x - this.tip.offsetWidth - this.offX;
                if ( x < 0 ) x = 0;
            } else x = x + this.offX;
        
            if ( y + this.tip.offsetHeight + this.offY > viewport.height + viewport.scrollY ) {
                y = y - this.tip.offsetHeight - this.offY;
                if ( y < viewport.scrollY ) y = viewport.height + viewport.scrollY - this.tip.offsetHeight;
            } else y = y + this.offY;
            
            this.tip.style.left = x + "px"; this.tip.style.top = y + "px";
        }
    },
    
    hide: function() {
        if (this.timer) { clearTimeout(this.timer);	this.timer = 0; }
        this.timer = setTimeout("Tooltip.toggleVis('" + this.tipID + "', 'hidden')", this.hideDelay);
        if (this.followMouse) // release mousemove
            dw_event.remove( document, "mousemove", this.trackMouse, true );
        this.tip = null; 
    },

    toggleVis: function(id, vis) { // to check for el, prevent (rare) errors
        var el = document.getElementById(id);
        if (el) el.style.visibility = vis;
    },
    
    trackMouse: function(e) {
    	e = dw_event.DOMit(e);
     	Tooltip.positionTip(e);
    }
}

// adjust horizontal and vertical offsets here
// (distance from mouseover event which activates tooltip)
Tooltip.offX = 4;  
Tooltip.offY = 4;
Tooltip.followMouse = false;  // must be turned off for hover-tip

/////////////// tooltip content variables
var msgNoHassle = '<div style="width:342px;"><img src="http://www.westmarine.com/images/ProductDisplay/NoHassleLarge.gif" align="left" style="margin-right:10px;"><b>No Hassle Guarantee</b><br> If you are ever dissatisfied with your purchase, simply return it. We will replace the item, or issue company credit. <a href="http://www.westmarine.com/webapp/wcs/stores/servlet/DisplayPageView?storeId=10001&langId=-1&catalogId=10001&page=Policies&section=care#01" target="_blank">View Details </a></div>';

var msgPriceMatch = '<div style="padding-left:10px; width:342px;"><b>We Won&#8217;t Be Beat &#8211; Low Price Guarantee</b><br><br>Our Low Price Guarantee assures that you are always getting a competitive price. If you find a price lower than ours on an identical, in-stock item, just let us know. Shop with confidence at West Marine.<br><br><b>Step 1:</b> Call us! 1-800-BOATING (262-8464)<br><br><b>Step 2:</b> Provide a print out or web address of the advertisement to share with us<br><br>It&#39;s that easy&#33; &nbsp;<a href="http://www.westmarine.com/webapp/wcs/stores/servlet/DisplayPageView?storeId=10001&langId=-1&catalogId=10001&page=Policies&section=care#02" target="_blank">Click here for complete details</a></div>';

var msgFreeShipping = '<div style="width:520px;padding:0 8px;"><p style="margin:4px 0px;line-height:18px;"><span style="color:#0072BC;font:14pt Helvetica,Arial,Sans-Serif;">Shipping Options</span></p><p style="font:10pt Arial,Helvetica,Sans-Serif;margin:8px 2px;"><strong>Flat Rate Shipping<br /></strong>$4.95 flat rate shipping applies to shipments within the U.S. only; not valid to International destinations. Special orders, oversized items, hazardous items and   truck carrier shipping will incur an additional shipping charge shown at checkout. Offer ends 11:59PM PT, Thursday, December 24th, 2009.</p><table width="519" border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td width="307"><table width="100%" border="0" cellpadding="2" cellspacing="0" style="border:#ccc solid 1px;font:9pt Arial,Helvetica,Sans-Serif;margin-bottom:5px;margin-top:5px;"><tr><td bgcolor="#CCCCCC"><strong>U.S. Domestic Orders</strong></td></tr><tr><td> Free Buy Online - Ship to Store (details below)</td></tr><tr><td>$4.95 Flat Rate Ground<br />(Now through Dec. 24th only!)</td></tr><tr><td> $19.95 2-Day</td></tr><tr><td> $29.95 Next Day</td></tr><tr><td> $39.95 Next Day AM (by phone only)<b>*</b></td></tr><tr><td> $49.95 Saturday Delivery (by phone only)<b>*</b></td></tr></table></td><td width="20">&nbsp;</td><td width="242"><table width="100%" border="0" cellpadding="2" cellspacing="0" style="border:#ccc solid 1px;font:9pt Arial,Helvetica,Sans-Serif;margin-bottom:5px;margin-top:5px;"><tr><td bgcolor="#CCCCCC"><strong>Alaska or Hawaii</strong></td></tr><tr><td> $19.95 Economy Air</td></tr><tr><td> $29.95 2-Day</td></tr><tr><td> $39.95 Next Day</td></tr></table><a style=" text-decoration:none;font:9pt Arial,Helvetica,Sans-Serif;color:#084788;" href="http://www.westmarine.com/webapp/wcs/stores/servlet/DisplayPageView?storeId=10001&langId=-1&catalogId=10001&page=CustomerService4&section=care" target="_blank"><b>U.S. Territory, International and <br />shipping schedules &gt;&gt;</b></a></td></tr></table><span style="font:9pt Arial,Helvetica,Sans-Serif;"><strong>*</strong> Call 1-800-BOATING for Next Day AM and Saturday Delivery.</span><p style="font:9pt Arial,Helvetica,Sans-Serif;margin:7px 0px; 5px 0px;"><strong>Buy Online - Ship to Store</strong><br>Have your order shipped to a store near you! When selecting your shipping options, simply click the "Buy Online - Ship to Store" button and choose your preferred West Marine store location. Shipping takes 8-10 days and is FREE! If you need it sooner, you will also have the option to expedite for an additional fee. Canada and Turkey stores are not available for Ship to Store.</p></div>';

var msgInStock = '<div style="padding-left:10px; width:200px;">Available for immediate shipment.</div>';

var msgInStockLimitedAvail = '<div style="padding-left:10px; width:200px;">Availability is limited to stock on hand in our distribution centers. First come, first served.</div>';

var msgShipsInDays = '<div style="padding-left:10px; width:200px;">We will ship this out to you within 5 to 8 days. Please allow 9 to 12 days for delivery to your shipping destination.</div>';

var msgOutOfStock = '<div style="padding-left:10px; width:200px;">Sorry, this item is no longer available and we are not accepting orders. Please search our site for other items.</div>';

var msgOnTheWay = '<div style="padding-left:10px; width:200px;">Order this Hot Seller now&#8211; We&#8217;ll send you an email as soon as it ships. Or call 1-800-BOATING for more details.</div>';

var msgStoreOnly = '<div style="padding-left:10px; width:200px;">This item is only available in certain West Marine stores. It may be available at your local store. Check our <a href="http://www.westmarine.com/webapp/wcs/stores/servlet/DisplayPageView?storeId=10001&langId=-1&catalogId=10001&page=StoreLocator&section=stores" target="_blank">Store Locator</a> and call your local store to check availability of this item.</div>';

var msgEGiftCard = '<div style="padding-left:10px; width:300px;">Great news&#33; We&#8217;ve already saved all your eGift Card details.<br><br>To complete your order, simply verify your billing address and click the &#34Continue&#34 button on the right side of the page.</div>';
//////////////

var msgStoreOnly = '<div style="padding-left:10px; width:200px;">This item is only available in certain West Marine stores. It may be available at your local store. Check our <a href="http://www.westmarine.com/webapp/wcs/stores/servlet/DisplayPageView?storeId=10001&langId=-1&catalogId=10001&page=StoreLocator&section=stores" target="_blank">Store Locator</a> and call your local store to check availability of this item.</div>';

var msgEGiftCard = '<div style="padding-left:10px; width:300px;">Great news&#33; We&#8217;ve already saved all your eGift Card details.<br><br>To complete your order, simply verify your billing address and click the &#34Continue&#34 button on the right side of the page.</div>';
//////////////

var msgEGiftCardReadySend = '<div style="padding-left:10px; width:300px;">eGift Cards are emailed after the order is processed usually the same business day. Weekend orders are processed in the next business day.</div>';

function doTooltip(e, msg) {
  if ( typeof Tooltip == "undefined" || !Tooltip.ready ) return;
  Tooltip.clearTimer();
  var tip = document.getElementById? document.getElementById(Tooltip.tipID): null;
  if ( tip && tip.onmouseout == null ) {
      tip.onmouseout = Tooltip.tipOutCheck;
      tip.onmouseover = Tooltip.clearTimer;
  }
  Tooltip.show(e, msg);
}

function hideTip() {
  if ( typeof Tooltip == "undefined" || !Tooltip.ready ) return;
  Tooltip.timerId = setTimeout("Tooltip.hide()", 300);
}

Tooltip.tipOutCheck = function(e) {
  e = dw_event.DOMit(e);
  // is element moused into contained by tooltip?
  var toEl = e.relatedTarget? e.relatedTarget: e.toElement;
  if ( this != toEl && !contained(toEl, this) ) Tooltip.hide();
}

// returns true of oNode is contained by oCont (container)
function contained(oNode, oCont) {
  if (!oNode) return; // in case alt-tab away while hovering (prevent error)
  while ( oNode = oNode.parentNode ) if ( oNode == oCont ) return true;
  return false;
}

Tooltip.timerId = 0;
Tooltip.clearTimer = function() {
  if (Tooltip.timerId) { clearTimeout(Tooltip.timerId); Tooltip.timerId = 0; }
}

Tooltip.unHookHover = function () {
    var tip = document.getElementById? document.getElementById(Tooltip.tipID): null;
    if (tip) {
        tip.onmouseover = null; 
        tip.onmouseout = null;
        tip = null;
    }
}

dw_event.add(window, "unload", Tooltip.unHookHover, true);

window.onload = function() {Tooltip.init()}


