(function() {
    var W = this, D = this.document, DE = D.documentElement;    
    var dataManager = {
        init:function(){
            $('.popinWrapper a').live('click', function(){
                if($(this).hasClass('popinClose')){
                    return;
                }
                if($(this).attr('target')){
                    return;
                }
                if($(this).hasClass('newPopin')){
                    return;
                }
                if(dataManager.available){
                    var celm = this;
                    $.ajax({
                        type: 'GET',
                        url: $(this).attr('href'),
                        dataType: 'html',
                        beforeSend: function(){
                            dataManager.available = false;
                            // afficher loader
                            $(celm).addClass('loading');
                        },
                        success: function(data) {
                            dataManager.elem = $(data);
                            var img = dataManager.elem.find('img');
                            var src = img.attr('src');
                            img.remove();
                            dataImg.single(src, 25000);
                        },
                        error: function() {
                            return;
                        }
                    });
                }
                return false;
            });
        }
    };
    var dataImg = {
        single: function(src, timeout) {
            var that = this;
            that.start(timeout);
            that.preload = new Image();
            that.preload.onload = function() {
                that.stop({status: 'success', img: this, src: src, width: this.width, height: this.height});
            };
            that.preload.src = src;
        },
        start: function(timeout) {
            var that = this;
            that.available = false;
            that.timer = W.setTimeout(function() {
                that.stop({status: 'timeout'});
            }, timeout || that.timeout);
        },
        
        stop: function(evt) {
            W.clearTimeout(this.timer);
            this.timer = null;
            if(this.preload) {
                if(this.preload.nodeName) {
                    this.preload.src = '';
                    this.preload.onload = null;
                } else {
                    var i = this.preload.length;
                    while(i--) {
                        this.preload[i].src = '';
                        this.preload[i] = this.preload[i].onload = null;
                    }
                }
                this.preload = null;
            }
            evt.type = evt.status == 'success' ? 'preloadready': 'preloaderror';
            evt.id = 'imgLoadAjax';
            box.fire(evt);
        }
    };
    box.bind({
        'preloadready.imgLoadAjax':function(elm) {
            elm.img.src = elm.src;
            $(elm.img).attr({
                height: elm.height,
                width: elm.width
            });
            dataManager.elem.find('.imgContainer').append(elm.img);
            dataManager.elem.addClass('new');
            $('.popinWrapper .wrapInner').after(dataManager.elem).animate({
                opacity: 0
            }, 1000, function(){
                $(this).remove();
                if(Number(box.dom('.new').getBoxDatas('active')) >= 0){
                    var ac = Number((box.dom('.new').getBoxDatas('active')));
                    $('.navPop li a').removeClass('on');
                    $('.popinWrapper a.loading').removeClass('loading');
                    $('.navPop li:eq('+ac+') a').addClass('on');
                }
                $('.popinWrapper .new').removeClass('new');
                dataManager.available = true;
            });
        }
    });
    dataManager.available = true;
    dataManager.init();
})();
