﻿
function validatePersonalDetails()
{
    var formIsValid = true;

    var clientName = $('accountContent').getElementById('deliveryNameTxt');
    var clientPhone = $('accountContent').getElementById('deliveryPhoneTxt');
    var clientAddress = $('accountContent').getElementById('deliveryAddressTxt');
    var clientTown = $('accountContent').getElementById('deliveryTownTxt');
    var clientState = $('accountContent').getElementById('deliveryStateTxt');
    var clientZip = $('accountContent').getElementById('deliveryZipTxt');
    var nameAlphaNumeric = /^[A-Za-z0-9 ]+$/;

    if(clientZip.get('value') == "")
    {
        clientZip.focus();
        clientZip.getNext('span').set('text',' * required');
        clientZip.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientZip.getNext('span').set('text',' ');
    }
    
    if(clientState.get('value') == "")
    {
        clientState.focus();
        clientState.getNext('span').set('text',' * required');
        clientState.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientState.getNext('span').set('text',' ');
    }
    
    if(clientTown.get('value') == "")
    {
        clientTown.focus();
        clientTown.getNext('span').set('text',' * required');
        clientTown.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientTown.getNext('span').set('text',' ');
    }

    if(clientAddress.get('value') == "")
    {
        clientAddress.focus();
        clientAddress.getNext('span').set('text',' * required');
        clientAddress.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientAddress.getNext('span').set('text',' ');
    }
    
    if(clientPhone.get('value') == "")
    {
        clientPhone.focus();
        clientPhone.getNext('span').set('text',' * required');
        clientPhone.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientPhone.getNext('span').set('text',' ');
    }

    if(clientName.get('value') == "")
    {
        clientName.focus();
        clientName.getNext('span').set('text',' * required');
        clientName.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientName.getNext('span').set('text',' ');
    }

    if($('addressDifferentCB').checked == true)
    {
        var clientAddress = $('accountContent').getElementById('billingAddressTxt');
        var clientTown = $('accountContent').getElementById('billingTownTxt');
        var clientState = $('accountContent').getElementById('billingStateTxt');
        var clientZip = $('accountContent').getElementById('billingZipTxt');

        if(clientZip.get('value') == "")
        {
            clientZip.focus();
            clientZip.getNext('span').set('text',' * required');
            clientZip.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientZip.getNext('span').set('text',' ');
        }
        
        if(clientState.get('value') == "")
        {
            clientState.focus();
            clientState.getNext('span').set('text',' * required');
            clientState.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientState.getNext('span').set('text',' ');
        }
        
        if(clientTown.get('value') == "")
        {
            clientTown.focus();
            clientTown.getNext('span').set('text',' * required');
            clientTown.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientTown.getNext('span').set('text',' ');
        }

        if(clientAddress.get('value') == "")
        {
            clientAddress.focus();
            clientAddress.getNext('span').set('text',' * required');
            clientAddress.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientAddress.getNext('span').set('text',' ');
        }
    }
    
    return formIsValid;
}

function validateAddressDetails()
{
    var formIsValid = true;

    var clientAddress = $('checkoutForm').getElementById('deliveryAddressTxt');
    var clientTown = $('checkoutForm').getElementById('deliveryTownTxt');
    var clientState = $('checkoutForm').getElementById('deliveryStateTxt');
    var clientZip = $('checkoutForm').getElementById('deliveryZipTxt');
    var nameAlphaNumeric = /^[A-Za-z0-9 ]+$/;

    if(clientZip.get('value') == "")
    {
        clientZip.focus();
        clientZip.getNext('span').set('text',' * required');
        clientZip.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientZip.getNext('span').set('text',' ');
    }
    
    if(clientState.get('value') == "")
    {
        clientState.focus();
        clientState.getNext('span').set('text',' * required');
        clientState.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientState.getNext('span').set('text',' ');
    }
    
    if(clientTown.get('value') == "")
    {
        clientTown.focus();
        clientTown.getNext('span').set('text',' * required');
        clientTown.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientTown.getNext('span').set('text',' ');
    }

    if(clientAddress.get('value') == "")
    {
        clientAddress.focus();
        clientAddress.getNext('span').set('text',' * required');
        clientAddress.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientAddress.getNext('span').set('text',' ');
    }
    
    if($('addressDifferentCB').checked == true)
    {
        var clientAddress = $('checkoutForm').getElementById('billingAddressTxt');
        var clientTown = $('checkoutForm').getElementById('billingTownTxt');
        var clientState = $('checkoutForm').getElementById('billingStateTxt');
        var clientZip = $('checkoutForm').getElementById('billingZipTxt');

        if(clientZip.get('value') == "")
        {
            clientZip.focus();
            clientZip.getNext('span').set('text',' * required');
            clientZip.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientZip.getNext('span').set('text',' ');
        }
        
        if(clientState.get('value') == "")
        {
            clientState.focus();
            clientState.getNext('span').set('text',' * required');
            clientState.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientState.getNext('span').set('text',' ');
        }
        
        if(clientTown.get('value') == "")
        {
            clientTown.focus();
            clientTown.getNext('span').set('text',' * required');
            clientTown.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientTown.getNext('span').set('text',' ');
        }

        if(clientAddress.get('value') == "")
        {
            clientAddress.focus();
            clientAddress.getNext('span').set('text',' * required');
            clientAddress.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientAddress.getNext('span').set('text',' ');
        }
    }
    
    return formIsValid;
}

function validatePaymentDetails()
{
    var formIsValid = true;

    var creditCardTypes = $('checkoutForm').getElementById('creditCardTypes');
    var nameOnCard = $('checkoutForm').getElementById('nameOnCard');
    var plainCardNum = $('checkoutForm').getElementById('plainCardNum');
    var expirationMonth = $('checkoutForm').getElementById('expirationMonth');
    var expirationYear = $('checkoutForm').getElementById('expirationYear');
    var cvc = $('checkoutForm').getElementById('cvc');
    var issue = $('checkoutForm').getElementById('issue');
    var cvcDigitRegExp = /(^\d{3}$)|(^\d{4}$)/; // 3 or 4 numbers
    var issueDigitRegExp = /(^\d{0}$)|(^\d{1}$)|(^\d{2}$)/; // 1 or 2 numbers
    var creditCardRegExp = /(^\d{12}$)|(^\d{13}$)|(^\d{14}$)|(^\d{15}$)|(^\d{16}$)|(^\d{18}$)|(^\d{19}$)/; // 12,13,14,15,16,18 or 19 digits
    var nameAlphaNumeric = /^[A-Za-z0-9 ]+$/;

		if(issue.get('value').search(issueDigitRegExp))
    {
        issue.focus();
        issue.getNext('span').set('text','  * invalid');
        issue.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        issue.getNext('span').set('text',' ');
    }



    if(cvc.get('value') == "")
    {
        cvc.focus();
        cvc.getNext('span').set('text',' * required');
        cvc.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else if(cvc.get('value').search(cvcDigitRegExp))
    {
        cvc.focus();
        cvc.getNext('span').set('text',' * invalid');
        cvc.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        cvc.getNext('span').set('text',' ');
    }
    
    if(expirationMonth.get('value') == "" || expirationYear.get('value') == "")
    {
        expirationYear.focus();
        expirationYear.getNext('span').set('text',' * required');
        expirationYear.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        expirationYear.getNext('span').set('text',' ');
    }
    
    if(plainCardNum.get('value') == "")
    {
        plainCardNum.focus();
        plainCardNum.getNext('span').set('text',' * required');
        plainCardNum.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else if(plainCardNum.get('value').search(creditCardRegExp))
    {
        plainCardNum.focus();
        plainCardNum.getNext('span').set('text',' * invalid');
        plainCardNum.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else if(!luhn(plainCardNum.get('value')))
    {
        plainCardNum.focus();
        plainCardNum.getNext('span').set('text',' * invalid');
        plainCardNum.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        plainCardNum.getNext('span').set('text',' ');
    }
            
    if(nameOnCard.get('value') == "")
    {
        nameOnCard.focus();
        nameOnCard.getNext('span').set('text',' * required');
        nameOnCard.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else if(nameOnCard.get('value').search(nameAlphaNumeric))
    {
        nameOnCard.focus();
        nameOnCard.getNext('span').set('text',' * invalid');
        nameOnCard.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        nameOnCard.getNext('span').set('text',' ');
    }
            
    if(creditCardTypes.get('value') == "")
    {
        creditCardTypes.focus();
        creditCardTypes.getNext('span').set('text',' * required');
        creditCardTypes.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        creditCardTypes.getNext('span').set('text',' ');
    }

		return formIsValid;
}

function validateLogin()
{
    var formIsValid = true;
    var clientEmail = $('checkoutForm').getElementById('username');
    var password = $('checkoutForm').getElementById('password');

    if(password.get('value') == "")
    {
        password.focus();
        password.getNext('span').set('text',' * required');
        password.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        password.getNext('span').set('text',' ');
    }


    if(clientEmail.get('value') == "")
    {
        clientEmail.focus();
        clientEmail.getNext('span').set('text',' * required');
        clientEmail.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        if(!checkEmail(clientEmail.get('value')))
        {
            clientEmail.focus();
            clientEmail.getNext('span').set('text',' * invalid');
            clientEmail.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientEmail.getNext('span').set('text',' ');
        }
    }
    return formIsValid;
}

function validateNewPassword()
{
    var formIsValid = true;
    var passwordNew = $('checkoutForm').getElementById('passwordNew');
    var passwordNewConfirm = $('checkoutForm').getElementById('passwordNewConfirm');
    var passwordCurrent = $('checkoutForm').getElementById('passwordCurrent');

    if(passwordCurrent.get('value') == "")
    {
        passwordCurrent.focus();
        passwordCurrent.getNext('span').set('text',' * required');
        passwordCurrent.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        passwordCurrent.getNext('span').set('text',' ');
    }


    if(passwordNew.get('value') == "")
    {
        passwordNew.focus();
        passwordNew.getNext('span').set('text',' * required');
        passwordNew.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
				if(passwordNew.get('value').length < 6)
				{
						passwordNew.focus();
						passwordNew.getNext('span').set('text','minimum 6 characters required');
						passwordNew.getNext('span').addClass('validationActive');
						formIsValid = false;
				}
				else
				{
					passwordNew.getNext('span').set('text',' ');
				}
    }

    if(passwordNewConfirm.get('value') == "")
    {
        passwordNewConfirm.focus();
        passwordNewConfirm.getNext('span').set('text',' * required');
        passwordNewConfirm.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        passwordNewConfirm.getNext('span').set('text',' ');
    }
    
    if(passwordNewConfirm.get('value') != passwordNew.get('value') && formIsValid)
    {
				passwordNew.getNext('span').set('text','* must match');
        formIsValid = false;
		}

    return formIsValid;
		
}

function validateNewUser()
{
    var formIsValid = true;
    var clientEmail = $('checkoutForm').getElementById('usernameNew');
    var password = $('checkoutForm').getElementById('passwordNew');
    var passwordConfirm = $('checkoutForm').getElementById('passwordNewConfirm');

    if(password.get('value') == "")
    {
        password.focus();
        password.getNext('span').set('text',' * required');
        password.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
				if(password.get('value').length < 6)
				{
						password.focus();
						password.getNext('span').set('text','6+ characters required');
						password.getNext('span').addClass('validationActive');
						formIsValid = false;
				}
				else
				{
					password.getNext('span').set('text',' ');
				}
    }

    if(passwordConfirm.get('value') == "")
    {
        passwordConfirm.focus();
        passwordConfirm.getNext('span').set('text',' * required');
        passwordConfirm.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        passwordConfirm.getNext('span').set('text',' ');
    }
    
    if(passwordConfirm.get('value') != password.get('value') && formIsValid)
    {
				password.getNext('span').set('text','* passwords do not match');
        formIsValid = false;
		}

    if(clientEmail.get('value') == "")
    {
        clientEmail.focus();
        clientEmail.getNext('span').set('text',' * required');
        clientEmail.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        if(!checkEmail(clientEmail.get('value')))
        {
            clientEmail.focus();
            clientEmail.getNext('span').set('text',' * invalid');
            clientEmail.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientEmail.getNext('span').set('text',' ');
        }
    }
    return formIsValid;
		
}

function validateEmails()
{
    var formIsValid = true;
    var clientEmail = $('username');
    var clientEmailConfirm = $('usernameConfirm');

    if(clientEmail.get('value') == "")
    {
        clientEmail.focus();
        clientEmail.getNext('span').set('text',' * required');
        clientEmail.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        if(!checkEmail(clientEmail.get('value')))
        {
            clientEmail.focus();
            clientEmail.getNext('span').set('text',' * invalid');
            clientEmail.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientEmail.getNext('span').set('text',' ');
        }
    }
    
    if(clientEmailConfirm.get('value') != clientEmail.get('value') && formIsValid)
    {
				clientEmailConfirm.getNext('span').set('text','* passwords do not match');
        formIsValid = false;
		}

    return formIsValid;
}


//When country DDL is altered
var loginUserChange = function ()
{
    var selectOptions;
    if($('changeUserRB').checked == true)
    {
        $('newCustTitle').removeClass('hidden');
        $('newCustLogin').removeClass('hidden');
        $('returningCustTitle').addClass('hidden');
        $('returnCustLogin').addClass('hidden');
    }
    else
    {
        $('returningCustTitle').removeClass('hidden');
        $('returnCustLogin').removeClass('hidden');
        $('newCustTitle').addClass('hidden');
        $('newCustLogin').addClass('hidden');
    }
        
};
var countryChange = function ()
{
    if (Cookie.read("shoppingCart"))
    {
        var selectOptions;
        if($('addressDifferentCB').checked == true)
        {
            if($('billingTitle').hasClass('hidden'))
            {
                $('billingTitle').removeClass('hidden');
                $('billingDetails').removeClass('hidden');
                $('billingTitle').addClass('visible');
                $('billingDetails').addClass('visible');
            }
            selectOptions = $('billingCountryTxt');
        }
        else
        {
            if($('billingTitle').hasClass('visible'))
            {
                $('billingTitle').removeClass('visible');
                $('billingDetails').removeClass('visible');
                $('billingTitle').addClass('hidden');
                $('billingDetails').addClass('hidden');
            }
        }
    }
};

function validateForm()
{
    var formIsValid = true;
    var clientName = $('contactForm').getElementById('nameTxt');
    var clientEmail = $('contactForm').getElementById('emailTxt');
    var clientEnquiry = $('contactForm').getElementById('enquiryTxt');

    if(clientEnquiry.get('value') == "")
    {
        clientEnquiry.focus();
        clientEnquiry.getNext('span').set('text',' * required');
        clientEnquiry.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientEnquiry.getNext('span').set('text',' ');
    }
    
        
    if(clientEmail.get('value') == "")
    {
        clientEmail.focus();
        clientEmail.getNext('span').set('text',' * required');
        clientEmail.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        if(!checkEmail(clientEmail.get('value')))
        {
            clientEmail.focus();
            clientEmail.getNext('span').set('text',' * invalid');
            clientEmail.getNext('span').addClass('validationActive');
            formIsValid = false;
        }
        else
        {
            clientEmail.getNext('span').set('text',' ');
        }
    }

    if(clientName.get('value') == "")
    {
        clientName.focus();
        clientName.getNext('span').set('text',' * required');
        clientName.getNext('span').addClass('validationActive');
        formIsValid = false;
    }
    else
    {
        clientName.getNext('span').set('text',' ');
    }
    return   formIsValid;
}

function checkEmail(email)
{
    var filter = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (!filter.test(email))
    {
        return false;
    }
    else
    {
        return true;
    }

}

function luhn (cc) { 
   var sum = 0; 
   var i; 
  
   for (i = cc.length - 2; i >= 0; i -= 2) { 
      sum += Array (0, 2, 4, 6, 8, 1, 3, 5, 7, 9) [parseInt (cc.charAt (i), 10)]; 
   } 
   for (i = cc.length - 1; i >= 0; i -= 2) { 
      sum += parseInt (cc.charAt (i), 10); 
   } 
   return (sum % 10) == 0; 
}