var work = false;
function addItem(event)
{
  var e = event || window.event;
  var obj = collectObject(e);
  var layer = document.getElementById('fillForm');
  if (!layer)
    layer = createLayer();
  $('#subs').show();
  $('#buttonOk').val('Сохранить').click(saveItem);
  var wtcf = document.getElementById('wtcf'),
      tds, td, arr;
  parseItem(obj, false, true);
  work = 'add';
}
function editItem(event)
{
  var e = event || window.event;
  var obj = collectObject(e);
  var layer = document.getElementById('fillForm');
  if (!layer)
    layer = createLayer();
  $('#subs').show();
  $('#buttonOk').val('Сохранить').click(saveItem);
  var wtcf = document.getElementById('wtcf'),
      tds, td, arr;
  parseItem(obj, true, true);
  work = 'edit';
}
function removeItem(event)
{
  var e = event || window.event;
  var obj = collectObject(e);
  var layer = document.getElementById('fillForm');
  if (!layer)
    layer = createLayer();
  parseItem(obj, true, false);
  $('#subs').show();
  $('#buttonOk').val('Удалить').click(saveItem);
  $('#fillTable').prepend(
    $(document.createElement('TR')).append(
      $(document.createElement('TD')).attr(
        {collspan:'2'}
      ).css(
        {'align':'center', color:'red'}
      ).text('Подтвердите удаление записи.')
    )
  );
  var wtcf = document.getElementById('wtcf'),
      tds, td, arr;
  work = 'remove';
}
function collectObject(event)
{
  var obj = event.target || event.srcElement;
  while (obj.tagName!='TR')
    obj = obj.parentNode;
  return obj;
}
function createLayer()
{
  $('body')
  .append($('<div/>').attr({id:'subs'})
    .append($('<div/>').attr({id:'fillForm'})
      .append($('<table/>').attr({id:'fillTable'}))
    )
  );
  clearTable();
}
function saveItem()
{
  if (!checkValues())
    return;
  var table = document.getElementById('fillTable'),
      inputs = table.getElementsByTagName('INPUT'),
      areas = table.getElementsByTagName('TEXTAREA'),
      selects = table.getElementsByTagName('SELECT');
  var text = 'type='+document.getElementById('type').value+'&action='+work+'&';
  for (i=0; i<inputs.length; ++i)
    if (inputs[i].type.toLowerCase()=='button' || inputs[i].type.toLowerCase()=='reset' || inputs[i].type.toLowerCase()=='submit')
      continue;
    else if (inputs[i].type.toLowerCase()=='text' || inputs[i].type.toLowerCase()=='hidden')
      text+= inputs[i].id+'='+inputs[i].value+'&';
    else if (inputs[i].type.toLowerCase()=='checkbox')
      text+= inputs[i].id+'='+(inputs[i].checked?1:0)+'&';
  for (i=0; i<areas.length; ++i)
    text+= areas[i].id+'='+escape(areas[i].value)+'&';
  for (i=0; i<selects.length; ++i)
  {
    text+= selects[i].id+'='+selects[i].options[selects[i].selectedIndex].value+'&';
  }
  if (!xmlreq)
    alert('Не найдено XMLHTTP-соединение.');
//  xmlreq.onreadystatechange = process;
//  xmlreq.open('POST', 'ajax.wtcf.php', true);
//  xmlreq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
//  xmlreq.setRequestHeader('Content-type', 'text/html; charset=Windows-1251');
//  xmlreq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//  xmlreq.send(text);
  $.getJSON('ajax.wtcf.php', text, function(json){ json.func(); });
  hideLayer();
}
function publicReport()
{
  if (!xmlreq)
    alert('Не найдено XMLHTTP-соединение.');
  var text = 'type=summaryweekreport&action=add';
//  xmlreq.onreadystatechange = process;
//  xmlreq.open('POST', 'ajax.wtcf.php', true);
//  xmlreq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
//  xmlreq.setRequestHeader('Content-type', 'text/html; charset=Windows-1251');
//  xmlreq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//  xmlreq.send(text);
  $.getJSON('ajax.wtcf.php', text, function(json){ json.func(); });
}
function changeYear()
{
  if (!xmlreq)
    alert('Не найдено XMLHTTP-соединение.');
  var select = document.getElementById('year'),
      year = select.options[select.selectedIndex].value,
      type = document.getElementById('type').value,
      text = 'type='+type+'&action=changeYear&year='+year;
//  xmlreq.onreadystatechange = process;
//  xmlreq.open('POST', 'ajax.wtcf.php', true);
//  xmlreq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
//  xmlreq.setRequestHeader('Content-type', 'text/html; charset=Windows-1251');
//  xmlreq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//  xmlreq.send(text);
  $.getJSON('ajax.wtcf.php', text, function(json){ json.func(); });
}
function saveDays()
{
  if (!xmlreq)
    alert('Не найдено XMLHTTP-соединение.');
  var select = document.getElementById('year'),
      year = select.options[select.selectedIndex].value,
      text = 'type=monthdays&action=saveDays&year='+year+"&";
  for (i=1; i<13; ++i)
    text+= 'month'+i+'='+document.getElementById('month'+i).value+'&';
//  xmlreq.onreadystatechange = process;
//  xmlreq.open('POST', 'ajax.wtcf.php', true);
//  xmlreq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
//  xmlreq.setRequestHeader('Content-type', 'text/html; charset=Windows-1251');
//  xmlreq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//  xmlreq.send(text);
  $.getJSON('ajax.wtcf.php', text, function(json){ json.func(); });
}
function hideLayer()
{
  $('#subs').hide();
  work = false;
}
function clearTable()
{
  $('#fillTable').html('')
//  $('#fillTable')
    .append($('<tr/>')
      .append($('<td/>').css({textAlign:'right', width:'50%'})
        .append($('<input/>').attr({id:'buttonOk', type:'button'}).val('Сохранить').click(saveItem))
      )
      .append($('<td/>').css({textAlign:'left', width:'50%'})
        .append($('<input/>').attr({id:'buttonCancel', type:'button'}).val('Отмена').click(hideLayer))
      )
    )
}
function parseItem(obj, gettingValue, visible)
{
  if (!objects)
  {
    alert('Не найдена коллекция свойств объектов!');
    return;
  }
  clearTable();
  for (i=objects.length-1; i>=0; --i)
  {
    if (objects[i].type.toLowerCase()=='none')
      continue;
    var td, cal=0, input, value = gettingValue?obj.childNodes[i].innerHTML:'';
    if (objects[i].type.toLowerCase()=='hidden')
      td = $('<td/>')
           .append($('<input/>')
             .attr({id:objects[i].id, type:'hidden', title:objects[i].type})
             .val(value)
             .css({display:'none'})
           );
    else if (objects[i].type.toLowerCase()=='text')
      td = $('<td/>')
           .append($('<input/>')
              .attr({id:objects[i].id, type:'text', title:objects[i].type})
              .val(value)
           );
    else if (objects[i].type.toLowerCase()=='textarea')
      td = $('<td/>')
           .append($('<textarea/>')
             .attr({id:objects[i].id, title:objects[i].type})
             .val(value)
           );
    else if (objects[i].type.toLowerCase()=='date')
    {
      cal = objects[i].id;
      var date = new Date();
      date = date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();
      td = $('<td/>')
             .append($('<input/>')
               .attr({id:objects[i].id, type:'text', title:objects[i].type})
               .css({width:'50%'})
               .val(gettingValue==true?value:date)
             )
             .append($('<img/>')
               .attr({id:objects[i].id+'_c', src:'jscripts/calendar/img.gif', title:objects[i].type})
               .css({cursor:'pointer', border:'0'})
               .hover(function(){$(this).css({backgroundColor:'red'});}, function() {$(this).css({backgroundColor:''});})
             );
    }
    else if (objects[i].type.toLowerCase()=='time')
      td = $('<td/>')
           .append($('<input/>')
             .attr({id:objects[i].id, type:'text', title:objects[i].type})
             .val(value)
           );
    else if (objects[i].type.toLowerCase()=='checkbox')
    {
      var check = gettingValue && obj.childNodes[i].innerHTML.toLowerCase()=='да'?true:false;
      td = $('<td/>')
           .append($('<input/>')
             .attr({id:objects[i].id, type:'checkbox', title:objects[i].type, checked:check})
           );
    }
    else if (objects[i].type.toLowerCase()=='select')
    {
      td = $('<td/>');
      input = $('<select/>')
        .attr({id:objects[i].id, title:objects[i].type});

      if (objects[i].from)
        for (j=0; j<objects[i].from.length; ++j)
        {
          var select = gettingValue==true && obj.childNodes[i].innerHTML==objects[i].from[j].name?true:false;
          input
            .append($('<option/>')
              .attr({value:objects[i].from[j].id, selected:select})
              .text(objects[i].from[j].name)
            )
        }
      td.append(input);
    }
    else if (objects[i].type.toLowerCase()=='email')
    {

      input.title = objects[i].type;
    }
    else if (objects[i].type.toLowerCase()=='phone')
    {

      input.title = objects[i].type;
    }
    $('#fillTable')
    .prepend(
      $('<tr/>')
      .append($('<td/>')
        .text(objects[i].name)
        .css({textAlign:'right', display:objects[i].type.toLowerCase()=='hidden'?'none':''})
      )
      .append(td)
      .css({display:!visible?'none':''})
    );
    if (cal!=0)
      Calendar.setup({'inputField':cal, 'ifFormat':'%Y-%m-%d', 'button':cal+'_c', 'align':'Bl', 'singleClick':true, 'weekNumber':false})
  }
}
function checkValues()
{
  var table = document.getElementById('fillTable'),
      inputs = table.getElementsByTagName('input'),
      failedObject = false;
  for (i=0; i<inputs.length; ++i)
  {
    inputs[i].style.color = '';
    if (failedObject!=false)
      break;
    if (inputs[i].title=='date' && !inputs[i].value.checkDate())
      failedObject = inputs[i];
    else if (inputs[i].title=='time' && !inputs[i].value.checkTime())
      failedObject = inputs[i];
  }
  if (failedObject!=false)
  {
    failedObject.style.color = 'red';
    failedObject.focus();
    return false;
  }
  return true;
}
String.prototype.checkDate = function()
{
  return /^([0-9]{4,4})-([0-9]{1,2})-([0-9]{1,2})$/.test(this);
}
String.prototype.checkTime = function()
{
  if (/^([0-9]{1,2}):([0-9]{1,2})$/.test(this))
  {
    var hour = this.substr(0, this.indexOf(':')),
        minutes = this.substr(this.indexOf(':')+1);
    if (hour>=0 && minutes>=0 && minutes<60)
      return true;
  }
  return false;
}
String.prototype.checkEMail = function()
{
  return /^([0-9A-Za-z\.-]{1,})@([0-9A-Za-z]{1,})\.([A-Za-z]{2,3})$/.test(this);
}
String.prototype.checkPhone = function()
{

}
function changeUser(user)
{
  if (!xmlreq)
    alert('Не найдено XMLHTTP-соединение.');
  text = 'type=changeuser&action=change&user='+user;
//  xmlreq.onreadystatechange = process;
//  xmlreq.open('POST', 'ajax.wtcf.php', true);
//  xmlreq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
//  xmlreq.setRequestHeader('Content-type', 'text/html; charset=Windows-1251');
//  xmlreq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//  xmlreq.send(text);
  $.getJSON('ajax.wtcf.php', text, function(json){ json.func(); });
}
function toggle(event)
{
  $('#report_settings').toggle('fast');
}
function lastWeek()
{
  var d = new Date();
  $('#date_to').val(d.getFullYear()+'-'+(d.getMonth()+1)+'-'+getDate());
  if (d.getDay()==0) {}
}
function lastMonth()
{
  var d = new Date();
  $('#date_from').val(d.getFullYear()+'-'+(d.getMonth()+1)+'-01');
  $('#date_to').val(d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate());
}
function lastYear()
{
  var d = new Date();
  $('#date_to').val(d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate());
  $('#date_from').val(d.getFullYear()+'-01-01');
}