/*
@author    : Igor "SkAZi" Potapov <igor@potapoff.org>
@copyright : Plan-B Ltd.
@require   : MooTools 1.2
*/
var ENABLE_PROMO = 'img/coffePromo6.swf';

var SITE_IMAGES = [];
var Loader = new Class({
    'initialize': function( images, onLoad ){
        
        this.images = images;
        this.total = 0;
        this.onLoad = onLoad || $lambda;
        var domimgs = [];
        
        var that = this;
        this.images.each(function( image ){
            if(!image.length)
                image = [image];
            
            domimgs.push(
                new Asset.image(
                    image[0], {alt: image[1] || '*', 'title': '', 'class': image[2] || "",
                    'onload': that.picLoaded.bind(that)
                })
            );
        });
        
        return domimgs;
        
    },
    'picLoaded': function(){
        this.total++;
        if(this.total >= this.images.length)
            this.onLoad();
    }
});


var detectFlash = function(ver) {
    try{
        return Browser.Engine.trident?
            (typeof new ActiveXObject('ShockwaveFlash.ShockwaveFlash.'+ver))=='object'
            : parseInt(navigator.plugins['Shockwave Flash'].description.split(" ")[2]) >= ver;
    } catch(e){}
    return false;
}

new Asset.images(
    [
    MEDIA_URL+'img/loader.gif',
    MEDIA_URL+'img/pic-side-1.gif',
    MEDIA_URL+'img/pic-side-2.gif',
    MEDIA_URL+'img/pic-2-1-1.gif'], {}
);


var clean_menu = function( active ){
    $$('#main-menu a[rel] img').each(function( image, j ){
        if(active && image == active){
            var name = image.getAttribute('src').replace(/\/menu-(\d+)(-[ah])?\.gif$/, '/menu-$1-a.gif');
            image.setAttribute('src', name);
            image.setStyle('cursor', 'default');
        } else {
            var name = image.getAttribute('src').replace(/\/menu-(\d+)(-[ah])?\.gif$/, '/menu-$1.gif');
            image.setAttribute('src', name);
            image.setStyle('cursor', '');
        }
    });
}

window.addEvent('domready', function(){

    new Asset.images([
        MEDIA_URL+'img/bg.gif',
        MEDIA_URL+'img/vignette.png',
        MEDIA_URL+'img/logo.png'
    ], {'onComplete': function(){ 
        var page = document.location.href.match(/#\/?((?:\w|-)+)((\/\w+)*)\/?$/);
        if((!Browser.Engine.trident || Browser.Engine.version > 4) && detectFlash(8) && $('main-menu'))
            //if(false)
            window.mainmenu = new Swiff(MEDIA_URL+'img/navigation.swf', {
                container: 'main-menu',
                width: "250",
                height: "250",
                id: 'flash-main-menu',
                vars: {
                    'xmlPath': MEDIA_URL+'xml/menu-'+LANGUAGE_CODE+'.xml',
                    'currentPosition': (page && page[1]) || ''
                }
            });
        
        if(ENABLE_PROMO)
            if(detectFlash(8) && frames.top.name != 'promo'){
                $('champ-promo').setStyle('display', 'block');
                new Swiff(MEDIA_URL+ENABLE_PROMO, {
                    container: 'champ-promo',
                    width: "100%",
                    height: "100%",
                    id: 'flash-champ-promo'
                });
            } else {
                closeChampPromo();
            }
        else if($('champ-promo'))
            $('champ-promo').destroy();
        
        uiCenterer();
        if($('main-menu'))
            $('main-menu').setStyle('display', 'block');
            
        $('copyright').setStyle('display', 'block');
        $('flash-pane').setStyle('background', 'transparent url('+MEDIA_URL+'img/vignette.png) no-repeat 50% 50%');
        $('flash-pane').innerHTML = '';
        $('plan').setStyle('display', 'block');
        $$('.index-h').setStyle('opacity', 0.3);
        
        $("graphic-all").setStyle('display', 'block');
        $("texts-all").setStyle('display', 'block');
        $('logo').setStyle('display', 'block');
        
        $('preloader').setStyles({'display': 'block', 'opacity': 0}).fade('in');
        
        
        var options = {
            'duration': 1300,
            'transition': 'back:out'
        };
        $('graphic-all').set('morph', options);
        $('texts-all').set('morph', options);

        options.duration -= 500;
        if($('pic-1-1-side-1'))
            $('pic-1-1-side-1').set('morph', options);
        if($('pic-1-1-side-2'))
            $('pic-1-1-side-2').set('morph', options);
        
        
        $$('.scroll-content').each( makeScrollable );
        
        $('logo-link').addEvent('click', function(){
            changeScreen( 'main' );
            if(window.mainmenu)
                window.mainmenu.toElement().clearMenu();
            else
                clean_menu();
            return false;
        });    
        
        if(page && page[1] && SITEMAP[page[1]]){
            changeScreen( page[1], page[2], true );
            clean_menu($$('#main-menu li a[rel='+page[1]+'] img')[0]);
        }
        
        
        if($('main-menu')){
            $('main-menu').onclick = function( e ){
                var event = new Event(e);
                if(event.target.nodeName!='IMG' || event.target.parentNode.nodeName!='A') return false;
                if(!event.target.parentNode.get('rel')) return true;
                
                clean_menu(event.target);
                changeScreen( event.target.parentNode.get('rel') );
                return false;
            }
            
            $('main-menu').onmouseover = function( e ){
                var event = new Event(e);
                if(event.target.nodeName!='IMG' || event.target.parentNode.nodeName!='A') return false;
                
                if(!/-a\.gif$/.test(event.target.getAttribute('src'))){
                    var name = event.target.getAttribute('src').replace(/\/menu-(\d+)(-[ah])?\.gif$/, '/menu-$1-h.gif');
                    event.target.setAttribute('src', name);
                }
                return false;
            }
            
            $('main-menu').onmouseout = function( e ){
                var event = new Event(e);
                if(event.target.nodeName!='IMG' || event.target.parentNode.nodeName!='A') return false;
                
                if(!/-a\.gif$/.test(event.target.getAttribute('src'))){
                    var name = event.target.getAttribute('src').replace(/\/menu-(\d+)(-[ah])?\.gif$/, '/menu-$1.gif');
                    event.target.setAttribute('src', name);
                }
                return false;
            }
        }
        
        if($('slide-element'))
            $('slide-element').addEvent('click', function(){
                var slider = this.getParent();
                if(slider.getSize().y < 25){
                    slider.tween('height', slider.getScrollSize().y);
                } else {
                    slider.tween('height', 19);
                }
            });
        
   }});
   
    (function(){
        var NEXT = parseInt(Math.random()*1000);
        $('promo-coffie').set('morph', {
                'duration': 300,
                'transition': 'back:in:out'            
            });
            
        var click = function(fast){
            
            if($('preloader').getStyle('visibility')=='hidden') $('preloader').fade('in');
            
            if(fast != 'fast')
                $('promo-coffie').morph({'margin-left': -1000});
            else
                $('promo-coffie').set({'margin-left': -1000});
                
            (function(){
                $('promo-coffie').setStyle('display', 'none');
                new Request({
                    'method': 'get',
                    'url': '/'+LANGUAGE_CODE+'/banners/front_left/'+NEXT+'/',
                    'onFailure': function(){
                        $('promo-coffie').setStyle('display', '').morph({'margin-left': 0});
                        if($('promo-plate').getStyle('display')!='none')
                            $('preloader').fade('out');
                    },
                    'onSuccess': function( html ){
                        var img = html.match(/<img.*?src=(?:'|")([^'"]+)(?:'|")/)[1];
                        var callback = function(){
                            $('promo-coffie').setStyle('display', '').set('html', html).morph({'margin-left': 0});
                            $('promo-coffie-anchor').addEvent('click', click);
                            if($('promo-plate').getStyle('display')!='none')
                                $('preloader').fade('out');
                        }
                        if(img) new Asset.image(img, {'onload': callback});
                        else callback();
                    }
                }).send();
                NEXT++;
            }).delay(fast != 'fast'? 500: 1);
        }
            
        click('fast');
        
    })();
   
   
    (function(){
        var NEXT = parseInt(Math.random()*1000);
        $('promo-plate').set('morph', {
                'duration': 700,
                'transition': 'sine:in:out'            
            });
            
        var click = function(fast){
            if($('preloader').getStyle('visibility')=='hidden') $('preloader').fade('in');
            
            if(fast != 'fast')
                $('promo-plate').morph({'margin-top': 1000});
            else
                $('promo-plate').set({'margin-top': 1000});
                
            (function(){
                $('promo-plate').setStyle('display', 'none');
                new Request({
                    'method': 'get',
                    'url': '/'+LANGUAGE_CODE+'/banners/front_center/'+NEXT+'/',
                    'onFailure': function( html ){
                        $('promo-plate').setStyle('display', '').morph({'margin-top': 0});
                        if($('promo-coffie').getStyle('display')!='none')
                            $('preloader').fade('out');
                    },
                    'onSuccess': function( html ){
                        var img = html.match(/<img.*?src=(?:'|")([^'"]+)(?:'|")/)[1];
                        var callback = function(){
                            $('promo-plate').setStyle('display', '').set('html', html).morph({'margin-top': 0});
                            $('promo-plate-anchor').addEvent('click', click);
                            if($('promo-coffie').getStyle('display')!='none')
                                $('preloader').fade('out');
                        }
                        if(img) new Asset.image(img, {'onload': callback});
                        else callback();
                    }
                }).send();
                NEXT++;
            }).delay(fast != 'fast'? 500: 1);
            
        }            
        
        click('fast');
        
    })();
    
   
    (function(){
        var NEXT = 1;
        if(!$('promo-index')) return false;
        $('promo-index').set('tween', {
                'duration': 700,
                'transition': 'sine:in:out'            
            });
            
        var click = function(fast){
            if($('preloader').getStyle('visibility')=='hidden') $('preloader').fade('in');
            
            if(fast != 'fast')
                $('promo-index').tween('opacity', 0);
            else
                $('promo-index').setStyle('opacity', 0);
                
            (function(){
                new Request({
                    'method': 'get',
                    'url': '/'+LANGUAGE_CODE+'/banners/generic/'+NEXT+'/',
                    'onFailure': function( html ){
                        $('promo-index').tween('opacity', 1);
                        $('preloader').fade('out');
                    },
                    'onSuccess': function( html ){
                        $('promo-index').set('html', html).tween('opacity', 1);
                        $('promo-index-anchor').addEvent('click', click);
                        $('preloader').fade('out');
                    }
                }).send();
                NEXT++;
            }).delay(fast != 'fast'? 700: 1);
            
        }            
        
        $('promo-index-anchor').addEvent('click', click);
        
    })();
    
    if($('promo-confectioner'))
        (function(){
            var NEXT = parseInt(Math.random()*1000);
            if($('promo-confectioner-inner'))
            $('promo-confectioner-inner').set('morph', {
                    'duration': 200,
                    'transition': 'sine:in:out'            
                });
                
            var click = function(){
                if($('promo-confectioner-inner'))
                $('promo-confectioner-inner').morph({'margin-left': 250});
                    
                (function(){
                    new Request({
                        'method': 'get',
                        'url': '/'+LANGUAGE_CODE+'/banners/confectioner/'+NEXT+'/',
                        'onFailure': function(){
                            $('promo-confectioner-inner').morph({'margin-left': 0});
                        },
                        'onSuccess': function( html ){
                            var img = html.match(/background: url\(([^'"]+)\)/)[1];
                            var callback = function(){
                                $('promo-confectioner').set('html', html);
                                $('promo-confectioner-inner').set('morph', {
                                    'duration': 200,
                                    'transition': 'sine:in:out'            
                                }).morph({'margin-left': 0});
                                $('promo-index-confectioner').addEvent('click', click);
                            }
                            if(img) new Asset.image(img, {'onload': callback});
                            else callback();
                        }
                    }).send();
                    NEXT++;
                }).delay(500);
                
            }            
            
            click.delay(1000);
        })();

    window.addEvent('resize', uiCenterer);
    
});

var uiCenterer = function(){
    
    var dims = window.getSize();
    var left = (dims.x-960)/2;
    if(left<0) left = 0;
    var top  = (dims.y-680)/2;
    if(top<0) top = 0;
    
    $('graphic-all').setStyles({'left': left, 'top': top});
    $('logo').setStyles({'left': left, 'top': top});
    $('preloader').setStyles({'left': left+120, 'top': top});
    $('copyright').setStyles({'left': left+50, 'top': top+650});
    if($('main-menu'))
        $('main-menu').setStyles({'left': left+600, 'top': top});
    $('plan').setStyles({'left': left+800, 'top': top+667});

    $('texts-all').setStyles({'left': left, 'top': top});

    if($('promo-confectioner')){
        $('promo-confectioner').setStyle('top', top + 50)
        if(dims.x < 960){
            var e = 0;
            if((Browser.Engine.presto || Browser.Engine.webkit) && dims.y < 700) e = 17;
            $('promo-confectioner').setStyle('right', dims.x-960-e);
        } else {
            $('promo-confectioner').setStyle('right', 0);
        }
    }
    
    if($('champ-promo')){
        $('champ-promo').setStyles({'height': 1, 'marginTop': -5000});
        var dims = window.getScrollSize();
        $('champ-promo').setStyles({
            'marginTop': 0,
            'top': top + 200,
            'height': dims.y - top - 201
        });
    }
}


var closeChampPromo = function(){
    frames.top.name = 'promo';
    if($('champ-promo'))
        $('champ-promo').destroy();
}

var showChampNews = function(){
    closeChampPromo();
    link('#news/article/33');
}

var makeClickable = function(){
    
}

var makeScrollable = function( scroll ){
    
    var scroll = $( scroll );
    var inner = scroll.getElements('.scroll-inner')[0];
    if(!inner || scroll.getSize().y > inner.getSize().y-15)
        return;

    inner.set('tween', {'duration': 500, 'transition': 'back:out'});
    
    var SCROLLING = false;
    var control = new Element('div', {'class': 'scroll-control'}).inject(scroll, 'after');
    new Element('a',{'href': '#', 'class': 'scroll-down', 'events':{
        'click': function(){
            if(SCROLLING) return false;
            $$('.scroll-control .scroll-up').removeClass('disabled-up');
            SCROLLING = true;
            (function(){SCROLLING = false;}).delay(500);
            var to = parseFloat(inner.getStyle('marginTop'));
            if(to + inner.getSize().y < scroll.getSize().y + 20) return false;
            to = to - scroll.getSize().y;
            
            if(this.getParent('#address-flash'))
                $$('#address-flash .left-block li').each(function( item ){
                    item.removeClass('active');
                });
            
            inner.tween('marginTop', to);
            if(to + inner.getSize().y < scroll.getSize().y + 20)
                this.removeClass('hover-down').addClass('disabled-down');
            return false;
        },
        'mouseenter': function(){
            if(-scroll.getSize().y + parseFloat(inner.getStyle('margin-Top')) + inner.getSize().y < 20) return;
            this.addClass('hover-down');
        },
        'mouseleave': function(){
            this.removeClass('hover-down');
        }
    }}).inject(control);

    new Element('a',{'href': '#', 'class': 'scroll-up', 'events':{
        'click': function(){
            if(SCROLLING) return false;
            $$('.scroll-control .scroll-down').removeClass('disabled-down');
            SCROLLING = true;
            (function(){SCROLLING = false;}).delay(500);
            var to = parseFloat(inner.getStyle('margin-Top'));
            if(to == 0) return false;
            to = to + scroll.getSize().y;
            if(to > 0) to = 0;

            if(this.getParent('#address-flash'))
                $$('#address-flash .left-block li').each(function( item ){
                    item.removeClass('active');
                });
            
            inner.tween('marginTop', to);
            if(to == 0)
                this.removeClass('hover-up').addClass('disabled-up');
            return false;
        },
        'mouseenter': function(){
            if(parseFloat(inner.getStyle('marginTop')) > -20) return;
            this.addClass('hover-up');
        },
        'mouseleave': function(){
            this.removeClass('hover-up');
        }
    }}).inject(control);
    
    $$('.scroll-control .scroll-up').addClass('disabled-up');
}

var scrollAddress = function( that, id ){
    
    that.getParent('ul').getElements('li').each(function( item ){
        item.removeClass('active');
    });
    that.parentNode.addClass('active');
    
    var inner = that.getParent('div.content').getElements('.scroll-inner')[0];
    var hs = inner.getElements('h3');
    inner.tween('marginTop', -(hs[id].getPosition().y - hs[0].getPosition().y));
     
    return false;
}


var preloadBackImages = function(arr, callback){
    if(!arr) return callback();
    
    var images = [];
    for(var i=0; i<arr.length; i++)
        if($$('img.'+arr[i]).length == 0)
            images.push([MEDIA_URL+'img/'+arr[i]+'.gif', '*', arr[i]]);
    
    if(images.length > 0)
        new Loader( images, callback ).each(function( img ){
            img.inject($('graphic-all'), 'top');
        });
    else
        callback();
}


var aboutPageAnimation = function(first, second){
    if(first=='hide' && $('pic-1-1-side-1').getStyle('visibility') == 'visible')
        $('pic-1-1-side-1').morph({'left': -700, 'top': 500, 'opacity': 0});
    if(second=='hide' && $('pic-1-1-side-2').getStyle('visibility') == 'visible')
        $('pic-1-1-side-2').morph({'left': -700, 'top': 500, 'opacity': 0});
    if(first=='show')
        $('pic-1-1-side-1').setStyles({'left': -700, 'top': 500, 'visibility': 'visible', 'opacity': 0}).morph({'left': 0, 'top': 20, 'opacity': 1});
    if(second=='show')
        $('pic-1-1-side-2').setStyles({'left': -700, 'top': 500, 'visibility': 'visible', 'opacity': 0}).morph({'left': 0, 'top': 0, 'opacity': 1});
}


window.addEvent('keydown', function(event){
    if(event.key == 'tab') return false;
});
