﻿var KEY_BS = 8;
var KEY_TAB = 9;
var KEY_ENTER = 13;
var KEY_SHIFT = 16;
var KEY_CTRL = 17;
var KEY_ALT = 18;
var KEY_PAUSE = 19;
var KEY_CAPSLOCK = 20;
var KEY_ESC = 27;
var KEY_PAGEUP = 33;
var KEY_PAGEDOWN = 34;
var KEY_END = 35;
var KEY_HOME = 36;
var KEY_LEFT = 37;
var KEY_UP = 38;
var KEY_RIGHT = 39;
var KEY_DOWN = 40;
var KEY_INS = 45;
var KEY_DEL = 46;
var KEY_WINDOWLEFT = 91;
var KEY_WINDOWRIGHT = 92;
var KEY_SELECT = 93;
var KEY_NUMPAD0 = 96;
var KEY_NUMPAD1 = 97;
var KEY_NUMPAD2 = 98;
var KEY_NUMPAD3 = 99;
var KEY_NUMPAD4 = 100;
var KEY_NUMPAD5 = 101;
var KEY_NUMPAD6 = 102;
var KEY_NUMPAD7 = 103;
var KEY_NUMPAD8 = 104;
var KEY_NUMPAD9 = 105;
var KEY_NUMPADSTER = 106;
var KEY_NUMPADPLUS = 107;
var KEY_NUMPADMIN = 109;
var KEY_NUMPADPUNT = 110;
var KEY_NUMPADSLASH = 111;
var KEY_F1 = 112;
var KEY_F2 = 113;
var KEY_F3 = 114;
var KEY_F4 = 115;
var KEY_F5 = 116;
var KEY_F6 = 117;
var KEY_F7 = 118;
var KEY_F8 = 119;
var KEY_F9 = 120;
var KEY_F10 = 121;
var KEY_F11 = 122;
var KEY_F12 = 123;
var KEY_NUMLOCK = 144;
var KEY_SCROLLLOCK = 145;
var KEY_PUNT = 190;

var ALFANUMERIEK = 0;
var NUMERIEK = 1;

var keuzeknopcursor = null;
var bKeuzeKnopMetEersteKarakter = true;
var iMoveGeweest = 0;
var bUpdateWWInUse = false;
var functietoetsen = null;

var blockPlusMin = 0;


document.onmousemove=new Function("iMoveGeweest++;");

function MaakFixedHeader(tbl, bVasteBreedte, bShowHeader) {
  if (tbl.rows.length > 1) {
    if (bShowHeader) {
      var tblGrid = ZoekNode(ZoekNode(ZoekNode(tbl.rows[1].cells[0].firstChild, 'DIV').firstChild, 'DIV').firstChild, 'TABLE');
      var tblHeader = tblGrid.cloneNode(false);
      var trNew = tblHeader.insertRow(-1);
      var trNew2 = tblGrid.insertRow(-1);
      var trClone = tblGrid.rows[0].cloneNode(true);
      var trClone2 = tblGrid.rows[0].cloneNode(true);
      var divHeader = ZoekNode(tbl.rows[0].cells[0].firstChild, 'DIV')
      var i;
      tblHeader.firstChild.replaceChild(trClone, trNew);
      tblGrid.lastChild.replaceChild(trClone2, trNew2);
      trClone2.style.visibility = 'hidden';
      trClone2.style.borderBottomStyle = 'none';
      for (i = 0; i < trClone2.cells.length; i++) {
        trClone2.cells[i].style.borderBottomStyle = 'none';
      }
      tblGrid.deleteRow(0);
      divHeader.appendChild(tblHeader);
    }
    ResizeFixedHeader(tbl, true, bVasteBreedte, bShowHeader);
    if (!window.onresize) {
      window.onresize = new Function("ResizeFixedHeader(document.getElementById('" + tbl.id + "'),false," + bVasteBreedte + "," + bShowHeader + ");");
    } else {
      var oldresize = window.onresize;
      eval('window.onresize = function() {oldresize();ResizeFixedHeader(document.getElementById("' + tbl.id + '"),false," + bVasteBreedte + "," + bShowHeader + ");}');
    }
  }	  
}

function ResizeFixedHeader(tbl,bUitvullen,bVasteBreedte,bShowHeader) {
  var tdContainer = tbl.parentNode;
  var divScroll = ZoekNode(tbl.rows[1].cells[0].firstChild,'DIV');
  var tblGrid = ZoekNode(ZoekNode(divScroll.firstChild,'DIV').firstChild,'TABLE');
  var divHeaderScroll = ZoekNode(tbl.rows[0].cells[0].firstChild,'DIV');
  var iHdrHoogte;
  if (bShowHeader) { 
    var tblHeader = ZoekNode(divHeaderScroll.firstChild,'TABLE');
    tbl.rows[0].cells[0].style.height = tblHeader.clientHeight + 'px';
    divHeaderScroll.style.height = tblHeader.clientHeight + 'px';
    divHeaderScroll.style.minHeight = tblHeader.clientHeight + 'px';
    divHeaderScroll.style.maxHeight = tblHeader.clientHeight + 'px';
    divHeaderScroll.style.minWidth = (tdContainer.clientWidth)+'px';
    divHeaderScroll.style.maxWidth = (tdContainer.clientWidth)+'px';
    divHeaderScroll.style.overflow = 'visible';
    divHeaderScroll.style.overflowX = 'hidden';
    iHdrHoogte = tblHeader.clientHeight;
  } else {
    iHdrHoogte = 0;
  }
  divScroll.style.height = (tdContainer.clientHeight - iHdrHoogte)+'px';
  divScroll.style.minHeight = (tdContainer.clientHeight - iHdrHoogte)+'px';
  divScroll.style.maxHeight = (tdContainer.clientHeight - iHdrHoogte)+'px';
  divScroll.style.minWidth = (tdContainer.clientWidth)+'px';
  divScroll.style.maxWidth = (tdContainer.clientWidth)+'px';
  divScroll.style.overflow = 'auto';
  if (bShowHeader) { 
    //if (bVasteBreedte) tblHeader.rows[0].width = tblGrid.rows[0].clientWidth;
    if (!bVasteBreedte) divScroll.style.overflowX = 'hidden';
    for (var i=0;i<tblGrid.rows[0].cells.length-1;i++) {
      tblHeader.rows[0].cells[i].width = tblGrid.rows[0].cells[i].clientWidth - 2;
	  }
    for (var i=0;i<tblGrid.rows[0].cells.length-1;i++) {
      tblHeader.rows[0].cells[i].width = tblGrid.rows[0].cells[i].clientWidth - 2;
	  }
	}
}

function ScrollFixedHeader(nd) {
  document.getElementById(nd.id + '_header').scrollLeft = nd.scrollLeft;
  window.focus();
}

function MaakScrollDiv(id) {
  var div = document.getElementById(id);
  div.style.height = div.parentNode.clientHeight + 'px';
  div.style.minHeight = div.parentNode.clientHeight + 'px';
  div.style.maxHeight = div.parentNode.clientHeight + 'px';
  div.style.minWidth = div.parentNode.clientWidth + 'px';
  div.style.maxWidth = div.parentNode.clientWidth + 'px';
  div.style.overflow = 'auto';
}

function ZoekNode(nd,nn) {
  while (nd != null) {
    if (nd.nodeName == nn) { 
      break; 
    } 
    nd = nd.nextSibling; 
  }
  return nd;
}

function KeyboardHandler(e) {
  var event = (window.event) ? window.event : e;
  var iKeyCode= event.keyCode;
  var sKnop = '';
  if (iKeyCode==KEY_UP) sKnop = 'kkUp'; 
  if (iKeyCode==KEY_LEFT) sKnop = 'kkLeft'; 
  if (iKeyCode==KEY_RIGHT) sKnop = 'kkRight'; 
  if (iKeyCode==KEY_DOWN) sKnop = 'kkDown';
  if (sKnop != '') {
    if (keuzeknopcursor && (keuzeknopcursor.getAttribute(sKnop) != null && keuzeknopcursor.getAttribute(sKnop) != '')) {
      KeuzeKnopSelect(document.getElementById(keuzeknopcursor.getAttribute(sKnop)),true)
    }
  }
  if (keuzeknopcursor) {
    if (keuzeknopcursor.getAttribute('kkParentGrid')!=null) {
      var sGridID = keuzeknopcursor.getAttribute('kkParentGrid').substr(0,keuzeknopcursor.getAttribute('kkParentGrid').length-10);
      if (document.getElementById(sGridID).getAttribute('kkExtraKeys')!=null) {
        var sExtraKeys = document.getElementById(sGridID).getAttribute('kkExtraKeys');
        var sToetsen = sExtraKeys.split('^');
        for (i=0; i<sToetsen.length; i++) {
          var sKeyFunctie = sToetsen[i].split('|');
          var sKeys = sKeyFunctie[0].split('+');         
          for (j=0; j<sKeys.length; j++) {
            if (iKeyCode==sKeys[j]) {
              return VoerUit(event,sKeyFunctie[1],iKeyCode);
            }
          }
        }
      }
    }
  }
  if (functietoetsen) {
    var sExtraKeys = functietoetsen;
    var sToetsen = sExtraKeys.split('^');
    for (i=0; i<sToetsen.length; i++) {
      var sKeyFunctie = sToetsen[i].split('|');
      var sKeys = sKeyFunctie[0].split('+');         
      for (j=0; j<sKeys.length; j++) {
        if (iKeyCode==sKeys[j]) {
          return VoerUit(event,sKeyFunctie[1],iKeyCode);
        }
      }
    }    
  }
  if (iKeyCode==KEY_ENTER) {
    if (keuzeknopcursor) {
      if (keuzeknopcursor.getAttribute('kkClick')!='') {
        return VoerUit(event, keuzeknopcursor.getAttribute('kkClick'),iKeyCode);
      } 
    }
  }
  if (bKeuzeKnopMetEersteKarakter) KeuzeKnopSelect(DoorloopKeuzeKnoppenVoorEersteKarakter(keuzeknopcursor,String.fromCharCode(iKeyCode).toUpperCase()),false);
}


function DoorloopKeuzeKnoppenVoorEersteKarakter(nd,sKar) {
  if ("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".indexOf(sKar)!=-1) {
    var eerste = null;
    var eereerste = null;
    var elements = document.getElementsByTagName("*"); 
    for(var i=0; elements[i]; i++) { 
      var e = elements[i];
      if (e.getAttribute("kkClick") != null) {
        if (getText(e).substr(0,1).toUpperCase()==sKar) {
          if (eerste==null&&e!=nd) {
            eerste=e;
          } else {
            if (e==nd) {
              eereerste=eerste;
              eerste=null;
            }
          }
        }
      } 
    }
    if (eerste==null) eerste=eereerste;
    return eerste;
  }
}

function getText(el) { 
  if (el.textContent) return Trim(el.textContent);
  if (el.innerText)   return Trim(el.innerText);
  return Trim(el.innerHTML.replace(/<[^>]*>/g,''));
}

function LTrim(str) {
  for (var k=0; k<str.length && str.charAt(k)<=" " ; k++); 
  return str.substring(k,str.length); 
} 


function RTrim(str) { 
  for (var j=str.length-1; j>=0 && str.charAt(j)<=" " ; j--); 
  return str.substring(0,j+1); 
} 


function Trim(str) { 
  return LTrim(RTrim(str)); 
}


function KeuzeKnopUit() {
  if (keuzeknopcursor) {
    if (keuzeknopcursor.getAttribute('kkParentGrid')!=null) {
      var i;
      for (i=keuzeknopcursor.getAttribute('kkCellStart'); i<keuzeknopcursor.cells.length; i++) {
        keuzeknopcursor.cells[i].className = 'Regels' + keuzeknopcursor.className.substr(6);
        if (keuzeknopcursor.style.color!='') {
          keuzeknopcursor.cells[i].style.color=keuzeknopcursor.style.color;
        }
      }
    } else {
      if (keuzeknopcursor.getAttribute('kkClassName')!=null) {
        keuzeknopcursor.className = keuzeknopcursor.getAttribute('kkClassName');
      } else {
        keuzeknopcursor.className = 'Keuzeknop';
      }
    }
    if (keuzeknopcursor.getAttribute('kkLeave')!='') {
      eval(keuzeknopcursor.getAttribute('kkLeave'));
    }
    keuzeknopcursor = null;
  }
}


function KeuzeKnopSelect(nd,bMetPijltjes) {
  if (nd) {
    if (keuzeknopcursor) {
      if (keuzeknopcursor.getAttribute('kkParentGrid')!=null) {
        if (bMetPijltjes) {
          var vanGrid = keuzeknopcursor.id.substr(0,keuzeknopcursor.id.lastIndexOf('_'));
          var vanRow = keuzeknopcursor.id.substr(keuzeknopcursor.id.lastIndexOf('_') + 1);
          var naarGrid = nd.id.substr(0,nd.id.lastIndexOf('_'));
          if (vanGrid != naarGrid) {
            if (document.getElementById(naarGrid + '_' + vanRow)) {
              if (document.getElementById(naarGrid + '_' + vanRow).getAttribute('kkParentGrid')!=null) {
                nd = document.getElementById(naarGrid + '_' + vanRow);
              }
            } else {
              return;
            }
          }
        }
        var i;
        for (i=keuzeknopcursor.getAttribute('kkCellStart'); i<keuzeknopcursor.cells.length; i++) {
          keuzeknopcursor.cells[i].className = 'Regels' + keuzeknopcursor.className.substr(6);
          if (keuzeknopcursor.style.color!='') {
            keuzeknopcursor.cells[i].style.color=keuzeknopcursor.style.color;
          }
        }
      } else {
        if (keuzeknopcursor.getAttribute('kkClassName')!=null) {
          keuzeknopcursor.className = keuzeknopcursor.getAttribute('kkClassName');
        } else {
          keuzeknopcursor.className = 'Keuzeknop';
        }
      }
      if (keuzeknopcursor.getAttribute('kkLeave')!='') {
        eval(keuzeknopcursor.getAttribute('kkLeave'));
      }
    }    
    keuzeknopcursor = nd;
    if (keuzeknopcursor.getAttribute('kkParentGrid')!=null) {
      if ((keuzeknopcursor.offsetTop < document.getElementById(keuzeknopcursor.getAttribute('kkParentGrid')).scrollTop)) {
			  keuzeknopcursor.scrollIntoView(true);
		  }
		  if ((((keuzeknopcursor.offsetTop + keuzeknopcursor.offsetHeight) - document.getElementById(keuzeknopcursor.getAttribute('kkParentGrid')).scrollTop) > document.getElementById(keuzeknopcursor.getAttribute('kkParentGrid')).offsetHeight)) {
			  keuzeknopcursor.scrollIntoView(false);
		  }       
    }
    if (keuzeknopcursor.getAttribute('kkParentGrid')!=null) {
      var i;
      for (i=keuzeknopcursor.getAttribute('kkCellStart'); i<keuzeknopcursor.cells.length; i++) {
        keuzeknopcursor.cells[i].className = 'Cursor' + keuzeknopcursor.className.substr(6);
        if (keuzeknopcursor.getAttribute('kkClick')==null) {
          keuzeknopcursor.cells[i].style.cursor='default';
        }
      }
    } else {
      if (keuzeknopcursor.getAttribute('kkClassNameOver')!=null) {
        keuzeknopcursor.className = keuzeknopcursor.getAttribute('kkClassNameOver');
      } else {
        keuzeknopcursor.className = 'KeuzeknopOver';
      }
      if (keuzeknopcursor.getAttribute('kkClick')==null) {
        keuzeknopcursor.style.cursor='default';
      }
    }
    if (keuzeknopcursor.getAttribute('kkSelect')!='') {
      eval(keuzeknopcursor.getAttribute('kkSelect'));
    }
  }  
}


function CancelEvents(evt) {
  if (evt.stopPropagation) {
    evt.stopPropagation();    
  } else {
    evt.cancelBubble = true;
    evt.returnValue = false;
  }
  return false;
}

function HandleAantalOnkeydown(e,txtAantal) {
  var event = (window.event) ? window.event : e;
  var iKeyCode = event.keyCode; 
  var sNumeriek = '0123456789';
  var bInputOK = false;
  if (iKeyCode == KEY_ENTER) {
    bInputOK = false;
    VerwerkAantal(txtAantal)
  } 
  if (sNumeriek.indexOf(String.fromCharCode(iKeyCode))!=-1||(iKeyCode==KEY_BS||iKeyCode==KEY_END||iKeyCode==KEY_HOME||iKeyCode==KEY_NUMPADPUNT||iKeyCode==KEY_PUNT||(iKeyCode>=96&&iKeyCode<=105))) {
    bInputOK = true;
  } 
  if (!bInputOK) {
    if (event.preventDefault) {
      if (event.cancelable) event.preventDefault();
      return false;
    } else { 
      event.cancelBubble = true;
      event.returnValue = false;
    }
  } else {
    return true;
  }
}

function VerwerkPlusMinus(bPlus,txtAantal) {
  var iAantal;
  if (bPlus) {
    iAantal = parseInt(txtAantal.value) + parseInt(txtAantal.getAttribute('PerAantal'));
    if (iAantal > 999) iAantal = 999;
  } else {
    iAantal = parseInt(txtAantal.value) - parseInt(txtAantal.getAttribute('PerAantal'));
    if (iAantal < 0) iAantal = 0;
  }

  // 15-02-2011 Marc : Verwerk alleen de plusminus als de webservice klaar is, blokkeer anders
  //                   Getest met Internet Explorer, Firefox en Chrome
  if (blockPlusMin == 0) {
    blockPlusMin = 1;
    txtAantal.value = iAantal;
    VerwerkAantal(txtAantal);
  }
}

function PlusMinusClick(evt, bPlus, imgPlusMin) {
  CancelEvents(evt);
  var txtAantal = ZoekNode(ZoekNode(imgPlusMin.parentNode.parentNode.parentNode.firstChild,'TR').firstChild,'TD').firstChild;
  VerwerkPlusMinus(bPlus,txtAantal);
}

function PlusMinusKeys(bPlus,cursor) {
  var txtAantal;
  var tbl;
  if (ZoekNode(ZoekNode(cursor.firstChild.nextSibling,'TD').firstChild,'DIV').firstChild.nodeName=='TABLE') {
    tbl = ZoekNode(ZoekNode(ZoekNode(cursor.firstChild.nextSibling,'TD').firstChild,'DIV').firstChild,'TABLE')
  } else {
    tbl = ZoekNode(ZoekNode(ZoekNode(cursor.firstChild,'TD').firstChild,'DIV').firstChild,'TABLE'); 
  }
  if (tbl.getAttribute('MI')=='1') {
    txtAantal = ZoekNode(tbl.rows[0].cells[0].firstChild,'INPUT');
    VerwerkPlusMinus(bPlus,txtAantal);
  } else {
    VerwerkSingleItem(tbl);
  }
}

function VerwerkSingleItem(tbl) {
  event.cancelBubble = true;
  var iUID = parseInt(tbl.getAttribute('UID'));
  var iArtikelgroep = parseInt(tbl.getAttribute('AG'));
  var sArtikelnummer =tbl.getAttribute('AN');
  var sOmschrijving = tbl.getAttribute('OMS');
  var iAantal = 1;
  var dBruto = tbl.getAttribute('PB');
  var dNetto = tbl.getAttribute('PN');
  var iHerkomst = parseInt(tbl.getAttribute('HK'));
  var sAutotype = tbl.getAttribute('AT');
  var sKenteken = tbl.getAttribute('KT');
  var sRegelRef = '';
  var iMetKadoPunten = parseInt(tbl.getAttribute('KP'));
  var iMetTechniekPunten = parseInt(tbl.getAttribute('TP'));
  requestWebService = Mijngrossier.Web.WinkelwagenWebService.GooiInWW(iUID, iArtikelgroep, sArtikelnummer, sOmschrijving, iAantal, dBruto, dNetto, iHerkomst, sAutotype, sKenteken, sRegelRef, iMetKadoPunten, iMetTechniekPunten, OnCompleteSingleItem, OnTimeout, OnError);
}


function OnCompleteSingleItem(result) {
  location = result;
}


function OnTimeout(result) {
  alert("Timed out");
  alert(result.get_message());
  alert(result.get_stackTrace());
  bUpdateWWInUse = false;
  blockPlusMin = 0;
}

function OnError(result) {
  alert(result.get_message());
  alert(result.get_stackTrace());
  bUpdateWWInUse = false;
  blockPlusMin = 0;
}


function WisOrderregel(txtAantal) {
  var trRow = txtAantal.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
  trRow.parentNode.removeChild(trRow);
}


function MaxTekens(s, c) {
  if (s.length > c) {
    return s.substring(0,c-2) + '...';
  } else {
    return s;
  }
}

function Waarde(s) {
  return document.getElementById(s).value;
}

function GetAantalTextboxFromKeuzeknop(nd) {
  return nd.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild; 
}

function Toepassing() {
  var txtAantal = GetAantalTextboxFromKeuzeknop(keuzeknopcursor);
  NavigateNaar('toepassing.aspx?an='+txtAantal.getAttribute('AN')+'&ag='+txtAantal.getAttribute('AG'));
}


function Invoer(e,txt,iSoortInvoer) {
  var event = (window.event) ? window.event : e;
  var iKeyCode = event.keyCode; 
  var sValid;
  var bInputOK = false;
  switch (iSoortInvoer) {
    case NUMERIEK:
      sValid = '0123456789';
      break;
    
    default:
      sValid = '*';
      break;
  }
  if (iKeyCode==KEY_ENTER||iKeyCode==KEY_TAB) {
    iKeyCode = KEY_TAB;
    event.keyCode = iKeyCode;
    bInputOK = true;
  } 
  if ((sValid=='*'||sValid.indexOf(String.fromCharCode(iKeyCode))!=-1)||(iKeyCode==KEY_BS||iKeyCode==KEY_END||iKeyCode==KEY_HOME||iKeyCode==KEY_NUMPADPUNT||iKeyCode==KEY_PUNT)||(iKeyCode>=KEY_F1&&iKeyCode<=KEY_F12)) {
    bInputOK = true;
  } 
  if (!bInputOK) {
    if (event.preventDefault) {
      if (event.cancelable) event.preventDefault();
      return false;
    } else { 
      event.cancelBubble = true;
      event.returnValue = false;
    }
  } else {
    return true;
  }
}




function HandleZoektextInvoer(e,txt,sPopupID,sZoekButton) {
  var event = (window.event) ? window.event : e;
  var iKeyCode = event.keyCode; 
  var bClose = false;
  var bCancel = false;
  if (iKeyCode == KEY_F5) {
    event.keyCode = 0;
    bClose = true;
    bCancel = true;
  } 
  if (iKeyCode == KEY_ENTER) {
    event.keyCode = 0;
    bCancel = true;
    document.getElementById(sZoekButton).click();
  } 
  
  if (bCancel) {
    if (event.preventDefault) {
      if (event.cancelable) event.preventDefault();
      return false;
    } else { 
      event.cancelBubble = true;
      event.returnValue = false;
    }
  }
  if (bClose) {
    parent.SluitPopupZoekScherm(sPopupID,document.getElementById('txtFocusTerugID').value,'');
  }
}

