
	//public to uiHelpers
	var tid;
	
	//constant for displaying wait message
	var msg = "processing request...";

	//*************BEGIN Common Functions**************
	
		function init()
		{
			var label = document.getElementById('lblWait');
			label.innerHTML = '';
			window.clearTimeout(tid);
		}		
			
		function startTimer() 
		{		
			// display "Please wait" message
			var label = document.getElementById('lblWait');
			
			label.innerHTML = msg;
			
			// start interval timer for one second
			tid = window.setTimeout('function(){}', 1000);  
		}
		
		function buttonClick(ctrl)
		{
  			ctrl.parentNode.style.display = "none";
			startTimer();		    
		}
		
	//*************END Common Functions**************

	
	//*************BEGIN used by groupAdminTemplates/addUser**************

		function buttonClickUser(ctrl)
		{				
			var content;
			
			var items = document.getElementsByTagName("INPUT");
			
			for(i=0;i< items.length;i++)
			{
				if(items[i].id.indexOf("txtUsername") !=-1)
				{
					content = items[i].value;			
				}
			}
			
			// disable submit button
			if(content.length !=0 && content.search(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i)!=-1){
				ctrl.style.display = "none";
				startTimer();
			}
		}
		
	//*************END used by groupAdminTemplates/addUser**************		
	
	
	//*************BEGIN used by groupAdminTemplates/groupAdminGroupMan**************

		function buttonClickGroupMan(ctrl)
		{							
			var content;
			var firstDate;
			var secondDate;
			var estHours;
				
			var items = document.getElementsByTagName("INPUT");
				
			for(i=0;i< items.length;i++)
			{
				if(items[i].id.indexOf("txtEntity") !=-1)
				{
					content = items[i].value;			
				}
				if(items[i].id.indexOf("date1") !=-1)
				{
					firstDate = items[i].value;			
				}
				if(items[i].id.indexOf("date2") !=-1)
				{
					secondDate = items[i].value;			
				}
				if(items[i].id.indexOf("anticipatedHours") !=-1)
				{
					estHours = items[i].value;			
				}				
			}	
				
			// disable submit button
			if(content.length !=0 && firstDate.length !=0 && secondDate.length !=0 && estHours.length !=0)
			{
				if(dateDiff("d",firstDate,secondDate)>0 && estHours==parseFloat(estHours))
				{
					ctrl.style.display = "none";
					startTimer();
				}
			}
		}
		
	//*************END used by groupAdminTemplates/groupAdminGroupMan**************
	
  	//*************BEGIN used by login**************
		
		function buttonClickLogin(ctrl) 
		{   	
			var contentUser;
			var contentPwd;
			  
			var items = document.getElementsByTagName("INPUT");
			  
			for(i=0;i< items.length;i++)
			{
				if(items[i].id.indexOf("txtUsername") !=-1)
				{
					contentUser = items[i].value;			
				}
				else if(items[i].id.indexOf("txtPassword") !=-1)
				{
					contentPwd = items[i].value;			
				}
			}
	  
			// disable submit button
			if(contentUser.length !=0 && contentUser.search(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i)!=-1
				&& contentPwd.length !=0 && contentPwd.search(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i)!=-1)
			{
				ctrl.style.display = "none";
				startTimer();
			}
		}	
		
		function resetSeniorMoment()
		{
			Effect.BlindUp('seniorMoment');
			Element.show('submitButton');
			Effect.BlindDown('logon');
			$('reminder').value='';
			Element.hide('feedback');	
			$('feedback').innerHTML= '';			
			
			return false;
		}	
		
		function showSeniorMoment()
		{
			Effect.BlindDown('seniorMoment');
			Element.hide('submitButton');
			Effect.BlindUp('logon');
			return false;
		}
		
		function seniorMoment(el)
		{			
			if(el.value.length ==0 || el.value.search(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i)==-1)
			{
				alert('Enter a valid email address');
			}
			else
			{
				Element.show('systemWorking');
				Element.hide('formElem');
				sendReminder(el);
			}
		}		
		
		function sendReminder(el)
		{	
			//called on successful return from server
			var handlerOK = function(t) 
			{
				Element.show('formElem');
				Element.show('feedback');	
				$('feedback').innerHTML= t.responseText;
				Element.hide('systemWorking');				
			}
			
			//called on failed return from server
			var handlerFail = function(t) 
			{
				Element.hide('systemWorking');
				alert( t.responseText);		
			
			}
		
			var e = el.value;				
			
			//method call
			var url = 'login.aspx?e=' + e;		

			var myAjax = new Ajax.Request(
			url, 

			{method: 'post', 		 

			onSuccess: handlerOK,
			
			onFailure: handlerFail

			});
		}
  
  	//*************END used by login**************

	
	//*************BEGIN used by groupAdminTemplates/groupAdminReport**************
		
		function contentHide()
		{			
			var divs = document.getElementsByTagName("div");
			    
			for(var j=0;j<divs.length;j++){
				//this should be changed to use .indexof
				if(divs[j].id.indexOf("content") != -1){
				var ctl = divs[j];
				}
			}     
			        
			ctl.style.display = "none";
			startTimer(); 
		}
		
		function CheckAll( checkAllBox )
		{	
			//function loops through checkboxes in DOM and sets .checked
			//to value of the checkAll input control
			
			var actVar = checkAllBox.checked ;
			var items = document.getElementsByTagName("INPUT");

			for(i=0;i< items.length;i++)
			{
				if ( items[i].type=='checkbox'  )
				items[i].checked= actVar ;
			}
		}
		
		function gatherSingleElement()
		{			
			var email=document.getElementById("email");
			
			//push values into hidden server side text control for grabbing server side
			//asp.net changes server-side controls, so search for server-side name
			
			var inputs = document.getElementsByTagName("input");
			
			for(var j=0;j<inputs.length;j++){
				//this should be changed to use .indexof
				if(inputs[j].id.indexOf("__formData") != -1){
				var ctl = inputs[j];
				}
			}            
			
			//write content to serverside hidden input   
			ctl.value =  email.innerHTML + "|" + email.getAttribute("u_id") + "|";	
			return true;
		
		}
				
		function gatherElements()
		{
			//function searches DOM for selected items, locates recipient's address and score table
			//concatenates string with a delimiter "|" and writes string to a hidden server input control
			//the string is decoded server side and parsed to send page content to recipients.
			//essentially, this is performing the work of __doPostBack, but in this case,
			//all page elements are dynamically generated as standard html controls either via
			//server-side code or xsl.
		    
			var items = document.getElementsByTagName("INPUT");
			var recipients = '';
			
			for(i=0;i< items.length;i++)
			{	
				//loop through check boxes
				if ( items[i].type=='checkbox' && items[i].id.indexOf("checkAllBox") == -1 ){
					
					//if item is selected for email
					if(items[i].checked){
						
						//the id of the checkbox will be the recipient's address
						var data = items[i].id;
						var recipient = items[i].getAttribute("email")	
						
						//concatenate data			
						recipients += recipient + "|" + data + "|";
					}			
				}			
			}       
		    
			//pust values into hidden server side text control for grabbing server side
			//asp.net changes server-side controls, so search for server-side name
			var inputs = document.getElementsByTagName("input");
		    
			for(var j=0;j<inputs.length;j++){
				//this should be changed to use .indexof
				if(inputs[j].id.indexOf("__formData") != -1){
				var ctl = inputs[j];
				}
			}            
		    
			//write content to serverside hidden input   
			ctl.value = recipients;		
			return true;
		}		
		
	//*************END used by groupAdminTemplates/groupAdminReport**************
	
	
	//*************BEGIN used by groupAdminTemplates/groupAdminTests**************
	
		function confirmDelete(ctrl)
		{
			var items = document.getElementsByTagName("INPUT");
			var flag = false;
			
			for(i=0;i< items.length;i++)
			{	
				//loop through check boxes
				if ( items[i].type=='checkbox'){
					
					//if item is selected for email
					if(items[i].checked){
						flag=true;
					}			
				}			
			}  
					
			if(flag == true)
			{   				
				var ret = confirm("Are you sure you want to delete this student from your roster? This action cannot be undone.");
				if(ret == false)
				{
					init();
					ctrl.parentNode.style.display = "block";
				}
				return ret;
			}
			else
			{
				return true;
			}
		}
		
	//*************END used by groupAdminTemplates/groupAdminTests**************
	
		//function encodes illegal chars prior to postback: should do for every input element,
		//but we're quick and dirty here today :)
	   function encodeFields(){	   
	   
			var items = document.getElementsByTagName("TEXTAREA");			
			
			for(i=0;i< items.length;i++)
			{		
				//items[i].value = items[i].value.unescapeHTML()		
				items[i].value = items[i].value.escapeHTML();				
			}  
	   
	   }
	   
	   function decodeFields(){	   
	   /*
			var items = document.getElementsByTagName("TEXTAREA");			
			
			for(i=0;i< items.length;i++)
			{				
				items[i].value = items[i].value.unescapeHTML();				
			}  
	   */
	   }
