﻿function Confirmation() {
	var answer = confirm("Вы уверены?");
	if (answer) {
		return true
	} else {
		return false;
	}
}

function PostResultDialogWithConfirmation(action, controller, objectValue) {
	var answer = confirm("Вы уверены?");
	if (answer) {
		return PostResultDialog(action, controller, objectValue);
	} else {
		return false;
	}
}

function CourseConfirmation(courseGuid, productGuid) {
	var answer = confirm("Вы уверены в том, что хотите начать курс?");
	var addrsuccess = GetSiteRootUrl() + "/Learn/Index?courseGuid=" + courseGuid + "&productGuid=" + productGuid;
	var addrfailed = GetSiteRootUrl() + "/Learn/CoursePreview?courseGuid=" + courseGuid + "&productGuid=" + productGuid + "&stepGuid=00000000-0000-0000-0000-000000000000";
	if (answer) {
		location.replace(addrsuccess);
	} else {
		location.replace(addrfailed);
	}
}
function SaveOrder(urlPost) {

	var list = $("#sortable  tbody").sortable("toArray");
	var parms = {
		postData: list

	};
	result = $.ajax({
		type: "POST",
		traditional: true,
		url: urlPost,
		async: false,
		data: parms,
		dataType: "json",
		success: function (data) {
			alert(data);
			// success
		},
		error: function (data) {
			alert(data);
			// success
		}

	});


	return false;
}
function GetQuery(action, controller, objectValue) {
	var postUrl = "/" + controller + "/" + action + "?guid=" + objectValue;
	var parm = {
		guid: objectValue
	};
	var $result = $.ajax({
		type: "GET",
		traditional: true,
		url: postUrl,
		async: false,
		data: parm,
		dataType: "json"
	});

	var $resultJson = $.parseJSON($result.responseText);
	return $resultJson;
}
function PostResultDialog(action, controller, objectValue) {
	if ($("#postResultDialog") != null) {
		$("#postResultDialog").remove();
	}
	var text = GetQuery(action, controller, objectValue);
	var $dialog = $("<div id='postResultDialog'></div>").html(text.Value).dialog({
		autoOpen: false,
		resizable: false,
		height: 600,
		title: text.Title,
		modal: true,
		width: 500
	});
	if (!text.Success) {
		$dialog.dialog("option", "buttons", { "OK": function () { $(this).dialog('destroy'); } });
	}
	$dialog.dialog("open");
	if (text == null || text.Success == null)
		return false;
	return text.Success;
}

///// Для работы с диалоговым окном "Вопрос мастеру" на странице "Learn/Index"
function GetQuestionToAuthor(pGuid, sGuid, cGuid, $dialog, $html) {
	var $resultJson;
	var postUrl = "/Learn/QuestionToAthour";
	var parm = {
		productGuid: pGuid,
		stepGuid: sGuid,
		courseGuid: cGuid
	};
	var $result = $.ajax({
		type: "Get",
		traditional: false,
		url: postUrl,
		async: true,
		data: parm,
		dataType: "json",
		success: function ($data) {
			$resultJson = $data;
			$dialog.dialog("option", "title", $data.Title);
			$html.html($data.Value);
		}
	});
}

function DialogQuestionToAuthor(productGuid, stepGuid, courseGuid, spinner) {
	ajaxLoader(null, spinner);
	if ($("#DialogQuestionToAuthor") != null) {
		$("#DialogQuestionToAuthor").remove();
	}
	var $html = $("<div id='DialogQuestionToAuthor'></div>").html("Пожалуйста, подождите...");
	var $dialog = $html.dialog({
		autoOpen: false,
		title: "...",
		modal: true,
		resizable: false,
		height: 500,
		width: 700
	});
	$dialog.dialog("open");
	GetQuestionToAuthor(productGuid, stepGuid, courseGuid, $dialog, $html);
	ajaxLoaderClear(null, spinner);
	return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////

///// Для работы с диалоговым окном "Редактировать" на странице "WorkBook/Index" вкладка Mark(заметки)
function GetMark(mGuid, $dialog, $html) {
	var $resultJson;
	var postUrl = "/WorkBook/GetMark";
	var parm = {
		markGuid: mGuid
	};
	var $result = $.ajax({
		type: "Get",
		traditional: false,
		url: postUrl,
		async: true,
		data: parm,
		dataType: "json",
		success: function ($data) {
			$resultJson = $data;
			$dialog.dialog("option", "title", $data.Title);
			$html.html($data.Value);
		}
	});
	return $resultJson;
}

function DialogMark(markGuid, spinner) {
	ajaxLoader(null, spinner);
	if ($("#DialogMark") != null) {
		$("#DialogMark").remove();
	}
	var $html = $("<div id='DialogMark'></div>").html("Пожалуйста, подождите...");
	var $dialog = $html.dialog({
		autoOpen: false,
		title: "...",
		modal: true,
		resizable: false,
		height: 500,
		width: 700,
		buttons: {
			"Сохранить": function () {
				$(this).dialog("close");
				var parm = $("form").serializeArray();
				$.ajax({
					type: "Post",
					traditional: true,
					url: "WorkBook/EditMark",
					async: false,
					data: parm,
					dataType: "json",
					success: function ($data) {
						updateElementsContent($data);
					}
				});
			}
		}
	});
	$dialog.dialog("open");
	GetMark(markGuid, $dialog, $html);
	ajaxLoaderClear(null, spinner);
	return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////

///// Для работы с диалоговым окном "Создать заметку" на странице "Learn/Index"
function GetLearnMark(pGuid, sGuid, cGuid, $dialog, $html) {
	var $resultJson;
	var postUrl = "/Learn/Mark";
	var parm = {
		productGuid: pGuid,
		stepGuid: sGuid,
		courseGuid: cGuid
	};
	var $result = $.ajax({
		type: "Get",
		traditional: false,
		url: postUrl,
		async: true,
		data: parm,
		dataType: "json",
		success: function ($data) {
			$resultJson = $data;
			$dialog.dialog("option", "title", $data.Title);
			$html.html($data.Value);
		}
	});
}

function DialogLearnMark(productGuid, stepGuid, courseGuid, spinner) {
	ajaxLoader(null, spinner);
	if ($("#DialogMark") != null) {
		$("#DialogMark").remove();
	}
	var $html = $("<div id='DialogMark'></div>").html("Пожалуйста, подождите...");
	var $dialog = $html.dialog({
		autoOpen: false,
		title: "...",
		modal: true,
		resizable: false,
		height: 500,
		width: 700
	});
	$dialog.dialog("open");
	GetLearnMark(productGuid, stepGuid, courseGuid, $dialog, $html);
	ajaxLoaderClear(null, spinner);
	return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////

///// Для работы с диалоговым окном "Сообщение куратору" на странице "Learn/Index"
function GetLearnUserMessage(pGuid, cGuid, $dialog, $html) {
	var $resultJson;
	var postUrl = "/Learn/UserMessage";
	var parm = {
		productGuid: pGuid,
		courseGuid: cGuid
	};
	var $result = $.ajax({
		type: "Get",
		traditional: false,
		url: postUrl,
		async: true,
		data: parm,
		dataType: "json",
		success: function ($data) {
			$resultJson = $data;
			$dialog.dialog("option", "title", $data.Title);
			$html.html($data.Value);
		}
	});
}

function DialogLearnUserMessage(productGuid, courseGuid, spinner) {
	ajaxLoader(null, spinner);
	if ($("#DialogUserMessage") != null) {
		$("#DialogUserMessage").remove();
	}
	var $html = $("<div id='DialogUserMessage'></div>").html("Пожалуйста, подождите...");
	var $dialog = $html.dialog({
		autoOpen: false,
		title: "...",
		modal: true,
		resizable: false,
		height: 500,
		width: 700
	});
	$dialog.dialog("open");
	GetLearnUserMessage(productGuid, courseGuid, $dialog, $html);
	ajaxLoaderClear(null, spinner);
	return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////

///// Для работы с диалоговым окном "Ответить" на странице "WorkBook/Index" вкладка Курсы
function GetMessageResponse(mGuid, sUserName, $dialog, $html) {
	var $resultJson;
	var postUrl = "/WorkBook/GetMessageResponse";
	var parm = {
		mGuid: mGuid,
		sUserName: sUserName
	};
	var $result = $.ajax({
		type: "Get",
		traditional: false,
		url: postUrl,
		async: true,
		data: parm,
		dataType: "json",
		success: function ($data) {
			$resultJson = $data;
			$dialog.dialog("option", "title", $data.Title);
			$html.html($data.Value);
		}
	});
	return $resultJson;
}

function DialogUserMessage(mGuid, sUserName, spinner) {
	ajaxLoader(null, spinner);
	if ($("#DialogUserMessage") != null) {
		$("#DialogUserMessage").remove();
	}
	var $html = $("<div id='DialogUserMessage'></div>").html("Пожалуйста, подождите...");
	var $dialog = $html.dialog({
		autoOpen: false,
		title: "...",
		modal: true,
		resizable: false,
		height: 500,
		width: 700,
		buttons: {
			"Ответить": function () {
				$(this).dialog("close");
				var parm = $("form").serializeArray();
				$.ajax({
					type: "Post",
					traditional: true,
					url: "WorkBook/UserMessage",
					async: false,
					data: parm,
					dataType: "json",
					success: function ($data) {
						updateElementsContent($data);
					}
				});
			}
		}
	});
	$dialog.dialog("open");
	GetMessageResponse(mGuid, sUserName, $dialog, $html);
	ajaxLoaderClear(null, spinner);
	return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////

//// Для работы с диалоговым окном "Ответить" на странице "WorkBook/Index" вкладка UserMessage(сообщение куратору)
function GetDisplayMessage(mGuid, $dialog, $html) {
	var $resultJson;
	var postUrl = "/WorkBook/DisplayMessage";
	var parm = {
		mGuid: mGuid
	};
	var $result = $.ajax({
		type: "Get",
		traditional: false,
		url: postUrl,
		async: true,
		data: parm,
		dataType: "json",
		success: function ($data) {
			$resultJson = $data;
			$dialog.dialog("option", "title", $data.Title);
			$html.html($data.Value);
		}
	});
	return $resultJson;
}

function DialogDisplayMessage(mGuid,spinner) {
	ajaxLoader(null, spinner);
	if ($("#DialogDisplayMessage") != null) {
		$("#DialogDisplayMessage").remove();
	}
	var $html = $("<div id='DialogDisplayMessage'></div>").html("Пожалуйста, подождите...");
	var $dialog = $html.dialog({
		autoOpen: false,
		title: "...",
		modal: true,
		resizable: false,
		height: 300,
		width: 500
	});
	$dialog.dialog("open");
	GetDisplayMessage(mGuid, $dialog, $html);
	ajaxLoaderClear(null, spinner);
	return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////

function GetChangeProduct() {
	var postUrl = "/Learn/GetChangeProduct";
	var parm = {

	};
	var $result = $.ajax({
		type: "Post",
		traditional: true,
		url: postUrl,
		async: false,
		data: parm,
		dataType: "json"
	});

	var $resultJson = $.parseJSON($result.responseText);
	return $resultJson;

}

function DialogChangeProduct() {

	if ($("#DialogChangeProduct") != null) {
		$("#DialogChangeProduct").remove();
	}

	var $html = $("<div id='DialogChangeProduct'></div>").html("Пожалуйста, подождите...");

	var $dialog = $html.dialog({
		autoOpen: false,
		title: "...",
		modal: true,
		width: 500
	});

	$dialog.dialog("open");

	var text = GetChangeProduct();

	$dialog.dialog("option", "title", text.Title);

	$html.html(text.Value);

	if (!text.Success) {
		$dialog.dialog("option", "buttons", { "Отмена": function () { $(this).dialog('destroy'); } });
	}
	if (text == null || text.Success == null)
		return false;
	return text.Success;
}

function ajaxLoader(sender, guid) {
	$("#ajax-result-" + guid).html("<img src='" + GetSiteRootUrl() + "/content/img/ajax-loader_16.gif' />");
	return sender;
}
function dialogClose() {
	$("#dialogMark").dialog("close");
}

function ajaxLoaderClear(sender, guid) {
	$("#ajax-result-" + guid).html("");
	return sender;
}
function GetSiteRootUrl() {
	if (rootUrl == undefined) {
		var rootUrl = $(location).attr('protocol') + "//" + $(location).attr('host');
	}
	//alert(rootUrl);
	return rootUrl;
}


/// <reference path="jquery-1.4.2-vsdoc.js"/>
/// <reference path="tiny_mce/tinymce.vsdoc.js" />
function InitTinyMce(element, cssFileWithoutExtension, guid, source) {
	$(element).tinymce({
		// General options
		theme: "advanced",
		plugins: "-customtags,safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
		// Theme options
		theme_advanced_buttons1: "mediaService,preview,fullscreen,code,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,fontselect,fontsizeselect",
		theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,cleanup,|,forecolor,backcolor",
		theme_advanced_buttons3: "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,|,print,|,ltr,rtl",
		theme_advanced_toolbar_location: "top",
		theme_advanced_toolbar_align: "left",
		theme_advanced_statusbar_location: "bottom",
		theme_advanced_resizing: true,
		add_form_submit_trigger: true,
		submit_patch: false,
		language: "ru",
		verify_css_classes: false,
		style_formats: [
		{ title: 'Обучение' },
		{ title: 'Заголовок 1', block: 'h1', classes: 'learn' },
		{ title: 'Заголовок 2', block: 'h2', classes: 'learn' },
		{ title: 'Заголовок 3', block: 'h3', classes: 'learn' },
		{ title: 'Список', selector: 'ul', classes: 'learn' },
		{ title: 'Цитата', block: 'blockquote', classes: 'learn' },
		{ title: 'Абзац', block: 'p', classes: 'learn' },
		{ title: 'Сайт' },
		{ title: 'Заголовок 1', block: 'h1', classes: 'presentation' },
		{ title: 'Заголовок 2', block: 'h2', classes: 'presentation' },
		{ title: 'Заголовок 3', block: 'h3', classes: 'presentation' },
		{ title: 'Список', selector: 'ul', classes: 'presentation' },
		{ title: 'Цитата', block: 'blockquote', classes: 'presentation' },
		{ title: 'Абзац', block: 'p', classes: 'presentation' }
	],
		// Example content CSS (should be your site CSS)
		skin: "o2k7",
		forced_root_block: false,
		force_br_newlines: false,
		force_p_newlines: false,
		skin_variant: "silver",
		content_css: GetSiteRootUrl() + "/views/multiuniver/content/css/" + cssFileWithoutExtension + ".css",
		// Drop lists for link/image/media/template dialogs
		template_external_list_url: "lists/template_list.js",
		external_link_list_url: "lists/link_list.js",
		external_image_list_url: "lists/image_list.js",
		media_external_list_url: "lists/media_list.js",
		// Replace values for the template plugin
		template_replace_values: {
			username: "Some User",
			staffid: "991234"
		},
		auto_focus: null,
		extended_valid_elements: "video[guid|width|height]",
		setup: function (ed) {
			ed.addButton('mediaService', {
				title: 'Медиа сервис',
				image: GetSiteRootUrl() + "/content/img/mediaservice.png",
				onclick: function () {
					DialogModal(ed, GetSiteRootUrl() + "/MediaService/GetDialog", {}, element, guid, source);
					ed.focus();
				}
			});
		}
	});
}

//Фиксирует изменения во всех редакторах tinyMCE
function saveGenericHtmlContents(obj) {
	tinyMCE.triggerSave();
	return true;
}

function Confirmation() {
	var answer = confirm("Вы уверены?")
	if (answer) {
		return true
	} else {
		return false;
	}
}

function PostResultDialogWithConfirmation(action, controller, objectValue) {
	var answer = confirm("Вы уверены?")
	if (answer) {
		return PostResultDialog(action, controller, objectValue);
	} else {
		return false;
	}
}


function SaveOrder(urlPost) {

	var list = $("#sortable  tbody").sortable("toArray");
	var parms = {
		postData: list

	};
	result = $.ajax({
		type: "POST",
		traditional: true,
		url: urlPost,
		async: false,
		data: parms,
		dataType: "json",
		success: function (data) {
			alert(data);
			// success
		},
		error: function (data) {
			alert(data);
			// success
		}
	});

	return false;
}
function GetQuery(action, controller, objectValue) {
	var postUrl = GetSiteRootUrl() + "/" + controller + "/" + action + "?guid=" + objectValue;
	var parm = {
		guid: objectValue
	};
	var $result = $.ajax({
		type: "GET",
		traditional: true,
		url: postUrl,
		async: false,
		data: parm,
		dataType: "json"
	});

	var $resultJson = $.parseJSON($result.responseText);
	return $resultJson;
}
function PostResultDialog(action, controller, objectValue) {
	if ($("#postResultDialog") != null) {
		$("#postResultDialog").remove();
	}
	var text = GetQuery(action, controller, objectValue);
	var $dialog = $("<div id='postResultDialog'></div>").html(text.Value).dialog({
		autoOpen: false,
		title: text.Title,
		modal: true,
		width: 500
	});
	if (!text.Success) {
		$dialog.dialog("option", "buttons", { "OK": function () { $(this).dialog('destroy'); } });
	}
	$dialog.dialog("open");
	if (text == null || text.Success == null)
		return false;
	return text.Success;
}

var SPINNER_PREFIX = "ajax-result-";
function ajaxLoader(sender, guid) {
	if (guid == null) return sender;
	$("#" + SPINNER_PREFIX + guid).html("<img src=" + GetSiteRootUrl() + "/content/img/ajax-loader_16.gif />");
	return sender;
}
function ajaxUnLoader(sender, guid) {
	if (guid == null) return sender;
	$("#" + SPINNER_PREFIX + guid).html("");
	return sender;
}
function GetAjaxRequest(postUrl, postParam, $dialog, $html, spinner) {
	var $resultJson;
	var postUrl = postUrl;
	var $result = $.ajax({
		type: "Post",
		traditional: true,
		url: postUrl,
		async: true,
		data: postParam,
		dataType: "json",
		success: function ($data) {
			$resultJson = $data
			$dialog.dialog("option", "title", $data.Title);
			$html.html($data.Value);
			ajaxUnLoader(null, spinner);
		}
	});
	return $resultJson;
}

function GetAjaxRequestGrowl(postUrl, postParam) {
	var $resultJson;
	var postUrl = postUrl;
	var $result = $.ajax({
		type: "Post",
		traditional: true,
		url: postUrl,
		async: true,
		data: postParam,
		dataType: "json",
		success: function ($data) {
			$resultJson = $data
			var count = 0;
			setTimeout(function () {
				$(".jGrowl-header").html($data.Title);
				$(".jGrowl-message").html($data.Value);
			}, 1000);
		},
		error: function ($data) {
			var count = 0;
			setTimeout(function () {
				$(".jGrowl-header").html("Ошибка!");
				$(".jGrowl-message").html("Произошла ошибка в получении данных.");
			}, 1000);
		}
	});
	return $resultJson;
}


function DialogModal(context, posturl, params, spinner, guid) {
	ajaxLoader(null, spinner);
	if ($("#DialogModal-") != null) {
		$("#DialogModal-").remove();
	}
	var $html = $("<div id='DialogModal-'></div>").html("Пожалуйста, подождите...");
	var $dialog = $html.dialog({
		autoOpen: false,
		title: "...",
		modal: true,
		resizable: false,
		height: (viewportheight != undefined ? viewportheight - 200 : 600),
		width: (viewportwidth != undefined ? viewportwidth - 200 : 950),
		position: ['center', 'center']
	});
	$dialog.dialog("open");
	$.scrollTo($dialog, 500, { offset: -100 });
	GetAjaxRequest(posturl, params, $dialog, $html, spinner);
	return context;
}

function SetContentToMCE(content) {
	tinyMCE.activeEditor.focus();
	tinyMCE.activeEditor.selection.setContent(content);
}

function GetActionLink(action, guid, spinner) {
	ajaxLoader(null, spinner);
	$.ajax({
		type: "Get",
		traditional: true,
		/* TODO: aripenko относительный адрес */
		url: GetSiteRootUrl() + "/MediaService/" + action,
		async: true,
		data: { Guid: guid },
		dataType: "json",
		success: function ($data) {
			$("#" + SPINNER_PREFIX + spinner).html($data);
		}
	});
	return false;
}

function SmartTreeBrowser_UpdateNode(node) {
	if (node != 'root') {
		$("#" + node).parents("div").first().jstree("refresh", $("#" + node).parent());
	}
	else {
		$(".jstree").jstree("refresh", -1);
	}
}

function updateElementsContent(elements) {
	///<summary>
	///Обновляет содеражимое переданного массива элементов
	///<para>Элементы</para>
	///</summary>
	$.each(elements, function (elememt) {
		$("#" + elements[elememt].HtmlElementId).html(elements[elememt].NewHtmlContent);
	});
}

function UpdateTargetElements(obj) {
	var $data = $.parseJSON(obj.get_data());
	updateElementsContent($data);
	return true;
}

// на входе объект MicrosoftAjaxContext, который возвращают все события Ajax формы, созданной хелпером через Ajax.BeginForm()
function refreshSmartTreeBrowser(obj) {
	//obj.get_data() => server response data 
	//obj.get_request() => ajax object
	//obj.get_loadingElement()=> loading elementId 
	//obj.get_updateTarget()=>updateTarget
	//obj.get_response() => Sys.Mvc.AjaxContext

	var $data = $.parseJSON(obj.get_data());

	//	var parentNodeText = $($data.NodeId).innerText.trim();

	if ($data.NodeId != null)
		SmartTreeBrowser_UpdateNode($data.NodeId);
	updateElementsContent($data.Elements);

	if ($data.InvokeActionAfterRefresh) {
		smartTreeNodeAction($data.ActionAfterRefreshParams.NodeInfo, $data.ActionAfterRefreshParams.ActionUrl);
	}

	ajaxUnLoader(obj, $data.NodeId);
	return true;
}

function InsertCustomTag(obj) {
	//obj.get_data() => server response data 
	//obj.get_request() => ajax object
	//obj.get_loadingElement()=> loading elementId 
	//obj.get_updateTarget()=>updateTarget
	//obj.get_response() => Sys.Mvc.AjaxContext
	var $data = eval(obj.get_data());
	SetContentToMCE($data);
}

//Фиксирует изменения во всех редакторах tinyMCE
function saveGenericHtmlContents(obj) {
	tinyMCE.triggerSave();
	return true;
}

//Заменяет содержимое this на ромашку
//Разработана для того, чтобы заменять содержимое ajax формы перед ее отправкой
//Решает проблему двойной отпраавки одной и той же формы
function replaceThisWithCamomile() {
	//	var parent = $(this).children().each(function (index) {
	//		$(this).attr("disabled", "disabled");
	//		$(this).children().each(function (index) {
	//			$(this).attr("disabled", "disabled");
	//		});
	//	});
	var parent = $(this).parent().first()
	parent.html("<img src=" + GetSiteRootUrl() + "/content/img/ajax-loader_16.gif />");
	return true;
}
//Заменяет содержимое this на ромашку
//Разработана для того, чтобы заменять содержимое ajax формы перед ее отправкой
//Решает проблему двойной отпраавки одной и той же формы
function replaceThisWithCamomileUpdateTargetId(obj) {
	//	var parent = $(this).children().each(function (index) {
	//		$(this).attr("disabled", "disabled");
	//		$(this).children().each(function (index) {
	//			$(this).attr("disabled", "disabled");
	//		});
	//	});
	$('#' + obj.get_updateTarget().id).html("<img src=" + GetSiteRootUrl() + "/content/img/ajax-loader_16.gif />");
	return obj;
}

//Открывает редактор узла
function smartTreeCitationAction(nodeInfo, actionUrl, citationQuestion, question) {
	$("#" + question + "-citation").html("<img src=../content/img/ajax-loader_16.gif />");
	var params = {
		postData: { citationQuestionGuid: citationQuestion, questionGuid: question }
	}

	result = $.ajax({
		type: "GET",
		traditional: true,
		url: actionUrl,
		async: true,
		data: params, //Может быть коллекцией пар
		dataType: "json",
		error: reportError,
		success: updateElementsContent
	});
}

function ajaxGetUrl(url, params, spinnerId) {
	if (params != undefined || params != null) {
		url = url + "?" + jQuery.param(params);
	}
	$.ajax({
		type: "GET",
		traditional: true,
		url: url,
		async: true,
		//data: params, //Может быть коллекцией пар
		dataType: "json",
		error: reportError,
		success: updateElementsContent
	});
	if (spinnerId != undefined) {
		$('#' + spinnerId).html("<img src=" + GetSiteRootUrl() + "/content/img/ajax-loader_16.gif />");
	}
	return false;
}

function sendQuestionValidatationForm(questionGuid, params) {
	var d = $('#StepContent .' + questionGuid).fieldSerialize();
	$.ajax({
		type: "POST",
		url: "/learn/ValidateQuestion?",
		traditional: true,
		async: true,
		data: d + '&' + jQuery.param(params),
		dataType: "json",
		success: updateElementsContent
	});
	return false;
}

function reportError(xhr, status, index, anchor) {
	$(anchor.hash).html(
						"Ошибка в загрузке данных.");
}

function setViewPorts() {
	// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

	if (typeof window.innerWidth != 'undefined') {
		viewportwidth = window.innerWidth;
		viewportheight = window.innerHeight;
	}

	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

	else if (typeof document.documentElement != 'undefined'
	 && typeof document.documentElement.clientWidth !=
	 'undefined' && document.documentElement.clientWidth != 0) {
		viewportwidth = document.documentElement.clientWidth;
		viewportheight = document.documentElement.clientHeight;
	}

	// older versions of IE

	else {
		viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
		viewportheight = document.getElementsByTagName('body')[0].clientHeight;
	}
}

function changeCurator(params) {
	var url = 'Curator/SetCurator';
	if (params != undefined || params != null) {
		url = url + "?" + jQuery.param(params);
	}
	$.ajax({
		type: "GET",
		traditional: true,
		url: url,
		async: true,
		//data: params, //Может быть коллекцией пар
		dataType: "json",
		error: reportError,
		success: function (data) {
			updateElementsContent(data);
			var $tabs = $("#tabs");
			$tabs.tabs('load', $tabs.tabs('option', 'selected'));
		}
	});
	$('#StudentCourseModel').html("<img src=" + GetSiteRootUrl() + "/content/img/ajax-loader_16.gif />");
	return false;
}

function highlightShow(ui) {
	$("#" + ui.id).addClass("ui-state-highlight").css('cursor', 'pointer');
}
function highlightHide(ui) {
	$("#" + ui.id).removeClass("ui-state-highlight").css('cursor', 'default');
}

function makeGrade(questionGuid, stepGuid, productGuid, courseGuid, studentGuid, idValue) {
	var gradeValue = $("#" + idValue + "grade-slider").slider("value");
	var commentValue = $("#" + idValue + "comment").val();
	ajaxGetUrl("/Curator/MakeGrade", { "questionGuid": questionGuid, "stepGuid": stepGuid, "productGuid": productGuid, "courseGuid": courseGuid, "studentGuid": studentGuid, "gradeValue": gradeValue, "commentValue": commentValue }, idValue + "button-result");
}

function GetReIterativeDialog(courseGuid, studentGuid, curatorGuid) {
	return DialogModal(null, GetSiteRootUrl() + "/Curator/ReiterativeLearn", { courseGuid: courseGuid, studentGuid: studentGuid, curatorGuid: curatorGuid }, null, courseGuid, null);
}

function GetCertificateDialog(courseGuid, studentGuid, curatorGuid) {
	return DialogModal(null, GetSiteRootUrl() + "/Curator/GetCertificate", { courseGuid: courseGuid, studentGuid: studentGuid, curatorGuid: curatorGuid }, null, courseGuid, null);
}

function ajaxValidate() {
	return $('form').validate().form();
}

$(document).ready(function () {
	$(".trigger").click(function () {
		$(".support").toggle("fast");
		$(this).toggleClass("active");
		return false;
	});
});

