    var number = new RegExp("^\\d+$");

function updateDocTraverserGoLinkUrl() {
    var currPos = getElementById("cur_position");
    var resultSize = getElementById("resultSize").value;
    if (!validateDocNumger(currPos.value, resultSize)) {
        alert("Please enter valid document number.");
        currPos.value = getElementById("originalCurPos").value;
        return false;
    }
    var goLinkUrl = getElementById("go_link_url").value;
    var prev = goLinkUrl.substr(0, goLinkUrl.indexOf("currentPosition="))
    var next = goLinkUrl.substr(goLinkUrl.indexOf("currentPosition=") + 16);
    next = next.substr(next.indexOf("&"));
    var currentPage = "currentPosition=" + currPos.value;
    this.href = prev+currentPage+next;
}

function updateGoLinkUrl() {
    var currPos = getElementById("cur_position");
    var resultSize = getElementById("resultSize").value;
    if (!validateDocNumger(currPos.value, resultSize)) {
        alert("Please enter valid document number.");
        currPos.value = getElementById("originalCurPos").value;
        return false;
    }
    var goLinkUrl = getElementById("go_link_url").value;
    this.href = goLinkUrl+"&currentPosition="+currPos.value;
}

function validateDocNumger(current, total) {
    if (!isNumeric(current) || parseInt(current, 10) < 1 ||
       parseInt(current, 10) > parseInt(total, 10)) {
        return false;
    }
    return true;
}

function isNumeric(str) {
    return number.test(str);
}

function attachPaginationEvents() {
    attachEventForLink("go_link",updateGoLinkUrl);
    attachEventForLink("doc_go_link",updateDocTraverserGoLinkUrl);
}

addWindowLoadEvent(attachPaginationEvents);
