/**
 初始化vue 对象
 @param vc vue component对象
 @param vmOptions Vue参数
 **/
(function (vc, vmOptions) {
    console.log("vmOptions:", vmOptions);
    vc.component = new Vue(vmOptions);
})(window.vc, window.vc.vmOptions);


/**
 vc监听事件
 **/
(function (vc) {
    /**
     事件监听
     **/
    vc.on = function () {
        var _namespace = "";
        var _componentName = "";
        var _value = "";
        var _callback = undefined;
        if (arguments.length == 4) {
            _namespace = arguments[0];
            _componentName = arguments[1];
            _value = arguments[2];
            _callback = arguments[3];
        } else if (arguments.length == 3) {
            _componentName = arguments[0];
            _value = arguments[1];
            _callback = arguments[2];
        } else {
            console.error("执行on 异常，vc.on 参数只能是3个 或4个");
            return;
        }
        if (vc.notNull(_namespace)) {
            vc.component.$on(_namespace + "_" + _componentName + '_' + _value,
                function (param) {
                    if (vc.debug) {
                        console.log("监听ON事件", _namespace, _componentName, _value, param);
                    }
                    _callback(param);
                }
            );
            return;
        }

        vc.component.$on(_componentName + '_' + _value,
            function (param) {
                if (vc.debug) {
                    console.log("监听ON事件", _componentName, _value, param);
                }
                _callback(param);
            }
        );
    };

    /**
     事件触发
     **/
    vc.emit = function () {
        var _namespace = "";
        var _componentName = "";
        var _value = "";
        var _param = undefined;
        if (arguments.length == 4) {
            _namespace = arguments[0];
            _componentName = arguments[1];
            _value = arguments[2];
            _param = arguments[3];
        } else if (arguments.length == 3) {
            _componentName = arguments[0];
            _value = arguments[1];
            _param = arguments[2];
        } else {
            console.error("执行on 异常，vc.on 参数只能是3个 或4个");
            return;
        }
        if (vc.debug) {
            console.log("监听emit事件", _namespace, _componentName, _value, _param);
        }
        if (vc.notNull(_namespace)) {
            vc.component.$emit(_namespace + "_" + _componentName + '_' + _value, _param);
            return;
        }
        vc.component.$emit(_componentName + '_' + _value, _param);
    };

})(window.vc);

/**
 * vue对象 执行初始化方法
 */
(function (vc) {
    vc.initEvent.forEach(function (eventMethod) {
        eventMethod();
    });
    vc.initMethod.forEach(function (callback) {
        callback();
    });
    vc.namespace.forEach(function (_param) {
        vc[_param.namespace] = vc.component[_param.namespace];
    });
})(window.vc);

