/*
<!-- -----------------------------------------------------------------------------------    -->
<!-- Source Control Id: $Id: UserValidation.js,v 1.8 2010/12/10 12:36:13 henning Exp $              -->
<!--                                                                                        -->
<!-- GlobeTOM Copyright Notice                                                              -->
<!-- All source code contained in this source file is protected by Copyright Laws of the    -->
<!-- Republic of South Africa. It is a copyright infringement to use this file as a whole   -->
<!-- or any part thereof without obtaining prior writtent consent from GlobeTOM.            -->
<!--                                                                                        -->
<!-- (c) GlobeTOM, 2008                                                                     -->
<!-- ------------------------------------------------------------------------------------   -->
<!--Source Control Id: $Id: UserValidation.js,v 1.8 2010/12/10 12:36:13 henning Exp $-->    
*/


function LoadDisplay()
{
  if (document.UserRegistration.pIsMember[0].checked)
   {
     trMemClub.style.display="";
     dAlt.style.visibility="";
     if (document.UserRegistration.pAction.value == "MEMBER CLASS" && document.UserRegistration.pClubID.value!="0") 
       trMemType.style.display="";
       trMemNr.style.display="";
       //trMemTypeRes.style.display="hidden";
       dAlt.style.visibility="hidden";
   }
  else
   {
     trMemClub.style.display="none";
     trMemType.style.display="none";
     trMemTypeRes.style.display="none";
     trMemNr.style.display="none";
   }  
}

function Aff_Changed(obj)
   {
     var tr1 = document.getElementById("trMemClub");
     var tr2 = document.getElementById("trMemType"); 
     var tr3 = document.getElementById("trMemTypeRes");
     var tr4 = document.getElementById("trMemNr");
     obj.checked=true;
     
     if (obj.value=="T") 
               {
                 tr1.style.display="";
                 tr2.style.display="";
                 tr4.style.display="";

                 if (tr3!=null)
                    tr3.style.display="";

                 document.UserRegistration.pClubName.focus();
               }
     else
               {                
                 tr1.style.display="none";
                 if (tr2!=null)
                     {
                         tr2.style.display="none";
                         tr4.style.display="none";
                     }
                   

                 if (tr3!=null)
                    {
                        tr3.style.display="none";
                        tr4.style.display="none";
                    }
                    
               }
   }

function get_member_classes(club_name,club_id)
   {
      document.UserRegistration.pClubID.value = club_id;
      document.UserRegistration.pClubName.value = club_name;

      document.getElementById('memclasses').innerHtml = "<select name='pMemberTypeIDz' id='pMemberTypeIDz'></select>";

      var md = document.getElementById("Listdiv");
      md.style.visibility='hidden';
  
      var ad = document.getElementById("dAlt");
      ad.style.visibility='hidden';

      ajax_progress_message('Retrieving Club Member Classes - please wait...');     
      ajax_request(document.UserRegistration,'ajax/ajax_handler.jsp?id=1','memclasses','ajax_error',false)
   }
   
function populateList()
{
 
  var frm = document.UserRegistration;
  var ux = frm.pClubName.value.toUpperCase();
  var st="";
  var md = document.getElementById("Listdiv");
  var ad = document.getElementById("dAlt");
  ad.style.visibility="hidden";
  frm.pClubID.value="0";
  
  if (ux.length<2)
  {
     md.style.visibility="hidden";
     md.innerHTML="";
     return;
  }
     
  for (i=0;i<sList.length;i++)
  {
  ss = new String(sList[i][1]);
  ss = ss.toUpperCase();
     if (ss.indexOf(ux) > -1)
     {
        st = st + "<tr><td><a href=\"JavaScript: get_member_classes('"+sList[i][1]+"','"+sList[i][0]+"');\"><b>"+sList[i][1]+"</b></a></td></tr>";
     }   
  }

  if (st=="")
    md.style.visibility="hidden";
  else
  {
    md.innerHTML="<table>"+st+"</table>";
    md.style.visibility="";
  }  
}



//DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2004;

function isInteger(s)
{
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	  // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
  // Populate the number of days for each month e.g. Jan has 31 days / Feb has 28 days etc..
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}
function isDate(dd, mnd, jj)
{
	var daysInMonth = DaysArray(12)
	var strDay=dd
	var strMonth=mnd
	var strYear=jj
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month!")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid date of birth combination!")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
return true
}


function validateForm()
{
  var pFrm = document.UserRegistration;
  var vEmail = new String(pFrm.pEmail.value);
  
  if (email_address(vEmail) != true)
  {
    alert("The email address entered appears to be invalid, please enter a valid email address");
    pFrm.pEmail.focus();
    return;
  }
  
  if (pFrm.pEmail.value != pFrm.pEmailConfirm.value)
  {
    alert("Please verify that you have entered the correct email address");
    pFrm.pEmailConfirm.focus();
    return;
  }

  if (pFrm.pPassword.value.length < 5)
  {
    alert("The password you entered is too short");
    pFrm.pPassword.focus();
    return;
  }

  if (pFrm.pPassword.value.length > 16)
  {
    alert("The password you entered is too long");
    pFrm.pPassword.focus();
    return;
  }
  
  if (pFrm.pPassword.value != pFrm.pPasswordConfirm.value)
  {
     alert("Password and confirmed passwords do not match");
     pFrm.pPassword.focus();
     return
  }

      if (pFrm.pTitles.value == "...")
         {
          alert("Please select your title!");
          pFrm.pTitles.focus();
          return;
         }

 if (pFrm.pInitials.value.length < 1)
  {
    alert("Please enter your initials");
    pFrm.pInitials.focus();
    return;
  }

  
  if (pFrm.pFirstName.value.length < 1)
  {
    alert("Please enter your first name");
    pFrm.pFirstName.focus();
    return;
  }
  
  if (pFrm.pSurname.value.length < 1)
  {
    alert("Please enter your surname");
    pFrm.pSurname.focus();
    return;
  }

  if (!pFrm.pGender[0].checked && !pFrm.pGender[1].checked)
  {
    alert("Please indicate whether you are a gentleman or lady golfer");
    return;
  }  

if (pFrm.pCountry.value == "ZA")
{
   if (!validateID(pFrm.pIDNumber.value))
   {
       alert("Please enter a valid South African ID Number");
       pFrm.pIDNumber.focus();
       return;
   }
}
else
{
      if (pFrm.pIDNumber.value.length < 6)
      {
            alert("Please enter a valid Passport Number");
            pFrm.pIDNumber.focus();
            return;
      } 
}

 if (pFrm.pYear.value == "1960" && pFrm.pMonth.value == "02" && pFrm.pDay.value == "30")
  {
    alert("Please select a valid date-of-birth");
    pFrm.pYear.focus();
    return;
  }


  if (pFrm.pTel.value.length < 1)
  {
    alert("Please enter a phone number");
    pFrm.pTel.focus();
    return;
  }

   if (isDate(pFrm.pDay[pFrm.pDay.options.selectedIndex].value,pFrm.pMonth[pFrm.pMonth.options.selectedIndex].value,pFrm.pYear[pFrm.pYear.options.selectedIndex].value)==false){
           pFrm.pDay.focus()
           return false;
   }


  var GoodChars = "0123456789()-+ ";
  for (i=0; i <= pFrm.pTel.value.length -1; i++)
  { if (GoodChars.indexOf(pFrm.pTel.value.charAt(i)) == -1) {
                       alert("You cannot enter the character \"" + pFrm.pTel.value.charAt(i) + "\" as a phone number;");
                       pFrm.pTel.focus();
                       return;
               } // End if statement
  } // End for loop
        
  var vIsMember;
  
  for (i=0;i<pFrm.pIsMember.length;i++)
  {
    if (pFrm.pIsMember[i].checked)
       vIsMember = pFrm.pIsMember[i].value;    
  }
  

  if (vIsMember=="T")
  {
      if (pFrm.pClubID.value=="" || pFrm.pClubID.value=="0")
         {
          alert("Please select your Affiliated Club from the list!");
          pFrm.pClubName.focus();
          return;               
         }

               var ffox_obj = document.getElementById("pMemberTypeIDz");
               pFrm.pMemberTypeID.value = ffox_obj.options[ffox_obj.selectedIndex].value;

      if (pFrm.pMemberTypeID.value == "...")
         {
          alert("Please select your correct member class!");
          pFrm.focus();
          return;  
         }

      if (pFrm.pMemberNr.value == "")
         {
          alert("Please enter your club membership number!");
          pFrm.pMemberNr.focus();
          return;
         }
         else
         {
             if (!isInteger(pFrm.pMemberNr.value))
             {
                alert("Please enter a valid club membership number [Numbers Only]!");
                pFrm.pMemberNr.focus();
                return;
             }

             if (pFrm.pMemberNr.value.length > 10)
                 {
                    alert("Please enter a valid club membership number [Max 10 Digits]!");
                    pFrm.pMemberNr.focus();
                    return;
                 }
         }

  } 

  if (vIsMember=="F")
  {
      pFrm.pClubID.value="";
      pFrm.pClubName.value="";
      pFrm.pMemberNr.value="";
  }
    
    if (!pFrm.pConfirmTerms.checked)
    {
      alert("Please accept the Terms and Conditions for registering on this site.");
      return;
    }
    
    if (pFrm.pNotifyFeatures.checked)
    { pFrm.pNotifyFeatures.value="T"; }
    else
    { pFrm.pNotifyFeatures.value="F"; }

    if (pFrm.pNotifyPromotions.checked)
    { pFrm.pNotifyPromotions.value="T"; }
    else
    { pFrm.pNotifyPromotions.value="F"; }

    if (pFrm.pNotifyNewCourse.checked)
    { pFrm.pNotifyNewCourse.value="T"; }
    else
    { pFrm.pNotifyNewCourse.value="F"; }

    pFrm.pAction.value = "REGISTER";
    pFrm.submit();
}

function Clear(obj)
{
  obj.checked=false;
}



function ClubSelectSubmit()
{
  document.UserRegistration.pAction.value = "MEMBER CLASS";
  document.UserRegistration.submit();
}

function email_address(str) 
{
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1)
                {
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
                {
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
                {
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1)
                 {
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
                 {
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1)
                 {
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1)
                 {
		    return false;
		 }

 		 return true;					
}


function validateID(idVal)
{

   if (idVal.length != 13)
   {
      return false;
   }
   
   var checkDigit = parseInt(idVal.charAt(idVal.length - 1));
   var odd = 0;
   var even = "";
   var evenResult = 0;
   var result;
   for(var c = 1; c <= idVal.length; c++)
   {
      if(c % 2 == 0)
      {
         even += idVal.charAt(c - 1);
      } else
      {
         if(c == idVal.length)
         {
            continue;
         } 
         else
         {
            odd = (parseInt(odd) + parseInt(idVal.charAt(c - 1)));
         }
      }
   }

   even = (Number(even) * 2);
   even = even.toString();

   for(var r = 1; r <= even.length; r++)
   {
   evenResult = (parseInt(evenResult) + parseInt(even.charAt(r - 1)));
   }

   result = (parseInt(odd) + parseInt(evenResult));
   result = result.toString();
   result = (10 - parseInt(result.charAt(result.length - 1)));
   result = result.toString();

   if(result.length > 1)
   {
      result = result.charAt(result.length - 1);
   }

   if(parseInt(result) != checkDigit)
   {
      return false;
   } 
   else
   {
      return true;
   }
} 


