// JScript File
var digsigx = null;
var signatureRequired = false;
var signatureEnabled = false;

function SignForm( form )
{
    if ( form == null )
        form = document.forms[0];
    if ( ! signatureEnabled )
        return true;
    if ( digsigx == null )
    {
        if ( signatureRequired )
        {
            alert("Este formulario debe ser firmado digitalmente, pero no se encontró el activex requerido.\nEl formulario no podrá ser enviado.");
            return false;
        }
        return true;
    }
    var digsigField = null;
    var hiddenName = "_" + digsigx.id;
    digsigx.ClearFields();
    for( var iele = 0; iele < form.length; iele++ )
    {
        if ( form[iele].name.indexOf("_") != 0 )
        {
            var name = form[iele].id;
            if ( name == "" ) name = form[iele].name;
            digsigx.AddField(name, form[iele].value);
        }
        else if ( form[iele].name == hiddenName )
            digsigField = form[iele];
    }
    var firma = digsigx.Sign();
    if ( firma == "" )
    {
        if ( signatureRequired )
        {
            alert("Ocurrió un error al tratar de firmar:\n\n"+digsigx.ErrorMsg+"\n\nEl formulario no será enviado porque requiere ser firmado digitalmente\n\n");
            return false;
        }
        else if ( ! confirm("Ocurrió un error al tratar de firmar:\n\n"+digsigx.ErrorMsg+"\n\n¿ Desea enviar el formulario sin firmar digitalmente ?") )
            return false;
    }
    digsigField.value = firma;
    return true;
}

function InitDigSig(digsigId,required,enabled,toName,toEmail,fontName,fontSize,serverDate,serverTime)
{
    digsigx = document.getElementById(digsigId);
    signatureRequired = required;
    signatureEnabled = enabled;
    if ( digsigx != null )
    {
        try
        {
            digsigx.SetTo(toName,toEmail);
            digsigx.Font.Name = fontName;
            digsigx.Font.Size = fontSize;
            try
            {
                digsigx.SetDateTime(serverDate,serverTime);
            }
            catch(e2)
            {
            }
        }
        catch(e)
        {
            digsigx = null;
        }
    }
}

function CargarArchivo( fieldid, dlgTitle, fileFilter  )
{
    if ( digsigx == null )
    {
        alert("No se encontró el componente ActiveX requerido.  No será posible incluir archivos.");
        return;
    }
    var fileContent = digsigx.GetFile(dlgTitle,fileFilter);
    if ( fileContent.length == 0 )
    {
        alert(digsigx.ErrorMsg);
        return;
    }
    document.getElementById("_"+fieldid).value = fileContent;
    document.getElementById(fieldid+"_SHA1").value = digsigx.FileSHA1;
    document.getElementById(fieldid).value = digsigx.FileName;
}

function SignAndSubmit( form )
{
    if (  SignForm( form ) )
    {
        if ( form == null ) form = document.forms[0];
        try
        {
                form.submit();
        }
        catch(e)
        {
                alert(e);
        }
    }
}

function InjectSignatureField( elemName )
{
    for ( var ifor = 0; ifor < document.forms.length; ifor++ )
    {
        form = document.getElementById( document.forms[ifor].id );
        if ( form != null )
        {
            try
            {
                var tieneCampo = false;
                for( var iele=0; iele<form.length; iele++ )
                {
                    if ( form[iele].name == elemName )
                    {
                        tieneCampo = true;
                        break;
                    }                
                }
                if ( ! tieneCampo )
                {
                    form.innerHTML = form.innerHTML+'<input type="hidden" name="'+elemName+'" id="'+elemName+'"/>';
                }
            }
            catch(e)
            {
            }
        }
    }
}
