// доделываем функцию escape
// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
trans[i] = i - 0x350; // А-Яа-я
trans[0x401] = 0xA8;    // Ё
trans[0x451] = 0xB8;    // ё

// Сохраняем стандартную функцию escape()
var escapeOrig = window.escape;

// Переопределяем функцию escape()
window.escape = function(str){
	var ret = [];
	// Составляем массив кодов символов, попутно переводим кириллицу
	for(var i = 0; i < str.length; i++){
		var n = str.charCodeAt(i);
		if(typeof trans[n] != 'undefined')
			n = trans[n];
		if (n <= 0xFF)
			ret.push(n);
	}
	return escapeOrig(String.fromCharCode.apply(null, ret));
}


//------------------------------------------------------------------------------
// ajax
function get_http(){
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5) try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch (e){
		try {
			xmlhttp = new
			ActiveXObject("Microsoft.XMLHTTP");
		}catch (E){
			xmlhttp = false;
		}
	}@else
		xmlhttp = false;
	@end @*/
	if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
		try{
			xmlhttp = new XMLHttpRequest();
		}catch (e){
			xmlhttp = false;
		}
	}
	return xmlhttp;
}


var http_num = 0;
this.http = new Array();

function ajax_lookup(url, result_function){
	// Получаем объект XMLHTTPRequest
	http_num++;
	if(!this.http[http_num]) this.http[http_num] = get_http();

	// Запрос
	if (this.http[http_num]){
		var http = this.http[http_num];
		url = url + '&hash=' + Math.random();

		this.http[http_num].open("GET", url, true);
		if(typeof(result_function) == 'function'){
			this.http[http_num].onreadystatechange = function(){
				if(http.readyState == 4){
					result_function(http.responseText);
				}
			}
		}
		this.http[http_num].send(null);
	}
	if(!this.http[http_num]) alert('Error creating XMLHTTP object!');
}

function ajax_test(){
	var t = get_http();
	return t ? true : false;
}

var _IS_AJAX_WORKS = ajax_test();

//end ajax
//------------------------------------------------------------------------------


function $(id){
	return document.getElementById(id);
}



// аналог in_array() из PHP
function in_array(needle, haystack){
	var res = false;
	var nn;
	for(nn in haystack) if(haystack[nn] == needle) res = true;
	return res;
}

// добавляет обработчик события для объекта
function add_handler(object, event, handler, useCapture){
	if (object.addEventListener)
		object.addEventListener(event, handler, useCapture ? useCapture : false);
	else if (object.attachEvent)
		object.attachEvent('on' + event, handler);
	else object['on' + event] = handler;
}

// обновляется капча на странице с формой
function recapcha(){
	$('capcha_pic').src = '/capcha.htm?' + Math.random();
}







function remove_node(node){
	return node.parentNode.removeChild(node);
}


function swap_nodes(node1, node2){
	var n1 = node1.cloneNode(true);
	var n2 = node2.cloneNode(true);

	node1.parentNode.insertBefore(n2, node1);
	remove_node(node1);

	node2.parentNode.insertBefore(n1, node2);
	remove_node(node2);
}



// Определение абсолютных координат объекта
function getAbsolutePos(el){
	var r = {x: el.offsetLeft, y: el.offsetTop};
	if(el.offsetParent){
		var tmp = getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
}


// укорачивает длинную строку, добавляет ... в конец
function short_str(str, max_len){
	if(str.length > max_len){
		str = str.substr(0, max_len);
		str += '...';
	}
	return str;
}



// запрос на подтверждение удаления чего-либо
function delete_q(url){
	if (window.confirm('Вы подтверждаете удаление?')) document.location = url;
}


// отсчитывает макс. кол-во символов в элементе формы
function chars_counter(el, res_id, max_len){
	var counter = $(res_id);
	if(el.value.length > max_len)
		el.value = el.value.substring(0, max_len);
	else
		counter.innerHTML = max_len - el.value.length;
}


function trim(str, charlist){
	charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
	var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
	return str.replace(re, '');
}







// определяет, не Опера ли используется
function is_opera(){
	return navigator.userAgent.indexOf('Opera') >= 0 && document.getElementById ? true : false;
}









// функции для преключения месяца в "Умном календаре"
function change_smart_date(ts){
	$('calendar_block').style.cursor = 'wait';
	ajax_lookup('/PROG/PUBLICATIONS/AJAX/change_smart_date.php?ts=' + escape(ts), set_smart_date);
}

function set_smart_date(html){
	$('calendar_block').style.cursor = 'default';
	$('calendar_block').innerHTML = html;
}






function block_show(block_class, obj){
	block_set_display_prop(block_class, '', obj);
}

function block_hide(block_class, obj){
	block_set_display_prop(block_class, 'none', obj);
}


function block_set_display_prop(block_class, val, obj){
	if(typeof obj != 'object') obj = document.body;

	var elements = obj.childNodes;
	for(var i = 0, l = elements.length; i < l; i++)
		if(elements[i].nodeType == 1 && elements[i].tagName != 'SCRIPT'){
			if(elements[i].className == block_class) elements[i].style.display = val;
			block_set_display_prop(block_class, val, elements[i]);
		}
}



// Функция для списка публикаций в личном кабинете:
// изменяет домен в ссылке, которая открывает просмотр публикации
function change_pub_lnk(inp, id, url){
	$('domain_' + id + '_lnk').href = 'http://' + inp.value + url;
}
