﻿var appPath = '/';

function TrimWhiteSpace(str) {
    return str.replace(/^\s*|\s*$/g, "");
}

function CreateSelectOption(val, txt, select)
{
    if( select != null && select == true )
    {
        return '<option value="' + val + '" selected="true">' + txt + '</option>';
    }
    
    return '<option value="' + val + '">' + txt + '</option>';
}

function PopulateAutoMake(ddl, load, prompt)
{
    $('#' + ddl).attr('disabled', true).html(CreateSelectOption('', load));

    $.ajax({ type: "POST"
            , contentType: "application/json; charset=utf-8"
            , url: appPath + "WebServices/AJAXHelper.asmx/GetAutoMake"
            , data: "{}"
            , dataType: "text"
            , dataFilter: function(data) {
                var msg;
                if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') {
                    msg = JSON.parse(data);
                }
                else {
                    msg = eval('(' + data + ')');
                }
                if (msg.hasOwnProperty('d')) {
                    return msg.d;
                }
                else {
                    return msg;
                }
            }
            , success: function(msg) {
                var r = eval((msg));     
                
                var options = '';
                if( prompt != null && prompt.length > 0 )
                {
                    options = CreateSelectOption('', prompt);
                }
                
                if( r != null ) 
                {                  
                    for( i=0; i<r.length; i++ ) 
                    {
                        options += CreateSelectOption(r[i].id, r[i].name);
                    }
                    
                    $('#' + ddl).attr('disabled', false).html(options);
                }
            }
            , error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert('error ' + XMLHttpRequest.responseText );
            }
    });
}

function IsDate(str)
{
    var regex = new RegExp("^(0[1-9]|[1-9]|1[012])/(0[1-9]|[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d)$");
    var match = regex.exec(str);    
    if (match != null)
    {
        var dateArr = str.split('/');
        var date = new Date(dateArr[2], dateArr[0]-1, dateArr[1]);
        
        var convertedDate = "" + date.getFullYear() + (date.getMonth()+1) + date.getDate();
        var givenDate = "" + parseInt(dateArr[2], 10) + parseInt(dateArr[0], 10) + parseInt(dateArr[1], 10);
        
        return convertedDate == givenDate ? date : null;
    }
    
    return null; 
}

function PopulateAutoModel(makeid, ddl, load, prompt)
{
    if( makeid != null ) 
    {
        $('#' + ddl).attr('disabled', true).html(CreateSelectOption('', load));
        
        $.ajax({ type: "POST"
                , contentType: "application/json; charset=utf-8"
                , url: appPath + "WebServices/AJAXHelper.asmx/GetAutoModelByMake"
                , data: "{ 'makeID' : '" + makeid + "'}"
                , dataType: "text"
                , dataFilter: function(data) {
                    var msg;
                    if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') {
                        msg = JSON.parse(data);
                    }
                    else {
                        msg = eval('(' + data + ')');
                    }
                    if (msg.hasOwnProperty('d')) {
                        return msg.d;
                    }
                    else {
                        return msg;
                    }
                }
                , success: function(msg) {
                    var r = eval((msg));     
                    
                    var options = '';
                    if( prompt != null && prompt.length > 0 )
                    {
                        options = CreateSelectOption('', prompt);
                    }
                    
                    if( r != null ) 
                    {                  
                        for( i=0; i<r.length; i++ ) 
                        {
                            options += CreateSelectOption(r[i].id, r[i].name);
                        }
                        
                        $('#' + ddl).attr('disabled', false).html(options);
                    }
                }
        });
    }
}

function PopulateAutoYearByModelAndMake(makeid, modelid, ddl, load, prompt)
{
    if( makeid != null && modelid != null )
    {
        $('#' + ddl).attr('disabled', true).html(CreateSelectOption('', load));
        
        $.ajax({ type: "POST"
                , contentType: "application/json; charset=utf-8"
                , url: appPath + "WebServices/AJAXHelper.asmx/GetAutoYearByModelAndMake"
                , data: "{ 'makeID' : '" + makeid + "', 'modelID' : '" + modelid + "' }"
                , dataType: "text"
                , dataFilter: function(data) {
                    var msg;
                    if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') {
                        msg = JSON.parse(data);
                    }
                    else {
                        msg = eval('(' + data + ')');
                    }
                    if (msg.hasOwnProperty('d')) {
                        return msg.d;
                    }
                    else {
                        return msg;
                    }
                }
                , success: function(msg) {
                    var r = eval((msg));     
                    
                    var options = '';
                    if( prompt != null && prompt.length > 0 )
                    {
                        options = CreateSelectOption('', prompt);
                    }
                    
                    if( r != null ) 
                    {                  
                        for( i=0; i<r.length; i++ ) 
                        {
                            options += CreateSelectOption(r[i].yearof, r[i].yearof);
                        }
                        
                        $('#' + ddl).attr('disabled', false).html(options);
                    }
                }
        });
    }
}

function ChangeInputTypes(ddlmake, ddlmodel, ddlyear
            , txtmake, txtmodel, txtyear
            , hfmake, hfmodel, hfyear
            , lblmake, lblmodel, lblyear, lblchange, lnkchange)
{
    if ($('#' + ddlmake).is(":visible") == true ) 
    {
        $('#' + ddlmake).hide();        
        $('#' + ddlmodel).hide();        
        $('#' + ddlyear).hide();
        
        if( $('#' + ddlmake).hasClass('required') || $('#' + ddlmake).hasClass('error') )
        {
            $('#' + ddlmake).removeClass('required').removeClass('error');
            $('#' + ddlmodel).removeClass('required').removeClass('error');
            $('#' + ddlyear).removeClass('required').removeClass('error');
            
            $('#' + txtmake).addClass('required').removeClass('error');
            $('#' + txtmodel).addClass('required').removeClass('error');
            $('#' + txtyear).addClass('required').removeClass('error');
        }
        
        $('#' + hfmake).val('');
        $('#' + hfmodel).val('');
        $('#' + hfyear).val('');
        
        $('#' + txtmake).show();
        $('#' + txtmodel).show();
        $('#' + txtyear).show();     
                
        $('#' + lblmake).text('Enter the vehicle make (example Toyota):');
        $('#' + lblmodel).text('Enter the vehicle model (example Camry):');
        $('#' + lblyear).text('Enter the vehicle year (example 2010):');        
        $('#' + lblchange).text('To select your Vehicle Make from a drop-down, please');
        $('#' + lnkchange).text('click here.');
        $('#dvvehicleHeader').show();
    }
    else
    {
        $('#' + ddlmake).show();
        $('#' + ddlmodel).show();
        $('#' + ddlyear).show();
        
        $('#' + ddlmake).val(-1);
        $('#' + ddlmodel).attr('disabled', true).html(CreateSelectOption('', 'Select Auto Model....'));
        $('#' + ddlyear).attr('disabled', true).html(CreateSelectOption('', 'Select Auto Model....'));
        
        $('#' + txtmake).hide();
        $('#' + txtmodel).hide();
        $('#' + txtyear).hide();
        
        if( $('#' + txtmake).hasClass('required') || $('#' + txtmake).hasClass('error') )
        {
            $('#' + ddlmake).addClass('required').removeClass('error');
            $('#' + ddlmodel).addClass('required').removeClass('error');
            $('#' + ddlyear).addClass('required').removeClass('error');
            
            $('#' + txtmake).removeClass('required').removeClass('error');
            $('#' + txtmodel).removeClass('required').removeClass('error');
            $('#' + txtyear).removeClass('required').removeClass('error');
        }
        
        $('#' + lblmake).text('Please select the make of your vehicle:');
        $('#' + lblmodel).text('Please select the model of your vehicle:');
        $('#' + lblyear).text('Please select the year of your vehicle:');
        $('#' + lblchange).text('Cannot find your vehicle,');
        $('#' + lnkchange).text('click here to input your vehicle information.');
        $('#dvvehicleHeader').hide();
    }      
    
    $('#' + txtmake).val('');  
    $('#' + txtmodel).val('');
    $('#' + txtyear).val('');
}


function SetCityText( ddl, txt ) 
{
    $('#' + txt).val(ddl.value);
}
function ClearMovingInputs( txtc, ddlc, zipc )
{
    $('#' + txtc).show();
    $('#' + txtc).val('');
    $('#' + txtc).unautocomplete();
    $('#' + ddlc).hide();
    $('#' + zipc).show();
    $('#' + zipc).val('');
}
        
function GetCityAutoComplete( state, city, zip, prev ) 
{
    var len = $('#' + city).val().length;
    var cur = $('#' + prev).val()
    if( len >= 2 && len > cur ) 
    {
        $.ajax({ type: "POST"
            , contentType: "application/json; charset=utf-8"
            , url: appPath + "WebServices/AJAXHelper.asmx/GetCityAutoComplete"
            , data: "{ 'city' : '" + $('#' + city).val() + "', 'stateID' : '" + $('#' + state).val() + "' }"
            , dataType: "text"
            , dataFilter: function(data) { var msg; if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') { msg = JSON.parse(data); } else { msg = eval('(' + data + ')'); } if (msg.hasOwnProperty('d')) { return msg.d; } else { return msg; } }
            , success: function(msg) {
                var r = eval((msg));

                $('#' + city).autocomplete(r, {
                    formatItem: function(item) {
                        return item.c;
                    }
                  , max: 50
                }).result(function(event, item) {
                    if (zip == null) {
                        parent.SetZipFromZipFinder(item.z);
                    } else {
                        $('#' + zip).val(item.z);
                    }
                });
            }
            , error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert('error');
            }
        });
    }
    
    $('#' + prev).val(len);        
}

function RequiredValidator( ctrl, val, msg )
{
    if( $( '#' + ctrl ).is(":visible") )
    {
        if( $( '#' + ctrl ).val() == val ) 
        {
            $( '#' + ctrl ).attr( 'style', 'invalidfields' );
            return msg + '\n\r';
        }
        else
        {
            $( '#' + ctrl ).attr( 'style', 'validfields' );
        }
    }
    
    return '';
}

function RegularExpression( ctrl, regex, msg ) 
{
    if( $( '#' + ctrl ).is(":visible") )
    {
        if( $( '#' + ctrl ).val() != '' && !$( '#' + ctrl ).val().match(regex) ) 
        {
            $( '#' + ctrl ).attr( 'style', 'invalidfields' );
            return msg + '\n\r';
        }
        else
        {
            $( '#' + ctrl ).attr( 'style', 'validfields' );
        }
    }
    
    return '';
}

function GetNumberChecked( cb, txt, min, max )
{
    var n = $('#' + cb + ' input:checked').length;
    
    if( n >= min && n <= max )
    {
        $('#' + txt).val(n);
        $('#' + cb).removeClass('error');
    }     
    else
    {
        $('#' + txt).val('');
    }
}

function ClickRadiobutton( rb, txt )
{
    $('#' + txt).val('1');
    $('#' + rb).removeClass('error');
}

function HighLightLink(lnk, css) {
    if (css == null) {
        $('#' + lnk).parent().addClass('selected');
    } else {
        $('#' + lnk).parent().addClass(css);
    }
}