// 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 IsEmptyText(pName)
{
    var r = true;

    var uv = new String(pName);
    var reg = /(^\s+)|(\s+$)/g;
    NewName = uv.replace(reg, '');

    if('' != NewName)
    {
        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;
}



function IsSubmitAnswerClient(objform)
{

    var r = true;


    if(IsEmptyText(objform.elements["username"].value))
    {
        alert("Пожалуйста, введите ваше имя.");
        r = false;
    }
    else if(IsEmptyText(objform.elements["useremail"].value))
    {
        alert("Пожалуйста, введите ваш Email.");
        r = false;
    }
    else if(IsEmptyText(objform.elements["questiontext"].value))
    {
        alert("Пожалуйста, введите текст вопроса.");
        r = false;
    }

    return r;
}





function IsSubmitAppointments(objform)
{

    var r = true;


    if(IsEmptyText(objform.elements["fio"].value))
    {
        alert("Пожалуйста, введите имя.");
        r = false;
    }
    else if(IsEmptyText(objform.elements["phone"].value))
    {
        alert("Пожалуйста, укажите телефон.");
        r = false;
    }
    return r;
}

// http://www.tigir.com/javascript_select.htm
function addOption (oListbox, text, value, isDefaultSelected, isSelected)
{
  var oOption = document.createElement("option");
  oOption.appendChild(document.createTextNode(text));
  oOption.setAttribute("value", value);

  if (isDefaultSelected) oOption.defaultSelected = true;
  else if (isSelected) oOption.selected = true;

  oListbox.appendChild(oOption);
}

function clearSelect(oListbox)
{
    n = oListbox.options.length;
    while(0 < n)
    {
        oListbox.remove(0);
        n = oListbox.options.length;
    }
}

function SetAppointmentDate()
{
    d = new Date();

    var dow  = new Array();
    dow[0] = "воскресенье";
    dow[1] = "понедельник";
    dow[2] = "вторник";
    dow[3] = "среда";
    dow[4] = "четверг";
    dow[5] = "пятница";
    dow[6] = "суббота";

    SelectorMonth = document.getElementById("appointmentmonthid");
    SelectorDay = document.getElementById("appointmentdayid");
    clearSelect(SelectorDay);
    // Нумерация с 0 ?
    d.setMonth(SelectorMonth.options[SelectorMonth.selectedIndex].value - 1);
    var i = 0;

    var StartDay = 1;
    if(new Date().getMonth() == d.getMonth())
    {
        StartDay = new Date(d.getYear(), d.getMonth(), d.getDate() + 1).getDate();
    }
    var CountDay = new Date(d.getYear(), d.getMonth() + 1, 0).getDate();

    var d7 = new Date();
    d7.setMonth(d.getMonth());
    for(i = StartDay; i <= CountDay; i++)
    {
        d7.setDate(i);
        addOption(SelectorDay, '' + i + ', ' + dow[d7.getDay()], i, false, false);
    }

}





function PregTrim(txt)
{
    var x = txt;
    reg =/^(\s*)/g;
    x = x.replace(reg, '');
    reg =/(\s*)$/g;
    x = x.replace(reg, '');
    return x;
}

function CheckFormNoEmpty(obj_element)
{
    var r = true;
    obj_element.value = PregTrim(obj_element.value);
    if('' == obj_element.value)
    {
        var tmpname = obj_element.name;
        if(null !== obj_element.getAttribute("noolabname"))
        {
            tmpname = obj_element.getAttribute("noolabname");
        }
        alert("Пожалуйста, заполните поле '" + tmpname + "'\n" + "Оно не должно быть пустым.");
        r = false;
    }
    return r;
}

function CheckFormUrl(obj_element)
{
    var r = true;
    obj_element.value = PregTrim(obj_element.value);
    v3 = obj_element.value;
    reg = /[a-z]+[a-z_0123456789]*/;
    if(('' != v3)&&(!reg.test(v3)))
    {
        alert("Неверный URL. должен начинаться с буквы. Должен содержать только строчные английские буквы арабские цифры и знак подчёркивания. Может быть пустым.");
        r = false;
    }
    return r;
}



function IsValidForm(objform)
{
    var r = true;

    for (var i = 0; i < objform.elements.length; i++)
    {
        v = objform.elements[i];
        elName = v.nodeName.toLowerCase();
        value = v.value;

        noolabtype = v.getAttribute("noolabtype");

        if(null !== v.getAttribute("noolabtype"))
        {
            noolabtype = noolabtype.toLowerCase;
            if("noempty" == v.getAttribute("noolabtype"))
            {
                r = r && CheckFormNoEmpty(v);
            }
            if("url" == v.getAttribute("noolabtype"))
            {
                r = r && CheckFormUrl(v);
            }
        }
    }
    return r;
}
