function isIE()
{
  var detect = navigator.userAgent.toLowerCase();
  var place = detect.indexOf('msie') + 1;
  return place;
}

function isLeapYear(year)
{
  return ( ((year)>0) && !((year)%4) && ( ((year)%100) || !((year)%400) ) );
}

function monthDays(month,year)
{
  month = parseInt(month);
  year = parseInt(year);
  switch(month)
  {
    case 1: return 31;
    case 2:
      if(year == 0 || isLeapYear(year))
        return 29;
      else
        return 28;
      break;
    case 3: return 31;
    case 4: return 30;
    case 5: return 31;
    case 6: return 30;
    case 7: return 31;
    case 8: return 31;
    case 9: return 30;
    case 10: return 31;
    case 11: return 30;
    case 12: return 31;
    default: return 31;
  }
}

function submitenter(myfield,e)
{
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  else return true;

  if (keycode == 13)
  {
   myfield.form.submit();
   return false;
  }
  else return true;
}

function submit_func(func, e)
{
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  else return true;

  if (keycode == 13)
  {
   func();
   return false;
  }
  else return true;
}

function isValidIdentifier(ident, minlength)
{
  var reg = new RegExp("^[A-Za-z0-9_\-]{" + minlength.toString() + ",}$");
  return reg.test(ident);
}

function isValidEntityName(entityname)
{
  var reg = new RegExp("^[A-Za-z0-9_\-]{2,}(\.[A-Za-z0-9_\-]{2,})*$");
  return reg.test(entityname);
}

function isValidFilename(filename)
{
  var reg = new RegExp("^[^\\\/\:\*\?\"\<\>\|\.]+(\.[^\\\/\:\*\?\"\<\>\|\.]+)*$");
  if(!reg.test(filename)) return false;
  filename = filename.toLowerCase();
  var reg = new RegExp("^com[1-9]$");
  if(reg.test(filename)) return false;
  var reg = new RegExp("^lpt[1-9]$");
  if(reg.test(filename)) return false;
  return (filename != "con" && filename != "aux" && filename != "nul");
}

function getViewPortHeight()
{
  if (typeof window.innerWidth != 'undefined') // Mozilla
  {
    return window.innerHeight;
  }
  else if (typeof document.documentElement != 'undefined'
      && typeof document.documentElement.clientWidth !=
      'undefined' && document.documentElement.clientWidth != 0) // IE Standards compliant
  {
    return document.documentElement.clientHeight;
  }
  else // Old IE
  {
    return document.getElementsByTagName('body')[0].clientHeight;
  }
}

function prepareIE(height, overflow)
{
  bod = document.getElementsByTagName('body')[0];
  bod.style.height = height;
  bod.style.overflow = overflow;

  htm = document.getElementsByTagName('html')[0];
  htm.style.height = height;
  htm.style.overflow = overflow;
}

function toggleSelects(visibility)
{
  selects = document.getElementsByTagName('select');
  for(i = 0; i < selects.length; i++)
  {
    selects[i].style.visibility = visibility;
  }
}

function shade()
{
  if(isIE())
  {
    prepareIE('100%', 'hidden');
    //setScroll(0,0);
    toggleSelects("hidden");
    $('shader').style.top = document.body.scrollTop + "px";
  }

  $('shader').setStyle({ opacity: 0.60 });
  $('shader').style.display = "block";
  $('lightbox').style.display = "block";
}

function unshade()
{
  if(isIE())
  {
    prepareIE("auto","auto");
    toggleSelects("visible");
    $('shader').hide();
    $('lightbox').hide();
  }
  else
  {
    $('lightbox').hide();
    Effect.Fade($('shader'), { duration: 0.4 });
  }
}

function centerWindow(id)
{
  var wnd = $(id);
  var viewheight = getViewPortHeight();
  var winheight = wnd.offsetHeight;
  var newtop = (viewheight - winheight)/2;
  if(isIE())
  {
    newtop += document.body.scrollTop;
  }
  wnd.style.top = newtop.toString() + "px";
}

function openWindow(id)
{
  shade();
  var window = $(id);
  selects = window.getElementsByTagName('select');
  for(i = 0; i < selects.length; i++) selects[i].style.visibility = "visible";
  window = window.remove();
  $('lightbox').appendChild(window);
  window.show();
  if(isIE())
  {
    new Draggable(window, { revert: false, handle: "window-caption", starteffect: null, endeffect: null });
  }
  else
  {
    new Draggable(window, { revert: false, handle: "window-caption" });
  }
  window.setStyle({ opacity: 1.00 });
  centerWindow(id);
}

function closeWindow(id)
{
  var window = $(id);
  window.hide();
  unshade();
}

function showHint(elem)
{
  elem = $(elem);
  var container = elem.up();
  var hintLeft = (elem.offsetLeft + elem.offsetWidth + 5).toString() + "px";
  var hintTop = (elem.offsetTop).toString() + "px";

  var div = Builder.node("div", { className: 'hint-top', style: "left: " + hintLeft + "; top: " + hintTop + ";" }, [
    Builder.node("div", { className: 'hint-bottom' }, [
      Builder.node("div", { className: 'hint-content' }, elem.alt )
    ])
  ]);

  if( elem.next() == null )
    container.appendChild(div);
  else
    container.insertBefore(div, elem.next());
}

function hideHint(elem)
{
  elem = $(elem);
  var hint = elem.next();
  if( hint != null ) hint.remove();
}

function showSuccess(txt)
{
  var adminSuccess = $('admin-success');
  adminSuccess.innerHTML = txt;
  adminSuccess.show();
  new PeriodicalExecuter(function(pe) {
    pe.stop();
    Effect.Fade(adminSuccess);
  }, 8);
}

track_id = 0;
track_rel = "";

function track(rel, lookup, recursive, referer, url)
{
/*
  track_rel = rel;
  var params = "&w=" + screen.width;
  params = params + "&h=" + screen.height;
  params = params + "&c=" + screen.colorDepth;
  params = params + "&l=" + lookup;
  params = params + "&r=" + recursive;
  params = params + "&ref=" + referer;
  params = params + "&url=" + encodeURIComponent(url);
  c 24
  h 900
  l 1
  r 0
  ref http://secury.nl/expertise/creatie
  s artemis/callback/track.php
  url /werkwijze
  w 1440
  var ajax = new Ajax.Request('../../../../../ajax.php',
    {method: 'post', evalScripts: true, parameters: 's=' + rel + '/callback/track.php' + params, onComplete: track_complete }
  );
*/
   $.ajax({type: 'POST', url: '../../../ajax.php',data:{s: 'artemis/callback/track.php',c: screen.colorDepth, l: lookup, w: screen.width, h: screen.height, r: recursive, ref: referer, url: encodeURIComponent(url)}});
}

function getViewPortWidth()
{
  if (typeof window.innerWidth != 'undefined') // Mozilla
  {
    return window.innerWidth;
  }
  else if (typeof document.documentElement != 'undefined'
      && typeof document.documentElement.clientWidth !=
      'undefined' && document.documentElement.clientWidth != 0) // IE Standards compliant
  {
    return document.documentElement.clientWidth;
  }
  else // Old IE
  {
    return document.getElementsByTagName('body')[0].clientWidth;
  }
}

function locate_tooltip(e)
{
  var posx = 0;
  var posy = 0;
  var hor_middle = getViewPortWidth() / 2;
  var vert_middle = getViewPortHeight() / 2 + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
  var tooltip = $('tooltip');

  if(e == null) e = window.event;
  if(e.pageX || e.pageY)
  {
    posx=e.pageX; posy=e.pageY;
  }
  else if(e.clientX || e.clientY)
  {
    if(document.documentElement.scrollTop)
    {
      posx = e.clientX + document.documentElement.scrollLeft;
      posy = e.clientY + document.documentElement.scrollTop;
    }
    else
    {
      posx = e.clientX + document.body.scrollLeft;
      posy = e.clientY + document.body.scrollTop;
    }
  }

  var dim = tooltip.getDimensions();
  var x = posx >= hor_middle ? (posx - 255) : (posx + 15);
  var y = posy >= vert_middle ? (posy - dim.height - 10) : (posy + 22);
  tooltip.style.left = x.toString() + "px";
  tooltip.style.top  = y.toString()+"px";
}



