var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;

// resize fix for ns4
var origWidth, origHeight;
if (ns4) {
	origWidth = window.innerWidth; origHeight = window.innerHeight;
	window.onresize = function() { if (window.innerWidth != origWidth || window.innerHeight != origHeight) history.go(0); }
}

// avoid error of passing event object in older browsers
if (nodyn) { event = "nope" }

///////////////////////  CUSTOMIZE HERE   ////////////////////
// settings for tooltip 
// Do you want tip to move when mouse moves over link?
var tipFollowMouse= true;	
// Be sure to set tipWidth wide enough for widest image
var tipWidth= 200;
var offX= 20;	// how far from mouse to show tip
var offY= -10; 
var tipFontFamily= "Arial, Helvetica, sans-serif";
var tipFontSize= "8pt";
// set default text color and background color for tooltip here
// individual tooltips can have their own (set in messages arrays)
// but don't have to
var tipFontColor= "#003399";//
var tipBgColor= "#CCE5FB"; 
var tipBorderColor= "#0E749A";//
var tipBorderWidth= 1;//
var tipBorderStyle= "solid";//
var tipPadding= 5;//

// tooltip content goes here (image, description, optional bgColor, optional textcolor)
var messages = new Array();
// multi-dimensional arrays containing: 
// image and text for tooltip
// optional: bgColor and color to be sent to tooltip
messages[0] = new Array('','Signing up is quick and easy! Your account will automatically created within a few minutes of signing up. Please consult your Welcome E-Mail after purchase for your account login information.','#CCE5FB','#000000');
messages[1] = new Array('','If for any reason during the first 30 days you are not completely satisfied with our services, we will cancel your account and refund your money. All fees paid for domain registrations are nonrefundable, without exception.','#CCE5FB','#000000');
messages[2] = new Array('','','#CCE5FB','#000000');
messages[3] = new Array('','eFastservers does not charge a setup fee for hosting.','#CCE5FB','#000000');
messages[4] = new Array('','The is the amount of data storage space used to host your website(s) and files in your account, usually measured in Megabytes (MB). 1,000 MB = \'s 1 GB.','#CCE5FB','#000000');
messages[5] = new Array('','Bandwidth is a measure of the amount of data that can be sent across a connection per unit of time. Bandwidth is normally measured in megabits per sec (Mbps); a megabit being one million bits. The amount of bandwidth your web site requires depends on the applications that will be running. Simple HTML Web pages do not require a large amount of bandwidth, but full-motion video requires a large amount of bandwidth.','#CCE5FB','#000000');
messages[6] = new Array('','Depending on the plan purchased, you may host this many additional domains on your account. You will need to host at least one domain when you signup, then you may create additional domains on your account at any time.','#CCE5FB','#000000');
messages[7] = new Array('','Your sites will enjoy unlimited hits, vists and pageviews.','#CCE5FB','#000000');
messages[8] = new Array('','A subdomain is a subdivision of a larger domain. E.G., "forums.yourdomain.com" is a subdomain of yourdomain.com.','#CCE5FB','#000000');
messages[9] = new Array('','Each of our hosting packages comes with pre-defined number of POP3 email accounts. You have the option to retrieve email directly from POP3 mailboxes on the mail server using an email program such as Outlook or Webmail. Your POP email accounts can be instantly created from your control panel.','#CCE5FB','#000000');
messages[10] = new Array('','','#CCE5FB','#000000');
messages[11] = new Array('','Your account supports SMTP, POP3 and IMAP via our Mail Servers','#CCE5FB','#000000');
messages[12] = new Array('','We offer 2 e-mail clients, Ubei & Squirrelmail, available from anywhere on the Internet. Please refer to you Welcome e-mail for more information on accessing webmail','#CCE5FB','#000000');
messages[13] = new Array('','All e-mail, attachements and files are scanned by our Anti-Virus Server prior to being delivered to your INBOX.','#CCE5FB','#000000');
messages[14] = new Array('','You can setup e-mail fowarding to forward all your e-mail to another account on your domain or to an e-mail account such as @yahoo.com.','#CCE5FB','#000000');
messages[15] = new Array('','E-mail from an aliased domain, set up on your account, could be forward to a physical mailbox on your primary domain.','#CCE5FB','#000000');
messages[16] = new Array('','Autoresponder\'s\ automatically respond to an email message sent to a predefined e-mail address in your account. This is useful for automatically sending out information via email, based on a user\'s\ emailed request.','#CCE5FB','#000000');
messages[17] = new Array('','If you have a high frequency of people whom mistype your email address, as these addresses (even though mistyped), will simply be bounced to your "catch-all" or "default" email account. The downside to using a "catch-all" is spam. This feature is OFF by default.','#CCE5FB','#000000');
messages[18] = new Array('','Boxtrapper (Challenge Response), protects your inbox from spam by forcing all people, not on your white list, to reply to a verifcation email before they can send you email.','#CCE5FB','#000000');
messages[19] = new Array('','We filter spam from known spam sources using sophisticated content filtering rules at the server level.','#CCE5FB','#000000');
messages[20] = new Array('','A mailing list is an e-mail address that can send mail to a distrubted list of members.','#CCE5FB','#000000');
messages[21] = new Array('','This is the number of members that can subsubscibe to a mailing list','#CCE5FB','#000000');
messages[22] = new Array('','Directadmin is a web-based management console that allows you to manage every aspect of your web site account. Features include Billing, Database Management, FTP, Statistics, the list is endless. For a live demo of the Directadmin control panel, please click on the DEMO link. This is only a very limited demo and does not full display the full richness of the real account.','#CCE5FB','#000000');
messages[23] = new Array('','Telnet is a disabed service on our servers due to its security. SSH is available if you need it. Please note, a signed document and proof of identity is required. See our support portal for more information.','#CCE5FB','#000000');
messages[24] = new Array('','Domains must be registered with a valid registrar and pointing to our nameservers before they can be parked. Parking a domain allows you to park a domain ontop of another domain that contains site contents.','#CCE5FB','#000000');
messages[25] = new Array('','Addon domains or sometimes referred to as domain aliases, allows you to point multiple domain names to a single web site. E.g., www.yourdomain.com could point to www.mydomain.com, etc. All domains must point and resolve to our DNS.','#CCE5FB','#000000');
messages[26] = new Array('','To upload files to your web site, you will need to use an FTP client to upload your files. You can do this with an FTP client such as CuteFTP or WSFTP Pro. Each website is automatically set up with an FTP account at the time of site creation. Depending on the number of accounts you are allowed, you can create additional FTP accounts for other users and grant them read only, or write only privileges.  If your FTP client supports secure file transfers, you can also transmit your data securely with our servers.','#CCE5FB','#000000');
messages[27] = new Array('','FTP Manager allows you to add, delete or create new FTP accounts.','#CCE5FB','#000000');
messages[28] = new Array('','Anonymous FTP allows anyone to FTP files to and from your web site.','#CCE5FB','#000000');
messages[29] = new Array('','File manager allows you to modify the contents of you webspace without having to do via FTP or SSH.','#CCE5FB','#000000');
messages[30] = new Array('','You can get a listing of all directories and the amount of disk space used for each directory.','#CCE5FB','#000000');
messages[31] = new Array('','This feature allows you to download a backup of your entire web site including any active databases setup on your account.','#CCE5FB','#000000');
messages[32] = new Array('','Using Web Protect, you can password protect any directory on your site.','#CCE5FB','#000000');
messages[33] = new Array('','Error pages are served to Internet users when any one of a variety of errors occurs, such as when a user enters an incorrect URL or is not authorized to access a specific directory on your web site. Companies often customize error pages to brand them with a specific corporate images and a link to their home page. You do not have to customize these pages but if you wish you may edit these error pages to suit your needs.','#CCE5FB','#000000');
messages[34] = new Array('','The subdomain manager allows you to manage the subdomain setup in your account.','#CCE5FB','#000000');
messages[35] = new Array('','Web Forwarding allows you to foward a web site to another web site. E.g., your domain is called domain.com and you also have a domain called mydomain.com. You may foward mydomain.com to domain.com so that when mydomain.com is typed in the browser, users are fowarded to domain.com.','#CCE5FB','#000000');
messages[36] = new Array('','View your Web FTP Statistics. This include statistics generated for AWStats and Analog.','#CCE5FB','#000000');
messages[37] = new Array('','Download your raw access logs to your own PC for viewing.','#CCE5FB','#000000');
messages[38] = new Array('','The access log manager allows you to archive your existing logs at the end of the month or choose to remove the previous months logs.','#CCE5FB','#000000');
messages[39] = new Array('','Choose to view your access logs online without having to download them to your own PC. Access logs reveal errors on your web site including information on what Internet users may be doing, good or bad.','#CCE5FB','#000000');
messages[40] = new Array('','Pick and choose from an array of installable CGI scripts from clocks and counters to guestbooks and chat scripts.','#CCE5FB','#000000');
messages[41] = new Array('','MIME types determine how specific files should be handled by a browser. Use the MIME editor to add / delete MIMIE types based on your specific needs.','#CCE5FB','#000000');
messages[42] = new Array('','Apache handlers determine how specific files should be handled by the server. Use the Apache Handler to add / delete file types based on your specific needs.','#CCE5FB','#000000');
messages[43] = new Array('','OpenPGP is a tool used for secure online communication. You can create keys that can be used to encrypt your online communications such as e-mail.','#CCE5FB','#000000');
messages[44] = new Array('','HotLink protection stops people from linking to images on your web site, from another web site, and stealing the bandwidth you paid for.','#CCE5FB','#000000');
messages[45] = new Array('','Use Index Manager to stop people from listing the files in your directories, from the Internet.','#CCE5FB','#000000');
messages[46] = new Array('','Block any range of ips you wish from accessing your web site. You may also block access to your web site using a fully qualified domain name in instances where mailicious and annoying users are abusing your site.','#CCE5FB','#000000');
messages[47] = new Array('','Our Control Panel Supports over 20 different languages that can be selected once logged in to your contol panel.','#CCE5FB','#000000');
messages[48] = new Array('','The Image Manager allows you to view and modify images from your control panel.','#CCE5FB','#000000');
messages[49] = new Array('','Prevents users from attempting to guess passwords to a restricted area on your web site.','#CCE5FB','#000000');
messages[50] = new Array('','InstallaTRON is our replacement for Fantastico and provides you the ability to quickly install dozens of the leading open source content management systems into your web space. For a list of applications currently available, click on the link listing.','#CCE5FB','#000000');
messages[51] = new Array('','MySQL is a powerful database that\'s\ very popular, especially with PHP users.','#CCE5FB','#000000');
messages[52] = new Array('','Sophisticated open-source Object-Relational DBMS supporting almost all SQL constructs, including subselects, transactions, and user-defined types and functions.','#CCE5FB','#000000');
messages[53] = new Array('','You get their own personal CGI-BIN (Directory), which allows you execute .pl and .cgi scripts. Upload all your Perl scripts to your CGI-BIN directory.','#CCE5FB','#000000');
messages[54] = new Array('','You can install/uninstall Microsoft FrontPage extensions from your control panel. Frontpage users should install the extensions before publishing.','#CCE5FB','#000000');
messages[55] = new Array('','Perl is an open source CGI scripting programming language supported on all our servers.','#CCE5FB','#000000');
messages[56] = new Array('','We provide full support for the latest PHP technologies. Zend Optimizer is also installed on all our servers for php scripts that require Zend technology.','#CCE5FB','#000000');
messages[57] = new Array('','We support a full line of different programming languages on all servers.','#CCE5FB','#000000');
messages[58] = new Array('','ImageMagick is fully supported. Convert, rotate and manipulate images via your application.','#CCE5FB','#000000');
messages[59] = new Array('','PhpMyAdmin is a powerful MySQL database editor already built into your control panel. Once you have created your MySQL database, you can edit your database from your control panel.','#CCE5FB','#000000');
messages[60] = new Array('','PhpPgAdmin is a powerful PostGreSQL database editor already built into your control panel. Once you have created your database, you can edit your database from your control panel.','#CCE5FB','#000000');
messages[61] = new Array('','Add the convenience and flexibility of embedding CGI capability into your Web pages. SSI includes allow you to modularize sections of your website to be reused instead of copied for every page.','#CCE5FB','#000000');
messages[62] = new Array('','Cron jobs allow you to automate repetitive tasks on the server that hosts your web site. Use the Cron Manager to setup tasks that will execute at a certain time of the day.','#CCE5FB','#000000');
messages[63] = new Array('','Shared SSL enables you to use our servers SSL Certificate to encrypt sensitive data on your web site such as a form that accepts credit card information.','#CCE5FB','#000000');
messages[64] = new Array('','Your Unix hosting account is Dreamweaver compatable. This means that you may publish directly to your web site using the publishing features in Dreamweaver MX.','#CCE5FB','#000000');
messages[65] = new Array('','ADDON: This feature is NOT included with this plan. If you wish to add this feature to your account at a later date, you may do so by logging in to your billing account and purchasing this feature as an addon item.','#CCE5FB','#000000');
messages[66] = new Array('','For the Developer, we include Ruby On Rails. Manage Ruby right from your control panel without the need to login using SSH. Includex Ruby + RubyGems + Rails + Mongrel libraries.','#CCE5FB','#000000');

////////////////////  END OF CUSTOMIZATION AREA  ///////////////////

// preload images that are to appear in tooltip
// from arrays above
if (document.images) {
	var theImgs = new Array();
	for (var h=0; h<messages.length; h++) {
  	theImgs[h] = new Image();
		theImgs[h].src = messages[h][0];
		
  }
}

// to layout image and text, 2-row table, image centered in top cell
// these go in var tip in doTooltip function
// startStr goes before image, midStr goes between image and text
var startStr = '<table width="' + tipWidth + '">';
var midStr = '<tr><td valign="top">';
var endStr = '</td></tr></table>';

////////////////////////////////////////////////////////////
//  initTip	- initialization for tooltip.
//		Global variables for tooltip. 
//		Set styles for all but ns4. 
//		Set up mousemove capture if tipFollowMouse set true.
////////////////////////////////////////////////////////////
var tooltip, tipcss;
function initTip() {
	if (nodyn) return;
	tooltip = (ns4)? document.tipDiv.document: (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
	tipcss = (ns4)? document.tipDiv: tooltip.style;
	if (ie4||ie5||ns5) {	// ns4 would lose all this on rewrites
		tipcss.width = tipWidth+"px";
		tipcss.fontFamily = tipFontFamily;
		tipcss.fontSize = tipFontSize;
		tipcss.color = tipFontColor;
		tipcss.backgroundColor = tipBgColor;
		tipcss.borderColor = tipBorderColor;
		tipcss.borderWidth = tipBorderWidth+"px";
		tipcss.padding = tipPadding+"px";
		tipcss.borderStyle = tipBorderStyle;
	}
	if (tooltip&&tipFollowMouse) {
		if (ns4) document.captureEvents(Event.MOUSEMOVE);
		document.onmousemove = trackMouse;
	}
}

window.onload = initTip;

/////////////////////////////////////////////////
//  doTooltip function
//			Assembles content for tooltip and writes 
//			it to tipDiv
/////////////////////////////////////////////////
var t1,t2;	// for setTimeouts
var tipOn = false;	// check if over tooltip link
function doTooltip(evt,num) {
	initTip();
	if (!tooltip) return;
	if (t1) clearTimeout(t1);	if (t2) clearTimeout(t2);
	tipOn = true;
	// set colors if included in messages array
	if (messages[num][2])	var curBgColor = messages[num][2];
	else curBgColor = tipBgColor;
	if (messages[num][3])	var curFontColor = messages[num][3];
	else curFontColor = tipFontColor;
	if (ns4) {
		var tip = '<table bgcolor="' + tipBorderColor + '" width="' + tipWidth + '" cellspacing="0" cellpadding="' + tipBorderWidth + '" border="0"><tr><td><table bgcolor="' + curBgColor + '" width="100%" cellspacing="0" cellpadding="' + tipPadding + '" border="0"><tr><td>'+ startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr + '</td></tr></table></td></tr></table>';
		tooltip.write(tip);
		tooltip.close();
	} else if (ie4||ie5||ns5) {
		var tip = startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr;
		tipcss.backgroundColor = curBgColor;
	 	tooltip.innerHTML = tip;
	}
	if (!tipFollowMouse) positionTip(evt);
	else t1=setTimeout("tipcss.visibility='visible'",100);
}

var mouseX, mouseY;
function trackMouse(evt) {
	mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
	mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
	if (tipOn) positionTip(evt);
}

/////////////////////////////////////////////////////////////
//  positionTip function
//		If tipFollowMouse set false, so trackMouse function
//		not being used, get position of mouseover event.
//		Calculations use mouseover event position, 
//		offset amounts and tooltip width to position
//		tooltip within window.
/////////////////////////////////////////////////////////////
function positionTip(evt) {
	if (!tipFollowMouse) {
		mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
		mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
	}
	// tooltip width and height
	var tpWd = (ns4)? tooltip.width: (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
	var tpHt = (ns4)? tooltip.height: (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
	// document area in view (subtract scrollbar width for ns)
	var winWd = (ns4||ns5)? window.innerWidth-20+window.pageXOffset: document.body.clientWidth+document.body.scrollLeft;
	var winHt = (ns4||ns5)? window.innerHeight-20+window.pageYOffset: document.body.clientHeight+document.body.scrollTop;
	// check mouse position against tip and window dimensions
	// and position the tooltip 
	if ((mouseX+offX+tpWd)>winWd) 
		tipcss.left = (ns4)? mouseX-(tpWd+offX): mouseX-(tpWd+offX)+"px";
	else tipcss.left = (ns4)? mouseX+offX: mouseX+offX+"px";
	if ((mouseY+offY+tpHt)>winHt) 
		tipcss.top = (ns4)? winHt-(tpHt+offY): winHt-(tpHt+offY)+"px";
	else tipcss.top = (ns4)? mouseY+offY: mouseY+offY+"px";
	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}

function hideTip() {
	if (!tooltip) return;
	t2=setTimeout("tipcss.visibility='hidden'",100);
	tipOn = false;
}


