var thirdparty;
var dp2;
// **** Added thirdparty initialisation - pk
thirdparty = "";
	
	// ****************************************************************************************************
	// ***** This function evaluates the country selected, updates the hidden value and then displays *****
        // ***** the comms channel fields                                                                 *****
	// ****************************************************************************************************
	function evalctry(ctryval)
	{	


	   commsdisplay('hide');
	   postaldisplay('hide');
	   emaildisplay('hide');
	   datatabs('hide');
	   resetstyling();

           if ((ctryval=='')||(ctryval=='--Please Select--'))
              {
		alert('Please select a country');
              }
	   else
	      {
	   	commsdisplay('show');
	      }

	    var elem=document.getElementById('pcode_hdr');
	    if (ctryval=='Republic of Ireland')
	    {
	       elem.style.display='none';
	    }

	}

	// ****************************************************************************************************
	// ***** This function shows/hides comms channel fields                                           *****
	// ****************************************************************************************************
        function commsdisplay(act)
	{

		var elem = document.getElementById('optin_hdr');
		if (act=='show')
		   {elem.style.display='block';}
		else
		   {elem.style.display='none';}	
		
		elem = document.getElementById('comms_hdr');
		if (act=='show')
		   {elem.style.display='block';}
		else
		   {
	            dataform.postchk.checked=false;
		    dataform.emailchk.checked=false;
                    dataform.bothchk.checked=false;
                    dataform.nonechk.checked=false;
		    elem.style.display='none';
		   }
	}

	// ****************************************************************************************************
	// ***** This function shows/hides fields according to comm channel and third party preferences - pk ****
	// ****************************************************************************************************
	function eval3dp(dpval) 
	{
	    
	    thirdparty = dpval;


            // **** FIRST - CHECK WHAT THE MAIN VS HAS BEEN SET UP TO DO. IF 'N' FOR NEITHER, THIRDPARTY STUFF
            // **** IS IRRELEVANT. SIMILIARLY, IF VS IS 'Y' FOR BOTH EMAIL AND MAIL, THIRDPARTY IS IRRELEVANT
	    // **** THEREFORE WE ONLY NEED TO WORRY IF  VS HAS BEEN SET TO POST OR EMAIL AND THIRDPARTY IS 
	    // **** SET TO A CONFLICTING VALUE

	    if (dp2 == 'P')
	    {
	
	        var elem = document.getElementById('email_hdr');
	     
		if ((thirdparty == 'Y') || (thirdparty == 'E'))
	        {
			if (elem.style.display == 'none') 
			{
				document.dataform.email.value = '';
	            		emailOnlyDisplay('show');
	        	}
		}

		if ((thirdparty == 'P') || (thirdparty == 'N'))
	        {
			if (elem.style.display == 'block') 
			{
				document.dataform.email.value = '';
	            		emailOnlyDisplay('hide');
	        	}
		}

	    }


	    if (dp2 == 'E')
	    {

	        var elem = document.getElementById('add_hdr');
	     
		if ((thirdparty == 'P') || (thirdparty == 'Y'))
	        {
			if (elem.style.display == 'none') 
			{
			  	document.dataform.add1.value = '';
			  	document.dataform.add2.value = '';
			  	document.dataform.add3.value = '';
			  	document.dataform.town.value = '';
			  	document.dataform.county.value = '';
	            		postaldisplay('show');
	        	}
		}

		if ((thirdparty == 'E') || (thirdparty == 'N'))
	        {
			if (elem.style.display == 'block') 
			{
	            	  postaldisplay('hide');
			  document.dataform.add1.value = '';
			  document.dataform.add2.value = '';
			  document.dataform.add3.value = '';
			  document.dataform.town.value = '';
			  document.dataform.county.value = '';
			  emaildisplay('show');
	        	}

                }
           }

	}

	// ****************************************************************************************************
        // ***** This function evaluates which comm channel is selected and displays subsequent fields    *****
	// ****************************************************************************************************
	function evalchkbx(boxval) {

	  dp2 = boxval;

	// **** change to reset thirdparty value if you change the chkbox for the channel - pk
	  thirdparty = "";

	  // * reset the form
	  clraddressflds();
	  datatabs('hide');
	  clrchecks();
	  clradio('statements');
	  clradio('ukhol');
	  clradio('dp');
	  resetstyling();

	  if (boxval=='P')
              {
		emaildisplay('hide');
                dataform.emailchk.checked=false;
                dataform.bothchk.checked=false;
                dataform.nonechk.checked=false;
                postaldisplay('show');
	        datatabs('show');
	      }
	   else if (boxval=='E')
                   {
		    postaldisplay('hide');
                    dataform.postchk.checked=false;
                    dataform.bothchk.checked=false;
                    dataform.nonechk.checked=false;
               	    emaildisplay('show');
	            datatabs('show');
		   }
	           else if (boxval=='Y') 
	               {
			postaldisplay('hide');
			emaildisplay('hide');
                   	dataform.postchk.checked=false;
                    	dataform.emailchk.checked=false;
                        dataform.nonechk.checked=false;
			postaldisplay('show');
			emaildisplay('show');
	                datatabs('show');
                       }
	                else if (boxval=='N') 
	                  {
			    postaldisplay('hide');
			    emaildisplay('hide');
                   	    dataform.postchk.checked=false;
                    	    dataform.emailchk.checked=false;
                    	    dataform.bothchk.checked=false;
			    postaldisplay('show');
			    emaildisplay('show');
	                    buttonsdisplay('show');
                       }


         }
   
	// ************************************************************************************************
	// ***** This function shows/hides email address field                                        *****
	// ************************************************************************************************
        function emaildisplay(act)
	{
		if (dataform.ctry.value!='Republic of Ireland')
		{
		   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 postal address fields                                      *****
    // ************************************************************************************************
    function postaldisplay(act)
    {
	    var elem = document.getElementById('add_hdr');
	    if (act=='show')
	       {elem.style.display='block';}
	    else
	       {elem.style.display='none';}	
    	   
	    if (dataform.ctry.value!='Republic of Ireland')
            {
	       var elem = document.getElementById('pcode_hdr');
	       if (act=='show')
		    {elem.style.display='block';}
	       else
                    {elem.style.display='none';}	
	    }
	}

	// ************************************************************************************************
	// ***** This function shows/hides only the Email Field                                       *****
	// ***** Took out the error message from this section - pk
	// ************************************************************************************************
	function emailOnlyDisplay(act) {
	    var elem = document.getElementById('email_hdr');
	    if (act == 'show') 
            {
	        elem.style.display = 'block';
	        document.dataform.email.value = strimmer(document.dataform.email.value);
	        if (document.dataform.email.value == "") 
                {
	            document.dataform.email.focus();
	        }
	    }
	    else
	    { elem.style.display = 'none'; }
	}


	// ************************************************************************************************
	// ***** This function shows/hides buttons                                                    *****
        // ************************************************************************************************
        function buttonsdisplay(act)
	{
		var 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('thirdtable');

		if (act=='show')
		   {elem.style.display='block';}
		else
		   {elem.style.display='none';}	

		// * special processing for Republic of Ireland
		elem = document.getElementById('fourthtable');
		if (dataform.ctry.value=='Republic of Ireland')
                   {elem.style.display='none';}
                else
		   if (act=='show')
		      {elem.style.display='block';}
		   else
		      {elem.style.display='none';}	


		elem = document.getElementById('fifthtable');
		if (act=='show')
		   {elem.style.display='block';}
		else
		   {elem.style.display='none';}	

		// * special processing for Republic of Ireland
		elem = document.getElementById('sixthtable');
		if (dataform.ctry.value=='Republic of Ireland')
		   {
                    if (act=='show')
		       {elem.style.display='block';}
		    else
		       {elem.style.display='none';}
		   }
	        else
		   {
                    elem.style.display='none';
                   }	

	        elem = document.getElementById('ftr_tab');
		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 - this section changed in various places - pk                                       *
       // *********************************************************************************
 	function validate_form(passedform) {

        var addressFilled = true;
        var emailFilled = true;
	var dtlsfilled = true;

	   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;
	    dtlsfilled = false

	   }
 
	   passedform.fname.id = 'deflt';
	   passedform.fname.value=strimmer(passedform.fname.value);		
	   if (passedform.fname.value=="")
	   {  

	    passedform.fname.id='error';
	    valid=false;
	    dtlsfilled = false;

	   }
          
	   passedform.sname.id = 'deflt';
	   passedform.sname.value=strimmer(passedform.sname.value);		
	   if (passedform.sname.value=="")
	   {  

	    passedform.sname.id='error';
	    valid=false;
	    dtlsfilled= false;

	   }
	   
	   // ***** check address1,town and postcode if post or both or none or post clicked. 
	   // ***** if invalid change id to the error id in order for css to take effect

	   if ((passedform.postchk.checked) || (passedform.bothchk.checked) || (thirdparty == 'P') || (thirdparty == "Y")) 
           {
	       passedform.add1.id = 'deflt';
	       passedform.add1.value = strimmer(passedform.add1.value);
	       if (passedform.add1.value == "") 
               {
	           passedform.add1.id = 'error';
	           valid = false;
	           addressFilled = false;
	       }

	       passedform.town.id = 'deflt';
	       passedform.town.value = strimmer(passedform.town.value);
	       if (passedform.town.value == "") 
               {
	           passedform.town.id = 'error';
	           valid = false;
	           addressFilled = false;
	       }

	       passedform.pcode.id = 'deflt';

	       // ***** Only check UK postcode
	       if (passedform.ctry.value != 'Republic of Ireland') 
               {
	           var pcodevalid = ispostcode(passedform.pcode.value)
	           if (!pcodevalid) 
                   {
	               passedform.pcode.id = 'error';
	               valid = false;
	               addressFilled = false;
	           }
	       }
	   }
	   else 
           {
	       addressFilled = 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.emailchk.checked) || (passedform.bothchk.checked) || (passedform.nonechk.checked)) 
           {
	       passedform.email.id = 'deflt';
	       passedform.email.value = strimmer(passedform.email.value);
	       if (passedform.email.value == "") 
               {
	           // **** Addedd nonechk - pk
		   if ((passedform.emailchk.checked) || (passedform.bothchk.checked) || (passedform.nonechk.checked)) 
                   {
	               passedform.email.id = 'error';
	               valid = false;
	           }
	           emailFilled = false;
	       }
	       else 
               {
	           var emailvalid = isemail(passedform.email.value)
	           if (!emailvalid) 
                   {
	               passedform.email.id = 'error';
	               valid = false;
	               emailFilled = false;
	           }
	       }
	       passedform.pcode.id = 'deflt';

	       // ***** Only check UK postcode
	       if (passedform.ctry.value != 'Republic of Ireland') 
               {
	           var pcodevalid = ispostcode(passedform.pcode.value)
	           if (!pcodevalid) 
                   {
	               passedform.pcode.id = 'error';
	               valid = false;
	           }
	       }
	       addressFilled = false;
	   }

	   var elem = document.getElementById('email_hdr');
	   if (elem.style.display == 'block') 
           {
	       passedform.email.id = 'deflt';
	       passedform.email.value = strimmer(passedform.email.value);
	       if (passedform.email.value == "") 
               {
		   // **** added nonechk - pk

	           if ((passedform.emailchk.checked) || (passedform.bothchk.checked) || (passedform.nonechk.checked)) 
                   {
	               passedform.email.id = 'error';
	               valid = false;
	               emailFilled = false;
	           }
	       }
	       else 
               {
	           var emailvalid = isemail(passedform.email.value)
	           if (!emailvalid) 
                   {
	               passedform.email.id = 'error';
	               valid = false;
	               emailFilled = false;
	           }
	       }
	   }
	   
	   // ***** check data protection questions 
	   // ***** if invalid change backgroundcolor to yellow in this case

	    var elem = document.getElementById('radio2');
	    elem.style.backgroundColor='#FFFFFF';

	    var dpoption = false;	 		
	    for (i=0;i<passedform.dp.length;i++)
	    {
	     if (passedform.dp[i].checked)
             {
	    	dpoption=true;
	     }		
	    }  
	
        if ((!dpoption) && (!passedform.nonechk.checked))
        {
            elem.style.backgroundColor='#FFFF00';
            valid=false;
        }

        if (addressFilled == false) 
        {
            passedform.add1.value = strimmer(passedform.add1.value);
            passedform.town.value = strimmer(passedform.town.value);
            if ((passedform.add1.value == "") || (passedform.town.value == "")) 
            {
                addressFilled = false;
            }
            else 
            {
                addressFilled = true;
            }
        }

        if ((thirdparty == 'Y' || thirdparty == 'P') && (addressFilled == false)) 
        {
            valid = false;
        }


	// ***** check for post and thirdparty = email/both - pk
	
	if ((passedform.email.value == "") && ((thirdparty == 'E') || (thirdparty =='Y')))
        {
           passedform.email.id = 'error';
	   valid = false;
	   emailFilled = false;
	}


        // ***** If errors exist alert the user - this whole section changed - pk
        if (!valid)
        {

            if (passedform.nonechk.checked)
            {
                alert('You have entered a VisitScotland competition. Please correct the errors in the highlighted areas as in the event of winning this competition we will need this information');
            }
            else 
            {
            	if (thirdparty=='N') 
                {
                       alert('You have agreed to receive more information from VisitScotland but have not provided the required contact information – please correct the highlighted areas');
                }
                else 
                {

		       alert('You have agreed to receive more information from VisitScotland and the company(ies) that provided this prize but have not provided the required contact information. 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';}
            }

	    var elem=document.getElementById('radio2');
            elem.style.backgroundColor='#ffffff';


	}

       // *********************************************************************************
       // * 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   *****************************
       //**********************************************************************************
