﻿// JScript File

$(function(){
    
        $("#countyrow").hide();
        
        $("#country").change(function(){
        
            if($("#country option:selected").val()=="GB")
            {
               $("#countyrow").show();
            }
            else
            {
                $("#countyrow").hide();
            }
        
        });

});



function validateRegrstraion() 
{
    var valid=true;
    var message="";
    //var type = document.getElementById("selectOption");
    //var index = type.options[type.selectedIndex].value;
    var FirstName = document.getElementById("FirstName").value;
    var LastName = document.getElementById("LastName").value;
    var Email = document.getElementById("Email").value;
    var ConfirmEmail = document.getElementById("ConfirmEmail").value;
    var Username = document.getElementById("Username").value;
    var Password = document.getElementById("Password").value;
    var ConfirmPassword = document.getElementById("ConfirmPassword").value;
    var DateOfBirthDD = document.getElementById("DateOfBirthDD").value;
    var DateOfBirthMM = document.getElementById("DateOfBirthMM").value;
    var DateOfBirthYYYY = document.getElementById("DateOfBirthYYYY").value;
    var Gender = RadioValue();
    var CountyId = document.getElementById("CountyId").options[document.getElementById("CountyId").selectedIndex].value;
    var Country = document.getElementById("country").options[document.getElementById("country").selectedIndex].value;
    var captcha = document.getElementById("captcha").value;
    
    
    if(captcha == "" )
    {
        message += "- \"Image text\" is a mandatory field  \n";
        valid = false;
    } 
    
    
    /////
    if(FirstName == "")
    {
        message += "- \"FirstName\" is a mandatory field  \n";
        valid = false;
    }
    /////
    if(LastName == "")
    {
        message += "- \"LastName\" is a mandatory field  \n";
        valid = false;
    }
    /////
    if(Email == "")
    {
        message += "- \"Email\" is a mandatory field  \n";
        valid = false;
    }
    else
    {
        if(checkMail(Email)==false)
        {
            message += "- \"Email\" address is invalid  \n";
            valid = false;
        }
    }
    if(ConfirmEmail == "")
    {
        message += "- \"Confirm Email\" is a mandatory field  \n";
        valid = false;
    }
    else 
    {
        if(Email!=ConfirmEmail)
        {
            message += "- \"Email\" addresses do not match \n";
            valid = false;
        }
    }
    if(document.getElementById("epass").value=="-1")
    {
        message += "- \"Email\" address already in use  \n";
        valid = false;
    }
    /////
    if(Username == "")
    {
        message += "- \"Username\" is a mandatory field  \n";
        valid = false;
    }
    else
    {
        if(checkAlphanumeric(Username)==false)
        {
            message += "- \"Username\" is invalid. We only accept letters and numbers  \n";
            valid = false;
        }
        if(document.getElementById("upass").value=="-1")
        {
            message += "- \"Username\" already in use  \n";
            valid = false;
        }
    }
    /////
    if(Password == "")
    {
        message += "- \"Password\" is a mandatory field  \n";
        valid = false;
    }
    else if(Password!="")
    {
        if(checkAlphanumeric(Password)==false)
        {
            message += "- \"Password\" is invalid. We only accept letters and numbers  \n";
            valid = false;
        }
    }
    if(ConfirmPassword == "")
    {
        message += "- \"Confirm Password\" is a mandatory field  \n";
        valid = false;
    }
    else 
    {
        if(Password!=ConfirmPassword)
        {
            message += "- \"Passwords\"  do not match \n";
            valid = false;
        }
    }
    /////
    if(Username == Password)
    {
        message += "- \"Username\" and \"Password\" cannot be the same \n";
        valid = false;
    }
    if(DateOfBirthDD == "" || DateOfBirthMM=="" || DateOfBirthYYYY=="")
    {
    
        message += "- \"Date Of Birth\" is a mandatory field  \n";
        valid = false;
    }
    if (!isInteger(DateOfBirthDD) || !isInteger(DateOfBirthMM) || !isInteger(DateOfBirthYYYY))
    {
        message += "- \"Date Of Birth\" is a numerical field\n";
        valid = false;
    }
    else
    {
       
       var DOB = DateOfBirthDD+"/"+DateOfBirthMM+"/"+DateOfBirthYYYY
       
           if(isDate(DOB)==false)
           {
                    message += "- \"Date Of Birth\" is invalid \n";
                    valid = false;
           }
           else
           {
                var age=getAge(DateOfBirthYYYY+"/"+DateOfBirthMM+"/"+DateOfBirthDD);
                if(age<16)
                {
                    message += "- You must be \"16\" years old or over to register with Horsesmouth.co.uk \n";
                    valid = false;
                }
           }
    }
    /////
    if(Gender == "")
    {
        message += "- \"Gender\" is a mandatory field  \n";
        valid = false;
    }
    /////
    if(Country =="GB" && (CountyId == "" || CountyId == "0"))
    {
        message += "- \"County\" is a mandatory field  \n";
        valid = false;
    }
    ////////////////////////
    
     if(Country == "")
    {
        message += "- \"Country\" is a mandatory field  \n";
        valid = false;
    }
    
    if (message != "") 
    {
        alert(message);
    }
    return valid;
   
}

function isEmpty(sFieldName) {
	var oInput = document.getElementById(sFieldName);
	return oInput.value == "";
}

function RadioValue()
{
    var val="";
    for (var i=0; i < document.registration.Gender.length; i++)
    {
        if (document.registration.Gender[i].checked)
        {
            var val = document.registration.Gender[i].value;
        }
    }
    return val;
}
function formatPhoneNumber(sNumber) {
	var	sFormattedNumber = sNumber.replace(/\s/g, "");
	if (sFormattedNumber.substring(0, 1) == "+") sFormattedNumber = sFormattedNumber.substring(1);
	if (sFormattedNumber.substring(0, 3) == "440") sFormattedNumber = sFormattedNumber.substring(3);
	if (sFormattedNumber.substring(0, 1) == "0") sFormattedNumber = sFormattedNumber.substring(1);
	if (sFormattedNumber.substring(0, 2) != "44") sFormattedNumber = "44" + sFormattedNumber;

	return sFormattedNumber;
}

function isValidUKMobileNumber(sNumber) {
	var	oValidator	= /^447[0-9]{9}$/;

	return oValidator.test(sNumber);
}

var oSelectedImage = null;
function selectImage(sImageRef, sSrc) {
    document.getElementById("NewImageName").value = sImageRef;
	document.getElementById("PreviewImage").src = sSrc;
}


// start -- functions for date validation

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

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) {
	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(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	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)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month for your date of birth")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day for your date of birth")
		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
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//message +="Please enter a valid date of birth"
		return false
	}
return true
}


// end -- functions for date validation



function getAge(dateStr) 
{
    //alert("dateStr: "+dateStr);
    var now = new Date();
    var birthdate = new Date(dateStr);
    //alert("birthdate: "+birthdate);
    if(birthdate.getTime() > now.getTime())
        return 0;
    var diff = now.getTime() - birthdate.getTime();
    return Math.floor(diff / (1000*60*60*24*365));
}
function checkMail(email)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email)) return true;
	else return false;
}
function checkAlphanumeric(text)
{
    var filter  = /^[0-9A-Za-z]+$/;
	if (filter.test(text)) return true;
	else return false;
}

function show( info , status) 
{
    document.getElementById(info).style.display = "block";
    document.getElementById(status).style.display = "none";
} 
function hide( info ) 
{
    document.getElementById(info).style.display = "none";
} 
function getStatus( status, signUp, type)
{  
    var value="";
    var marker;
    switch(type)
    {
        case "u":
          value=document.getElementById("Username").value;
          marker=document.getElementById("upass");
          break;    
        case "e":
          value=document.getElementById("Email").value;
          marker=document.getElementById("epass");
          break;
        default:
         //do nothing
    }
    
    
    if(value!= "" && type!="")
    {
        $.ajax
        ({
            type: "GET",
            url: "/_extension/hmapi/api.aspx?section=registration&operation=checkit&value="+value+"&type="+type,
            async: false,
            success: function(msg)
            {  
       
                if(msg=="True")
                {
                    document.getElementById(status).style.display = "block";
                    switch(type)
                    {
                        case "u":
                          document.getElementById("upass").value="-1";
                          break;    
                        case "e":
                          document.getElementById("epass").value="-1";
                          break;
                        default:
                         //do nothing
                    }
                }
                else
                {
                    document.getElementById(status).style.display = "none";
                    switch(type)
                    {
                        case "u":
                          document.getElementById("upass").value="1";
                          break;    
                        case "e":
                          document.getElementById("epass").value="1";
                          break;
                        default:
                         //do nothing
                    }
                }
                
                
                           
            },
            error: function(msg)
            {
                //alert(msg)
            }
        });
    }
}
