// 
// Copyright 2016 Agencia Estatal de Administración Tibutaria
//
// Licencia con arreglo a la EUPL, Versión 1.1 o -en cuanto
// sean aprobadas por la Comisión Europea- versiones
// posteriores de la EUPL (la «Licencia»);
// Solo podrá usarse esta obra si se respeta la Licencia.
// Puede obtenerse una copia de la Licencia en:
//  
// https://joinup.ec.europa.eu/software/page/eupl
//  
// Salvo cuando lo exija la legislación aplicable o se acuerde
// por escrito, el programa distribuido con arreglo a la
// Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
// DE NINGÚN TIPO, ni expresasni implícitas.
//
// Véase la Licencia en el idioma concreto que rige los permisos y 
// limitaciones que establece la Licencia.
// 

using System;
using System.Collections.Generic;
using System.Text;
using mshtml;

namespace operador.iexplorer
{
    public class IEDocument
    {
        HTMLDocument doc = null;

        public IEDocument(HTMLDocument doc) {
            this.doc = doc;
        }

        public void setCampoForm(string formulario, string campo, string valor) {
            try {
                IHTMLFormElement form = (IHTMLFormElement)doc.forms.item(formulario, 0);
                if (form != null) {
                    IHTMLInputElement field = (IHTMLInputElement)form.item(campo, 0);
                    if (field != null) {
                        field.value = valor;
                    }
                }
            } catch (Exception) { }
        }

        public void setCampoForm(string formulario, string campo1, string valor1, string campo2, string valor2) {
            try {
                IHTMLFormElement form = (IHTMLFormElement)doc.forms.item(formulario, 0);
                if (form != null) {
                    IHTMLInputElement field = (IHTMLInputElement)form.item(campo1, 0);
                    if (field != null) {
                        field.value = valor1;
                    }
                    field = (IHTMLInputElement)form.item(campo2, 0);
                    if (field != null) {
                        field.value = valor2;
                    }
                }
            } catch (Exception) { }
        }

        public void submitForm(string formulario) {
            try {
                IHTMLFormElement form = (IHTMLFormElement)doc.forms.item(formulario, 0);
                if (form != null) {
                    form.submit();
                }
            } catch (Exception) { }
        }

        public void click(string nombreElemento) {
            try {
                IHTMLElement elemento = (IHTMLElement)doc.all.item(nombreElemento, 0);
                if (elemento != null) {
                    elemento.click();
                }
            } catch (Exception) { }
        }

        public void clickBoton(string formulario, string nombreElemento) {
            try {
                IHTMLFormElement form = (IHTMLFormElement)doc.forms.item(formulario, 0);
                if (form != null) {
                    IHTMLElementCollection elementos = (IHTMLElementCollection)form.tags("INPUT");
                    if (elementos != null) {
                        foreach (IHTMLElement elemento in elementos) {
                            IHTMLInputElement inp = (IHTMLInputElement)elemento;
                            if (inp.value == nombreElemento) {
                                elemento.click();
                                return;
                            }
                        }
                    }
                }
            } catch (Exception) { }
        }

        public string getInnerHTML() {
            return (doc.documentElement.innerHTML == null) ? "" : doc.documentElement.innerHTML;
        }

        public string motivo() {
            try {
                string palabra1 = doc.cookie;
                if (palabra1.Length < 1) return "ateneo";
                string[] palabra2 = palabra1.Split(';');
                foreach (string p in palabra2) {
                    string[] palabra3 = p.Split('=');
                    if (palabra3[0].ToUpper() == "MOTIVO") {
                        return palabra3[1];
                    }
                }
            } catch (Exception) {
                return "Ateneo";
            }
            return "Ateneo";
        }

    }
}
