function refreshParent()
{
   window.opener.parent.location.reload();
   self.close();
}



function redirectParent( url )
{
   window.opener.parent.location = url;
   self.close();
}




function openWin(URL,width,height)
{

   if( URL != "" )
   {
      var winDetails = 'width=' + width + ', height=' + height + ',resizable=yes,scrollbars=yes,location=no';
      popWin = window.open(URL,'popWin',winDetails);
	  popWin.focus(); 
   }
}



function openWin2(URL,width,height)
{

   if( URL != "" )
   {
      var winDetails = 'width=' + width + ', height=' + height + ',resizable=yes,scrollbars=yes,location=no';
      popWin = window.open(URL,'popWinTwo',winDetails);
	  popWin.focus(); 
   }
}



function toggleHidden( hidden) {

		var hiddenElement = document.getElementById(hidden);	
			
        if ( hiddenElement.style.display == "" ){
		
		       hiddenElement.style.display = "none";

        } else if ( hiddenElement.style.display == "none" ){

			   hiddenElement.style.display = "";
	    }		   
}


function toggleHiddenZ( hidden, location ) {

		var hiddenElement = document.getElementById(hidden);
		var locationElement = document.getElementsByName(location);	
			
        if ( hiddenElement.style.display == "" ){
		
		       hiddenElement.style.display = "none";

        } else if ( hiddenElement.style.display == "none" ){


               hiddenElement.style.left = 300 ;
			   hiddenElement.style.top = 90;
			   hiddenElement.style.display = "";
	    }		   
}








		function checkform(of)
		{
		

		
		// Test if DOM is available and there is an element called required
			if(!document.getElementById || !document.createTextNode){return;}
			if(!document.getElementById('required')){return;}

		// Define error messages and split the required fields
			var errorID='errormsg';
			var errorClass='error'
			var errorMsg='Sorry, there is a problem. Please update the highlighted fields and resubmit the form.';
			var errorImg='javascript/error-icon.gif';
			var errorAlt='Error';
			var errorTitle='This field has an error!';
			var reqfields=document.getElementById('required').value.split(',');
			
	    // Cleanup old mess
			// if there is an old errormessage field, delete it
			if(document.getElementById(errorID))
			{
				var em=document.getElementById(errorID);
				em.parentNode.removeChild(em);
			}		
			
			// remove old images and classes from the required fields
			for(var i=0;i<reqfields.length;i++)
			{
				var f=document.getElementById(reqfields[i]);
				if(!f){continue;}
				if(f.previousSibling && /img/i.test(f.previousSibling.nodeName))
				{
					f.parentNode.removeChild(f.previousSibling);
				}
				f.className='';
			}
	

            var checkedCount = 0;
			
			var checkboxMaxLimit = new Array();
			if( document.getElementById('checkboxMaxLimit') )
			{
			   checkboxMaxLimit=document.getElementById('checkboxMaxLimit').value.split(',');
            }
			
			
			if( checkboxMaxLimit[1] > 0 && checkboxMaxLimit[0] != "" )
			{
               var baseName = checkboxMaxLimit[0];

               for( formElement1 in of )
               {
                  formElementName = formElement1.toString();

                  if( formElementName.indexOf(baseName) != -1 )
                  {
				  
                     // If the element is a checkbox
                     // ----------------------------
                     if( of[formElement1].type.toLowerCase() == 'checkbox' )
                     { 
					    // if the element is check then up the count
						// -----------------------------------------
						if( of[formElement1].checked )
						{
						   checkedCount++;
						}
                     }
                 }
             }	    
         }

        if( checkedCount > checkboxMaxLimit[1] )
		{
		
		   var baseNamePure = _stripUnderScores( baseName );
		   alert( "You have exceeded the maximun number " + baseNamePure + " selections.\n Please select only " + checkboxMaxLimit[1] + " and resubmit." );
           return false;
		}

        
		// set the radio button unchecked val to true
		   var rb_checked = new Array();
		   var j = 0;
			
		// loop over required fields
			for(var i=0;i<reqfields.length;i++)
			{
			
			
		// check if required field is there
				var f=document.getElementById(reqfields[i]);
				if(!f){continue;}
		// test if the required field has an error, 
		// according to its type
		
				switch(f.type.toLowerCase())
				{
					case 'text':
						if(f.value=='' && f.id!='email'){cf_adderr(f, '  At least one required text field is empty.')}							
		// email is a special field and needs checking
						if(f.id=='email' && !cf_isEmailAddr(f.value)){cf_adderr(f, '   There is a malformed email address.')}							
					break;
					case 'textarea':
						if(f.value==''){cf_adderr(f, '  A required textarea is empty.')}							
					break;
					case 'checkbox':
						if(!f.checked){cf_adderr(f, '  A checkbox selection is required.')}							
					break;
					case 'select-one':
						if(!f.selectedIndex && f.selectedIndex==0){cf_adderr(f, '  A menu selection is required.')}							
					break;
					case 'radio':
					    checkRadioButtonSelected( f );
					break;
				}
			}
			
			
	
			
			
			
			
           // Check for email fields and test
		   if( document.getElementById('verify_email_fields') )
		   {
              var emailFields = new Array();
			  
		      if( document.getElementById('verify_email_fields').value != "" )
		      {	  
			  		   
		         emailFields = document.getElementById('verify_email_fields').value.split(',');
			     if ( emailFields[0] == "" ){ emailFields[0] = document.getElementById('verify_email_fields').value };
			     var countemails = 0;
			     while ( countemails < emailFields.length )
                 {
			         var e = document.getElementById(emailFields[countemails]);
				     if( e.value != "" )
				     {
                        if(!cf_isEmailAddr(e.value)){
						   cf_adderr(e, '  There is a malformed email address.');
					    }
				     }	 
                     countemails += 1;
                 }
			     countemails = 0;
		      }	  
		   }			
			
			
			
			
			
			
			
			return !document.getElementById(errorID);

			/* Tool methods */
			function cf_adderr(o,specific_error)
			{
				// create image, add to and colourise the error fields
				var errorIndicator=document.createElement('img');
				errorIndicator.alt=errorAlt;
				errorIndicator.src=errorImg;
				errorIndicator.title=errorTitle;
				o.className=errorClass;
				o.parentNode.insertBefore(errorIndicator,o);

			// Check if there is no error message
				if(!document.getElementById(errorID))
				{
				// create errormessage and insert before submit button
					var em=document.createElement('div');
					em.id=errorID;
					var newp=document.createElement('p');
					newp.appendChild(document.createTextNode(errorMsg));
					newp.appendChild(document.createElement('p'));
					
					// clone and insert the error image
					newp.appendChild(errorIndicator.cloneNode(true));
					newp.appendChild(document.createTextNode(specific_error));
					
					em.appendChild(newp);
					// find the submit button 
					
                     
					 // place the error message above the element id error_msg
					 var sb = document.getElementById('error_msg');
					 sb.parentNode.insertBefore(em,sb);

			         					    
	
				} 
			}
			function cf_isEmailAddr(str) 
			{
			    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
			}
			
			
			
			
function checkRadioButtonSelected( f )
{
   var checked = false;

   var i=0;
   while(i<document.forms[0][f.name].length) {
	   if (document.forms[0][f.name][i].checked) {
		  checked = true;
	   }
	   i++;
   }
   
   if( !checked )
   {
      cf_adderr(f, '  A radio button selection is required.');

   }


}			
			
			
			
		}



<!-- Limit the number of characters per textarea -->
function textCounter(field,cntfield,maxlimit) {


var fieldorig = field.value;
var char_count = field.value.length;
var fullStr = field.value + " ";
//var initial_whitespace_rExp = /^[^A-Za-z0-9]+/gi;
//var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
//var non_alphanumerics_rExp = rExp = /[^A-Za-z0-9]+/gi;
//var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
if( fullStr != " " )
{
  myregexp = new RegExp(/\s/);
  var splitString = fullStr.split(myregexp);
}  
var word_count = splitString.length;


  if (word_count > maxlimit){ 

    var countup = 0
    var cntfieldvalue = "";
    while ( countup < maxlimit )
    {
      cntfieldvalue = cntfieldvalue + splitString[countup] + " " ;
      countup += 1;
    }


    var cntfieldvaluelength = cntfieldvalue.length;
    field.value = fieldorig.substring(0,cntfieldvaluelength);
    //field.value = cntfieldvalue;
	cntfield.value = 0;
	alert( "You have exceeded this field's word limit.\nPlease review and edit your entry prior to submitting this form.\n\nThank you." );
	
  }else{	
  
     cntfield.value = maxlimit - word_count;
  }

}



// this utility function returns the string passed to it
// replacing '_' with ' '
// ----------------------------------------------------
function _stripUnderScores( str )
{
  // create an array to hold the tokens
  // ----------------------------------
  var tempArr =  new Array();

  // split up the word
  // ------------------
  tempArr = str.split('_');
  
  // if there were any underscores substitute them
  // with spaces and return the new string otherwise
  // just return the string itself
  // -----------------------------------------------
  if( tempArr.length != 0 )
  {     
    str = '';
    for( part in tempArr )
    { 
       if( tempArr[part] != 'req' && tempArr[part] != '-req' ){ str += tempArr[part] + ' '; }
    }
  }
  return str;

}
