// © ViN:Novich 2001-2007

var NOERRORS                  = 0x0000; // Ошибок нет
var ERROR_LEN_NULL            = 0x0001; // Длина = 0. Параметр не указан
var ERROR_LEN_NOT_IN_INTERVAL = 0x0002; // Длина не входит в необходимый интервал. Указано, но длина меньше необходимой.
var ERROR_LEN_EXCEED          = 0x0004; // Длина больше допустимой
var ERROR_CONTENT_INVALID     = 0x0008; // Содержание неправильное

// Тип сообщения в верху формы
var ERROR  = 1;
var NOTIFY = 2;


var YEARS_BEGIN = 1970;   // Год начала работы
var CITY_OTHER  = 1000;

// Ограничения переменных
var LIMIT_EMAIL             = 100;  // E-mail
var LIMIT_COMMENT           = 250;  // Комментарий
var LIMIT_NAME              = 50;   // Имя/Ник
var LIMIT_IMAGE_DESCRIPTION = 250;  // Описание изображения
var LIMIT_TEXT_ON_IMAGE     = 30;   // Текст на изображении

// Размеры превью
var MIN_PREVIEW = 100;  // Минимальный размер
var MAX_PREVIEW = 1000; // Максимальный размер

// Качество jpeg
var MIN_QUALITY = 50;  // Минимальное качество
var MAX_QUALITY = 100; // Максимальное качество

// Для функции counter
var INC = 1; // Счетчик показывает количество введенных символов
var DEC = 2; // Счетчик показывает количество оставшихся символов


/*
+--------------------------------------------------------------------------
|   Получение пути к элементу в зависимости от браузера
+--------------------------------------------------------------------------
*/
function _layer(layerName)
{
 // DOM1
  if(document.getElementById) 
    return document.getElementById(layerName);
 // MSIE4
  if(document.all) 
    return document.all[layerName];
 // Netscape 4
  if(document.layers) 
    return document.layers[layerName];
 // Неподдерживаемый браузер
 // Хотя можно реализовать через полный перебор элементов, но это долго
  return null;
}


/*
+--------------------------------------------------------------------------
|   Подсчет количества символов в поле ввода
+--------------------------------------------------------------------------
*/
function counter(_element, _length, _max, _p)
{   
  var d = _layer(_element);

  if(_p == DEC)
    d.innerHTML = ((_max-_length) < 0) ? 0 : (_max-_length);
  else
    d.innerHTML = _length;

  if(_length >= _max)
    return false;
  else
    return true;

}


/*
+--------------------------------------------------------------------------
|   Открыть окно
+--------------------------------------------------------------------------
*/
function winop(page, head, bookmark, l, t, h, w, is_toolbar)
{
   var hWnd;
   var path;
   
   if(bookmark.length > 0)
     page += '#'+bookmark;
   
   // Если не указаны координаты, значит вывод по центру
   if((l == 0) || (t == 0))
   {
     l = Math.round(screen.availWidth/2) - Math.round(w/2); 
     t  = Math.round(screen.availHeight/2) - Math.round(h/2); 
	
   }  
   hWnd = window.open(page, head, 'height='+h+', width='+w+
                      ',left='+l+', top='+t+', status=no, toolbar='+is_toolbar+
                      ', location=no, directories=no, scrollbars=yes, resizable=yes');
 
   hWnd.focus();
   
}


/*
+--------------------------------------------------------------------------
|   Проверка параметра "E-mail"
+--------------------------------------------------------------------------
*/
function check_email(param) 
{
	var error = NOERRORS;
	
	if(param.length == 0)
  	 return ERROR_LEN_NULL;
  if(param.length > LIMIT_EMAIL)
     error =  ERROR_LEN_EXCEED;
     
  var expr = new RegExp('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$'); 
  if(!expr.test(param))
    error |= ERROR_CONTENT_INVALID;	
     
  return error;
}



/*
+--------------------------------------------------------------------------
|   Проверка числового параметра
+--------------------------------------------------------------------------
*/
function check_numeric(param, begin, end, numOfsymbols)
{
	if(param == 0)
	  return ERROR_LEN_NULL;
	
	if(param.length > numOfsymbols)
    return ERROR_LEN_EXCEED;
        
	if((param < begin) || (param > end))
     return ERROR_LEN_NOT_IN_INTERVAL;
  
  var expr = new RegExp('^[0-9]+$'); 
  if(!expr.test(param))
    return ERROR_CONTENT_INVALID;
    
  return NOERRORS;
}


/*
+--------------------------------------------------------------------------
|   Проверка параметра "Контактное лицо"
|   Ли; Антон; Иванов Иван Иванович.; Ирина, Олег (Дмитрий).
+--------------------------------------------------------------------------
*/
function check_name(param)
{
  var error = NOERRORS;
  	 
  if(param.length == 0)
    return ERROR_LEN_NULL;
  	    
  if(param.length > LIMIT_CONTACT_NAME)
    error = ERROR_LEN_EXCEED;
  else if(param.length < 2)
    error = ERROR_LEN_NOT_IN_INTERVAL;

  var expr = new RegExp('^[0-9а-яёЁА-Яa-zA-Z \.\,\(\)\-_]+$'); 
  if(!expr.test(param))
    error |= ERROR_CONTENT_INVALID;	
     
  return error;
}


/*
+--------------------------------------------------------------------------
|   Блок со списком ошибок
+--------------------------------------------------------------------------
*/
function get_error_box(msg_text, msg_type)
{
	if(msg_type == ERROR)
	  return '<table border="0" cellSpacing="4" cellPadding="0" width="90%" bgcolor="#FFECF7" style="border: 1px solid #FF2020;" align="center">'+
         '<tr><td class="form_error"><div align="center" style="font-weight:bold; font-size:11px;">При заполнени полей формы были допущены ошибки</div><br />'+
          msg_text+'</td></tr>'+
         '</table>';
	if(msg_type == NOTIFY)
	   	  return '<table border="0" cellSpacing="4" cellPadding="0" width="90%" bgcolor="#FFECF7" style="border: 1px solid #f35202;" align="center">'+
         '<tr><td class="form_error">'+
          msg_text+'</td></tr>'+
         '</table>';
}