
	// ****************************************************************************************************
        // ***** This function evaluates which comm channel is selected and displays subsequent fields    *****
	// ****************************************************************************************************
	function evalbroc(boxval) 
        {
	 if (boxval)
	 {
	    namectrydisplay('show');
	 }

	}

	// ****************************************************************************************************
	// ***** This function evaluates the country selected, updates the hidden value and then displays *****
        // ***** the comms channel fields                                                                 *****
	// ****************************************************************************************************
	function evalctry(ctryval)
	{	

           if ((ctryval=='')||(ctryval=='--Please Select--'))
              {
		alert('Please select a country');
              }
	   else
	      {
	  	clraddressflds();
	  	clrchecks();
	  	clradio('statements');
	  	clradio('ukhol');
	  	clradio('dp');
	  	resetstyling();
          	datatabs('hide');
	        dataform.postchk.checked=false;
                dataform.bothchk.checked=false;
	   	dataprotquest2display('show');
	      }


	   var elem=document.getElementById('pcode_hdr');
				 
				 if (ctryval=='Eire')
				 {
				    elem.style.display='none';
	   }




	}

	// ****************************************************************************************************
	// ***** This function shows/hides comms channel fields                                           *****
	// ****************************************************************************************************
        function dataprotquest2display(act)
	{

		var elem = document.getElementById('dataprotquest2');

		if (act=='show')
		   {elem.style.display='block';}
		else
		   {
	            dataform.postchk.checked=false;
                    dataform.bothchk.checked=false;
		    elem.style.display='none';
		   }
	}

	// ****************************************************************************************************
        // ***** This function evaluates which comm channel is selected and displays subsequent fields    *****
	// ****************************************************************************************************
	function evaldataprotquest2(boxval) 
        {

	  // * reset the form
          datatabs('hide');
	  clraddressflds();
	  clrchecks();
	  clradio('statements');
	  clradio('ukhol');
	  clradio('dp');
	  resetstyling();

	  if (boxval=='P')
              {
		emaildisplay('hide');
                dataform.bothchk.checked=false;
                addressdisplay('show');
	        datatabs('show');
	      }
	   else if (boxval=='Y')
                   {
                    dataform.postchk.checked=false;
                    addressdisplay('show');
               	    emaildisplay('show');
	            datatabs('show');
		   }

         }
   

	// ************************************************************************************************
	// ***** This function shows/hides address fields                                             *****
	// ************************************************************************************************
	function addressdisplay(act)
	{
	        elem = document.getElementById('address');
		if (act=='show')
                   {
		    elem.style.display='block';
		   }
		else
		   {elem.style.display='none';}	
		   
		if (dataform.ctry.value!='Eire')
			  {
					var elem = document.getElementById('pcode_hdr');
							if (act=='show')
								 {elem.style.display='block';}
							else
						 {elem.style.display='none';}	
		}
	}

	// ************************************************************************************************
	// ***** This function shows/hides name and country fields                                    *****
	// ************************************************************************************************
	function namectrydisplay(act)
	{
	        elem = document.getElementById('namectry');
		if (act=='show')
                   {
		    elem.style.display='block';
		   }
		else
		   {elem.style.display='none';}	
	}

	// ************************************************************************************************
	// ***** This function shows/hides email                                                      *****
	// ************************************************************************************************
        function emaildisplay(act)
	{
		if (dataform.ctry.value!='Eire')
					  {
							var elem = document.getElementById('pcode_hdr');
									if (act=='show')
										 {elem.style.display='block';}
									else
								 {elem.style.display='none';}	
		}
		var elem = document.getElementById('email_hdr');
		if (act=='show')
		   {elem.style.display='block';}
		else
		   {elem.style.display='none';}		   
	}


	// ************************************************************************************************
	// ***** This function shows/hides buttons                                                    *****
	// ************************************************************************************************
        function buttonsdisplay(act)
	{

	        elem = document.getElementById('buttons');
		if (act=='show')
		   {elem.style.display='block';}
		else
		   {elem.style.display='none';}

	}

	// ************************************************************************************************
	// ***** This function shows/hides miscellaneous data tables                                  *****
	// ************************************************************************************************
        function datatabs(act)
	{

		var elem = document.getElementById('intention');

		if (act=='show')
		   {elem.style.display='block';}
		else
		   {elem.style.display='none';}	

		// * special processing for eire
		elem = document.getElementById('abroad');
		if (dataform.ctry.value=='Eire')
                   {elem.style.display='none';}
                else
		   if (act=='show')
		      {elem.style.display='block';}
		   else
		      {elem.style.display='none';}	


		elem = document.getElementById('autumnmoments');
		if (act=='show')
		   {elem.style.display='block';}
		else
		   {elem.style.display='none';}	

		// * special processing for Eire
		elem = document.getElementById('eire');
		if (dataform.ctry.value=='Eire')
		   {
                    if (act=='show')
		       {elem.style.display='block';}
		    else
		       {elem.style.display='none';}
		   }
	        else
		   {
                    elem.style.display='none';
                   }	


	        elem = document.getElementById('address');
		if (act=='show')
		   {elem.style.display='block';}
		else
		   {elem.style.display='none';}



                buttonsdisplay(act)
			   	   
	}


       // *********************************************************************************
       // * this function clears check boxes                                              *
       // *********************************************************************************
	function clrchecks()
	{

	  var elem = document.getElementsByName('acts');
          for (var i = 0; i < elem.length; i++) 
          {
              elem[i].checked = false;
          }


	}


       // *********************************************************************************
       // * this function clears address fields                                           *
       // *********************************************************************************
	function clraddressflds()
	{
	  dataform.add1.value ='';	  
	  dataform.add2.value ='';
	  dataform.add3.value ='';
	  dataform.town.value ='';
	  dataform.county.value ='';
	  dataform.pcode.value ='';
	  dataform.email.value ='';
	}


       // *********************************************************************************
       // * this function clears radio buttons                                            *
       // *********************************************************************************
	function clradio(radioname) 
        {
	  var elem = document.getElementsByName(radioname);
          for (var i = 0; i < elem.length; i++) 
          {
              elem[i].checked = false;
          }
        }

       // *********************************************************************************
       // * this function controls form validation                                        *
       // *********************************************************************************
 	function validate_form(passedform)
	{

	   valid=true;
	   
	   // ***** check title, first name and surname is supplied
           // ***** if invalid change id to the error id in order for css to take effect
	            
	   passedform.title.id = 'deflt';
	   passedform.title.value=strimmer(passedform.title.value);		
	   if (passedform.title.value=="")
	   {  

	    passedform.title.id='error';
	    valid=false;

	   }
 
	   passedform.fname.id = 'deflt';
	   passedform.fname.value=strimmer(passedform.fname.value);		
	   if (passedform.fname.value=="")
	   {  

	    passedform.fname.id='error';
	    valid=false;

	   }
          
	   passedform.sname.id = 'deflt';
	   passedform.sname.value=strimmer(passedform.sname.value);		
	   if (passedform.sname.value=="")
	   {  

	    passedform.sname.id='error';
	    valid=false;

	   }


	   // ***** check address1 and postcode if post or both clicked. 
	   // ***** if invalid change id to the error id in order for css to take effect
	   
	   if ((passedform.postchk.checked)||(passedform.bothchk.checked))       
	   {
	    passedform.add1.id = 'deflt';
	    passedform.add1.value=strimmer(passedform.add1.value);		
	    if (passedform.add1.value=="")
	    {  
 	       passedform.add1.id='error';
	       valid=false;
	    }
	    passedform.pcode.id = 'deflt';

	    // ***** Only check UK postcode
            if (passedform.ctry.value!='Eire')
	    {
	     var pcodevalid = ispostcode(passedform.pcode.value)
	     if (!pcodevalid)
	     {
 	       passedform.pcode.id='error';
	       valid=false;	       
	     }
	    }
	   }	    
	  

	   // ***** check email address if email, both or none clicked. 
	   // ***** if invalid change id to the error id in order for css to take effect
	   
	   if (passedform.bothchk.checked)       
	   {
	    passedform.email.id = 'deflt';
	    passedform.email.value=strimmer(passedform.email.value);		
	    if (passedform.email.value=="")
	    {  
 	       passedform.email.id='error';
	       valid=false;
	    }
            else
	    {
	     var emailvalid = isemail(passedform.email.value)
	     if (!emailvalid)
	     {
 	       passedform.email.id='error';
	       valid=false;	       
	     }
	    }

	   }



	   // ***** check dp2 option is selected
	   // ***** if invalid change backgroundcolor to yellow in this case

	    var elem = document.getElementById('dp2');
	    elem.style.backgroundColor='#FFFFFF';

	    if ((!passedform.postchk.checked) && (!passedform.bothchk.checked))
	    {

		elem.style.backgroundColor='#FFFF00';

		valid=false;
	    }


	   // ***** check at least one brochure has been selected 
	   // ***** if invalid change backgroundcolor to yellow in this case
	   // ***** NOTE - you have to check for an array of values if there is more than one possible brochure
	   // ***** selection which is a bit clunky in javascript
	    var brooption = false;
	    var elem = document.getElementById('brocs');
	    elem.style.backgroundColor='#FFFFFF';
	

	   // ***** Array bit
	   if (typeof(passedform.brocchk.length)!=undefined)
	   {
            for (i=0;i<passedform.brocchk.length;i++)
	    {
	      if (passedform.brocchk[i].checked)
              {
	    	brooption=true;
	      }		
	     }
	   }	
	
	   // ***** Single brochure bit		
	   if (typeof(passedform.brocchk.length)=='undefined')
	   { 

	    if (passedform.brocchk.checked==true)
		{
		    brooption=true;
		}
	   }
	    
	    if (!brooption)
	    {

		elem.style.backgroundColor='#FFFF00';
		valid=false;
	    }


	  // ***** If errors exist alert the user
	   if (!valid)
	   {
	     alert('Please correct the errors in the highlighted areas');
	   }

          // ***** return result of validation	
	
	  if (valid)
             {return true;}
	  else
	     {return false;}

	}

       // *********************************************************************************
       // * this function will reset fields in error back to the deflt style              *
       // *********************************************************************************
	function resetstyling()
	{
   	 for(i=0; i<document.forms[0].elements.length; i++)
	    {
   	     if (document.forms[0].elements[i].id == 'error')
	     	{document.forms[0].elements[i].id = 'deflt';}
            }
	}

       // *********************************************************************************
       // * this function will trim whitespace                                            *
       // *********************************************************************************
	function strimmer (myString)
	{
	 return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
	}

       // *********************************************************************************
       // * this validate any date given in uk format DD/MM/YYYY                          *
       // *********************************************************************************
	function IsDate(dateStr)
	{
	   var matchArray = new Array();
	   matchArray = dateStr.split("/");
	   var datestatus=true;
	   datemsg="";

	   day = matchArray[0];
	   month = matchArray[1];
	   year = matchArray[2];

	   if ( isNaN(day) || isNaN(month) || isNaN(year) )
	   {
		return false;
  	   }

	   if (matchArray == null || day==null || month==null || year==null || year=="") 
	   {
		return false;
	   }
	
	   if (year.length < 4 || year.length > 4)
	   {
		datestatus= false;
	   }

	   if (month < 1 || month > 12)
	   { 
		datestatus=false;
	   }

	   if (day < 1 || day > 31)
	   {
		datestatus=false;
	   }

	   if ((month==4 || month==6 || month==9 || month==11) && day==31)
	   {
		datestatus=false;
	   }

	   if (month == 2)
	   { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap))
		{
			datestatus=false;
	   	}
	   }

	   return datestatus; 
        }

       // *********************************************************************************
       // * this validates uk postcode                                                    *
       // *********************************************************************************
	function ispostcode(StrPost)
	{
	 //var RegEx = /^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$/;
	 var RegEx = /^(GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2})$/;

	 if (StrPost.toUpperCase().match(RegEx))
	 {
		return true;
	 }
	 else
	 {
		return false;
	 }
        }
 
       // *********************************************************************************
       // * this validates email address                                                  *
       // *********************************************************************************	
	function isemail(StrEmail)
	{

	// this regular expression is not complete and requires revision before use
	//	var RegEx = /^[A-Za-z0-9._-]+@[A-Za-z0-9.-]+\.(co.uk|com|org|net)$/;
  	 var RegEx = /^[a-zA-Z0-9\._\-]+@{1}[a-zA-Z0-9\._\-]*\.[a-zA-Z]+$/;

	 if (StrEmail.match(RegEx))
	 {
		return true;
	 }
	 else
	 {
		return false;
	 }
	}

       // *********************************************************************************
       // * this validates numeric flds                                                   *
       // *********************************************************************************
	function IsNumOrNone(StrNum)
	{
	 // StrNum can contain numbers or be empty
	 var RegEx = /^\d*$/;

	 if (StrNum.match(RegEx))
	 {
		return true;
	 }
	 else
	 {
		return false;
	 }
	}

       // *********************************************************************************
       // * this validates numeric flds                                                   *
       // *********************************************************************************
	function IsAlphaOrNone(StrAlpha)
	{

	// StrNum can contain alphabeticals or be empty
	 var RegEx = /^[a-zA-Z]*$/;

	 if (StrAlpha.match(RegEx))
	 {
		return true;
	 }
	 else
	 {
		return false;
	 }
	}
	
       //**********************************************************************************
       //******************** J A V A S C R I P T   E N D S   *****************************
       //**********************************************************************************