text:
Mediobanca is an Italian investment bank founded in 1946 at the initiative of Raffaele Mattioli (at that time CEO of Banca Commerciale Italiana, the largest commercial bank in Italy which promoted its incorporation together with Credito Italiano) and Enrico Cuccia to facilitate the post-World War II reconstruction of Italian industry. Cuccia led Mediobanca from 1946 to 1982. Today, it is an international banking group with offices in Milan, Frankfurt, London, Madrid, Luxembourg, New York and Paris.

History
Mediobanca was set up to provide medium-term financing for manufacturers and establish a direct relationship between the banking sector and the investment needs of the reorganization of industry after the devastation caused by World War II. The Banking Act of 1936 established a clear separation between short term and medium-to-long term financing and the major banks had opted for specializing in short-term loans and there was the institution that would deal with financing for the flotation of companies that wished to obtain a stock market listing. In addition to granting consolidated loans against certificates of deposit and savings books, Mediobanca developed its activity of placement of bonds and shares issued by Italian companies. The professionalism developed by the bank under the, some would say brilliant, guidance of Enrico Cuccia enabled it to quickly acquire a position of leadership in the field of investment banking in Italy. In the mid-1950s, Mediobanca entered into agreements with important foreign partners (Lazard Group, Berliner Handels-Gesellschaft, Lehman Brothers, Sofina) that enabled the bank to play a role on the international market and obtained a Stock Exchange listing in 1956.

Since its origins, Mediobanca has operated in collateral areas to the credit market, such as trust management (1948 with Spafid), the promotion of international trade (through trading companies mainly operating between Italy and Africa in the mid-1950s), consumer credit (in 1960 through the company Compass which had been set up ten years earlier to develop new initiatives with industrial partners), auditing (1961 with Reconta, which was the first Italian audit firm), leasing operations (1970 with Selma). The placement of securities of Italian companies on the domestic market and abroad led to the acquisition of small holdings which have increased over time reinvesting part of the profits. They became the bank's main real investment for the protection of its equity. These packages favored the retention of major customers, the most important being Assicurazioni Generali, Montedison, SNIA Viscosa, Pirelli and Fiat. In 1963, together with other banks and financial institutions, Mediobanca led the formation of the first shareholder syndicate to intervene in the capital of a company, Olivetti, with the objective of redefining its strategic purchases on several occasions of Generali shares led to the bank being its largest shareholder (currently 13%). There were numerous, equally important, operations with Montedison, Fiat, SNIA Viscosa and Italcementi. These and other firms operated with Mediobanca were commonly called the 'Northern Galaxy'.

When Mediobanca was set up, the shareholders authorized Enrico Cuccia to operate using his own judgment and he kept the bank free from the political influences that gradually affected IRI, the public entity that controlled the three Italian banks of national interest that were Mediobanca's majority shareholders. 1982 saw the beginning of a period of intense friction with IRI under the presidency of Romano Prodi, when the three banks were instructed to discontinue Mr. Cuccia's mandate. Cuccia resigned as general manager by was elected to the Board by the shareholder Lazard while Mediobanca continued to be managed by two of his trusted aides, Silvio Salteri as CEO and Vincenzo Maranghi, his generally accepted "heir". In 1988, when Antonio Maccanico took over the presidency, the conflict was settled and the bank was privatized by the setting up of a shareholders' syndicate with equal representation of banking groups (initially the three founding banks) and private groups. On that occasion the position of CEO went to Vincenzo Maranghi and Cuccia accepted his appointment as Honorary President maintaining a symbolic presence in the bank and performing strategic consultancy. After Antonio Maccanico, called to government posts, the presidency went to Francesco Cìngano, who was Mattioli's successor in Banca Commerciale Italiana.

The new banking law passed in 1993, abolished the specialization requirement allowing ordinary banks to enter the medium/long term credit market and generated a series of problems between Mediobanca and its banking partners, which ceased to be the almost exclusive channel for the placement of term deposits and bonds. In the changing context of the financial markets of the early 1990s, Mediobanca evolved by engaging more decisively in investment banking operations, creating a major diversification in the private banking business and expanding its consumer credit area, finally developing an international presence. In the 1990s, it was among the main players in the Italian program of privatization of large state-owned enterprises (the largest operations concerned Telecom Italia, Enel, Banca di Roma and Banca Nazionale del Lavoro), also contributing to foreign programs in the United Kingdom, France, Germany and Spain.

Its final and perhaps greatest coup was its decisive role in the 1999 takeover of Telecom Italia by Olivetti. The deal was decided by the narrowest of margins with 51% of shareholders voting in favour of the deal. Under Cuccia's leadership, which lasted until his death in 2000, the bank was widely described as "secretive" despite being publicly traded: meetings with analysts or interviews with the media were not granted.

Business

Mediobanca's core business is banking, which accounts for some 85% of the Group's total income and 60% of its net profit. With the set up of CheBanca! there has been further diversification among banking activities themselves, between corporate and retail; the split is 50:35 for revenues and 65:35 for lending. The Bank's funding sources are being expanded, and  as at 21 September 2010 the retail segment accounted for 18% of the total funding. Alongside its  banking activities Mediobanca also manages an equity investment portfolio, with stakes in leading Italian companies in the insurance, publishing and telecommunications sectors.

The company has operations, itself and via subsidiaries, in the following segments:
in financial services to corporates: Mediobanca provides advisory and financial services to corporates, through its Corporate Finance, Lending and Structured Finance, Financial Markets, Mid-Corporate and Securities Portfolio divisions;
in financial services to households, through Group company Compass S.p.A. which provides consumer credit and personal loans directly. Compass today has a wide customer base, with around 2.2 million customers. Through Compass's 100%-owned subsidiaries, Mediobanca also provides mortgage loans to households, credit cycle management and factoring services . Mediobanca also has operations in the leasing segment through SelmaBipiemme Leasing S.p.A. (60%-owned by Compass and 40%-owned by the Banco BPM group).
in private banking, via Mediobanca Private Banking and Compagnie Monégasque de Banque (100%-owned) (market leader in the Principality of Monaco)
 in fiduciary services, via Spafid - Società per Amministrazioni Fiduciarie S.p.A.
in private equity and venture capital, with the following funds promoted by Mediobanca: Athena Private Equity, MB Venture Capital Fund I, Alice Lab, Prudentia (the latter promoted by Mediobanca's subsidiary Fidia SGR). It also has investments in the Clessidra Capital Partners and Euroqube funds;
in alternative asset management (MAAM), through the acquisition of Cairn Capital, a London-based credit asset manager.

Mediobanca today

The death of Enrico Cuccia in June 2000 exacerbated tensions with the banking shareholders due to conflicts of interest, competition in the same markets and the central bank's hostility towards Mediobanca's management. In April 2003, Vincenzo Maranghi agreed to resign as long as the bank's independence was preserved. This was achieved by promoting two of his aides to top management positions, Alberto Nagel and Renato Pagliaro. They developed market operations more intensely (IPOs, M & A, trading of financial instruments), reducing the weight of historical shareholdings (some of which, like Fiat, were sold). They also achieved penetration of the main foreign markets, where the bank's presence was established through local professional teams. With the launch of Che Banca! in 2008, operations in the retail banking segment expanded creating a model of multi-channel distribution (Internet, call centers, branches) capable of providing substantial deposit flows.
While the years immediately following the resignation of Maranghi entailed the appointment of an external Presidency (Gabriele Galateri and Cesare Geronzi), subsequent events reestablished all the conditions guaranteeing the independence of the institution whose leadership today has Alberto Nagel as CEO and Renato Pagliaro as president.

International branches

Since 2006 Mediobanca has embarked on an internationalization process with the aim of expanding its market base, diversifying counterparty risk and assisting its clients in their cross-border transactions. In Corporate and Investment Banking, Mediobanca has operations throughout continental Europe through branch offices opened in Paris (2004), Frankfurt (2007) and Madrid (2007). In these countries the Bank's strategy is to provide corporate finance activities through a wide range of corporate and leveraged finance, corporate lending, debt capital market and equity capital market services. The New York office performs brokerage and representative activities, while to complete the picture there are also representative offices located in Moscow and Luxembourg. Since summer 2013 Mediobanca has had a footprint in Turkey through subsidiary Mediobanca Advisory. The London branch office, set up in 2008, consists of specialist teams: Credit, Rates, FX, Alternatives and Equity Derivatives, Corporate Lending and Leveraged Finance, Equity research and Advisory. As well as its role as equity and derivatives platform, the London office is strategic in strengthening relations with hedge funds and private equity funds. Since 2014 the London office has also been home to the FIG EMEA team.

References

Investment banks
Banks of Italy
Banks established in 1946
Companies based in Milan
Italian companies established in 1946
Italian brands
Banks under direct supervision of the European Central Bank


text:
import {Container, Lazy, NewInstance, DOM, TemplatingEngine, ViewCompiler, CompositionEngine, View, ViewResources, ViewSlot} from "aurelia-framework";
import {Origin} from "aurelia-metadata";
import {UIEvent} from "./ui-event";

export module UIUtils {
  export var auContainer: Container;
  export var dialogContainer: Element;
  export var overlayContainer: Element;
  export var taskbarContainer: Element;

  export function lazy(T): any {
    if (!this.auContainer) {
      throw new Error('UIUtils.Lazy::Container not set');
    }
    return Lazy.of(T).get(this.auContainer)();
  }

  export function newInstance(T): any {
    if (!this.auContainer) {
      throw new Error('UIUtils.newInstance::Container not provided');
    }
    return NewInstance.of(T).get(this.auContainer);
  }

  // Toasts
  export function toast(options: any) {
    let opts = { container: this.overlayContainer, theme: 'dark', timeout: 5000, glyph: 'glyph-alert-info', message: '', title: '' };
    if (isString(options)) opts.message = options;
    else opts = Object.assign(opts, options);
    let toast = DOM.createElement('ui-toast');
    toast.classList.add('ui-toast');
    toast.classList.add(opts.theme);
    toast.innerHTML = `<h1>${opts.title}</h1><p>${opts.message}</p>`;
    if (opts.container.children.length > 0)
      opts.container.insertBefore(toast, opts.container.children[0]);
    else
      opts.container.appendChild(toast);

    let engine = this.lazy(TemplatingEngine);
    UIEvent.queueTask(() => engine.enhance({
      element: toast, bindingContext: {
        glyph: opts.glyph,
        timeout: opts.timeout
      }
    }));
  }

  // Alerts
  export function alert(options: any) {
    let opts = { glyph: 'glyph-alert-info', message: '', title: '', okLabel: 'OK' };
    if (isString(options)) opts.message = options;
    else opts = Object.assign(opts, options);
    let alert = DOM.createElement('ui-alert');
    alert.classList.add('ui-alert-shim');
    alert.innerHTML = `<h1>${opts.title}</h1><p>${opts.message}</p>`;
    this.dialogContainer.appendChild(alert);

    let engine = this.lazy(TemplatingEngine);
    return new Promise((resolve, reject) => {
      UIEvent.queueTask(() => engine.enhance({
        element: alert, bindingContext: {
          glyph: opts.glyph,
          okLabel: opts.okLabel,
          closeCallback: function(b) {
            resolve(b);
          }
        }
      }));
    });
  }

  export function confirm(options: any) {
    let opts = { glyph: 'glyph-alert-question', message: '', title: '', okLabel: 'OK', cancelLabel: 'Cancel' };
    if (isString(options)) opts.message = options;
    else opts = Object.assign(opts, options);

    let alert = DOM.createElement('ui-alert');
    alert.classList.add('ui-alert-shim');
    alert.innerHTML = `<h1>${opts.title}</h1><p>${opts.message}</p>`;
    this.dialogContainer.appendChild(alert);

    let engine = this.lazy(TemplatingEngine);
    return new Promise((resolve, reject) => {
      UIEvent.queueTask(() => engine.enhance({
        element: alert, bindingContext: {
          confirm: true,
          glyph: opts.glyph,
          okLabel: opts.okLabel,
          cancelLabel: opts.cancelLabel,
          closeCallback: function(b) {
            resolve(b);
          }
        }
      }));
    });
  }

  export function prompt(options: any) {
    let opts = { glyph: 'glyph-alert-question', message: '', title: '', okLabel: 'OK', cancelLabel: 'Cancel', type: 'single', };
    if (isString(options)) opts.message = options;
    else opts = Object.assign(opts, options);
    let alert = DOM.createElement('ui-prompt');
    alert.classList.add('ui-alert-shim');
    alert.innerHTML = `<h1>${opts.title}</h1><p>${opts.message}</p>`;
    this.dialogContainer.appendChild(alert);

    let engine = this.lazy(TemplatingEngine);
    return new Promise((resolve, reject) => {
      UIEvent.queueTask(() => engine.enhance({
        element: alert, bindingContext: {
          type: opts.type,
          glyph: opts.glyph,
          okLabel: opts.okLabel,
          cancelLabel: opts.cancelLabel,
          closeCallback: function(value) {
            resolve(value);
          }
        }
      }));
    });
  }

  // Event callback
  export function eventCallback(fn, self, ...rest) {
    let ret = fn.apply(self, rest);
    if (ret instanceof Promise) return ret;

    return new Promise((resolve, reject) => {
      ret !== false ? resolve(true) : reject();
    });
  }

  // Floating Tether
  export function tether(parent, child, opts?) {
    opts = Object.assign({ resize: true, position: 'bl' }, opts);
    child.style.position = 'fixed';

    return new (function(el, dd, options) {
      this.listeners = [];
      this.dispose = () => {
        this.listeners.forEach(parent => {
          parent.removeEventListener('scroll', this.position);
          parent.removeEventListener('touchstart', this.position);
        })
        window.removeEventListener('resize', this.position);
      }
      this.position = (sizeWidth = false, topLeft = false) => {
        let isRtl = window.isRtl(el);
        let pos = el.getBoundingClientRect();
        if (options.resize) dd.style.minWidth = pos.width + 'px';

        el.classList.remove('ui-tether-top');
        el.classList.remove('ui-tether-bottom');
        el.classList.remove('ui-tether-left');
        el.classList.remove('ui-tether-right');

        dd.classList.remove('ui-tether-top');
        dd.classList.remove('ui-tether-bottom');
        dd.classList.remove('ui-tether-left');
        dd.classList.remove('ui-tether-right');

        let align = options.position.split('');

        if (align[0] == 't') {
          if (pos.top - dd.offsetHeight < 0) {
            dd.classList.add('ui-tether-top');
            el.classList.add('ui-tether-bottom');

            dd.style.top = pos.bottom + 'px';
            dd.style.transform = 'translateY(0)';
          }
          else {
            el.classList.add('ui-tether-top');
            dd.classList.add('ui-tether-bottom');

            dd.style.top = pos.top + 'px';
            dd.style.transform = 'translateY(-100%)';
          }
        }
        else {
          if (pos.bottom + dd.offsetHeight > window.innerHeight && pos.top >= dd.offsetHeight) {
            el.classList.add('ui-tether-top');
            dd.classList.add('ui-tether-bottom');

            dd.style.top = pos.top + 'px';
            dd.style.transform = 'translateY(-100%)';
          }
          else {
            dd.classList.add('ui-tether-top');
            el.classList.add('ui-tether-bottom');

            dd.style.top = pos.bottom + 'px';
            dd.style.transform = 'translateY(0)';
          }
        }

        if (align[1] == 'c') {
          // dd.classList.add('ui-tether-right');
          // el.classList.add('ui-tether-right');

          dd.style.left = pos.left + (pos.width / 2) + 'px';
          dd.style.transform += ' translateX(-50%)';
        }
        else if (align[1] == (isRtl ? 'l' : 'r')) {
          if (pos.left - dd.offsetWidth < 0) {
            dd.classList.add('ui-tether-left');
            el.classList.add('ui-tether-left');

            dd.style.left = pos.left + 'px';
            dd.style.transform += ' translateX(0)';
          }
          else {
            dd.classList.add('ui-tether-right');
            el.classList.add('ui-tether-right');

            dd.style.left = pos.right + 'px';
            dd.style.transform += ' translateX(-100%)';
          }
        }
        else {
          if (pos.left + dd.offsetWidth > window.innerWidth) {
            dd.classList.add('ui-tether-right');
            el.classList.add('ui-tether-right');

            dd.style.left = pos.right + 'px';
            dd.style.transform += ' translateX(-100%)';
          }
          else {
            dd.classList.add('ui-tether-left');
            el.classList.add('ui-tether-left');

            dd.style.left = pos.left + 'px';
            dd.style.transform += ' translateX(0)';
          }
        }
        dd.style.transform += ' translateZ(0)';
      };

      let parent = el.parentElement;
      do {
        let cs = getComputedStyle(parent);
        if (!(['scroll', 'auto'].indexOf(cs.overflowX) == -1 && ['scroll', 'auto'].indexOf(cs.overflowX) == -1)) {
          this.listeners.push(parent);
          parent.addEventListener('scroll', this.position);
          parent.addEventListener('touchstart', this.position);
        }
        parent = parent.parentElement;
      } while (parent != null)
      window.addEventListener('resize', this.position);

      this.position();
    })(parent, child, opts);
  }

  // View realated hooks
  export function loadView(url, parent, model?) {
    let __compositionEngine = this.lazy(CompositionEngine);

    let instruction: any = {
      viewModel: url,
      container: this.auContainer,
      childContainer: this.auContainer.createChild(),
      model: model
    };
    return new Promise((resolve, reject) => {
      __getViewModel(instruction)
        .then(newInstruction => {
          let viewModel: any = <any>newInstruction.viewModel;
          return __invokeLifecycle(viewModel, 'canActivate', instruction.model)
            .then(canActivate => {
              if (canActivate) {
                return __compositionEngine.createController(instruction)
                  .then(controller => {
                    controller.automate();
                    let slot = new ViewSlot(parent, true);
                    slot.add(controller.view);
                    slot.attached();
                    resolve(controller.viewModel);
                    return true;
                  });
              } else {
              }
            });
        })
        .catch(e => {
        });
    });
  }

  function __getViewModel(instruction) {
    let __compositionEngine = UIUtils.lazy(CompositionEngine);

    if (typeof instruction.viewModel === 'function') {
      instruction.viewModel = Origin.get(instruction.viewModel).moduleId;
    }

    if (typeof instruction.viewModel === 'string') {
      return __compositionEngine.ensureViewModel(instruction);
    }

    return Promise.resolve(instruction);
  }

  function __invokeLifecycle(instance, name, model) {
    if (instance && typeof instance[name] === 'function') {
      let result = instance[name](model);

      if (result instanceof Promise) {
        return result;
      }

      if (result !== null && result !== undefined) {
        return Promise.resolve(result);
      }

      return Promise.resolve(true);
    }

    return Promise.resolve(true);
  }
}

redpajama_set_name: RedPajamaGithub