using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Xml;

/// <summary>
/// Summary description for Config
/// </summary>
public class Config : System.Web.UI.Page
{
    XmlDocument xdoc;
    static Config instance;

	public Config()
	{
        xdoc = new XmlDocument();
        try
        {
            xdoc.Load(Server.MapPath("../config/Settings.xml"));
        }
        catch (Exception)
        {
            //Ficheiro nao encontrado, cria ficheiro default

            XmlNode root = xdoc.CreateElement("root");
            xdoc.AppendChild(root);

            XmlNode conf = xdoc.CreateElement("configuracoes");
            root.AppendChild(conf);
            XmlNode proc = xdoc.CreateElement("processos");
            root.AppendChild(proc);
            XmlNode email = xdoc.CreateElement("email");
            root.AppendChild(email);

            XmlNode titulo = xdoc.CreateElement("titulo");
            conf.AppendChild(titulo);

            XmlNode imagens = xdoc.CreateElement("imagens");
            conf.AppendChild(imagens);
            XmlNode ficheiros = xdoc.CreateElement("ficheiros");
            conf.AppendChild(ficheiros);


            XmlNode n_dias = xdoc.CreateElement("n_dias");
            proc.AppendChild(n_dias);
            XmlNode tamanho_letra = xdoc.CreateElement("tamanho_letra");
            proc.AppendChild(tamanho_letra);
            XmlNode tipo_letra = xdoc.CreateElement("tipo_letra");
            proc.AppendChild(tipo_letra);

            XmlNode login = xdoc.CreateElement("login");
            email.AppendChild(login);
            XmlNode password = xdoc.CreateElement("password");
            email.AppendChild(password);
            XmlNode servidor = xdoc.CreateElement("servidor");
            email.AppendChild(servidor);
            XmlNode porto = xdoc.CreateElement("porto");
            email.AppendChild(porto);

            titulo.InnerText = "Periver";

            XmlAttribute tamanho_imagem = imagens.OwnerDocument.CreateAttribute("tamanho");
            tamanho_imagem.Value = "8";
            imagens.Attributes.Append(tamanho_imagem);


            XmlNode ext_i = xdoc.CreateElement("extensao");
            imagens.AppendChild(ext_i);
            ext_i.InnerText = "jpg";
            

            XmlAttribute tamanho_ficheiro = ficheiros.OwnerDocument.CreateAttribute("tamanho");
            tamanho_ficheiro.Value = "8";
            ficheiros.Attributes.Append(tamanho_ficheiro);

            
            XmlNode ext_f = xdoc.CreateElement("extensao");
            ficheiros.AppendChild(ext_f);
            ext_f.InnerText = "doc";

            XmlNode ext_f2 = xdoc.CreateElement("extensao");
            ficheiros.AppendChild(ext_f2);
            ext_f2.InnerText = "pdf";
             
            n_dias.InnerText = "30";
            tamanho_letra.InnerText = "12";
            tipo_letra.InnerText = "Verdana";


            XmlAttribute seguro = email.OwnerDocument.CreateAttribute("seguro");
            seguro.Value = "True";
            email.Attributes.Append(seguro);

            login.InnerText = "periver_auto@sapo.pt";
            password.InnerText = "periver";
            servidor.InnerText = "smtp.sapo.pt";
            porto.InnerText = "25";


            XmlNode version = xdoc.CreateXmlDeclaration("1.0", "utf-8", "yes");
            xdoc.InsertBefore(version, root);

            xdoc.Save(Server.MapPath("../config/Settings.xml"));
        }
	}
  
    public static Config Get_Instance()
    {
        if (instance != null)
        {
            return instance;
        }
        else
        {
            instance = new Config();
            return instance;
        }
    }

    public String Get_Titulo()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("titulo");
        return node_list[0].InnerText;  
    }

    public int Get_Tamanho_Imagens()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("imagens");
        return int.Parse(node_list[0].Attributes[0].InnerText);
    }

    public int Get_Tamanho_Ficheiros()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("ficheiros");
        return int.Parse(node_list[0].Attributes[0].InnerText);
    }

    public int Get_Numero_Dias()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("n_dias");
        return int.Parse(node_list[0].Attributes[0].InnerText);
    }

    public String Get_Tipo_Letra()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("tipo_letra");
        return node_list[0].InnerText;
    }

    public int Get_Tamanho_Letra()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("tamanho_letra");
        return Convert.ToInt32(node_list[0].InnerText);
    }

    public String Get_Email_Login()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("login");
        return node_list[0].InnerText;
    }

    public String Get_Email_Password()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("password");
        return node_list[0].InnerText;
    }

    public String Get_Email_Servidor()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("servidor");
        return node_list[0].InnerText;
    }

    public int Get_Email_Porto()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("porto");
        return int.Parse(node_list[0].InnerText);
    }

    public Boolean Get_Email_Seguro()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("email");
        return Boolean.Parse(node_list[0].Attributes[0].InnerText);
    }

    public String[] Get_Extensoes_Imagem()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("imagens");
        XmlNodeList child_nodes = node_list[0].ChildNodes;

        String[] to_return = new String[child_nodes.Count];

        for (int i = 0; i < child_nodes.Count; i++)
        {
            to_return[i] = child_nodes[i].InnerText;
        }

        return to_return;
    }

    public String[] Get_Extensoes_Ficheiro()
    {
        XmlNodeList node_list = xdoc.GetElementsByTagName("ficheiros");
        XmlNodeList child_nodes = node_list[0].ChildNodes;

        String[] to_return = new String[child_nodes.Count];

        for (int i = 0; i < child_nodes.Count; i++)
        {
            to_return[i] = child_nodes[i].InnerText;
        }

        return to_return;
    }
}
