;

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

// /8::/202::/buddies:js -> <820> buddies.js 

ManageItemDialog.prototype.makeItemCreateForm = function() {
  return this.makeItemCreateFormUpload()
}

ManageItemDialog.prototype.localFields = function() {
  return [["relation", "relation", "relation", {generic: true}]]
}


function showItem(m) {
  // itemDialog().withItem(m, itemModel).editItem()
  var fakeProfile = new ProfileDisplayModel({
    data: {username: m.name},
    user: m.name
  })
  var csw = new changeSiteWidget({profile: fakeProfile})
  csw.onclick()
}

ManageItemDialog.prototype.showAddItemForm = function() {
  this.editBuddy({ 
    titlePrefix: "Add",
    action: 'create_item'
  })
}
 
var __w = null
var adduser = "";  
DisplayModel.prototype.specificAddItemData=function() {
  return {
    "name": adduser || "",   
    "thumbnail_image_url": iconPath(128, itemModel.itemName() + "_thumb"),
    "type": itemModel.itemType(),
    "permission":"everyone"
  }
}

ManageItemDialog.prototype.editBuddy = 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(),
    contentWidget: new InlineEditDialog({
      items: [
        makeInlineEditString(translateText({path: "", id: "buddy"}), 'name', ""),
        makeInlineEditSelection(
          translateText({path: "", id: "permission"}),
          'permission', [
            {"everyone": "Public"},
            {"onlyme": "Private"}//,
            //{"allbuddies": "All my Buddies"}
          ]
        )
      ],
      action: options.action,
      model: instance.m,
      afterShowEdit: function() {
        processAfterShow({
          maxHeightWindowAccessor: {
            totalHeightElement: function() {
              return w.frameDiv
            },
            containerHeightElement: function() {
              //return w.frameDiv.childNodes[1]
              return w.frameDiv
            }
          }
        });
      }, 
      hiddenFields: {
        "form_current_path": instance.model.currentPath(),
        "form_id": instance.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
        processBuddy({name: instance.m.name})
        instance.m.increation = false
      }
    }),
    releaseHandler: function() { instance.checkEditCancel() }
  })
  __w = w;
} 
 
function processBuddy(_o){
  var o = Object.extend({
    name: null,
    afterUpdate: function() {},
    action: "add_buddy"
  }, _o || {})
  new AjaxFormBuilder({
    action: o.action,
    onSuccessfulSubmit: function(afb, json_update) {
      eval("var update = " + json_update)
      if (update) {
        o.afterUpdate()
      }else{
        alert("ohoh! buddy not processed!");             
      }
    }
  }).performAjaxRequest({
    name: o.name
  })
}

function initializeService() {
  itemModel.disallowAddingFolders()
  itemModel.addObserver({afterRemoveItem: function(model, m) {
    if (m.type.toLowerCase() == "buddy" && m.id > 0) {
      processBuddy({action:"remove_buddy",name: m.name})
    }
  }})
  var params = parameters();
  var action = params["action"];
  adduser = unescape(params["username"]);
  if(action == "add_buddy" && adduser != "" && logged_in && itemModel.canWrite()){
    window.setTimeout(function(){
      verify(function() {
        processBuddy({name: adduser, afterUpdate: function() {
          var um = itemModel.addItem({name: adduser, permission: "everyone"})
          itemModel.storeItem(um, {afterStore: function(m) {
            new UserMessages({
              user: m.name,
              afterLoad: function(umsg) {
                umsg.sendMessage("User <a href=\"" + serviceLink({
                  service: "updates",
                  user: writeUserModel.data.username
                })+ "\">"+ writeUserModel.data.username.capitalize() + "</a>" +
                " added you as a buddy!", {
                  noCopyForSender: true
                })
              }
            })            
          }})
        }})
      }, translateText({path: "", id: "add-as-buddy", args: [adduser]}))
    },100);
  } 
}

;

