// Author: Marat  marat@noolab.ru



// "Включает" в форме formname все флажки с именем arrayname
function CheckAll(formname, arrayname) 
{
    var form=document.forms[formname];
    var len=form.elements.length;
    for(var i=0;i<len;i++) 
    {
        if(arrayname == form.elements[i].name)
        {
            form.elements[i].checked=true;
        }
    }
}

// "Включает" в форме formname все флажки с именем arrayname
function ClearAll(formname, arrayname)  
{
    var form=document.forms[formname];
    var len=form.elements.length;
    for(var i=0;i<len;i++)
    {
        if(arrayname == form.elements[i].name)
        {
            form.elements[i].checked=false;
        }
    }
}   

// Возвращает количество "включенных" флажков 
function GetCheckedCount(formname, arrayname) 
{
    var form=document.forms[formname];
    var len=form.elements.length;
    var CheckedCount = 0;
    for(var i=0;i<len;i++) 
    {
        if(arrayname == form.elements[i].name)
        {
        	if(form.elements[i].checked)
        	{
            	CheckedCount++;
            }
        }
    }
    return CheckedCount;
}   

// Требует подтвердить удаление
function ConfirmDelete(formname, arrayname)
{
    var r = false;
    var CheckedCount = GetCheckedCount(formname, arrayname);
    if(0 == CheckedCount)
    {
        alert("Не выделен ни один элемент.");
        r = false;
    }
    else
    {
        var conf = "Удалить "+CheckedCount+" штук?";
        r = confirm(conf);
    }
    return r;
}

// Требует подтвердить перемещение
function ConfirmReplace(formname, arrayname)
{
    var r = false;
    var CheckedCount = GetCheckedCount(formname, arrayname);
    if(0 == CheckedCount)
    {
        alert("Не выделен ни один элемент.");
        r = false;
    }
    else
    {
        var conf = "Переместить "+CheckedCount+" штук?";
        r = confirm(conf);
    }
    return r;
}

function OpenPictureWindow(ref, w, h)
{
    var scroll = "no";
    if(screen.availWidth  < w + 80)
    {
        w = screen.availWidth  - 80;
        scroll = "yes";
    }
    
    if(screen.availHeight < h + 80)
    {
        h = screen.availHeight  - 80;
        scroll = "yes";
    }
    
    
    var popupWin = window.open(ref, 
                               "contact", 
                               "location=0, width=" + w + ",height=" + h + ",top=0,scrollbars="+scroll);
    popupWin.focus();
}


//   Функции проверки строк

// Проверяет, достойна ли строка быть url в системе сайта
// (начинается с латинской буквы, содержит только цифры и латинские буквы)
function IsCorrectUrl(pUrl)
{
    var r = true;
    if('' != pUrl)
    {
        var uv = new String(pUrl);
        var reg = /^[a-zA-Z]+[_a-zA-Z0-9]*$/;
        if(uv.search(reg) == -1)
        {
            alert("Идентификатор URL должен начинаться с латинской буквы.\n Может содержать знаки подчёркивания, латинские буквы и цифры.\n Можно оставить пустым.");
            r = false;
        }
    }
    return r;
}

function IsCorrectName(pName)
{
    var r = true;
    
    var uv = new String(pName);
    var reg = /(^\s+)|(\s+$)/g;
    NewName = uv.replace(reg, '');

    if('' == NewName)
    {
        alert("Введите Название. Строка пустая или состоит из пробелов.");
        r = false;
    }
    return r;
}

function IsCorrectReference(pName)
{
    var r = true;
    
    var uv = new String(pName);
    var reg = /(^\s+)|(\s+$)/g;
    NewName = uv.replace(reg, '');

    if('' == NewName)
    {
        alert("Введите URL ссылки. Строка пустая или состоит из пробелов. Желательно начать с названия протокола (например http:\/\/)");
        r = false;
    }
    return r;
}




// ай ай ай, переделать!
function OnChangeURL()
{
    var vForm=document.forms["pageedit"];
    var elem = vForm.url;
    var r = true;
    if('' != elem.value)
    {
        var uv = new String(elem.value);
        var reg = /^[a-zA-Z]+[_a-zA-Z0-9]*$/;
        if(uv.search(reg) == -1)
        {
            alert("Идентификатор URL должен начинаться с латинской буквы.\n Может содержать знаки подчёркивания, латинские буквы и цифры.\n Можно оставить пустым.");
            r = false;
        }
    }
    return r;
}



function OnChangeName()
{
    var vForm = document.forms["pageedit"];
    var elem =  vForm.pagename;
    var r = true;
    
    var reg = /(^\s+)|(\s+$)/g;

    var uv = new String(elem.value);
    elem.value = uv.replace(reg, '');

    if('' == elem.value)
    {
        alert("Введите Название страницы (раздела). Строка пустая или состоит из пробелов.");
        r = false;
    }
    return r;
}



function SaveFilesHref()
{
    var r = true;
    document.forms["filesform"].returnhref.value = location.href;
    if(document.forms["filesform"].returnhref.value == '')
    {
        r = false;
    }
    return r;
}




function IsCorrectData(d, m, y)
{
    var r = true;
    var DaysPerMonth = new Array(13);
    DaysPerMonth[0] = 0;  // пропустим
    DaysPerMonth[1] = 31; // январь
    DaysPerMonth[2] = 29; // февраль(високосный)
    DaysPerMonth[3] = 31; // март
    DaysPerMonth[4] = 30; // апрель
    DaysPerMonth[5] = 31; // май
    DaysPerMonth[6] = 30; // июнь
    DaysPerMonth[7] = 31; // июль
    DaysPerMonth[8] = 31; // август
    DaysPerMonth[9] = 30; // сентябрь
    DaysPerMonth[10] = 31; // октябрь
    DaysPerMonth[11] = 30; // ноябрь
    DaysPerMonth[12] = 31; // декабрь
    
    if(d > DaysPerMonth[m])
    {
        alert("В этом месяце меньше дней. Исправьте число.");
        r = false;
    }
    
    if((2 == m)&&(d == 29)&&(y % 4 != 0))
    {
        alert("Год не високосный. В этом месяце меньше дней. Исправьте число.");
        r = false;
    }
    return r;
}


//   Проверки форм перед отправкой


function IsSubmitGallery(objform)
{
    var r = true;
    if('' == objform.galname.value)
    {
        alert("введите имя галереи");
        r = false;
    }
    else if(isNaN(parseInt(objform.cols.value)))
    {
        alert("Количество колонок указано неверно");
        r = false;
    }
    else if(!IsCorrectUrl(objform.url.value))
    {
        r = false;
    }
    return r;
}



function IsSubmitPicture(objform)
{
    var r = true;
    if('' == objform.elements["id"].value)
    {
        var tw = ('' == objform.elements["smallfile"].value) && ('' == objform.elements["bigfile"].value);
        if(tw)
        {
            alert("загрузите хоть один фаил");
            r = false;
        }
    }

    return r;
}



function IsSubmitNews(objform)
{
    
    var r = true;
    var d = objform.elements["mday"].value;
    var m = objform.elements["mon"].value;
    var y = objform.elements["year"].value;
    
    r = IsCorrectData(d, m ,y);
    r = r && IsCorrectName(objform.elements["smalltext"].value);

    return r;
}

function IsSubmitArticles(objform)
{
    
    var r = true;
    var d = objform.elements["mday"].value;
    var m = objform.elements["mon"].value;
    var y = objform.elements["year"].value;
    
    r = IsCorrectData(d, m ,y);
    r = r && IsCorrectName(objform.elements["smalltext"].value);
    r = r && IsCorrectUrl(objform.elements["url"].value);
    return r;
}

function IsSubmitReferences(objform)
{
    
    var r = true;
    var d = objform.elements["mday"].value;
    var m = objform.elements["mon"].value;
    var y = objform.elements["year"].value;
    
    r = IsCorrectData(d, m ,y);
    r = r && IsCorrectReference(objform.elements["sourcehref"].value);

    return r;
}


function IsSubmitProducers(objform)
{
    
    var r = true;
    
    r = IsCorrectName(objform.elements["producername"].value);
    r = r && IsCorrectUrl(objform.elements["url"].value);
    
    return r;
}








