﻿function popUp(URL) {day = new Date();id = day.getTime();eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=425,height=375,left = 665,top = 375');");}function openWindow(url, windowname, width, height, toolbar){        var sizestring = 'width=' + width + ',height=' + height;	SmallWin = window.open(url,windowname,'scrollbars,resizable,' + sizestring +',toolbar='+toolbar+',location=0,status=0,directories=0,menubar='+toolbar);	SmallWin.focus();}function newImage(arg) {	if (document.images) {		rslt = new Image();		rslt.src = arg;		return rslt;	}}function changeImagesArray(array) {	if (preloadFlag == true) {		var d = document; var img;		for (var i=0; i<array.length; i+=2) {			img = null; var n = array[i];			if (d.images) {img = d.images[n];}			if (!img && d.getElementById) {img = d.getElementById(n);}			if (img) {img.src = array[i+1];}		}	}}function changeImages() {	changeImagesArray(changeImages.arguments);}var preloadFlag = false;function preloadImages() {	if (document.images) {		pre_VideoOver = newImage('Video/VideoOver.jpg');		preloadFlag = true;	}}function toggleDisplay(target) {	if (document.getElementById){		var togglin = document.getElementById( target );		if(togglin.style.display == ""){			togglin.style.display = "none";		}else{			togglin.style.display = "";		}	}}// The following code is used to support the small popups that// give the full description of an event when the user move the// mouse over it.// Thanks to Klaus Knopper (www.knoppix.com) for this script.// It has been modified to work with the existing WebCalendar// architecture on 02/25/2005//// 03/05/2005 Prevent popup from going off screen by setting// maximum width, which is cnfigurable//// Bubblehelp infoboxes, (C) 2002 Klaus Knopper <infobox@knopper.net>// You can copy/modify and distribute this code under the conditions// of the GNU GENERAL PUBLIC LICENSE Version 2.//var ns4            // Are we using Netscape4?var ie4            // Are we using Internet Explorer Version 4?var ie5            // Are we using Internet Explorer Version 5 and up?var kon            // Are we using KDE Konqueror?var x,y,winW,winH  // Current help position and main window sizevar idiv=null      // Pointer to infodiv containervar px="px"        // position suffix with "px" in some casesvar popupW         // width of popupvar popupH         // height of popupvar xoffset = 8    // popup distance from cursor x coordinatevar yoffset = 12   // popup distance from cursor y coordinatevar followMe = 1   // allow popup to follow cursor...turn off for better performancevar maxwidth = 300 // maximum width of popup windowfunction nsfix(){setTimeout("window.onresize = rebrowse", 2000);}function rebrowse(){window.location.reload();}function infoinit(){  ns4=(document.layers)?true:false, ie4=(document.all)?true:false;  ie5=((ie4)&&((navigator.userAgent.indexOf('MSIE 5')>0)||(navigator.userAgent.indexOf('MSIE 6')>0)))?true:false;  kon=(navigator.userAgent.indexOf('konqueror')>0)?true:false;  x=0;y=0;winW=800;winH=600;  idiv=null;  if (followMe) {    document.onmousemove = mousemove;    if(ns4&&document.captureEvents) document.captureEvents(Event.MOUSEMOVE);  }  // Workaround for just another netscape bug: Fix browser confusion on resize  // obviously conqueror has a similar problem :-(  if(ns4||kon){ nsfix() }  if(ns4) { px=""; }}function hide(name){  idiv.visibility=ns4?"hide":"hidden";  idiv=null;}function gettip(name){return (document.layers&&document.layers[name])?document.layers[name]:(document.all&&document.all[name]&&document.all[name].style)?document.all[name].style:document[name]?document[name]:(document.getElementById(name)?document.getElementById(name).style:0);}function show(evt, name){  if(idiv) hide(name);  idiv=gettip(name);  if(idiv){   scrollX =0; scrollY=0;   winW=(window.innerWidth)? window.innerWidth+window.pageXOffset-16:document.body.offsetWidth-20;   winH=(window.innerHeight)?window.innerHeight+window.pageYOffset  :document.body.offsetHeight;   scrollX=(typeof window.pageXOffset == "number")? window.pageXOffset:(document.documentElement && document.documentElement.scrollLeft)?document.documentElement.scrollLeft:(document.body && document.body.scrollLeft)?document.body.scrollLeft:window.scrollX;   scrollY=(typeof window.pageYOffset == "number")? window.pageYOffset:(document.documentElement && document.documentElement.scrollTop)?document.documentElement.scrollTop:(document.body && document.body.scrollTop)?document.body.scrollTop:window.scrollY;   popupW = document.getElementById(name).offsetWidth;   popupH = document.getElementById(name).offsetHeight;      showtip(evt);  }}function showtip(e){  e = e? e: window.event;  if(idiv) {    if(e)   {      x=e.pageX?e.pageX:e.clientX?e.clientX + scrollX:0;       y=e.pageY?e.pageY:e.clientY?e.clientY + scrollY:0;    }    else {      x=0; y=0;    }    // MAke sure we don't go off screen    if ( popupW > maxwidth ) {       popupW = maxwidth;      idiv.width = maxwidth + px;    }      idiv.left=(((x + popupW + xoffset)>winW)?x - popupW - xoffset:x + xoffset)+px;    if ((popupH + yoffset)>winH) {      idiv.top= yoffset + px;    } else {      idiv.top=(((y + popupH + yoffset)>winH)?winH - popupH - yoffset:y + yoffset)+px;    }    idiv.visibility=ns4?"show":"visible";    }}function mousemove(e){  showtip(e);}// Initialize after loading the pagewindow.onload=infoinit;function changeem(f2){var URL = document.F2.eventType.options[document.F2.eventType.selectedIndex].value;popup = window.open(URL,"MenuPopup");}var nbsp = 160;		// non-breaking space charvar node_text = 3;	// DOM text node-typevar emptyString = /^\s*$/ ;var global_valfield;	// retain valfield for timer thread// --------------------------------------------//                  trim// Trim leading/trailing whitespace off string// --------------------------------------------function trim(str){  return str.replace(/^\s+|\s+$/g, '');}// --------------------------------------------//                  setfocus// Delayed focus setting to get around IE bug// --------------------------------------------function setFocusDelayed(){  global_valfield.focus();}function setfocus(valfield){  // save valfield in global variable so value retained when routine exits  global_valfield = valfield;  setTimeout( 'setFocusDelayed()', 100 );}// --------------------------------------------//                  msg// Display warn/error message in HTML element.// commonCheck routine must have previously been called// --------------------------------------------function msg(fld,     // id of element to display message in             msgtype, // class to give element ("warn" or "error")             message) // string to display{  // setting an empty string can give problems if later set to a   // non-empty string, so ensure a space present. (For Mozilla and Opera one could   // simply use a space, but IE demands something more, like a non-breaking space.)  var dispmessage;  if (emptyString.test(message))     dispmessage = String.fromCharCode(nbsp);      else      dispmessage = message;  var elem = document.getElementById(fld);  elem.firstChild.nodeValue = dispmessage;      elem.className = msgtype;   // set the CSS class to adjust appearance of message}// --------------------------------------------//            commonCheck// Common code for all validation routines to:// (a) check for older / less-equipped browsers// (b) check if empty fields are required// Returns true (validation passed), //         false (validation failed) or //         proceed (don't know yet)// --------------------------------------------var proceed = 2;  function commonCheck    (valfield,   // element to be validated                         infofield,  // id of element to receive info/error msg                         required)   // true if required{  if (!document.getElementById)     return true;  // not available on this browser - leave validation to the server  var elem = document.getElementById(infofield);  if (!elem.firstChild) return true;  // not available on this browser   if (elem.firstChild.nodeType != node_text) return true;  // infofield is wrong type of node    if (emptyString.test(valfield.value)) {    if (required) {      msg (infofield, "error", "<< Required");        setfocus(valfield);      return false;    }    else {      msg (infofield, "warn", "");   // OK      return true;      }  }  return proceed;}// -----------------------------------------//            commonCheck2// Common code for checkbox validation routines to// check for older / less-equipped browsers// Returns true (validation passed) or//         proceed (don't know yet)// -----------------------------------------function commonCheck2   (vfld,   // element to be validated                         ifld)   // id of element to receive info/error msg{  if (!document.getElementById)     return true;  // not available on this browser - leave validation to the server  var elem = document.getElementById(ifld);  if (!elem.firstChild)    return true;  // not available on this browser   if (elem.firstChild.nodeType != node_text)    return true;  // ifld is wrong type of node    msg (ifld, "warn", "");  // clear any previous error message  return proceed;}// -----------------------------------------//            validateCheckbox// Validate that the correct number of checkboxes has been checked.// Returns true if valid (and also if could not be executed because // of old browser)// -----------------------------------------function validateCheckbox  (vfld,   // checkboxes to be validated                            ifld,   // id of element to receive info/error msg                            nr,     // number of checkboxes to be checked. >=2                            cond)   // condition: -1 = less than or equal to nr                                    //             0 = equal to nr (default)                                    //             1 = greater than or equal to nr{  if (!nr || nr<2) {    alert('Programming error in validateCheckbox: nr<2');        // for nr=1 use radio buttons or validateConfirm    return true;  }  if (!cond) cond = 0;  var stat = commonCheck2(vfld, ifld);  if (stat != proceed) return stat;  // count how many boxes have been checked by the reader  var count = 0;  for (var j=0; j<vfld.length; j++)     if (vfld[j].checked) count++;  if (count==nr) return true;  if (count<nr && cond==-1) return true;  if (count>nr && cond==1)  return true;  // if we get here then the validation has failed  var suffix='';  if (count>1) suffix='es';  var errorMsg;  if (count<nr) errorMsg = 'Only ' + count + ' box' + suffix + ' checked: ' + nr + ' required';  if (count>nr) errorMsg = '' + count + ' boxes checked: maximum ' + nr + ' allowed';  if (count==0) errorMsg = 'No boxes checked: ' + nr + ' required';  msg (ifld, "error", errorMsg);  return false;}// -----------------------------------------//            validateConfirm // Usually one doesn't want to validate if 1 checkbox of a set has been// checked, because in this case one would use radio buttons instead.// But sometimes one wants a reader to check a single box to confirm that // he or she agrees to something. That is covered by this routine.//// Returns true if valid (and also if could not be executed because // of old browser)// -----------------------------------------function validateConfirm   (vfld,   // checkbox to be validated                            ifld)   // id of element to receive info/error msg{  var stat = commonCheck2(vfld, ifld);  if (stat != proceed) return stat;  if (vfld.checked) return true;  // if we get here then the validation has failed  var errorMsg = 'Please read the above message and confirm you agree to it';  msg (ifld, "error", errorMsg);  return false;}// --------------------------------------------//            validatePresent// Validate if something has been entered// Returns true if so // --------------------------------------------function validatePresent(valfield,   // element to be validated                         infofield ) // id of element to receive info/error msg{  var stat = commonCheck (valfield, infofield, true);  if (stat != proceed) return stat;  msg (infofield, "warn", "");    return true;}// --------------------------------------------//               validateEmail// Validate if e-mail address// Returns true if so (and also if could not be executed because of old browser)// --------------------------------------------function validateEmail  (valfield,   // element to be validated                         infofield,  // id of element to receive info/error msg                         required)   // true if required{  var stat = commonCheck (valfield, infofield, required);  if (stat != proceed) return stat;  var tfld = trim(valfield.value);  // value of field with whitespace trimmed off  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;  if (!email.test(tfld)) {    msg (infofield, "error", "ERROR: not a valid e-mail address");    setfocus(valfield);    return false;  }  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/  ;  if (!email2.test(tfld))     msg (infofield, "warn", "Unusual e-mail address - check if correct");  else    msg (infofield, "warn", "");  return true;}// --------------------------------------------//            validateTelnr// Validate telephone number// Returns true if so (and also if could not be executed because of old browser)// Permits spaces, hyphens, brackets and leading +// --------------------------------------------function validateTelnr  (valfield,   // element to be validated                         infofield,  // id of element to receive info/error msg                         required)   // true if required{  var stat = commonCheck (valfield, infofield, required);  if (stat != proceed) return stat;  var tfld = trim(valfield.value);  // value of field with whitespace trimmed off  var telnr = /^\+?[0-9 ()-]+[0-9]$/  ;  if (!telnr.test(tfld)) {    msg (infofield, "error", "ERROR: not a valid telephone number. Characters permitted are digits, space ()- and leading +");    setfocus(valfield);    return false;  }  var numdigits = 0;  for (var j=0; j<tfld.length; j++)    if (tfld.charAt(j)>='0' && tfld.charAt(j)<='9') numdigits++;  if (numdigits<6) {    msg (infofield, "error", "ERROR: " + numdigits + " digits - too short");    setfocus(valfield);    return false;  }  if (numdigits>14)    msg (infofield, "warn", numdigits + " digits - check if correct");  else {     if (numdigits<10)      msg (infofield, "warn", "Only " + numdigits + " digits - check if correct");    else      msg (infofield, "warn", "");  }  return true;}// --------------------------------------------//             validateAge// Validate person's age// Returns true if OK // --------------------------------------------function validateAge    (valfield,   // element to be validated                         infofield,  // id of element to receive info/error msg                         required)   // true if required{  var stat = commonCheck (valfield, infofield, required);  if (stat != proceed) return stat;  var tfld = trim(valfield.value);  var ageRE = /^[0-9]{1,3}$/  if (!ageRE.test(tfld)) {    msg (infofield, "error", "ERROR: not a valid age");    setfocus(valfield);    return false;  }  if (tfld>=200) {    msg (infofield, "error", "ERROR: not a valid age");    setfocus(valfield);    return false;  }  if (tfld>110) msg (infofield, "warn", "Older than 110: check correct");  else {    if (tfld<7) msg (infofield, "warn", "Bit young for this, aren't you?");    else        msg (infofield, "warn", "");  }  return true;}
