
// refresh time in ms
var refresh_time = 5000;

function manageBasket(media_id, action)
{
        var objadd = document.getElementById('mediabutton_'+media_id+'_addto');
        var objdel = document.getElementById('mediabutton_'+media_id+'_remove');
        if (!objadd || !objdel) return;
        var ajax = new Ajax();
        if (action=="addto")
        {
          ajax.sendRequest('http://www.interkonyv.hu/index.php?page=ajax&function=basket&command=add&media_id='+media_id, function(req) { doManageBasketResponse(media_id, ajax, req); } );
          objadd.style.display = 'none';
          objdel.style.display = '';
        }
        else
        {
          ajax.sendRequest('http://www.interkonyv.hu/index.php?page=ajax&function=basket&command=del&media_id='+media_id, function(req) { doManageBasketResponse(media_id, ajax, req); } );
          objadd.style.display = '';
          objdel.style.display = 'none';
        }
        return void(0);
}

function clearMessage(media_id)
{
    var obj = document.getElementById( 'mediaresponse_'+media_id );
    if (obj)
    {
        obj.innerHTML = '';
        obj.timeout = 0;
    }
}

function setResponse(media_id, response, timeout)
{
    var obj = document.getElementById( 'mediaresponse_'+media_id );
    if (obj)
    {
        //obj.innerHTML = response;
        if (obj.timeout) clearTimeout(obj.timeout);
        if (timeout)
        {
            obj.timeout = setTimeout('clearMessage(\"'+media_id+'\")', refresh_time);
        }
    }
    else
    {
        alert('Error: MediaResponse object not found for ID: ' + media_id);
    }
}

function doManageBasketResponse( media_id, ajax, req )
{
    if (req.readyState==4)
    {
      if (req.status == 200)
      {
        var ans = ajax.getResponse();
        setResponse(ans.media_id, ans.error, refresh_time);
        var basket = document.getElementById('basket_value');
        if (basket)
        {
            basket.innerHTML = ans.basket;
            if (ans.basket)
                basket.parentNode.style.display = '';
            else
                basket.parentNode.style.display = 'none';
        }
        var sums = document.getElementsByName('basket-sum');
        for (var i=0; i < sums.length; i++)
        {
            sums[i].innerHTML = ans.basket;
        }
        var line=document.getElementsByName('media-line-'+ans.media_id);
        for (var i=0; i < line.length; i++)
        {
            if (ans.status!='basket')
            {
                line[i].className = line[i].className+' striked';
            }
            else
            {
                var arr = line[i].className.split(' ');
                var narr = new Array();
                for (var j=0; j<arr.length; j++)
                {
                    if (arr[j] != 'striked')
                    {
                        narr[narr.length]=arr[j];
                    }
                }
                line[i].className=narr.join(' ');
            }
        }
        var objadd = document.getElementById('mediabutton_'+ans.media_id+'_addto');
        var objdel = document.getElementById('mediabutton_'+ans.media_id+'_remove');
        var objbasket = document.getElementById('mediainbasket_'+ans.media_id);
        if (objadd && objdel)
        {
            if (ans.status == "basket")
            {
              objadd.style.display = 'none';
              objdel.style.display = '';
              if (objbasket) objbasket.style.display='';
            }
            else if (ans.status == "purchased" || ans.status == "billed")
            {
              objadd.style.display = 'none';
              objdel.style.display = 'none';
              if (objbasket) objbasket.style.display='none';
            }
            else if (ans.status == "")
            {
              objadd.style.display = '';
              objdel.style.display = 'none';
              if (objbasket) objbasket.style.display='none';
            }
        }
      }
      else
      {
          setResponse(media_id, "<span class='error'>Error in server response.</span>", refresh_time);
      }
      delete ajax;
    }
    else
    {
      setResponse(media_id, "<span style='color: gray;'>Loading...</span>", 0);
    }
}


/**
    replaces the links to add/remove commands with AJAX supported ones.
    @todo we should check if AJAX is available.
*/
replaceBasketLinks = function()
{
    var list = document.getElementsByTagName("a");
    var regexp = /^mediabutton_([-V0-9]*)_([a-z]*)$/i;
    var piregexp = /^printinfolink-([0-9]*)-([0-9]*)$/i;
    for (var i = 0; i < list.length; i++)
    {
        match=regexp.exec(list[i].id);
        if (match)
        {
            // match[1] : media_id
            // match[2] : command
            list[i].href='javascript:manageBasket("'+match[1]+'", "'+match[2]+'");';
        }
        match=piregexp.exec(list[i].id);
        if (match)
        {
            // match[1] : book_id
            // match[2] : media_id
            list[i].href='#bookline_'+match[1];
            list[i].onclick=showPrintInfo;
        }
    }
}


function addToRowSpan( tr, value)
{
  var obj=tr;
  while (obj && obj.tagName.toUpperCase()!='TR') obj=obj.parentNode;
  while (obj && (!obj.firstChild || !obj.firstChild.rowSpan)) obj = obj.previousSibling;
  if (!obj) 
  {
    alert( "RowSpan not found. ");
  }
  obj.firstChild.rowSpan += value;
}

function showPrintInfo(e)
{
  if (!e) e=window.event;
  var tag = (window.event) ? e.srcElement : e.target;
  
  while (tag.tagName.toUpperCase()!='A') tag = tag.parentNode;
  var piregexp = /^printinfolink-([0-9]*)-([0-9]*)$/i;
  var match = piregexp.exec(tag.id);
  var book_id = match[1];
  var bs_id = match[2];
  
  var obj = document.getElementById('print-info-'+bs_id);
  if (obj)
  {
    obj = obj.parentNode;	// go to the TR element
    if (obj.style.display=='none')
    {
      obj.style.display='';
      addToRowSpan( tag, 1);
    }
    else
    {
      obj.style.display='none';
      addToRowSpan( tag, -1);
    }
    return false;
  }
  var tr = document.createElement('TR');
  var td1 = document.createElement('TD');
  td1.setAttribute('colspan', 6);
  td1.id='print-info-'+bs_id;
  td1.innerHTML="<a href='http://www.interkonyv.hu/index.php?page=user/printInfo&bs_id="+bs_id+"'><img width='100%' height='20px' src='http://www.interkonyv.hu/index.php?page=user/printImage&bs_id="+bs_id+"'/></a>";
  
  tr.appendChild(td1);
  
  while (tag && tag.tagName.toUpperCase() != 'TR')
  {
    tag = tag.parentNode;
  }
  if (!tag) return true;
  if (tag.nextSibling)
  {
    tag.parentNode.insertBefore( tr, tag.nextSibling);
  }
  else
  {
    tag.parentNode.appendChild( tr );
  }
  
  addToRowSpan( tag, 1);
  
  return false;
}

onloadTaskList[onloadTaskList.length] = replaceBasketLinks;

