﻿
function CheckRadioGroupOptionSelected( intFormIndex, strRadioOptionsGroupName )
{
    var fChecked = false;
    var intIndex = 0;
    var rdoRadioOptions = eval( "document.forms[ " + intFormIndex + " ].elements[ '" + strRadioOptionsGroupName + "' ];" );
    
    while ( intIndex < rdoRadioOptions.length && fChecked == false )
    {
        fChecked = rdoRadioOptions[ intIndex ].checked;
        intIndex++;
    }
    
    return fChecked;
}

function CompareDates( strDate1InYYYYMMDDFormat, strDate2InYYYYMMDDFormat, strComparisonRule )
{
    var datDate1 = new Date();
    var datDate2 = new Date();
    var fValid;
    var intDate1Parts = strDate1InYYYYMMDDFormat.split( "/" );
    var intDate2Parts = strDate2InYYYYMMDDFormat.split( "/" );
    var intDateDiff;
    
    fValid = ValidateDate( intDate1Parts[ 0 ], intDate1Parts[ 1 ], intDate1Parts[ 2 ] );
    
    if ( fValid == true )
        fValid = ValidateDate( intDate2Parts[ 0 ], intDate2Parts[ 1 ], intDate2Parts[ 2 ] );
    
    if ( fValid == true )
    {
        intDateDiff = DateDiffInMilliseconds( intDate1Parts[ 0 ], intDate1Parts[ 1 ], intDate1Parts[ 2 ], intDate2Parts[ 0 ], intDate2Parts[ 1 ], intDate2Parts[ 2 ], true );
        
        fValid = ( ( strComparisonRule.toLowerCase() == "greaterthanequal" && intDateDiff >= 0 ) || ( strComparisonRule.toLowerCase() == "lessthanequal" && intDateDiff <= 0 ) );
    }
    
    return fValid
}

function Main_AdditionalDetails()
{
    InitBakersComparisonSchemeLivery();
}

function Main_AggregateQuote()
{
    InitBakersComparisonSchemeLivery();
}

function Main_CallBack()
{
    InitBakersComparisonSchemeLivery();
}

function Main_CaravanDetails()
{
    AddRadioClassToRadioOptions();
    InitBakersComparisonSchemeLivery();
}

function Main_DDISetUp()
{
    InitBakersComparisonSchemeLivery();
}

function Main_DDIConfirmation()
{
    InitBakersComparisonSchemeLivery();
}

function Main_Default()
{
    AddRadioClassToRadioOptions();
    InitBakersComparisonSchemeLivery();
}

function Main_FinalPage()
{
    InitBakersComparisonSchemeLivery();
}

function Main_FullQuote()
{
    InitBakersComparisonSchemeLivery();
}

function Main_PaymentFailed()
{
    InitBakersComparisonSchemeLivery();
}

function Main_QuickQuote()
{
    InitBakersComparisonSchemeLivery();
}

function Main_Referral()
{
    InitBakersComparisonSchemeLivery();
}

function Main_RetrieveQuote()
{
    InitBakersComparisonSchemeLivery();
}

function ShowClaimFields( ddlNumOfClaims, intMaxNumOfClaims )
{
    var intIndex;
    var intNumOfClaims = ddlNumOfClaims.selectedIndex - 1; 

    $( "div[id*='ctl00_ContentPlaceHolderMain_panClaim']" ).hide();
    //$( "div[id*='litClaim']" ).hide();
    
    if ( intNumOfClaims <= intMaxNumOfClaims )
    {
        for ( intIndex = 1; intIndex <= intNumOfClaims; intIndex++ )
            $( "#ctl00_ContentPlaceHolderMain_panClaim" + intIndex ).show();
//            $( "#litClaim" + intIndex ).show();
    }
}

function ValidateAlarm( source, args )
{
    args.IsValid = CheckRadioGroupOptionSelected( 0, "ctl00$ContentPlaceHolderMain$radAlarm" );
}

function ValidateClaimAmount( intClaimNum, fltMinAmount, fltMaxAmount )
{
    var ddlNumOfClaims = document.getElementById( "ctl00_ContentPlaceHolderMain_ddlNumOfClaims" );
    var fValid;
    
    if ( ddlNumOfClaims.selectedIndex < ( ddlNumOfClaims.length - 1 ) && intClaimNum <= ( ddlNumOfClaims.selectedIndex - 1 ) )
    {
        fValid = ( $( "#ctl00_ContentPlaceHolderMain_txtClaimAmount" + intClaimNum ).val() != "" );
    
        if ( fValid == true )
            fValid = ValidateMoneyRange( $( "#ctl00_ContentPlaceHolderMain_txtClaimAmount" + intClaimNum ).val(), fltMinAmount, fltMaxAmount ) //ValidateMoneyRange( source, args );
    }
    else
        fValid = true;
        
    return fValid;
}

function ValidateClaimDate_old( source, intClaimNum, strMinDateRange, strMaxDateRange )
{
    var ddlNumOfClaims = document.getElementById( "ctl00_ContentPlaceHolderMain_ddlNumOfClaims" );
    var strClaimDate = $( "#ctl00_ContentPlaceHolderMain_ddlYYYYClaimDate" + intClaimNum ).val() + "/" + $( "#ctl00_ContentPlaceHolderMain_ddlMMClaimDate" + intClaimNum ).val() + "/" +
                       $( "#ctl00_ContentPlaceHolderMain_ddlDDClaimDate" + intClaimNum ).val();
    
    if ( intClaimNum <= ( ddlNumOfClaims.selectedIndex - 1 ) && ddlNumOfClaims.selectedIndex < ( ddlNumOfClaims.length - 1 ) )
        return ( CompareDates( strClaimDate, strMinDateRange, "greaterthanequal" ) && CompareDates( strClaimDate, strMaxDateRange, "lessthanequal" ) );
    else
        return true;
}
function CalculateDateTicks( strDDMMYYYYDate )
{
    return ( parseInt( strDDMMYYYYDate.substring( 6, 10 ), 10 ) * 1000 ) + ( parseInt( strDDMMYYYYDate.substring( 3, 5 ), 10 ) * 100 ) + parseInt( strDDMMYYYYDate.substring( 0, 2 ), 10 );
}
function ValidateClaimDate( intClaimNum, strMinDate, strMaxDate )
{
    var ddlNumOfClaims = document.getElementById( "ctl00_ContentPlaceHolderMain_ddlNumOfClaims" );
    var fValid;
    var intMaxTicks;
    var intMinTicks;
    var intTicks;
    
    if ( ddlNumOfClaims.selectedIndex < ( ddlNumOfClaims.length - 1 ) && intClaimNum <= ( ddlNumOfClaims.selectedIndex - 1 ) )
    {
        fValid = ValidateDate( $( "#ctl00_ContentPlaceHolderMain_txtClaimDate" + intClaimNum ).val() );
        
        if ( fValid == true )
        {
            intMinTicks = CalculateDateTicks( strMinDate );
            intMaxTicks = CalculateDateTicks( strMaxDate );
            intTicks = CalculateDateTicks( $( "#ctl00_ContentPlaceHolderMain_txtClaimDate" + intClaimNum ).val() );
            
            fValid = ( intTicks >= intMinTicks && intTicks <= intMaxTicks );
            alert( $( "#ctl00_ContentPlaceHolderMain_txtClaimDate" + intClaimNum ).val() + "\n" + fValid );
        }
    }
    else
        fValid = true;
    
    return fValid;
}

function ValidateClaimType( intClaimNum )
{
    var ddlNumOfClaims = document.getElementById( "ctl00_ContentPlaceHolderMain_ddlNumOfClaims" );
    var ddlClaimType = document.getElementById( "ctl00_ContentPlaceHolderMain_ddlClaimType" + intClaimNum );
    var fValid;
    
    if ( ddlNumOfClaims.selectedIndex < ( ddlNumOfClaims.length - 1 ) && intClaimNum <= ( ddlNumOfClaims.selectedIndex - 1 ) )
        fValid = ( ddlClaimType.selectedIndex > 0 );
    else
        fValid = true;
        
    return fValid;
}

function ValidateCoverStartDate( source, args )
{
    args.IsValid = ValidateDate( $( "#ctl00_ContentPlaceHolderMain_txtCoverStartDate" ).val() );
}

function ValidateDate( strDate )
{
    var datDate = new Date();
    var fValid = ( strDate.length == 10 );
    var intDay;
    var intMonth;
    var intYear;
    
    if ( fValid == true )
    {
        intDay = parseInt( strDate.substring( 0, 2 ), 10 );
        
        // Subtract 1 from month value, because in JavaScript numeric representation of months are from 0 to 11, instead of 1 to 12.
        intMonth = parseInt( strDate.substring( 3, 5 ), 10 ) - 1;
        
        intYear = parseInt( strDate.substring( 6, 10 ), 10 );
               
        datDate.setFullYear(intYear, intMonth, intDay);
        
        fValid = (datDate.getDate() == intDay && datDate.getMonth() == intMonth && datDate.getFullYear() == intYear);
    }      
    
    return fValid;
}

function ValidateDirectDebitSortCode( source, args )
{
    var strDirectDebitSortCode1 = $( "#ctl00_ContentPlaceHolderMain_txtDirectDebitSortCode1" ).val();
    var strDirectDebitSortCode2 = $( "#ctl00_ContentPlaceHolderMain_txtDirectDebitSortCode2" ).val();
    var strDirectDebitSortCode3 = $( "#ctl00_ContentPlaceHolderMain_txtDirectDebitSortCode3" ).val();
    var strRegExpMatch;

    args.IsValid = ( strDirectDebitSortCode1.length == 2 && strDirectDebitSortCode2.length == 2 && strDirectDebitSortCode3.length == 2 );
                     
    if ( args.IsValid == true )
    {
        strRegExpMatch = strDirectDebitSortCode1.match( /^[0-9][0-9]$/ );
        args.IsValid = ( strRegExpMatch != null );
    }
    
    if ( args.IsValid == true )
    {
        strRegExpMatch = strDirectDebitSortCode2.match( /^[0-9][0-9]$/ );
        args.IsValid = ( strRegExpMatch != null );
    }
    
    if ( args.IsValid == true )
    {
        strRegExpMatch = strDirectDebitSortCode3.match( /^[0-9][0-9]$/ );
        args.IsValid = ( strRegExpMatch != null );
    }
}

function ValidateDOB( source, args )
{
    args.IsValid = ValidateDate( $( "#ctl00_ContentPlaceHolderMain_txtDOB" ).val() );
}

function ValidateMoneyRange( fltValue, fltMinValue, fltMaxValue )
{
    var fValid;
    var strRegExpMatch;
    var strValue = "" + fltValue.replace( /£/, "" ).replace( /,/, "" );

    strRegExpMatch = strValue.match( /^(\+?((([0-9]+(\.)?)|([0-9]*\.[0-9]+))([eE][+-]?[0-9]+)?))$/ );
    
    if ( strRegExpMatch != null )
    {
        //fltValue = parseFloat( fltValue.replace( /£/, "" ).replace( /,/, "" ) );
        fltValue = parseFloat( strValue );
        
        fValid = ( fltValue >= parseFloat( fltMinValue ) && fltValue <= parseFloat( fltMaxValue ) );
    }
    else
        fValid = false;
        
    return fValid;
}

function ValidateMoneyRange_old( source, args )
{
    alert( $( "#" + $( "#" + source.id ).attr( "ControlToValidate" ) ).val() );
    var fltValue = parseFloat( $( "#" + $( "#" + source.id ).attr( "ControlToValidate" ) ).val().replace( /£/, "" ).replace( /,/, "" ) );
 
//    alert( "ID: " + source.id +
//           "\nEntered value: " + $( "#" + $( "#" + source.id ).attr( "ControlToValidate" ) ).val() +
//           "\nConverted value: " + fltValue +
//           "\nMin value: " + $( "#" + source.id ).attr( "MinValue" ) +
//           "\nMax value: " + $( "#" + source.id ).attr( "MaxValue" ) );
    if ( fltValue != null )
    {
        args.IsValid = ( fltValue >= parseFloat( $( "#" + source.id ).attr( "MinValue" ) ) && fltValue <= parseFloat( $( "#" + source.id ).attr( "MaxValue" ) ) );
//        alert( args.IsValid );
    }
    else
        args.IsValid = false;
}

function ValidateTracker( source, args )
{
    args.IsValid = CheckRadioGroupOptionSelected( 0, "ctl00$ContentPlaceHolderMain$radTracker" );
}
