/*

   JavaScript interface file for www.lubbertboersma.nl

   - gallary interface
   - copyright interface
   - are you sure interface
   - character interface

   Christiaan Boersma 2009

*/

  var ie4             = (document.all) ? true : false;
  var ns4             = (document.layers) ? true : false;
  var ns6             = (document.getElementById && !document.all) ? true : false;

  var baseURL         = "/gallerij";
  var photosrc        = new Object();
  var n_photosrc      = 0; 
  var photos          = null;
  var nphotos         = 0;
  var gallery         = "";

  var loadID          = 0;
  var slideID         = 0;

  var delay           = 5.5e3;
  var buffering       = 0.4;

  var xMousePos       = 0;
  var yMousePos       = 0;

  var messageBar      = null;
  var progressBarBack = null;
  var progressBarRun  = null;
  var progress        = null;
  var controls        = null;

  var transition      = null;
  var paused          = false;
  var current         = -1;
  var done            = false;

  if (ns4){
    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = captureMousePosition;
  }
  else if (ie4 || ns6) 
    document.onmousemove = captureMousePosition;

  function captureMousePosition(e){
    
    if(ns6){
       xMousePos    = e.pageX;
       yMousePos    = e.pageY;
    }
    else if (ie4){
       xMousePos    = window.event.x;
       yMousePos    = window.event.y;
    }
  }

  function initSlideShow(){

    if(ie4){
      messageBar      = document.all['messageBar'];
      progressBarBack = document.all['progressBarBack'];
      progressBarRun  = document.all['progressBarRun'];
      progress        = document.all['progress'];
      controls = document.all['controls'];
    }
    else if(ns4){
      messageBar      = document.layers['messageBar'];
      progressBarBack = document.layers['progressBarBack'];
      progressBarRun  = document.layers['progressBarRun'];
      progress        = document.layers['progress'];
      controls = document.layers['controls'];
    }
    else if(ns6){
      messageBar      = document.getElementById('messageBar');
      progressBarBack = document.getElementById('progressBarBack');
      progressBarRun  = document.getElementById('progressBarRun');
      progress        = document.getElementById('progress');
      controls = document.getElementById('controls');
    }
  }

  function addSlide(name, sources){
    photosrc[name] = sources;
    n_photosrc++;
  }

  function selectSlide(name){

    if(paused){
      document.images.pause.src = "/images/pause.png";
      paused = false;
    }

    if(photosrc[name][0] != null){

      window.clearTimeout(slideID);
      window.clearTimeout(loadID);

      gallery = name.substr(name.indexOf("-")+1).toUpperCase();

      slideID = 0;
      loadID  = 0;

      photos        = new Array();
      nphotos       = photosrc[name].length;
      photos[0]     = new Image();
      photos[0].src = baseURL + "/" + name + "/" + photosrc[name][0];

      progressBarRun.style.width  =  "0cm";

      messageBar.innerHTML =  "fotoserie <b>" + gallery + "</b> wordt geladen...";

      messageBar.style.visibility = progressBarBack.style.visibility = progressBarRun.style.visibility = 'visible';
      progress.style.visibility   = controls.style.visibility = 'hidden';

      done = false;

      checkLoad(name, 0);
    }
  }

  function startSlideShow(at){

    if(!photos[at].complete)
      slideID = setTimeout('startSlideShow(' + at + ')', delay);

    document.images.big_image_A.src = document.images.big_image_B.src;
    if(ie4)
      document.images.big_image_B.style.filter = "alpha(opacity=0)";
    else
      document.images.big_image_B.style.opacity = 0.0;
    document.images.big_image_B.src = photos[at].src;

    if(transition != null)
      transition.cancel();

    transition = new Effect.Appear(document.images.big_image_B, {duration: delay / 2000.0, from: 0.0, to: 1.0});

    if(at < 9)
      progress.innerHTML = at+1 + ' /' + nphotos + " " + gallery;
    else
      progress.innerHTML = at+1 + '/' + nphotos + " " + gallery;

    current = at

    if(at == photos.length - 1)
      at = 0;
    else
      at++;

    slideID = setTimeout('startSlideShow(' + at + ')', delay);
  }

  function checkLoad(name, i){

    if((slideID == 0) && (i >= buffering * (nphotos - 1)) && !paused){
      controls.style.visibility  = 'visible';
      startSlideShow(0);
    }

    if(photos[i].complete){

      progressBarRun.style.width = 2 * ((i + 1) / (nphotos)) + "cm";

      if(i == nphotos - 1){	
	progress.style.visibility =  'visible';
	messageBar.style.visibility = progressBarBack.style.visibility = progressBarRun.style.visibility = 'hidden';
	done = true;
      }
      else{
        photos[++i]   = new Image();
        photos[i].src = baseURL + "/" + name + "/" + photosrc[name][i];
        checkLoad(name, i);
      }
    }
    else
      loadID = setTimeout('checkLoad(\'' + name + '\',' + i + ')', 200);
  }

  function pauseSlideShow(){

    if(paused){

      if(current == photos.length - 1)
	current = 0;
      else
	current++;

      startSlideShow(current);
      document.images.pause.src = "/images/pause.png";
      paused = false;
    }
    else{
      window.clearTimeout(slideID);
      slideID = 0;
      document.images.pause.src = "/images/play.png";
      paused = true;
    }
  }

  function nextSlide(){

    if(!paused)
      pauseSlideShow();

    if(transition != null)
      transition.cancel();

    if(current == photos.length - 1)
      next = 0;
    else
      next = current + 1;

    if(!photos[next].complete)
      return;

    current = next;

    if(ie4)
      document.images.big_image_B.style.filter = "alpha(opacity=100)";
    else
      document.images.big_image_B.style.opacity = 1.0;
    
    document.images.big_image_A.src = document.images.big_image_B.src;
    document.images.big_image_B.src = photos[current].src;

    if(current < 9)
      progress.innerHTML = current+1 + ' /' + nphotos + "  " + gallery;
    else
      progress.innerHTML = current+1 + '/' + nphotos + " " + gallery;
  }

  function previousSlide(){

    if(!paused)
      pauseSlideShow();

    if(transition != null)
      transition.cancel();

    if(current == 0)
      prev = photos.length - 1;
    else
      prev = current - 1;
    
    if(!photos[prev].complete)
      return;

    current = prev;

    if(ie4)
      document.images.big_image_B.style.filter = "alpha(opacity=100)";
    else
      document.images.big_image_B.style.opacity = 1.0;
    
    document.images.big_image_A.src = document.images.big_image_B.src;
    document.images.big_image_B.src = photos[current].src;

    if(current < 9)
      progress.innerHTML = current+1 + ' /' + nphotos + "  " + gallery;
    else
      progress.innerHTML = current+1 + '/' + nphotos + " " + gallery;
  }

  function selectRandomSlide(offset){

    var sentinal = offset + Math.round(((n_photosrc - 1) / 2) * Math.random());
    var pass = 0;
    for(var i in photosrc){
      if(pass == sentinal){
	selectSlide(i);
	break;
      }
      pass++;
    }
  }

  function hoverOnSlide(img, thumbnail, slide){

    img.src = thumbnail;

    messageBar.innerHTML = "<i>klik</i> om de fotoserie <b>" + slide.substr(slide.indexOf("-")+1).toUpperCase() + "</b> te starten...";

    messageBar.style.visibility = 'visible';

    return(true);
  }

  function hoverOffSlide(img, thumbnail){

    img.src = thumbnail;

    if(done)
      messageBar.style.visibility = 'hidden';
    else
      messageBar.innerHTML =  "fotoserie <b>" + gallery + "</b> wordt geladen...";

    return(true);
  }

  function updateUploadImg(upload, img){

    if(typeof netscape != 'undefined')
      netscape.security.PrivilegeManager.enablePrivilege('UniversalFileRead');  

    if(upload.value)
      img.src = 'file://' + upload.value;
    else
      img.src = '/images/wait.jpg';

    return(true);
  }

  function checkScrollBar(){

    var main = document.getElementById('main');

    if(main != null && main.scrollHeight > 515)
      main.style.overflow = 'auto';
  }

  function validChars(str){

    //var illegalChars= /[\(\)\<\>\,\;\:\-\'\\\/\"\[\]]/
    var illegalChars= /[\(\)\<\>\,\;\-\'\"\[\]]/;
    if (str.match(illegalChars)){
      alert("De door u opgegeven invoer bevat \351\351n of meer van de volgende illegale karakters:\n\n()<>[],&#34;;:\\/\'-");
      return(false);
    }
    
    return(true);
  }

  function copyrightAlert(){
  
    alert("Het copyright van deze foto(s) ligt bij de fotograaf.");
    
    return(false);
  }

  function AreYouSure(){

    response = confirm('Weet u het zeker dat u de dia wilt verwijderen?');

    return(response);
  }
