

function createXHRequest()
{
    // Firefox, Opera 8.0+, Safari
    try {
        return new XMLHttpRequest();
    } catch (e) {}

    // Internet Explorer
    try {
        return new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {}

    try {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}

    return null;
}

function insertAtCursor(field, value) {
    //IE support
    if (document.selection) {
        field.focus();
        sel = document.selection.createRange();
        sel.text = value;
    }

    //Mozilla/Firefox/Netscape 7+ support
    else if (field.selectionStart || field.selectionStart == '0') {
        var startPos = field.selectionStart;
        var endPos = field.selectionEnd;
        field.value = field.value.substring(0, startPos)+ value + field.value.substring(endPos, field.value.length);
    } 

    //fallback
    else {
        field.value += value;
    }
}

function scrollToElement(elem) {
  var selectedPosX = 0;
  var selectedPosY = 0;

  while(elem != null){
    selectedPosX += elem.offsetLeft;
    selectedPosY += elem.offsetTop;
    elem = elem.offsetParent;
  }

  window.scrollTo(selectedPosX,selectedPosY);
}