;

/* settings:
 {:use_versioning=>false, :empty_template=>false, :file_handler=>"AnyHandableFile", :use_frontend=>true, :indirect_service_write_access=>"0", :use_system=>false}
*/

// /20/::/202::/blog:js -> <520> blog.js 

/**
 * @author Michael
 */
 DisplayModel.prototype.defaultItemName = function() { 
    return "Blog";
} 

function initMainPage(){

  }

DisplayModel.prototype.defaultItemName = function() {
  return "Entry"
}

ManageItemDialog.prototype.localFields = function() {
  return [
    ["Body", "body", "body"]
  ]
}

ManageItemDialog.prototype.showAddItemForm = function() {
  this.editBlog({ 
    titlePrefix: "Create",
    action: 'create_item'
  })
}

ManageItemDialog.prototype.__showEditItemForm = function() {
  this.editBlog({
    titlePrefix: "Edit",
    action: 'edit'
  })
}


function showItem(m) {

  itemDialog().withItem(m, itemModel).editItem()

}

var __w = null

ManageItemDialog.prototype.editBlog = function () {
  var instance = this
  var options = Object.extend({
    action: "",
    titlePrefix: ""
  }, arguments[0] || {})

  var w = null;
  w = new PWindow({
    header: false,
    title: options.titlePrefix + " " + itemModel.itemNameCapitalized()+"-Entry",
    contentWidget: new InlineEditDialog({
        items: [
          makeInlineEditString('Title', 'name'),
          makeInlineEditString('Tags', 'tags'),
          makeInlineEditSelection('Permission', 'permission',[{"everyone": "Everyone"},{"onlyme": "Only me"}, {"allbuddies": "All my Buddies"}]),
          makeInlineEditText('Content', 'body', true)
        ],
        action: options.action,
        model: this.m,
        afterShowEdit: function() {
          processAfterShow({
            maxHeightWindowAccessor: {
              totalHeightElement: function() {
                return w.frameDiv
              },
              containerHeightElement: function() {
                //return w.frameDiv.childNodes[1]
                return w.frameDiv
              }
            }
          });
        }, 
        hiddenFields: {
          "form_current_path": this.model.currentPath(),
          "form_id": this.m.id
        },
        onlyEdit: true,
        afterSaveOrCancel: function() {
          instance.checkEditCancel();
          instance.model.update();  
          hideEditableIframe();
          w.close();
        },
        afterSuccessfulSubmit: function() {
          //default_tags = update["default_tags"]
          instance.m.edit = false
          instance.m.increation = false
        }
    }),
    releaseHandler: function() { instance.checkEditCancel() }
  })

__w = w;
}


function initializeService() {}

 
var blog;
function initUserPage(){


blog = new UserBlogWidget({});
//blog.hide(); 
$("main-content-placeholder").appendChild(blog.htmlNode());

itemModel.disallowAddingFolders();
itemModel.setSortByColumn('added_at')
itemModel.changeToFolder('/');

// blog.show()
}

function afterInitFrontend(){
    $("tabs-explorer").hide(); 
}
var entries;
///////
UserBlogWidget = Class.create();
var dcw;
UserBlogWidget.prototype =
{
    defaultOptions: function()
    {
        return {model: itemModel};
    },
    setup:function(){ 
        this.has_params = this.checkPermalink();
        this.options.model = itemModel;
        this.options.model.setSortByColumn('added_at');
        this.options.model.addObserver(this);
    }, 
    update:function(){
        this.rerender();    
 
    },
    makeWidgetContent: function(){
        dcw = this;
        //var prehead = Builder.node('div',{style:"font-size:32px;font-weight:bolder;"},[TN("Blog-Service"),BR()]); 
        var allcomm = this.processEntriesArray(this.options.model.getModel());
        //var head =  Builder.node('div',{className:"article-header"},[TN(itemModel.user()+"\'s personal blog"),TN("(" + this.options.model.getModel().length + ")")])         
  
        if(this.has_params){
            if(entries[params["id"]]){
               allcomm = this.makeEntryRow(entries[params["id"]]);
               //head =  Builder.node('div',{className:"article-header"},[TN(itemModel.user()+"\'s personal blog"),TN(" (Permalink)")]) 
            }else{  
               allcomm = TN("ERROR");
            }
        }
             
        return Builder.node('div',{id:"allblogs",style: "padding:20px;"}, [/*prehead,head,*/Builder.node('div',{id:"writeCommentBox"}, []), Builder.node('div',{id:"blogBox"}, [allcomm])]);
    }, 
    getEntries: function(){
        var xx = this.options.model.getModel();        
        return xx;
    },
    checkPermalink:function(){
        params = parameters();
        var p = false;
        if(params["id"]){
            p = true;
        };
        return p;
    },
    processEntriesArray: function(arr){
        var allcomm = [];
        var inst = this;
        var xx = arr;
        entries = {};
        xx.each(function(itm,i){
            //allcomm.push(TN(itm.name))
            entries[itm.id] = itm;
            allcomm.push(inst.makeEntryRow(itm,i));
        });
        if(xx.length == 0){
            allcomm.push(TN("No blog-posts yet!"))
        }
        return allcomm;
   },
   makeEntryRow: function(c,i){
       var theDate = new Date(c.added_at);
       dateString = makeNiceDate(c.added_at);

       if (!c.body){
           c.body = "";
       }
       var body = c.body;
       var headdiv = Builder.node('div',[Builder.node('div',{style:"font-size:26px;font-weight:bold;"},[Builder.node("a",{style:"color:black;",href:"http:\/\/"+itemModel.user()+".myservic.es/blog@mike?id="+c.id},[TN(c.name)])])])

       share = new shareWidget({item:c,model:itemModel,currentPathPermalink:function(itm){return "http:\/\/"+itemModel.user()+".myservic.es/blog@mike?id="+itm.id}})
       var edit = "";

       var t = Builder.node('div',{style:"font-weight:bolder;text-align:center;font-size:70%;"},[table([TN("posted: "),dateString,
       TN("|"),
       TN("posted by: "),
TN(itemModel.user()),
       TN("|"),
       (new CommentsWidget({m:c,model:itemModel}).htmlNode()),
       TN("|"),
       itemModel.actions.actionsForItem({m:c}),
       TN("|"), share.htmlNode(),


       {columnOptions:{width:400},columnData:[NBSP()]}
       ])]);

 
       var bodydiv = Builder.node('div',[]);
       bodydiv.innerHTML = this.processImages(this.processVideos(body));//;this.processVideos(this.processImages(body))
       var footdiv =  NBSP(); 
       return Builder.node('div',{className:"blogEntry"},[headdiv,t,BR(),bodydiv,BR(),footdiv]);

    }, 
    rerender: function(){
        var nc = this.makeWidgetContent();
        this.replaceChild(this.content, this.widgetContent, nc);
        this.widgetContent = nc;
    },
    processImages: function(html) {
    // ^some html {[Image:/foo.jpg]} some html$
    return html.gsub(/\{\[Image:([^\]}\n]+)\]\}/, function(m) { 
      var path = m[1]
      return "<img class='blogImage' src='" + 
          serviceLink({
            service: "pictures", 
            action: "get_file?path=" + path,
            noCrossSiteLink: true
          }) + 
          "'></img>"
    })
   } , 
   processVideos: function(html) {
      return html.gsub(/\{\[Video:([^\]}\n]+)\]\}/, function(m) { 
           var path = m[1]
           var videowidget = new videoPlayerWidget({flv_url:path});
           return videowidget.content.innerHTML;
      })
   } 
}


Object.extend(UserBlogWidget.prototype, WidgetCommon);

videoPlayerWidget = Class.create();
videoPlayerWidget.prototype = {
    defaultOptions: function() {
        return Object.extend({
            flv_url:"",
            width:320,
            height:240
         },arguments[0] || {});
    },
    makeWidgetContent: function() {
        var swfdiv = Builder.node("div");
        this.getSwfObject().write(swfdiv);     
        return Builder.node('div',{id:"videoPlayerWidget"},[swfdiv]);
    },
    getSwfObject:function(){  
        var so = new SWFObject('/core-services/myplayer.swf?'+Math.random(), "mymovie", this.options.width, this.options.height, "7", "#FFFFFF");
        so.addParam('allowScriptAccess', 'always'); 
        so.addParam('flashVars', 'v='+this.options.flv_url);  
        so.addParam('allowFullscreen', "true"); 
        return so;   
    }
}

Object.extend(videoPlayerWidget.prototype, WidgetCommon); 




function nothing(){
return true;
}
 

;

