var IE6 = false;
function getObjPos(obj) {
    var offsetLeft = 0;
    var offsetTop = 0;
    while (obj) {
        offsetLeft += obj.offsetLeft;
        offsetTop += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return {
        left: offsetLeft,
        top: offsetTop
    };
}
function getObjHeight(o) {
    if (document.defaultView) {
        return parseFloat(document.defaultView.getComputedStyle(o, null)['height']);
    }
    return o.offsetHeight;
}
var CURRENT_PAGE = '';
function init(page) {
    if (IE6) {
        fix_ie_png_transparency('logo');
        var submitbtn = document.getElementById('feedback_btn');
        if (submitbtn != null) {
            var submitbtnBack = submitbtn.style.backgroundImage;
            var submitbtnBackIE = submitbtnBack.replace('button_conf.png', 'button_conf_ie6.png');
            submitbtn.style.backgroundImage = submitbtnBackIE;
        }
        submitbtn = document.getElementById('submitbtn1');
        if (submitbtn != null) {
            submitbtnBack = submitbtn.style.backgroundImage;
            submitbtnBackIE = submitbtnBack.replace('button_conf.png', 'button_conf_ie6.png');
            submitbtn.style.backgroundImage = submitbtnBackIE;
        }
        
    }
    CURRENT_PAGE = page;
    if (CURRENT_PAGE[CURRENT_PAGE.length - 1] != '/') {
        CURRENT_PAGE += '/';
    }
    restore_menu_cursor();
    fix_shadow_heights();
    setTimeout(function() {
        fix_shadow_heights();
        setTimeout(function() {
            fix_shadow_heights();
        }, 1000);
    }, 1000);
}
function restore_menu_cursor() {
    var menuelem = document.getElementById(CURRENT_PAGE + '_menu_elem');
    if (menuelem != null) {
        show_menu_cursor(menuelem);
    } else {
        var mcur = document.getElementById('menucursor');
        if (mcur != null) {
            mcur.style.visibility = 'hidden';
        }
    }
}
function show_menu_cursor(obj) {
    var cur = document.getElementById('menucursor');
    cur.style.visibility = 'visible';
    cur.style.top = (obj.offsetTop - 9) + 'px';
    cur.style.left = (obj.offsetLeft + obj.offsetWidth / 2 - 4)  + 'px';
}
function fix_shadow_heights() {
    var o = document.getElementById('sh-left');
    o.style.height = (getObjHeight(document.getElementById('pagebody')) - 12) + 'px';
    document.getElementById('sh-right').style.height = o.style.height;
}
function fix_ie_png_transparency(id) {
    var logo = document.getElementById(id);
    // png transparency fix from http://homepage.ntlworld.com/bobosola/pngtestfixed.htm
    var imgID = (logo.id) ? "id='" + logo.id + "' " : ""
    var imgClass = (logo.className) ? "class='" + logo.className + "' " : ""
    var imgTitle = (logo.title) ? "title='" + logo.title + "' " : "title='" + logo.alt + "' "
    var imgStyle = "display:inline-block;" + logo.style.cssText
    imgStyle = "float:left;" + imgStyle
    if (logo.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
    var strNewHTML = "<span " + imgID + imgClass + imgTitle
    + " style=\"" + "width:" + logo.width + "px; height:" + logo.height + "px;" + imgStyle + ";"
    + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
    + "(src=\'" + logo.src + "\', sizingMethod='scale');\"></span>"
    logo.outerHTML = strNewHTML
}
function reset_bars_pagers(siteroot) {
    processRequest(siteroot + '/public/actions/setparam.php?name=opbarpage&value=1', null, null);
    processRequest(siteroot + '/public/actions/setparam.php?name=newsbarpage&value=1', null, null);
}
function trim(str) {
    return str.replace(/^ +|[ \t\f\n\r\v]+$/g, '');
}
function validateForm(form) {
    var empties = [];
    var fields = form.elements;
    for (var i = 0; i < fields.length; i++) {
        if (fields[i].getAttribute("obligatory") != null) {
            fields[i].value = trim(fields[i].value);
            if (fields[i].value == '') {
                empties.push("'" + fields[i].title + "'");
            }
        }
    }
    if (empties.length > 0) {
        alert('Не заполнены поля: ' + empties.join(", "));
        return false;
    }
    if (form.name == 'comment_form' || form.name == 'question_form') {
        var input = document.createElement('INPUT');
        input.type = 'hidden';
        input.name = 'element_sl2';
        form.appendChild(input);
    }
    return true;
}
function processRequest(url, postdata, handler) {
    try {
        var request = null;
        if (window.ActiveXObject != null) {
            request = new ActiveXObject("Microsoft.XMLHTTP");
        } else {
            request = new XMLHttpRequest();
        //            request.overrideMimeType('text/plain');
        }
        var method = 'GET';
        if (postdata != null) {
            method = 'POST';
        }
        request.open(method, url, true);
        request.setRequestHeader("User-Agent", "XMLHTTP/1.0");
        request.setRequestHeader("Connection", "close");
        if (postdata != null) {
            // request.setRequestHeader("Content-type", "text/plain; charset=utf-8");
            request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
            request.setRequestHeader("Content-length", postdata.length);
        }

        request.onreadystatechange = function () {
            if (request.readyState != 4) return;
            try {
                if (request.status != 200 && request.status != 304 && request.status != 0) {
                    alert('HTTP error: ' + request.status);
                    return;
                }
            } catch (ex) {
                alert('Error: ' + ex.description);
                return;
            }
            if (typeof (handler) == 'function') {
                handler(request.responseText);
            } else {
                switch (handler) {
                    case 'refresh':
                        window.location.href = window.location.href;
                        break;
                    case 'reload':
                        window.location.reload(false);
                        break;
                }
            }
        }
        request.send(postdata);
    } catch(e) {
        alert("Error processing ajax request: " + e.message);
    }
}
function marshalForm(form) {
    var res = '';
    for (var i = 0; i < form.elements.length; i++) {
        var elem = form.elements[i];
        if (elem.name != null && elem.name != '') {
            res += elem.name + '=' + escape(encodeURI(elem.value)) + '&';
        }
    }
    return res + 'formname=' + form.name;
}
function getNextSibling(obj) {
    if(!obj.nextSibling)
        return null;
    obj = obj.nextSibling;
    while(true) {
        if (!obj)
            return null;
        if (obj.nodeType==1)
            return obj;
        else
            obj = obj.nextSibling;
    }
}
function removeObj(obj) {
    obj.parentNode.removeChild(obj);
}
function insertAfter(parent, node, referenceNode) {
    parent.insertBefore(node, referenceNode.nextSibling);
}
function load_poll_results(url) {
    var pollcnt = document.getElementById('poll');
    pollcnt.style.height = 'auto';
    pollcnt.parentNode.style.height = 'auto';
    processRequest(url, null, function (responseText) {
        pollcnt.innerHTML = responseText;
        fix_shadow_heights();
    });
}
function share_poll(socnet, uin, question, answer) {
    var netUrl = null;
    var share_url = 'http://7x7-journal.ru/poll/' + uin;
    switch (socnet) {
        case 'facebook':
            netUrl  = 'http://www.facebook.com/sharer.php?s=100';
            netUrl += '&p[title]=' + encodeURIComponent(question);
            netUrl += '&p[summary]=' + encodeURIComponent(answer);
            netUrl += '&p[url]=' + encodeURIComponent(share_url);
            netUrl += '&p[images][0]=' + encodeURIComponent('http://7x7-journal.ru/public/img/7x7logo_88_31.gif');
            break;
        case 'vkontakte':
            netUrl  = 'http://vkontakte.ru/share.php?';
            netUrl += 'url=' + encodeURIComponent(share_url);
            netUrl += '&title=' + encodeURIComponent(question);
            netUrl += '&description=' + encodeURIComponent(answer);
            netUrl += '&image=' + encodeURIComponent('http://7x7-journal.ru/public/img/7x7logo_88_31.gif');
            netUrl += '&noparse=true';
            break;
        case 'twitter':
            netUrl  = 'http://twitter.com/share?';
            netUrl += 'text=' + encodeURIComponent(question + ' ' + answer);
            netUrl += '&url=' + encodeURIComponent(share_url);
            netUrl += '&counturl=' + encodeURIComponent(share_url);
            break;

    }
    window.open(netUrl, '', 'toolbar=0,status=0,width=700,height=400');
}
function load_feedback_thanks() {
    var feedbackcnt_body = document.getElementById('feedbackcnt_body');
    feedbackcnt_body.innerHTML =  '<strong>Спасибо за Ваше сообщение!</strong>';
}
function load_related_items(url) {
    var relateditemscnt = document.getElementById('relateditemscnt');
    if (relateditemscnt.innerHTML == '') {
        processRequest(url, null, function (responseText) {
            relateditemscnt.innerHTML =  responseText;
            relateditemscnt.style.display = 'block';
        });
    } else {
        relateditemscnt.innerHTML = '';
        relateditemscnt.style.display = 'none';
    }
}
function load_files(url) {
    var filescnt = document.getElementById('filescnt');
    processRequest(url, null, function (responseText) {
        filescnt.innerHTML =  responseText;
    });
}
function attachImage(url) {
    if (typeof(window.CKEDITOR) !== 'undefined') {
        var instance = CKEDITOR.instances.markup; // 'markup' is default ckeditor textarea name
        if (instance == null) {
            instance = CKEDITOR.instances[CKEDITOR_TEXTAREA_NAME];
        }
        instance.openDialog('image', function() {
            var labels = searchElementsByTextContent('label', 'URL');
            if (labels.length > 0) {
                var input = document.getElementById(labels[0].getAttribute('for'));
                if (input != null) {
                    input.value = url;
                    window.setTimeout(function() { // necessary to wait for markup of the dialog to be loaded
                        // firing onchange event to make the preview of image loaded
                        if(document.createEvent) { // Gecko
                            var evt = document.createEvent('HTMLEvents');
                            if(evt.initEvent) {
                                evt.initEvent('change', true, true);
                            }
                            if(input.dispatchEvent) {
                                input.dispatchEvent(evt);
                            }
                        } else {
                            if(input.fireEvent) { // IE
                                input.fireEvent('onchange');
                            }
                        }
                    }, 100);
                }
            }
        });
    }
}
function searchElementsByTextContent(name, text) {
    var attrName = IE6 ? 'innerText' : 'textContent';
    var elements = document.getElementsByTagName(name);
    var ret = [];
    for (var i = 0; i < elements.length; i++) {
        if(elements[i][attrName] == text) {
            ret.push(elements[i]);
        }
    }
    return ret;
}
function delete_comment(url) {
    processRequest(url, null, 'reload');
}
function post_comment(url, cm_form_name) {
    var cm_form = document.forms[cm_form_name];
    processRequest(url, marshalForm(cm_form), 'reload');
    // disable the submit button
    cm_form['element_sl1'].disabled = true;
}
function authorize(url, cm_form_name) {
    var cm_form = document.forms[cm_form_name];
    processRequest(url, marshalForm(cm_form), 'reload');
}
function addFeedback(url) {
    var feedback = document.getElementById('feedbackcontent');
    var feedbackcontent = trim(feedback.value);
    if (feedbackcontent != '' && feedbackcontent != feedback.title) {
        var postdata = 'content=' + feedbackcontent;
        var callback = function () {
            load_feedback_thanks();
            fix_shadow_heights();
        }
        processRequest(url, postdata, callback);
    }
}
function setElementOpacity(sElemId, nOpacity) {
    var opacityProp = getOpacityProperty();
    var elem = document.getElementById(sElemId);

    if (!elem || !opacityProp) return; // Если не существует элемент с указанным id или браузер не поддерживает ни один из известных функции способов управления прозрачностью

    if (opacityProp=="filter")  // Internet Exploder 5.5+
    {
        nOpacity *= 100;

        // Если уже установлена прозрачность, то меняем её через коллекцию filters, иначе добавляем прозрачность через style.filter
        var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
        if (oAlpha) oAlpha.opacity = nOpacity;
        else elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")"; // Для того чтобы не затереть другие фильтры используем "+="
    }
    else // Другие браузеры
        elem.style[opacityProp] = nOpacity;
}

function getOpacityProperty() {
    if (typeof document.body.style.opacity == 'string') // CSS3 compliant (Moz 1.7+, Safari 1.2+, Opera 9)
        return 'opacity';
    else if (typeof document.body.style.MozOpacity == 'string') // Mozilla 1.6 и младше, Firefox 0.8
        return 'MozOpacity';
    else if (typeof document.body.style.KhtmlOpacity == 'string') // Konqueror 3.1, Safari 1.1
        return 'KhtmlOpacity';
    else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) // Internet Exploder 5.5+
        return 'filter';

    return false; //нет прозрачности
}
function toggleVisibility(elemId) {
    var elem = document.getElementById(elemId);
    if (elem.style.visibility == 'visible') {
        elem.style.visibility = 'hidden';
    } else {
        elem.style.visibility = 'visible'
    }
}
var FADEBAR_ON_HOLD = null;
function load_recent_comments(obj, url, post_uin, post_type, region) {
    var targetId = 'rc' + post_uin;
    if (FADEBAR_ON_HOLD == null || targetId != FADEBAR_ON_HOLD.id) {
        var timeoutId = setTimeout(function() {
            load_recent_comments_internal(obj, url, post_uin, post_type, region);
        }, 250);
        obj.onmouseout = function() {
            clearTimeout(timeoutId);
        }
    }
}
function load_recent_comments_internal(obj, url, post_uin, post_type, region) {
    var targetId = 'rc' + post_uin;
    var elem = document.getElementById(targetId);

    FADEBAR_ON_HOLD = elem;

    elem.onmouseover = function() {
        FADEBAR_ON_HOLD = this;
    }

    elem.onmouseout = function() {
        FADEBAR_ON_HOLD = null;
        setTimeout(function () {
            if (FADEBAR_ON_HOLD == null || targetId != FADEBAR_ON_HOLD.id) {
                elem.style.visibility = 'hidden';
            }
        }, 1000);
    }

    obj.onmouseout = function() {
        FADEBAR_ON_HOLD = null;
        setTimeout(function () {
            if (FADEBAR_ON_HOLD == null || targetId != FADEBAR_ON_HOLD.id) {
                var elem = document.getElementById(targetId);
                elem.style.visibility = 'hidden';
            }
        }, 1000);
    }

    var postdata = 'u=' + post_uin + '&t=' + post_type + '&r=' + region;
    processRequest(url, postdata, function(responseText) {
        elem.innerHTML = responseText;
        elem.style.visibility = 'visible';
    });
}
function isChildOf(ae, obj) {
    if (ae == obj)
        return true;
    if (ae.parentNode) {
        var parent = ae.parentNode;
        while (parent) {
            if (parent == obj)
                return true;
            parent = parent.parentNode;
        }
        return false;
    }
    return false;
}
function getActiveObj(event) {
    if ("activeElement" in document) {
        return document.activeElement;
    }
    event = event ? event : window.event;
    return event ? event.explicitOriginalTarget : null;
}
