var IE        = window.attachEvent? true:false;
//get basepath
var site_base = "";
var lastjspage = 0;
if(a=document.getElementsByTagName("link")[0])
{
  site_base = a.href.substr(0,a.href.indexOf('/resources'));
}

function popup(url,w,h,scroll)
{
  var l = (screen.width-w)/2;
  var t = (screen.height-h)/2;

  window.open(url,'_blank','resizable=yes,location=no,menubar=no,scrollbars='+scroll+',status=no,toolbar=no,fullscreen=no,dependent=no,width='+w+',height='+h+',left='+l+',top='+t);
}


window.addEvent('domready', function() {
  var myInfoBoxes = new InfoIcon($$('.infotxt'));
  iconSwitcher();
  
  if(IE)
  {
    $$('#nav>ul>li').each(function(el){
      el.addEvent('mouseenter',function()
      {
        this.addClass('iehover');
      });
      el.addEvent('mouseleave',function()
      {
          this.removeClass('iehover');
      });
    });
  }
  
  //jspaging
  if($('page0'))
  {
    var dochash = document.location.hash.substring(1);
    var pagenum = parseInt(dochash.substring(4));
    if($(dochash))
    {
      $('page0').removeClass('pageactive');
      $(dochash).addClass('pageactive');
      if($$('.jspagerlink')[pagenum])
      {
        lastjspage = pagenum;
        $$('.jspagerlink')[0].removeClass('jspageactive');
        $$('.jspagerlink')[pagenum].addClass('jspageactive');
      }
    }
    $$('.jspagerlink').each(function(el){
      el.addEvent('click', function(event){
        var newpage = parseInt(this.href.substring(this.href.indexOf('#')+5));
        if(newpage != lastjspage)
        {
          $('page'+lastjspage).removeClass('pageactive');
          $('page'+newpage).addClass('pageactive');
          
          $$('.jspagerlink')[lastjspage].removeClass('jspageactive');
          $$('.jspagerlink')[newpage].addClass('jspageactive');
        
          lastjspage = newpage;
        }
      });
    });
  }
  
});


var InfoIcon = new Class({
  initialize: function(elements)
  {
    if(elements.length==0)
    {
      return;
    }

    this.boxname = ['infobox','infoboxhead'];
    this.infobox = new Element('div', {
      'class': this.boxname[0],
      'styles': {
        'position': 'absolute'
       ,'top': '0'
       ,'left': '0'
       ,'height': '0'
       ,'overflow': 'hidden'
      }
    }).inject(document.body);
    this.infotitle = new Element('div',{'class':'infoboxtitle'}).inject(this.infobox);
    this.infodata  = new Element('div',{'class':'infoboxdata'}).inject(this.infobox);

    this.slider = new Fx.Tween($(this.infobox),'height');
    this.slider.options.duration = 250; //ugly fix to set the duration..
    $$(elements).each(this.build, this);
  },

  build: function(el)
  {
    switch(el.tagName.toLowerCase())
    {
      case 'img':
        el.txt = el.alt.replace(/\n/g,'<br />');
        el.removeAttribute('alt');
      break;
      default:
        if((frstel=el.getFirst()) && frstel.className=='infotxtdata')
        {
          el.txttitle = el.title.replace(/\n/g,'<br />');
          el.removeAttribute('title');
          el.txt = frstel.get('html');
        }
        else
        {
          el.txt = el.title.replace(/\n/g,'<br />');
          el.removeAttribute('title');
        }
      break;
    }
    el.addEvent('mouseenter', function(event){
      this.infobox.className = this.boxname[el.txttitle?1:0];
      this.position(el);
      this.start(el);
    }.bind(this));
    var end = this.end.bind(this);
    el.addEvent('mouseleave', end);
    el.addEvent('trash', end);
  },

  start: function(el)
  {
    this.infotitle.empty();
    this.infotitle.set('html',el.txttitle);
    this.infodata.empty();
    this.infodata.set('html',el.txt);
    $clear(this.timer);
    this.timer = this.show();
  },

  end: function(event)
  {
    $clear(this.timer);
    this.timer = this.hide();
  },

  position: function(element)
  {
    var pos    = element.getPosition();
    var dynw   = element.offsetWidth;
    var dynh   = element.offsetHeight;
    var winx   = window.getWidth()-50;
    var infow  = this.infobox.offsetWidth;
    var alignr = (pos.x+infow>winx)? true : false;
    this.infobox.setStyles({
       //'left': pos.x-Math.floor(alignr? (infow-(dynw/2+12)) : (13 - dynw/2))
       'left': pos.x - (alignr? infow-dynw : 0)
      ,'top': pos.y+dynh
      ,'background-position': (alignr?'-250px 0px':'0px 0px')
    });
  },

  show: function()
  {
    this.slider.cancel();
    this.slider.set('height',0);
    this.slider.start('height',0,this.infobox.scrollHeight);
  },

  hide: function()
  {
    this.slider.cancel();
    this.slider.start('height',this.infobox.scrollHeight,0);
  }

});


/* nice function that gives each admin-icon a nice mouseover */
function iconSwitcher()
{
  for(i=0;i<document.images.length;i++)
  {
    var imgobj = document.images[i];
    if(imgobj.src.indexOf("/resources/images/icons/")>-1 && imgobj.parentNode.tagName.toUpperCase()=='A')
    {
      imgobj.style.margin = '0px 0px 1px 1px';
      imgobj.onmouseover = function()
      {
        this.style.margin = '1px 1px 0px 0px';
      }
      imgobj.onmouseout = function()
      {
        this.style.margin = '0px 0px 1px 1px';
      }
    }
  }
}

function reloadValidationImage()
{
  if($('validationimage'))
  {
    var now = new Date();
    newSrc = $('validationimage').src
    newSrc = (newSrc.indexOf("&")>0)? newSrc.substr(0,newSrc.indexOf("&")) : newSrc;
    newSrc+= "&"+ now.getTime();
    $('validationimage').src = newSrc;
  }
}

function propagateList(obj,lstdata,el)
{
  var sid  = obj.options[obj.selectedIndex].value;

  if(!(el=$(el))) {return;}

  //clear all values
  for(var i=el.options.length;i>=0;i--)
  {
    el.options[i] = null;
  }

  if(lstdata[sid])
  {
    len = lstdata[sid].length;

    el.options[0] = new Option('Selecteer een opdracht','');
    for(var i=0;i<len;i++)
    {
      el.options[el.options.length] = new Option(lstdata[sid][i][1],lstdata[sid][i][0]);
    }
  }
  else
  {
    el.options[0] = new Option('Geen opdrachten beschikbaar','');
  }
}
