/*
$Author: sjors $
$LastChangedDate: 2006-08-17 17:36:21 +0200 (do, 17 aug 2006) $
$Id: general.js 170 2006-08-17 15:36:21Z sjors $
$Rev: 170 $
*/

function getEvent(event)
{
  var cleanevent;
  if (event)
  {
    cleanevent=event+'';
    cleanevent=cleanevent.slice(cleanevent.indexOf('{')+1, cleanevent.indexOf('}'));
    cleanevent=trim(cleanevent);
  }
  return cleanevent;
}

function searchandpreload()
{
  var imgs = document.getElementsByTagName('img');
  var foundpreload = new Array();
  for (var j=i=0; i<imgs.length; i++)
  {
    if (imgs[i].onmouseover)
    {
      var imgov = getEvent(imgs[i].onmouseover).replace(/this\.src\s*=\s*['|"](.*)['|"];?/, "$1");
      if (imgov != imgs[i].src)
      {
        foundpreload[j++] = imgov;
      }
    }
    if (imgs[i].onmouseout)
    {
      var imgout = getEvent(imgs[i].onmouseout).replace(/this\.src\s*=\s*['|"](.*)['|"];?/, "$1");
      if (imgout != imgs[i].src)
      {
        foundpreload[j++] = imgout;
      }
    }
  }
  preload(foundpreload);
}

function preload(preloadimgs)
{
  document.pl = new Array();
  for (var j=i=0; i<preloadimgs.length; i++)
  {
    document.pl[j] = new Image;
    document.pl[j++].src = preloadimgs[i];
  }
}

function closediv(divname)
{
  setStyle(divname).display='none';
  setStyle('bodywaitdiv').display='none';
  setStyle('body').overflow = '';
}

function cfm(message, url)
{
  var offset = (document.all)?document.body.scrollTop:window.pageYOffset;

  setStyle('body').overflow = 'hidden';
  setStyle('bodywaitdiv').height  = getWinHeight() + 'px';
  setStyle('bodywaitdiv').width   = getWinWidth() + 'px';
  setStyle('bodywaitdiv').display = 'block';

  setStyle('confirmdiv').width = '';
  writeText('confirmdiv_question', message);
  setStyle('confirmdiv').display = 'block';

  msgwidth=document.getElementById('confirmdiv').offsetWidth;
  if (msgwidth > 500)
  {
    setStyle('confirmdiv').width='500px';
    msgwidth=500;
  }

  setStyle('confirmdiv').top = (getWinHeight()/3+offset) + 'px';
  setStyle('confirmdiv').left = ((825-msgwidth)/2+160) + 'px';

  document.getElementById('confirmdiv_OK').focus();
  document.getElementById('confirmdiv_OK').href=url;
}

function array_key(haystack, needle)
{
  key = -1;
  for (i=0; i<haystack.length; i++) {
    if (haystack[i] == needle) {
      key = i;
      break;
    }
  }
  return key;
}

function LTrim( value ) {return value.replace(/\s*((\S+\s*)*)/, "$1");}
function RTrim( value ) {return value.replace(/((\s*\S+)*)\s*/, "$1");}
function trim( value )  {return LTrim(RTrim(value));}

// http://www.bitstorm.org/edwin/cursus/dhtml.html
function writeText( layer,text ) {
  if( document.getElementById ) {
    document.getElementById( layer ).innerHTML = text;
  } else if( document.all ) {
    document.all[layer].innerHTML = text;
  } else {
    document[layer].document.open();
    document[layer].document.write( text );
    document[layer].document.close();
  }
}

function getWinHeight()
{
  var myHeight = 0;
  if (typeof(window.innerHeight ) == 'number')
  {
    //Non-IE
    myHeight = window.innerHeight;
  }
  else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
  {
    //IE 6+ in 'standards compliant mode'
    myHeight = document.documentElement.clientHeight;
  }
  else if (document.body && (document.body.clientWidth || document.body.clientHeight))
  {
    //IE 4 compatible
    myHeight = document.body.clientHeight;
  }
  return myHeight;
}

function getWinWidth()
{
  var myWidth = 0;
  if (typeof(window.innerWidth ) == 'number')
  {
    //Non-IE
    myWidth = window.innerWidth;
  }
  else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientWidth))
  {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
  }
  else if (document.body && (document.body.clientWidth || document.body.clientWidth))
  {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
  }
  return myWidth;
}

// http://www.bitstorm.org/edwin/cursus/dhtml.html
function setStyle(layer)
{
  if (document.getElementById) return document.getElementById(layer).style;
  else if (document.all) return document.all[layer].style;
  else return document[layer];
}

// http://www.bitstorm.org/edwin/cursus/dhtml.html
function setBackgroundColor( layer, color ) {
  if( document.getElementById ) {
    document.getElementById( layer ).style.backgroundColor = color;
  } else if( document.all ) {
    document.all[layer].style.backgroundColor = color;
  } else {
    document[layer].bgColor = color;
  }
}

function getPos(el, sProp)
{
  var pos = 0;
  while (el != null)
  {
    pos += el["offset" + sProp];
    el = el.offsetParent;
  }
  return pos;
}

function randomString() {
  var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz!@#$%^&*()-_+=";
  var string_length = 7+Math.floor(Math.random() * 4);
  var randomstring = "";
  for (var i=0; i<string_length; i++) {
    var rnum = Math.floor(Math.random() * chars.length);
    randomstring += chars.substring(rnum,rnum+1);
  }
  return randomstring;
}

/* UBB */
var fields = new Array();
var ubb_opentags = new Array();

function simpletag(thetag, obj_ta){
  if (-1 == (fieldkey = array_key(fields, obj_ta.name)))
  {
    fieldkey = fields.length;
    fields[fieldkey]  = obj_ta.name;
    ubb_opentags[fieldkey] = new Array();
  }
  if (-1 == (lastindex = array_key(ubb_opentags[fieldkey], thetag))) {
    if(doInsert("[" + thetag + "]", "[/" + thetag + "]", true, obj_ta)){
      ubb_opentags[fieldkey][ubb_opentags[fieldkey].length] = thetag;
    }
  } else {
    if (lastindex >= 0){
      for (i=ubb_opentags[fieldkey].length-1; i>=lastindex; i--){
        tagRemove = ubb_opentags[fieldkey][i];
        doInsert("[/" + tagRemove + "]", "", false, obj_ta);
        delete ubb_opentags[fieldkey][i];
      }
    }
  }
}

function doInsert(ibTag, ibClsTag, isSingle, obj_ta){

  var isClose = false;
  var uagent = navigator.userAgent.toLowerCase();

  if ((parseInt(navigator.appVersion) >= 4) &&
     ((uagent.indexOf('msie') != -1) &&
     (!(uagent.indexOf('opera') != -1)) &&
     (!((uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc."))) &&
     (!(uagent.indexOf('webtv') != -1)) ) &&
     ((uagent.indexOf("win") != -1) ||
     (uagent.indexOf("16bit") !=- 1) )){

    if (obj_ta.isTextEdit){
      obj_ta.focus();
      var sel = document.selection;
      var rng = sel.createRange();
      rng.colapse;
      if((sel.type == "Text" || sel.type == "None") && rng != null){
        if(ibClsTag != "" && rng.text.length > 0){
          ibTag += rng.text + ibClsTag;
        } else if(isSingle){
          isClose = true;
        }
        rng.text = ibTag;
      }
    } else {
      if(isSingle){
        isClose = true;
      }
      obj_ta.value += ibTag;
    }
  } else if ( obj_ta.selectionEnd ) {
    var ss = obj_ta.selectionStart;
    var es = obj_ta.selectionEnd;
    if (es <= 2){
      es = obj_ta.textLength;
    }

    var start  = (obj_ta.value).substring(0, ss);
    var middle = (obj_ta.value).substring(ss, es);
    var end    = (obj_ta.value).substring(es, obj_ta.textLength);

    if (obj_ta.selectionEnd - obj_ta.selectionStart > 0){
      middle = ibTag + middle + ibClsTag;
    } else {
      middle = ibTag + middle;

      if (isSingle){
        isClose = true;
      }
    }
    obj_ta.value = start + middle + end;
  } else{
    if (isSingle){
      isClose = true;
    }
    obj_ta.value += ibTag;
  }
  obj_ta.focus();
  return isClose;
}

function tag_list(obj_ta)
{
  var ibTag    ='[list]\n[*]';
  var ibClsTag = '\n[/list]';
  var isSingle = false;
  var isClose  = false;
  var uagent = navigator.userAgent.toLowerCase();

  if ((parseInt(navigator.appVersion) >= 4) &&
     ((uagent.indexOf('msie') != -1) &&
     (!(uagent.indexOf('opera') != -1)) &&
     (!((uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc."))) &&
     (!(uagent.indexOf('webtv') != -1)) ) &&
     ((uagent.indexOf("win") != -1) ||
     (uagent.indexOf("16bit") !=- 1) )){

       if (obj_ta.isTextEdit){
      obj_ta.focus();
      var sel = document.selection;
      var rng = sel.createRange();
      rng.colapse;
      if((sel.type == "Text" || sel.type == "None") && rng != null){
        if(ibClsTag != "" && rng.text.length > 0){
          ibTag += rng.text + ibClsTag;
        } else if(isSingle){
          isClose = true;
        }
        rng.text = ibTag;
      }
    } else {
      if(isSingle){
        isClose = true;
      }
      obj_ta.value += ibTag;
    }
  } else if ( obj_ta.selectionEnd ) {
    var ss = obj_ta.selectionStart;
    var es = obj_ta.selectionEnd;
    if (es <= 2){
      es = obj_ta.textLength;
    }

    var start  = (obj_ta.value).substring(0, ss);
    var middle = (obj_ta.value).substring(ss, es);
    var end    = (obj_ta.value).substring(es, obj_ta.textLength);
    middle = middle.replace(/\n/gm, '\n[*]');

    if (obj_ta.selectionEnd - obj_ta.selectionStart > 0){
      middle = ibTag + middle + ibClsTag;
    } else {
      //middle = ibTag + middle;
      var listvalue = "init";
      var thelist = "";

      while ( (listvalue != "") && (listvalue != null) )
      {
        listvalue = prompt('Geef een item voor de lijst op en druk op annuleren om te stoppen', "");
        if ( (listvalue != "") && (listvalue != null) )
        {
          thelist = thelist+"[*]"+listvalue+"\n";
        }
      }

      if ( thelist != "" )
      {
        middle = "[list]\n" + thelist + "[/list]\n";
      }

      if (isSingle){
        isClose = true;
      }
    }
    obj_ta.value = start + middle + end;
  } else{
    if (isSingle){
      isClose = true;
    }
    obj_ta.value += ibTag;
  }
  obj_ta.focus();
  obj_ta.className = obj_ta.className.replace('focus','');
  return isClose;
}

function tag_url(obj_ta)
{
    var FoundErrors = '';
    var enterURL   = prompt('Geef de URL voor de hyperlink', "http://");
    var enterTITLE = prompt('Geef de naam of title van de link', enterURL);

    if (!enterURL) {
        FoundErrors += " " + 'Geen URL opgegeven';
    }
    if (!enterTITLE) {
        FoundErrors += " " + 'Geen naam voor de URL opgegeven';
    }

    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

  doInsert("[url="+enterURL+"]"+enterTITLE+"[/url]", "", false, obj_ta);
  obj_ta.className = obj_ta.className.replace('focus','');
}

function tag_email(obj_ta)
{
  var FoundErrors = '';
  var emailAddress = prompt('Geef het email adres', "");
  var emailName    = prompt('Geef de naam voor de link', emailAddress);

  if (!emailAddress) {
    FoundErrors += " " + 'Geen emailadres opgegeven';
  }
  if (!emailName) {
    FoundErrors += " " + 'Geen naam opgegeven';
  }
  if (FoundErrors) {
      alert("Error!"+FoundErrors);
      return;
  }

  doInsert("[mailto="+emailAddress+"]"+emailName+"[/mailto]", "", false, obj_ta);
  obj_ta.className = obj_ta.className.replace('focus','');
}
/* UBB */

function ie_pngsupport()
{
  var transparentImage = HTMLDOCROOT + "/images/pnghack/transparent.gif";

  var pos = navigator.userAgent.indexOf("MSIE ");
  if (pos == -1) return false;
  var version = navigator.userAgent.substring(pos + 5);
  if (((version.indexOf("5.5") == 0) || (version.indexOf("6") == 0)) && (navigator.platform == ("Win32")))
  {
    var imgs = document.getElementsByTagName('img');
    for (var i=0; i<imgs.length; i++)
    {
      if (imgs[i].src.indexOf(transparentImage) == -1)
      {
        if (imgs[i].src.indexOf("png") == -1)
        {
          imgs[i].runtimeStyle.filter = "";
        }
        else
        {
          var oldsrc = imgs[i].src;
          imgs[i].src = transparentImage;
          imgs[i].runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + oldsrc + "',sizingMethod='scale')";
        }
      }
    }
  }
}

// http://www.amarasoftware.com/flash-problem.htm
function ie_fixflash()
{
  objects = document.getElementsByTagName("object");
  for (var i = 0; i < objects.length; i++)
  {
    objects[i].outerHTML = objects[i].outerHTML;
  }
}

function leadingZero(nr, digits)
{
  nr = nr.toString();
  while (nr.length < digits)
  {
    nr = '0' + nr;
  }
  return nr;
}

function sortnum(arr)
{
  return arr.sort(sortNumber);
}
function sortNumber(a, b)
{
  return a - b;
}

function array_sum(arr)
{
  var sum = 0;
  for (var i=0; i<arr.length; i++)
  {
    if (arr[i] > 0)
    {
      sum += arr[i]*1;
    }
  }
  return sum;
}
