/////////////////////////////////////////////////////////////
// cookie functions
/////////////////////////////////////////////////////////////
function setCookie(name, value, days)
{
	if (days)
  {
		 var date = new Date();
		 date.setTime(date.getTime()+(days*86400000));//24*60*60*1000));
		 var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function getCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	setCookie(name,"",-1);
}

//////////////////////////

function testBrowserDOM()
{
  if (document.getElementById && document.createElement)
  {
     return true;
  }
  else 
  {
     return false;
  }
}

/**
 * Spocita radky v sekci tbody tabulky zadane pomoci id
 */
function countTableRows(id)
{
   var i = 0;
   var tbody = document.getElementById(id).tBodies[0];
   for (var row = tbody.rows[i]; row != null; row = tbody.rows[++i]) ;
   return i;
}

function checkRowsCount(id,msg)
{
   if (countTableRows(id) <= 1)
   {
      alert (msg);
      return false;
   }
   else return true;
}

function getPosition(obj)
{
	 var curleft = curtop = 0;
	 if (obj.offsetParent)
   {
	  	curleft = obj.offsetLeft;
		  curtop = obj.offsetTop;
		  while (obj = obj.offsetParent)
      {
		  	curleft += obj.offsetLeft;
		 	  curtop += obj.offsetTop;
		  }
	 }
	 return [curleft,curtop];
}

// pole objektu ro zvyraznene elementy 
var highlighted_objects = new Array();

/**
 * Funkce se cyklicky spousti a kontroluje, jestli nejsou zvyraznene nejake 
 * elementy. Pokud ano, zkontroluje, jestli se uz nemaji vypnout.. Pokud ano, 
 * vyjme elementy z dokumentu a v pripade, ze jsou stale nejake elementy 
 * zvyrazneny, naplanuje se znovu 
 */  
function checkHighlightTime()
{
   if (highlighted_objects.length >0 )
   {// jsou nejake zvyraznene prvky
      curTime = (new Date()).getTime();
      for (var i = 0; i<highlighted_objects.length;i++)
      {// kontrola casu
         var obj = highlighted_objects[i];
         if (obj.duration < curTime)
         {// doba vyprsela
            obj.highlighted.parentNode.removeChild(obj.highlighted);
            highlighted_objects.splice(i,1);
         }
      }
      // naplanujeme se znovu
      if (highlighted_objects.length >0) setTimeout("checkHighlightTime()",50);
   }
}

/**
 * Funkce zvyrazni zadany prvek v dokumentu 
 * Vytvori novy child element elementu body, nastavi mu patricnou tridu 
 * a presune prvek nad zadany element v dokumentu 
 * 
 * @param id id zvyraznovaneho elementu  
 * @return vraci ukazatel na nove vytvoreny element 
 */ 
function highlightItem(id)
{
   var elem = document.getElementById(id);

   // novy DIV, ktery bude tvorit zvyrazneni
   var newElem = document.createElement('div');
   newElem.className = 'highlight';

   
   var body = document.getElementsByTagName('body');
   // pridame DIV jako decko body
   body[0].appendChild(newElem);
   var pos = getPosition(elem);
   
   // presuneme ho na pozadovane misto
   newElem.style.left = (pos[0] - 3)+'px';
   newElem.style.top = (pos[1] - 3)+'px';
   newElem.style.width = elem.offsetWidth+'px';
   newElem.style.height = elem.offsetHeight+'px';   
   
   //alert(newElem.style.left + ' '+newElem.style.top+' w'+newElem.style.width +' h'+newElem.style.height);  
   return newElem;
}

/**
 * Konstruktor objektu popisujiciho zvyrazneny alement
 *
 *
 */   
function Highlighted(elementId, duration)
{
   this.elementId = elementId; // ID zvyraznovaneho elementu
   this.duration = (new Date()).getTime() + duration; // cas, vyprsi doba zvyrazneni
   this.highlighted = highlightItem(this.elementId); // ptr na nove vytvoreny DIV
   highlighted_objects.push(this); // strcime do fronty objektu
   checkHighlightTime(); // spustime kontrolu casu
}

/**
 * Prida do compareboxu zbozi ke srovnani
 * 
 * @param ID id zbozi urceneho ke srovnani  
 */ 
function addItem2Compare(ID, href, name, type)
{
   var typZbozi = getCookie('comparebox-typ');
   
   if (countTableRows('compare-table')>=1 && typZbozi)
   {// nove pridane zbozi musi mit stejny typ
      if (typZbozi != type)
      {
         alert('Porovnání je možné pouze u zboží stejného typu');
         return;
      }
   }
   else
   {// prvni zbozi k porovnani => nastavime typ
      setCookie('comparebox-typ', type, 0);
   }

   if (!testBrowserDOM())
   {
      alert('Váš prohlížeč nepodporuje DOM...');
      return;
   }
      
   if (document.getElementById('compare_'+ID) != null)
   {// zbozi uz je v porovnani
      new Highlighted('comparebox', 2000);
      return;
   }
 
   // neni uz zbozi schovane?
   if (ids = getCookie('comparebox-hidden'))
   {
      ids_a = ids.split('X');
      for (i = 0; i < ids_a.length; i++)
      {
         if (ids_a[i] == ID)
         {// je tam...
            return;
         }
      }
   }
 
   var box = document.getElementById('comparebox');
   // nastavime viditelnost compareboxu
   box.style.display = 'block';

   // zjistime class nejhornejsiho radku
   var tbody = document.getElementById('compare-table').tBodies[0];
   var rowClass = 'odd';
   var rowsCount = countTableRows('compare-table');
   if (rowsCount > 0) rowsCount--;
   
   if (tbody.rows[rowsCount] != null)
   {// nastavime opacnou hodnotu
      if (tbody.rows[rowsCount].className == 'odd') rowClass = 'even';
   }
  
   // vlozime novy radek
   var newTr = document.getElementById('compare-table').insertRow(countTableRows('compare-table'));//(0);
   newTr.setAttribute('id','compare_'+ID);
   newTr.className = rowClass;// + ' highlight';//setAttribute('class',rowClass);
   
   // input hidden pro idecka
   //var newInput = document.createElement('input'); 
   //newInput.setAttribute('type','hidden');
   //newInput.setAttribute('name','compare['+ID+']');
   //newInput.setAttribute('value',ID);
   
   // odkaz na mobil
   var newName = document.createTextNode(name); 
   var newLink = document.createElement('a');
   newLink.setAttribute('href',href);
   newLink.appendChild(newName);
   
   // nova cell -> odkaz na mobil
   var newTd = newTr.insertCell(0);
   newTd.className = 'zbozi-link';//setAttribute('class','zbozi-link');
   newTd.appendChild(newLink);   
   //newTd.appendChild(newInput);  

   var newRemoveLink = document.createElement('a');
   newRemoveLink.setAttribute('href','javascript:removeComparedItem('+ID+');');
   // obrazek vyjmuti prvku
   var newRemoveImg = document.createElement('img');
   newRemoveImg.setAttribute('alt','Odebrat');
   //newRemoveImg.setAttribute('style','margin: 0;padding: 0px;');   
   newRemoveImg.setAttribute('src','/picts/ico-odebrat.png');   
   newRemoveLink.appendChild(newRemoveImg);
   
   // nova cell -> odkaz na vyjmuti porovnavaneho zbozi
   var newTd2 = newTr.insertCell(1);
   newTd2.className = 'remove-link';
   newTd2.appendChild(newRemoveLink);
   
   new Highlighted('compare_blok', 2000);
   
   // nastavime cookie
   var value = getCookie('comparebox');
   if (value != null && value != '')
   {
      value = value + 'X' + ID;
   }
   else
   {
      value = ID;
   }
   setCookie('comparebox',value,0);
}

/** 
 * Vyjme urcene zbozi z compareboxu a srovnani
 * 
 * @param ID id zbozi urceneho ke srovnani  
 */ 
function removeComparedItem(ID)
{
   if (document.getElementById('compare_'+ID) == null)
   {
      return;
   }

   if (!testBrowserDOM())
   {
      alert('Váš prohlížeč nepodporuje DOM...');
      return;
   }

   var removed = document.getElementById('compare_'+ID);

   // zjistime class mazaneho radku
   var tbody = document.getElementById('compare-table').tBodies[0];
   var rowIndex = removed.rowIndex;
   var rowClass = removed.className;
   
   // zmenime classy radku pod mazanym
   for (var row = tbody.rows[++rowIndex]; row != null; row = tbody.rows[++rowIndex])
   {
      row.className = rowClass;
      rowClass = (rowClass == 'even') ? 'odd' : 'even'; 
   }

   // znicit...
   removed.parentNode.removeChild(removed);
   
   // znicime ID v kukine
   if (value = getCookie('comparebox'))
   {
      values_a = value.split('X');
      value_new = '';
      for (i = 0; i < values_a.length; i++)
      {// zase to narveme zpatny do kukiny
         if (values_a[i] != ID)
         {
            if (value_new != '') value_new += 'X';
            value_new += values_a[i];
         }
      }
      
      setCookie('comparebox',value_new,0);
      
      if (value_new == '')
      {// kukina je prazdna -> zmizime comparebox
         document.getElementById('comparebox').style.display = 'none';
      }
   }
   
   if (countTableRows('compare-table')==0)
   {// nic tam neni => znicime typ porovnavaneho zbozoi
      eraseCookie('comparebox-typ');
   }

}


function _switchComparedItems(direction, ID)
{
   if (value = getCookie('comparebox'))
   {
      values_a = value.split('X');
      
      for (i = 0; i < values_a.length; i++)
      {
         if (values_a[i] == ID)
         {// nasli sme switchovane id
            if (direction == 'left')
            {
               values_a.splice(i, 1);
               values_a.splice(i-1,0,ID);
            }
            else
            {// dir je right
               values_a.splice(i, 1);
               values_a.splice(i+1,0,ID);
            }
            break;
         }
      }
      setCookie('comparebox',values_a.join('X'),0);
      window.location.reload();
    }
}

function _removeComparedItem(ID, reload)
{ 
   if (value = getCookie('comparebox'))
   {
      values_a = value.split('X');
      for (i = 0; i < values_a.length; i++)
      {
         if (values_a[i] == ID)
         {// nasel sem id na vymazani
            values_a.splice(i,1);
            break;
         }
      }
      
      setCookie('comparebox',values_a.join('X'),0);
      if (reload) window.location.reload();
   }
}

function _hideComparedItem(ID)
{
   _removeComparedItem(ID,false);
   if (ids = getCookie('comparebox-hidden'))
   {
      ids_a = ids.split('X');
      ids_a.push(ID);
   }
   else
   {
      ids_a = new Array(1);
      ids_a[0] = ID;
   }
   setCookie('comparebox-hidden',ids_a.join('X'),0);
   window.location.reload();
}

function _displayHiddenItem(ID)
{
   // pridame zbozi do standardni viditelne kukiny
   if (ids = getCookie('comparebox'))
   {
      ids_a = ids.split('X');
      // test, jestli tam uz neni...
      var je_tam = false;
      for (hidden in ids_a) if (hidden == ID) {je_tam = true; break;}
      if (!je_tam) ids_a.push(ID);
   }
   else
   {
      ids_a = new Array(1);
      ids_a[0] = ID;
   }
   setCookie('comparebox',ids_a.join('X'),0);   
   
   // zabijeme zbozi z hidden kukiny
   if (ids = getCookie('comparebox-hidden'))
   {
      ids_a = ids.split('X');
      for (i = 0; i < ids_a.length; i++)
      {
         if (ids_a[i] == ID)
         {// nasel sem id na vymazani
            ids_a.splice(i,1);
            break;
         }
      }
   }
   setCookie('comparebox-hidden',ids_a.join('X'),0);
   window.location.reload();
}

function _addNewItem()
{
   var ID = document.getElementById('zbozi').value;
   if (ids = getCookie('comparebox'))
   {
      ids_a = ids.split('X');
     
      // test, jestli tam uz neni...
      var je_tam = false;
      for (i = 0; i < ids_a.length; i++)
      {
         if (ids_a[i] == ID)
         {// nasel sem id, uz tam ne, nedelame nic....
            je_tam = true;
            return;
         }
      }

      if (ids_hidden = getCookie('comparebox-hidden'))
      {// test jestli uz neni v hidden
         ids_hidden_a = ids_hidden.split('X');
         for (i = 0; i < ids_hidden_a.length; i++)
         {
            if (ids_hidden_a[i] == ID)
            {// nasel sem id, uz tam ne, nedelame nic....
               je_tam = true;
               return;
            }
         }
      }
      if (!je_tam) ids_a.push(ID);
   }
   else
   {
      ids_a = new Array(1);
      ids_a[0] = ID;
   }
   setCookie('comparebox',ids_a.join('X'),0);   
   window.location.reload();
}

