/**
 * 编辑页 js
 */
;(function(window) {
    var Edit = {};

    /**
     * 后台根地址
     * @type {string}
     */
    Edit.site = location.href.split('_cms/')[0] + '_cms/';


    /**
     * 表单保存
     * @param url
     * @param data
     * @param goback  true or false，保存成功后是否返回上一页
     */
    Edit.save = function (url, data, goback) {
        // 提交按钮
        var submit = $(this);
        submit.attr({disabled: true});

        $.ajax({
            url: this.site + url,
            type: 'post',
            data: data,
            dataType: 'json',
            cache: false,
            contentType: false,
            processData: false,
            success: function(data) {
                if (data.code == 0) {
                    toastr.success(data.message);

                    if (goback == undefined) {
                        history.back();
                    } else {
                        location.reload();
                    }
                } else {
                    toastr.error(data.message);
                    console.log(data);
                }
            },
            complete: function() {
                submit.attr({disabled: false});
            },
            error: function(err) {
                toastr.error('保存出错');
                console.log(err);
            }
        })
    }


    /**
     * 图片预览
     * @param file
     * @param preview_id
     * @param height
     * @param width
     */
    Edit.preview = function (file, preview_id, height, width) {
        if (height == undefined || height == '') {
            height = '90px';
        }
        if (width == undefined && width == '') {
            width = '90px';
        }

        var preview = document.getElementById(preview_id);

        if(file.files && file.files[0]){
            var reader = new FileReader();
            reader.onload = function(evt){
                preview.innerHTML = "<img style='height:"+ height+ "; width:"+ width+ "' src = '"+ evt.target.result+ "' />";
            }
            reader.readAsDataURL(file.files[0]);
        }else{
            preview.innerHTML = '<div class="img" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\'' + file.value + '\'"></div>';
        }
    }


    /**
     * 根据 name 值获取表单文件
     * @param name              表单文件 name 值
     * @param form_data         FormData 实例
     * @returns {FormData}      FormData 实例
     */
    Edit.get_files = function (name, form_data) {
        if (typeof name == 'string' && form_data instanceof FormData) {
            var files = document.forms[0].elements[name].files;
            var len = files.length;

            for (var i = 0; i < len; i ++) {
                form_data.append(name, files[i]);
            }

            return form_data;
        } else {
            throw 'get_files(): 非法参数';
        }
    }


    /**
     * 参数检测，params 格式：{"name": "正则表达式||错误提示信息", "password": "正则表达式||错误提示信息", ...}，正则表达式
     * name 只能为 input 标签的 name 值，正则表达式与错误提示信息的分隔符——||。
     *
     * @param params        Object
     * @param form_data     FormData 实例
     * @returns {*}         FormData 实例
     */
    Edit.check_params = function (params, form_data) {
        if (Object.prototype.toString.call(params) == '[object Object]' && form_data instanceof FormData) {
            var val;
            var arr;
            var regex;

            for (var key in params) {
                if (params.hasOwnProperty(key)) {
                    val = $('input[name="' + key + '"]').val();

                    arr = params[key].split('||');
                    regex = eval(arr[0]);
                    // console.log(regex, val);

                    if (! regex.test(val)) {
                        throw arr[1];
                    }

                    form_data.append(key, val);
                } else {
                    continue;
                }
            }

            return form_data;
        } else {
            throw 'check_params(): 非法参数';
        }
    }


    window.Edit = Edit;
})(window);


// 取消
$('.edit-cancel').click(function() {
    history.back();
})


// 图片上传遮盖层
$('.upload-btn').click(function() {
    var upload_btn = $(this).siblings('input[type="file"]');
    upload_btn.click();
})
