/*eslint-env amd */
define([
	'i18n!javascript/nls/problems',
	'module'
], function(ProblemMessages, module) {
	/**
	 * @fileoverview Rule to flag use of an object property of the global object (Math and JSON) as a function
	 * @author James Allardice
	 */

	"use strict";

	//------------------------------------------------------------------------------
	// Rule Definition
	//------------------------------------------------------------------------------

	module.exports = function(context) {

		return {
			"CallExpression": function(node) {

				if (node.callee.type === "Identifier") {
					var name = node.callee.name;
					if (name === "Math" || name === "JSON") {
						context.report(node, ProblemMessages.noObjCalls, {
							name: name
						});
					}
				}
			}
		};

	};

	module.exports.schema = [];

	return module.exports;
});