	/*
	Name:		LSP Validator
	File:		/js/modules/validateLSP.js
	Version:	2009-07-18
----------------------------------------------- */

/*	ValidateLSP
	Run on submission of LSP_BAC Form
----------------------------------------------- */	
		
	var ValidateLSP = new Class({
	
		
	    initialize: function(){
		
		    //Assume form valid
	        this.isValid = true;
		    this.ValidateMyForm();
		    
	
	    },
	
	    
	    /*This validation routine is quite Q+D but will optimise if I have time*/
	    ValidateMyForm: function(){
	
	        //Concat. Account Number fields
	        $('FDC_INSURANCE_ACCOUNTNO_1').value = $('FDC_INSURANCE_ACCOUNTNO_1_1').value + $('FDC_INSURANCE_ACCOUNTNO_1_2').value + $('FDC_INSURANCE_ACCOUNTNO_1_3').value + $('FDC_INSURANCE_ACCOUNTNO_1_4').value;
	    
	        //Validation (both Mandatory and syntactic)
	        
	        var validresult = this.isValid;
	        	        
	        //16 Digit Account Number
	        if (!uInteger15to16($('FDC_INSURANCE_ACCOUNTNO_1').value)){
	        
	            validresult = false;
	            $('FDC_INSURANCE_ACCOUNTNO_1_LBL').setStyle('display', 'block');
	        
	        }
	        else
	        {
	        
	            $('FDC_INSURANCE_ACCOUNTNO_1_LBL').setStyle('display', 'none');
	        
	        }
	        
	        //FDC_INSURANCE_ACCOUNT_OPT
	        if ($('ACCOUNT_OPT_SINGLE').checked || $('ACCOUNT_OPT_ALL').checked){
	        
	            $('FDC_INSURANCE_ACCOUNT_OPT_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_ACCOUNT_OPT_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //FDC_MainCardHolder
	        if ($('FDC_INSURANCE_MAIN_CARD').checked){
	        
	            $('FDC_INSURANCE_MAIN_CARD_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_MAIN_CARD_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //FDC_MainCardHolder
	        if ($('FDC_INSURANCE_MAIN_CARD').checked){
	        
	            $('FDC_INSURANCE_MAIN_CARD_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_MAIN_CARD_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //First Name
	        if ($('FDC_INSURANCE_FIRSTNAME').value != "" && alphaOnly($('FDC_INSURANCE_FIRSTNAME').value)){
	        
	            $('FDC_INSURANCE_FIRSTNAME_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	             validresult = false;
	            $('FDC_INSURANCE_FIRSTNAME_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //Middle Name - Not Mandatory
	        if ($('FDC_INSURANCE_MIDDLENAME').value == "" || alphaOnly($('FDC_INSURANCE_MIDDLENAME').value)){
	        
	            $('FDC_INSURANCE_MIDDLENAME_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_MIDDLENAME_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //Surname
	        if ($('FDC_INSURANCE_SURNAME').value != "" && alphaOnly($('FDC_INSURANCE_SURNAME').value)){
	        
	            $('FDC_INSURANCE_SURNAME_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_SURNAME_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //DOB
	        var dobItems = $('appForm').getElements('select[name^=FDC_INSURANCE_DOB]');
	        var dobItemsValid = 0
	        
	        dobItems.each(function(item){
	        
	        
	            if (item.value != ""){
	            
	                dobItemsValid = dobItemsValid + 1;
	                
	            
	            }
	           
	        
	        
	        });
	        
	        
	        if (dobItemsValid == 3){
	        
	            $('FDC_INSURANCE_DOB_DATE_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_DOB_DATE_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //Address Line 1
	        if ($('FDC_INSURANCE_HOUSE_STREET').value != ""){
	        
	            $('FDC_INSURANCE_HOUSE_STREET_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_HOUSE_STREET_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //TownCity
	        if ($('FDC_INSURANCE_TOWN_CITY').value != "" && alphaOnly($('FDC_INSURANCE_TOWN_CITY').value)){
	        
	            $('FDC_INSURANCE_TOWN_CITY_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_TOWN_CITY_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //FDC_INSURANCE_COUNTY
	        if ($('FDC_INSURANCE_COUNTY').value != "" && alphaOnly($('FDC_INSURANCE_COUNTY').value)){
	        
	            $('FDC_INSURANCE_COUNTY_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_COUNTY_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //POSTCODE
	        if ($('FDC_INSURANCE_POSTCODE').value != "" && isValidPostcode($('FDC_INSURANCE_POSTCODE').value)){
	            var newPostCode = formatPostcode($('FDC_INSURANCE_POSTCODE').value)
	            $('FDC_INSURANCE_POSTCODE').value = newPostCode.toUpperCase();
	            $('FDC_INSURANCE_POSTCODE_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_POSTCODE_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //Country
	        if ($('FDC_INSURANCE_COUNTRY').value != "Other"){
	        
	            $('FDC_INSURANCE_COUNTRY_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	            
	            $('FDC_INSURANCE_COUNTRY_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //Email Address
	        if ($('FDC_INSURANCE_EMAILADDRESS').value != "" && validateEmail($('FDC_INSURANCE_EMAILADDRESS').value)){
	        
	            $('FDC_INSURANCE_EMAILADDRESS_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_EMAILADDRESS_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //Home Phone
	        if ($('FDC_INSURANCE_HOMEPHONE').value != "" && checkphone($('FDC_INSURANCE_HOMEPHONE').value)){
	        
	            $('FDC_INSURANCE_HOMEPHONE_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_HOMEPHONE_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //Mobile
	        if ($('FDC_INSURANCE_MOBILEPHONE').value == "" || checkphone($('FDC_INSURANCE_MOBILEPHONE').value)){
	        
	            $('FDC_INSURANCE_MOBILEPHONE_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_MOBILEPHONE_LBL').setStyle('display', 'block');
	        
	        }
	        
	        //Confirmation
	        if ($('FDC_INSURANCE_CONFIRM').checked){
	        
	            $('FDC_INSURANCE_CONFIRM_LBL').setStyle('display', 'none');
	        
	        }
	        else
	        {
	        
	            validresult = false;
	            $('FDC_INSURANCE_CONFIRM_LBL').setStyle('display', 'block');
	        
	        }
	                    
	            
	        //Return Result
	        this.isValid = validresult;
	        return this.isValid;
	
	
	    }
	    
	    
	    
	
	
	
	
	
	});
		
		
	//Regular Expressions
	function uInteger15to16(str) {
    
        str = str.replace(/^\s+|\s+$/g, '');
        return /^\d{15,16}$/.test(str);
    
    }
    
    function alphaOnly(str) {
    
        var objRegEx = /[A-Za-z]/;
        return objRegEx.test(str);
    
    }
    
    /* tests to see if string is in correct UK style postcode: AL1 1AB, BM1 5YZ etc. */
    function isValidPostcode(p) {
	    var postcodeRegEx = /[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i;
	    return postcodeRegEx.test(p);
    }
    
    /*	formats a VALID postcode nicely: AB120XY -> AB1 0XY */
    function formatPostcode(p) {
	    if (isValidPostcode(p)) {
		    var postcodeRegEx = /(^[A-Z]{1,2}[0-9]{1,2})([0-9][A-Z]{2}$)/i;
		    return p.replace(postcodeRegEx,"$1 $2");
	    } else {
		    return p;
	    }
    }
    
    function validateEmail(strValue) {
    /************************************************
    DESCRIPTION: Validates that a string contains a
    valid email pattern.

    PARAMETERS:
    strValue - String to be tested for validity

    RETURNS:
    True if valid, otherwise false.

    REMARKS: Accounts for email with country appended
    does not validate that email contains valid URL
    type (.com, .gov, etc.) or valid country suffix.
    *************************************************/
        var objRegExp  = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;


        //check for valid email
        return objRegExp.test(strValue);
        
    }
    
    function checkphone(str){
    
        var telnoRegxp = /^([0-9]{11})$/;
        return telnoRegxp.test(str);
    
    }

