var TM = new Object();
TM.getClassName = function(container, className, tag)
{
	var elements = container.getElementsByTagName(tag);
	var Re;
	var Res = new Array();
	for (var i=0; i<elements.length; i++)
	{
		if (!elements[i].className)
			continue;
		Re = new RegExp('\\b' + className + '\\b', 'gi');
		if (Re.test(elements[i].className))
			Res[Res.length] = elements[i];
	}
	return Res;
}
TM.Alert = function(msg, autoExec)
{
	if (autoExec)
		return;
	alert(msg);
}

//sowak

TM.SideBar = function(contentId, width, jm, func)
{
	this.Margin = 10;
	this.jm = jm;
	this.content = document.getElementById(contentId);
	if (!this.content)
		return;
	this._wagecont = document.getElementById('bodywage');
	this._wagecont.style.display='none';
	this._wagefrom = document.getElementById('bodywage1');
	this._wageto = document.getElementById('bodywage2');
	this._errorBox = document.getElementById('bodymsgside');
	
	document.getElementById('bodywage1jm').innerHTML = JEDNOSTKA_WAGI
	document.getElementById('bodywage2jm').innerHTML = JEDNOSTKA_WAGI
	
	this.width = (width)?width:400;
	var inputs = this.content.getElementsByTagName('input');
	this.inputs = inputs;
	this.content.style.width = width.toString()+'px';
	this.dot = this.content.getElementsByTagName('div')[1];
	this.dot._func = func;
	this.dot._SideBar = this;
	this.content.dot = this.dot;
	this.content.parent = this;
	this._contentWidth = $(this.content).width();
	this._dotWidth = $(this.dot).width();
	this._dotWidthHalf = Math.round(this._dotWidth / 2);
	this.content.getValue = this.getValue;
	window.sidebar = this;

	document.body.focus();
	document.onselectstart = function () { return false; };
	this.dot.ondragstart = function() { return false; };

	document.onmousemove = function(e)
	{
		window.sidebar.MovingAction(e);
	};
	document.onmouseup = function(e){
		window.sidebar.MovingStop(e)
	};
	$(this.dot).mousedown(function(e){
		window.sidebar.MovingStart();
	});
	
	var table = document.createElement('table');
	var tbody = document.createElement('tbody');
	var tr = document.createElement('tr');
	table.appendChild(tbody);
	table.style.width = this._contentWidth.toString()+'px';
	table.style.textAlign = 'center';
	table.className = 'konfigurator-table';
	tbody.appendChild(tr);
	this.content.appendChild(table);
	var percent = Math.round(100 / inputs.length);
	var td;
	for (var i =0; i<inputs.length; i++)
	{
		td = document.createElement('td');
		td.className = 'konfigurator-row';
		td.style.width = percent.toString()+'%';
		td.innerHTML = inputs[i].value;
		if (this.jm)
			td.innerHTML += ' '+this.jm;
		tr.appendChild(td);
	}
}
TM.SideBar.prototype.MovingStart = function()
{
	this.dot._moving = true;
}
TM.SideBar.prototype.MovingStop = function(e)
{
	this.dot._moving = false;
	this.dot._func();
	var contentWage = this.content.getValue()
	if ((MIN_WAGE <= contentWage) && (contentWage <= MAX_WAGE))
		TMKalkSteep(WAGE_NEXT_STEEP);
	else
		TMKalkSteepCancel(WAGE_NEXT_STEEP);
}
TM.SideBar.prototype.MovingAction = function(e)
{
	if (!this.dot._moving)
		return;
	
	var position = $(this.content).position();
	var offset = $(this.content).offset();
	if (!e && window.event) e = window.event;
	var IE = new RegExp('Internet Explorer$').test(navigator.appName)?true:false;
	if (IE)
		var x = (event.clientX + document.documentElement.scrollLeft) - (offset.left);
	else
		var x = e.pageX - (offset.left);
	
	if (x < (this.Margin + this._dotWidthHalf))
		posX = this.Margin + this._dotWidthHalf;
	else if (x > (this._contentWidth - (this.Margin + this._dotWidthHalf)))
		posX = this._contentWidth - (this.Margin + this._dotWidthHalf);
	else
		posX = Math.round(x);
	
	var curPos = posX - this._dotWidthHalf;
	this.dot.style.marginLeft = curPos.toString()+'px';
	this.dot._pos = posX;
	if (this._wagecont)
	{
		var curVal = this.content.getValue();
		var found = false;
		for (var keyWage in PricesList)
		{
			if ((PricesList[keyWage][0]<curVal) && (curVal<PricesList[keyWage][1]))
			{
				found = true;
				break;
			}
		}
		if (found && (curVal>MIN_WAGE) && (curVal<MAX_WAGE))
		{
			this._wagecont.style.display='';
			var wageFrom = new Number((PricesList[keyWage][0] < MIN_WAGE)?MIN_WAGE:PricesList[keyWage][0]);
			var wageTo = new Number((PricesList[keyWage][1] > MAX_WAGE)?MAX_WAGE:PricesList[keyWage][1]);
			if (isNaN(wageFrom)) wageFrom=0;
			if (isNaN(wageTo)) wageTo=0;
			
			//Wyjatek odjecia 1 dla gramow
			if ((wageTo>10) && ((Math.round(wageTo/10)*10) < wageTo))
				wageTo--;
			
			this._wagefrom.innerHTML = wageFrom.toString();
			this._wageto.innerHTML = wageTo.toString();
			this._errorBox.style.display = 'none';
		}
		else
		{
			this._wagecont.style.display='none';
			if (curVal<=MIN_WAGE)
				this._errorBox.innerHTML = window._konfiguratorMin+' <b>'+MIN_WAGE.toString()+this.jm+'</b>';
			if (curVal>=MAX_WAGE)
				this._errorBox.innerHTML = window._konfiguratorMax+' <b>'+MAX_WAGE.toString()+this.jm+'</b>';
			this._errorBox.style.display = '';
		}
	}
}
TM.SideBar.prototype.getValue = function()
{
	if (!this.parent.dot._pos)
		this.parent.dot._pos=this.parent.Margin;
	var points = this.parent._contentWidth / this.parent.inputs.length;
	var startX = points / 2;
	var endX = ((this.parent.inputs.length - 1) * points) + startX;
	if (this.parent.dot._pos < startX)
	{
		var min = 0;
		var max = new Number(this.parent.inputs[0].value);
		var params = this.parent.dot._pos / startX;
	}
	else if (this.parent.dot._pos > endX)
	{
		var min = new Number(this.parent.inputs[this.parent.inputs.length-1].value);
		var max = min + this.parent.Margin;
		var params = (this.parent.dot._pos - endX) / startX;
	}
	else
	{
		for (var i=0;i<=this.parent.inputs.length;i++)
		{
			if (((i*points) + startX) > this.parent.dot._pos)
			{
				var min = new Number(this.parent.inputs[i-1].value);
				var max = new Number(this.parent.inputs[i].value);
				var params = (this.parent.dot._pos - (((i-1)*points) + startX)) / points;
				break;
			}
		}
	}
	if (params <= 0)
		params = 0;
	if (params >= 1)
		params = 1;
	var res = min + ((max - min) * params);
	return res;
}

//gabaryty

TM.ImagesSlider = function (containerId, func)
{
	var cont = document.getElementById(containerId);
	if (!cont)
		return;
	var inputs = cont.getElementsByTagName('input');
	if (inputs.length!=1)
		return;
	var divs1 = TM.getClassName(cont, 'konfigurator-gabaryt-list', 'div');
	var divs2 = TM.getClassName(cont, 'konfigurator-gabaryt-paczka', 'div');
	var divs = new Array();
	var j;
	for (j=0;j<divs1.length;j++) divs[divs.length] = divs1[j];
	for (j=0;j<divs2.length;j++) divs[divs.length] = divs2[j];
	var image;
	for (var i=0;i<divs.length;i++)
	{
		image = TM.getClassName(divs[i], 'konfigurator-picture', 'div')[0];
		image._className = image.className;
		image._border = divs[i];
		image._border._className = image._border.className;
		image.onclick = TM.ImagesSliderClick;
		image._allImages = divs;
		image._num = i;
		image._func = func;
		image._inputVal = inputs[0];
	}
}
TM.ImagesSliderClick = function()
{
	this._inputVal.value = '';
	for (var i=0;i<this._allImages.length;i++)
	{
		if (i == this._num)
		{
			this._allImages[i].className = this._allImages[i]._className + ' konfigurator-gabaryt-list-over';
			this._inputVal.value = (i+1).toString();
		}
		else
		{
			this._allImages[i].className = this._allImages[i]._className;
		}
	}
	this._func();
	TMKalkSteep(GABARYT_NEXT_STEEP);
}
function TMUpdater(element)
{
	setTimeout(function(){TMListOblicz(true);},150);
}
function TMListener(e, func)
{
	func();
}
function TMPrices(value)
{
	return value.toString();
}
function TMKalkSteepManager()
{
	document.steepManager = new Array();
	var steep1 = jQuery('div.kalkulator_steep1');
	var steep2 = jQuery('div.kalkulator_steep2');
	var steep3 = jQuery('div.kalkulator_steep3');
	var steep4 = jQuery('div.kalkulator_steep4');
	if (steep1.length)
		document.steepManager[document.steepManager.length] = steep1[0];
	if (steep2.length)
		document.steepManager[document.steepManager.length] = steep2[0];
	if (steep3.length)
		document.steepManager[document.steepManager.length] = steep3[0];
	if (steep4.length)
		document.steepManager[document.steepManager.length] = steep4[0];
	for (var i=0;i<document.steepManager.length;i++)
	{
		if (i==0)
			continue;
		document.steepManager[i].style.display='none';
	}
}

function TMKalkSteep(num)
{
	for (var i=num;i>=0;i--)
	{
		if (document.steepManager[i])
		{
			document.steepManager[i].style.display = '';
		}
	}
}

function TMKalkSteepCancel(num)
{
	for (var i=3;i>=num;i--)
	{
		if (document.steepManager[i])
		{
			document.steepManager[i].style.display = 'none';
		}
	}
}
