/**
 * Fichier  : /share/sdmc/interne/layoutftv/arches/common/jsdev/publicite/libs/publicite.js
 * Revision : noSvnRevision
 */
(function (window, document, listPos, $, undef) {
    if ('OAS_url' in window ||
       typeof window.OAS_sitepage !== 'string' ||
       typeof listPos !== 'string') {
        throw new Error(
            'Erreur d\'initialisation des publicités. ' +
            (window.OAS_url ? 'Multi chargement' : 'Paramètres manquants')
        );
    }

    // Calcul de l'URL pour le chargement des pubs
    window.OAS_url = 'http://pub.ftv-publicite.fr/RealMedia/ads/' +
        'adstream_mjx.ads/' +
        window.OAS_sitepage +
        '/1' +
        (Math.random() + '').substring(2, 11) +
        '@' +
        listPos;

    // Appel du script de chargement des pubs
    document.write('<script type="text/javascript" src="' + window.OAS_url + '"><\/script>');

    window.OAS_AD = function (pos) {
        var reg = new RegExp(pos + '(,|$)');
        if (typeof window.OAS_RICH === 'function' &&
            reg.test(listPos)) {
            try {
                window.OAS_RICH(pos);
            }
            catch (e) {}
            listPos = listPos.replace(reg, '');
        }
    };

    // Gestion du déplacement des pubs dans leur position finale dans la page, après le chargement
    // complet de la page. Cette partie dépend de jQuery
    if ($ === undef) {
        throw new Error('Dépendence non satisfaite : jQuery');
    }

    var aListPos = listPos.split(','),

        // Définition des sélecteurs permettant d'identifier la zone
        // de génération et la zone de destination de chaque pub (définie par sa position OAS)
        // Il est possible de spécifier plusieurs sélécteurs pour chaque zone. Ces sélecteur seront
        // testés les uns après les autres, et le premier correspondant à un noeud DOM sera utilisé
        positionsMoves = {
            'Top'           : { from: '#adTop01', to: ['#eAdBlkLargeBanner .adCtnt', '#aTopPubBlk .adCtnt'] },
            'Middle'        : { from: '#adMiddle01', to: ['#adVdoBlk .ctnt', '#adVdoBlkMiddle .adCtnt', '#pubMiddle', '#adMiddle'] },
            'Middle2'       : { from: '#adMiddle02', to: '#AdSquare02 .ctnt' },
            'Position1'     : { from: '#adButton01', to: '#adButtonPos01' },
            'Position2'     : { from: '#adButton02', to: '#adButtonPos02' },
            'Position3'     : { from: '#adButton03', to: '#adButtonPos03' },
            'x01'           : { from: '#adSky01', to: '#adSkyscrapper01' },
            'x02'           : { from: '#adX02', to: '#adSkyscrapper02' },
            'x03'           : { from: '#adX03', to: ['#homePubBlk .ctnt', '#adVdoBlkx03 .adCtnt'] },
            'BottomRight'   : { from: '#adBottomRight', to: ['#AdBottomRight .ctnt', '#adBottom .ctnt', '#pubBottomRight .ctnt'] } 
        };

    function tooSmall() {
        return $(this).height() < 15;
    }

    // Fonction qui va déplacer une pub (spécifié par sa position OAS) vers sa destination dans le DOM.
    function moveAd(position, addFrom, addTo) {
        var from = '#eGetPub' + position,
            to = '#eShowPub' + position + ' .adCtnt';
        if (addFrom) {
            from += ',' + (addFrom instanceof Array ? addFrom.join(',') : addFrom);
        }
        if (addTo) {
            to += ',' + (addTo instanceof Array ? addTo.join(',') : addTo);
        }

        to = $(to).eq(0);
        from = $(from)
                    .eq(0)
                        .find('script')
                            .remove()
                        .end()
                    .contents()
                    .not(to);

        to
            .append(from)
            .each(function () {
                if ($.browser.msie) {
                    $(this)
                        .css('visibility', 'visible');
                    if (position === 'Top' || position === 'x01' || position === 'x02') {
                        $(this)
                            .css('zoom', '1');
                    }
                }
            })
            .parent('.autohide')
                .filter(tooSmall)
                .remove();
    }

    function onWindowLoad() {
        var i = aListPos.length;
        while (i--) {
            if (aListPos[i] in positionsMoves) {
                moveAd(aListPos[i], positionsMoves[aListPos[i]].from, positionsMoves[aListPos[i]].to);
            }
        }
    }

    // On attend la fin du chargement de la page pour repositionner les pubs
    $(window).load(onWindowLoad);
}(this, this.document, this.OAS_listpos, this.jQuery));
