var tablename = "thumbnails";
var img_cnt = 0;
var imageIndex = 0;

function clearListBox(listBox)
{
	var i;
	for(i=listBox.options.length-1;i>=0;i--)
		listBox.remove(i);
}

function getImageCount()
{
  return img_cnt;
}

function getFullSizedImage(img)
{
  cellObj = document.getElementById(tablename+'_image_'+img);

  if( cellObj )
    return cellObj.getAttribute('image');

  return '';
}

function showPicture(imgIdx)
{
  imageObj = document.getElementById('current_image');
  imageObj.src = cachedImages[imgIdx].src;
  imageObj.style.display='inline';

  imageObj.parentNode.onclick = function(){showPopup(cachedImages[imgIdx].src, '') };
}

function loadError(imgIdx)
{
  // If current image 
  if( imageIndex == imgIdx )
  { // and not yet created, wait for LoadPicture to be called
    if( !(cachedImages[imageIndex]) )
      setTimeout("LoadError("+imgIdx+")",100);
    else // just call PictureLoaded (with error code) so we skip this one
      PictureLoaded(true);
  }
  else
  {
	  cachedImages[imgIdx] = new Image;
	  cachedImages[imgIdx].src = "cantload";
  }
}

function LoadPicture()
{
	if( imageIndex >= getImageCount() )
		return;

	imgObj = document.getElementById(tablename+'_loadingimage_'+imageIndex);
	if( imgObj )
	{
	  imgObj.src = 'images/loading.gif';
	  imgObj.style.display='inline';
	}

  if( !(cachedImages[imageIndex]) )
  {
	  cachedImages[imageIndex] = new Image;
	  cachedImages[imageIndex].src = getFullSizedImage(imageIndex);
	  if( !(cachedImages[imageIndex].complete || cachedImages[imageIndex].complete==null) )
	  {
	    cachedImages[imageIndex].onload=function(){PictureLoaded();}
	  }
	  else
	  {
	    setTimeout("PictureLoaded()",100);
	  }
	}
	// Thumbnail failed to load
	else if( cachedImages[imageIndex].src.indexOf("cantload") != -1 )
	{
	  setTimeout("PictureLoaded(true)",100);
	}
}

function PictureLoaded(error)
{
	imgObj = document.getElementById(tablename+'_loadingimage_'+imageIndex);
	if( imgObj )
	{
	  imgObj.style.display='none';
	  imgObj.src = "";
	}

	firstImage = ( imageIndex == 0 );

	if( cachedImages[imageIndex] && (cachedImages[imageIndex].complete || cachedImages[imageIndex].complete==null || error))
	{
	  if( firstImage && !error )
	  {
      showPicture(imageIndex);
		}
	}
	else
	  return setTimeout("PictureLoaded()",250);

  if( !error)
    enableThumbLink();
  imageIndex++;

  setTimeout("LoadPicture()",100);
}

function enableThumbLink()
{
	imgObj = document.getElementById('thumbnails_image_'+imageIndex);
	if( imgObj )
	{
	  lnkObj = imgObj.getElementsByTagName('div');
	  lnkObj[0].className = "";

	  if( lnkObj[0].getAttribute('idx') == 0 )
	      lnkObj[0].onclick = function(){showPicture(0)};
	  else if( lnkObj[0].getAttribute('idx') == 1 )
	      lnkObj[0].onclick = function(){showPicture(1)};
	  else if( lnkObj[0].getAttribute('idx') == 2 )
	      lnkObj[0].onclick = function(){showPicture(2)};
	  else if( lnkObj[0].getAttribute('idx') == 3 )
	      lnkObj[0].onclick = function(){showPicture(3)};
	  else if( lnkObj[0].getAttribute('idx') == 4 )
	      lnkObj[0].onclick = function(){showPicture(4)};
	}
}

function displayThumbNails()
{
  if( ajaxObj.readyState == 4 )
  {
    document.getElementById("thumbdiv").innerHTML = ajaxObj.responseText

    if( viewType == 'film' )
    {
      thumbtable = document.getElementById(tablename);
      if( thumbtable )
      {
        img_cnt = thumbtable.getAttribute('img_cnt');

        cachedImages = new Array();
        imageIndex = 0;
        LoadPicture();
      }
    }
  }
}

function getFilesFromDir()
{
  sendAjaxRequest( displayThumbNails, "classfactory.php?function=getThumbnails&viewType="+viewType+"&sentDir=&loading=1&tablename="+tablename, "" );
  return true;
}

function getURLParam(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  if( strReturn.indexOf("#") == (strReturn.length -1) )
    strReturn = strReturn.substr(0, strReturn.length -1);
    
  return unescape(strReturn);
} 

function getFilesFromDB()
{
  var maxcount = 25;
  if( viewType == 'film' )
    maxcount = 5;

  keys = document.getElementById('TB_KEYS').value;
  from = document.getElementById('TB_FROM').value;
  to = document.getElementById('TB_TO').value;
  rating = document.getElementById('TB_RATING').value;

  keys = "";
  getTreeSelection();
  for( var i=0; i < treeSelection.length; i++)
  {
    if( i > 0 )
      keys += '|';
    keys += treeSelection[i];
  }

  setCookie("_keys", keys, 365);
  setCookie("_from", from, 365);
  setCookie("_to", to, 365);
  setCookie("_rating", rating, 365);

  sendAjaxRequest( displayThumbNails, "classfactory.php?function=getThumbnails&viewType="+viewType+"&sentKeys="+keys+"&dateFrom="+from+"&dateTo="+to+"&rating="+rating+"&loading=1&tablename="+tablename+"&maxresults="+maxcount, "" );
  return true;
}

function filmLoad()
{
  document.onkeypress = onKeyPressed;
  document.onkeyup = onKeyUp;

  viewType = 'thumb';
  if( getURLParam('view') != '' )
    viewType = getURLParam('view');

  var val = getCookie("_keys");
  if( val && val != "undefined" )
  {
    var node = document.getElementById('TB_KEYS')
    node.value = val;
  }

  val = getCookie("_from");
  if( val && val != "undefined" )
  {
    var node = document.getElementById('TB_FROM')
    node.value = val;
  }
  else
  {
    var node = document.getElementById('TB_FROM')
    node.value = "Jan 01, 1996";
  }

  val = getCookie("_to");
  if( val && val != "undefined" )
  {
    var node = document.getElementById('TB_TO')
    node.value = val;
  }
  else
  {
    var node = document.getElementById('TB_TO')
    node.value = "Dec 31, 2015";
  }
  

  val = getCookie("_rating");
  if( val && val != "undefined" )
  {
    var node = document.getElementById('TB_RATING')
    node.value = val;
  }
  
  calpop = new CalendarPopup("caldiv");
  calpop.showYearNavigation(); 
  calpop.setTodayText('');

  getKeyTree();
}

var openImg = new Image();
openImg.src = "images/open.gif";
var closedImg = new Image();
closedImg.src = "images/closed.gif";
function showBranch( event, obj, id )
{
  var tagName;

  if( event.target ) //Mozilla
    tagName = event.target.tagName;
  else // IE
    tagName = event.srcElement.tagName;

  if( tagName != "DIV" )
  {
    var objBranch = document.getElementById('branch'+id).style;
    if( objBranch.display=="block" )
    {
      swapFolder( obj, false);
      objBranch.display="none";
    }
    else
    {
      swapFolder( obj, true);
      objBranch.display="block";
    }
  }
}

function checkbox( event, id )
{
  var src, div;
  if( event.target ) //Mozilla 
    div = event.target;
  else // IE
    div = event.srcElement;
    
  src = div.childNodes[0];
  src.checked = !src.checked;
  
  if( src.checked )
  {
    div.className = 'checkdiv checked';
  }
  else
  {
    div.className = 'checkdiv';
  }

  if( id != null && document.getElementById('branch'+id) )
    checkTree( document.getElementById('branch'+id), src.checked );
  else
    checkTree( src, src.checked );
}

function unCheckParents( obj )
{
    if( obj )
    {
      if( obj.tagName && obj.className )
      {
        if( obj.tagName.toLowerCase() == "span" && obj.className.toLowerCase() == "trigger" )
        {
          objImgs = obj.getElementsByTagName('div');

          if( objImgs[0].childNodes[0] && objImgs[0].childNodes[0].checked )
          {
            objImgs[0].className = 'checkdiv';
            objImgs[0].childNodes[0].checked = false;
            if( obj.parentNode.previousSibling )
              unCheckParents( obj.parentNode.previousSibling );
          }
        }
      }
    }
}

function checkTree( obj, checked )
{
  if( obj )
  {
    for( var i=0; i < obj.childNodes.length; i++ )
    {
      if( obj.childNodes[i].tagName )
      {
        if( obj.childNodes[i].tagName.toLowerCase() == "div" )
        {
          if( checked )
            obj.childNodes[i].className = 'checkdiv checked';
          else
            obj.childNodes[i].className = 'checkdiv';

          obj.childNodes[i].childNodes[0].checked = checked;
        }
        else if( obj.childNodes[i].tagName.toLowerCase() == "span" )
          checkTree( obj.childNodes[i], checked );
      }
    }

    if( !checked && obj.parentNode.parentNode )
    {
      var par = obj.parentNode;
      if( par.className.toLowerCase() == 'checkdiv' )
        par = par.parentNode;
 
      if( par.className && par.className.toLowerCase() == 'branch' )
      {
        if( par.previousSibling )
          unCheckParents( par.previousSibling );
      }
      else
        unCheckParents( par );
    }
  }
}

function swapFolder( obj, open )
{
  objImgs = obj.getElementsByTagName('img');
  if( objImgs[0] )
  {
    if(open)
      objImgs[0].src = openImg.src;
    else
      objImgs[0].src = closedImg.src;
  }
}

function displayKeyTree()
{
  if( ajaxObj.readyState == 4 )
    document.getElementById("keysDiv").innerHTML = ajaxObj.responseText;
}

function resizeDiv( obj )
{
  alert(obj.style.height);
}

function getKeyTree()
{
  sendAjaxRequest( displayKeyTree, "classfactory.php?function=getTree&type=key", "" );
  return true;
}

var treeSelection;
var treeSize;
function getTreeSelection( obj )
{
  if( obj == null )
  {
    treeSelection = new Array();
    treeSize = 0;
    obj = document.getElementById("treeRoot");
  }

  if( obj )
  {
    for( var i=0; i < obj.childNodes.length; i++ )
    {
      if( obj.childNodes[i].tagName )
      {
        if( obj.childNodes[i].tagName.toLowerCase() == "span" )
        {
          if( obj.childNodes[i].className.toLowerCase() == "branch" )
          {
            brId = obj.childNodes[i].id.substr( 6 );
            if( treeSize > 0 && treeSelection[treeSize-1] == brId )
              continue;
          }

          getTreeSelection( obj.childNodes[i] );
        }

        if( obj.childNodes[i].tagName.toLowerCase() == "div" && obj.childNodes[i].childNodes[0].checked )
          treeSelection[treeSize++] = obj.childNodes[i].childNodes[0].id;
      }
    }
  }
}
