/*******************************************************************************

*

*******************************************************************************/

KindEditor.plugin(‘insertfile’, function(K) {

var self = this, name = 'insertfile',
        allowFileUpload = K.undef(self.allowFileUpload, true),
        allowFileManager = K.undef(self.allowFileManager, false),
        formatUploadUrl = K.undef(self.formatUploadUrl, true),
        uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
        extraParams = K.undef(self.extraFileUploadParams, {}),
        filePostName = K.undef(self.filePostName, 'imgFile'),
        lang = self.lang(name + '.');
self.plugin.fileDialog = function(options) {
        var fileUrl = K.undef(options.fileUrl, 'http://'),
                fileTitle = K.undef(options.fileTitle, ''),
                clickFn = options.clickFn;
        var html = [
                '<div style="padding:20px;">',
                '<div class="ke-dialog-row">',
                '<label for="keUrl" style="width:60px;">' + lang.url + '</label>',
                '<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> &nbsp;',
                '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> &nbsp;',
                '<span class="ke-button-common ke-button-outer">',
                '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
                '</span>',
                '</div>',
                //title
                '<div class="ke-dialog-row">',
                '<label for="keTitle" style="width:60px;">' + lang.title + '</label>',
                '<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>',
                '</div>',
                //form end
                '</form>',
                '</div>'
                ].join('');
        var dialog = self.createDialog({
                name : name,
                width : 450,
                title : self.lang(name),
                body : html,
                yesBtn : {
                        name : self.lang('yes'),
                        click : function(e) {
                                var url = K.trim(urlBox.val()),
                                        title = titleBox.val();
                                if (url == 'http://' || K.invalidUrl(url)) {
                                        alert(self.lang('invalidUrl'));
                                        urlBox[0].focus();
                                        return;
                                }
                                if (K.trim(title) === '') {
                                        title = url;
                                }
                                clickFn.call(self, url, title);
                        }
                }
        }),
        div = dialog.div;
        var urlBox = K('[name="url"]', div),
                viewServerBtn = K('[name="viewServer"]', div),
                titleBox = K('[name="title"]', div);
        if (allowFileUpload) {
                var uploadbutton = K.uploadbutton({
                        button : K('.ke-upload-button', div)[0],
                        fieldName : filePostName,
                        url : K.addParam(uploadJson, 'dir=file'),
                        extraParams : extraParams,
                        afterUpload : function(data) {
                                dialog.hideLoading();
                                if (data.error === 0) {
                                        var url = data.url;
                                        if (formatUploadUrl) {
                                                url = K.formatUrl(url, 'absolute');
                                        }
                                        urlBox.val(url);
                                        if (self.afterUpload) {
                                                self.afterUpload.call(self, url, data, name);
                                        }
                                        alert(self.lang('uploadSuccess'));
                                } else {
                                        alert(data.message);
                                }
                        },
                        afterError : function(html) {
                                dialog.hideLoading();
                                self.errorDialog(html);
                        }
                });
                uploadbutton.fileBox.change(function(e) {
                        dialog.showLoading(self.lang('uploadLoading'));
                        uploadbutton.submit();
                });
        } else {
                K('.ke-upload-button', div).hide();
        }
        if (allowFileManager) {
                viewServerBtn.click(function(e) {
                        self.loadPlugin('filemanager', function() {
                                self.plugin.filemanagerDialog({
                                        viewType : 'LIST',
                                        dirName : 'file',
                                        clickFn : function(url, title) {
                                                if (self.dialogs.length > 1) {
                                                        K('[name="url"]', div).val(url);
                                                        if (self.afterSelectFile) {
                                                                self.afterSelectFile.call(self, url);
                                                        }
                                                        self.hideDialog();
                                                }
                                        }
                                });
                        });
                });
        } else {
                viewServerBtn.hide();
        }
        urlBox.val(fileUrl);
        titleBox.val(fileTitle);
        urlBox[0].focus();
        urlBox[0].select();
};
self.clickToolbar(name, function() {
        self.plugin.fileDialog({
                clickFn : function(url, title) {
                        var html = '<a class="ke-insertfile" href="' + url + '" data-ke-src="' + url + '" target="_blank">' + title + '</a>';
                        self.insertHtml(html).hideDialog().focus();
                }
        });
});

});