var Philippe = {
    
    init : function() {
        
        //this.initClaret();
        this.initMenu();
        this.initNavigator();
        this.initAdmin();
        
        Philippe.guestbook.init();
        
        $('a.colorbox').live('click', function() {
            
            $.colorbox({
                opacity: 0.5,
                width: 640,
                fixed: false,
                href: $(this).attr('href')
            });

            return false;
        });
    },
    
    initNavigator : function() {
        
        if($('#sf_content').length) {
            
            Navigator.onLoad = function(url) {

            }
            
            Navigator.onComplete = function(url, xhr) {
                
                if(typeof(url) != 'undefined') {
                    
                    Philippe.trackUrl(url);
                }
                
                Philippe.initClaret();
            }
            
            Navigator.onInitUrl = function(url) { // fixme
                
                if(!url.length)
                    url = Philippe.routing.homepage
                
                if(url != Philippe.routing.contact){
                    
                    $('#claret-body').removeClass('logo');
                    $('#claret-body div.wrap').show();
                }
                
                url = url.replace(/\/(.*)(\/hu|\/en|\/fr)/gi, "/$1");
                
                switch(url) {
                    
                    default:
                    	//console.log(url.replace(/\/(.*)(\/hu|\/en|\/de)/gi, "/$1"));
                        //alert(url)
                        break;
                        
                    case '/':
                    case Philippe.routing.homepage.substring(0,Philippe.routing.homepage.length - 1):
                    case Philippe.routing.homepage:
                        
                        Philippe.menu_box.init();
                        ImageSlider.init();
                        
                        break;
                    
                    case Philippe.routing.news:
                        
                        break;
                    
                    case Philippe.routing.contact:
                        
                        $('#claret-body div.wrap').hide();
                        $('#claret-body').addClass('logo');
                        Philippe.contact.init();
                        
                        break;
                    
                    case Philippe.routing.gallery_images:
                    case Philippe.routing.gallery_videos:
                        
                        $('a[rel=gallery]').colorbox();
                        
                        break;
                }
                
                Philippe.initClaret();
                setTimeout(Philippe.initClaret, 250);
                
            }
            
            Navigator.init('a:not(.external):not(.admin):not([target=_blank])');
        }
    },
    
    initAdmin : function() {
        
        $('a.admin').live('click', function() {
            
            $.colorbox({
                opacity: 0.5,
                width: Math.max($(window).width() - 30, 760),
                height: Math.max($(window).height() - 30, 650),
                iframe: true,
                fixed: true,
                href: $(this).attr('href').replace('#',''),
                onClosed: function() {
                    document.location.reload();
                }
            });

            return false;
        });
        
        $('div.admin-filemanager').each(function() {
            
            var root_dir = $(this).parent().find('input.admin-filemanager-input').attr('manager-root');
            
            $(this).fileManager({
            
                ajaxPath: Philippe.routing.fileManager + '/' + root_dir,
                upload: true,
                createFolder: false,
                events:{
                    click: function dclick() {

                        var path = $(this).data().item.fullPath;
                        var parent = $(this);
                        var input;

                        do {
                            parent = parent.parent();
                            input = parent.find('input.admin-filemanager-input');

                        } while(input.length < 1);
                        
                        path = path.replace(new RegExp('^(.+)/([^/]*)$'),'$2');
                        
                        if(path.length)
                            input.val(path);
                    }
                }
            });
        });
        
        $('textarea.admin-ckeditor').ckeditor({
            skin : 'v2',
            extraPlugins: 'restaurantmenuitem,restauranttitle,restaurantmenuhead',
            toolbar_Full : [
                {name: 'document', items : [ 'NewPage', 'Maximize', 'Source' ]},
                {name: 'styles', items : [ 'Styles','Format' ]},
                {name: 'clipboard', items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ]},
                {name: 'editing', items : [ 'Find','Replace','-','SelectAll' ]},
                '/',
                {name: 'basicstyles', items : [ 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock','Bold','Italic','Strike','-','TextColor','BGColor','-','RemoveFormat' ]},
                {name: 'insert', items : [ 'RestaurantTitle', 'RestaurantMenuHead', 'RestaurantMenuItem', 'Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak' ]},
                {name: 'paragraph', items : [ 'NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote' ]},
                {name: 'links', items : [ 'Link','Unlink','Anchor' ]}
            ],
            uiColor : '#f7f5e9'
        });
        //CKEDITOR.config.forcePasteAsPlainText = true;

        CKFinder.setupCKEditor(null, {basePath: '/ckfinder/', defaultLanguage: 'hu'});
    },
    
    initClaret : function() {
        
        var top = $('#header').outerHeight() + $('#body').outerHeight() - 15;
        
        $('#claret').css('top', top);
    },
    
    initMenu : function() {
        
        $('#menu .item').bind('mouseover mouseout', function(event) {
            
            var img = $(this).find('img');
            
            if(!img.hasAttr('src'))
                return;
            
            var src = img.attr('src');
            
            switch(event.type) {
                
                case 'mouseover':
                    
                    src = src.replace(new RegExp('(.*)(\\.\\w{3})'), '$1_over$2');
                    
                    img.attr('src', src);
                    
                    //if(!$(this).find('ul').is(":animated"))
                    $(this).find('div.dd').stop(true,true).show();
                    
                    break;
                    
                case 'mouseout':
                    
                    src = src.replace(new RegExp('(.*)(_over)(\\.\\w{3})'), '$1$3');
                    
                    img.attr('src', src);
                    
                    $(this).find('div.dd').fadeOut(500);
                    
                    break;
            }
        });
        
        $('#menu .item .dd a').bind('click', function() {
            
            $(this).parent().parent().trigger('mouseout');
        });
    },

    trackUrl : function(url) {

        //alert('x' + typeof(window.pageTracker))
        window._gaq.push(['_trackPageview', url]);
        window._gaq.push(['_trackEvent', 'view', url]);
        //_trackEvent('category', 'action', 'opt_label', 'opt_value');
    }
}

Philippe.routing = {
    
};


Philippe.menu_box = {
    
    $container : 'div.menu-box',
    
    init : function() {
        
        $(this.$container).find('a.changetime').unbind('click').click(function() {
            
            $.ajax({
                url: $(this).attr('href'),
                success: jQuery.proxy( Philippe.menu_box.ajaxSuccess, this )
                //dataType: dataType
            });
            
            /*function(responseText, statusText, xhr, $form) {
                    Philippe.menu_box.ajaxSuccess(responseText, statusText, xhr, $form);
                }*/
            
            return false;
        });
    },

    ajaxSuccess : function(responseText, statusText, xhr, $form) {
        
        var container = $(this).parent().parent();
        
        container.fadeOut(750, function() {
            
            var container_new = $(responseText);
            
            container.replaceWith(container_new);
            
            container_new.hide(0)
            
            container_new.fadeIn(750)
            
            Philippe.menu_box.init();
        });
    }
};


Philippe.guestbook = {
    
    $container : 'div.guestbook',
    
    init : function() {
        
        this.initScroller();
        
        $(this.$container).find('form .submit').click(function() {
            
            var form = $(this).closest('form');
            
            form.fadeTo(500,0.5);
            form.ajaxSubmit({
                //target: ,
                success: function(responseText, statusText, xhr, $form) {
                    
                    Philippe.guestbook.ajaxSuccess(responseText, statusText, xhr, $form);
                }
            });
            
            return false;
        });
    },

    initScroller : function() {

        $(this.$container).find('.scrollable').jScrollPane({
            //verticalDragMinHeight: 20,
            //verticalDragMaxHeight: 20,
            arrowButtonSpeed: 20,
            mouseWheelSpeed: 20,
            showArrows: true,
            autoReinitialise: false
        });
    },

    ajaxSuccess : function(responseText, statusText, xhr, $form) {
        
        var data = jQuery.parseJSON(xhr.getResponseHeader('x-json'));
        
        if(!data.success) {
            
            $(this.$container).find('form .invalid').removeClass('invalid');
            
            for(it in data.messages) {
                
                $(this.$container).find('#guestbook_' + it).addClass('invalid');
            }
            
            $(this.$container).find('form').fadeTo(500,1);
            
            return;
        }
        
        $(this.$container).replaceWith(responseText);
        $(this.$container).find('form').hide();
        $(this.$container).find('.success').fadeIn(750);
        
        this.init();
    }
};


Philippe.contact = {
    
    $container : 'div.contact',
    
    init : function() {
        
        $(this.$container).find('form .submit').click(function() {
            
            var form = $(this).closest('form');
            
            form.fadeTo(500,0.5);
            form.ajaxSubmit({
                //target: ,
                success: function(responseText, statusText, xhr, $form) {
                    
                    Philippe.contact.ajaxSuccess(responseText, statusText, xhr, $form);
                }
            });
            
            return false;
        });
    },

    ajaxSuccess : function(responseText, statusText, xhr, $form) {
        
        var data = jQuery.parseJSON(xhr.getResponseHeader('x-json'));
        
        if(!data.success) {
            
            $(this.$container).find('form .invalid').removeClass('invalid').css('border',''); // FIXME: border
            
            for(it in data.messages) {
                
                $(this.$container).find('#contact_' + it).addClass('invalid').css('border','1px solid #f00'); // FIXME: border
            }
            
            $(this.$container).find('form').fadeTo(500,1);
            
            return;
        }
        
        //var h = $(this.$container).find('div.content form').height();
        
        $(this.$container).find('div.content form').replaceWith('<p>Üzenet elküldve.</p>'); //.css('height', h + 'px');
        
        
        this.init();
        Philippe.initClaret();
    }
};
