function esc(str) {
    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");
} 
function in_array( what, where ){
  var a=false;
  for(var i=0;i<where.length;i++){
    if(what == where[i]){
      a=true;
        break;
    }
  }
  return a;
} 

RevvNews = function() {
    
    this.categories = {};
     
    this.config = {
        category_id: null
    };
    
    this.cache = {
        // If url is '' (no fragment), display this div's content.
        '': 'test'
    };   

     
    this.init = function(category_id, page ){
         // first we get all the categories
        this.set_menu();
        //this.set_articles_list(category_id);        
        
    }
    
    this.set_menu = function(){     
        if(page == 'travel'){
             $.getJSON("revvengine/revvnews/open/get_articles_by_category/25", function(data){            
                $.each(data.articles, function(i,article){
                    category = {
                        category_name: article.article_title,
                        id: article.id
                    };
                    _RevvNews.insert_category(category);                        
                });
                        
            });       
        
        } else {         
            $.getJSON("revvengine/revvnews/open/get_categories/", function(data){            
                $.each(data.categories, function(i,category){
                    //See which news page we're on
                    if (page == 'news') {
                        // we clone now the category li
                        if(in_array(category.id, _RevvNews.categories)){
                          _RevvNews.insert_category(category);  
                        } 
                    } else if (page == 'pass') {
                        // we clone now the category li
                        if(in_array(category.id, _RevvNews.pass_categories)){
                          _RevvNews.insert_category(category);  
                        }
                    }                  
                });       
            });          
        
        }   
    }
    
    this.insert_category = function(category){          
        var new_category = $("#categories ul li#new-category").clone().show('fast');        
        new_category.attr('id', 'cat-'+category.id);
        new_category.find("a").text(category.category_name);
        var link;
        if(page == 'travel'){
            link = 'a';        
        } else {
            link = 'c';
        }
        new_category.find("a").attr("href", esc('#'+link+'_'+category.id+'_'+category.category_name));
        new_category.find("a").attr("title", esc('#'+link+'_'+category.id+'_'+category.category_name));
        new_category.appendTo("#categories ul");    
        
    }  
    
    this.set_articles_list = function(category_id) {
        
        if(this.check_cache('c-'+category_id)){
            this.cache['c-'+category_id].show(); 

            return;
        } 
        var new_category_name = 'article-list-category-'+category_id;        
        var new_category = $("#article-list-category").clone().attr('id', new_category_name).appendTo('.article-list');
        
        this.cache['c-'+category_id] = new_category;
        
        $.getJSON("revvengine/revvnews/open/get_articles_by_category/"+category_id, function(data){
            $.each(data.articles, function(i,article){
                // we clone now the article li
                _RevvNews.insert_article(new_category, article);
            });        
        
        });   
        new_category.show();
                
    }
    
    this.insert_article = function(new_category, article){ 
        var new_category_name = new_category.attr('id');   
        var new_article = new_category.find("li#new-article").clone().show('slow');        
        new_article.attr('id', 'art-'+article.id);
        new_article.find("h3 a").text(article.article_title);
        new_article.find("h3 a").attr("href", esc('#a_'+article.id+'_'+article.article_title));
        new_article.find("h3 a").attr("title", esc('#a_'+article.id+'_'+article.article_title));
        new_article.find(".article-list-content-read a").attr("href", esc('#a_'+article.id+'_'+article.article_title)); 
        new_article.find(".article-list-content-text").html(article.article_caption);
        new_article.find(".article-list-image img").attr('alt', article.article_title);
        new_article.find(".article-list-image img").attr('src', '/resources/images/revvnews/thumbnails/' + article.article_thumbnail);
        new_article.appendTo("#"+new_category_name+" ul");  
        new_article.show();                                                                                                                  
    }
    
    this.show_categories = function(){
        $('.article-list').show();
    }

    this.hide_categories = function(){
        $('.article-list').hide('slow');   
    }
        
    this.hide_categories_lists = function(){
        $('.article-list-category').hide('slow');   
    }
    
    this.hide_article = function(){
        $('#article-info-listing').hide('slow');
    }
       
    this.hide_article_lists = function(){
        $('#article-info-listing .block_article').hide();
    }
    this.set_article = function(article_id){
        // we check the cache
        
        if(this.check_cache('a-'+article_id)){
            this.cache['a-'+article_id].show(); 
            $('#article-info-listing').show(); 
            return true;
        }
        var new_article = $("#article-info").clone().show('fast');
        this.cache['a-'+article_id] = new_article; 
        $.getJSON("revvengine/revvnews/open/get_articles/"+article_id,
            function(data){
                $.each(data.articles, function(i,article){    
                    new_article.attr('id', 'art-'+article.id);
                    new_article.find("h2 strong").text(article.article_title);
                    new_article.find("#article_content").html(article.article_content);
                    new_article.appendTo("#article-info-listing");
                    new_article.show();           
            }); 
        });         
        $('#article-info-listing').show();       
        
    }
    
    this.check_cache = function(object){
        if(this.cache[object]){

            return true;
        }       
        return false;
    }     
            
}
                                          
                                                              
var _RevvNews = new RevvNews();     
_RevvNews.categories = ['28', '29', '30', '31', '32', '33']; 
_RevvNews.pass_categories = ['35', '36', '37', '38', '39']; 
_RevvNews.init(category_id, page);
                            


$('.show-category').live('click', function() {
    /*var category_id = $(this).attr('href').split('_')[1];
    _RevvNews.hide_article_list();
    _RevvNews.set_articles_list(category_id);   */
      
});

$(window).bind( 'hashchange', function(e) {
    var url = $.param.fragment();
    var url_data = url.split('_');     
    if(url_data[0] == 'c'){
        _RevvNews.hide_article(); 
        _RevvNews.hide_categories_lists();
        _RevvNews.set_articles_list(url_data[1]);
        _RevvNews.show_categories();
        return;
    } else if(url_data[0] == 'a'){
        _RevvNews.hide_article_lists();
        _RevvNews.hide_categories();
        _RevvNews.set_article(url_data[1]);    

    }  else{
        if(page == 'travel'){
            _RevvNews.show_categories();
            _RevvNews.set_article(article_id); 
        } else {
            _RevvNews.hide_article(); 
            _RevvNews.hide_categories_lists();
            _RevvNews.set_articles_list(category_id);
            _RevvNews.show_categories();
        }

    }
});
$(window).trigger( 'hashchange' );
