/**
* сохраняет пользовательскую переменную (для запоминания переключающихся блоков)
*/
/*function setUserVariable(variableName, variableValue){
	$.post(W_AJAX + "set_user_variable", { variableName: variableName, variableValue: variableValue }, '', 'json');
}*/

/**
* проверяет, впервые ли нажат элемент
* полезно при добавлении новых элементов через Ajax
*/
function isItNewElementPress(element) {
  if($(element).attr('pressed') == 'yes') // Если кнопку удаления уже нажимали
	  return false;
	$(element).attr('pressed', 'yes');
	return true;
}
/**
* Устраняет флаг нажатости элемента
*/
function freeElementPress(element) {
  $(element).attr('pressed', 'no'); // Если кнопку удаления уже нажимали
}

function ajax() {};
// Вставляем картинку для ожидания после объекта
ajax.after = function(item, id) { $("#"+item).after(' <img id="' + id + '" src="' + W_IMAGES + 'icons/ajax.gif" />'); };

// Удаляем картинку для ожидания
ajax.remove = function(id) { $("#"+id).remove(); } ;

$(document).ready(function() {

});

function morevTreeClick(element) {
	var srcPlus = W_IMAGES + 'icons/user_tree/plus.gif';
	var srcMinus = W_IMAGES + 'icons/user_tree/minus.gif';
	if($(element).attr('src') == srcPlus) {
		$(element).attr('src', srcMinus);
		//$(element).parent().find('ul').slideDown('fast');
		//$(element).parent().find('ul').show();
		$(element).parent().find('ul').slideDown('fast');

		morevTreeRecursion($(element).parent().find('ul'));
		//$(element).parent().find('ul').css('visibility', 'visible');
		//$(element).parent().find('ul').css('display', 'box');


	}
	else {
		$(element).attr('src', srcPlus);
		$(element).parent().find('ul').slideUp('fast');
		//morevTreeRecursion($(element).parent().find('ul'));
		//$(element).parent().find('ul').css('display', 'none');
	}

	function morevTreeRecursion(element) {
		$(element).find("img").each(function (i) {
			if($(this).attr('src') == srcPlus) {
				$(this).parent().find('ul').hide();
			}
    });
	}
}

function showTags(strTags, strPath, glue) {
  var arrTags = strTags.split(', ');
  var sizeTags = arrTags.length;
  if(!sizeTags || arrTags[0] == "")
    return false;
  var str = '<div class="tags"><noindex><strong>Теги (метки):</strong>&nbsp;';
  for (var i = 1; i <= sizeTags; i++) {
    var arrTag = arrTags[i - 1];
      str += '<a href="' + strPath + arrTag + '">' + arrTag + '</a>';
      if (i != sizeTags)
        str += glue;
  }
  str += "</noindex></div>";
//  alert(1);
  return str;
}

function changeMainMenu() {
	var currentMenu = $('.BannerBlockMenuPointCurrent');
	if ($('.BannerBlockMenuPointCurrent').next().attr('class') == 'BannerBlockMenuPoint') {
		currentMenu = $('.BannerBlockMenuPointCurrent').next();
	}
	else {
		currentMenu = $('.BannerBlockMenuPoint:first');
		$('#BannerBlockMenuIn').css('margin-top', 0);
	}
	var marginTop = Number($('#BannerBlockMenuIn').css('margin-top').substr(0,$('#BannerBlockMenuIn').css('margin-top').length-2));
	var height = $('#BannerBlockMenu').offset().top+$('#BannerBlockMenu').height()+marginTop;
	if (height-32<$(currentMenu).offset().top ) $('#BannerBlockMenuIn').css('margin-top', marginTop-32);
	currentMenu2 = $(currentMenu).children('div');
	//$('#BannerMore a').attr('href', $(currentMenu2).children('.menu_url').val());
	$('#BannerBlock').children('img').fadeTo(1000, 0, function() {
		$('#BannerHead p').text($(currentMenu).children('p').text());
		$('#BannerText p').text($(currentMenu2).children('.menu_descr').val());
		$('.BannerBlockMenuPointCurrent').attr('class', 'BannerBlockMenuPoint');
		$(currentMenu).attr('class', 'BannerBlockMenuPointCurrent');
		$('#BannerBlock').children('img').attr('src', W_IMAGES+($(currentMenu2).children('.menu_img').val()));
		$('#BannerBlock').children('img').fadeTo(1000, 1);
	});
};

function goDown() {
	var marginTop = Number($('#BannerBlockMenuIn').css('margin-top').substr(0,$('#BannerBlockMenuIn').css('margin-top').length-2));
	if ($('#BannerBlockMenuIn').height()+marginTop > $('#BannerBlockMenu').height()){
		$('#BannerBlockMenuIn').css('margin-top', marginTop-8);
	}
	else $("#go_down").stopTime("timer_go_down");
};

function goUp() {
	var marginTop = Number($('#BannerBlockMenuIn').css('margin-top').substr(0,$('#BannerBlockMenuIn').css('margin-top').length-2));
	if (marginTop < 0){
		$('#BannerBlockMenuIn').css('margin-top', marginTop+8);
	}
	else $("#go_down").stopTime("timer_go_up");
};

function setMenuItem(el){
	$('#BannerBlock').stopTime('timer');
	currentMenu = $(el).children('div');
	//$('#BannerMore a').attr('href', $(currentMenu).children('.menu_url').val());
		$('#BannerBlock').children('img').fadeTo(1000, 0, function() {
			$('#BannerHead p').text($(el).children('p').text());
			$('#BannerText p').text($(currentMenu).children('.menu_descr').val());
			$('#BannerBlock .BannerBlockMenuPointCurrent').attr('class', 'BannerBlockMenuPoint');
			$(el).attr('class', 'BannerBlockMenuPointCurrent');
			$('#BannerBlock').children('img').attr('src', W_IMAGES+($(currentMenu).children('.menu_img').val()));
			$('#BannerBlock').children('img').fadeTo(1000, 1);
		});
}

function goUpClick(){
	var elemNumber = Math.ceil((132 - $('#BannerBlockMenuIn>div:first').offset().top) / 32);
	$('#BannerBlockMenuIn>div').eq(elemNumber).click();
	//$('.BannerBlockMenuPoint:first').click();
}

function goDownClick(){
	var elemNumber = (164+219 - $('.BannerBlockMenuPoint:first').offset().top) / 32;
	$('.BannerBlockMenuPoint').eq(elemNumber).click();
	//$('.BannerBlockMenuPoint:first').click();
}


function setUserVariable(variableName, variableValue) {
	$.post(W_AJAX + "setUserVariable", {
		variableName: variableName,
		variableValue: variableValue
		}, function(obj){
			if(obj.result == "error") alert(obj.error);
		},
		'json'
	);
}

function setMenuUserVariable(variableName, el, type) {
	if (!type) var type = '';
	if ($(el).attr('src') == W_IMAGES + 'icons/border_menu/show' + type + '.gif') {
		setUserVariable(variableName, 1);
		showBlock(el, type);
	}
	else {
		setUserVariable(variableName, 0);
		hideBlock(el, type);
	}
}

function hideBlock(el, type) {
	$(el).attr('src', W_IMAGES + 'icons/border_menu/show' + type + '.gif');
	$(el).parent().next().slideUp('normal');
}

function showBlock(el, type) {
	$(el).attr('src', W_IMAGES + 'icons/border_menu/hide' + type + '.gif');
	$(el).parent().next().slideDown('normal');
}

function makeRedactor(id, name){
	$.post(
			W_AJAX + "makeRedactor",
			{
				id : id
			},
			'',
			"json"
		);
	$("#redactor" + id).remove();
	$("#redactorsBlock1").append('<p id="redactor' + id + '"><a href="' + W_ABSPATH + 'profile/' + id + '">' + name + '</a> <a title="Удалить из редакторов" href="javascript:rejectRedactor(' + id + ', \'' + name + '\');"><img src="' + W_IMAGES + 'icons/delete.gif" style="position: relative; top: 3px; margin-left: 5px;"/></a></p>');
}

function makeRedactor_2(id, name, elementClicked){
	$.post(
			W_AJAX + "makeRedactor",
			{
				id : id
			},
			'',
			"json"
		);
		$("#redactor" + id).remove();
	//$("#redactorsBlock1").append('<p id="redactor' + id + '"><a href="' + W_ABSPATH + 'profile/' + id + '">' + name + '</a> <a title="Удалить из редакторов" href="javascript:rejectRedactor(' + id + ', \'' + name + '\');"><img src="' + W_IMAGES + 'icons/delete.gif" style="position: relative; top: 3px; margin-left: 5px;"/></a></p>');
}

function rejectRedactor(id, name){
	$.post(
			W_AJAX + "rejectRedactor",
			{
				id : id
			},
			'',
			"json"
		);
	$("#redactor" + id).remove();
	$("#redactorsBlock3").append('<p id="redactor' + id + '"><a href="' + W_ABSPATH + 'profile/' + id + '">' + name + '</a> <a title="Сделать редактором" href="javascript:makeRedactor(' + id + ', \'' + name + '\');"><img src="' + W_IMAGES + 'icons/correct.gif" style="margin-left: 5px;"/></a></p>');
}

function rejectRedactor_2(id, name, elementClicked){
	$.post(
			W_AJAX + "rejectRedactor",
			{
				id : id
			},
			'',
			"json"
		);
	$("#redactor" + id).remove();
		//$("#redactor" + id).remove();
	//$("#redactorsBlock3").append('<p id="redactor' + id + '"><a href="' + W_ABSPATH + 'profile/' + id + '">' + name + '</a> <a title="Сделать редактором" href="javascript:makeRedactor(' + id + ', \'' + name + '\');"><img src="' + W_IMAGES + 'icons/correct.gif" style="margin-left: 5px;"/></a></p>');
}
function deleteRedactor_2(id, name, elementClicked){
	$.post(
			W_AJAX + "deleteRedactor",
			{
				id : id
			},
			'',
			"json"
		);
	$("#redactor" + id).remove();
		//$("#redactor" + id).remove();
	//$("#redactorsBlock3").append('<p id="redactor' + id + '"><a href="' + W_ABSPATH + 'profile/' + id + '">' + name + '</a> <a title="Сделать редактором" href="javascript:makeRedactor(' + id + ', \'' + name + '\');"><img src="' + W_IMAGES + 'icons/correct.gif" style="margin-left: 5px;"/></a></p>');
}
function deleteUser_2(id, name, elementClicked){
	$.post(
			W_AJAX + "deleteUser",
			{
				id : id
			},
			'',
			"json"
		);
	$("#redactor" + id).remove();
		//$("#redactor" + id).remove();
	//$("#redactorsBlock3").append('<p id="redactor' + id + '"><a href="' + W_ABSPATH + 'profile/' + id + '">' + name + '</a> <a title="Сделать редактором" href="javascript:makeRedactor(' + id + ', \'' + name + '\');"><img src="' + W_IMAGES + 'icons/correct.gif" style="margin-left: 5px;"/></a></p>');
}

/*
Выполняется автоматически (для некоторых версий браущеров, где не определён этот метод)
*/
if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
	for(var i=0; i<this.length; i++){
	    if(this[i]==obj){
	        return i;
	    }
	}
	return -1;
    }
}


function getMarginsByStrOfMargin(strMargin, type) {

	strMargin = strMargin.toLowerCase();
	var currentPosition;
	var top = 0;
	var right = 0;
	var bottom = 0;
	var left = 0;

	currentPosition = strMargin.indexOf('px');
	if(currentPosition > 0) {
		left = bottom = right = top = intval(strMargin);
		strMargin = strMargin.substr(currentPosition + 2);
		currentPosition = strMargin.indexOf('px');
		if(currentPosition > 0) {
			left = right = intval(strMargin);
			strMargin = strMargin.substr(currentPosition + 2);
			currentPosition = strMargin.indexOf('px');
			if(currentPosition > 0) {
				bottom = intval(strMargin);
				strMargin = strMargin.substr(currentPosition + 2);
				currentPosition = strMargin.indexOf('px');
				if(currentPosition > 0) {
					left = intval(strMargin);
				}
			}
		}
	};
	if(type == 'top')
	  return top;
	else if(type == 'right')
	  return right;
	else if(type == 'bottom')
	  return bottom;
	else if(type == 'left')
	  return left;
	else
	  return top;
};

//Простые окошки, всплывающие рядом с объектами
function popup () {}
/*Открытие окна
 *options: xf, yf - смещение; width, height; type - тип (0 - текст, 1 - содержимое эл-та с ID)
 *strContent - содержимое
 */
popup.open = function (objEl, strContent, options) {
  var defaults = {type: 0, w: 'auto', h: 'auto', xf: 20, yf: 10}; //Значения по умолчанию
  var settings = {}; //текущие настройки
  jQuery.extend(settings, defaults, options);
  if ($(".pop-up").length) { //Закрываем открытые ранее окошки
    popup.close();
    popup.open(objEl, strContent, options);
    return true;
  }
  var strHTML = '';
  switch (settings.type) {
    case 0:
      strHTML = strContent;
      break;
    case 1:
      strHTML = $(strContent).html();
      var objParentEl = $(strContent).parent();
      var objDetachedContent = $(strContent).remove();
      break;
    default:
      strHTML = 'Ошибка';
      break;
  }
 	var iLeft = $(objEl).offset().left;
	var iTop = $(objEl).offset().top;
	var strEl = '<div class="pop-up">' +
			        '<table cellspacing="0" cellpadding="0" border="0" class="pmain">' +
			          '<tr><td class="tl"/><td class="t"/><td class="tr"/></tr>' +
			          '<tr>' +
			            '<td class="l"/>' +
			            '<td class="body">' +
			              '<div class="content" style="display: block;">' +
			              '<img src="' + W_IMAGES + 'icons/ico_close.gif" class="pop-up_close" alt="Закрыть" />' +
			              strHTML + '</div>' +
			            '</td><td class="r"/>' +
			         '</tr>' +
			          '<tr><td class="bl"/><td class="b"/><td class="br"/></tr>' +
			        '</table>' +
			      '</div>';
	var objPopup = $(strEl).insertAfter(objEl);
	$(".pop-up table.pmain").css({width: settings.w, height: settings.h});
	$(objPopup).css('left', (iLeft + settings.xf));
	$(objPopup).css('top', iTop + settings.yf);
	$(objPopup).show();
	$('.pop-up_close').click(function() {
	  if (settings.type == 1)
	    $(objParentEl).append(objDetachedContent);
	  $(".pop-up").remove(); //убираем все открытые на данный момент окошки
	});
}
popup.close = function () {
  $(".pop-up_close").trigger('click');
}


/*Действия над многими элементами списка*/
function collectionActions () {}
collectionActions.checkAll = function (objForm, checkBoxesName) {
  $(objForm)
    .find("input[name='" + checkBoxesName + "']")
    .attr("checked", "checked");
}
collectionActions.unCheckAll = function (objForm, checkBoxesName) {
  $(objForm)
    .find("input[name='" + checkBoxesName + "']")
    .removeAttr("checked");
}

/**
 * @author Alexandre Magno
 * @desc Center a element with jQuery
 * @version 1.0
 * @example
 * $("element").center({
 *
 * 		vertical: true,
 *      horizontal: true
 *
 * });
 * @obs With no arguments, the default is above
 * @license free
 * @param bool vertical, bool horizontal
 * @contribution Paulo Radichi
 *
 */
jQuery.fn.center = function(params) {

		var options = {

			vertical: true,
			horizontal: true

		}
		op = jQuery.extend(options, params);

   return this.each(function(){

		//initializing variables
		var $self = jQuery(this);
		//get the dimensions using dimensions plugin
		var width = $self.width();
		var height = $self.height();
		//get the paddings
		var paddingTop = parseInt($self.css("padding-top"));
		var paddingBottom = parseInt($self.css("padding-bottom"));
		//get the borders
		var borderTop = parseInt($self.css("border-top-width"));
		var borderBottom = parseInt($self.css("border-bottom-width"));
		//get the media of padding and borders
		var mediaBorder = (borderTop+borderBottom)/2;
		var mediaPadding = (paddingTop+paddingBottom)/2;
		//get the type of positioning
		var positionType = $self.parent().css("position");
		// get the half minus of width and height
		var halfWidth = (width/2)*(-1);
		var halfHeight = ((height/2)*(-1))-mediaPadding-mediaBorder;
		// initializing the css properties
		var cssProp = {
			position: 'absolute'
		};

		if(op.vertical) {
			cssProp.height = height;
			cssProp.top = '50%';
			cssProp.marginTop = halfHeight;
		}
		if(op.horizontal) {
			cssProp.width = width;
			cssProp.left = '50%';
			cssProp.marginLeft = halfWidth;
		}
		//check the current position
		if(positionType == 'static') {
			$self.parent().css("position","relative");
		}
		//aplying the css
		$self.css(cssProp);


   });

};



function count (mixed_var, mode) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Waldo Malqui Silva
    // +      bugfixed by: Soren Hansen
    // +      input by: merabi
    // +      improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: count([[0,0],[0,-4]], 'COUNT_RECURSIVE');
    // *     returns 1: 6
    // *     example 2: count({'one' : [1,2,3,4,5]}, 'COUNT_RECURSIVE');
    // *     returns 2: 6

    var key, cnt = 0;

    if (mixed_var === null){
        return 0;
    } else if (mixed_var.constructor !== Array && mixed_var.constructor !== Object){
        return 1;
    }

    if (mode === 'COUNT_RECURSIVE') {
        mode = 1;
    }
    if (mode != 1) {
        mode = 0;
    }

    for (key in mixed_var){
        if (mixed_var.hasOwnProperty(key)) {
            cnt++;
            if ( mode==1 && mixed_var[key] && (mixed_var[key].constructor === Array || mixed_var[key].constructor === Object) ){
                cnt += this.count(mixed_var[key], 1);
            }
        }
    }

    return cnt;
}