/**
 * Classe principal.
 */
iMicrocis = Class.create(
{
    /**
     * Executa ao instanciar a classe.
     * 
     * @param String p Os parâmetros de inicialização.
     */
    initialize: function(p) {
        // Se parâmetros de extensão forem fornecidos...
        if (p != undefined && p.extend != undefined)
            // Extende o objeto.
            this.extend(p.extend);
    },
    
    /**
     * Extende o objeto.
     * 
     * @param String p Os parâmetros de extensão.
     */
    extend: function(p) {        
        // Carrega a classe responsável pela interface.
        if (p.search(/--with-interface/i) > -1)
            this.Interface = new iMicrocis.Interface;
        
        // Carrega a classe responsável pelos serviços.
        if (p.search(/--with-service/i) > -1)
            this.Service = new iMicrocis.Service;
        
        // Carrega a classe responsável pelos serviço "Sistema".
        if (p.search(/--with-service/i) > -1 && p.search(/--with-service-system/i) > -1)
            this.Service.System = new iMicrocis.Service.System;
        
        // Carrega a classe responsável pelos serviço "Soluções em TI".
        if (p.search(/--with-service/i) > -1 && p.search(/--with-service-it-solutions/i) > -1)
            this.Service.ITSolutions = new iMicrocis.Service.ITSolutions;
        
        // Carrega a classe responsável pelos serviço "Assistência Técnica".
        if (p.search(/--with-service/i) > -1 && p.search(/--with-service-technical-assistance/i) > -1)
            this.Service.TechnicalAssistance = new iMicrocis.Service.TechnicalAssistance;
    },
    
    /**
     * Carrega a área.
     * 
     * @param String area A classe da área a ser carregada.
     */
    load: function(area) {
        // Extende a classe para suporte à interface e carrega a área determinada.
        this.extend('--with-interface');
        this.Interface.load(area);
	}
});
