/*=================
picList by Relmax (c)

uses window.js + window.css !!!

ver.1.10 20110725

20110725 - Hides left-right X-es on 1 image

known bugs:
- incorrectly showed arrows with duplicated img-urls in picList: use uniqe urls only =)

=================*/


/* Structure of HTML code
<div class="picList">
	<div class="item">
		{any HTML-code here without <A> tag}
		<div class="img" onclick="plClick(this);"><a href="{pic url}" onclick="return false;"><img alt="" src="{thumbnail url}"></a>{any other HTML-code here}</div>
	</div>
</div>

*/

var g_plArr;
var g_plCurIdx = -1;


//=============
function plClick(obj)
{
  var head = plGetHead(obj);
  //alert(head.nodeName+' / ' +head.className);
  g_plArr = plCreateList(head);
  var url = plGetLink(obj);
  g_plCurIdx = plGetUrlIdx(url);
  
  plShowImage(g_plCurIdx);
}

//=============
function plGetHead(obj)
{
  while (obj && (obj != document.body)) 
  {
    if (obj.className == 'picList') {break;}
    obj = obj.parentNode;
  }
  
  return obj;
}

//=============
// head.className == 'picList'. use plGetHead()
function plCreateList(head)
{
  var arr = new Array();
  var url;
  var obj = head.firstChild;
  if (obj.nodeName == '#text') obj = obj.nextSibling;
  
  while (obj)
  {
    url = plGetLink(obj);
    if (url != 0) arr[arr.length] = url;
    obj = obj.nextSibling;
    if (obj) {if (obj.nodeName == '#text') obj = obj.nextSibling;}
  }
  
  return arr;
}
//=============
function plGetLink(obj)
{
  var list = obj.getElementsByTagName('A');
  if (list.length == 0) return 0;
  return list[0].href;
}

//=============
function plGetUrlIdx(url)
{
  var idx = -1;
  var i;
  var value;
  
  for (i = 0; i < g_plArr.length; i++ )
  {
    value = g_plArr[i];
    if (value == url) {idx = i; break;}
  }
  
  return idx;
}

//=============
// doList = pressed on Arrow.
function plShowImage(idx,doList)
{
  if (!doList) doList = 0;
  
  if (doList == 1)
  {
    var lArrObj = document.getElementById('plLeftArrow');
    if (lArrObj) lArrObj.style.display = 'none';
    var rArrObj = document.getElementById('plRightArrow');
    if (rArrObj) rArrObj.style.display = 'none';
  }
  
  var src = g_plArr[idx];
  
  var img = new Image;
  img.src = src; // loading
  if (img.readyState == 'complete')
  {
    plShowImage2(img,idx,doList);
  }
  else
  {
    img.onload = function() {plShowImage2(img,idx,doList);};
  }
}

//=============
// doList = [0,1,2] (system commands)
function plShowImage2(img,idx,doList)
{
  var divID = 'ShowPic';
  var DIV = document.getElementById(divID);
  
  var params = new Array;
  
  if ((doList == 1)&&(DIV))
  {
    params['reshow'] = 1;
    var fidx = AddToExecAr(function(){plShowImage2(img,idx,2);});
    params['fidx'] = fidx;
    CloseDiv(divID,300,params)
    return;
  }
  
  if (doList == 2)
  {
    params['reshow'] = 1;
  }

  var txt = "";
  var w = img.width;
  var h = img.height;
  var ww = w + 21;
  var hh = h + 21;
  var h2 = Math.floor(hh/2) -10;
  
  var src = g_plArr[idx];
 
  if (!DIV)
  {
    DIV = document.createElement('DIV');
    document.body.appendChild(DIV);
    DIV.style.display = 'none';
    DIV.style.cursor = 'default';
    DIV.className = 'ShowPic';
    DIV.id = 'ShowPic';
    DIV.title = '';
  }
  DIV.style.width = '';

  var str = '';
  str += '<div class="X"><a href="#" onclick="CloseDiv(\'ShowPic\',50); return false;"><img src="/_design/img/x.png" alt="X Закрыть" /></a></div>';
  str += '<div class="ShowPicWrap"><img src="'+src+'" width="'+w+'" height="'+h+'" alt="" /></div>'
  
  if (idx > 0) // not first img
  {
    str += '<div id="plLeftArrow" style="top:'+h2+'px;" onclick="plShowImage('+(idx-1)+',1);"><img src="/_design/img/arrow_left.png" width="32" height="32" alt="" /></div>';
  }
  else //first img
  {
    str += '<div id="plLeftArrow" style="top:'+h2+'px;" onclick="CloseDiv(\''+divID+'\',50);"><img src="/_design/img/close.png" width="32" height="32" alt="" /></div>';
  }
  
  if ((idx+1) < g_plArr.length) // not last img
  {
   str += '<div id="plRightArrow" style="top:'+h2+'px;" onclick="plShowImage('+(idx+1)+',1);"><img src="/_design/img/arrow_right.png" width="32" height="32" alt="" /></div>';
  }
  else //last img
  { 
    str += '<div id="plRightArrow" style="top:'+h2+'px;" onclick="CloseDiv(\''+divID+'\',50);"><img src="/_design/img/close.png" width="32" height="32" alt="" /></div>';
  }
	
  str += txt;
  DIV.innerHTML = str;
	
	if (g_plArr.length == 1) //only one img
	{
		document.getElementById('plRightArrow').style.display = 'none';
		document.getElementById('plLeftArrow').style.display = 'none';
	}
  
  SetOpacity100(DIV);
  //var fidx = AddToExecAr(function() {DIV.onclick =  function() {CloseDiv('ShowPic',50);};})
  //params['fidx'] = fidx;
  ShowDiv(DIV,ww,50,params);
}

