(function() {
    
    var W = this, D = this.document;
    
    box.ui('generic').create({
        id: 'pagemask'
    }).set({
        html: '<div id="pageMask"></div>'
    });
    
    box.ui('generic').create({
        id: 'popinloader'
    }).set({
        html: '<div id="popinLoader">' + l10n.loading + '</div>'
    });
    
    box.ui('generic').create({
        id: 'popin'
    });
    
    var openPopin = function() {
        box.ui('generic.popinloader').removeFromDOM();
        box.ui('generic.popin')
            .visible(false)
            .addToDOM({target: 'body'})
			.applyStyles({visibility: 'visible', opacity: 0, top: 'middle', left: 'middle'}, 'viewport')
            .animate({opacity: 0.999}, 300, 'open');
			if(document.getElementById("id_flash")){
					setTimeout("setFlash.writeFlash(setFlash.urlFlv)",800);
			}
			if(document.getElementById("menuThema")){
					menuThema.init();
			}
    };
    
    var closePopin = function() {
		box.ui('generic.popin').animate({opacity: 0}, 500, 'close');
    };
    
    var openMask = function() {
        box.ui('generic.pagemask')
            .addToDOM({target: 'body'})
            .applyStyles({opacity:0, top: 0, left: 0, width: 'viewport', height: 'document'})
            .animate({opacity: 0.6}, 180, 'open');
    };
    
    var closeMask = function() {
        box.ui('generic.pagemask').animate({opacity: 0}, 180, 'close');
    };
    
    var openLoader = function() {
        box.ui('generic.popinloader')
            .visible(false)
            .addToDOM({target: 'body'})
            .applyStyles({visibility: 'visible', opacity: 0, top: 'middle', left: 'middle'}, 'viewport')
            .animate({opacity: 0.999}, 300, 'open');
    };
    
    var closeLoader = function() {
        box.ui('generic.popinloader').animate({opacity: 0}, 300, 'close');
    };
	
    
    box.bind({
        'contentloaded.generic.popin': function() {
            if(!box.ui('generic.pagemask').isBusy() && !box.ui('generic.popinloader').isBusy()) {
                closeLoader();
            }
        },/*'open.generic.pagemask': function(e) {
            if(box.ui('generic.popin').isContentLoaded()) {
                openPopin();
				if(document.getElementById("id_flash")){
					setFlash.writeFlash(setFlash.urlFlv);
				}
				if(document.getElementById("menuThema")){
					menuThema.init();
				}
            } else {
                openLoader();
            }
        },*/'open.generic.popinloader': function(e) {
            if(box.ui('generic.popin').isContentLoaded()) {
                closeLoader();
            }
        },'close.generic.popinloader': function(e) {
            openPopin();
        },'close.generic.popin': function(e) {
            box.ui('generic.popin').removeFromDOM();
            closeMask();
        },'close.generic.pagemask': function(e) {
            box.ui('generic.pagemask').removeFromDOM();
        },'open.generic.popin': function(e) {
            box.ui('escape').create('popin');
        },'closefromkey.escape.popin': function(e) {
            closePopin();
        }
    });
    
    box.addClick({
        id: 'openPopin',
        deepness: 2,
        test: function(e, element) {
            return (element.nodeName.toLowerCase() == 'a' && element.className.indexOf('openPopin') > -1);
        },
        action: function(e, element) {
            e.preventDefault();
			setFlash.getUrlVideo(element.href);
            openMask();
			openLoader();
			gAnalytic($(element).getBoxDatas('name'));
            box.ui('generic.popin')
                .setNamespace($(element).getBoxDatas('id'))
                .set({url: element.href, cache:false});
        }
    });
    
    box.addClick({
        id: 'closePopin',
        deepness: 1,
        test: function(e, element) {
            return (element.nodeName.toLowerCase() == 'a' && element.className.indexOf('closePopin') > -1);
        },
        action: function(e, element) {
            e.preventDefault();
            var ns = box.dom(element).getBoxDatas('id');
            if(ns == box.ui('generic.popin').getNamespace()) {
                closePopin();
            }
        }
    });
    
})();