/*Центрирование внутри контейнера*/
jQuery.fn.centering = function(container, relative){
	if (container == undefined) container = $(window);
	if(relative == undefined) relative = $(this);
	
	var wt = relative.width();
	var ht = relative.height();
	
	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;
	}
	if (x < 0) x = 0;
	if (y < 0) y = 0;
	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;
	});
}
showHideChild = function(obj){
	var block = obj.parentNode.lastChild;
	if ($(block).css('display') == 'none') $(block).css('display', 'block');
	else $(block).css('display', 'none');}
getStruct = function(name,obj,lev,max,tab){
	var res = '<div>'+tab+name+' = ';
	if ((typeof obj).match(/object/) && (max == undefined || lev<max)){
		res = res+'<a href="javascript:;" onclick="showHideChild(this)">object</a> <div style="display:none;">'+tab+'{<br/>';
		for (key in obj){
			try {
				res = res+getStruct(key, obj[key], lev+1, max, tab+'&#160;&#160;&#160;');}
			catch (e){
				res = res+tab+'<div>&#160;&#160;&#160;'+name+' = Not inspectable!</div>';}}		
		res = res+tab+'}</div></div>';}
	else if ((typeof obj).match(/function/)){
		res = res+'<a href="javascript:;" onclick="showHideChild(this)">function</a> <div style="display:none;background:#ccf;"><pre>'+obj+'</pre></div></div>';} 
	else {
		try { 
			res = res+obj+'</div>';} 
		catch (e){
			res = res+'Not inspectable!</div>';	}}
	return res;}
closeDebugWindow = function(obj){
	$(obj.parentNode).remove();
	if($.browser.msie){	$('select').css('visibility','visible'); }
}
inspectObject = function(obj,maxlevel,name){
	if($.browser.msie){	$('select').css('visibility','hidden'); }
	if (name == undefined) name = 'Inspected object';
	$(document.body).append('<div id="debugWindow" style="padding:5px;background:#fff;border:1px solid #00f;width:400px;height:300px;position:absolute;z-index:100;">Debug Window: look to "'+name+'" [<a href="javascript:;" onclick="closeDebugWindow(this)">Закрыть</a>]<div style="width:400px;height:270px;overflow:auto;background:#ddd;margin-top:10px;" id="debugFrame">Inspecting...</div>');
	$('#debugWindow').centering();
	var res = getStruct(name, obj,0,maxlevel,'');
	$('#debugFrame').html('<code>'+res+'</code>');}
inArray = function(arr,el){
	for (k in arr)
		if (arr[k] == el) return k;
	return undefined;}
buildUrl = function(alias, param){
	var url = location.protocol + '//' + document.domain;
	var langs = Array('eng','rus','ukr');
	var lngalias = location.pathname.match(/^\/([a-z]{3})(.?)/);
	if (lngalias){
		if ((lngalias[2] == '' || lngalias[2] == '/') && inArray(langs, lngalias[1]) != undefined){
			url = url + '/' + lngalias[1];}}
	url = url + (alias==undefined?'':alias);
	if (param != undefined){
		for (k in param){
			url = url + '/' + k + '.' + param[k];}}
	return url;}
gbID = function(id){
	return $(document.getElementById(id));}
isEmpty = function(v){
	return  v==undefined?true:typeof v=='string'?(!v.match(/[^\s]/)||v=='0'):(v==0||v==null);}
function ExpandClose(obj){
	var p = obj.parent()[0];
	var ch = $(p).children();
	if ($(ch[1]).css('display') == 'none') $(ch[1]).css('display','block');
	else $(ch[1]).css('display','none');
	var pos = obj.offset();
	var t = pos.top + pos.scrollTop;
	var w = $(window).scrollTop();
	if (w > t) window.scrollTo(0, t);
	var alt = $(obj).attr('alter') || '';
	if (alt != ''){
		obj.attr('alter',obj.html());
		obj.html(alt);}}

function popupWindow(url, args, preloader) {
	preloader = preloader || '/i/Image/site/preloader.gif';
	if (preloader != '') {
		var pd = document.createElement('div');
		document.body.appendChild(pd);
		pd.style.position = 'absolute';
		pd.style.zIndex = 1000;
		pd.style.float = 'left';
		pd.innerHTML = '<img src="'+preloader+'" alt=""/>';
		$(pd).centering();
	}
	$.post(url,{ajax:'yes'}, function(res){
		if (preloader != undefined) {
			pd.parentNode.removeChild(pd);
		}
		args['url'] = url;
		showPopupWindow(res, args);
	});
}

function ___showPopupWindow(res, _arg){
	_arg = _arg || {};
	var args = {
		'title': '',
		'width': 'auto',
		'url'	: '',
		'height': 'auto',
		'print':0,
		'class': 'popupwin',
		'img': '/i/Image/site/icon_close.gif',
		'bodyId':'popupContainer'
	};
	$.extend(args,_arg);
	var h = $(document).height();
	if (!args.width != 'auto') args.width = parseInt(args.width) + 'px';
	if (!args.height != 'auto') args.height = parseInt(args.height) + 'px';
	var tmpl = 
"<div id=\"pw_cont\" style=\"position:absolute;z-index:1000;\">\
<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" >\
<tr>\
	<td class=\"clt\"><img src=\"/i/trans.gif\" width=\"4\" height=\"4\" alt=\"\" /></td>\
	<td class=\"lt\"><img src=\"/i/trans.gif\" width=\"1\" height=\"4\" alt=\"\" /></td>\
	<td class=\"crt\"><img src=\"/i/trans.gif\" width=\"4\" height=\"4\" alt=\"\" /></td>\
</tr>\
<tr>\
	<td class=\"ll\"><img src=\"/i/trans.gif\" width=\"4\" height=\"1\" alt=\"\" /></td>\
	<td>\
<table class=\"{class}\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\
<tr><td class=\"header\"><div id=\"pw_title\" class=\"pw_title\" style=\"float:left;\">{title}</div>\
<div class=\"pw_close\" style=\"float:right;\">\
	<img src=\"{img}\" alt=\"\" title=\"Закрыть\" onclick=\"closePopup(this)\">\
</div></td></tr>\
<tr><td class=\"pw_body\" id=\"{bodyId}\"><div id=\"pw_body\" style=\"width:{width}; height:{height};\">{body}</div></td></tr></table>\
</td>\
	<td class=\"lr\"><img src=\"/i/trans.gif\" width=\"4\" height=\"1\" alt=\"\" /></td>\
</tr>\
<tr>\
	<td class=\"clb\"><img src=\"/i/trans.gif\" width=\"4\" height=\"4\" alt=\"\" /></td>\
	<td class=\"lb\"><img src=\"/i/trans.gif\" width=\"1\" height=\"4\" alt=\"\" /></td>\
	<td class=\"crb\"><img src=\"/i/trans.gif\" width=\"4\" height=\"4\" alt=\"\" /></td>\
</tr>\
</table>\
</div>\
<div class=\"realyBigCover\" style=\"position:absolute;z-index:999;width:100%;height:"+h+"px;top:0;left:0;\">&nbsp;</div>";
	var node = document.createElement('div');
	document.body.appendChild(node);
	node.className = 'popupwinpdiv';
	var k;
	for(k in args) {
		tmpl = tmpl.replace('{'+k+'}', args[k]);
	}
	tmpl = tmpl.replace('{body}', res);
	node.innerHTML = tmpl;

	$('#pw_cont').centering($(window),$('#pw_body'));
	$('#pw_title').css('width',Math.round($('#pw_body').width()*0.9)+'px');
	//$(node).pngFix();
}



function showPopupWindow(res, _arg){
	_arg = _arg || {};
	var args = {
		'title': '',
		'width': 'auto',
		'url'	: '',
		'height': 'auto',
		'print':0,
		'class': 'popupwin',
		'img': '/i/Image/site/icon_close.gif',
		'bodyId':'popupContainer'
	};
	$.extend(args,_arg);
	var h = $(document).height();
	if (!args.width != 'auto') args.width = parseInt(args.width) + 'px';
	if (!args.height != 'auto') args.height = parseInt(args.height) + 'px';
	var tmpl = 
"<div id=\"pw_cont\" style=\"position:absolute;z-index:1000;\">\
<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" >\
<tr>\
	<td class=\"clt\"><img src=\"/i/trans.gif\" width=\"4\" height=\"4\" alt=\"\" /></td>\
	<td class=\"lt\"><img src=\"/i/trans.gif\" width=\"1\" height=\"4\" alt=\"\" /></td>\
	<td class=\"crt\"><img src=\"/i/trans.gif\" width=\"4\" height=\"4\" alt=\"\" /></td>\
</tr>\
<tr>\
	<td class=\"ll\"><img src=\"/i/trans.gif\" width=\"4\" height=\"1\" alt=\"\" /></td>\
	<td>\
<table class=\"{class}\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\
<tr><td class=\"header\"><div id=\"pw_title\" class=\"pw_title\" style=\"float:left;\">{title}</div>\
<div class=\"pw_close\" style=\"float:right;\">\
	<a href=\"#\" title=\"Закрыть\" onclick=\"closePopup(this); return false;\">Закрыть</a>\
</div></td></tr>\
<tr><td class=\"pw_body\" id=\"{bodyId}\"><div id=\"pw_body\" style=\"width:{width}; height:{height};\">{body}</div></td></tr></table>\
</td>\
	<td class=\"lr\"><img src=\"/i/trans.gif\" width=\"4\" height=\"1\" alt=\"\" /></td>\
</tr>\
<tr>\
	<td class=\"clb\"><img src=\"/i/trans.gif\" width=\"4\" height=\"4\" alt=\"\" /></td>\
	<td class=\"lb\"><img src=\"/i/trans.gif\" width=\"1\" height=\"4\" alt=\"\" /></td>\
	<td class=\"crb\"><img src=\"/i/trans.gif\" width=\"4\" height=\"4\" alt=\"\" /></td>\
</tr>\
</table>\
</div>\
<div class=\"realyBigCover\" style=\"position:absolute;z-index:999;width:100%;height:"+h+"px;top:0;left:0;\">&nbsp;</div>";
	var node = document.createElement('div');
	document.body.appendChild(node);
	node.className = 'popupwinpdiv';
	var k;
	for(k in args) {
		tmpl = tmpl.replace('{'+k+'}', args[k]);
	}
	tmpl = tmpl.replace('{body}', res);
	node.innerHTML = tmpl;

	$(node.firstChild).centering();
	if (args['width'] != 'auto') {
		var w = parseInt(args['width']) - 80;
		$(node).find('#pw_title').css('width', w+'px');
	}
	//$(node).pngFix();
}



function closePopup(iobj) {
	while (iobj && iobj.nodeType == 1){
		if (iobj.className == 'popupwinpdiv') {
			iobj.parentNode.removeChild(iobj);
			break;
		}
		iobj = iobj.parentNode;
	}
}

function showImage(isrc, title) {
	title = title || '';
	var imgo = new Image();
	imgo.src = isrc;
	if ( imgo.readyState == 'complete' || imgo.complete ) {
		showPopupWindow('<img src="'+imgo.src+'" alt="" width="'+imgo.width+'" height="'+imgo.height+'"/>', {'title':title,'width':imgo.width,'height':imgo.height});
	} else {
		imgo.onload = function(){
			showPopupWindow('<img src="'+imgo.src+'" alt="" width="'+imgo.width+'" height="'+imgo.height+'"/>', {'title':title,'width':imgo.width,'height':imgo.height});
		}
	}
}

function maximizeImage(obj, postfix) {
	postfix = postfix || '-big.jpg';
	var m = obj.src.match(/^(.+)\.(jpg|jpeg|gif)$/);
	var ititle = obj.getAttribute('alt') || obj.getAttribute('title') || '';
	if (m) {	
		showImage(m[1]+postfix, ititle);
	}
}

function bindMaximizeImage(cssclass, postfix) {
	var imgs = document.getElementsByTagName('img');
	var ptr = 0;
	while (ptr < imgs.length) {
		if (imgs[ptr].className == cssclass ) {
			imgs[ptr].onclick = function() { 
				maximizeImage(this, postfix);
			}
		}
		ptr++;
	}
}

function popupImage(event) {
	postfix = event.target.href || '';
	if(postfix == '') return false;
	var ititle = '';//event.target.tips || event.target.alt || event.target.title || '';
	showImage(postfix, ititle);
	return false;
}
function bindPopupImage(cssclass, postfix) {
	$('.chutterset').click(popupImage);
}

