
function RemindPassword(oLink) {

  if( !$("login").value ) {

    alert("Не указан логин!");
    return false;
  }

  var url = ROOT + "/json/";
  var pars = "random=" + Math.round(Math.random() * 1000000) + "&Name=remind&Login=" + $("login").value;
  
  var myAjax = new Ajax.Request (
    url, 
    {
     method: "get",
     parameters: pars,
     asynchronous: true,
     onComplete: remindResponse,
     onFailure: remindFailure
    }
  );

  return false;
}

function remindFailure(originalRequest) {

  window.status = "Loading error: " + originalRequest.statusText;
}

function remindResponse(originalRequest) {

  var remind = new Object();

  eval(originalRequest.responseText);
  //alert(originalRequest.responseText);

  if( remind["State"] )
    alert(remind["Message"]);
  else
    window.status = remind["Message"];
}

function QuickRegistration(oLink) {

  if( $("MsgContent").value
      && !confirm("Есть набранный комментарий, и если сейчас перейти к процедуре регистрации, то текст будет потерян. Всё равно продолжить?") )
    return false;

  return true;
}

function QuickShow(oLink) {

  if( $("message-password-area").style.display == "block" ) {

    $("message-password-area").style.display = "none";
    $("MsgPassword").title = "";
  }
  else {

    $("message-password-area").style.display = "block";
    $("MsgPassword").title = "Пароль";
  }

  return false;
}

function SetTypeView(TypeView) {

  SetValue("View", TypeView, "int");

  return true;
}

// Leo - вернуть 00 - 09 вместо 0 - 9 - так красивее (ДД.ММ вместо Д.М или ДД.М и Д.ММ)
function GetNumber(sNum) {

  re = /^(\d{0,1})(\d{1})$/
  aResult = re.exec(sNum)

  if( aResult && !aResult[1] )
    return "0" + parseInt(aResult[2]);

  return sNum;
}

var NewsDay = new Object();

// смотрит что и как в NewsDay
function TestNewsDay(iYear, iMonth, iDay) {

  if( typeof NewsDay == "undefined"
      || typeof NewsDay.root == "undefined" )
    return 0;

  if( typeof iYear != "undefined"
      && (typeof NewsDay.root.I == "undefined"
          || typeof NewsDay.root.I[iYear] == "undefined") )
    return 0;

  if( typeof iMonth != "undefined"
      && (typeof NewsDay.root.I[iYear].I == "undefined"
          || typeof NewsDay.root.I[iYear].I[iMonth] == "undefined") )
    return 0;

  if( typeof iDay != "undefined"
      && (typeof NewsDay.root.I[iYear].I[iMonth].I == "undefined"
          || typeof NewsDay.root.I[iYear].I[iMonth].I[iDay] == "undefined") )
    return 0;

  return 1;
}

var dSelectDate = new Date();

function BuildCalendar(ID, iYear, iMonth) {

  // (!) iMonth в людском понимании: 1-12, в то время как new Date() принимает 0-11
  var sHTML = "";
  var aMonths = new Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
  var dPrevMonth = new Date(iYear, iMonth-1, 0);
  var dNextMonth = new Date(iYear, iMonth+1, 0);
  var aDayOfWeekTitles = new Array("пн", "вт", "ср", "чт", "пт", "сб", "вс");
  var dFirstDay = new Date(iYear, iMonth-1, 0);
  var iDaysCount = ((new Date(iYear,iMonth,-1)).getDate() + 1);
  var dNow = new Date();


  // заголовок Календаря
  sHTML += "<img src=" + ROOT + "/i/design/calendar-head-left.gif class=calendar-head-left border=0 width=17 height=22><img src=" + ROOT + "/i/design/calendar-head-right.gif class=calendar-head-right border=0 width=17 height=22>";
  sHTML += "<h2 id=calendar-header>Архив новостей</h2>";
  sHTML += "<table width=100% border=0 cellpadding=0 cellspacing=1 bgcolor=#b1b1b1 id=calendar-table>";

  // навигатор по годам
  sHTML += "<tr><td colspan=7 class=calendar-day>";

  if( TestNewsDay(iYear-1, 12) )
    sHTML += "<a href='' onclick='BuildCalendar(\""+ID+"\", "+(iYear-1)+", 12); return false;'><img src=" + ROOT + "/i/design/arrowleft.gif class=calendar-arrow-left border=0 width=11 height=11></a>";
  else
    sHTML += "<img src=" + ROOT + "/i/design/arrowleft.gif class=calendar-arrow-left border=0 width=11 height=11>";

  if( TestNewsDay(iYear+1, 1) )
    sHTML += "<a href='' onclick='BuildCalendar(\""+ID+"\", "+(iYear+1)+", 1); return false;'><img src=" + ROOT + "/i/design/arrowright.gif class=calendar-arrow-right border=0 width=11 height=11></a>";
  else
    sHTML += "<img src=" + ROOT + "/i/design/arrowright.gif class=calendar-arrow-right border=0 width=11 height=11>";

  sHTML += "<a id=calendar-year href='" + ROOT + "/news/" + iYear + "/'>" + iYear +"</>";
  sHTML += "</td></tr>";

  // навигатор по месяцам
  sHTML += "<tr><td colspan=7 class=calendar-day>";

  if( TestNewsDay(dPrevMonth.getFullYear(), dPrevMonth.getMonth()+1) )
    sHTML += "<a href='' onclick='BuildCalendar(\""+ID+"\", "+(dPrevMonth.getFullYear())+", "+(dPrevMonth.getMonth()+1)+"); return false;'><img src=" + ROOT + "/i/design/arrowleft.gif class=calendar-arrow-left border=0 width=11 height=11></a>";
  else
    sHTML += "<img src=" + ROOT + "/i/design/arrowleft.gif class=calendar-arrow-left border=0 width=11 height=11>";

  if( TestNewsDay(dNextMonth.getFullYear(), dNextMonth.getMonth()+1) )
    sHTML += "<a href='' onclick='BuildCalendar(\""+ID+"\", "+(dNextMonth.getFullYear())+", "+(dNextMonth.getMonth()+1)+"); return false;'><img src=" + ROOT + "/i/design/arrowright.gif class=calendar-arrow-right border=0 width=11 height=11></a>";
  else
    sHTML += "<img src=" + ROOT + "/i/design/arrowright.gif class=calendar-arrow-right border=0 width=11 height=11>";

  sHTML += "<a id=calendar-month href='" + ROOT + "/news/" + iYear + "/" + GetNumber(iMonth)+ "/'>" + aMonths[iMonth-1].toLowerCase() + "</a>";
  sHTML += "</td></tr>";

  // собственно сетка дней
  sHTML += "<tr>";
  for(i = 0; i < aDayOfWeekTitles.length; i++ )
    sHTML += "<td class='" + ((i==5||i==6)?"calendar-week-rest":"calendar-week") + "'>" + aDayOfWeekTitles[i] +"</td>";
  sHTML += "</tr>";

  sHTML += "<tr>";
  for(i = 0; i < dFirstDay.getDay(); i++)
    sHTML += "<td class=calendar-day>&nbsp;</td>";
    
  for(i = 0; i < iDaysCount; i++ ) {

    if( (i + dFirstDay.getDay()) % 7 == 0 )
      sHTML += "</tr><tr>";

    var dDay = new Date(iYear, iMonth-1, i+1);

    if( dDay.getYear() == dSelectDate.getYear()
        && dDay.getMonth() == dSelectDate.getMonth()
        && dDay.getDate() == dSelectDate.getDate() )
      sClass = "calendar-select";
    else {
      if( dDay.getYear() == dNow.getYear()
          && dDay.getMonth() == dNow.getMonth()
          && dDay.getDate() == dNow.getDate() )
        sClass = "calendar-now";
      else {

        if( dDay.getDay() == 6
            || dDay.getDay() == 0 )
          sClass = "calendar-rest";
        else
          sClass = "calendar-day";
      }
    }

    sHTML += "<td class=" + sClass + ">";
    
    if( TestNewsDay(iYear, iMonth, i+1) )
      sHTML += "<a href='"+ ROOT + "/news/" + iYear + "/" + GetNumber(iMonth) + "/" + GetNumber(i+1) + "/'>" + (i+1) + "</a>";
    else
      sHTML += (i+1);

    sHTML  += "</td>";
  }

  if( (i + dFirstDay.getDay()) % 7 ) {
    for(i = 0; i < (7 - (iDaysCount + dFirstDay.getDay()) % 7); i++)
      sHTML += "<td class=calendar-day>&nbsp;</td>";
  }

  sHTML += "</tr>";
  sHTML += "</table>";

  $(ID).innerHTML = sHTML;

  return;
}

function VoteWarning(oLink) {

  if( confirm('Для того, чтобы голосовать нужно пройти регистрацию. Сделаете это сейчас?') )
    location.href = oLink.href;

  return false;
}

function VoteToWork(Work, Vote) {

  var url = ROOT + "/json/";
  var pars = "random=" + Math.round(Math.random() * 1000000) + "&Name=votework&vote=" + Vote + "&Work=" + Work;
  
  //window.status = "Data load...";
  
  var myAjax = new Ajax.Request (
    url, 
    {
     method: "get",
     parameters: pars,
     asynchronous: true,
     onComplete: voteResponse,
     onFailure: voteFailure
    }
  );

  return false;
}

function voteFailure(originalRequest) {

  window.status = "Loading error: " + originalRequest.statusText;
}

function voteResponse(originalRequest) {

  //window.status = new Number(originalRequest.responseText.length/1024).toFixed(2) + " Kb loaded.";

  var votework = new Object();

  eval(originalRequest.responseText);

  window.status = votework["Message"];

  if( $("rating" + votework["Work"]) )
    $("rating" + votework["Work"]).innerHTML = votework["Rating"] ? parseInt(votework["Rating"]) : 0;
}

