/* npr namespace */
AddNamespace('NPR.messaging');

NPR.messaging.constants = NPR.messaging.constants || {};
NPR.messaging.constants.UNKNOWN_JS_ISSUE = 1002;
NPR.messaging.constants.TEST_ISSUE = 1003;
NPR.messaging.constants.JAVASCRIPT_GENERAL_ISSUE = 1004;
NPR.messaging.constants.PLUCK_STORY_PAGE_COMMENTING_ERROR = 2002;
NPR.messaging.constants.PREVIEW_JS_ISSUE = 1039;
NPR.messaging.constants.SPONSORSHIP_ERROR = 1038;
NPR.messaging.constants.METRICS_ERROR = 1043;
NPR.messaging.constants.COMMUNITY_JS_ERROR = 1044;
NPR.messaging.constants.PLAYER_JS_ERROR = 1045;
NPR.messaging.constants.RSS_PODCAST_JS_ERROR = 1046;

NPR.messaging.constants.REG_JS_ERROR = 5002;

NPR.messaging.warning = function(_debugData, _function, _id) {
	NPR.messaging.logMessage(_debugData, _function, _id, 'unknown');
    return { };
};

NPR.messaging.exception = function(_e, _debugData, _function, _id) {
    if(_e.message.match('RequestBatch is undefined')===null) {
    	
    	_debugData += " {Exception: ";
    	var counter = 0;
    	for (var key in _e) {
			try {
				var value = _e[key];
				if (!$.isFunction(value)) {
					if (counter++ != 0) {
						_debugData += ",";
					}
					
					if (value.length > 255) {
						value = value.substring(0, 255) + "...";
					}
					
					_debugData += "{" + key + ":'" + value + "'}";
				}
			}
			catch (propEx) {
				// ignore
			}
		}
    	_debugData += "}";
    	
    	var lineNumber = 'unknown';
    	if (_e.lineNumber != null) {
    		lineNumber = _e.lineNumber;
    	}
    	
    	NPR.messaging.logMessage(_debugData, _function, _id, lineNumber);
     }
    return { };
};

window.onerror = function(message, url, lineNumber) {
	var fullMsg = "Window.OnError: " + message + " (" + url + ":" + lineNumber + ")";
	NPR.messaging.logMessage(fullMsg, "Window.OnError: " + message, NPR.messaging.constants.JAVASCRIPT_GENERAL_ISSUE, lineNumber);
	window.onerror = function () {
		return true;
	};
	return true; // prevents browser error messages
};

NPR.messaging.logMessage = function (_msg, _function, _id, _line) {
	try {
		var message = {};
		message.msg = _msg;
		message.func = _function;
		message.id = _id;
		message.line = _line;
		message.agent = navigator.userAgent 
		message.url = window.location.href;
		
		var debugData = '';
		debugData = message.msg + ' | f: ' + message.func + ' | ' + message.agent + " | in URL: " + message.url;
		
		if(document.URL.indexOf("_DEBUG=1") > 0){
	    	$("#error").append('<div class="javascript">WWWERR ' + debugData + '</div>' );
	    }
	
		message = JSON.stringify(message);

		$.post("/templates/common/jslog.php", {type: 'Warning', message: message});
	}catch(e){}
};


