function Compare(jsId)
{
	this.id = jsId;
	this.init();
	this.box = getE('comparebox');
	
	this.removers = [];
	this.imageAdders = [];
	this.itemAdders = [];
	this.listAdders = [];
	this.clickedCheckboxes = [];
	
	this.checkCount();	
	this.enableCheckBoxes();
}

Compare.prototype.checkCount = function()
{
	var compareCookie = ExtractCookies("CComp" + gCCompnTree);
	/*if(compareCookie!='none' && compareCookie.length>2)
	{
		compareCookie = compareCookie.substr(1,compareCookie.length-2);
		if(compareCookie.split("||").length>2)
		{
			this.disableCheckBoxes();
			//alert(GLS('box_maxcountachievedinfo_js','Bylo dosaženo maximálního počtu porovnávaných produktů'));
		}
		else
		{
			this.enableCheckBoxes();
		}
	}
	else
	{
		this.enableCheckBoxes();
	}	*/
	
	if(compareCookie == 'none' || compareCookie == '')
	{
		this.addItemNothingSelected('compare_nothing_selected_div');
	}
}

Compare.prototype.enableCheckBoxes = function()
{
	this.checkBoxes(true);
}

Compare.prototype.disableCheckBoxes = function()
{
	this.checkBoxes(false);
}

Compare.prototype.checkBoxes = function(enable)
{
	var inpts = document.getElementsByTagName('input');
	for(var i=0;i<inpts.length;i++)
	{
		if(inpts[i].type=='checkbox' && inpts[i].name=='ccompCh')
		{
			if(enable==true)
			{
				inpts[i].disabled = false;
				if(inpts[i].checked==true)
				{
					inpts[i].title = GLS('box_clicktoremove_js','REMOVE');
				}
				else
				{
					inpts[i].title = GLS('box_clicktoadd_js','ADD');
				}
			}
			else
			{	
				if(inpts[i].checked==false)
				{
					inpts[i].title = GLS('box_maxtocompareis3_js','MAX');
					inpts[i].disabled = true;
				}
			}
		}
	}
}

Compare.prototype.init = function()
{
	//
}

Compare.prototype.checkBoxClick = function(el,detail)
{
	if(detail===undefined){detail=false;}
	this.clickedCheckboxes['ch'+el.value] = el; 
	if(el.checked==false)
	{
		el.disabled = true;
		this.remove(el.value,false);
	}
	else
	{
		el.disabled = true;
		this.add(el.value,detail);
	}
}

Compare.prototype.add = function(id,detail)
{
	if(getE('compare_nothing_selected_div'))
	{
		this.remove(getE('compare_nothing_selected_div'),false);
	}
	if(getE('commodityImage_'+id))
	{// jsme v katalogu a bude litat obrazek
		if(this.imageAdders['adder'+id]===undefined)
		{
			this.imageAdders['adder'+id] = new CompareImageAdder(this,id);
		}
	}
	else
	{
		if(this.listAdders['adder'+id]===undefined)
		{
			this.listAdders['adder'+id] = new CompareListAdder(this,id,detail);
		}
	}
	
	this.checkCount();
}

Compare.prototype.remove = function(el,osetritAjCheckbox)
{
	var id;
	if(typeof(el)=='string' || el-el==0)
	{
		id = el;
	}
	else
	{
		if(el.id=='compare_nothing_selected_div')
		{
			id = el.id;
		}
		else
		{
			id = el.id.split('_')[1];
		}
	}
	if(osetritAjCheckbox===undefined){osetritAjCheckbox=true;}
	var objektik;
	if(osetritAjCheckbox)
	{
		if(getE('compare'+id))
		{
			objektik = getE('compare'+id);
			objektik.checked = false;
			objektik.disabled = true;
			this.clickedCheckboxes['ch'+id] = objektik;
		}
		else
		{
			objektik = { id:'compare'+id, checked : false, value: id}; // imitace checkboxu
		}
		CCompChCli(objektik);
	}
	
	if(this.removers['remover'+id]===undefined)
	{
		this.removers['remover'+id] = new CompareRemover(this,id=='compare_nothing_selected_div'?'compare_nothing_selected_div':'box_compare_item_'+id);
	}
	
	this.checkCount();
}

Compare.prototype.removeAll = function()
{
	var idecka = new Array();
	
	for(var i=0;i<this.box.childNodes.length;i++)
	{
		if(this.box.childNodes[i].id && this.box.childNodes[i].id.indexOf('box_compare_item_')>-1)
		{
			idecka.push(this.box.childNodes[i].id.split('_')[3]);
		}
	}

	for(var i=0;i<idecka.length;i++)
	{
		setTimeout("getE('compareRemoveImg_"+idecka[i]+"').onclick()",i*600);
	}
}

Compare.prototype.addItem = function(pk,sHref,sName)
{
	if(!getE('box_compare_item_'+pk))
	{
		if(this.itemAdders['itemAdder'+pk]===undefined)
		{
			this.itemAdders['itemAdder'+pk] = new CompareItemAdder(this,pk,sHref,sName);
		}
	} 
}

Compare.prototype.addItemNothingSelected = function(id)
{
	if(this.itemAdders['itemAdder'+id]===undefined)
	{
		this.itemAdders['itemAdder'+id] = new CompareNothingSelecetedItemAdder(this,id);
	} 
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function CompareNothingSelecetedItemAdder(owner,pk)
{
	this.owner = owner;
	this.pk = pk;
	this.opacity = 0;
	this.opacityStep = 10;
	this.height = 0;
	this.heightStep = 2;
	this.expandTimer = '';
	this.fadeInTimer = '';
	
	var div = getCE('div');
	div.id = pk;
	div.className = 'box_compare_item';
	if(Br.IE)
	{
		div.style.lineHeight='1px';
	}

	var span = getCE('span');
	var txt = getTN('Není vybráno zboží');
	span.appendChild(txt);
	div.appendChild(span);
	
	this.itemDiv = div;
	this.spanek = span;
	
	var box = this.owner.box;
	
	var divKvuliMereniVysky = getCE('div');
	divKvuliMereniVysky.style.overflow='hidden';
	divKvuliMereniVysky.style.height='1px';
	divKvuliMereniVysky.style.width = '100%';
	
	box.appendChild(divKvuliMereniVysky);
	divKvuliMereniVysky.appendChild(div);

	this.originalHeight = div.offsetHeight;
	div.style.height = '0px';
	if(box.firstChild)
	{
		box.insertBefore(div,box.firstChild);
	}
	else
	{
		box.appendChild(div);
	}
	
	box.removeChild(divKvuliMereniVysky);
	
	if(Br.IE)
	{
		div.style.filter = "alpha(opacity=0)";
	}
	else
	{
		div.style.opacity = 0;
	}
	if(Br.IE)
	{
		div.removeChild(span);
	}
	this.expand();
}

CompareNothingSelecetedItemAdder.prototype.fadeIn = function()
{
	if(this.fadeInTimer==''){this.fadeInTimer = setInterval("porovnavac.itemAdders['itemAdder"+this.pk+"'].fadeIn();",10);}
	
	this.opacity += this.opacityStep;
	
	if(this.opacity>100)
	{
		if(Br.IE)
		{
			this.itemDiv.style.filter = null;
		}
		else
		{
			this.itemDiv.style.opacity = null;
		}
		clearInterval(this.fadeInTimer);
		if(this.owner.itemAdders['itemAdder'+this.pk])
		{
			delete this.owner.itemAdders['itemAdder'+this.pk];
		}
	}
	else
	{
		if(Br.IE)
		{
			this.itemDiv.style.filter = "alpha(opacity="+this.opacity+")";
		}
		else
		{
			this.itemDiv.style.opacity = (this.opacity/100);
		}
	}
}

CompareNothingSelecetedItemAdder.prototype.expand = function()
{
	if(this.expandTimer==''){this.expandTimer = setInterval("porovnavac.itemAdders['itemAdder"+this.pk+"'].expand();",10);}
	
	this.height+=this.heightStep;
	if (this.height>this.originalHeight)
	{
		if(Br.IE)
		{
			this.itemDiv.appendChild(this.spanek);
			this.itemDiv.style.lineHeight = null;
		}
		this.itemDiv.style.height = null;
		clearInterval(this.expandTimer);
		this.fadeIn();
	}
	else
	{
		this.itemDiv.style.height = this.height + 'px';
	}
	
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function CompareItemAdder(owner,pk,sHref,sName)
{
	this.owner = owner;
	this.pk = pk;
	this.opacity = 0;
	this.opacityStep = 10;
	this.height = 0;
	this.heightStep = 2;
	this.expandTimer = '';
	this.fadeInTimer = '';
	
	var div = getCE('div');
	div.id = 'box_compare_item_'+pk;
	div.className = 'box_compare_item';
	if(Br.IE)
	{
		div.style.lineHeight='1px';
	}
	
	
	
	var a = getCE('a');
	a.href = sHref;
	a.title = sName;
	var txt = getTN(sName);
	a.appendChild(txt);
	div.appendChild(a);
	
	var img = getCE('img');
	img.src='/img/1/BTko.gif';
	img.id = 'compareRemoveImg_'+pk;
	img.onclick = function(){porovnavac.remove(this)};
	
	div.appendChild(img);
	
	this.itemDiv = div;
	this.acko = a;
	this.delImg = img;
	
	var box = this.owner.box;
	
	if(Br.IE)
	{
		div.style.filter = "alpha(opacity=0)";
	}
	else
	{
		div.style.opacity = 0;
	}
	
	var divKvuliMereniVysky = getCE('div');
	divKvuliMereniVysky.style.overflow='hidden';
	divKvuliMereniVysky.style.height='1px';
	divKvuliMereniVysky.style.width = '100%';
	
	box.appendChild(divKvuliMereniVysky);
	divKvuliMereniVysky.appendChild(div);

	this.originalHeight = div.offsetHeight + (Br.IE?-3:0);
	div.style.height = '0px';
	if(box.firstChild)
	{
		box.insertBefore(div,box.firstChild);
	}
	else
	{
		box.appendChild(div);
	}
	
	box.removeChild(divKvuliMereniVysky);
	
	
	if(Br.IE)
	{
		div.removeChild(a);
		div.removeChild(img);
	}
	this.expand();
}

CompareItemAdder.prototype.fadeIn = function()
{
	if(this.fadeInTimer==''){this.fadeInTimer = setInterval("porovnavac.itemAdders['itemAdder"+this.pk+"'].fadeIn();",10);}
	
	this.opacity += this.opacityStep;
	
	if(this.opacity>100)
	{
		if(Br.IE)
		{
			this.itemDiv.style.filter = null;
		}
		else
		{
			this.itemDiv.style.opacity = null;
		}
		clearInterval(this.fadeInTimer);
		if(this.owner.clickedCheckboxes['ch'+this.pk])
		{
			this.owner.clickedCheckboxes['ch'+this.pk].disabled = false;
			delete this.owner.clickedCheckboxes['ch'+this.pk];
		}
		if(this.owner.itemAdders['itemAdder'+this.pk])
		{
			delete this.owner.itemAdders['itemAdder'+this.pk];
		}
	}
	else
	{
		if(Br.IE)
		{
			this.itemDiv.style.filter = "alpha(opacity="+this.opacity+")";
		}
		else
		{
			this.itemDiv.style.opacity = (this.opacity/100);
		}
	}
}

CompareItemAdder.prototype.expand = function()
{
	if(this.expandTimer==''){this.expandTimer = setInterval("porovnavac.itemAdders['itemAdder"+this.pk+"'].expand();",10);}
	
	this.height+=this.heightStep;
	if (this.height>this.originalHeight)
	{
		if(Br.IE)
		{
			this.itemDiv.appendChild(this.acko);
			this.itemDiv.appendChild(this.delImg);
			this.itemDiv.style.lineHeight = null;
		}
		this.itemDiv.style.height = null;
		clearInterval(this.expandTimer);
		this.fadeIn();
	}
	else
	{
		this.itemDiv.style.height = this.height + 'px';
	}
	
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function CompareListAdder (owner,id,detail)
{
	this.detail = detail;
	this.owner = owner;
	this.pk = id;
	this.src = getE('compare'+id);
	this.flyTimer = '';
	this.fadeOutTimer='';
	this.opacity = 100;
	this.opacityStep = 10;
	
	this.fading=false;
	
	this.mover = new Mover(this);
	this.mover.init(this.src,this.owner.box);
	
	this.fly();
}

CompareListAdder.prototype.fly = function()
{
	if(this.flyTimer==''){this.flyTimer = setInterval("porovnavac.listAdders['adder"+this.pk+"'].fly();",10);}
	
	this.mover.fly();
	
	if(this.mover.stop=='stop')
	{
		clearInterval(this.flyTimer);
	}
}

CompareListAdder.prototype.fadeOut = function()
{
	if(this.fadeOutTimer==''){this.fadeOutTimer = setInterval("porovnavac.listAdders['adder"+this.pk+"'].fadeOut();",10);}
	
	this.opacity-=this.opacityStep;
	
	if(this.opacity<0){this.opacity=0;}
	
	if(Br.IE)
	{
		this.mover.div.style.filter = "alpha(opacity="+this.opacity+")";
	}
	else
	{
		this.mover.div.style.opacity = (this.opacity/100);
	}
	
	if(this.opacity==0)
	{
		clearInterval(this.fadeOutTimer);
		if(this.detail)
		{
			
			var href = location;
			var text = getE('commodityNameH1').innerHTML;
		}
		else
		{
			var a = this.mover.src.parentNode.parentNode.getElementsByTagName('a')[0];
			if (a) {
				var href = a.getAttribute('href');
				var text = a.innerHTML;
			} else {
				var href = '#';
				var text = sTextFCB; // value prepared in detail
			}
		}
		
		this.owner.addItem(this.pk, href,text);
		this.mover.div.parentNode.removeChild(this.mover.div);
		if(this.owner.listAdders["adder"+this.pk])
		{
			delete this.owner.listAdders["adder"+this.pk];
		}
	}	
	
}



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function CompareImageAdder (owner,id)
{
	this.owner = owner;
	this.pk = id;
	if(!id){id=0}
	this.src = getE('commodityImage_'+id);
	this.flyTimer = '';
	this.fadeOutTimer='';
	this.opacity = 100;
	this.opacityStep = 10;
	
	this.fading = false;
	
	this.mover = new Mover(this);
	this.mover.init(this.src,this.owner.box);
	
	this.fly();
}

CompareImageAdder.prototype.fly = function()
{
	if(this.flyTimer==''){this.flyTimer = setInterval("porovnavac.imageAdders['adder"+this.pk+"'].fly();",10);}
	
	this.mover.fly();
	
	if(this.mover.stop=='stop')
	{
		clearInterval(this.flyTimer);
	}
}

CompareImageAdder.prototype.fadeOut = function()
{
	if(this.fadeOutTimer==''){this.fadeOutTimer = setInterval("porovnavac.imageAdders['adder"+this.pk+"'].fadeOut();",10);}
	
	this.opacity-=this.opacityStep;
	
	if(this.opacity<0){this.opacity=0;}
	
	if(Br.IE)
	{
		this.mover.div.style.filter = "alpha(opacity="+this.opacity+")";
	}
	else
	{
		this.mover.div.style.opacity = (this.opacity/100);
	}
	
	if(this.opacity==0)
	{
		clearInterval(this.fadeOutTimer);
		this.owner.addItem(this.pk, this.mover.src.parentNode.getAttribute('href'),this.mover.src.getAttribute('title'));
		this.mover.div.parentNode.removeChild(this.mover.div);
		if(this.owner.imageAdders["adder"+this.pk])
		{
			delete this.owner.imageAdders["adder"+this.pk];
		}
	}	
	
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function CompareRemover(owner,id)
{
	this.owner = owner;
	this.id = id;
	this.pk = id.split('_')[3];
	this.divToRemove = getE(id);
	this.fadeOutTimer = '';
	this.collapseTimer='';
	this.opacity = 100;
	this.opacityStep = 10;
	
	this.heightStep = 2;
	
	this.divToRemoveHeight = this.divToRemove.offsetHeight;
	this.divToRemoveHeight += Br.IE?-3:0;
		
	this.fadeOutItem();
}



CompareRemover.prototype.fadeOutItem = function()
{
	this.pk = (this.id=='compare_nothing_selected_div'?this.id:this.id.split('_')[3]);
	if(this.fadeOutTimer==''){this.fadeOutTimer = setInterval("porovnavac.removers['remover"+this.pk+"'].fadeOutItem('" + this.id + "');",10);}
	
	this.opacity-=this.opacityStep;
	
	if(this.opacity<0){this.opacity=0;}
	
	
	var div = getE(this.id);
	if(Br.IE)
	{
		div.style.filter = "alpha(opacity="+this.opacity+")";
	}
	else
	{
		div.style.opacity = (this.opacity/100);
	}
	
	if(this.opacity==0)
	{
		clearInterval(this.fadeOutTimer);
		if(Br.IE)
		{
			div.style.height = this.divToRemoveHeight+'px';
			while(div.firstChild)
			{
				div.removeChild(div.firstChild);
			}
			div.style.lineHeight = '1px';
		}
		this.collapseDiv();
	}	
	
}

CompareRemover.prototype.collapseDiv = function()
{
	if(this.collapseTimer==''){this.collapseTimer = setInterval("porovnavac.removers['remover"+this.pk+"'].collapseDiv('" + this.id + "');",10);}
	this.divToRemoveHeight-=this.heightStep;
	if(this.divToRemoveHeight<0){this.divToRemoveHeight=0}
	this.divToRemove.style.height = this.divToRemoveHeight+'px';
	
	if(this.divToRemoveHeight==0)
	{
		this.divToRemove.parentNode.removeChild(this.divToRemove);
		if(this.owner.clickedCheckboxes['ch'+this.pk])
		{
			this.owner.clickedCheckboxes['ch'+this.pk].disabled=false;
			delete this.owner.clickedCheckboxes['ch'+this.pk];
		}
		clearInterval(this.collapseTimer);
		if(this.owner.removers["remover"+this.pk])
		{
			delete this.owner.removers["remover"+this.pk];
		}
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//mover
function Mover(owner)
	{
		this.owner = owner;
		this.interval = '';
	    this.xAcc = 0;
	    this.yAcc = 0;
	    this.xTargetAcc = 0;
	    this.yTargetAdd = 0;
	    this.xAccMax = 30;
	    this.yAccMax = 30;
	    this.yAccIncrement=0;
	    this.xAccIncrement=0;
	    this.xAccIncrementalStep=0.1;
	    this.yAccIncrementalStep=0.1;
	    this.intervalMilliseconds = 30;
	    
	    this.canBeStartingXVectorRevers = false;
		this.canBeStartingYVectorRevers = false;
	}
	

	Mover.prototype.init = function(src, target)
	{
	    this.src = src;
	    this.target = target;
	    this.srcCoords = poziceElementu(this.src);
		this.targetCoords = poziceElementu(this.target);
	    this.div = src.cloneNode(true);
	    this.div.style.position = 'absolute';
	    this.div.top = this.srcCoords[0] + 'px';
	    this.div.left = this.srcCoords[1] + 'px';
		document.body.appendChild(this.div);


		this.curX = this.srcCoords[0];
		this.curY = this.srcCoords[1];
		
		this.stop = '';
	}

	

	Mover.prototype.fly = function()
	{
	    var rozdilX = Math.abs(this.curX-this.targetCoords[0]);
	    var rozdilY = Math.abs(this.curY-this.targetCoords[1]);

	    var kolikNaZabrzdeniX=0;
	    for(var i=0;i<this.xAcc;i++)
	    {
	        kolikNaZabrzdeniX += i;
	    }

	    var kolikNaZabrzdeniY=0;
	    for(var i=0;i<this.yAcc;i++)
	    {
	        kolikNaZabrzdeniY += i;
	    }
		this.musimBrzditX = (kolikNaZabrzdeniX>rozdilX);
		this.musimBrzditY = (kolikNaZabrzdeniY>rozdilY);

		if(this.musimBrzditX)
		{
			this.xAcc -= this.xAccIncrement;
			this.xAccIncrement-=this.xAccIncrementalStep;
		}
		else
		{
		    if(this.xAcc<this.xAccMax)
			{
				this.xAcc+=this.xAccIncrement;
				this.xAccIncrement+=this.xAccIncrementalStep;
			}
		}
	    if(this.musimBrzditY)
		{
			this.yAcc-=this.yAccIncrement;
			this.yAccIncrement-=this.yAccIncrementalStep;
		}
		else
		{
		    if(this.yAcc<this.yAccMax)
			{
				this.yAcc+=this.yAccIncrement;
				this.yAccIncrement+=this.yAccIncrementalStep;
			}
		}
		
		var primaVzdalenost = Math.sqrt(rozdilX*rozdilX + rozdilY*rozdilY);
		if(this.owner.fading==false && primaVzdalenost<40)
		{
			this.owner.fading = true;
			this.owner.fadeOut();
		}

		if(this.curX-this.targetCoords[0]>0)
		{
		    this.div.style.left = Math.round(this.curX - this.xAcc) + 'px';
		    this.curX = Math.round(this.curX - this.xAcc);
		}
		if(this.curX-this.targetCoords[0]<0)
		{
		    this.div.style.left = Math.round(this.curX + this.xAcc) + 'px';
		    this.curX = Math.round(this.curX + this.xAcc);
		}

		if(this.curY-this.targetCoords[1]>0)
		{
		    this.div.style.top = Math.round(this.curY - this.yAcc) + 'px';
		    this.curY = Math.round(this.curY - this.yAcc);
		}
		if(this.curY-this.targetCoords[1]<0)
		{
		    this.div.style.top = Math.round(this.curY + this.yAcc) + 'px';
		    this.curY = Math.round(this.curY + this.yAcc);
		}
		
		
		if(!(this.curY-this.targetCoords[1]!=0 || this.curX-this.targetCoords[0]!=0))
		{
			this.stop = 'stop';
		}
	}


//funkce skryje / zobrazi radky v tabulce porovnavanych produktu, vekterych maji parametry stejnou hodnotu
function CompareShowHideParams()
{
	var table = getE('ParamsTable');
	for(var i=0;i<table.rows.length;i++)
	{
		if(table.rows[i].getAttribute("same")==1)
		{
			if(table.rows[i].style.display=='none')
			{
				table.rows[i].style.display='';
			}
			else
			{
				table.rows[i].style.display='none';
			}
		}
	}
}

//funkce odstraní položku z porovnávání
function CompareRemoveItem(id)
{
var table = getE('ParamsTable');
for (i=0;i<table.rows.length;i++)
  {
  var row = table.rows[i];
  for(j=0;j<row.cells.length;j++)
  if (row.cells[j].id && row.cells[j].id.indexOf('_' + id)>-1)
    {
    row.removeChild(row.cells[j]);
    }
  }
}
