var move_timer = null;

function ref_scroll(dir, evnt)
{
  // dir: irány: 0 fel, 1 le
  // evnt: esemény: 0 mouseover, 1 mouseout
  var o = document.getElementById("refscrollcontent");
  var t = parseInt(o.style.top);
  var p = 0;
  if (dir == 0)
  {
    p = Math.min(0, t-(-4));
  }
  else
  {
    var h = 85-o.clientHeight;
    p = Math.max(h, t-4);
  }

  var scrolldiv = document.getElementById("scrolldiv");
  //alert(scrolldiv.clientHeight);
  var scrollpos = p / (o.clientHeight-85) * (65-scrolldiv.clientHeight);
  scrolldiv.style.top = (10-parseInt(scrollpos)) + "px";
  
  o.style.top = p + "px";
  
  if (evnt == 0)
  {
    move_timer = setTimeout("ref_scroll(" + dir + ", " + evnt + ")", (navigator.appName=="Microsoft Internet Explorer"?50:20));
  }
  else
  {
    clearTimeout(move_timer);
  }
}


function setRefScroll()
{
  var o = document.getElementById("refscrollcontent");
  if (o.clientHeight > 87)
  {
    var p = 45-Math.min(35, parseInt((o.clientHeight-87)/4));
    document.getElementById("refscrollbar").style.display = "block";
    document.getElementById("scrolldiv").style.height = p + "px";
    document.getElementById("scrollbar_bottom_img").style.top = p-2 + "px";
  }
}

function loadref(rw)
{
  ajax_request("/ajax/referenciak.edot?ref=" + rw + "&type=web", writeref, 1);
  return false;
}





var ajaxtext = "";
var opac = 1.0;
var fading = false;
function writeref(id, text)
{
  if (!fading)
  {
    ajaxtext = text;
    fading = true;
    faderef((navigator.appName=="Opera")?-0.1:-0.05);
  }
}



function faderef(diff)
{
  var o = document.getElementById("refcontent");
  var i;
  opac += diff;
  
  a = o.getElementsByTagName("table");
  for (i in a)
  {
    if (!a[i] || !a[i].style) continue;
    if (navigator.appName=="Microsoft Internet Explorer")
    {
      a[i].style.filter = "alpha(opacity=" + parseInt(opac*100) + ");";
    }
    else if (navigator.appName=="Netscape")
    {
      a[i].style.MozOpacity = opac;
    }
    try
    {
      a[i].style.opacity = opac;
    }
    catch(e){}
  }
  
  if ((diff<0 && opac >= -0.01) || (diff>0 && opac <= 1.01))
  {
    setTimeout("faderef(" + diff + ");", 20);
  }
  else
  {
    if (diff<0) drawref(ajaxtext);
    else fading = false;
  }
}

function drawref(text)
{
  var i, j;
  
  //var params = new Array(3);
  text = text.split("\n");
  if (!text || !text[0] || !text[1] || !text[2]) return false;

  for (i in text)
  {
    if (!text[i] || text[i]=="") continue;
    text[i] = text[i].split("&");
    //params[i] = new Array();
    for (j in text[i])
    {
      text[i][j] = text[i][j].split("=");
      //params[i][text[i][j][0]] = text[i][j][1];
      
      try
      {
        if (text[i][j][0] == "title") document.getElementById("ref_link_" + i).innerHTML = Url.decode(text[i][j][1]);
        if (text[i][j][0] == "pic") document.getElementById("ref_tlink_" + i).href = "/images/ref/big/" + text[i][j][1];
        if (text[i][j][0] == "pic") document.getElementById("ref_img_" + i).src = "/images/ref/" + text[i][j][1];
        if (text[i][j][0] == "desc") document.getElementById("ref_desc_" + i).innerHTML = Url.decode(text[i][j][1]);
        if (text[i][j][0] == "technologies") document.getElementById("ref_technologies_" + i).innerHTML = Url.decode(text[i][j][1]);
        if (text[i][j][0] == "startdate") document.getElementById("ref_start_" + i).innerHTML = text[i][j][1].replace(/-/g, ". ") + ".";
        if (text[i][j][0] == "finishdate")
        {
          document.getElementById("ref_status_" + i).innerHTML = ((text[i][j][1] == "-")?"Fejlesztés alatt":"Befejezve");
          document.getElementById("ref_finish_" + i).innerHTML = ((text[i][j][1] == "-")?"-":text[i][j][1].replace(/-/g, ". ") + ".");
        }
        if (text[i][j][0] == "link")
        {
          document.getElementById("ref_link_" + i).href = Url.decode(text[i][j][1]);
          document.getElementById("ref_imglink_" + i).href = Url.decode(text[i][j][1]);
        }
        setCachedRef();
      }
      catch(e){}
      
    }
  }
  faderef((navigator.appName=="Opera")?0.1:0.05);
}


// Tárolt változat
var cachedRefs = new Array();

// Oldal betöltődéskor, vagy ref változáskor a tárolt változat linkhez rendeli a megfelelő JS-eket
function setCachedRef()
{
  var refCacheDiv = document.getElementById('refcachediv');
  if (!refCacheDiv) createCacheDiv();
  
  var anch = document.getElementsByTagName("a");
  for (var i = 0; i<anch.length; i++)
  {
    if (anch[i].rel == "refpic")
    {
      cachedRefs[cachedRefs.length] = new Array();
      cachedRefs[cachedRefs.length-1][0] = anch[i].href;
      anch[i].onclick = refCachedClick;
    }
  }
}

// Rákattintottak egy tárolt változat linkre
function refCachedClick(e)
{
  var e = e || event;
  var refCacheDiv = document.getElementById('refcachediv');
  if (!refCacheDiv) return;
  
  var targ = e.target || e.srcElement;
	if (targ.nodeType == 3) targ = targ.parentNode;

  var idx = -1;
  for (var i=0; i<cachedRefs.length; i++)
  {
    if (cachedRefs[i][0] == targ.href)
    {
      idx = i;
      break;
    }
  }
  if (idx == -1) return;
  
  if (cachedRefs[idx][1] && cachedRefs[idx][2] && cachedRefs[idx][3])
  {
    openRefPopup(idx);
  }
  else
  {
    getRefSizeAndOpen(idx);
  }
  return false;
}

// Lekéri a referencia adatait (AJAX-ot indítja)
function getRefSizeAndOpen(idx)
{
  ajax_request("/ajax/getrefdata.edot?ref=" + cachedRefs[idx][0], getRefSizeAndOpenAjax, idx);
}

// Lekéri a referencia adatait (tömbbe rakja)
function getRefSizeAndOpenAjax(id, txt)
{
  txt = txt.split('\n');
  if (!txt[1]) return;
  txt[0] = txt[0].split('|');
  if (!txt[0][1]) return;
  cachedRefs[id][1] = txt[0][0];
  cachedRefs[id][2] = txt[0][1];
  cachedRefs[id][3] = txt[1];
  openRefPopup(id);
}

var refImgLoading = false;
var refImgResizing = false;
var refImgLoadingIdx = -1;

// Kirakja a tárolt változat ablakot
function openRefPopup(idx)
{
  var refCacheDiv = document.getElementById('refcachediv');
  if (!refCacheDiv) return;
  
  refImgLoading = true;
  refImgResizing = true;
  refImgLoadingIdx = idx;
  
  var img = document.getElementById("refimgloader");
  img.src = cachedRefs[idx][0];

  var img = document.getElementById("refpicbig");
  img.src = "images/progressbar.gif";
  img.style.display = "block";
  
  var span = document.getElementById("refname");
  span.innerHTML = cachedRefs[idx][3];
  
  refWindowResizeTo(cachedRefs[idx][1], cachedRefs[idx][2]);
  
  var size = getWindowSize();
  var scroll = getScrollXY();
  
  var x = Math.max(10, ((size[0] - (cachedRefs[idx][1]-(-62))) / 2)) - (-scroll[0]);
  var y = Math.max(10, ((size[1] - cachedRefs[idx][2]-(40)) / 2)) - (-scroll[1]);
  refCacheDiv.style.left = x + "px";
  refCacheDiv.style.top = y + "px";
  refCacheDiv.style.display = "block";
}

// Átméretezi a tárolt változat ablakot
function refWindowResizeTo(w, h)
{
  w = w - 1 + 1;
  h = h - 1 + 1;
  var td = document.getElementById("refimgtd");
  var td_w = parseInt(td.style.width);
  var td_h = parseInt(td.style.height);

  if (w != td_w || h != td_h)
  {
    var step_w = Math.max(3, ((w-td_w)/10));
    var step_h = Math.max(3, ((h-td_h)/10));
    if (step_w > 0 && td_w+step_w > w ||
        step_w < 0 && td_w+step_w < w) step_w = w-td_w;
    if (step_h > 0 && td_h+step_h > h ||
        step_h < 0 && td_h+step_h < h) step_h = h-td_h;
        
    td.style.width = (td_w+step_w) + "px";
    td.style.height = (td_h+step_h) + "px";
    setTimeout("refWindowResizeTo(" + w + ", " + h + ")", 20);
  }
  else
  {
    refImgResizing = false;
    if (!refImgLoading) showRefImg();
  }
}

// Nagykép betöltődésekor fut le
function refImgLoaderReady()
{
  refImgLoading = false;
  if (!refImgResizing) showRefImg();
}

// Kirakja a referencia képét
function showRefImg()
{
  var img = document.getElementById("refpicbig");
  img.src = cachedRefs[refImgLoadingIdx][0];
}

// Lekéri a tárolt változat HTML kódját
function createCacheDiv()
{
  ajax_request("/ajax/refcachediv.edot", createCacheDivAjax, 1);
}

// Tárolt változat HTML kódját reftve az oldalba illeszti
function createCacheDivAjax(id, html)
{
  var o = document.createElement("div");
  o.style.zIndex = "101";
  o.id = "refcachediv";
  o.style.position = "absolute";
  o.style.left = "20px";
  o.style.top = "20px";
  o.style.display = "none";
  o.innerHTML = html;
  
  var o2 = document.createElement("img");
  o2.id = "refimgloader";
  o2.style.display = "none";
  o2.onload = refImgLoaderReady;

  o.appendChild(o2);
  document.body.appendChild(o);
}

// Bezárja a tárolt változat ablakot
function closeRef()
{
  var refCacheDiv = document.getElementById('refcachediv');
  if (!refCacheDiv) return;

  var o = document.getElementById('refpicbig');
  o.style.display = "none";

  var refImgTd = document.getElementById('refimgtd');
  refImgTd.style.width = "100px";
  refImgTd.style.height = "100px";
  refCacheDiv.style.display = "none";
}


addEvent(window,'load',setRefScroll);
addEvent(window,'load',setCachedRef);

