// begin rewrite
var ea = Array();

function populate_elements(){
	// requires prototype 1.6+
	a = $$('.required');
	h = $H();
	for(i=0;i<a.length;i++){
		if(!h.get(a[i].name)){
			h.set(a[i].name,Array());
		}
		temp=h.get(a[i].name);
		temp[temp.length]=a[i];
		h.set(a[i].name, temp);
	}
	ea=h.values();
	for(i=0;i<ea.length;i++){
		ea[i]=ea[i].reduce();
	}
	
}




function maxCheckBox(e,max,cssClass){
	cb_list=$$('div.'+cssClass+' input');
	total=0;
	
	for(i=0;i<cb_list.length;i++){
		total+=cb_list[i].checked?1:0;
	}
	if(total>max){
		alert('Please select at most '+max+' items.');
		e.checked=false;
	}
	
}




// Javascript element cecking library
//
// Usage:
//  
// Place after  all form elements wrapping in script tag:
// elementstocheckarary = Array ( form.element1, form.element2,....)
//
// 
// use appropriate function as onsubmit or use functions in your own.



// require_elements( array of form elements to examine, option string message)
// returns a boolean
// Tests for non-blank/empty objects
// provides user alert and appends optional message.
function require_elements(element_array,msg){
	missing = check_elements(element_array);
	if(missing){
		alert("Some required questions have not been answered.\n"+msg);
		return(false);
	}else{
		return(true);
	}
}


// Does not yet support select lists
//
function check_elements(element_array){
	var doConfirm = false;	// initialize confirmation need to false
	for (i=0;i< element_array.length;i++){// for each item to check
		e=element_array[i]; // just set to e for shorter var name
		if(e.length && e.type!='select-one'){
		//our element is an array (usually check box or radio cluster)
		// We test to make sure one is checked
			switch(e[0].type){
				case "radio":
					blank=true;
					for(j=0;j<e.length;j++){
					//loop through each radio button in cluster as see if one is checked
						if(e[j].checked==true){
							blank=false;
						}
					}
					break;
				// Note that a required check box is only useful for a I agree type thing.
				case "checkbox":
					blank=true;
					for(j=0;j<e.length;j++){
					//loop through each radio button in cluster as see if one is checked
						if(e[j].checked==true){
							blank=false;
						}
					}

					break;
				default:
					

			}//End Switch of Array Elements
			if(blank){
			//remember the most recently checked empty element
				emptyone=e[0];
				doConfirm=true;
			}
		}else{
//alert(e.name);
			//our element is a scalar, just test value
			// Testing checkbox or radio makes no sense in a single case
			switch(e.type){
				case "text":
					if(e.value==""){
						doConfirm=true;
						emptyone=e;
					}
					break;
				case "hidden":
					if(e.value==""){
						doConfirm=true;
						emptyone=e;
					}
					break;
				case "textarea":
					if(e.value==""){
						doConfirm=true;
						emptyone=e;
					}
					break;
				case "select-one":
					if(e[e.selectedIndex].value==""){
						doConfirm=true;
						emptyone=e;
					}
					break;
	
				}// end switch
		}//End if
	}//end for

if(doConfirm){
	$(emptyone).up().up().addClassName('reqNote');
}
return(doConfirm);
}

function confirm_elements(element_array){
	doConfirm = check_elements(element_array);
	if(doConfirm){
		theresults=confirm("Not all questions have been answered.\n Do you wish to continue?\n Choose cancel to complete the form.");
		if(!theresults){
		//	emptyone.focus();
		}
		return(theresults);
	}
		
}

function reqcb(holder, element_array ){
	var totalchecked=0;
	for (i=0;i< element_array.length;i++){
		if(element_array[i].checked){
			totalchecked++;
		}
	}
	if(totalchecked==0){
		document.getElementById(holder).value="";
	}else{
		document.getElementById(holder).value="T";
	}	
	
}


// accepts integer n as max number and an  array of elements
function max_checkbox_responses(n,element_array){
	var totalchecked=0;
	for (i=0;i< element_array.length;i++){
		if(element_array[i].checked){
			totalchecked++;
		}
	}
	if (totalchecked > n){
		alert('Please check a maximum of '+n+'.');
		return(false);
	}else{
		return(true);
	}
}



