// JavaScript Document

function OpenWin(url,width,height) {
	newWindow = window.open(url,"NewWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width="+width+",height="+height)
}

function hideShow(element,disp) {
	document.getElementById(element).style.display = disp;
}
function showHideToggle(element) {
	if (document.getElementById(element).style.display == "block") {
	//	document.getElementById(element).style.display = "none";
	}
	else {
		document.getElementById(element).style.display = "block";
	}
}

function showHide2(element) {
	lArray = eList.split(",");
	for (i=0;i<lArray.length;i++) {
		document.getElementById(lArray[i]).style.display = "none";
	}
	document.getElementById(element).style.display = "block";
}

function showHide(element,eList) {
	lArray = eList.split(",");
	for (i=0;i<lArray.length;i++) {
		document.getElementById(lArray[i]).style.display = "none";
	}
	document.getElementById(element).style.display = "block";
}

function setClassName(element) {
	document.getElementById(element).className = "topnavon";
}

function topNavOn(id) {
	document.write('<style>#'+id+' a { color:#B2BA1E; }</style>');
}
function leftNavOn(id) {
	document.write('<style>#leftnav #'+id+', #leftnav #'+id+' a { color:#B2BA1E; } #leftnav #'+id+' ul li a { color:#666666; } #leftnav #'+id+' ul li a:hover { color:#006EAE; }</style>');
}

function leftSubNavOn(id) {
	document.write('<style>#leftnav #'+id+' { background-image:url(http://www.montserrat.edu/images/leftnavbullet-on.gif); background-position:0px 5px; background-repeat:no-repeat; }\n #leftnav #'+id+' a { color:#B2BA1E; }</style>');
}

function leftSubSubNavOn(id) {
	document.write('<style>#leftnav ul ul #'+id+' { background-image:url(http://www.montserrat.edu/images/leftnavbullet-on.gif); background-position:0px 5px; background-repeat:no-repeat; }\n #leftnav ul ul #'+id+' a { color:#B2BA1E; }</style>');
}

function leftNavOn2(id,subid) {
	if (id) { document.write('<style>#leftnav #'+id+', #leftnav #'+id+' a { color:#B2BA1E; }</style>'); }
	if (subid) {
		document.write('<style>#leftnav #'+subid+' { background-image:url(http://www.montserrat.edu/images/leftnavbullet-on.gif); background-position:0px 5px; background-repeat:no-repeat; }\n #leftnav #'+subid+' a { color:#B2BA1E; } #leftnav #'+id+' ul a  { color:#666666; }</style>');
	}
	else if (!subid) { document.write('<style>#leftnav #'+id+' ul li a { color:#666666; } </style>'); }
}


// Start stuff added by Dan /////////////////////////////////////////////////////////////////////////

// for multiple functions on window.onload
function addLoadEvent(func) {
  	var oldonload = window.onload;
  	if (typeof window.onload != 'function') {
    	window.onload = func;
  	} else {
    	window.onload = function() {
      		if (oldonload) {
        		oldonload();
      		}
      		func();
    	}
  	}
}

// event delegation
function getTarget(x) {
	x = x || window.event;
	return x.target || x.srcElement;
}

// get elements by class name by snook.ca
function getElementsByClassName(classname) {
	if (!document.getElementsByTagName) return false;    
	var a = [];
    var re = new RegExp('(^| )' + classname + '( |$)');
    var els = document.getElementsByTagName("*");
    for (var i=0,j=els.length; i<j; i++)
        if (re.test(els[i].className)) a.push(els[i]);
    return a;
}

// trim stuff
String.prototype.trim = function() {
    return this.replace( /^\s+|\s+$/, "" );
}

// add class
function addClassName (elem, className) {
    removeClassName (elem, className);
    elem.className = (elem.className + " " + className).trim();
}

// remove class
function removeClassName (elem, className) {
    elem.className = elem.className.replace(className, "").trim();
}

// forms on calendar.php
function calForm() {
	if (!document.getElementById('viewMonthLink')) return false;
	document.getElementById('viewMonthLink').onclick = function() {
		if (document.getElementById('viewMonth').value == 'false') {
			document.getElementById('viewMonth').value = 'true';
		} else {
			document.getElementById('viewMonth').value = 'false';
		}
		document.getElementById('filter').submit();
		return;
	}	
	document.getElementById('viewYearLink').onclick = function() {
		if (document.getElementById('viewYear').value == 'false') {
			document.getElementById('viewYear').value = 'true';
		} else {
			document.getElementById('viewYear').value = 'false';
		}
		document.getElementById('filter').submit();
		return;
	}	
}

function formSubmit() {
	if (!getElementsByClassName('selectSubmit')) return;
	var links = getElementsByClassName('selectSubmit');
	for (i=0; i<links.length; i++) {
		links[i].onchange = function() {
			document.getElementById('filter').submit();
		}
	}
}

function yearSubmit() {
	if (!document.getElementById('yearFilter')) return;
	var links = document.getElementById('newsFilter').getElementsByTagName('a');
	for (i=0; i<links.length; i++) {
		links[i].onclick = function() {
			document.getElementById('yearFilter').value = this.getAttribute('year');
			document.getElementById('newsFilterForm').submit();
			return false;
		}
	}
}

function datePicker() {
	if (!getElementsByClassName('datePick')) return;
	var fields = getElementsByClassName('datePick');
	for (i=0; i<fields.length; i++) {
		var a = document.createElement('a');
		a.setAttribute('class', 'dateOpen');
		var text = document.createTextNode('Choose');
		a.appendChild(text);
		fields[i].parentNode.appendChild(a);
	}
	
	document.onclick = function(e) {
		var t = getTarget(e);
		if (t.className == 'dateOpen') {
			document.getElementById('calendar').style.display = 'block';
			var left = t.parentNode.offsetLeft + 511;
			var top = t.parentNode.offsetTop + 99;
			document.getElementById('calendar').style.left = left + 'px';
			document.getElementById('calendar').style.top = top + 'px';
			if (getElementsByClassName('chosen')[0]) {
				removeClassName(getElementsByClassName('chosen')[0], 'chosen');
			}
			addClassName(t.parentNode.firstChild, 'chosen');
			return false;
		}
		if (t.parentNode.className == 'day' || t.parentNode.className == 'today') {
			getElementsByClassName('chosen')[0].value = '20' + t.getAttribute('year') + '-' + t.getAttribute('month') + '-' + t.innerHTML;
			if (document.getElementById('calendar')) {
				document.getElementById('calendar').style.display = 'none';
				if (getElementsByClassName('chosen')[0]) {
					removeClassName(getElementsByClassName('chosen')[0], 'chosen');
				}
			}
			return false;
		}
		if (t.id != 'calendar' && t.className != 'leftArrow' && t.className != 'rightArrow') {
			if (document.getElementById('calendar')) {
				document.getElementById('calendar').style.display = 'none';
				if (getElementsByClassName('chosen')[0]) {
					removeClassName(getElementsByClassName('chosen')[0], 'chosen');
				}
			}
		}
	}	
}

addLoadEvent(yearSubmit);
addLoadEvent(calForm);
addLoadEvent(formSubmit);
addLoadEvent(datePicker);

var error = "";
var rfString = "";
var form = "";
function ValidateForm(form) {
	error = "";
	for (i=0; i<form.elements.length; i++) {
		// FIRST CHECK TO SEE IF REQUIRED FIELDS EXIST
		if (form.elements[i].name.indexOf("reqfields") != -1) {
			rfString = form.reqfields.value;
			break;
		}
	}
	if (rfString) {
		validateReqFields(form)
	}
	else {
		validateAllFields(form)
	}
	if (error) {
		alert('This form could not be processed because of the following errors:\n\n' + error);
		return false;
	}
}

function validateReqFields(form) {
	rfString = form.reqfields.value;
	rfArray = rfString.split(",");
	rfCount = rfArray.length-1;
	rnametemp = "";
	for (x=0; x<=rfCount; x++) {
		for (i=0; i < form.elements.length; i++) {
			if (form.elements[i].name == rfArray[x]) {
				if ((form.elements[i].type == 'radio' || form.elements[i].type == 'checkbox') && rnametemp != form.elements[i].name) {
					rnametemp = form.elements[i].name;
					checkRadio(rnametemp,form);
				}
				else if (form.elements[i].name.indexOf("email") != -1) {
					checkEmail(form.elements[i].value)
					}
				else if (form.elements[i].value == "") {
					if (form.elements[i].name == rfArray[x]) {
						error = error + '* ' + form.elements[i].name + ' is empty\n'
					}
				}
			}
		}
	}
}

function validateAllFields(form) {
	rnametemp = "";
	for (i=0; i < form.elements.length; i++) {
		if (form.elements[i].type == 'radio' && rnametemp != form.elements[i].name) {
			rnametemp = form.elements[i].name;
			checkRadio(rnametemp,form);
		}
		else if (form.elements[i].name.indexOf("email") != -1) {
			checkEmail(form.elements[i].value)
			}
		else if (form.elements[i].value == "") {
			error = error + '* ' + form.elements[i].name + ' is empty\n'
		}
	}
}

function checkEmail (strng) {
//var error="";
if (strng == "") {
   error = error + "* You didn't enter an email address.\n";
}
else {
    var emailFilter=/^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(strng))) { 
       error = error + "* Please enter a valid email address.\n";
    }
    else {
//test email for illegal characters
       var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
         if (strng.match(illegalChars)) {
          error = error + "* The email address contains illegal characters.\n";
       }
    }
}
return error;    
}

function checkRadio(fname,form) {
	valcheck = "";
	alMsg = "";
	maxnum = form.elements[fname].length
	for (z=0;z<maxnum;z++) {
		if (form.elements[fname][z].checked) {
			valcheck = "1";
			break;
		}
	}
	if (!valcheck) {
		error = error + '* ' + fname + ' is not checked\n';
	}
}

