// JavaScript Documentfunction MM_reloadPage(init) {  //reloads the window if Nav4 resizedfunction MM_reloadPage(init) {  //reloads the window if Nav4 resized  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();}MM_reloadPage(true);// initialize lists so all dropdown menus have assigned mouseover/mouseout actions// courtesy of Tristan Macefunction initlists () {	if (document.all&&document.getElementById) {		navRoot = document.getElementById("navbar");		for (i=0; i<navRoot.childNodes.length; i++) {			node = navRoot.childNodes[i];			if (node.nodeName=="LI") {				node.onmouseover=function() {					this.className+=" over";				}				node.onmouseout=function() {					this.className=this.className.replace(" over", "");				}			}		}	}}// set up off/on button imagesfunction initbutton() {	if (document.images) {		subscribeOn = new Image;		subscribeOff = new Image;		subscribeOn.src = "images/stjbuttons3_subsover.jpg";		subscribeOff.src = "images/stjbuttons3_subs.jpg";		scheduleOn = new Image;		scheduleOff = new Image;		scheduleOn.src = "images/stjbuttons3_over.jpg";		scheduleOff.src = "images/stjbuttons3.jpg";	}	else {		subscribeOn = "";		subscribeOff = "";		document.subButton = "";		scheduleOn = "";		scheduleOff = "";		document.schedButton = "";	}}// functions to enable dropdown windows (modified suckerfish method)/* uses method described by http://carroll.org.uk/sandbox/suckerfish/bones2.html */sfHover = function() {	var sfEls = document.getElementById("navbar").getElementsByTagName("LI");		for (var i=0; i<sfEls.length; i++) {		sfEls[i].onmouseover=function() {				this.className += (this.className.length>0? " ": "") + "sfhover";		}				sfEls[i].onmouseout=function() {				this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"), "");		}		}}mcAccessible = function() {	var mcEls = document.getElementById("navbar").getElementsByTagName("A");	for (var i=0; i<mcEls.length; i++) {		mcEls[i].onfocus=function() {			this.className+=(this.className.length>0? " ": "") + "sffocus"; //a:focus			this.parentNode.className+=(this.parentNode.className.length>0? " ": "") + "sfhover"; //li < a:focus			if(this.parentNode.parentNode.parentNode.nodeName == "LI") {				this.parentNode.parentNode.parentNode.className+=(this.parentNode.parentNode.parentNode.className.length>0? " ": "") + "sfhover"; //li < ul < li < a:focus				if(this.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "LI") {					this.parentNode.parentNode.parentNode.parentNode.parentNode.className+=(this.parentNode.parentNode.parentNode.parentNode.parentNode.className.length>0? " ": "") + "sfhover"; //li < ul < li < ul < li < a:focus				}			}		}		mcEls[i].onblur=function() {			this.className=this.className.replace(new RegExp("( ?|^)sffocus\\b"), "");			this.parentNode.className=this.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"), "");			if(this.parentNode.parentNode.parentNode.nodeName == "LI") {				this.parentNode.parentNode.parentNode.className=this.parentNode.parentNode.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"), "");				if(this.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "LI") {					this.parentNode.parentNode.parentNode.parentNode.parentNode.className=this.parentNode.parentNode.parentNode.parentNode.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"), "");				}			}		}	}}// only ie needs the sfHover script. all need the accessibility script...// and initialize the email button// thanks http://www.brothercake.com/site/resources/scripts/onload/if(window.addEventListener) {  // gecko, safari, konqueror and standard		window.addEventListener('load', mcAccessible, false);		window.addEventListener('load', initbutton, false);}else if(document.addEventListener) {  // opera 7	document.addEventListener('load', mcAccessible, false); 	document.addEventListener('load', initbutton, false); }else if(window.attachEvent) { // win/ie	window.attachEvent('onload', sfHover);	window.attachEvent('onload', mcAccessible);	window.attachEvent('onload', initbutton);} else { // mac/ie5	if(typeof window.onload == 'function') {		var existing = onload;		window.onload = function() {			existing();			sfHover();			mcAccessible();			initbutton();}	} else {		window.onload = function() {			sfHover();			mcAccessible();			initbutton();		}	}}// show photo album function showphotos(album) {	var albumurl = album.options[album.selectedIndex].value;	if (albumurl != "") {		newwindow(albumurl,'photoalbum','width=900, height=600,resizable=1, scrollbars=1, statusbar=0');	}}// open a new windowfunction newwindow(windowurl, windowname, windowparams) {	var nwindow = window.open(windowurl, windowname, windowparams);}// set up navigation to archive pagesfunction jumpPage(newLoc) {	newPage = newLoc.options[newLoc.selectedIndex].value;	if (newPage != "") {		window.location = newPage;	}}function MM_preloadImages() { //v3.0  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}}function openEventWindow(){window.open("", "events", "width=380,height=420,toolbar=0,status=0,scrollbars=1,location=0,menubar=1,resizable=1");}function showEventsMessage(){window.status = "Events ";}function hideEventsMessage(){window.status = "";}function showProfileMessage(){window.status = "View Member Profile";}function hideProfileMessage(){window.status = "";}// form validation code from Apple// emailfunction checkWholeForm(theForm) {    var why = "";    why += checkEmail(theForm.email.value);    why += checkPhone(theForm.phone.value);    why += checkPassword(theForm.password.value);    why += checkUsername(theForm.username.value);    why += isEmpty(theForm.notempty.value);    why += isDifferent(theForm.different.value);    for (i=0, n=theForm.radios.length; i<n; i++) {        if (theForm.radios[i].checked) {            var checkvalue = theForm.radios[i].value;            break;        }     }    why += checkRadio(checkvalue);    why += checkDropdown(theForm.choose.selectedIndex);    if (why != "") {       alert(why);       return false;    }return true;}function checkPartForm (theForm) {	var why = "";    why += checkEmail(theForm.parishioner.value); //should be .email.     if (why != "") {       alert(why);       return false;    }return true;}/* original version	function checkEmail (strng) {var error="";if (strng == "") {   error = "You didn't enter an email address.\n";}    var emailFilter=/^.+@.+\..{2,3}$/;    if (!(emailFilter.test(strng))) {        error = "Please enter a valid email address.\n";    }    else {//test email for illegal characters       var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/         if (strng.match(illegalChars)) {          error = "The email address contains illegal characters.\n";       }    }return error;    }*///new versionfunction checkSender(theform) {	return checkEmail(theform.sender.value);}function checkEmail (strng) {	var okay=false;	if ((strng == "") || (strng == "Enter your email address here.")) {	   alert("Please enter an email address.");	}	else {		var emailFilter=/^.+@.+\..{2,3}$/;		if (!(emailFilter.test(strng))) { 		   alert("Please enter a valid email address.");		}		else {	//test email for illegal characters		   var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/			if (strng.match(illegalChars)) {			  alert("The email address contains illegal characters.");		   }		   else {			   okay = true;		   }		}	}	return okay;    }function checkReg(theForm) {    var why = "";    if (!checkEmail(theForm.Email.value)) {    	return false;    }    if ( ((theForm.Mother_phone.value == "") || (checkPhone(theForm.Mother_phone.value) != "")) &&    	 ((theForm.Mother_cell.value == "") || (checkPhone(theForm.Mother_cell.value) != "")) &&    	 ((theForm.Father_phone.value == "") || (checkPhone(theForm.Father_phone.value) != "")) &&    	 ((theForm.Father_cell.value == "") || (checkPhone(theForm.Father_cell.value) != "")) ) {    	why += "Please enter a valid phone number.\n";    }    if (theForm.c1_name.value != "") {    	why += checkRegRadio(theForm,'c1_class','first');    }    if (theForm.c2_name.value != "") {    	    	why += checkRegRadio(theForm,'c2_class','second');    }    if (theForm.c3_name.value != "") {    	why += checkRegRadio(theForm,'c3_class','third');    }    if (theForm.c4_name.value != "") {    	why += checkRegRadio(theForm,'c4_class','fourth');    }    if (why != "") {       alert(why);       return false;    }	return true;}function checkRegRadio(theForm,radioset,whichchild) {	var error = "Please choose a class time for your " + whichchild + " child.\n";		var radarray = theForm[radioset];	for (var i=0; i < radarray.length; i++) {  		if (radarray[i].checked) {      		error = "";      	}   	}    	return error;}// phone number - strip out delimiters and check for 10 digitsfunction checkPhone (strng) {var error = "";if (strng == "") {   error = "Please enter a phone number.\n";}var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters    if (isNaN(parseInt(stripped))) {       error = "The phone number contains illegal characters.";      }    if (!(stripped.length == 10)) {	error = "The phone number is the wrong length. Please include the area code.\n";    } return error;}// password - between 6-8 chars, uppercase, lowercase, and numeralfunction checkPassword (strng) {var error = "";if (strng == "") {   error = "You didn't enter a password.\n";}    var illegalChars = /[\W_]/; // allow only letters and numbers        if ((strng.length < 6) || (strng.length > 8)) {       error = "The password is the wrong length.\n";    }    else if (illegalChars.test(strng)) {      error = "The password contains illegal characters.\n";    }     else if (!((strng.search(/(a-z)+/)) && (strng.search(/(A-Z)+/)) && (strng.search(/(0-9)+/)))) {       error = "The password must contain at least one uppercase letter, one lowercase letter, and one numeral.\n";    }  return error;    }    // username - 4-10 chars, uc, lc, and underscore only.function checkUsername (strng) {var error = "";if (strng == "") {   error = "You didn't enter a username.\n";}    var illegalChars = /\W/; // allow letters, numbers, and underscores    if ((strng.length < 4) || (strng.length > 10)) {       error = "The username is the wrong length.\n";    }    else if (illegalChars.test(strng)) {    error = "The username contains illegal characters.\n";    } return error;}       // non-empty textboxfunction isEmpty(strng) {var error = "";  if (strng.length == 0) {     error = "The mandatory text area has not been filled in.\n"  }return error;	  }// was textbox alteredfunction isDifferent(strng) {var error = "";   if (strng != "Can\'t touch this!") {     error = "You altered the inviolate text area.\n";  }return error;}// exactly one radio button is chosenfunction checkRadio(checkvalue) {var error = "";   if (!(checkvalue)) {       error = "Please check a radio button.\n";    }return error;}// valid selector from dropdown listfunction checkDropdown(choice) {var error = "";    if (choice == 0) {    error = "You didn't choose an option from the drop-down list.\n";    }    return error;}    // toggle visibility on faq list itemsfunction togglefaqs(faq_id) {	if (document.getElementById(faq_id)) {		if (document.getElementById(faq_id).style.display == 'block') {				document.getElementById(faq_id).style.display = 'none';		}		else {				document.getElementById(faq_id).style.display = 'block';		}	}}// ajax functionsvar xmlHttp;//******** town chosen, display schools dropdown ***********function signin(theform) { 		xmlHttp=GetXmlHttpObject();			if (xmlHttp==null) {		 alert ("Browser does not support HTTP Request"); 		return; 	}	// check the username/password	var url = 'ajax_checkbidder.php?town='+townname;	url += '&sid=' + Math.random(); 		// add a random number to prevent server from using  a cached file		// when we have the requested schools, update the dropdown menu	xmlHttp.onreadystatechange = showschool;	xmlHttp.open("GET",url,true);	xmlHttp.send(null);}function showschool() {		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 		document.getElementById("specifyschool").innerHTML=xmlHttp.responseText;		setopacity("specifyschool",100); 	} }//********** sign in ******************// parameters username,passwordvar xmlReq = null;function signin(theform) {	var file="ajax_checkpw.php";	var str = getFormValues(theform); //second argument was "validate"	alert ('in signin:  file=' + file + ', str=' + str);	xmlReq = getXML(file,str);}function getXML(file,str) {   var doc = null;   if (typeof window.ActiveXObject != 'undefined' ) {       doc = new ActiveXObject("Microsoft.XMLHTTP");       doc.onreadystatechange = showbidder;   }   else {       doc = new XMLHttpRequest();       doc.onload = showbidder;   }   doc.open( "POST", file, true );   doc.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");   doc.send(str);   return doc;}function showbidder() {		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 		document.getElementById("specifybidder").innerHTML=xmlHttp.responseText; 	} }function getFormValues(fobj) // second argument was valFunc{   var str = "";   var valueArr = null;   var val = "";   var cmd = "";   for(var i = 0;i < fobj.elements.length;i++)   {       switch(fobj.elements[i].type)       {           case "text"://               if(valFunc)//                {//                    use single quotes for argument so that the value of//                    fobj.elements[i].value is treated as a string not a literal//                    cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";//	                  val = eval(cmd)//      		 }                str += fobj.elements[i].name +                 "=" + escape(fobj.elements[i].value) + "&";                 break;           case "password":                     //use single quotes for argument so that the value of                    //fobj.elements[i].value is treated as a string not a literal                    cmd = "MD5" + "(" + 'fobj.elements[i].value' + ")";                    val = eval(cmd)                str += fobj.elements[i].name +                 "=" + escape(fobj.elements[i].value) + "&";           		break;           case "select-one":                str += fobj.elements[i].name +                "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";                break;       }   }   str = str.substr(0,(str.length - 1));   return str;}  /**** MD5 (Message-Digest Algorithm)* http://www.webtoolkit.info/***/var MD5 = function (string) {    function RotateLeft(lValue, iShiftBits) {        return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));    }    function AddUnsigned(lX,lY) {        var lX4,lY4,lX8,lY8,lResult;        lX8 = (lX & 0x80000000);        lY8 = (lY & 0x80000000);        lX4 = (lX & 0x40000000);        lY4 = (lY & 0x40000000);        lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);        if (lX4 & lY4) {            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);        }        if (lX4 | lY4) {            if (lResult & 0x40000000) {                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);            } else {                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);            }        } else {            return (lResult ^ lX8 ^ lY8);        }    }    function F(x,y,z) { return (x & y) | ((~x) & z); }    function G(x,y,z) { return (x & z) | (y & (~z)); }    function H(x,y,z) { return (x ^ y ^ z); }    function I(x,y,z) { return (y ^ (x | (~z))); }    function FF(a,b,c,d,x,s,ac) {        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));        return AddUnsigned(RotateLeft(a, s), b);    };    function GG(a,b,c,d,x,s,ac) {        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));        return AddUnsigned(RotateLeft(a, s), b);    };    function HH(a,b,c,d,x,s,ac) {        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));        return AddUnsigned(RotateLeft(a, s), b);    };    function II(a,b,c,d,x,s,ac) {        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));        return AddUnsigned(RotateLeft(a, s), b);    };    function ConvertToWordArray(string) {        var lWordCount;        var lMessageLength = string.length;        var lNumberOfWords_temp1=lMessageLength + 8;        var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;        var lNumberOfWords = (lNumberOfWords_temp2+1)*16;        var lWordArray=Array(lNumberOfWords-1);        var lBytePosition = 0;        var lByteCount = 0;        while ( lByteCount < lMessageLength ) {            lWordCount = (lByteCount-(lByteCount % 4))/4;            lBytePosition = (lByteCount % 4)*8;            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));            lByteCount++;        }        lWordCount = (lByteCount-(lByteCount % 4))/4;        lBytePosition = (lByteCount % 4)*8;        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);        lWordArray[lNumberOfWords-2] = lMessageLength<<3;        lWordArray[lNumberOfWords-1] = lMessageLength>>>29;        return lWordArray;    };    function WordToHex(lValue) {        var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;        for (lCount = 0;lCount<=3;lCount++) {            lByte = (lValue>>>(lCount*8)) & 255;            WordToHexValue_temp = "0" + lByte.toString(16);            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);        }        return WordToHexValue;    };    function Utf8Encode(string) {        string = string.replace(/\r\n/g,"\n");        var utftext = "";        for (var n = 0; n < string.length; n++) {            var c = string.charCodeAt(n);            if (c < 128) {                utftext += String.fromCharCode(c);            }            else if((c > 127) && (c < 2048)) {                utftext += String.fromCharCode((c >> 6) | 192);                utftext += String.fromCharCode((c & 63) | 128);            }            else {                utftext += String.fromCharCode((c >> 12) | 224);                utftext += String.fromCharCode(((c >> 6) & 63) | 128);                utftext += String.fromCharCode((c & 63) | 128);            }        }        return utftext;    };    var x=Array();    var k,AA,BB,CC,DD,a,b,c,d;    var S11=7, S12=12, S13=17, S14=22;    var S21=5, S22=9 , S23=14, S24=20;    var S31=4, S32=11, S33=16, S34=23;    var S41=6, S42=10, S43=15, S44=21;    string = Utf8Encode(string);    x = ConvertToWordArray(string);    a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;    for (k=0;k<x.length;k+=16) {        AA=a; BB=b; CC=c; DD=d;        a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);        d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);        c=FF(c,d,a,b,x[k+2], S13,0x242070DB);        b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);        a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);        d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);        c=FF(c,d,a,b,x[k+6], S13,0xA8304613);        b=FF(b,c,d,a,x[k+7], S14,0xFD469501);        a=FF(a,b,c,d,x[k+8], S11,0x698098D8);        d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);        c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);        b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);        a=FF(a,b,c,d,x[k+12],S11,0x6B901122);        d=FF(d,a,b,c,x[k+13],S12,0xFD987193);        c=FF(c,d,a,b,x[k+14],S13,0xA679438E);        b=FF(b,c,d,a,x[k+15],S14,0x49B40821);        a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);        d=GG(d,a,b,c,x[k+6], S22,0xC040B340);        c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);        b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);        a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);        d=GG(d,a,b,c,x[k+10],S22,0x2441453);        c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);        b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);        a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);        d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);        c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);        b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);        a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);        d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);        c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);        b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);        a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);        d=HH(d,a,b,c,x[k+8], S32,0x8771F681);        c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);        b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);        a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);        d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);        c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);        b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);        a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);        d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);        c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);        b=HH(b,c,d,a,x[k+6], S34,0x4881D05);        a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);        d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);        c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);        b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);        a=II(a,b,c,d,x[k+0], S41,0xF4292244);        d=II(d,a,b,c,x[k+7], S42,0x432AFF97);        c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);        b=II(b,c,d,a,x[k+5], S44,0xFC93A039);        a=II(a,b,c,d,x[k+12],S41,0x655B59C3);        d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);        c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);        b=II(b,c,d,a,x[k+1], S44,0x85845DD1);        a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);        d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);        c=II(c,d,a,b,x[k+6], S43,0xA3014314);        b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);        a=II(a,b,c,d,x[k+4], S41,0xF7537E82);        d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);        c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);        b=II(b,c,d,a,x[k+9], S44,0xEB86D391);        a=AddUnsigned(a,AA);        b=AddUnsigned(b,BB);        c=AddUnsigned(c,CC);        d=AddUnsigned(d,DD);    }    var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);    return temp.toLowerCase();}