// DECLARACIONES
var DIR_DCL = "C:\\AEAT\\ATENEO\\OPERADOR\\PRODUCTOS";

String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

Date.prototype.formatDateTime = function() {
    return format0(this.getDate(), 2)  + "/" + format0(this.getMonth() + 1, 2)  + "/" + format0(this.getFullYear(), 4) + " "
         + format0(this.getHours(), 2) + ":" + format0(this.getMinutes(), 2)    + ":" + format0(this.getSeconds(), 2);
}

Date.prototype.formatFileName = function() {
    return format0(this.getFullYear(), 4) + format0(this.getMonth() + 1, 2) + format0(this.getDate(), 2)
         + format0(this.getHours(), 2)    + format0(this.getMinutes(), 2)   + format0(this.getSeconds(), 2)
         + format0(this.getMilliseconds(), 3);
}

// PROCEDIMIENTOS

/*
 * Escribe en archivo los datos relativos a la declaración.
 * Sintaxis:
 *      finDcl(tipo, id)
 */
function finDcl(tipo, id) {
    try {
        var fileName = "";
        var fin = new Date();
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var strDcl = id + "|" + tipo + "|" + fin.formatDateTime();
        fileName = DIR_DCL + "\\"
                 + fin.formatFileName()
                 + "_" + fso.getTempName().replace(/\.tmp$/i, ".dcl");
        var txt = fso.createTextFile(fileName, true);
        txt.writeLine(strDcl);
        txt.close(); txt = null;
    } catch(e) {
    } finally {
        return fileName;
    }
}

/*
 * Formatea un número anteponiendo ceros.
 */
function format0(numero, len) {
    return(replicate(len - numero.toString().length, "0") + numero);
}

/*
 * Devuelve un String que contiene una cadena de caracteres que se repite la longitud especificada.
 */
function replicate(num, car) {
    var str = "";
    for (var i = 0; i < num; i++) str += car;
    return str;
}