// Подавление ошибок
function NoError() { return(true); } onerror=NoError;

// Найти элемент по его id
function findObj(id) {
    return (document.all?document.all[id]:document.getElementById(id));
}

// Выделить элемент на странице
function SelectElement(id) {
    // Говнобраузер не поддерживается
    if (window.opera) { return false; }

    var el=document.getElementById(id);
    if (typeof(el)!="object" || el==null) { return false; }

    if (document.body.createTextRange) {
        var tmp=document.body.createTextRange();
        tmp.moveToElementText(el);
        tmp.select();
    }
    else if (window.getSelection) {
        var tmp=window.getSelection();
        if (tmp.setBaseAndExtent) {
            var child=el.lastChild;
            tmp.setBaseAndExtent(el, 0, child, typeof(child.innerText) == 'undefined' ? child.textContent.length : child.innerText.length);
        }
        else {
            var range=document.createRange();
            range.selectNodeContents(el);
            tmp.removeAllRanges();
            tmp.addRange(range);
        }
    }
    else {
        return false;
    }
    return true;
}

// Убрать нумерацию строк в блоке кода
function remove_hl(id) {
    e=findObj('ol_'+id);
    if (!e) { return false; }
    tmp=e.innerHTML.toString().replace(/<li class="?hl_l."?>/gi,'<br />').replace(/<\/li>/gi,'')+'<br /><br />';
    e=findObj('hl_'+id);
    if (!e) { return false; }
    e.innerHTML=tmp;
    e=findObj('aa_'+id);
    if (!e) { return false; }
    e.style.display='none';
    e=findObj('ss_'+id);
    if (!e) { return false; }
    e.style.display='inline';
    return false;
}

// Функция установки обработчика события
function hookEvent(hElem, eventName, callback) {
    if (typeof(hElem) == "string") {
        hElem = document.getElementById(hElem);
    }
    if (!hElem) { return false; }

    if (hElem.addEventListener) {
        if (eventName == 'mousewheel') {
            hElem.addEventListener('DOMMouseScroll', callback, false);
        }
        else {
            hElem.addEventListener(eventName, callback, false);
        }
    }
    else if (hElem.attachEvent) {
        hElem.attachEvent("on" + eventName, callback);
    }
    else { return false; }
    return true;
}

// Функция снятия обработчика события
function unhookEvent(element, eventName, callback) {
    if (typeof(element) == "string") {
        element = document.getElementById(element);
    }
    if (element == null) { return false; }

    if (element.removeEventListener) {
        if (eventName == 'mousewheel') {
            element.removeEventListener('DOMMouseScroll', callback, false);
        }
        else {
            element.removeEventListener(eventName, callback, false);
        }
    }
    else if (element.detachEvent) {
        element.detachEvent("on" + eventName, callback);
    }
    else { return false; }
    return true;
}

