function BrowserInfoClass() {
    var browserStr = navigator.userAgent;
    this.whoami = 'defabrowserchecker';

    if (browserStr.indexOf('Firefox') != -1) {
        this.browser = 'FF';
        var arr = /Firefox\/(\d+)\.(\d+)/.exec(browserStr);
        this.majorVersion = arr[1];
        this.minorVersion = arr[2];
    } else if (browserStr.indexOf('Opera') != -1) {
        this.browser = 'O';
        var arr = /Opera (\d+)\.(\d+)/.exec(browserStr);
        if (!arr) {
            var arr = /Opera\/(\d+)\.(\d+)/.exec(browserStr);
        }
        if (arr) {
            this.majorVersion = arr[1];
            this.minorVersion = arr[2];
        } else {
            this.majorVersion = 1;
            this.minorVersion = 0;
        }
    } else if (browserStr.indexOf('MSIE') != -1) {
        this.browser = 'IE';
        var arr = /MSIE (\d+)\.(\d+)/.exec(browserStr);
        this.majorVersion = arr[1];
        this.minorVersion = arr[2];
    } else {
        this.browser = 'smth';
        this.majorVersion = 0;
        this.minorVersion = 0;
    }

    //alert(this.browser+' '+this.majorVersion+'.'+this.minorVersion);
}

var browserInfo = new BrowserInfoClass();

function removeCdata(str) {
    str = str.replace(/^<!\[CDATA\[/, '');
    str = str.replace(/\]\]>$/, '');
    return str;
}

/* ========================================================================== */

function closeDiv(id) {
    var div = $(id);

    if (div && (typeof(div) != 'undefined')) {
        div.style.display = 'none';
    }
}

function openDiv(id) {
    var div = $(id);

    if (div && (typeof(div) != 'undefined')) {
        div.style.display = 'block';
        //div.style.visibility = 'visible';
    }
}

function hideDiv(id, toggle) {
    var div = $(id);

    if (div && (typeof(div) != 'undefined')) {
        div.style.visibility = 'hidden';
        if (toggle && (typeof(toggle) != 'undefined')) {
            div.style.left = '-9999px';
        }
    }
}

function showDiv(id, toggle) {
    var div = $(id);

    if (div && (typeof(div) != 'undefined')) {
        div.style.visibility = 'visible';
        if (toggle && (typeof(toggle) != 'undefined')) {
            div.style.left = '100px';
        }
    }
}

function centrateDiv(divToCountId, divToMoveId, holderId, toggleWidth) {
    var div = $(divToCountId);
    var div2move = $(divToMoveId);
    var holder = $(holderId);

    if (div && (typeof(div) != 'undefined') && holder && (typeof(holder) != 'undefined') && div2move && (typeof(div2move) != 'undefined')) {
        var widthHolder = holder.offsetWidth;
        var widthDiv = div.offsetWidth;
        if (toggleWidth > 0) {
            widthDiv += toggleWidth;
        }

        var left = Math.round((widthHolder - widthDiv) / 2);
        if (left < 3) {
            left = 3;
        }

        div2move.style.left = left + 'px';
        //alert(widthHolder + ' with ' + widthDiv + ' centretes like ' + left);
    }
}

var openidCheckboxOn = false;

function turnOpenID(lnk) {
    openidCheckboxOn = !openidCheckboxOn;
    var lgnLabel = $('label_login');
    var lgnInput = $('u_login_validation_blank');
    var pwdLabel = $('label_pwd');
    var pwdInput = $('u_pwd_validation_blank');
    var pwdInpHi = $('u_pwd');
    var remChkbx = $('rem_holder');
    var imptFlag = $('u_openid');

    if (imptFlag && (typeof(imptFlag) != 'undefined')) {
        imptFlag.value = (openidCheckboxOn ? 1 : 0);
    }

    if (lgnLabel && (typeof(lgnLabel) != 'undefined')) {
        lgnLabel.innerHTML = (openidCheckboxOn ? '<b>OpenID URL:</b>' : '<b>Логин:</b>');
    }
    if (lgnInput && (typeof(lgnInput) != 'undefined')) {
        lgnInput.name = (openidCheckboxOn ? 'openid_identifier' : 'u_login');
    }

    if (pwdLabel && (typeof(pwdLabel) != 'undefined')) {
        pwdLabel.style.display = (openidCheckboxOn ? 'none' : 'block');
    }

    if (pwdInput && (typeof(pwdInput) != 'undefined')) {
        pwdInput.style.display = (openidCheckboxOn ? 'none' : 'block');
        pwdInput.id = (openidCheckboxOn ? 'u_pwd' : 'u_pwd_validation_blank');
    }

    if (pwdInpHi && (typeof(pwdInpHi) != 'undefined')) {
        pwdInpHi.style.display = (openidCheckboxOn ? 'none' : 'block');
        pwdInpHi.id = (openidCheckboxOn ? 'u_pwd' : 'u_pwd_validation_blank');
    }

    if (remChkbx && (typeof(remChkbx) != 'undefined')) {
        remChkbx.style.display = (openidCheckboxOn ? 'none' : 'block');
    }

    if (openidCheckboxOn) {
        lnk.innerHTML = 'Вернуться к форме авторизации';
    } else {
        lnk.innerHTML = 'Open ID пользователь';
    }

    if ($('u_login_validation_blank')) {
        $('u_login_validation_blank').focus();
    }
}

/* ========================================================================== */

function $(id) {
    var elem = document.getElementById(id);

    if (elem && (typeof(elem) != 'undefined')) {
        return elem;
    }
    return false;
}

function explode(str, separator) {
    var arr = new Array();

    if (str.indexOf(separator) != -1) {
        var pos;

        while ((pos = str.indexOf(separator)) != -1) {
            arr[arr.length] = str.slice(0, pos);
            str = str.slice(pos + 1, str.length);
        }

        arr[arr.length] = str;
    } else {
        arr[0] = str;
    }

    return arr;
}

function inArray(needle, haystack) {
    for (i in haystack) {
        if (needle == haystack[i]) {
            return true;
        }
    }
    return false;
}

function trim(str) {
    str = str.replace(/^(\s|\n)*/, '');
    str = str.replace(/(\s|\n)*$/, '');

    return str;
}

function makeIndex(elem, url) {
    if (navigator.userAgent.indexOf('MSIE') != -1) {
        elem.style.behavior = 'url(#default#homepage)';
        elem.setHomePage(url);
        return false;
    } else {
        return true;
    }
}

/* ========================================================================== */

function beforeOnload () {
    checkAddCommKey();
}

function checkAddCommKey() {
    if (/#add_comment$/.test(location.href) && $('add_comment')) {
        $('add_comment').style.display = 'block';
    }
}

function focusOnLogin() {
    window.scrollTo(0, 0);

    if ($('u_login_validation_blank')) {
        $('u_login_validation_blank').focus();
    }
}
