function formatString(field, mask, event) {
    key = event.keyCode;
    if (key == '0')
        key = event.which;


    if (key == 8 || key == 39 || key == 37 || key == 46 || key == 9)
        return true;
    string = field.value;
    i = string.length;

    var maskAux = '';
    k = 0;
    for (a = 0; a < mask.length; a++) {
        if (mask.charAt(a) == '§' || mask.charAt(a) == '!') {
            if (field.value.charAt(a)) {
                maskAux += field.value.charAt(k);
            }
        }
        else if (mask.charAt(a) == '#') {
            if (field.value.charAt(a) && verifyNumber(field.value.charAt(a))) {
                maskAux += field.value.charAt(k);
            }
        }
        else {

            if (field.value.charAt(a) && field.value.charAt(a) == mask.charAt(a)) {
                maskAux += mask.charAt(a);
            }
            else if (field.value.charAt(a)) {
                maskAux += mask.charAt(a);
                k--;
            }
        }
        k++;
    }
    if (i < mask.length) {
        if (mask.charAt(i) == '#') {
            if (!veriyNumberPress(field, event)) {
                return false;
            }
            maskAux += String.fromCharCode(key);

            var a = i + 1;
            while (a < mask.length && mask.charAt(a) != '!' && mask.charAt(a) != '§' && mask.charAt(a) != '#') {
                maskAux += mask.charAt(a);
                a++
            }
        }
        else if (mask.charAt(i) == '!' || mask.charAt(i) == '§') {

            maskAux += String.fromCharCode(key);
            var a = i + 1;
            while (a < mask.length && mask.charAt(a) != '!' && mask.charAt(a) != '§' && mask.charAt(a) != '#') {
                maskAux += mask.charAt(a);
                a++
            }

        }
        else {
            if (mask.charAt(i) == String.fromCharCode(key)) {
                maskAux += String.fromCharCode(key);
                var a = i + 1;
                while (a < mask.length && mask.charAt(a) != '!' && mask.charAt(a) != '§' && mask.charAt(a) != '#') {
                    maskAux += mask.charAt(a);
                    a++
                }
            }
            else if ((i + 1) < mask.length && mask.charAt(i + 1) == "#") {
                if (veriyNumberPress(field, event)) {
                    maskAux += mask.charAt(i) + String.fromCharCode(key);
                }
            }
            else if ((i + 1) < mask.length && (mask.charAt(i + 1) == "§" || mask.charAt(i + 1) == "!")) {
                maskAux += mask.charAt(i) + String.fromCharCode(key);
            }
        }
        field.value = maskAux;
        try {
            ///event.keyCode = 0;
            event.preventDefault();
        }
        catch (e) {
            //event.charCode = 0;
            event.returnValue = false;
        }

    }
    else return false;
}

function veriyNumberPress(field, event) {
    code = event.keyCode;
    if (code == '0') {
        code = event.charCode;
    }
    codeAux = 0;
    if (arguments[2]) {
        codeAux = arguments[2].charCodeAt(0);
    }
    if ((code < 48 && code != codeAux && code != 8 && code != 39 && code != 37 && code != 9 && code != 46) || (code > 57)) {
        try {
            ///event.keyCode = 0;
            event.preventDefault();
        }
        catch (e) {
            //event.charCode = 0;
            event.returnValue = false;
        }
        return false;
    }
    else {
        return true;
    }
}
function verifyNumber(value) {
    code = value.charCodeAt(0);
    if ((code < 48) || (code > 57)) {
        return false;
    }
    return true;
}

// Auto jump to next field
function JumpField(fields) {
    if (fields.value.length == fields.maxLength) {
        for (var i = 0; i < fields.form.length; i++) {
            if (fields.form[i] == fields && fields.form[(i + 1)] && fields.form[(i + 1)].type != "hidden") {
                fields.form[(i + 1)].focus();
                break;
            }
        }
    }
}


var monthDefaultText = 'MM';
var dayDefaultText = 'DD';
var yearDefaultText = 'YYYY';

$(document).ready(function () {
    $(".ac_day").focus(function () {
        if ($(".ac_day").val() == dayDefaultText) {
            $(".ac_day").attr({ value: '' });
        }
    });

    $(".ac_day").blur(function () {
        if ($(".ac_day").val() == '') {
            $(".ac_day").attr({ value: dayDefaultText });
        }
    });

    $(".ac_month").focus(function () {
        if ($(".ac_month").val() == monthDefaultText) {
            $(".ac_month").attr({ value: '' });
        }
    });

    $(".ac_month").blur(function () {
        if ($(".ac_month").val() == '') {
            $(".ac_month").attr({ value: monthDefaultText });
        }
    });

    $(".ac_year").focus(function () {
        if ($(".ac_year").val() == yearDefaultText) {
            $(".ac_year").attr({ value: '' });
        }
    });

    $(".ac_year").blur(function () {
        if ($(".ac_year").val() == '') {
            $(".ac_year").attr({ value: yearDefaultText });
        }
    });
});
