 
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();
  }
  
};/*************************************************************************
    dw_event.js (version date Feb 2004)
        
    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;
  }
  
};/*************************************************************************
  This code is from Dynamic Web Coding at dyn-web.com
  Copyright 2002-5 by Sharon Paine 
  See Terms of Use at 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!
*************************************************************************/

/*
  dw_rolltip.js   version date: Feb 2005  
  requires dw_event.js and dw_viewport.js
  algorithm for time-based animation from youngpup.net
*/

var RollTip = {
    followMouse: true,
    overlaySelects: true,  // iframe shim for select lists (ie win)    
    offX: 12,
    offY: 12,
    ID: "rolltipDiv",
    // duration of clipping animation
    showAni: 400,
    hideAni: 200,

    ovTimer: 0, // for overlaySelects    
    ready:false, timer:null, tip:null, shim:null, supportsOverlay:false,
  
    init: function() {
        // op7.5(?) can do the clip now
        var ua = navigator.userAgent; // only because opera.com contacted me
        var i = ua.indexOf("Opera");  // otherwise I don't do this sort of browser detection!
        var opok = ( i == -1 || parseFloat( ua.slice(i + 6) ) > 7.5 )? true: false;
        if ( document.createElement && document.body && 
            typeof document.body.appendChild != "undefined" && opok ) {
        var el = document.createElement("DIV");
        el.id = this.ID; document.body.appendChild(el);
		this.showMult = el.offsetWidth/this.showAni/this.showAni;	
        this.hideMult = el.offsetWidth/this.hideAni/this.hideAni;	                
        el.style.clip = "rect(0, 0, 0, 0)";
        el.style.visibility = "visible";
        this.supportsOverlay = this.checkOverlaySupport();        
        this.ready = true;
        }
    },

    reveal: function(msg, e, s_bgcolor, s_width, s_justify) {
        if (this.timer) { clearTimeout(this.timer);	this.timer = 0; }
        if ( this.overlaySelects && this.supportsOverlay ) {
            if (this.ovTimer) { clearTimeout(this.ovTimer); this.ovTimer = 0; }
            this.ovTimer = setTimeout("RollTip.toggleOverlay(" + 1 + ")", 10);
        }
        this.tip = document.getElementById( this.ID );
        this.writeTip(""); // for mac ie 
        this.writeTip(msg);
        viewport.getAll();
        this.w = this.tip.offsetWidth; this.h = this.tip.offsetHeight;
        this.startTime = (new Date()).getTime();
        this.positionTip(e);

       	// Allow for additional formatting
		if (this.tip) {	
			if (s_bgcolor)
				this.tip.style.backgroundColor = s_bgcolor;
			if (s_width)
				this.tip.style.width = s_width;
			if (s_justify)
				this.tip.style.textAlign = s_justify;
		}	

        if (this.followMouse) // set up mousemove 
            dw_event.add( document, "mousemove", this.trackMouse, true );
        
        this.timer = setInterval("RollTip.rollOut()", 10);
    },
  
    rollOut: function() {
        var elapsed = (new Date()).getTime() - this.startTime;
        if (elapsed < this.showAni) {
            var cv = this.w - Math.round( Math.pow(this.showAni - elapsed, 2) * this.showMult );
            this.clipTo(0, cv, this.h, 0);
        } else {
            this.clipTo(0, this.w, this.h, 0);
            clearInterval(this.timer);
        }
    },
  
    conceal: function() {
        if (this.timer) { clearTimeout(this.timer);	this.timer = 0; }
        if ( this.overlaySelects && this.supportsOverlay ) {        
            if (this.ovTimer) { clearTimeout(this.ovTimer); this.ovTimer = 0; }
            this.ovTimer = setTimeout("RollTip.toggleOverlay(" + 0 + ")", this.hideAni );
        }
        this.startTime = (new Date()).getTime();
        if (this.followMouse) // release mousemove
            dw_event.remove( document, "mousemove", this.trackMouse, true );
        this.timer = setInterval("RollTip.rollUp()", 10);
    },
  
    rollUp: function() {
        var elapsed = (new Date()).getTime() - this.startTime;
        if ( elapsed < this.hideAni ) {
            var cv = Math.round( Math.pow(this.hideAni - elapsed, 2) * this.hideMult );
            this.clipTo(0, cv, this.h, 0);
        } else {
            this.clipTo(0, 0, this.h, 0);
            clearInterval(this.timer);
            this.tip = null;
        }  
    },
  
    writeTip: function(msg) {
        if ( this.tip && typeof this.tip.innerHTML != "undefined" ) this.tip.innerHTML = msg;
    },
  
    clipTo: function(top, rt, btm, lft) {
       	if (this.tip) this.tip.style.clip = "rect("+top+"px, "+rt+"px, "+btm+"px, "+lft+"px)";
        if ( this.shim ) this.shim.style.clip = "rect("+top+"px, "+rt+"px, "+btm+"px, "+lft+"px)";
    },
  
    positionTip: function(e) {
        // 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; // no good with roll-out if layer appears over link
        } 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";
        
        // position shim too        
        if ( this.overlaySelects && this.supportsOverlay && this.shim ) {
            this.shim.style.left = this.tip.style.left;
            this.shim.style.top = this.tip.style.top;
        }
    },
    
    trackMouse: function(e) {
    	e = dw_event.DOMit(e);
     	RollTip.positionTip(e);
    },
    
    // check need for and support of iframe shim
    checkOverlaySupport: function() {
        if ( typeof document.body != "undefined" && 
            typeof document.body.insertAdjacentHTML != "undefined" && 
            !window.opera && navigator.appVersion.indexOf("MSIE 5.0") == -1 &&
            navigator.userAgent.indexOf("Windows") != -1 
            )
            return true;
        else return false;
    }, 
    
    toggleOverlay: function(bVis) {
        if ( this.overlaySelects && this.supportsOverlay ) { 
            if ( !document.getElementById('tipShim') ) 
                document.body.insertAdjacentHTML("beforeEnd", '<iframe id="tipShim" src="about:blank" style="position:absolute; left:0; top:0; z-index:500; visibility:hidden" scrolling="no" frameborder="0"></iframe>');
            this.shim = document.getElementById('tipShim');
            if (this.shim) {
                switch (bVis) {
                    case 1 :
                        this.shim.style.left = this.tip.style.left;
                        this.shim.style.top = this.tip.style.top;
                        this.shim.style.width = this.tip.offsetWidth + "px";
                        this.shim.style.height = this.tip.offsetHeight + "px";
                        this.shim.style.visibility = "visible";
                    break;
                    case 0 :
                        this.shim.style.visibility = "hidden";
                        this.shim = null;
                    break;
                }
            }
        }
    }
};function showRollTip(msg, e, s_bgcolor, s_width, s_justify) {
    if ( typeof RollTip == "undefined" || !RollTip.ready ) return;
    RollTip.reveal(msg, e, s_bgcolor, s_width, s_justify);
}

function hideRollTip() {
    if ( typeof RollTip == "undefined" || !RollTip.ready ) return;
    RollTip.conceal();
}

var PageStatus = 
"<b>Page Status</b><br>" +  
"Active pages are available in the navigation when scheduling permits. Inactive pages will not show in the navigation regardless of its scheduling..<br><br>";

var StartDate = 
"<b>Scheduled Start Date</b><br>" +  
"Select the date you would like the page to become visible to the website navigation.<br><br>";

var EndDate = 
"<b>Scheduled End Date</b><br>" +  
"Select the date you would like the page to become invisible to the website navigation.<br><br>";

var FileName = 
"<b>File Name</b><br>" +  
"Create a unique file name to write this content too.  Use a keyword phrase that best describes the pages content.<br><br>";

var AllowDelete = 
"<b>Allow Delete</b><br>" +  
"Selecting 'NO' will prevent a user from accidentally deleting the page from the content list.<br><br>";

var PageName = 
"<b>Page Name</b><br>" +  
"The page name is the text displayed in the navigation.<br><br>";

var PageTitle = 
"<b>Page Title</b><br>" +  
"The page title is the text displayed as the heading of the content.<br><br>";

var ShowNav = 
"<b>Show In Navigation</b><br>" +  
"Selecting 'NO' will prevent this page from displaying in the site's navigation.<br><br>";

var AltLink = 
"<b>Alternate Link</b><br>" +  
"If the page has a link other than isn't file name the navigation will open a window to that location.<br><br>";

var SubTitle = 
"<b>Subtitle</b><br>" +  
"The subtitle text will display beneath the page title text and above the page content.<br><br>";

var MetaTitle = 
"<b>Meta Title</b><br>" +  
"This is a title you give your page within the meta tags so that when a person sees a link to your page from the search engine it has a title to go with it. Keywords should be used in this title because the search engine will use the words in the title to help it index your page.<br><br>";

var MetaKeywords = 
"<b>Meta Keywords</b><br>" +  
"These are an important part of meta tags. These are words that you enter into your meta tags that describe your page so that when someone goes to a search engine and types in one or more of those words your page will be added to the list of pages they are given.<br><br>";

var MetaDesc = 
"<b>Meta Description</b><br>" +  
"The meta description tag describes your site's content, giving search engines' spiders an accurate summary filled with multiple keywords.<br><br>";

var MetaOptimizedKeywords = 
"<b>Keywords Optimized For</b><br>" +  
"Using this field, we check your page's content to determine an SEO score.<br><br>";

var SEOScore = 
"<b>SEO Score</b><br>" +  
"The SEO score of your page is based upon searching for the optimized keyword in 8 areas of the page. 0-4 needs work; 5-6 is good; 7-8 is great.<br><br>";

var RecalcShipping = 
"<b>Recalculate Shipping and Tax</b><br>" +  
"Click update total to recalculate the shipping and tax totals.  Shipping is calculated by zip code, state,and country.  Tax is only applied to shipping addresses in California.<br><br>";

var CalcPromo = 
"<b>Promotion Code</b><br>" +  
"Promotions are only valid for the product(s) specified in the promotion description.  Promotion Code Invalid message occurs when there are no eligible products in the cart or when an invalid code has been entered.<br><br>";

var EmailDescription = 
"<b>Description</b><br>" +  
"<br>This is the description of the box that will distinguish one email from another.<br>";

var EmailSendDays = 
"<b>Days after order</b><br>" +  
"<br>Enter the number of days after the order has been placed to send the email.<br>";

var EmailSubject = 
"<b>Subject</b><br>" +  
"<br>Shows in the subject area of the recipients email.<br>";

var EmailFrom = 
"<b>From Address</b><br>" +  
"<br>Shows in the from address area of the recipients email.<br>";

var EmailActive = 
"<b>Active</b><br>" +  
"Check the box to make the email active. Active emails we be sent when the required number of days have been met after orders have been placed.<br><br>";

var BackorderShortMsg = 
"<b>Backorder Short Message</b><br>" +  
"<br>Shows in the order receipt to tell the buyer that the particular item has been placed on backorder.<br>";

var BackorderEmailMsg = 
"<b>Backorder Email Text</b><br>" +  
"<br>This is the editable text of the email that is sent when the 'Send backorder email' button is pressed on the order items page.<br>";

var CategoriesSite = 
"<b>Site</b><br>" +  
"<br>Select the site to manage categories.<br>";

var CategoriesActions = 
"<b>Actions</b><br>" +  
"<br>Highlight a category from the list below by left mouse button click on the item.  Perform any of the actions represented by the buttons at right on the highlighted item.<br>";

var CategoriesTree = 
"<b>Categories</b><br>" +  
"<br>Items can be selected by left mouse button click on the category.  Using the checkbox located left of a 2nd level category assigns that category to the primary navigation on the public site.  To change the name of any item, double left mouse button click that item's name and enter the new name.<br>";

var RankingCategories = 
"<b>Categories</b><br>" +  
"<br>Items can be selected by left mouse button click on the category.  Category rankings will appear in the grid to the right.<br>";

var RankingProducts = 
"<b>Category Products</b><br>" +  
"<br>Product ranking can be reordered by holding the left mouse button down on the item for which you would like to change the rank and dragging it to the position you would like to change it to.<br>";


