function site_good_form_data( the_type, the_data ) {
	if ( the_type == 'login' ) {
		var the_re = /^[a-z0-9\-]{1,30}$/i;
		return the_re.test(the_data);
	}
	else if ( the_type == 'password' ) {
		var the_re = /^[a-z0-9\-]{1,30}$/i;
		return the_re.test(the_data);
	}
	else if ( the_type == 'email' ) {
		var the_re = /^[^\'\"\s@]+@[^\'\"\s@]+$/i;
		if( !the_re.test(the_data) || the_data.length < 5 || the_data.length > 60 )
			return false;
	}
	return true;
}




function site_check_register_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_login_field = the_form.the_login;
	var the_password_field = the_form.the_password;
	var the_password_2_field = the_form.the_password_2;
	var the_email_field = the_form.the_email;
	
	the_login_field.value = trim_string(the_login_field.value);
	the_password_field.value = trim_string(the_password_field.value);
	the_password_2_field.value = trim_string(the_password_2_field.value);
	the_email_field.value = trim_string(the_email_field.value);
	
	if ( the_login_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "логин"!' );
		the_login_field.focus();
		return false;
	}
	if ( the_password_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "пароль"!' );
		the_password_field.focus();
		return false;
	}
	if ( the_password_2_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "повтор пароля"!' );
		the_password_2_field.focus();
		return false;
	}
	if ( the_email_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "email"!' );
		the_email_field.focus();
		return false;
	}
	
	if ( !site_good_form_data( 'login', the_login_field.value ) ) {
		alert( 'Неверный формат поля "логин"!\nДопустимые символы: латинские буквы, цифры, "дефис"\nМаксимальная длина: 30' );
		the_login_field.focus();
		return false;
	}
	if ( !site_good_form_data( 'password', the_password_field.value ) ) {
		alert( 'Неверный формат поля "пароль"!\nДопустимые символы: латинские буквы, цифры, "дефис"\nМаксимальная длина: 30' );
		the_password_field.focus();
		return false;
	}
	if ( !site_good_form_data( 'password', the_password_2_field.value ) ) {
		alert( 'Неверный формат поля "повтор пароля"!\nДопустимые символы: латинские буквы, цифры, "дефис"\nМаксимальная длина: 30' );
		the_password_2_field.focus();
		return false;
	}
	
	if ( the_password_field.value != the_password_2_field.value ) {
		alert( 'Введенные значения пароля не совпадают!' );
		the_password_field.focus();
		return false;
	}
	
	if ( !site_good_form_data( 'email', the_email_field.value ) ) {
		alert( 'Недопустимый формат email!' );
		the_email_field.focus();
		return false;
	}
	
	the_submit_button.disabled = true;
	return true;
}



function site_check_login_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_login_field = the_form.the_login;
	var the_password_field = the_form.the_password;
	var the_remember_field = the_form.the_remember;
	
	the_login_field.value = trim_string(the_login_field.value);
	the_password_field.value = trim_string(the_password_field.value);
	
	if ( the_login_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "логин"!' );
		the_login_field.focus();
		return false;
	}
	if ( the_password_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "пароль"!' );
		the_password_field.focus();
		return false;
	}
	
	if ( !site_good_form_data( 'login', the_login_field.value ) ) {
		alert( 'Неверный формат поля "логин"!\nДопустимые символы: латинские буквы, цифры, "дефис"\nМаксимальная длина: 30' );
		the_login_field.focus();
		return false;
	}
	if ( !site_good_form_data( 'password', the_password_field.value ) ) {
		alert( 'Неверный формат поля "пароль"!\nДопустимые символы: латинские буквы, цифры, "дефис"\nМаксимальная длина: 30' );
		the_password_field.focus();
		return false;
	}
	
	the_submit_button.disabled = true;
	return true;
}






function site_check_password_remind_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_login_field = the_form.the_login;
	var the_email_field = the_form.the_email;
	
	the_login_field.value = trim_string(the_login_field.value);
	the_email_field.value = trim_string(the_email_field.value);
	
	if ( the_login_field.value == '' && the_email_field.value == '' ) {
		alert( 'Пожалуйста, заполните какое-нибудь одно из этих полей!' );
		the_login_field.focus();
		return false;
	}
	
	if ( the_login_field.value != '' && the_email_field.value != '' ) {
		alert( 'Пожалуйста, заполните только одно из этих полей!' );
		the_login_field.focus();
		return false;
	}
	
	if ( the_login_field.value != '' && !site_good_form_data( 'login', the_login_field.value ) ) {
		alert( 'Неверный формат поля "логин"!\nДопустимые символы: латинские буквы, цифры, "дефис"\nМаксимальная длина: 30' );
		the_login_field.focus();
		return false;
	}
	if ( the_email_field.value != '' && !site_good_form_data( 'email', the_email_field.value ) ) {
		alert( 'Недопустимый формат email!' );
		the_email_field.focus();
		return false;
	}
	
	the_submit_button.disabled = true;
	return true;
}






function site_check_confirm_request_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_email_field = the_form.the_email;
	
	the_email_field.value = trim_string(the_email_field.value);
	
	if ( !site_good_form_data( 'email', the_email_field.value ) ) {
		alert( 'Недопустимый формат email!' );
		the_email_field.focus();
		return false;
	}
	
	the_submit_button.disabled = true;
	return true;
}




function site_check_user_settings_update_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_password_field = the_form.the_password;
		the_password_field.value = trim_string(the_password_field.value);
	var the_password_2_field = the_form.the_password_2;
		the_password_2_field.value = trim_string(the_password_2_field.value);
	
	if ( the_password_field.value != '' && !site_good_form_data( 'password', the_password_field.value ) ) {
		alert( 'Неверный формат поля "пароль"!\nДопустимые символы: латинские буквы, цифры, "дефис"\nМаксимальная длина: 30' );
		the_password_field.focus();
		return false;
	}
	if ( the_password_2_field.value != '' && !site_good_form_data( 'password', the_password_2_field.value ) ) {
		alert( 'Неверный формат поля "повтор пароля"!\nДопустимые символы: латинские буквы, цифры, "дефис"\nМаксимальная длина: 30' );
		the_password_2_field.focus();
		return false;
	}
	if ( the_password_field.value != the_password_2_field.value ) {
		alert( 'Введенные значения пароля не совпадают!' );
		the_password_field.focus();
		return false;
	}
	
	the_submit_button.disabled = true;
	return true;
}



function site_check_profile_update_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_info_field = the_form.the_info;
		the_info_field.value = trim_string(the_info_field.value);
	
	var the_avatar_field = the_form.the_avatar;
	var the_avatar_action_field = the_form.the_avatar_action;
	
	if ( the_info_field.value.length > 10000 ) {
		alert( 'Слишком длинное значение поля "информация обо мне"!\nМаксимальная длина: 10000 символов!' );
		the_info_field.focus();
		return false;
	}
	
	if ( the_avatar_action_field.value == '1' && the_avatar_field.value == '' ) {
		alert( 'Необходимо выбрать файл с картинкой!' );
		the_avatar_field.focus();
		return false;
	}
	if ( the_avatar_field.value != '' ) {
		var the_avatar_ext = the_avatar_field.value.substr(the_avatar_field.value.length-4).toLowerCase();
		if ( the_avatar_ext != '.jpg' && the_avatar_ext != 'jpeg' && the_avatar_ext != '.gif' ) {
			alert( 'Неверный формат файла для аватара!\nДопустимые расширения файлов: .jpg, .jpeg и .gif' );
			return false;
		}
	}
	
	the_submit_button.disabled = true;
	return true;
}








function forum_check_new_topic_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_theme_field = the_form.the_theme;
	var the_title_field = the_form.the_title;
	var the_message_field = the_form.the_message;
	
	the_title_field.value = trim_string(the_title_field.value);
	the_message_field.value = trim_string(the_message_field.value);
	
	if ( the_title_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "название"!' );
		the_title_field.focus();
		return false;
	}
	if ( the_message_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "сообщение"!' );
		the_message_field.focus();
		return false;
	}
	if ( the_message_field.value.length > 10000 ) {
		alert( 'Слишком длинное сообщение, максимальная длина: 10000 символов!' );
		the_message_field.focus();
		return false;
	}
	the_submit_button.disabled = true;
	return true;
}



function forum_check_answer_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_message_field = the_form.the_message;
	
	the_message_field.value = trim_string(the_message_field.value);
	
	if ( the_message_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "сообщение"!' );
		the_message_field.focus();
		return false;
	}
	if ( the_message_field.value.length > 10000 ) {
		alert( 'Слишком длинное сообщение, максимальная длина: 10000 символов!' );
		the_message_field.focus();
		return false;
	}
	the_submit_button.disabled = true;
	return true;
}


function forum_check_topic_edit_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	var the_delete_button = the_form.the_delete_button;
	
	var the_title_field = the_form.the_title;
		if ( the_title_field )
			the_title_field.value = trim_string(the_title_field.value);
	var the_message_field = the_form.the_message;
		the_message_field.value = trim_string(the_message_field.value);
	
	if ( the_title_field && the_title_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "название"!' );
		the_title_field.focus();
		return false;
	}
	if ( the_message_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "сообщение"!' );
		the_message_field.focus();
		return false;
	}
	if ( the_message_field.value.length > 10000 ) {
		alert( 'Слишком длинное сообщение, максимальная длина: 10000 символов!' );
		the_message_field.focus();
		return false;
	}
	the_submit_button.disabled = true;
	the_delete_button.disabled = true;
	return true;
}

function forum_check_edit_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	var the_delete_button = the_form.the_delete_button;
	
	var the_message_field = the_form.the_message;
	
	the_message_field.value = trim_string(the_message_field.value);
	
	if ( the_message_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "сообщение"!' );
		the_message_field.focus();
		return false;
	}
	if ( the_message_field.value.length > 10000 ) {
		alert( 'Слишком длинное сообщение, максимальная длина: 10000 символов!' );
		the_message_field.focus();
		return false;
	}
	the_submit_button.disabled = true;
	the_delete_button.disabled = true;
	return true;
}






function site_check_unreg_feedback_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_name_field = the_form.the_name;
		the_name_field.value = trim_string(the_name_field.value);
		
	var the_email_field = the_form.the_email;
		the_email_field.value = trim_string(the_email_field.value);
		
	var the_title_field = the_form.the_title;
		the_title_field.value = trim_string(the_title_field.value);
	
	var the_message_field = the_form.the_message;
		the_message_field.value = trim_string(the_message_field.value);
	
	if ( the_name_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "имя"!' );
		the_name_field.focus();
		return false;
	}
	if ( the_email_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "email"!' );
		the_email_field.focus();
		return false;
	}
	if ( !site_good_form_data( 'email', the_email_field.value ) ) {
		alert( 'Недопустимый формат email!' );
		the_email_field.focus();
		return false;
	}
	if ( the_title_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "тема"!' );
		the_title_field.focus();
		return false;
	}
	if ( the_message_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "сообщение"!' );
		the_message_field.focus();
		return false;
	}
	
	if ( the_message_field.value.length > 10000 ) {
		alert( 'Слишком длинное сообщение!\nПросим выразиться более лаконично.' );
		the_info_field.focus();
		return false;
	}
	

	
	the_submit_button.disabled = true;
	return true;
}







function site_check_reg_feedback_form( the_form ) {
	var the_submit_button = the_form.the_submit_button;
	
	var the_title_field = the_form.the_title;
		the_title_field.value = trim_string(the_title_field.value);
	
	var the_message_field = the_form.the_message;
		the_message_field.value = trim_string(the_message_field.value);
	
	if ( the_title_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "тема"!' );
		the_title_field.focus();
		return false;
	}
	if ( the_message_field.value == '' ) {
		alert( 'Не заполнено обязательное поле "сообщение"!' );
		the_message_field.focus();
		return false;
	}
	
	if ( the_message_field.value.length > 10000 ) {
		alert( 'Слишком длинное сообщение!\nПросим выразиться более лаконично.' );
		the_info_field.focus();
		return false;
	}
	
	the_submit_button.disabled = true;
	return true;
}














function trim_string( the_string ) {
	return the_string.replace( /^\s+|\s+$/g, '' );
}

function repeat_string( the_string, the_number ) {
	var result = '';
	if ( the_number < 0 )
		the_number = 0;
	for ( i = 0; i < the_number; i ++ )
		result += the_string;
	return result;
}






// TAGS

function tag_fill_selector( selector_id, parent_id ) {
	if ( document.getElementById( selector_id ) ) {
		var the_selector = document.getElementById( selector_id );
		var the_selector_options = tags_children[parent_id];
		
		tag_hide_child_selectors( the_selector );
		
		if ( the_selector_options ) {
			the_selector.style.display = 'inline';
			
			the_selector.options[the_selector.options.length] = new Option( '...', '' );
			for ( the_option in the_selector_options ) {
				var option_id = the_selector_options[the_option];
				the_selector.options[the_selector.options.length] = new Option( tags_titles[option_id], option_id );
			}
		}
	}
}

function tag_hide_child_selectors( the_tag ) {
	the_tag.options.length = 0;
	the_tag.style.display = 'none';
	if ( document.getElementById( the_tag.id + '_1' ) ) {
		tag_hide_child_selectors( document.getElementById( the_tag.id + '_1' ) );
	}
}


function tag_create_line(line_id) {
	line_id++;
	
	var tags_wrapper = document.getElementById('tags_wrapper');
	
	var tags_line = document.createElement('DIV');
	tags_line.id = 'tag_line_'+line_id;
	tags_line.style.marginBottom = '3px';
	
	for ( var selector_id = 0; selector_id < 4; selector_id++ )
		tags_line.innerHTML += tag_create_selector( line_id, selector_id );
	
	tags_line.innerHTML += '<img src="/i/icon-delete.gif" alt="Удалить" border="0" style="margin-left: 5px; cursor: pointer;" onclick="tag_delete_line(\'tag_line_'+line_id+'\')"><br>';
	
	tags_wrapper.appendChild(tags_line);
	
	tag_fill_selector( 'tag_'+line_id, 0 )
	
	return line_id;
}

function tag_delete_line(line_id) {
	var tags_wrapper = document.getElementById('tags_wrapper');
	var the_line = document.getElementById(line_id);
	//the_line.removeNode( true );
	tags_wrapper.removeChild(the_line);
}


function tag_create_selector( line_id, selector_id ) {
	return '<select name="tag_'+line_id+'[]" id="tag_'+line_id+repeat_string('_1', selector_id)+'" onchange="tag_fill_selector( this.id+\'_1\', this.value )"></select>';
}

var tag_line_id = 0;













// COOKIES //

function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this function gets the cookie, if it exists
function Get_Cookie( name ) {	
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
		( ( path ) ? ";path=" + path : "") +
		( ( domain ) ? ";domain=" + domain : "" ) +
		";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

