 
 // Functie om een simpele postback te geven op een enter in een textbox
 // parameter: evt is de keypress event
 // parameter: postbackButton is de 'korte' naam/id van de linkbutton of (image/submit) button die de echte postback veroorzaakt
 // typisch gebruik: <asp:TextBox runat="server" ID="PlaatsTextBox" onKeyPress="javascript:PostbackOnEnter(event,'ZoekenLinkButton');" />
 function PostbackOnEnter(evt, postbackButton){
    PostbackOnEnterMetVoorwaarde(evt, postbackButton, true);
}

// Functie om een simpele postback te geven op een enter in een textbox met een voorwaarde om te checken voordat de porstback uitgevoerd wordt
// parameter: evt is de keypress event
 // parameter: postbackButton is de 'korte' naam/id van de linkbutton of (image/submit) button die de echte postback veroorzaakt
// parameter: een functie of expressie die een boolean waarde teruggeeft - als de waarde true is, wordt de postback uitgevoerd, anders niet.
// typisch gebruik: <asp:TextBox runat="server" ID="PlaatsTextBox" onKeyPress="javascript:PostbackOnEnterMetVoorwaarde(event,'ZoekenLinkButton', new function(){if (this.value==null) return false; return true;});" />
function PostbackOnEnterMetVoorwaarde(evt, postbackButton, voorwaardeFunctie){
    evt = (evt) ? evt : event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode==13){
        if (voorwaardeFunctie){
            var gevondenPostbackCall = getPostbackCall(postbackButton);
            if (gevondenPostbackCall){
                eval(gevondenPostbackCall);
            }
        }
    }
}

//Functie om het 'lange' unieke asp.net id op te halen op basis van het 'korte' id dat aan PostbackOnEnter is meegegeven
//NB: dit kan tot problemen leiden als er twee links / buttons met hetzelfde 'korte' id op een pagina staan  
//deze functie doorzoekt eerst alle links op de pagina (voor de LinkButtons)
//als het gewenste id er niet bij zit, doorzoekt deze functie alle input-elementen (voor Buttons)
//als gevonden, wordt het 'lange' asp.net id teruggegeven, anders null.
function getPostbackButton(postbackButton){
    var shortID = postbackButton;
    var gevondenButton = null;
    
    var allLinks = document.links;
    gevondenButton = findInArray(allLinks, shortID);
    
    if (gevondenButton==null){
        var allInputs = document.getElementsByTagName("input");
        gevondenButton = findInArray(allInputs, shortID);
    }
    
    //return gevondenButton: deze is null als niet gevonden
    return gevondenButton;
}

//Functie om het postback statement op te halen op basis van het 'korte' id dat aan PostbackOnEnter is meegegeven
//NB: dit kan tot problemen leiden als er twee links / buttons met hetzelfde 'korte' id op een pagina staan  
//deze functie doorzoekt eerst alle links op de pagina (voor de LinkButtons)
//als het gewenste id er niet bij zit, doorzoekt deze functie alle input-elementen (voor Buttons)
//als een LinkButton gevonden wordt, wordt de inhoud van de href teruggegeven.
//als een input-button gevonden wordt, wordt een postback statement gemaakt obv het name-attribute
function getPostbackCall(postbackButton) {
    var shortID = postbackButton;
    var gevondenButton = null;
    var gevondenCall = null;

    var allLinks = document.links;
    gevondenButton = findInArray(allLinks, shortID);

    if (gevondenButton == null) {
        var allInputs = document.getElementsByTagName("input");
        gevondenButton = findInArray(allInputs, shortID);
        if (gevondenButton) {
            gevondenCall = "__doPostBack('" + gevondenButton.name + "', '')";
        }
    } else {
        gevondenCall = gevondenButton.href;
    }

    return gevondenCall;
}


// Zoek de opgegeven postbackButton in een gegeven array van html elementen.
// Indien gevonden worden alle '_' in het id vervangen door '$', want dat wordt bij postback gebruikt
// als niet gevonden: geef null terug.
function findInArray(array, shortID){
    if (array){
        for (var i=0;i<array.length;i++){
            var thisName = array[i].id;
            var thisNameEnd = thisName.substring(thisName.length - shortID.length,thisName.length);
            
            //vervang '_' door '$'
            if (thisNameEnd==shortID){
                //while (thisName.indexOf("_")>-1){
                //   thisName = thisName.replace("_","$");
                //}
                return array[i];
            }
        }
    }
    
    return null;
}

//Helper functie, omdat JavaScript zelf geen trim functie heeft
function trim(value) {
  value = value.replace(/^s/,'');
  value = value.replace(/s$/,'');
  return value;
}
