	// 	get query param info
	// 		-- if so split into array of name=value pairs
	//		-- "expired=1" ... put up signin expired message
	//		-- "pgtype=_ip&pgid=__" ... redirect user to this page by passing this query string to signin_ok.html
	var gfError = false;
	var gfExpired = false;
	var strPageType = '';
	var idPage = -1;
	var fTypedPassword = false;
	var tNow = new Date();
	var msecNow = tNow.getTime();
	var strUserName = '';
	var strPageName = gstrSiteName;
	if (gnUnderConstruction != 0) {
		strPageName += ' &middot; Under Construction';
	}
	if (location.search) {	
		var strQ = location.search;
		strQ = strQ.substring(1,strQ.length);
		var aPairs = strQ.split("&"); 
		for (var i = 0; i < aPairs.length; i++) {
			var aP 			= aPairs[i].split('=');
			var strPName 	= aP[0].toLowerCase();
			var strPValue 	= aP[1];
			if ((strPName == 'expired') && (strPValue == '1')) { gfExpired = true; }
			else if (strPName == 'pgtype')  { strPageType = strPValue; }
			else if (strPName == 'pgid') 	{ idPage = strPValue; }
			else if (strPName == 'pip') 	{ idPage = strPValue; strPageType = 'pip'; }
			else if (strPName == 'gip') 	{ idPage = strPValue; strPageType = 'gip'; }
			else if (strPName == 'rip') 	{ idPage = strPValue; strPageType = 'rip'; }
			else if (strPName == 'lip') 	{ idPage = strPValue; strPageType = 'lip'; }
			else if (strPName == 'u')		{ strUserName = strPValue; }
		}
	}
	function savePrivate() {
		gfPublic = document.frmsignin.PUBLIC[0].checked;
		var tYear = new Date();
		var msecYear = tYear.getTime() + msecOneYear;
		tYear.setTime(msecYear);
		SetCookie ('public',gfPublic,tYear,null,null,false);
	}
	function toggleWarnPrivate () {
		dm = getDOM('privatewarning',1);
		if (document.frmsignin.PUBLIC[0].checked) {
			dm.display = 'none';
			document.frmsignin.autocomplete = 'off';
			document.location.reload();
		} else {
			dm.display = 'block';
			document.frmsignin.autocomplete = 'on';
		};
	}
	function toggleExplanation() {
		dm = getDOM('aboutsecurity',1);
		if (dm.display == 'block') {
			dm.display = 'none';
		} else {
			dm.display = 'block';
		};
	}
	function drawExtContact() {
		var str = '';
		//str += '<div class="page_sectionhead_narrow">';
			//str += '<table cellspacing="0" cellpadding="0" class="page_sectionhead_table_narrow"><tr><td class="page_sectionhead_text">';
			//str += 'Contact';
			//str += '</td></tr></table>';
		//str += '</div>';
		str += '<div id="contactInfo">';
			str += '<div class="rip_head">'+gstrSchoolName+'</div>';
			str += '<div class="rip_text">'+gstrSchoolAddress+'</div>';
			if (gstrSchoolPublicSite) {
				str += '<div class="rip_text">';
					str += '<a class="rip_text" href="javascript:redirect(gstrSchoolPublicSitePath)">'+gstrSchoolPublicSite+'</a>';
				str += '</div>';
			}
		str += '</div>';
		document.writeln(str);
	}
	function drawSignInNotice() {
		if (gstrSignInNotice) {
			var str = '';
			str += getSubHeadWithRightHTML('Please Note','',4,'page','');
			str += '<div id="sysnote" class="widecontentarea" style="display:block">';
				str += '<div class="rip_text_center_main">';
					str += '<span id="sysnotetext" class="AccentUrgentRGB">'+gstrSignInNotice+'</span>';
				str += '</div>';
			str += '</div>';
			document.writeln(str);
		}
	}
	var gfTimerDone = false;
	function checkSignIn(frm) {
		if (gfTimerDone) {
			return true;
		}
		var fReturn = true;
		var strPass = '';
		eval('strPass = frm.PASSWORD'+msecNow+'.value;');
		if (!frm.NAME.value) {
			alert ("Please enter your Sign-In Name before signing in.");
			fReturn = false;
		} 
		else if (!strPass) {
			alert ("Please enter your Password before signing in.");
			fReturn = false;
		}
		else if (document.frmsignin.PUBLIC[0].checked) {
			fReturn = confirm("Public sessions expire after 5 minutes of inactivity."); 
		}
		if (fReturn) {
			installScrollUp();
			installSubmit();
		}
		return false;
	}
	function setSignInFocus() {
		var ob = getDOM('ext_signin',1);
		if (ob.height != '0px') {
			document.frmsignin.NAME.focus();
			document.frmsignin.NAME.select();
		}
	}
	function drawExtNavbar() {
		gfTimerDone = false;
		var str = '';
		str += '<div id="navbar">';
			var strX = 'onmouseup=\"setSignInFocus();\"';
			var fDisplay = getMenuState('ext_signin',true);
			var strDisplay = getMenuDisplay(fDisplay);
			if (!fDisplay) {
				strDisplay = 'display:block;overflow:hidden;height:0px;width:0px;';
			}
			str += getMenuToggleHeaderHTML('ext_signin_menu','ext_signin','Sign In', fDisplay, strX);
			str += '<div id="ext_signin" style="'+strDisplay+'">';
				str += '<div class="nav_menubox" >';
					var strAutoComplete = "off";
					if (!gfPublic) {
						strAutoComplete = "on";
					}
					str += '<form name="frmsignin" id="frmsignin" method="POST" action="" autocomplete="'+strAutoComplete+'" enctype="multipart/form-data" onSubmit="return checkSignIn(this)">';
					// HIDDEN FIELDS FOR PAGE REDIRECT INFO COMING IN FROM EXTERNAL LINK
					str += '<input type="hidden" name="PGTYPE" value="'+strPageType+'">';
					str += '<input type="hidden" name="PGID" value="'+idPage+'">';
					// HIDDEN FIELD PASSWORD FIELD NAME SUFFIX: used to defeat password managers
					str += '<input type="hidden" name="PASSNAME" value="'+msecNow+'">';
					str += '<input type="hidden" name="PGID" value="'+idPage+'">';
					str += '<div class="nav_commands">';
						// EXPIRED SESSION NOTICE
						if (gfExpired) {
							str += '<div class="rip_text_main">';
								str += '<span class="AccentUrgentRGB">Sorry, your session has expired. Please sign in again.</span>';
							str += '</div>';
						}
						// COOKIES REQUIRED NOTICE
						if (!navigator.cookieEnabled) {
							str += '<div class="rip_text_main">';
								str += '<span class="AccentUrgentRGB">Your browser must accept \"cookies\" to use this site.</span>';
							str += '</div>';
						}
						// UNDER CONSTRUCTION NOTICE
						if (gnUnderConstruction != 0) {
							str += '<div class="rip_text_main">';
								str += '<span class="AccentUrgentRGB">Restricted: ' + getUnderConstructionNotice() + ' Only</span>';
							str += '</div>';
						}
	
						str += '<div class="rip_head_tight"><img src="bits/Blank.gif"> Sign-In Name</div>';
						str += '<img src="bits/Blank.gif"> <input type="text" name="NAME" value="'+strUserName+'" size="10" maxlength="30" class="nav_editbox">';
						str += '<div class="rip_head_tight"><img src="bits/Blank.gif"> Password</div>';
						str += '<img src="bits/Blank.gif"> <input type="password" name="PASSWORD'+msecNow+'" size="10" maxlength="30" class="nav_editbox">';
						str += '<div class="nav_signin_tip">';
							str += '<a href="javascript:gotoLostPassword()">...forgot your password?</a>';
						str += '</div>';
	
					str += '</div>';
					str += '<div class="nav_commands">';
						var strPublicChecked = ' checked ';
						var strPrivateChecked = '';
						if (!gfPublic) {
							strPublicChecked = '';
							strPrivateChecked = ' checked ';
						}
						str += '<img src="bits/Blank.gif"> <input type="radio" name="PUBLIC" '+strPublicChecked+' value="1" onclick="savePrivate();toggleWarnPrivate();"> I\'m in a public place<br>';
						str += '<img src="bits/Blank.gif"> <input type="radio" name="PUBLIC" '+strPrivateChecked+' value="0" onclick="savePrivate();toggleWarnPrivate();"> I\'m in a private place<br>';
						str += '<div id="privatewarning" class="rip_text_main" style="display:none;">';
							str += '<span class="AccentUrgentRGB">Warning: By selecting this option, you confirm that this computer complies with your organization\'s security policy.</span>';
						str += '</div>';
						str += '<div class="nav_signin_tip">';
							str += '<a href="javascript:toggleExplanation()">...want more explanation?</a>';
						str += '</div>';
						str += '<div id="aboutsecurity" class="rip_text_main" style="display:none;">';
							str += 'Sessions in public places expire automatically if the server does not send or receive any information for 5 minutes.';
						str += '</div>';
						str += '<div class="rip_text_main">';
							str += '<img src="bits/Blank.gif"><input type="Submit" name="SUBMIT" value="Sign In" class="dlgbutton">';
						str += '</div>';
					str += '</div>';
					str += '</form>';
					str += '<div id="nav_signin_opts" class="nav_commands" style="border-top: 1px solid white; padding-top: 6px;padding-bottom: 2px;">';
						str += getSubMenuCommandHTML('gotoEmailAccountInfo()','Get Your Sign-In Info', 'MailBlack.gif');
						str += getSubMenuCommandHTML('gotoLostPassword()','Reset Your Password', 'PasswordBlack.gif');
						str += getSubMenuCommandHTML('redirect(getMailToValue(gstrReturnEmail,gstrSiteName))','Contact Site Admin...', 'FeedbackBlack.gif');
					str += '</div>';
				str += '</div>';
			str += '</div>';
		str += '</div>';
		document.writeln(str);
	}
	function drawExtRestrictions() {
		var str = '';
		//str += '<div class="page_sectionhead_narrow">';
			//str += '<table cellspacing="0" cellpadding="0" class="page_sectionhead_table_narrow"><tr><td class="page_sectionhead_text">';
			//str += 'Restrictions';
			//str += '</td></tr></table>';
		//str += '</div>';
		str += '<div id="restrictions">';
			str += '<div class="rip_text_main">'+gstrRestrictions+'</div>';
			str += '<div class="rip_head">Supported Browsers</div>';
			str += '<div class="rip_text">'+gstrCompatibility+'</div>';
			str += '<div class="rip_text_main">'+gstrConstructionNotice+'</div>';
			str += '<div class="rip_text_main">'+gstrSSLNotice+'</div>';
		str += '</div>';
		document.writeln(str);
	}
	function drawExtBrands() {
		var str = '';
		//str += '<div class="page_sectionhead_narrow">';
			//str += '<table cellspacing="0" cellpadding="0" class="page_sectionhead_table_narrow"><tr><td class="page_sectionhead_text">';
			//str += 'Acknowledgements';
			//str += '</td></tr></table>';
		//str += '</div>';
		str += '<div id="acknowledgements">';
			str += '<div class="rip_head">Translations Powered By</div>';
			str += '<div class="rip_text"><img src="bits/google_small.png" border="none"> (beta)</div>';
		str += '</div>';
		document.writeln(str);
	}
	function installSubmit() {
		gSubmit = setInterval('doSubmit()', 500);
	}
	function doSubmit() {
		gfTimerDone = true;
		clearInterval(gSubmit);
		document.frmsignin.action = gCGIPathSecure + "site_logon.cgi";
		document.frmsignin.submit();
	}
	function installScrollUp() {
		gScroller = setInterval('scrollUp()', 10);
	}
	function installScrollDown() {
		gScroller = setInterval('scrollDown()', 10);
	}
	function scrollUp () {
		doScroll(125,25,-5,75);
	}
	function scrollDown () {
		doScroll(75,25,5,125);
	}
	function doScroll (n1,n2,n3,n4) {
		var d1 = getDOM('rip_leftcol',1);
		var d2 = getDOM('rip_centercol',1);
		var d3 = getDOM('rip_rightcol',1);
		var d4 = getDOM('powercol',1);
		var d5 = getDOM('page_head',1);
		if (!d1.top) {
			d1.toppixels = n1;
			d2.toppixels = n1;
			d3.toppixels = n1-n2;
			d4.toppixels = n1-n2;
			d5.toppixels = n1-n2;
		}
		d1.toppixels = d1.toppixels + n3;
		d2.toppixels = d2.toppixels + n3;
		d3.toppixels = d3.toppixels + n3;
		d4.toppixels = d4.toppixels + n3;
		d5.toppixels = d5.toppixels + n3;
		d1.top = d1.toppixels+'px';
		d2.top = d2.toppixels+'px';
		d3.top = d3.toppixels+'px';
		d4.top = d4.toppixels+'px';
		d5.top = d5.toppixels+'px';
		if (d1.toppixels == n4) {
			clearInterval(gScroller);
		}
	}


