/*******************************************************************************
  Deze website draait op het IPROX-platform van InfoProjects bv., IPROX is een
  state-of-the-art Content Management Systeem voor omvangrijke webomgevingen.
  Voor meer informatie, zie: http://www.infoprojects.nl en http://www.iprox.nl.
  
  @author : Jelle de Jong
            InfoProjects B.V.
            jelle.de.jong@infoprojects.nl
*******************************************************************************/

// GLOBALS
var is = new getClient();

// GETTERS
function getClient() {
  var agt      = navigator.userAgent.toLowerCase();
  var apv      = navigator.appVersion.toLowerCase();

  this.major   = parseInt(navigator.appVersion);
  this.minor   = parseFloat(navigator.appVersion);
  this.opera   = (agt.indexOf('opera')!=-1);
  this.opera5  = (this.opera && this.major < 6);
  this.ns      = ((agt.indexOf('mozilla')!=-1) && ((agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1)));
  this.ns4     = (this.ns && (this.minor >= 4.03) && (this.major < 5));
  this.ns6     = (this.ns && (this.major == 5) || this.opera);
  this.gecko   = (this.ns && (this.major >= 5));
  this.ie      = (agt.indexOf('msie') != -1);
  this.ie4     = (this.ie && (this.major == 3));
  this.ie45    = (agt.indexOf('msie 4.5') != -1);
  this.ie5     = (this.ie && (this.major == 4));
  this.mac     = (apv.indexOf('macintosh')>0);
  this.win     = (apv.indexOf('win')>0);	
  this.safari  = (agt.indexOf('afari')!=-1);
  this.ie4comp = ((this.ie4 && !this.mac) || this.ie45 || this.ie5);
  this.ns4comp = (this.ns4);
  this.ns6comp = (this.gecko || this.ns6);
  this.comp    = (this.ie4comp || this.ns4comp || this.ns6comp);
  
  return (this)
}

function onResize(method) {
  if(is.ns4comp || is.ns6comp) {
    return window.onresize = method;
  } else {
    document.body.onresize = method;
  }
}

function getWindowWidth() {
  if(is.ns6comp || is.ns4comp) {
    return window.innerWidth;
  } else if(is.ie4comp) {
    return document.body.clientWidth;
  }
}

function getElt() {
  if(is.ns4comp) {
    var currentLayer = document.layers[getElt.arguments[0]];

    for (var i=1; i<getElt.arguments.length && currentLayer; i++) {
      currentLayer = currentLayer.document.layers[getElt.arguments[i]];
    }
    return currentLayer;
  } else if(is.ie4comp) {
    var elt = document.all[getElt.arguments[getElt.arguments.length-1]];
    return(elt);
  } else if(is.ns6comp) {
  	var elt = document.getElementById(getElt.arguments[getElt.arguments.length-1]);
  	return(elt);
  }
}

function getEltDisplay(elt) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    return (elt.display);
  } else if(is.ie4comp) {
    return (elt.style.display);
  } else if(is.ns6comp) {
    return (elt.style.display);
  }
}

function getEltVisibility(elt) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    return (elt.visibility);
  } else if(is.ie4comp) {
    return (elt.style.visibility);
  } else if(is.ns6comp) {
    return (elt.style.visibility);
  }
}

function getEltBottom(elt) { 
  if(!elt || elt == null) {
    return 0;
  }
  if(is.ns4comp) {
    return (elt.bottom);
  } else if(is.ie4comp) {
    return (elt.style.pixelBottom);
  } else if(is.ns6comp) {
    return (elt.offsetBottom);
  }
}

function getEltTop(elt) { 
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    return (elt.top);
  } else if(is.ie4comp) {
    return (elt.style.pixelTop);
  } else if(is.ns6comp) {
    return (elt.offsetTop);
  }
}

function getEltLeft(elt) { 
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    return (elt.left);
  } else if(is.ie4comp) {
    return (elt.style.pixelLeft);
  } else if(is.ns6comp) {
    return (elt.offsetLeft);
  }
}

function getEltWidth(elt) { 
  if(!elt || elt == null) {
    return 0;
  }
  if(is.ns4comp) {
    return(elt.document.width);
  } else {
    return (elt.offsetWidth);
  }

}

function getEltHeight(elt) { 
  if(!elt || elt == null) {
    return 0;
  }
  if(is.ns4comp) {
    return(elt.document.height);
  } else if(is.ie4comp) {
    return (elt.offsetHeight);
  } else if(is.ns6comp) {
    return (elt.offsetHeight);
  }
}

function getEltPositiontype(elt) {
  if(!elt || elt == null) {
    return;
  }
  return elt.style.position;
}

// SETTERS
function setEltPositiontype(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  elt.style.position = value;
}

function setEltClass(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  elt.className = value;
}

function setEltDisplay(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.display = value;
  } else if(is.ie4comp) {
    elt.style.display = value;
  } else if(is.ns6comp) {
    elt.style.display = value;
  }
}

function setEltVisibility(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.visibility = value;
  } else if(is.ie4comp) {
    elt.style.visibility = value;
  } else if(is.ns6comp) {
    elt.style.visibility = value;
  }
}

function setEltLeft(elt, x) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.left=x;
  } else if(is.ie4comp) {
    elt.style.pixelLeft=x;
  } else if(is.ns6comp) {
    elt.style.left = (x + 'px');
  }
}

function setEltTop(elt, y) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.top=y;
  } else if(is.ie4comp) {
    elt.style.pixelTop=y;
  } else if(is.ns6comp) {
    elt.style.top= (y + 'px');
  }
}

/**
 * Method to fix the date to the proper format.
 */
function fixDate(name,source,target) {
  var y = document.forms[name].elements[source+"_y"];
  var m = document.forms[name].elements[source+"_m"];
  var d = document.forms[name].elements[source+"_d"];
  
  var yVal = y.options[y.selectedIndex].value+"";
  var mVal = m.options[m.selectedIndex].value+"";
  var dVal = d.options[d.selectedIndex].value+"";
  
  var dateVal = yVal+mVal+dVal;
  
  document.forms[name].elements[target].value = (dateVal.length == 8)?dateVal:"";
}

/**
 * Date input fields
 */
function fixFormDateFields(formname,nam, namField) {
  var selJ=document.forms[formname].elements[nam+'Y'];
  var selM=document.forms[formname].elements[nam+'M'];
  var selD=document.forms[formname].elements[nam+'D'];
  var valJ=selJ.options[selJ.options.selectedIndex].value;
  var valM=selM.options[selM.options.selectedIndex].value;
  var valD=selD.options[selD.options.selectedIndex].value;
  var val='';
  if (valJ!=''&&valM!=''&&valD!='') {
    var vDate=new Date();
    var ivalJ=parseInt(valJ);
    var ivalM=parseInt(valM);
    var ivalD=parseInt(valD);
    vDate.setMonth(ivalM-1); //extra ivm fout in setMonth?
    var maxLoopCount = 0;
    do {
      
      vDate.setFullYear(ivalJ);
      vDate.setMonth(ivalM-1);
      vDate.setDate(ivalD);
      if (ivalD > 0) ivalD--;
      maxLoopCount++;
      //status = (vDate.getFullYear()!=ivalJ) + "::" + (vDate.getMonth()!=ivalM-1) + "::" + (vDate.getDate()!=ivalD+1);
    } while ((vDate.getFullYear()!=ivalJ ||
             vDate.getMonth()!=ivalM-1 ||
             vDate.getDate()!=ivalD+1) &&
             maxLoopCount < 31);    
    selD.value=++ivalD;
    valD=""+ivalD;
    val='0000'.substr(valJ.length)+valJ+'00'.substr(valM.length)+valM+'00'.substr(valD.length)+valD;
  }
  document.forms[formname].elements[namField].value=val;
}

function setFormDateFields(formname,nam, namField, iproxdate) {
  var selJ=document.forms[formname].elements[nam+'Y'];
  var selM=document.forms[formname].elements[nam+'M'];
  var selD=document.forms[formname].elements[nam+'D'];

  var year =  iproxdate.substring(0, 4);
  var month = iproxdate.substring(4, 6);
  var day = iproxdate.substring(6, 8);
  
  var iyear =  parseInt(year, 10);
  var imonth = parseInt(month, 10);
  var iday = parseInt(day, 10);
  
  selectByValue(selJ, iyear.toString()); 
  selectByValue(selM, imonth.toString()); 
  selectByValue(selD, iday.toString()); 

  fixFormDateFields(formname,nam, namField);
}

/**
 * Time input fields
 */
function fixFormTimeFields(formname, nam, namField) {
  var selH=document.forms[formname].elements[nam+'H'];
  var selM=document.forms[formname].elements[nam+'M'];
  var valH=selH.options[selH.options.selectedIndex].value;
  var valM=selM.options[selM.options.selectedIndex].value;
  var val='';
  if (valH!=''&&valM!='') {
    val='00'.substr(valH.length)+valH+'00'.substr(valM.length)+valM;
  }
  document.forms[formname].elements[namField].value=val;
}

function setFormTimeFields(formname, nam, namField, iproxtime) {
  var selH=document.forms[formname].elements[nam+'H'];
  var selM=document.forms[formname].elements[nam+'M'];

  var hour =  iproxtime.substring(0, 2);
  var minute = iproxtime.substring(2, 4);
  
  var ihour =  parseInt(hour, 10);
  var iminute = parseInt(minute, 10);
  
  selectByValue(selH, ihour.toString()); 
  selectByValue(selM, iminute.toString()); 

  fixFormTimeFields(formname, nam, namField);
}

function selectByValue(selectbox, selectedvalue) {
  for (var i = 0; i < selectbox.options.length; i++) {
    if (selectbox.options[i].value == selectedvalue) {
      selectbox.options.selectedIndex = i;
      break;
    }  
  }  
}