//Please email bugs/questions/suggestions to Ross Thomspon
//var e,i,k;
var arrFormFields, iOffset=0;

//Buffer up to one hundred fields from various forms
var arrFormFields=Array(100);
for(i=0;i<100;i++)
	arrFormFields[i]=Array(2);

//Validation code-----------------------------------	
function ValidateMain(frm){  
 var i, k=0, f, iv;
 e=frm.elements;
 for(i=0;i<e.length;i++){
  iv=getFieldByIndex(frm, i-1); 
  
  if(e[i].name.substring(0,2)=='_^'){
   f=e[k];
   if(eval(e[i].name.substring(2,e[i].name.length))){
    alert(e[i].value)
    e[k].focus();
    if(e[k].type!='select-one')
     e[k].select();
    return false;
   } 
  }
  else
   k=i;     
 }
 
 return true;
}
 
function ge(sIdName){
 var j=0;
 for(j=0;j<e.length;j++)
  if(e[j].id==sIdName||e[j].name==sIdName)
   return e[j];
 
 alert('ge: No name or id "'+sIdName+'"');
 return e[0]; 
}
 
function rc(sIdName){
 var j=0,sBString='';
 for(j=0;j<e.length;j++)
  if(e[j].id==sIdName||e[j].name==sIdName)
   sBString+=(e[j].checked)?'1':'0';   
  
  if(sBString=='')
   alert('rc: No name or id "'+sIdName+'"');
  return sBString;
  
}
//Validation code-----------------------------------	



//Buffer form index, field name, and field value into arrFormFields for all forms in document
function bufferFields(){
	var i,j;
	for(i=0;i<document.forms.length;i++){			
		for(j=0;j<document.forms[i].elements.length;j++){									
			arrFormFields[iOffset][0]=i;
			arrFormFields[iOffset][1]=document.forms[i].elements[j].name;
			arrFormFields[iOffset][2]='';
			
			if(document.forms[i].elements[j].type=='text' || document.forms[i].elements[j].type=='textarea'){
				arrFormFields[iOffset][2]=document.forms[i].elements[j].value;				
			}	
	
			//alert(arrFormFields[iOffset][0] + ', ' + arrFormFields[iOffset][1] + ', ' + arrFormFields[iOffset][2] + ', ' + iOffset);
			iOffset++;
		}		
	}
	return 0;
}
//Get field value from form object and field name in the arrFormFields array
function getFieldByName(frm, fieldName){
	var i,formIndex = getFormIndex(frm);
	
	for(i=0;i<iOffset;i++)
		if(arrFormFields[i][0]==formIndex&&arrFormFields[i][1]==fieldName){
			return arrFormFields[i][2];
		}
			
	return 0;
}
//Get field value from form object and element index in the arrFormFields array
function getFieldByIndex(frm, index){
	var i,j=-1,formIndex = getFormIndex(frm);

	for(i=0;i<iOffset;i++){
		if(arrFormFields[i][0]==formIndex&&j==-1)		
			j=i;
		
		if(i-j==index&&j!=-1)
			return arrFormFields[i][2];
	}
			
	return 0;
}

//Set value of all fileds that still have default values to null string in a given form
function clearDefaultValues(frm){
	var i;
	for(i=0;i<frm.elements.length;i++)
		if(frm.elements[i].value==getFieldByIndex(frm,i))
			frm.elements[i].value='';

	return true;
}

//Use this to validate short forms and clear default values
function ValidateShort(frm){
	
	if(ValidateMain(frm))
		return clearDefaultValues(frm);
	
	return false;

}

//Get form index for given form
function getFormIndex(frm){
	var i;
	for(i=0;i<document.forms.length;i++)
		if(document.forms[i]==frm)
			return i;
	
	return 0;
}