function openModalWindowCenterred(url, width, height)
{
    var left = ((screen.availWidth/2)  - (width/2));
    var top  = ((screen.availHeight/2) - (height/2));
    var modalWindowFeatures = "width=" + width + ",height=" +
                    height + ",status.resizable.left=" + left + ",top=" +
                    top + ",screenX=" + left + ",screenY=" + top;
    myModalOpenWindow = window.open(url, "subWind", modalWindowFeatures);
    myModalOpenWindow.focus();
}

window.onerror = null;

tooltip = {

    /* НАЧАЛО НАСТРОЕК */

    attr_name: "tooltip", // наименование создаваемого tooltip'ого атрибута
    blank_text: "КАТЕРА, ГИДРОЦИКЛЫ, ЛОДОЧНЫЕ МОТОРЫ", // текст для ссылок с target="_blank"
    newline_entity: "  ", // укажите пустую строку (""), если не хотите использовать в tooltip'ах многострочность; ежели хотите, то укажите тот символ или символы, которые будут заменяться на перевод строки
    max_width: 0, // максимальная ширина tooltip'а в пикселах; обнулите это значение, если ширина должна быть нелимитирована
    delay: 500, // задержка при показе tooltip'а в миллисекундах
    
    /* КОНЕЦ НАСТРОЕК */

    t: document.createElement("DIV"),
    c: null,
    g: false,

    m: function(e){
        if (tooltip.g){
            oCanvas = document.getElementsByTagName(
            (document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY"
            )[0];
            x = window.event ? event.clientX + oCanvas.scrollLeft : e.pageX;
            y = window.event ? event.clientY + oCanvas.scrollTop : e.pageY;
            tooltip.a(x, y);
        }
    },

    d: function(){
        tooltip.t.setAttribute("id", "tooltip");
        //tooltip.t.style.filter = "alpha(opacity=85)"; // buggy in ie5.0
        document.body.appendChild(tooltip.t);
        a = document.all ? document.all : document.getElementsByTagName("*");
        aLength = a.length;
        for (var i = 0; i < aLength; i++){

            //if (a[i].tagName == "A" || a[i].tagName == "BUTTON" || (a[i].tagName == "INPUT" && (a[i].type == "submit" || a[i].type == "button" || a[i].type == "reset"))) a[i].onclick = self.focus;

            if (!a[i]) continue;

            tooltip_title = a[i].getAttribute("title");
            tooltip_alt = a[i].getAttribute("alt");
            tooltip_blank = a[i].getAttribute("target") && a[i].getAttribute("target") == "_blank" && tooltip.blank_text;
            if (tooltip_title || tooltip_blank){
                a[i].setAttribute(tooltip.attr_name, tooltip_blank ? (tooltip_title ? tooltip_title + " " + tooltip.blank_text : tooltip.blank_text) : tooltip_title);
                if (a[i].getAttribute(tooltip.attr_name)){
                    a[i].removeAttribute("title");
                    if (tooltip_alt && a[i].complete) a[i].removeAttribute("alt");
                    tooltip.l(a[i], "mouseover", tooltip.s);
                    tooltip.l(a[i], "mouseout", tooltip.h);
                }
            }else if (tooltip_alt && a[i].complete){
                a[i].setAttribute(tooltip.attr_name, tooltip_alt);
                if (a[i].getAttribute(tooltip.attr_name)){
                    a[i].removeAttribute("alt");
                    tooltip.l(a[i], "mouseover", tooltip.s);
                    tooltip.l(a[i], "mouseout", tooltip.h);
                }
            }
            if (!a[i].getAttribute(tooltip.attr_name) && tooltip_blank){
                //
            }
        }
        document.onmousemove = tooltip.m;
        window.onscroll = tooltip.h;
        tooltip.a(-99, -99);
    },

    s: function(e){
        d = window.event ? window.event.srcElement : e.target;
        if (!d.getAttribute(tooltip.attr_name)) return;
        s = d.getAttribute(tooltip.attr_name);
        if (tooltip.newline_entity){
            s = s.replace(/\&/g,"&amp;");
            s = s.replace(/\</g,"&lt;");
            s = s.replace(/\>/g,"&gt;");
            s = s.replace(eval("/" + tooltip.newline_entity + "/g"), "<br />");
            tooltip.t.innerHTML = s;
        }else{
            if (tooltip.t.firstChild) tooltip.t.removeChild(tooltip.t.firstChild);
            tooltip.t.appendChild(document.createTextNode(s));
            //tooltip.t.innerText = s;
        }
        tooltip.c = setTimeout("tooltip.t.style.visibility = 'visible';", tooltip.delay);
        tooltip.g = true;
    },

    h: function(e){
        tooltip.t.style.visibility = "hidden";
        if (!tooltip.newline_entity && tooltip.t.firstChild) tooltip.t.removeChild(tooltip.t.firstChild);
        clearTimeout(tooltip.c);
        tooltip.g = false;
        tooltip.a(-99, -99);
    },

    l: function(o, e, a){
        if (o.addEventListener) o.addEventListener(e, a, false); // was true--Opera 7b workaround!
        else if (o.attachEvent) o.attachEvent("on" + e, a);
            else return null;
    },

    a: function(x, y){
        oCanvas = document.getElementsByTagName(
        (document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY"
        )[0];
        
        w_width = oCanvas.clientWidth ? oCanvas.clientWidth + oCanvas.scrollLeft : window.innerWidth + window.pageXOffset;
        w_height = window.innerHeight ? window.innerHeight + window.pageYOffset : oCanvas.clientHeight + oCanvas.scrollTop; // should be vice verca since Opera 7 is crazy!

        tooltip.t.style.width = ((tooltip.max_width) && (tooltip.t.offsetWidth > tooltip.max_width)) ? tooltip.max_width + "px" : "auto";
        
        t_width = tooltip.t.offsetWidth;
        t_height = tooltip.t.offsetHeight;

        tooltip.t.style.left = x + 8 + "px";
        tooltip.t.style.top = y + 8 + "px";
        
        if (x + t_width > w_width) tooltip.t.style.left = w_width - t_width + "px";
        if (y + t_height > w_height) tooltip.t.style.top = w_height - t_height + "px";
    }
}

var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
if (root){
    if (root.addEventListener) root.addEventListener("load", tooltip.d, false);
    else if (root.attachEvent) root.attachEvent("onload", tooltip.d);
}

function createSubGroup(subgroup,selectedOption)
{
    var group = document.getElementById('group');
    var subGroupSelect = document.getElementById('sub_group');
    var currentOption;
    subGroupSelect.length = 0;
    if (group)
    {
        for (var i=0; i < subgroup.length; i++)
        {
            if (subgroup[i][0] == group.value)
            {
                currentOption = subGroupSelect.length;
                subGroupSelect.options[currentOption] = new Option(subgroup[i][2],subgroup[i][1]);
                if (subgroup[i][1] == selectedOption) subGroupSelect.selectedIndex = currentOption;
            }
        }
    }
}

function catalogItemAdd()
{
    var group               = document.getElementById("group");
    var subgroup            = document.getElementById("sub_group");
    var add_item_title      = document.getElementById("add_item_title");
    var add_item_url        = document.getElementById("add_item_url");
    var add_item_img        = document.getElementById("add_item_img");
    var add_item_describe   = document.getElementById("add_item_describe");
    var add_item_visibility = document.getElementById("add_item_visibility");
    var submitForm          = document.forms['post'];

    if ('' == group.value)
    {
        alert('Выберите группу в каталоге.');
    } else
    if ('' == subgroup.value)
    {
        alert('Выберите подгруппу.');
    } else
    if ('' == add_item_title.value)
    {
        alert('Введите название сайта.');
    } else
    if (false == isURL(add_item_url.value))
    {
        alert('Введите корректный адрес сайта');
    } else
    if ('' == add_item_url.value)
    {
        alert('Введите адрес сайта.');
    } else
    if ('' == add_item_describe.value)
    {
        alert('Введите описание сайта.');
    } else
    {
        submitForm.submit();
    }
}
function isURL(s) {
    var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
    return regexp.test(s);
}

function doLogin(){
    if ('' == document.login.login_name.value.replace(/^\s*|\s*$/g,""))
    {
        return false;
    } else
    {
        document.login.password.value=MD5(document.login.login_pass.value);
        document.login.password.value=MD5(document.login.password.value+document.login.nonce.value);
        document.login.login_pass.value='';
        document.login.nonce.value='';
        document.login.submit();
    }
}
function doSubmitAddUser()
{
    var form = document.forms['add_login'];
    if (form)
    {
        if ('' == form.add_name.value)
        {
            form.add_name.focus();
            alert('Введите имя пользователя');
        } else
        if ('' == form.add_user.value)
        {
            form.add_user.focus();
            alert('Введите логин.');
        } else
        if ('' == form.add_pass.value)
        {
            form.add_pass.focus();
            alert('Необходимо задать пароль');
        } else
        if ('' == form.add_pass2.value)
        {
            form.add_pass2.focus();
            alert('Необходимо ввести пароль повторно.');
        } else
        if (form.add_pass.value != form.add_pass2.value)
        {
            form.add_pass.focus();
            alert('Введеные пароли не совпадают');
        } else
        if (form.add_mail.value == '' && (form.add_city.value == '' || form.add_phone.value == ''))
        {
            alert('Введите город и номер телефона, если не ввели e-mail.');
            form.add_city.focus();
        } else
        if (form.add_mail.value != '' && false == isEmail(form.add_mail.value))
        {
            form.add_mail.focus();
            alert('Введите правильный адрес электронной почты.');
        } else
        {
            form.add_password.value=MD5(form.add_pass.value);
            form.add_pass.value = '';
            form.add_pass2.value = '';
            form.submit();
        }
    }
}
function isEmail(str)
{
    if(!str.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,4}$/i))
    { return false; }
    else { return true };
}
function doSubmitPassForm()
{
if (document.pass.user_pass.value == document.pass.user_pass2.value)
{
document.pass.old_user_pass.value=MD5(document.pass.user_pass_old.value);
document.pass.new_user_pass.value=MD5(document.pass.user_pass.value);
document.pass.new_user_pass2.value=MD5(document.pass.user_pass2.value);
document.pass.user_pass.value = '';
document.pass.user_pass2.value = '';
document.pass.user_pass_old.value = '';
document.pass.submit();
} else
{
alert('Введеные значения отличаются.\nДля изменения пароля вы должны ввести одинаковые значения.');
}
}
function doSubmitRecoverPass()
{
    if ('' == document.pass.user_login.value)
    {
        document.pass.user_login.focus();
        alert('Введите логин, указанный при регистрации.');
    } else
    if ('' == document.pass.user_mail.value)
    {
        document.pass.user_mail.focus();
        alert('Введите адрес электронной почты, указанный при регистрации.');
    } else
    if (false == isEmail(document.pass.user_mail.value))
    {
        document.pass.user_mail.focus();
        alert('Введите правильный адрес электронной почты.');
    } else
    {
        document.pass.submit();
    }
}
function doSubmitUpdateUser()
{
    var form = document.forms['add_login'];
    if (form)
    {
        if ('' == form.add_name.value)
        {
            form.add_name.focus();
            alert('Введите имя пользователя');
        } else
        if ('' == form.add_name.value)
        {
            form.add_name.focus();
            alert('Введите имя пользователя');
        } else
        if (form.add_mail.value != '' && false == isEmail(form.add_mail.value))
        {
            form.add_mail.focus();
            alert('Введите правильный адрес электронной почты.');
        } else
        {
            form.password.value = MD5(form.add_pass.value);
            form.add_pass.value = '';
            form.submit();
        }
    }
}
function checkPhone(evt)
{
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46 && charCode != 41 && charCode != 45 && charCode != 36 && charCode != 35&& charCode != 116 && charCode != 43 && charCode != 32 && (charCode < 37 || charCode > 40))
    {
        alert ("Это поле для ввода телефона и только");
        return false;
    }
    return true;
}
function checkUser(evt)
{
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode > 31 && (charCode < 65 || charCode > 91) && (charCode < 97 || charCode > 122) && (charCode < 1040 || charCode > 1103) && (charCode < 48 || charCode > 57) && charCode != 116 && charCode != 36 && charCode != 45 && charCode != 1105 && charCode != 1025 && charCode != 35 && charCode != 46 && charCode != 95 && (charCode < 37 || charCode > 40))
    {
        alert ("Разрешены только A-z, А-я, -, _");
        return false;
    }
    //alert (charCode);
    return true;
}
function checkName(evt)
{
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode > 31 && (charCode < 65 || charCode > 91) && (charCode < 97 || charCode > 122) && (charCode < 1040 || charCode > 1103) && charCode != 116 && charCode != 36 && charCode != 32 && charCode != 1105 && charCode != 1025 && charCode != 35 && charCode != 46 && charCode != 45 && (charCode < 37 || charCode > 40))
    {
        alert ("Разрешены только A-z, А-я, -, пробел");
        return false;
    }
    return true;
}
function showPwd()
{
    var form = document.getElementById('auth_pwd_form');
    form.style.display = 'block';
    setTimeout("document.getElementById('login_name').focus();",200);
}
function hidePwd()
{
    var form = document.getElementById('auth_pwd_form');
    form.style.display = 'none';
}
function doLoginOnEnter(evt)
{
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode == 13)
        doLogin();
    else
        return false;
}
function focusNext(id_input, evt)
{
    evt = (evt) ? evt : ((window.event) ? event : null);
    if (evt)
    {
        var keyCode = (evt.charCode) ? evt.charCode : ((evt.witch) ? evt.witch : evt.keyCode);
        if (keyCode == 13)
        {
            document.getElementById(id_input).focus();
        }
    }
}
