var imageScroller = {
	fnc_click: null,
	fnc_mm: null,
	scroller: null,
	ul: null,
	bigw: 700,
	bigh: 500,

	init: function (id)
	{
		var t = this;
		this.scroller = $(id);
		this.ul = this.scroller.find('ul');

		this.fnc_click = function(e) { t.selectImage(this) };
		this.fnc_mm = function(e) { t.mouseMove(e) };

		var as = $(this.scroller).find('a');

		this.ul.css({'width': (as.length*114)+'px'});
		this.scroller.bind('mousemove', this.fnc_mm);

		as.each(function (i, val) {
			$(val).bind('click', t.fnc_click);
		});

		var image = parseInt(document.location.href.replace(/.*#/, ''));
		if (image)
		{
			t.selectImage($("#image"+image));
		} else {
			t.selectImage(this.ul.find('a')[0]);
		}
	},

	selectImage: function (e)
	{
		this.ul.find('img').removeClass('active');

		var e = $(e).children('img')[0];
		if (!e) return false;
		$(e).addClass('active');
		var s = $(e).attr('src');
		s = s.replace(/(_\d{1,4}x\d{1,4})(\.jpe{0,1}g$)/i, "_"+this.bigw+"x"+this.bigh+"$2");
		$("#centralImage").attr('src', s);

		return false;
	},

	mouseMove: function (e)
	{
		var w = this.scroller.width();
		var p = this.scroller.offset();
		var uw = this.ul.width();

		if (uw < w) return;

		p = (e.pageX - p.left)/w;
		p = Math.floor((uw-35+200-w)*p)-100;

		clearTimeout(this.ul.tO);
		slider.to(this.ul, {"left": -p});
	}
}

var slider = {
	to: function (el, pars, fnc_end)
	{
		var a = {};
		var p = 0;
		var i = 0;

		$.each(pars, function (n, v) {
			p = parseInt(el.css(n));
			if (p != v)
			{
				a[n] = new Array(v, p);
				i++;
			}
		});

		if (i > 0)
		{
			el.sliderPars = a;
			el.fnc_end = fnc_end;
			this.proc(el);
		}
	},

	proc: function (el)
	{
		var k = false;
		var p1 = 0;
		var p2 = 0;
		var c = new Array();
		var i = 0;

		$.each(el.sliderPars, function (n, v) {
			p1 = parseInt(el.css(n));
			p2 = v[0];

			if (p1 != p2)
			{
				p1 = v[1];
				p1 = p1 + ((p2-p1) / 10);
				el.css(n, Math.round(p1) +'px');
				el.sliderPars[n][1] = p1;
				k = true;
			}
			i++;

		});

		if (k)
		{
			clearTimeout(el.tO);
			el.tO = setTimeout(function() {
				slider.proc(el);
			}, 10);
		} else {
			clearTimeout(el.tO);
			if (el.fnc_end)
			{
				el.fnc_end(el);
			}
		}
	}
}

var searchPanel = {
	fnc_mi: null,
	fnc_mo: null,
	fnc_sp: null,
	fnc_s: null,
	panel: null,

	init: function()
	{
		var t = this;
		this.fnc_mi = function(e) { t.btnMouseOver(this) };
		this.fnc_mo = function(e) { t.btnMouseOut(this) };

		this.fnc_sp = function(e) { t.searchParam() };
		this.fnc_s = function(e) { t.search() };

		this.panel = $(".PanelSearch");

		this.initButton("#pbtn", "/img/s_btn_h.png", 0);
		this.initButton("#spbtn", "/img/sp_btn_h.png", 1);

		$('.Panel .s2 .likea').bind('click', function () { t.showPanel(1); });
		$('.PanelSearch .Inner .right .likea').bind('click', function () { t.showPanel(0); });
		$('#order_by').bind('change', function () { t.orderBy(); });

		var ar;
		if (ar = $(".ArrowUp")) ar.bind('click', function () { t.changeOrder(1); });
		if (ar = $(".ArrowDown")) ar.bind('click', function () { t.changeOrder(0); });
	},

	initButton: function(img, src, nfnc)
	{
		img = $(img);

		img.attr('src1', img.attr('src'));
		img.attr('src2', src);

		var tmpimg = new Image();
		$(tmpimg).attr('src', src);

		img.bind('mouseover', this.fnc_mi);
		img.bind('mouseout', this.fnc_mo);

		switch (nfnc)
		{
			case 0:
				img.bind('click', this.fnc_s);
				break;

			case 1:
				img.bind('click', this.fnc_sp);
				break;
		}
	},

	btnMouseOver: function(img)
	{
		$(img).attr('src', $(img).attr('src2'));
	},

	btnMouseOut: function(img)
	{
		$(img).attr('src', $(img).attr('src1'));
	},

	orderBy: function (dir)
	{
		var v = $('#order_by').val();
		var u = this.splitURL();
		var str = "";
		if (v != 0)
		{
			str += "?orderby="+v;
			if (dir) str += "&dir=desc";
		}

		var pars = u[2].replace(/.*\?/, '').split(/[\=\&]/);
		var l = pars.length;
		for (var i = 0; i < l; i += 2)
		{
			if (pars[i].match(/fl\d{1,2}/))
			{
				str += (str)?"&":"?";
				str += pars[i]+"="+pars[i+1];
			}
		}
		document.location.href = u[0]+u[1]+".html"+str;
	},

	changeOrder: function (n)
	{
		this.orderBy(n);
	},

	searchParam: function ()
	{
		var str = "";
		var v;
		this.panel.find("select").each(function (i, v) {
			v = $(v);
			if (v.val() != '0')
			{
				if (str) str += "&";
				str += v.attr('id')+"="+encodeURI(v.val());
			}
		});

		var sp = this.splitURL();
		document.location.href = sp[0]+sp[1]+".html?"+str;
	},

	search: function ()
	{
		var u = this.splitURL();
		document.location.href = "/search.html?in="+parseInt(u[1])+"&q="+encodeURI($("#psearch").val());
	},

	showPanel: function (n)
	{
		if (n == 1)
		{
			var panel = $(".Panel");
			var p = panel.offset();
			this.panel.css({
				left: (p.left+panel.width()-330 + ((jQuery.browser['mozilla'])?1:0))+'px',
				top: (p.top+3)+'px'
			});
			this.panel.show();

			$("#SearchParams").text('Загрузка параметров...').load(
				"/catalog-ajax.html?cat="+parseInt(this.splitURL()[1])
			);
		} else {
			this.panel.hide();
		}
	},

	splitURL: function ()
	{
		return document.location.href.replace(/(.*catalog\/.*?\/)(\d+)(.*)/, "$1|$2|$3").split("|");
	}
}

var formChecker  = {
	formObj: '',
	clCorr: 'edit edit_correct',
	clWrong: 'edit edit_wrong',

	setForm: function (f)
	{
		if (typeof f != "object") f = document.getElementById(f)
		this.formObj = f;
	},

	add: function (fieldName, rule)
	{
		var t = this;
		var o = this.formObj[fieldName];
		o.fillRule = rule;
		addEvent(o, 'change', function (e) {t.checkField(o);}, false);
		addEvent(o, 'keyup', function (e) {t.checkField(o);}, false);
	},

	check: function (f)
	{
		if (!f)
		{
			f = this.formObj;
			var l = f.length;
			for (var i = 0; i < l; i++)
			{
				if ((!f[i].fillRule) && (f[i].name.toString().match(/_$/)))
				{
					this.add(f[i].name, '.+');
				}
			}
			return false;
		}

		var l = f.length;
		var r = true;
		for (var i = 0; i < l; i++)
		{
			if (f[i].fillRule)
			{
				if (!this.checkField(f[i]))
				{
					r = false;
				}
			}
		}

		if (!r) alert("Заполните, пожалуйста, все необходимые поля!");

		return r;
	},

	checkField: function (el)
	{
		if (el.value.match(el.fillRule))
		{
			el.className = this.clCorr;
			return true;
		} else {
			el.className = this.clWrong;
		}

		return false;
	}
}

function checkForm(a)
{
	l = a.length;
	r = true;
	for (i = 0; i < l; i++)
	{
		n = a[i].name.toString().substr(a[i].name.toString().length-1, 1);
		if (n == "_")
		{
			if (a[i].value == "")
			{
				a[i].style.backgroundColor = "#552222";
				r = false;
			} else {
				a[i].style.backgroundColor = "";
			}
		}
	}

	if (!r) alert("Заполните, пожалуйста, все необходимые поля!");

	return r;
}

function addEvent(elm, evType, fn, useCapture)
{
	if (elm.addEventListener)
	{
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	} else {
		elm['on' + evType] = fn;
	}
}

function validateImageReload(im)
{
	var params = "";

	var src = im.src.split('?');
	if (src[1])
	{
		var tmp = src[1].split(/0\.\d/);
		tmp = tmp[0].replace(/^(.*)(\&)$/, '$1');
		params = tmp;
	}
	src = src[0]+'?'+params+'&'+Math.random();
	im.src = src;
}


