

function test_response(originalRequest) 
{
	alert(originalRequest.responseText);
}


function checkUnifiedURL(urlelem, resultDiv) 
{
	var ajax = new Ajax.Updater({success: resultDiv}, '/action_check_unified_url.php',
								{
									method: 'get', 
									parameters: 'url=' + $F(urlelem), 
									onFailure: test_response
								});
}

function checkURL(urlelem, resultDiv) 
{
	var ajax = new Ajax.Updater({success: resultDiv}, '/action_check_url.php',
								{
									method: 'get', 
									parameters: 'url=' + $F(urlelem), 
									onFailure: test_response
								});
}

function checkWWWURL(urlelem, resultDiv) 
{
	var ajax = new Ajax.Updater({success: resultDiv}, '/action_check_www_url.php',
								{
									method: 'get', 
									parameters: 'url=' + $F(urlelem), 
									onFailure: reportError
								});
}

var mail_is_valid = false;

function check_reg_email_response(originalRequest, resultDiv) 
{
	var response = eval('('+originalRequest.responseText+')');

	if (response.result)
	{
		mail_is_valid = true;
		Element.hide(resultDiv);
	}
	else
	{
		mail_is_valid = false;
		Element.show(resultDiv);
	}
}

function checkEmailRegister(urlelem, resultDiv) 
{
	var ajax = new Ajax.Request('/action_check_email_register.php',
								{
									method: 'get', 
									parameters: 'email=' + $F(urlelem), 
									onFailure: reportError,
									onComplete: function(t){check_reg_email_response(t, resultDiv)}
								});
}

function checkEmail(urlelem, resultDiv) 
{
	var ajax = new Ajax.Updater({success: resultDiv}, '/action_check_email.php',
								{
									method: 'get', 
									parameters: 'email=' + $F(urlelem), 
									onFailure: reportError
								});
}

function checkUser(urlelem, resultDiv) 
{
	var ajax = new Ajax.Updater({success: resultDiv}, '/action_check_user.php',
								{
									method: 'get', 
									parameters: 'login=' + $F(urlelem), 
									onFailure: reportError
								});
}

function checkNewPassword() 
{
	var ajax = new Ajax.Updater({success: 'new_password_result'}, '/action_check_new_password.php',
								{
									method: 'get', 
									parameters: 'new_password=' + $F('new_password') + '&new_password2=' + $F('new_password_2'), 
									onFailure: reportError
								});
}

function checkLogin() 
{
    $('login_radio').checked = true;

	var ajax = new Ajax.Updater({success: 'login_result'}, '/action_check_login.php',
								{
									method: 'post', 
									parameters: 'login=' + $F('custom_login_text'), 
									onFailure: reportError
								});
}

function checkPassword() 
{
	var ajax = new Ajax.Updater( {success: 'old_password_result'}, '/action_check_password.php',
								{
									method: 'post', 
									parameters: 'password=' + $F('old_password'), 
									onFailure: reportError
								});
}

function reportError(request) 
{
	$F('password_result') = "Error";
}
		

///////////////////////////////////////////////////////////////// COMMON Actions

function wgt_show_error (status_div_id, t) 
{
	$(status_div_id).style.display = 'none';
	alert('Error ' + t.status + ' -- ' + t.statusText);
}

function wgt_wait(status_div_id) 
{
	$(status_div_id).style.display = 'inline';
}

function wgt_wait_stop(status_div_id) 
{
	$(status_div_id).style.display = 'none';
}

function wgt_wait_stop_blink(status_div_id) 
{
	$(status_div_id + '_wait').style.display = 'none';
//	Effect.Blink(status_div_id, {duration: 1});
}

function updateWidget(widget_id)
{
	var myAjax = new Ajax.Updater(widget_id, '/'+widget_id+'_update.php?rnd=' + (Math.round((Math.random()*1000000)+1)), 
								{ 
									method: 'get', 
									parameters: '', 
									onLoading: function(t){wgt_wait(widget_id + '_wait')},
									onSuccess: function(t){wgt_wait_stop_blink(widget_id)},
									onFailure: function(t){wgt_wait_show_error(widget_id, t)},
									evalScripts: true
								} );
}

function updateWidgetPars(widget_id, pars)
{
	var myAjax = new Ajax.Updater(widget_id, '/'+widget_id+'_update.php', 
								{ 
									method: 'get', 
									parameters: pars, 
									onLoading: function(t){wgt_wait(widget_id + '_wait')},
									onSuccess: function(t){wgt_wait_stop_blink(widget_id)},
									onFailure: function(t){wgt_wait_show_error(widget_id, t)},
									evalScripts: true
								} );
}


// Usability

function enlargeTextarea(textarea)
{
	var rowLimitMin = 4; // minimal
	var rowLimit = 60; // максимальная
	substrings = textarea.value.split('\n');
	if (substrings.length > rowLimitMin && substrings.length <= rowLimit )
		textarea.rows = substrings.length;
	else if (substrings.length <= rowLimitMin)
		textarea.rows = rowLimitMin;
	else
		textarea.rows = rowLimit;
}



var ResizingTextArea = Class.create();

ResizingTextArea.prototype = {
    defaultRows: 2,
    maxRows: 20,

    initialize: function(field)
    {
        this.defaultRows = Math.max(field.rows, 2);
        this.resizeNeeded = this.resizeNeeded.bindAsEventListener(this);
        Event.observe(field, "click", this.resizeNeeded);
        Event.observe(field, "keyup", this.resizeNeeded);
    },

    resizeNeeded: function(event)
    {
        var t = Event.element(event);
        var lines = t.value.split('\n');
        var newRows = lines.length + 1;
        var oldRows = t.rows;
        for (var i = 0; i < lines.length; i++)
        {
            var line = lines[i];
            if (line.length >= t.cols) newRows += Math.floor(line.length / t.cols);
        }
        if ((newRows > t.rows) && (this.maxRows >= newRows)) {t.rows = newRows; }
        if (newRows < t.rows) {t.rows = Math.max(this.defaultRows, newRows);}
    }
}


function deletePublicationFromLibrary(pub_id) 
{
	var ajax = new Ajax.Request('/action_del_pub_file_library.php',
								{
									method: 'post', 
									parameters: 'pub_id=' + pub_id, 

									onFailure: reportError,
									onComplete: function(t){
										var response = eval('('+t.responseText+')');

										if (!response.result)
										{
											alert(response.message);
										}
										else
										{
											Element.hide('fdel_'+pub_id);
											Element.hide('pdiv_'+pub_id);
										}

									}
								});
}

function deletePublicationFile(pub_id, file_id) 
{
	var ajax = new Ajax.Request('/action_del_pub_file.php',
								{
									method: 'post', 
									parameters: 'file_id=' + file_id + '&pub_id=' + pub_id, 

									onFailure: reportError,
									onComplete: function(t){
										var response = eval('('+t.responseText+')');

										if (!response.result)
										{
											alert(response.message);
										}
										else
										{
											Element.hide('fdiv_'+file_id);
										}

									}
								});
}


function deleteComment(comment_id) 
{
	var ajax = new Ajax.Request('/action_del_comment.php',
								{
									method: 'post', 
									parameters: 'comment_id=' + comment_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			Element.hide('del_dialog_' + comment_id); 
								 			Effect.SwitchOff('comment_' + comment_id, {duration:0.3}); 
								 		}
									}
								});
}


function deletePost(topic_id, url) 
{
	var ajax = new Ajax.Request('/action_del_post.php',
								{
									method: 'post', 
									parameters: 'topic_id=' + topic_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace(url); 
								 		}
									}
								});
}


function deleteGroupNews(news_id, url) 
{
	var ajax = new Ajax.Request('/action_del_group_news.php',
								{
									method: 'post', 
									parameters: 'news_id=' + news_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace(url); 
								 		}
									}
								});
}


function deleteMaterial(course_id, material_id) 
{
	var ajax = new Ajax.Request('/action_del_course_material.php',
								{
									method: 'post', 
									parameters: 'course_id=' + course_id + '&material_id=' + material_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace( '/course/'+ course_id + '/materials/'); 
								 		}
									}
								});
}


function deleteFile(file_id, url) 
{
	var ajax = new Ajax.Request('/action_del_file.php',
								{
									method: 'post', 
									parameters: 'file_id=' + file_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace(url); 
								 		}
									}
								});
}

function deleteJournalDOAJ(doaj_id, url) 
{
	var ajax = new Ajax.Request('/action_del_journal_doaj.php',
								{
									method: 'post', 
									parameters: 'doaj_id='+doaj_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace(url); 
								 		}
									}
								});
}

function deleteGrant(grant_id, url) 
{
	var ajax = new Ajax.Request('/action_del_grant.php',
								{
									method: 'post', 
									parameters: 'grant_id=' + grant_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace(url); 
								 		}
									}
								});
}


function deleteGroupPeople(group_id, people_id, url) 
{
	var ajax = new Ajax.Request('/action_del_group_people.php',
								{
									method: 'post', 
									parameters: 'group_id=' + group_id + '&people_id=' + people_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace(url); 
								 		}
									}
								});
}

function deleteImportedContacts()
{
	var ajax = new Ajax.Request('/action_del_imported_contacts.php',
								{
									method: 'post', 
									parameters: 'action=delete', 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace('/import/'); 
								 		}
									}
								});
}


function deleteIssue(issue_id, url) 
{
	var ajax = new Ajax.Request('/action_del_journal_issue.php',
								{
									method: 'post', 
									parameters: 'issue_id=' + issue_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace(url); 
								 		}
									}
								});
}


function deleteJournalPublication(pub_id, group_id, volume_id, url) 
{
	var ajax = new Ajax.Request('/action_del_pub.php',
								{
									method: 'post', 
									parameters: 'pub_id='+pub_id+'&group_id='+group_id+'&volume_id='+volume_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
										{
								 			window.location.replace(url); 
								 		}
									}
								});
}


function add_blacklist(people_id, url) 
{
	var ajax = new Ajax.Request('/action_blacklist_add.php',
								{
									method: 'post', 
									parameters: 'people_id=' + people_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
								 			window.location.replace(url); 
									}
								});
}


function remove_blacklist(people_id, url) 
{
	var ajax = new Ajax.Request('/action_blacklist_remove.php',
								{
									method: 'post', 
									parameters: 'people_id=' + people_id, 

									onFailure: reportError,
									onComplete: function(t)
									{
										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
								 			window.location.replace(url); 
									}
								});
}

/* notebook */

function notebook_open()
{
	Element.show('notebook_panel');
	Element.hide('openlink');

	// check cookie - first time. set big window if cookie is big == 1px window
	if ($('notebook_text').style.width == '1px')
	{
		var dim = document.viewport.getDimensions();
		$('notebook_text').style.width = dim.width * 0.38 + 'px';
		$('notebook_text').style.height = dim.height * 0.62 + 'px';
	}
}

function notebook_close()
{
	Element.hide('notebook_panel');
	Element.show('openlink');
}

function notebook_toggle()
{
	var dim = document.viewport.getDimensions();

	var d = new Date(); 
	d.setDate(d.getDate()+182);	// half-year for save notepad size

	if ($('notebook_text').style.width == '300px')
	{
		document.cookie="notepad=big; path=/; expires=" + d.toGMTString();
		$('notebook_text').style.width = dim.width * 0.38 + 'px';
		$('notebook_text').style.height = dim.height * 0.62 + 'px';
	}
	else
	{
		document.cookie="notepad=small; path=/; expires=" + d.toGMTString();
		$('notebook_text').style.width = '300px';
		$('notebook_text').style.height = '150px';
	}
}

function notebook_save(e) 
{
	Event.stop(e);

	var ajax = new Ajax.Request('/action_save_notebook.php',
								{
									method: 'post', 
									parameters: Form.serialize('notebook_form'), 
									onLoading: function(t){Element.show('notebook_wait');}, 
									onFailure: function(t){Element.show('notebook_wait');}, 
									onComplete: function(t)
									{
										Element.hide('notebook_wait');

										var response = eval('('+t.responseText+')');

										if (!response.result)
											alert(response.message);
										else
											notebook_close();
									}
								});
}


function unsubscribe_topic(topic_id, url) 
{
	var ajax = new Ajax.Request('/action_unsubscribe_topic.php',
			{
				method: 'post', 
				parameters: 'topic_id=' + topic_id, 

				onFailure: reportError,
				onComplete: function(t)
				{
					var response = eval('('+t.responseText+')');

					if (!response.result)
						alert(response.message);
					else
			 			window.location.replace(url); 
				}
			});
}



