/***********************************************
* Image w/ description tooltip- By Dynamic Web Coding (www.dyn-web.com)
* Copyright 2002-2007 by Sharon Paine
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

/* IMPORTANT: Put script after tooltip div or 
	 put tooltip div just before </BODY>. */

var dom = (document.getElementById) ? true : false;
var ns5 = (!document.all && dom || window.opera) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ie4 && !ie5 && !dom) ? true : false;

var origWidth, origHeight;

// 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= 300;
var offX= 20;	// how far from mouse to show tip
var offY= 12; 
var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
var tipFontSize= "90%";
// 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= "#000000";
var tipBgColor= "#eeeeee"; 
var tipBorderColor= "#b33642";
var tipBorderWidth= 2;
var tipBorderStyle= "outset";
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('','Orientation to Student Manager Menus, Names screen, how tables fit together, and why collection of data is critical.');
messages[1] = new Array('','Course creation and setup - while this webinar is not intended exclusively for Program Coordinators and Designers, it will certainly be of interest to anyone responsible for recording course information.');
messages[2] = new Array('','All-you-need-to-know about registrations, payments, transfers and refunds.  Track down every participant history and every penny collected without a moment of consternation.');
messages[3] = new Array('','Shows you how Student Manager modules can save you huge amounts of time and money.');
messages[4] = new Array('','Discover how this quiet little module helps you automate, provide timely information, and get your catalog out the door quick as a wink.');
messages[5] = new Array('','Whether you are announcing a new room location, dealing with weather-related changes, sending an instructor a class roster or marketing a new class, the email module can help improve communication with existing students and help you add new ones.');
messages[6] = new Array('','Fundamentals of good email communication, deliverability, email design, and wwww resources.  Last and not least, we discuss the three basic approaches to generating email blasts out of Student Manager.');
messages[7] = new Array('','Introduction to ACEweb: templates, user options, enrollment process, coupons, events, and calendar.<br /><br />Note:  This webinar is not a "how to" as much as it is a "yes, it can be done."');
messages[8] = new Array('','We discus what information you need to track, where best to record that information, and what preference settings might be most useful. We also cover adding new codes, editing existing codes, deleting unused codes, and how to gather the results of your efforts with the right report.');
messages[9] = new Array('','Designed specifically for program coordinators: we show you how the course screen can help you set pre-requisites, suggest follow-up courses, remind someone in the office to check on chairs, list the proper fees on the web and record the final course evaluations. We also cover the most powerful reports available to program coordinators.');
messages[10] = new Array('','Function keys begins with Quick Count Report and moves to Room Use, Instructor/Talent Search, and Payment Histories.  Then we share the power: showing you how to create your own Macro Keys.');
messages[11] = new Array('','Adding a Registration, deactivating courses, speed registration, mass registration, transferring registrations, Dashboard, and Hot Tips!');
messages[12] = new Array('','We discuss selecting the right names, using the name flag labels, printing marked labels, generating the labels, the importance of CASS certification, CASS import and export and tracking a mailing.');
messages[13] = new Array('','We discuss the web site structure and navigation, show you the best ways to get instant help, and discuss how easy it is to keep things updated.');
messages[14] = new Array('','We investigate: who you send your marketing to, what data to pull together, when you should ask questions, where to store the facts and figures, why it is important to gather information about your participants, and . . . and most importantly, how to make sense of it all.');
messages[15] = new Array('','Especially for the "Keeper of the Flame" or ACEware System Guru: we cover pack/reindex, backups, deactivating courses, code maintenance and cleanup, UtilityW, report maintenance, and archiving data.');
messages[16] = new Array('','We discuss Student Manager Data and reporting areas, general reporting help, finding the right report, Report Area Guide, running a report, report setup screen, and ACEware reporting tech help.');
messages[17] = new Array('','This session gets you into the mechanics of the report: how data is organized and how you use that to organize bands, deal with variables, and have the correct data showing where you want.  And, when all else fails, we show you how to export your unfinished creation, send them to ACEware for that finishing touch, and import them back in to your system with no one the wiser.');
messages[18] = new Array('','Learn the anatomy of a report, vocabulary, and data connections as well as the basic elements that make up the Report Writer took kit:  fields, functions, banding, design tools.');
messages[19] = new Array('','Reporting Aesthetics is all about looks!. Font, size, color and graphics positioned so that you and your data look marvelous.   Besides the "look", the size, shape and color of your data CAN help with readability and can help focus attention on the important stuff!');
messages[20] = new Array('','Now it gets serious as we slip in to those topics only explored by the passionate, the dedicated, the few true report designers:  Justdoits,  Justafters, special ACEware reporting functions, complex expressions and variables!');
messages[21] = new Array('','This first sessions begins with basic query theory. We also discuss creating, editing, copying, deleting, and best practices.');
messages[22] = new Array('','We are ready to move on to more advanced topics: bracketing elements, copying queries, editing, and re-creating queries.');
messages[23] = new Array('','The best moments of our cruise trip - break-out session information we hear, most interesting trends and developments, and of course, at least one story for the "do you remember the time" book.  This is a general exchange of continuing education information with some Student Manager tips included. So, whether you sailed with us, or missed the boat, feel free to join us.');
messages[24] = new Array('','We demonstrate the new goodies in registration, additional modules, administration and reporting. Last, we talk about how to do the actual update to get the new goodies.');
messages[25] = new Array('','Working harder (and working smarter) for you than ever, ACEweb and its new tools and features will increase the impact of your website.');
messages[26] = new Array('','Budget Builder and Pocket Ledger can help you avoid a financial frenzy by bringing calm and order to your fiscal endeavors.');
messages[27] = new Array('','Faculty Manager can help you accurately track instructor skills, availability, courses taught and a slew of other details.');
messages[28] = new Array('','Allow your instructors to access course information online, view/print rosters and attendance sheets, edit grades, and submit course proposols.');
messages[29] = new Array('','Entering data tips, editing registrations, grouping registrations, speed and mass registration, and transfers.');
messages[30] = new Array('','From the catalog screen to firms there are changes in Version B that will help you find, store, and retrieve data just a little bit better.');
messages[31] = new Array('','ACEware is pleased to host Walt Heeney from DMI Mail. An expert in bulk mail and owner of DMI Mail, Walt has over 20 years experience in helping his clients save money on their bulk mailings while meeting USPS regulations. He joins us live, via webinar to share his insights on the new regulations and offer his money saving suggestions.');
messages[32] = new Array('','All about the Pocket Ledger module: what it does, and how to use it to track course income/expenses and profit/loss.');
messages[33] = new Array('','Student Manager is a phenomenal conference tool. Use multiple fees, encourage early registration with early bird discounts, compare registrations to previous events, and handle breakout sessions with such aplomb that you will think Santa put an entire staff of conference elves in your stocking!');
messages[34] = new Array('','An informative webcast to be conducted by Daryl Clark, President of Internet Search Marketing Inc. and Director of Online Marketing for Gatlin Education Services a Division of Cengage Learning. The Gatlin website will have over 1,7 million visitors this year with 80% of the visitors coming from organic (free) search. Daryl will teach you successful techniques to make your website content more search engine friendly and provide you with links to free tools that will help you understand what search terms people are looking for in your market and how to take advantage of those trends. He will also answer questions about Internet Marketing Trends.');
messages[35] = new Array('','This webinar gives you a through overview of how to navigate in Student Manager, reviews basics of setting up courses, adding names, registrations and payments, and introduces you to the reporting system (with special coverage of HEI reports).');
messages[36] = new Array('','We talk about why it is important to collect information about your participants, how best to accomplish gathering information, and where additional statistics might be available. Then we talk about what works for organizations across the country, what is not working and how Student Manager can best help maximize the marketing budget you have available. ');
messages[37] = new Array('','Code cleanup, deactivating courses, report maintenance, and archiving - all the things that will make your Student Manager run slick as a whistle. Records cleanup is like preventive maintenance for your data: not only does it help the system to run a little more efficiently it also can prevent future time-consuming problems. Almost as important, data cleanup can help you identify areas where your staff might benefit from a few suggestions and training.');
messages[38] = new Array('','Hear about a case study of how one unit was able to “break free” of their campus registration system, and pick up some tools/ammunition to fight the Campus System Battle.');
messages[39] = new Array('','Dos and don\'ts of U.S. Postal Service Addressing Specifications - where to put the punctuation, when and how to abbreviate, and what line should contain what information. Doing it right pays off. Do it wrong and your mail may not be delivered, might not qualify for the National Change of Address or could fail to earn the automation discounts in bulk mailing.');
messages[40] = new Array('','Focus is on names and the best methods for collecting data related to past, present and potential registrants.  We start with name screen basics, learn to adjust preferences and permissions so you can insure consistent and valuable data, and finish with a brief discussion customer histories.');
messages[41] = new Array('','This webinar will introduce you to the Student DataCenter registration process for open enrollment classes. Beginning with a simple registration, you\'ll see just how easy and efficient entering registrations can be. We\'ll then explore available options, such as fee adjustments, additional charges, miscellaneous fee, group registrations, payor changes, etc.');
messages[42] = new Array('','Discover the flexibility of the Statistical Summary reports (for both Students and Registrations, and for Courses). Tingle all over as you find out that identifying your best students (or best performing course programs) is as easy as click 1-2-3!.');
messages[43] = new Array('','This webinar will show you the fundamentals of changing open enrollment registrations as well as how to contend with the money and fees attached to the registrations.');
messages[44] = new Array('','We\'ve learned a thing or two about how people make their website a collaborative part of their registration efforts and we\'d like to share. Some of our tips will be specifically for users of ACEweb, other suggestions will work even if you\'re not using our tremendously powerful module. (Please note the unbiased plug for ACEweb.) If you have an interest in making your website a working partner, this webinar is a must-see.');
messages[45] = new Array('','We\'re open to any and all Student Manage/ACEweb topics from the easiest (our favorite) to the most difficult. And, if you manage to stump the chump(s) there\'s always the glory of fame and fortune among your peers (sorry.. no cash prizes...).');
messages[46] = new Array('','Reports tips, tricks, shortcuts and time savers--this will be a fast paced, pedal to the metal ride through sneaky, tricky and creative report writing (please note: this webinar is geared toward the more experienced user).');
messages[47] = new Array('','This webinar is geared toward members of the registration team, program coordinators, and marketing staff. You\'ll come away with a clear understanding of the ease of use, potential, and money-saving opportunities in the optional Email module.');
messages[48] = new Array('','Codes can take the guesswork out of new course offerings, target interested participants and improve the return on your marketing investment. As the old saying goes, there\'s a lot of luck in preparation, and coding is an almost invisible preparation that can make all the difference.');
messages[49] = new Array('','Changes to the Dashboard, updates to Code Cleanup, bigger and better report functions, longer fields, custom greetings with DOEmail ...');
messages[50] = new Array('','Whether you\'re talking mach speed, warp speed, or super speed, nobody beats Student Manager when it comes to getting students in the system and in a course in a hurry. Keyboard shortcuts, Speed and Mass Registration are just a few of the tools that make our software one of the most popular in the business. We\'re chomping at the bit to share a how-to with everybody we know.');
messages[51] = new Array('','For Chief Administrators who may not have much direct contact with the software but would like to know what Student Manager and ACEweb can do for your organization.');
messages[52] = new Array('','Shows you how Student Manager can help you find the right customer, manage bids and proposals, budget for profit, easily handle registrations and finally reap the benefits by billing for your efforts. We\'ll even chat about reporting those amazing statistics to the proper authorities!');
messages[53] = new Array('','Student DataCenter is built on a Course/Class model where courses operate as a template for the classes that are created from them. Revisit the basics of open enrollment courses and classes to see if you\'re using the model to the best of its ability. Items covered will be tracking interest, listing on SDCweb, using multiple fees, coordinators, assigning class schedules, begin dates, etc.');
messages[54] = new Array('','Join us for a one-hour driving lesson. We\'ll review the rules of the database road and highlight a few safe and time saving shortcuts along the way. Follow the rules and you\'ll pull an abundant amount of accurate information from your system - break the rules and it might be a bumpy road.');
messages[55] = new Array('','How-to and theory are just fine, but sometimes you need to see the real thing, done from scratch, on information just as you\'re going work. So, we\'re going to collect our best examples and work through them right in front of your very eyes.');
messages[56] = new Array('','Developing, recording and administering certificate programs impacts almost all areas of Student Manager, so if you\'re working with certificate programs you\'ll want to set aside time for this meeting. ');
messages[57] = new Array('','We\'ll review our list of ten "opportunities for improvement"  (a.k.a. resolutions) in just under 60 minutes. The plan is to chat about everything from function keys to reporting. Stick with our list, change it up, or use it as a basis for your 2010 training plan. Either way it\'s a great approach to the new year. ');
messages[58] = new Array('','Put in the registrations faster, more accurately, and edit them even faster. We\'ll review alternative methods of entering registrations, review the importance of preferences and settings, cover data entry flow and sequence and show you some cool new tools to help you find people, and payments.');
messages[59] = new Array('','Join us for a webinar by Dan Belhassen from greatBIGnews. Dan is an (inter)national authority on how to make email marketing work for your program.');
messages[60] = new Array('','Chuck will share his favorite tidbits on reporting. He\'ll touch on a number of basics, some general rules and a few pieces of sophisticated trickery no report writer will want to miss.');
messages[61] = new Array('','Sharon Leisure from Wayne County Schools Career Center in Smithville, Ohio shares how Wayne County squeezes every possible bit of data in to and out of Student Manager.');
messages[62] = new Array('','Highlights of the 2010 Annual ACEware User\'s Conference.');
messages[63] = new Array('','In the first session, we\'ll start by defining functions and explaining what they can do. Then we\'ll tear them apart bit by bit to discuss what you need, how to know what you need, and where the artistry of functions comes in to play. In the second session we\'ll look at specific functions and show you exactly how they work in reports.');
messages[64] = new Array('','New features in Student Manager version 7.2.');



////////////////////  END OF CUSTOMIZATION AREA  ///////////////////

// preload images that are to appear in tooltip
// from arrays above
if (document.images) {
	var theImgs = new Array();
	for (var i=0; i<messages.length; i++) {
  	theImgs[i] = new Image();
		theImgs[i].src = messages[i][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 + '"><tr><td valign="top">';
var endStr = '</td></tr></table>';

////////////////////////////////////////////////////////////
//  initTip	- initialization for tooltip.
//		Global variables for tooltip. 
//		Set styles
//		Set up mousemove capture if tipFollowMouse set true.
////////////////////////////////////////////////////////////
var tooltip, tipcss;
function initTip() {
	if (nodyn) return;
	tooltip = (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
	tipcss = 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) {
		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) {
	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 (ie4||ie5||ns5) {
		var tip = startStr + messages[num][0] +  '<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) {
	standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
	mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
	mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.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) {
		standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body
		mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
		mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
	}
	// tooltip width and height
	var tpWd = (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
	var tpHt = (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
	// document area in view (subtract scrollbar width for ns)
	var winWd = (ns5)? window.innerWidth-20+window.pageXOffset: standardbody.clientWidth+standardbody.scrollLeft;
	var winHt = (ns5)? window.innerHeight-20+window.pageYOffset: standardbody.clientHeight+standardbody.scrollTop;
	// check mouse position against tip and window dimensions
	// and position the tooltip 
	if ((mouseX+offX+tpWd)>winWd) 
		tipcss.left = mouseX-(tpWd+offX)+"px";
	else tipcss.left = mouseX+offX+"px";
	if ((mouseY+offY+tpHt)>winHt) 
		tipcss.top = winHt-(tpHt+offY)+"px";
	else tipcss.top = mouseY+offY+"px";
	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}

function hideTip() {
	if (!tooltip) return;
	t2=setTimeout("tipcss.visibility='hidden'",100);
	tipOn = false;
}

document.write('<div id="tipDiv" style="position:absolute; visibility:hidden; z-index:100"></div>')

