/*
Attachments insert plugin for NicEditor

Example how use with Djanfo forms:

    description = NicEditorField(widget=NicEditorTextarea(options={'buttonList': ['attImages', 'attLink']}))
    
where:
    attImages - turn on insert Image attachments
    attLink - turn on insert Link


On press button plugin send XmlHttpRequest to current url with GET parameters:
'action' = 'attachments_list'
'editor_id' = <current text area id>
              if use field name from example above, it will be 'id_description'

for image request also added:
'conttent-type' = 'image'

Plugin expect for json response form server with list of arrya with fields:
    'tilte' - used for display item in list
    'url' - used as src for image and as href for link. Url set without any 
            other additional processing.


*/

function nicMergeConfig(basic, custom) {
    if (custom.buttonList) {
        basic.buttonList = basic.buttonList.concat(custom.buttonList);
    }
    return basic;
}

var nicAttachmentsOptions = {
    buttons : {
        'attImages' : {name : i18n.image, 
                       type : 'nicImgAttachment', 
//                       tags : ['IMG'], 
                       noClose: true},
        'attLink' : {name : i18n.link, 
                     type : 'nicLinkAttachment', 
                     noClose: true}
    },
    iconFiles : {'attImages' : '/wysiwyg/nic/imgEdit.gif',
                 'attLink' :   '/wysiwyg/nic/link.gif'
                }
};

var nicBaseAttachment = nicEditorAdvancedButton.extend({
    content_type: null,
    element_tag: null,

    addPane : function() {
        if (this.ne.selectedInstance == null) return;

        if (this.element_tag) {
            this.element = this.ne.selectedInstance.selElm().parentTag(this.element_tag)
        }
        this.pane.pane.setContent('Loading....');

        args = {'action': 'attachments_list',
                'editor_id': this.ne.selectedInstance.e.id };

        if (this.content_type) {
            args['content-type'] = this.content_type;
        }

        df = loadJSONDoc('', args);

        df.addCallback(this.onRecieveList.closure(this));
        return ;
    },
    
    onRecieveList: function(doc) {
        this.pane.pane.setContent('');

        var imagesList = new bkElement('DIV').setStyle({width: '400px', 'height': '100px'}).appendTo(this.pane.pane);
        imagesList.style.zIndex=baseZIndex;
        imagesList.style.position='relative';


        if (doc.length) { 
            var imageTable = new bkElement('TABLE').setStyle({'width' : '100%'}).appendTo(imagesList);
            var imageTbody = new bkElement('TBODY').appendTo(imageTable);
            imageTable.style.zIndex=baseZIndex;
            imageTable.style.zIndex=baseZIndex;
            for(i=0; i<doc.length; i++) {
                var item = doc[i];
                var tr = new bkElement('TR').appendTo(imageTbody);
                var td = new bkElement('TD').setStyle({'background-color': '#e0e0e0'}).appendTo(tr);
                var a = new bkElement('A').setContent(item.title)
                                            .addEvent('click', this.selectElement.closure(this, item.url))
                                            .appendTo(td);
            }
        } else {
            imagesList.setContent('Attachments not found');            
        }
    }
    
    
});



var nicImgAttachment = nicBaseAttachment.extend({
    content_type: "image",    
    element_tag: "IMG",

    selectElement: function(image_url) {
        this.ne.selectedInstance.restoreRng();
        var tmp = 'javascript:nicImTemp();';
        this.ne.nicCommand("insertImage",tmp);
        var im = this.findElm('IMG','src',tmp);
        
        if (im) {
            im.setAttributes({ src : image_url });
        }
        this.removePane();
    }

    
});


var nicLinkAttachment = nicBaseAttachment.extend({
    element_tag: "A",

    selectElement: function(link_url) {
        this.ne.selectedInstance.restoreRng();
        this.removePane();
        
        if(!this.element) {
            var tmp = 'javascript:nicTemp();';
            this.ne.nicCommand("createlink",tmp);
            this.element = this.findElm('A','href',tmp);
        }
        if(this.element) {
            this.element.setAttributes({
                href: link_url
            });
        }
    }

    
});



nicEditors.registerPlugin(nicPlugin, nicAttachmentsOptions);
//nicEditorConfig.prototype.buttonList.push('attImages');

