/*Центрирование внутри контейнера*/
jQuery.fn.centering = function(container){
	if (container == undefined) container = $(window);
	var wt = this.width();
	var ht = this.height();
	zu = this.outerWidth();
	zu = this.innerWidth();
	var wc = container.width();
	var hc = container.height();
	var x = (wc - wt) / 2;
	var y = (hc - ht) / 2;
	if (container[0] == window) {
		x = x + container.scrollLeft();
		y = y + container.scrollTop();	
	} else if  (container[0] != document) {
		cpos = container.offset();
		x = x + cpos.left + cpos.scrollLeft;
		y = y + cpos.top + cpos.scrollTop;
	}
	this.css({left:x,top:y});
}
/*Позиционирование относительно контейнера*/
jQuery.fn.setPosition = function(x, y, container, affixment_x, affixment_y){
	if (container == undefined) container = $(window);
	if (affixment_x == undefined) affixment_x = 'left';
	if (affixment_y == undefined) affixment_y = 'top';
	if (container[0] == window) {
		x = x + container.scrollLeft();
		y = y + container.scrollTop();	
	} else if  (container[0] != document) {
		cpos = container.offset();
		x = x + cpos.left + cpos.scrollLeft;
		y = y + cpos.top + cpos.scrollTop;
	}
	switch (affixment_x) {
		case 'center': x = x - this.width() / 2; break;
		case 'right': x = x - this.width(); break;
	}
	switch (affixment_y) {
		case 'center': y = y - this.height() / 2; break;
		case 'bottom': y = y - this.height(); break;
	}
	this.css({left:x,top:y});
}
/*Листалка*/
jQuery.fn.initPager = function(){
	var childs = this.find('#pageSet').children();
	var pagesCount = childs.size();
	childs.each(function(i){
		if (i>0) $(this).hide();
		else $(this).addClass('visiblePage');
	});
	this.find('#left_arrow').css('display','none');
	if (pagesCount==1) this.find('#right_arrow').css('display','none');
	return pagesCount;
}
jQuery.fn.nextPage = function(){
	var pageset = this.find('#pageSet');
	var childs = pageset.children();
	var cpage = childs.filter('.visiblePage');
	var pagesCount = childs.size();
	var position = childs.index(cpage[0]);
	if (position<0) return;
	$(childs[position]).removeClass();
	$(childs[position]).hide();
	$(childs[position+1]).addClass('visiblePage');
	$(childs[position+1]).show();
	if (position >= pagesCount-2) this.find('#right_arrow').css('display','none');
	if (pagesCount > 1) this.find('#left_arrow').css('display','block');
	return position + 1;
}
jQuery.fn.prevPage = function(){
	var pageset = this.find('#pageSet');
	var childs = pageset.children();
	var cpage = childs.filter('.visiblePage');
	var pagesCount = childs.size();
	var position = childs.index(cpage[0]);
	if (position<0) return;
	$(childs[position]).removeClass();
	$(childs[position]).hide();
	$(childs[position-1]).addClass('visiblePage');
	$(childs[position-1]).show();
	this.find('#right_arrow').css('display','block');
	if (position < 2) this.find('#left_arrow').css('display','none');
	return position - 1;
}
/*Выборка всех элементов формы*/
jQuery.fn.formElements = function(){
	return this.find('input,select,textarea');
}
/*Включение отслеживания изменений в элементах формы*/
jQuery.fn.markChanged = function(){
	this.formElements().change(
		function(){$(this).attr('changed','changed');});
	return this;
}
/*Сброс марккировки измененных элементов формы*/
jQuery.fn.unmarkChanged = function(){
	this.formElements().removeAttr('changed');
	return this;
}
/*Выборка измененных элементов формы*/
jQuery.fn.getChanged = function(){
	return this.formElements().filter('[@changed=changed]');
}
/*Создание одномерного массива для POST*/
jQuery.fn.makePostMap = function(){
	var map = {};
	this.each(function(i){
		map[this.name] = this.value;
	});
	return map;
}
jQuery.fn.initKeyCtrl = function(){
	this.keydown(function(e){
		if (!e.ctrlKey) return;
		var code = e.keyCode || e.charCode;		
		switch (code){
			case 37: 
				var c =	$('#prev_page').attr('href');
				break;
			case 39: 
				var c =	$('#next_page').attr('href');	
				break;
			case 38: 
				var c =	$('#top_page').attr('href');	
				break;
			case 40: 
				var c =	$('#bottom_page').attr('href');	
				break;
			default: return;
		}
		if (c && c != undefined) location.href = c;
	});
}
