﻿<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->

function Utilities(){}
/**
* Display Tooltip text on mouse over.
* @param tooltip The text to be displayed.
*/
Utilities.ShowTooltip = function(tooltip) {}

/**
* Hide Tooltip on mouse out.
*/
Utilities.HideTooltip = function(){
}

/**
* Collapse all extenders before expanding another extender.
*/
Utilities.CollapseExtenders = function (toolbar, tagFlag) {
      if(toolbar==1) {
        Toolbar.CollapseExtenders();
        }
      if(tagFlag==1) {
        TagFlag.CollapseExtenders();
        }        
}

Utilities.CreateEmail = function(c,a,b,d){
    var linktext = 'mailto:' + a + '@' + c + '.' + b;
    if(d != '')
    {
         linktext += '?subject=' + d;
    } 
    window.location = linktext;
}

Utilities.CreateCSSRef = function(url){
     var obj = document.createElement("link");
     obj["href"] = url;
     obj["rel"] = "stylesheet";
     obj["type"] ="text/css";
     return obj;
}

Utilities.RTrim = function(str) {
	var i, j, letter;
	j = -1;
	for (i=str.length-1;i>=0;--i) {
		letter = str.charAt(i);
		if (letter != ' ') {
			j = i;
			break;
		}
	}
	if (j != -1) return str.substring(0,j+1);
	else return '';
}

Utilities.LTrim = function(str) {
	var i, j, letter;
	j = -1;
	for (i=0;i<str.length;++i) {
		letter = str.charAt(i);
		if (letter != ' ') {
			j = i;
			break;
		}
	}
	if (j != -1) return str.substring(j,str.length);
	else return '';
}
	
Utilities.Trim = function(str) {
	return Utilities.RTrim(Utilities.LTrim(str));
}	

/**
* Validates a text entry. 
*/
Utilities.Validate = function(string) {
    for (var i=0, output='', valid="123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ?!.-,ë"; i<string.length; i++)
       if (valid.indexOf(string.charAt(i)) != -1)
          output += string.charAt(i)
    return output;
} 


/**
* Validates an e-mail entry. 
*/
Utilities.ValidateEmail = function(string) {
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    if (filter.test(string))
    {   ValidateEmail=true; }
    else   
    {   ValidateEmail=false; }

    return (ValidateEmail)
} 

/**
* Validates an URL entry
*/
Utilities.ValidateURL = function(url) {
    var v = new RegExp();            
    v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%\~&\?\/.=]+$"); 
    if (!v.test(url)) {        
        return false;
    } 
    return true;
}

function Timer() {}
    Timer.secs = 4;
    Timer.delay = 1000;
    Timer.running = false;
    Timer.ID = null;
    
Timer.StartTimer = function() {
    if (Timer.secs == 0)
    {
        Timer.StopTimer(Timer.ID);
        Checkta.SetLivePins();  //to do: Catch event in Checkta.js       
    }
    else 
    {
        //self.status = Timer.secs;
        Timer.secs --;
        Timer.running = true;
        Timer.ID = self.setTimeout("Timer.StartTimer()", Timer.delay);        
    }
}

Timer.StopTimer = function() {
    if(Timer.running) {
        clearTimeout(Timer.ID);
        Timer.running = false;
    } 
}


Utilities.getElementById = function(obj) {
    var result =  document.all ? document.all[obj] : document.getElementById(obj);
    return result;
}

Utilities.ResetField = function(field, defaultValue) {
    var input = Utilities.getElementById(field);
    if (input.value == defaultValue)
        input.value = "";
    else if (input.value == "")
        input.value = defaultValue;
}

//function will opens the searchpage with the requested parameters. 
//     if environment isn't appropriate set "null" value.
Utilities.Search = function(searchPage, searchField, environmentField, defaultString) {
    var search = Utilities.getElementById(searchField).value;
    
    if (environmentField == "null")
        var environment = "all";
    else
        var environment = Utilities.getElementById(environmentField).value;    
    
    if (search != "" && search != defaultString)
    {
        if (environment == "all")
            var url = searchPage + "?search=" + search
        else
            var url = searchPage + "?search=" + search + "&environment=" + environment;            
        window.location.href = url;
    }
    
    return false;   
}

// function to handle event enter keypress with .net controls to trigger the correct button
Utilities.OnEnter = function(evt, targetId) {
    evt = (evt) ? evt : ((event) ? event : null);    
    if (evt) {    
      if(evt.keyCode == 13) {                 
          var Button=Utilities.getElementById(targetId);          
          if (Button != null) {
              if (Button.type == "submit" || Button.type == "button") {
                Button.click();          
              }
          }
          evt.cancel=true;
      }     
    }     
}

//function to set focus on a specified button. Used in MediaUpload-control!
Utilities.FocusObject = function(id) {
    Utilities.getElementById(id).style.border = 'solid 2px #FF0000';}        
Utilities.BlurObject = function(id) {
    Utilities.getElementById(id).style.border = 'solid 1px #CCCCCC';}     
    

/* Cookie Functions */
Utilities.SetCookie = function(cookieName,cookieValue,nDays) {
     var today = new Date();
     var expire = new Date();
     if (nDays==null || nDays==0) nDays=1;
     expire.setTime(today.getTime() + 3600000*24*nDays);
     document.cookie = cookieName+"="+escape(cookieValue)
                     + ";expires="+expire.toGMTString();                                          
}
    
Utilities.GetCookie = function (cookieName) {
    var dc = document.cookie;
    var prefix = cookieName + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}


/* Checkbox validation */
Utilities.ValidateCheckbox = function (targetId, message)
{
    var Chkbox = Utilities.getElementById(targetId);
    
    if (Chkbox != null) {
        if (!Chkbox.checked) {
            alert(message);
        }
        else { 
            return true;
        }
    }                      
    return false;
}

Utilities.TestFileType = function( uploadFileId, fileTypes ) 
{         
    var fileName = Utilities.getElementById(uploadFileId);      
    if (!fileName) return;

    dots = fileName.value.split(".");        
    fileType = "." + dots[dots.length-1];
    fileType = fileType.toLowerCase();    
    
    if (fileTypes.indexOf(fileType) != -1) {        
        return true;
    } else {
        alert("Gelieve enkel bestanden met volgende types te versturen: \n\n" + fileTypes + "\n\nProbeert u het eens opnieuw."); 
        return false;
    }    
}

/* Date validation */

var dtCh= "-";
var minYear=1900;
var maxYear=2200;

Utilities.isInteger = function(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

Utilities.stripCharsInBag = function(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

Utilities.daysInFebruary = function (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

Utilities.DaysArray = function(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;}
		if (i==2) {this[i] = 29;}
   } 
   return this;
}

Utilities.isTime = function(tmStr) {
    var v = new RegExp();       
    v.compile("^(20|21|22|23|[01]\\d|\\d)(([:][0-5]\\d){1,2})$");
    
    if (!v.test(tmStr))  { 
        //alert("U moet een geldige tijd opgeven (hh:mm)");
        return false;
    }
    return true;
}

Utilities.isDate = function(dtStr, msg){
	var daysInMonth = Utilities.DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strDay=dtStr.substring(0,pos1);
	var strMonth=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	if (pos1==-1 || pos2==-1){
	    error = "Datum is niet in geldig formaat (dd-mm-jjjj)";
	    if(msg == null)
		    alert(error);
		else
		    msg.innerHTML = error;		
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
	    error = "Geen geldige maand opgegeven";
	    if(msg == null)
		    alert(error);
		else
		    msg.innerHTML = error;		
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>Utilities.daysInFebruary(year)) || day > daysInMonth[month]){
	    error = "Geen geldige dag opgegeven";
	    if(msg == null)
		    alert(error);
		else
		    msg.innerHTML = error;		
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		error = "Gelieve een geldige datum in te geven tussen "+minYear+" and "+maxYear;
	    if(msg == null)
		    alert(error);
		else
		    msg.innerHTML = error;				
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || Utilities.isInteger(Utilities.stripCharsInBag(dtStr, dtCh))==false){
	    error = "Geen geldige datum";
	    if(msg == null)
		    alert(error);
		else
		    msg.innerHTML = error;		
		return false;
	}
return true;
}


Utilities.CheckDateCV = function(source, arguments)
{
   var string = arguments.Value
   var bDag = false;
   var bJaar = false;
   
   
   if (string.search(/^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/) != -1)
   {                                             
       var strSeparator = string.substring(2,3) //find date separator
       
       var arrayDate = string.split(strSeparator); //split date into month, day, year
       //create a lookup for months not equal to Feb.
       var arrayLookup = { '01' : 31,'02' : 29,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,'08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
       var intDay = parseInt(parseFloat(arrayDate[0]))
                              
       //check if month value and day value agree
       if(arrayDate[1] > 0 && arrayDate[1] < 13)
       {
          if(arrayLookup[arrayDate[1]] != null && typeof(arrayLookup[arrayDate[1]]) != "undefined") 
          {
              if(intDay <= arrayLookup[arrayDate[1]] && intDay != 0)
                          bDag = true;
          }
          if(bDag)
          {
              var intYear = parseInt(arrayDate[2]);
              if(intYear < minYear || intYear > maxYear)
                    bJaar = false;
              else
              {                  
                  var intMonth = parseInt(parseFloat(arrayDate[1]));                  
                  if(intMonth == 2)
                  {
                      if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) )
                      {
                                  bJaar = true;
                      }
                  }
                  else
                  {
                    bJaar = true;
                  }
               }
          }
          else
              arguments.IsValid = false;
       }
       else 
            arguments.IsValid = false;
       
       arguments.IsValid = (bJaar && bDag);
   }
   else
       arguments.IsValid = false;
}

Utilities.SwitchDisplayDivs = function(showDiv,divList) {
    for(i = 0;i < divList.length;i++) {
        if(divList[i] == showDiv) {
            Utilities.getElementById(divList[i]).style.display = 'block';
         }
         else {
            Utilities.getElementById(divList[i]).style.display = 'none';
         }
    }
}

Utilities.CreateBookmarkLink = function(theDescription,theURL) {
	if(document.all) { // IE
		window.external.AddFavorite( theURL, theDescription); 
	}
	else{
		alert('Gebruik CTRL-D om deze site toe te voegen aan uw favorieten.'); 
	}
 }
 
Utilities.setHome = function(theLink,theURL)
{
	if(document.all) { // IE
		theLink.style.behavior='url(#default#homepage)';
		theLink.setHomePage(theURL);
   }
   else {
		alert('U kan deze pagina instellen als uw homepage via Extra - Opties.'); 
   }
}

Utilities.toggleDivEx = function(theID,toggleImgID,openArrowImg,closeArrowImg)
{
    action = 'close';
    if(Utilities.getElementById(theID).style.display == 'none') {
        action = 'open';
    }
    if(action == 'open') {
        Utilities.getElementById(theID).style.display = 'block';
        if(toggleImgID != 'undefined') {
            Utilities.getElementById(toggleImgID).src = closeArrowImg;
        }    
    }
    else {
        Utilities.getElementById(theID).style.display = 'none';    
        if(toggleImgID != 'undefined') {
         Utilities.getElementById(toggleImgID).src = openArrowImg;
        }    
    }
}

Utilities.switchDiv = function(divID1,divID2) {
    var div1 = Utilities.getElementById(divID1);
    var div2 = Utilities.getElementById(divID2);
    if(div1.style.display == 'none') {
       div1.style.display = 'block';
       div2.style.display = 'none';
    }
    else {
       div1.style.display = 'none';
       div2.style.display = 'block';
    }
}

Utilities.toggleDiv = function(divID) {
    var myDiv = Utilities.getElementById(divID);
    if(myDiv.style.display == 'none') {
       myDiv.style.display = 'block';
    }
    else {
       myDiv.style.display = 'none';
    }
}

Utilities.ExistInList = function (selectObject, optionValue)
{
    var found = false;
    for (i=0; i<selectObject.options.length; i++){
     if (optionValue == selectObject.options[i].value ){
        found = true;
        break
     }
    }    
    return found;
}