/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Гринин В.Н. 26.03.2010
-- ЦЕЛЬ:
--   Показывает/убирает поле для ввода номера извещения в зависимости от выбора в поле "есть"/"нет"
-- ПАРАМЕТРЫ:
--   el    - Combobox (this)
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function onChangeNoteNumber(el){
    gebi("inp_note_number_value").style.display = (el.value == "1" ? "block" : "none");
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Гринин В.Н. 13.11.2009
-- ЦЕЛЬ:
--   Синоним для document.getElementById
-- ПАРАМЕТРЫ:
--   id    - ID контрола
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function gebi(id) {
	return document.getElementById(id);;
}
/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Малкина О.В. 10.2006
-- ЦЕЛЬ:
--   Проверка полей формы на заполнение хотя бы одного. Если ни один не заполнен выводится ошибка.
-- ПАРАМЕТРЫ:
--   formEl    - объект форма
--   showError - показывать ошибку
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
--   Поля имеют теги <input>, <checkbox>, <select>
*/
function check_params(formEl, showError) {
	var childs = gebi('formEl').childNodes();
	alert(childs);
  for(elem in formEl.elements.all){
    if (formEl.elements[elem]){
      if ((formEl.elements[elem]['tagName'] =='INPUT' || formEl.elements[elem]['tagName'] =='SELECT') && (isNaN(elem))){
          if (
              (formEl.elements[elem]['type'] == 'checkbox')   && (formEl.elements[elem]['checked'] == true) ||
              (formEl.elements[elem]['type'] == 'text')       && (formEl.elements[elem]['value']   != '')   ||
              (formEl.elements[elem]['type'] == 'select-one') && (formEl.elements[elem]['value']   != '0')
             ){
            return true;
          }
      }
    }
  }
  if (showError=='1') alert('Должен быть заполнен хотя бы один параметр запроса.');
  return false;
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Малкина О.В. 10.2006
-- ЦЕЛЬ:
--   Проверка полей типа DATE на корректность введенных данных
-- ПАРАМЕТРЫ:
--   oTextEl - поле типа DATE
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function onDateBlur(oTextEl){
  Error = DateValidation(oTextEl);
  if ((oTextEl.value!='')&&(Error)){
    alert('Введённые данные не соответствуют дате в формате: DD.MM.YYYY');
    oTextEl.focus();
    oTextEl.select();
  }
}

function AddLeadingZero(value, vallen) {
  value = "000000000000000000000000000000" + value;
  return value.substring(value.length - vallen, value.length);
}

function DelLeadingZero(value) {
  var i, pos;
  pos = 0;
  for (i = 0; i < value.length; i++)
    if (value.charAt(i) != "0") {
      pos = i;
      break;
    }
  return value.substring(pos, value.length);
}

function isValidInt(value) {
  if (value == "")
    return true;
  
  value = DelLeadingZero(value);
  
  var isNumeric = (value == String(parseFloat(value, 10)));
  if( !isNumeric || (parseInt(value, 10) != parseFloat(value, 10)) )
    return false;
  else
  	return true;
}

function isValidFloat(value) {
  if (value == "")
    return true;
  value = DelLeadingZero(value);
  value = value.replace(",", ".");
  if (value.charAt(0) == ".") value = "0" + value;
  var isNumeric = (value == String(parseFloat(value, 10)));
  if( !isNumeric )
    return false;
  else
  	return true;
}

function onIntBlur(oInput) {
  if( !isValidInt(oInput.value) ) {
    oInput.focus();
    oInput.select();
    alert('Введённые данные не являются числом целого типа');
    
  }
}

function onFloatBlur(oInput) {
  if( !isValidFloat(oInput.value) ) {
    oInput.focus();
    oInput.select();
    alert('Введённые данные не являются числом денежного типа');
  }
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Малкина О.В. 10.2006
-- ЦЕЛЬ:
--   Проверка даты на коппектность
-- ПАРАМЕТРЫ:
--   dateEl - елемент дата
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function DateValidation(dateEl){
  var sample = dateEl.value;
  var error = false;
  
  if (sample.length != 10 || sample.charAt(2) != "." || sample.charAt(5) != ".")
    return true;
  
  strdate = sample;
  day = strdate.substring(0, 2);
  month = strdate.substring(3, 5);
  year = strdate.substring(6, 10);
  
  if( day == '' || month == '' || year == '' || 
      !isValidInt(day) || !isValidInt(month) || !isValidInt(year) )
    return true;
    
  day = parseInt(day, 10);
  month = parseInt(month, 10);
  year = parseInt(year, 10);

  if (month < 1 || month > 12) error = true;
  if (day < 1 || day > 31) error = true;
  if (month == 4 || month == 6 || month == 9 || month == 11){
    if (day == 31) error = true;
  };
  
  if (month == 2){
    var g = parseInt(year / 4, 10);
    if (isNaN(g)) {
      error = true;
    }
    if (day > 29) error = true;
    if (day == 29 && ((year / 4) != parseInt(year / 4, 10))) error = true;
  }
  if (year < 50) year = 2000 + year;
  if (year < 100) year = 1900 + year;

  if (!error){
    dateEl.value = AddLeadingZero(day, 2) + '.' + AddLeadingZero(month, 2) + '.' + AddLeadingZero(year, 4);
    dateEl.errvalue = dateEl.value;
  }
  return error;
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Малкина О.В. 10.2006
-- ЦЕЛЬ:
--   Проверка начальной и конечной даты диапазона на корректность диапазона
-- ПАРАМЕТРЫ:
--   dateEl_from - начальная дата
--   dateEl_to   - конечная дата
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function RangeValidate(dateEl_from, dateEl_to){
  var str_dateEl_from;
  var str_dateEl_to;
  var num_dateEl_from;
  var num_dateEl_to;

  str_dateEl_from = gebi('dateEl_from').value;
  str_dateEl_to = gebi('dateEl_to').value;

  if (str_dateEl_from == '' && str_dateEl_to == '') return true;
  if (str_dateEl_from == '') num_dateEl_from = 0;
   else num_dateEl_from = parseInt(str_dateEl_from.substring(6, 10)+str_dateEl_from.substring(3, 5)+str_dateEl_from.substring(0, 2), 10);
  if (str_dateEl_to == '') num_dateEl_to = 0;
   else num_dateEl_to   = parseInt(str_dateEl_to.substring(6, 10)+str_dateEl_to.substring(3, 5)+str_dateEl_to.substring(0, 2), 10);

  if (isNaN(num_dateEl_from) ||  isNaN(num_dateEl_to)){
    alert('Ошибка определения даты.Задайте корректную дату.');
    gebi('dateEl_from').focus();
    gebi('dateEl_from').select();
    return false;
  }

  if ((num_dateEl_from > num_dateEl_to) && (num_dateEl_to != 0)){
    alert('Дата начала периода '+str_dateEl_from+' не может быть больше даты окончания периода '+str_dateEl_to+'.');
    gebi('dateEl_from').focus();
    gebi('dateEl_from').select();
    return false;
  }
  return true;
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Малкина О.В. 10.2006
-- ЦЕЛЬ:
--   Проверка полей запроса на корректность
-- ПАРАМЕТРЫ:
--   formEl    - объект форма
--   showError - отображать ошибку?
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function FilterIsOk(formEl, showError){
  if (
      check_params(formEl, showError) &&
      RangeValidate('inp_change_date_begin','inp_change_date_end') &&
      RangeValidate('inp_contract_date_begin','inp_contract_date_end') &&
      RangeValidate('inp_execution_date_begin','inp_execution_date_end')
     ) return true;
  return false;
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Малкина О.В. 10.2006
-- ЦЕЛЬ:
--   Выставляет значения в hidden поля type, mode, sort_field, asc_desc, ctr_id
--   Применяется при нажатии на столбец шапки
-- ПАРАМЕТРЫ:
--   type      - тип документа (основной или строки)
--   mode      - режим вывода
--   sortField - поле сортировки
--   asc_desc  - напрвление сортировки
--   ctr_id    - идентификатор основного документа по госконтрактам
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function SortOnClick(type, mode, sortField, asc_desc, ctr_id) {
  if ((gebi('inp_line_amount_from').value !== '' ||
     gebi('inp_line_amount_to').value !== '')
     && gebi('inp_line_year').value === '') {
		alert("Внимание! Поиск невозможен. Для учета параметров 'Сумма оплаты' необходимо указать 'Год оплаты'");
    return false;
  }

  oSortField = gebi('sort_field');
  oWay = gebi('asc_desc');
  oCtrId = gebi('ctr_id');

  if (asc_desc === '') {
    if (oWay.value === 'asc') {
    	oWay.value = 'desc';
    }
    else { 
    	if (oWay.value === 'desc' || oWay.value === '') {
    		oWay.value = 'asc';
    	}
    }
    if (oSortField.value !== sortField) {
    	oWay.value = 'asc';
    }
  }
  else if(asc_desc != 0) {
  	oWay.value = asc_desc + '';
  }
  if(sortField != 0) {
      oSortField.value = sortField + '';
  }
  oCtrId.value = ctr_id + '';
  
  gebi('type').value = type + '';
  gebi('mode').value = mode + '';
  if( mode !== 'history' ) {
    gebi('sessionid').value = '0';
  }
  
  if( mode == 'list' ) {
    gebi('page_no').value = 1;
    gebi('inp_StartRow').value = 1;
  }
    
  gebi('FilterForm').submit();
}

function ExpotToExcel(type, mode, sortField, asc_desc, ctr_id) {
  var frm = gebi('FilterForm');
  if(frm)
  {
	  frm.target = '_blank';
	  frm.action = 'ExportToExcel.php';
	  SortOnClick(type, mode, sortField, asc_desc, ctr_id, '0');
	  frm.target='_self';
	  frm.action = 'index.php';
	}
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Кононов Е.В. 22.01.2007
-- ЦЕЛЬ: Переход на указанную страницу при отображении списка контрактов
--
-- ПАРАМЕТРЫ:
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function GotoPage(Page_No) {
  gebi('page_no').value = Page_No;
  gebi('FilterForm').submit();
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Кононов Е.В. 22.01.2007
-- ЦЕЛЬ: Переход на страницу истории для выбранного контракта
--
-- ПАРАМЕТРЫ:
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function ShowHistory(ctr_id) {
  gebi('sort_field_contracts').value = gebi('sort_field').value;
  gebi('asc_desc_contracts').value = gebi('asc_desc').value;
  gebi('main_window_mode').value = gebi('mode').value;
  
  gebi('sort_field').value = '';
  gebi('asc_desc').value = '';
  gebi('mode').value = 'history';
  gebi('ctr_id').value = ctr_id;
  gebi('FilterForm').submit();
}

function ShowFilesToLoad() {
  gebi('sort_field_contracts').value = gebi('sort_field').value;
  gebi('asc_desc_contracts').value = gebi('asc_desc').value;
  gebi('main_window_mode').value = gebi('mode').value;
  SortOnClick('', 'files_to_load', 'journal_number, journal_date, change_number', 'asc', '', '');
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Кононов Е.В. 22.01.2007
-- ЦЕЛЬ: Возвращеие со страницы истории на страницу списка контрактов
--
-- ПАРАМЕТРЫ:
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function ShowContracts() {
  gebi('sort_field').value = gebi('sort_field_contracts').value;
  gebi('asc_desc').value = gebi('asc_desc_contracts').value;
  //if( gebi('main_window_mode').value !== 'summary_all' ) {
  //  gebi('mode').value = gebi('main_window_mode').value;
  //}
  //else {
  //  gebi('mode').value = '';
  //}
  if(gebi('mode').value == 'history') {
    gebi('mode').value = 'list';
  }
  else {
    gebi('mode').value = '';
    gebi('sessionid').value = '0';
  }
  gebi('ctr_id').value = '';
  gebi('FilterForm').submit();
}

/*
-----------------------------------------------------------------------------
-- СОЗДАЛ: Кононов Е.В. 22.01.2007
-- ЦЕЛЬ: Отображение страницы с информацией по выбранному контракту
--
-- ПАРАМЕТРЫ:
-- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ И ДОПУЩЕНИЯ:
*/
function ShowContractInfo(ctr_id, type) {
  if( type == "1" )
    window.open("prilojenie1.php?type=contract_lines&ctr_id=" + ctr_id);
  else if( type == "2" )
    window.open("prilojenie2.php?type=contract_lines&ctr_id=" + ctr_id);
}

// Open Calendar
var oc = null;
var CalendarCaption = "";
function openCalendar(inpDate, caption) {
  var width, height, top, left;
  height = 190;
  width = 230;
  top = (screen.height - height) / 2;
  left = (screen.width - width) / 2;

  var selectedDate;
  if (inpDate.value != "")
    selectedDate = new Date(inpDate.value.substring(6, 10), (inpDate.value.substring(3, 5) - 1), inpDate.value.substring(0, 2))
  else
    selectedDate = new Date();
  
  CalendarCaption = caption;
  var popup = "top=" + top + ",left=" + left + ",width=" + width + ",height=" + height + ",status=no,scrollbars=no,toolbar=no,menubar=no,location=no,resizable=no";
  if (oc != null && !oc.closed) oc.close();
  var year = selectedDate.getYear();
  if(year<1900) year+=1900;
	oc = window.open('calendar.php' + '?inpDate=' + inpDate.id + '&day=' + selectedDate.getDate() + '&month=' + (selectedDate.getMonth() + 1) + '&year=' + year, 'viewCalendar', popup);
	oc.focus();
}

function ShowAdditionalFilter(objImgVisibled, objImgUnvisibled) {
  if (gebi('AdditionalFilter').style.display === 'block') {
    gebi('AdditionalFilter').style.display = 'none';
    objImgVisibled.style.display = 'block';
    objImgUnvisibled.style.display = 'none';
  }
  else {
    gebi('AdditionalFilter').style.display = 'block';
    objImgVisibled.style.display = 'none';
    objImgUnvisibled.style.display = 'block';
  }
}

function getContractsSummary(event) {
  if( event.keyCode != 19 )
    return false;
  
  document.all["mode"].value = 'summary_all';
  document.all["FilterForm"].submit();
}
