////////////////////
// MATH FUNCTIONS //
////////////////////
  Number.seperator = '.';
  Number.prototype.round = function(n) {
    if (!n) return Math.round(this.valueOf());
    for ( var i = 0, len = 1; i < n;i++) len *= 10;
    if (!this.valueOf()) var res = len.toString().replace(/1/,'0');
    else var res = Math.round(this.valueOf() * len).toString();
    res = res.slice(0,res.length-n) + Number.seperator + res.slice(res.length-n, res.length);
    if (res.length == n + 1) res = '0' + res;
    return res;
  }


  function round(value, dec) {
    var tmp = new Number();
    tmp = value;
    return tmp.round(dec);
  }


  function randomNumber(seed) {
    return Math.round(Math.random() * seed);
  }


/////////////////////
// DEBUG FUNCTIONS //
/////////////////////
  function w(str) {
    document.write(str);
  }


  function d(str) {
    alert(str);
  }


//////////////////////
// STRING FUNCTIONS //
//////////////////////
  function jsEsc(str, bEnclose) {
    if(str == null) return 'null';
    str = new String(str);
    str = str.replace(/\\/g, "\\\\");
    str = str.replace(/\'/g, "\\'");
    str = str.replace(/\"/g, "\\\"");
    str = str.replace(/\n/g, "\\n");
    str = str.replace(/\r/g, "\\r");
    str = str.replace(/\t/g, "\\t");
    if(bEnclose == 0) return str;
    return "'" + str + "'";
  }


  function isEmpty(str) {
    if(!str) return true;
  }


  function trim(str) {
    if(str == null) return 'null';
    str = new String(str);
    str = str.replace(/^\s+|\s+$/g,'');
    return str;
  }


///////////////////////////
// QUERYSTRING FUNCTIONS //
///////////////////////////
  function getArgs(strURL) {
    var args   = [];
    var strURL = (strURL) ? strURL : location.search;
    var query  = strURL.substring(1);
    var pairs  = query.split('&');
    var totalPairs = pairs.length;
    for(var i = 0; i < totalPairs; i++) {
      var pos       = pairs[i].indexOf('=');
      if(pos == -1) continue;
      var argname   = pairs[i].substring(0, pos);
      var val       = pairs[i].substring(pos + 1);
      args[argname] = unescape(val);
    }
    return args;
  }


///////////////////
// DOM-FUNCTIONS //
///////////////////
  function $() {
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
      var element = arguments[i];
      if (typeof element == 'string')
        element = document.getElementById(element);

      if (arguments.length == 1)
        return element;

      elements.push(element);
    }
    return elements;
  }


////////////////////
// GUID-FUNCTIONS //
////////////////////
  function S4() {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  }
  function generateGUID() {
    var guid = (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4()).toUpperCase();
    return guid;
  }


////////////////////
// DATE-FUNCTIONS //
////////////////////
  function isDate_dd_mm_yyyy(dd, mm, yyyy) {
    if(isNaN(dd) || isNaN(mm) || isNaN(yyyy)) return false;

    if(dd <  1) return false;
    if(dd > 31) return false;

    if(mm <  1) return false;
    if(mm > 12) return false;

    if(yyyy < 1700) return false;
    if(yyyy > 2200) return false;

    if(mm ==  4 && dd == 31) return false;
    if(mm ==  6 && dd == 31) return false;
    if(mm ==  9 && dd == 31) return false;
    if(mm == 11 && dd == 31) return false;

    if(dd == 29 && mm == 2) {
      if(yyyy % 400 == 0) return true;
      if(yyyy % 100 == 0) return false;
      if(yyyy %   4 == 0) return true;
      return false;
    }

    return true;
  }


  function isDate_dd_mm_yyyy_2(strDat) {
    var arrDat = strDat.split('-');
    if(arrDat.length != 3) return false;

    var dd = arrDat[0];
    var mm = arrDat[1];
    var yyyy = arrDat[2];

    if(isNaN(dd) || isNaN(mm) || isNaN(yyyy)) return false;

    if(dd <  1) return false;
    if(dd > 31) return false;

    if(mm <  1) return false;
    if(mm > 12) return false;

    if(yyyy < 1700) return false;
    if(yyyy > 2200) return false;

    if(mm == 2) {
      if(dd > 29) return false;
      if(dd == 29) {
        if(yyyy % 400 == 0) return true;
        if(yyyy % 100 == 0) return false;
        if(yyyy %   4 == 0) return true;
        return false;
      }
    }

    if(mm ==  4 && dd == 31) return false;
    if(mm ==  6 && dd == 31) return false;
    if(mm ==  9 && dd == 31) return false;
    if(mm == 11 && dd == 31) return false;

    return true;
  }


  function fileDate2String(dat) {
    var objDat = new Date(dat);

    var dd = objDat.getDate();
    dd = (dd < 10) ? '0' + dd : dd;

    var mm = (objDat.getMonth() + 1);
    mm = (mm < 10) ? '0' + mm : mm;

    var yyyy = objDat.getYear();

    var hh = objDat.getHours();
    hh = (hh < 10) ? '0' + hh : hh;

    var min = objDat.getMinutes();
    min = (min < 10) ? '0' + min : min;

    var ss = objDat.getSeconds();
    ss = (ss < 10) ? '0' + ss : ss;

    var arrDate = [];
    arrDate[arrDate.length] = dd;
    arrDate[arrDate.length] = '-';
    arrDate[arrDate.length] = mm;
    arrDate[arrDate.length] = '-';
    arrDate[arrDate.length] = yyyy;
    arrDate[arrDate.length] = ' ';
    arrDate[arrDate.length] = hh;
    arrDate[arrDate.length] = ':';
    arrDate[arrDate.length] = min;
    arrDate[arrDate.length] = ':';
    arrDate[arrDate.length] = ss;
    return arrDate.join('');
  }


////////////////////////
// FAVORITE-FUNCTIONS //
////////////////////////
  function createFavorite() {
    var title = 'Flashveendam.NL';
    var url = 'http://www.flashveendam.nl';

    if(window.sidebar) {
      // Mozilla/Firefox
      window.sidebar.addPanel(title, url, '');
    }
    else if(document.all) {
      // IE Favorite
      window.external.AddFavorite('http://www.flashveendam.nl', 'Flashveendam.NL');
    }
    else if(window.opera && window.print) {
      // Opera Hotlist
      return true;
    }
  }

