﻿var mapLib = function() {

    var getDirections = function() {
        if (validator.validateDirections()) {
            var data = {
                id: $('#divUserForm input.dealerId').val(),
                street: $('#divUserForm input[id$=txtAddress]').val(),
                city: $('#divUserForm input[id$=txtCity]').val(),
                state: $('#divUserForm select[id$=ddlStates]').val(),
                zip: $('#divUserForm input[id$=txtZip]').val()
            };
            $('#btnDirections').attr('disabled', true);
            window.location = ['directions.aspx', '?', $.param(data)].join('');
        }
        return false;
    };

    var OpenUserForm = function(id) {
        $.removeArrows();
        $('#divUserForm input.dealerId').val(id);
        $('#divUserForm').dialog('open');
        return false;
    };

    return {
        getDirections: getDirections,
        OpenUserForm: OpenUserForm
    };
}();

// Numbers only for a textbox
$.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;
            // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
            return (
                key == 8 || 
                key == 13 ||
                key == 9 ||
                key == 46 ||
                key == 109 ||
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        })
    })
};

$.fn.drawArrow = function() {
    return this.each(function() {
        var w = $(this).width(),
                pos = $(this).position();
        $('<img>')
                .addClass('vArrow')
                .attr('src', 'images/validation-arrow-small.png')
                .css({
                    'position': 'absolute',
                    'left': Math.round(pos.left) + w + 8,
                    'top': Math.round(pos.top) + 2
                })
                .insertAfter(this);
    });
};

$.removeArrows = function() {
    $('.vArrow').remove();
};

$.fn.isFieldValid = function() {
    return $(this).val() && $(this).val().length > 0 ? true : false
};

$.fn.isZipCodeValid = function() {
    return $(this).val() && $(this).val().match(/[0-9]{5,}/) ? true : false
};

var validator = function() {

    var validateDirections = function() {
        $.removeArrows();
            var zipText = $('.validateZip'),
                cityText = $('.validateCity'),
                stateText = $('.validateState'),
                addressText = $('.validateAddress'),
                zipPass = zipText.isZipCodeValid(),
                addressPass = addressText.isFieldValid(),
                cityPass = cityText.isFieldValid(),
                statePass = stateText.isFieldValid();

        if (zipPass && statePass && cityPass && addressPass) {
            return true;
        }
        else {
            if (!zipPass) {
                zipText.drawArrow();
            }
            if (!statePass) {
                stateText.drawArrow();
            }
            if (!cityPass) {
                cityText.drawArrow();
            }
            if (!addressPass) {
                addressText.drawArrow();
            }
            return false;
        }
    };

    return {
        validateDirections: validateDirections
    };
} ();

$(function() {
    $('input:image.searchButton').click(function() {
        return validator.validateContact();
    });
});
