var site_base = '';

window.addEvent('domready', function()
{
    if (a=document.getElementsByTagName("link")[0])
    {
        site_base = a.href.substr(0,a.href.indexOf('/resources'));
    }
    
    $$('a.noclick').each(function(el)
    {
        el.addEvent('click', function()
        {
            return false;
        });
    });
    
    $$('a.newwindow').each(function(el)
    {
        el.addEvent('click', function(event)
        {
            if(this.rel && this.rel.match(/\d+,\d+/))
            {
                popup(this.href,this.rel.split(',')[0],this.rel.split(',')[1],'yes');
            }
            else
            {
                window.open(this.href,"_blank");
            }
            return false;
        });
    });
    
    $$('.toggler').each(function(el)
    {
        var isLink = el.get('tag') == 'a';
        var targets = isLink ? $$('.'+el.hash.substring(1)) : $$('.'+el.getProperty('data-toggle-target'));
        if(targets)
        {
            // init
            el.fx = [];
            targets.each(function(target) {
              el.fx.push(new Fx.Slide(target, {link:'cancel', mode:'vertical'}));
            });

            if(!isLink) {
                // check if divs should be open on pageload
                if (el.checked != true) {
                  el.fx.each(function(fx) { fx.hide(); });
                }
            } else {
                el.fx.each(function(fx) {
                    if(fx.element.hasClass('opened')) {
                        fx.show();
                    } else {
                        fx.hide();
                    }
                });
            }

            el.addEvent('click', function(e) {
                if(isLink) {
                    el.fx.each(function(fx) { 
                        if(el.callback) {
                            if(el.callback(fx)) {
                                fx.toggle();
                            }
                        } else {
                            fx.toggle();
                        }
                    });
                    e.stop();
                }
                else {
                  if(el.getProperty('type') == 'radio') {
                    otherRadios = $$('input[type=radio][name='+el.getProperty('name')+']');
                    otherRadios.each(function(radio) {
                        openOrCloseElement(radio,e);
                    });
                  } else {
                      openOrCloseElement(el,e);
                  }
                }
            }); // end onClick
        }
    });
    
    if ($('normeringform'))
    {
        var container = $('normeringform');
        container.getElements('input[type=checkbox]').each(function(el)
        {
            el.target = $('edit_obligated_'+el.id.substr(el.id.lastIndexOf('_')+1));
            
            el.addEvent('click', function()
            {
                el.target.set('disabled', el.checked);
            });
            
            el.target.set('disabled', el.checked);
        });
        
        
    }
    
});

window.addEvent('load', function()
{
    var myInfoBoxes = new InfoIcon($$('.infotxt'));
    iconSwitcher();
});

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);
}

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);
  }

});


function iconSwitcher()
{
  for(i=0;i<document.images.length;i++)
  {
    var imgobj = document.images[i];
    var tagname = imgobj.parentNode.tagName.toUpperCase();
    if(imgobj.src.indexOf("/resources/images/icons/")>-1 && (tagname=='A'||tagname=='SPAN'))
    {
      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])
  {
    dat = lstdata[sid]['data'];
    len = dat.length;

    el.options[0] = new Option('Selecteer een opdracht','');
    for(var i=0;i<len;i++)
    {
      el.options[el.options.length] = new Option(dat[i][1],dat[i][0]);
    }
  }
  else
  {
    el.options[0] = new Option('Geen opdrachten beschikbaar','');
  }
}
