﻿//-----------------------Вспомогательная библиотека упрощающая многие операции---------------------------

//Устанавливает обработчик события на определенный объект
function addHandler(object, event, handler)
{
  if (typeof object.addEventListener != 'undefined')
    object.addEventListener(event, handler, false);
  else if (typeof object.attachEvent != 'undefined')
    object.attachEvent('on' + event, handler);
  else
    throw "Incompatible browser";
}

//Удаляет обработчик события
function removeHandler(object, event, handler)
{
  if (typeof object.removeEventListener != 'undefined')
    object.removeEventListener(event, handler, false);
  else if (typeof object.detachEvent != 'undefined')
    object.detachEvent('on' + event, handler);
  else
    throw "Incompatible browser";
}

//функция проверяет есть ли запрещенные данные в форме--

function sqlInjectionCharsExists( str )
 {
	
	return str.search( /[\'\"=;\*\\]|insert|delete|update/ ) != -1; 
	
 }

//------------------------------------------------------

//-Функция удаляет те символы которые запрещены в форме--

function deleteSQLInjectionChars( str )
 {
   
   return str.replace( /[\'\"=;\*\\]|insert|delete|update/g, "" ); 
   
 }
 
//----------------------------------------------------------------------------

//---Функция проверяет все ли переданные в строке символы являются числом-----

function numberExists( str )
 {
	
	return str.search( /[^0-9\.\,]+/ ) == -1;
	
 }


//-----------------------------------------------------------------------------

//----Удаляет из строки все символы не являющиеся числами----------------------

function deleteNoNumbers( str )
 {
	
	return str.replace( /[^0-9\.\,]+/g, "" );
	
 }

//------------------------------------------------------------------------------

//----------------Функция удаляет начальные и конечные пробелы------------------

function trim( str )
 {
	
	//Концевые пробелы
	str = str.replace( /[^\S]+$/g, "" );
	//Начальные пробелы
	str = str.replace( /^[^\S]+/g, "" );
	
	return str;
 }

//------------------------------------------------------------------------------ 

//------------Функция определяет есть ли в строке не латинские символы----------

function isLatinSymbols( str )
 {
   return str.search( /[^(a-zA-z0-9_\-)]/ ) != -1
 }

//------------------------------------------------------------------------------

//----------Функция удаляет все не латинские символы из строки------------------

function deleteNoLatinSymbols( str )
 {
   return str.replace( /[^(a-zA-z0-9_\-)]/g, "" );
 }

//------------------------------------------------------------------------------

//Функция проверяет корректность адреса электронной почты-----------------------

function checkEmailAdress( e_mail )
 {
	return e_mail.search( /^([a-zA-z0-9\._\-]+@[a-zA-Z0-9\._\-]+(\.[a-zA-Z0-9]+))$/ ) != -1; 
 }	 

//------------------------------------------------------------------------------

//--------Функция валидатор вызывает указанные обработчики валидации------------

/*
  
  Список кодов валидаторов
  
  is_sql_injection    : Сообщает о том, что найдены не допустимые SQLInjection символы
  del_sql_injection   : Удаляет все недопустимые SQLInjection символы
  
  is_number           : Сообщает о том, что в текстовом поле найдены не числа
  del_no_number       : Удаляет все символы не являющиеся чмслом
  
  is_latin            : Сообщает о том, что в текстовом поле найдены не латинские символы
  del_no_latin        : Удаляет все не латинские символы
  
  trim                : Удаляет конечные и начальные пробелы 
  
*/

function validator()
 {
   
   if ( arguments.length > 1 )
    {
	  
	  var obj = arguments[ 0 ];
	  var focus = false;
	  
	  for ( var i = 1; i < arguments.length; i ++ )
	   switch ( arguments[ i ] )
	    {
		  
		  case "is_sql_injection" : if ( sqlInjectionCharsExists( obj.value ) ) 
		                             { 
									  alert( 'В поле "' + obj.title + '" введены не допустимые символы!' );
		                              focus = true;
									 }
									
									break;
									
		  case "del_sql_injection": obj.value = deleteSQLInjectionChars( obj.value );
		                            break;
									
		  case "is_number"        : if ( ! numberExists( obj.value ) ) 
		                             { 
									  alert( 'Поле "' + obj.title + '" может состоять только из чисел!' );
		                              focus = true;
									 }
									break;
									
		  case "del_no_number"    : obj.value = deleteNoNumbers( obj.value );
		                            break;
									
		  case "is_latin"         : if ( isLatinSymbols( obj.value ) ) 
		                             { 
									  alert( 'Поле "' + obj.title + '" может состоять только из латинских символов и не содержать пробелов!' );
		                              focus = true;
									 }
									break;
									
		  case "del_no_latin"     : obj.value = deleteNoLatinSymbols( obj.value );
		                            break;
									
		  case "trim"             : obj.value = trim( obj.value );
		                            break;
									
									
		  
		}
		
	  if ( focus ) obj.focus();	
	  
	}
   
 }

//------------------------------------------------------------------------------

//----------Функция отображает диалоговое окно----------------------------------

function showBox( url, name, width, height, resizable, scrollbars )
 {
	
	if ( resizable == undefined ) resizable = "no";
	if ( scrollbars == undefined ) scrollbars = "no";
	
	var posX = ( screen.availWidth / 2 ) - ( width / 2 );
	var posY = ( screen.availHeight / 2 ) - ( height / 2 );
	
	var params = '';
	
	if ( width != undefined )
	 params += 'width=' + width + ',';
	
	if ( height != undefined )
	 params += 'height=' + height + ',';
	 
	if ( resizable  != undefined )
	 params += 'resizable=' + resizable + ',';
	 
	if ( scrollbars != undefined )
	 params += 'scrollbars=' + scrollbars + ',';
	 
	 params += 'left=' + posX + ', ';
	 params += 'top=' + posY;
	
	return window.open( url, name, params );
	
 }

//------------------------------------------------------------------------------