﻿var feedback =
{
	inGWR: false,

	open: function()
	{
		$('#' + resources.get('CID_Feedback_FullName')).val('');
		try { $('#' + resources.get('CID_Feedback_UserMessage')).val(''); }
		catch (e) { $('#' + resources.get('CID_Feedback_UserMessage')).text(''); }

		$('#' + resources.get('CID_Feedback_ButtonClose') + ', #feedbackNotif, #feedbackError, #feedbackInvalidEmail, #feedbackSiteSubType, #feedbackGameSubType, #feedbackGame').hide();
		$('#' + resources.get('CID_Feedback_ButtonConfirm') + ', #' + resources.get('CID_Feedback_ButtonCancel') + ', #feedbackForm').show();
		$('#' + resources.get('CID_Feedback_SiteSubType') + ', #' + resources.get('CID_Feedback_GameSubType') +
			', #' + resources.get('CID_Feedback_FeedbackType') + ', #' + resources.get('CID_Feedback_GameID')).val('0');

		if (getIframe(resources.get('CID_Game_GWR')) != null)
		{
			feedback.inGWR = true;
			getIframe(resources.get('CID_Game_GWR')).gwr.gameToBackground();
			$('#' + resources.get('CID_Feedback_FeedbackType')).val('1');
			$('#' + resources.get('CID_Feedback_GameID')).val(getIframe(resources.get('CID_Game_GWR')).gwr.gameId);
			$('#feedbackGame, #feedbackGameSubType').show();
		}

		modal.open(resources.get('CID_Feedback_FormPopupID'), 500, function()
		{
			if (getIframe(resources.get('CID_Game_GWR')) != null)
				getIframe(resources.get('CID_Game_GWR')).gwr.gameOnTop();
		});

		return false;
	},
	collectForBenchmark: function(callback)
	{
		feedback.collect('', '', '', '', '', '', '', 6, -1, 6, callback);
	},
	collectForCrash: function(crashRequest, crashResponse, crashLog, gid, callback)
	{
		feedback.collect(crashRequest, crashResponse, crashLog, '', '', '', '', 1, gid, 1, callback);
	},
	collect: function(crashRequest, crashResponse, crashLog, userMessage, userEmail, userName, nickname, feedbackType, gid, subType, callback)
	{
		var data = '';
		try
		{
			data = 'appCodeName=' + encodeURIComponent(navigator.appCodeName);
			data += '&appName=' + encodeURIComponent(navigator.appName);
			data += '&appVersion=' + encodeURIComponent(navigator.appVersion);
			data += '&cookieEnabled=' + encodeURIComponent(navigator.cookieEnabled);
			data += '&cpuClass=' + encodeURIComponent(navigator.cpuClass);
			data += '&flashVersion=' + encodeURIComponent(flash.getInstalledVersion());
			data += '&crashRequest=' + encodeURIComponent(crashRequest);
			data += '&crashResponse=' + encodeURIComponent(crashResponse);
			data += '&hasRequiredFlashVersion=' + encodeURIComponent(flash.hasRequiredVersion());
			data += '&language=' + encodeURIComponent(navigator.language);
			data += '&oscpu=' + encodeURIComponent(navigator.oscpu);
			data += '&platform=' + encodeURIComponent(navigator.platform);
			data += '&systemLanguage=' + encodeURIComponent(navigator.systemLanguage);
			data += '&url=' + encodeURIComponent(window.location.href);
			data += '&userAgent=' + encodeURIComponent(navigator.userAgent);
			data += '&userLanguage=' + encodeURIComponent(navigator.userLanguage);
			data += '&userMessage=' + encodeURIComponent(userMessage);
			data += '&userMail=' + encodeURIComponent(userEmail);
			data += '&userName=' + encodeURIComponent(userName);
			data += '&feedbackType=' + encodeURIComponent(feedbackType);
			data += '&crashLog=' + encodeURIComponent(crashLog);
			data += '&nickname=' + encodeURIComponent(nickname);
			data += '&gid=' + encodeURIComponent(gid);
			data += '&subType=' + encodeURIComponent(subType);
			data += '&screenResolution=' + encodeURIComponent(screen.width + 'x' + screen.height);
		}
		catch (e)
		{
			data += 'browserException=' + encodeURIComponent(e.message);
		}

		$.post(resources.get('HDL_Feedback_Url'), data, callback, 'text');
	},
	send: function()
	{
		$('#feedbackInvalidEmail, #feedbackError' + ', #' + resources.get('CID_Feedback_ButtonConfirm')).hide();
		$('#' + resources.get('CID_Feedback_HoldMessage') + ', #' + resources.get('CID_Feedback_Spinner')).show();

		var userName = $('#' + resources.get('CID_Feedback_FullName')).val();
		var userEmail = $('#' + resources.get('CID_Feedback_Email')).val();

		var userMessage;
		try { userMessage = $('#' + resources.get('CID_Feedback_UserMessage')).val(); }
		catch (e) { userMessage = $('#' + resources.get('CID_Feedback_UserMessage')).text(); }

		var feedbackType = $('#' + resources.get('CID_Feedback_FeedbackType')).val();
		var nickname = $('#' + resources.get('CID_Feedback_Nickname')).val();
		var gid = $('#' + resources.get('CID_Feedback_GameID')).val();

		var subType = '0';
		if (feedbackType == '1')
			subType = $('#' + resources.get('CID_Feedback_GameSubType')).val();
		else if (feedbackType == '2')
			subType = $('#' + resources.get('CID_Feedback_SiteSubType')).val();

		var crashLog = '';
		if (feedback.inGWR)
			crashLog = getIframe(resources.get('CID_Game_GWR')).gwr.getCometHistory();

		if (userName != '' && userMessage != '' && feedbackType != '0' &&
			((feedbackType == '1' && gid != '0' && subType != '0') || feedbackType != '1') &&
			((feedbackType == '2' && subType != '0') || feedbackType != '2'))
		{
			var onValidateEmail = function(response)
			{
				if (response == '1')
					feedback.collect('', '', crashLog, userMessage, userEmail, userName, nickname, feedbackType, gid, subType, feedback.onFeedback);
				else
				{
					$('#' + resources.get('CID_Feedback_HoldMessage') + ', #' + resources.get('CID_Feedback_Spinner')).hide();
					$('#' + resources.get('CID_Feedback_ButtonConfirm') + ', #feedbackInvalidEmail').show();
				}
			};

			$.post(resources.get('HDL_Feedback_ValidateEmailUrl'), { e: $('#' + resources.get('CID_Feedback_Email')).val() }, onValidateEmail, 'text');
		}
		else
		{
			$('#' + resources.get('CID_Feedback_HoldMessage') + ', #' + resources.get('CID_Feedback_Spinner')).hide();
			$('#' + resources.get('CID_Feedback_ButtonConfirm') + ', #feedbackError').show();
		}

		return false;
	},
	onFeedback: function()
	{
		$('#' + resources.get('CID_Feedback_HoldMessage') + ', #' + resources.get('CID_Feedback_Spinner') + ', #' +
			resources.get('CID_Feedback_ButtonConfirm') + ', #' + resources.get('CID_Feedback_ButtonCancel') + ', #feedbackForm, #feedbackError').hide();
		$('#' + resources.get('CID_Feedback_ButtonClose') + ', #feedbackNotif').show();
	},
	toggleTypes: function()
	{
		$('#feedbackGame, #feedbackSiteSubType, #feedbackGameSubType').hide();
		$('#' + resources.get('CID_Feedback_GameID') + ', #' + resources.get('CID_Feedback_SiteSubType') +
			', #' + resources.get('CID_Feedback_GameSubType')).val('0');

		if ($('#' + resources.get('CID_Feedback_FeedbackType')).val() == '1')
			$('#feedbackGame, #feedbackGameSubType').show();
		else if ($('#' + resources.get('CID_Feedback_FeedbackType')).val() == '2')
			$('#feedbackSiteSubType').show();
	}
}
