//------------------------------------------------------------------------------
/** @author Бреславский А.В. (Joonte Ltd.) */
//------------------------------------------------------------------------------
// Defining client web browser version
//------------------------------------------------------------------------------
var $UserAgent = navigator.userAgent.toLowerCase();
//------------------------------------------------------------------------------
if(navigator.appVersion.indexOf('MSIE') != -1)
  $BrouserID = 'MSIE';
else
  if($UserAgent.indexOf('chrome') != -1)
    $BrouserID = 'Chrome';
else
  if($UserAgent.indexOf('konqueror') != -1)
    $BrouserID = 'Konqueror';
else
  if($UserAgent.indexOf('mozilla') != -1)
    $BrouserID = 'Mozilla';
else
  if($UserAgent.indexOf('opera') != -1)
    $BrouserID = 'Opera';
else
  $BrouserID = 'UnKnown';
//------------------------------------------------------------------------------
// Standard sprintf function
//------------------------------------------------------------------------------
function SPrintF($String){
  //----------------------------------------------------------------------------
  var $Result = '';
  //----------------------------------------------------------------------------
  for(var $i=0,$j=1;$i<$String.length;$i++){
    //--------------------------------------------------------------------------
    $Char = $String.charAt($i);
    //--------------------------------------------------------------------------
    if($Char == '%'){
      //------------------------------------------------------------------------
      switch($String.charAt($i+1)){
        case 's':
          //--------------------------------------------------------------------
          $Result += String(arguments[$j++]);
          //--------------------------------------------------------------------
          $i++;
        break;
        case 'u':
          //--------------------------------------------------------------------
          $Result += Number(arguments[$j++]);
          //--------------------------------------------------------------------
          $i++;
        break;
        default:
          $Result += $Char;
      }
    }else
      $Result += $Char;
  }
  //----------------------------------------------------------------------------
  return $Result;
}
//------------------------------------------------------------------------------
// Generationg unique id
//------------------------------------------------------------------------------
function UniqID($Prefix){
  //----------------------------------------------------------------------------
  return $Prefix+Math.round(Math.random()*1000000);
}
//------------------------------------------------------------------------------
var $__SYSLOG = ['Инициализация системы отладки'];
//------------------------------------------------------------------------------
// Adding message in system log
//------------------------------------------------------------------------------
function Debug($Action){
  //----------------------------------------------------------------------------
  //if(parent.console)
  //  parent.console.log($Action);
  //----------------------------------------------------------------------------
  $__SYSLOG.push($Action);
}
//------------------------------------------------------------------------------
// Opening trace window
//------------------------------------------------------------------------------
function Trace($Event){
  //----------------------------------------------------------------------------
  if($Event){
    //--------------------------------------------------------------------------
    var $IsCtrl = $Event.ctrlKey;
    //--------------------------------------------------------------------------
    var $Key = $Event.which;
  }else{
    //--------------------------------------------------------------------------
    var $IsCtrl = event.ctrlKey;
    //--------------------------------------------------------------------------
    var $Key = event.keyCode;
  }
  //----------------------------------------------------------------------------
  if($Key == 77 && $IsCtrl){
    //--------------------------------------------------------------------------
    $Result = '';
    //--------------------------------------------------------------------------
    for(var $i=0;$i<$__SYSLOG.length;$i++){
      //------------------------------------------------------------------------
      $Action = $__SYSLOG[$i];
      //------------------------------------------------------------------------
      $Result += SPrintF('<PRE style="border-bottom:1px dashed #DDDDDD;">%s</PRE>',$Action);
    }
    //--------------------------------------------------------------------------
    var $Window = window.open('about:blank','_blank','height=600,menubar=no,resizable=yes,scrollbars=yes,toolbar=no,width=800');
    //--------------------------------------------------------------------------
    var $String = SPrintF('<HTML><HEAD><TITLE>Отчет о работе</TITLE></HEAD><BODY>%s</BODY></HTML>',$Result);
    //--------------------------------------------------------------------------
    $Window.document.write($String);
    //--------------------------------------------------------------------------
    $Window.document.close();
  }
}
//------------------------------------------------------------------------------
// Get all object properties
//------------------------------------------------------------------------------
function PrintR($Object){
  //----------------------------------------------------------------------------
  for(var $i in $Object){
    //--------------------------------------------------------------------------
    var $Element = $Object[$i];
    //--------------------------------------------------------------------------
    Debug(SPrintF('%s=[%s]',$i,typeof $Element != 'function'?$Element:'function'));
  }
}
//------------------------------------------------------------------------------
document.onkeydown = Trace;
//------------------------------------------------------------------------------
// Remove bounds spaces
//------------------------------------------------------------------------------
function Trim($String){
  //----------------------------------------------------------------------------
  for(var $i=0;$i<$String.length;$i++){
    //--------------------------------------------------------------------------
    if($String.charAt($i) != ' '){
      //------------------------------------------------------------------------
      $String = $String.substring($i,$String.length);
      //------------------------------------------------------------------------
      break;
    }
  }
  //----------------------------------------------------------------------------
  for(var $i=$String.length - 1;$i>0;$i--){
    //--------------------------------------------------------------------------
    if($String.charAt($i) != ' '){
      //------------------------------------------------------------------------
      $String = $String.substring(0,$i+1);
      //------------------------------------------------------------------------
      break;
    }
  }
  //----------------------------------------------------------------------------
  return $String;
}
//------------------------------------------------------------------------------
// Get absolute position of object
//------------------------------------------------------------------------------
function GetPosition($Object){
  //----------------------------------------------------------------------------
  var $x = $y = 0;
  //----------------------------------------------------------------------------
  while($Object){
    //--------------------------------------------------------------------------
    Debug($Object.tagName);
    //--------------------------------------------------------------------------
    $x += $Object.offsetLeft;
    //--------------------------------------------------------------------------
    if(typeof $Object.scrollLeft != 'undefined')
      $x -= $Object.scrollLeft;
    //--------------------------------------------------------------------------
    $y += $Object.offsetTop;
    //--------------------------------------------------------------------------
    if(typeof $Object.scrollTop != 'undefined')
      $y -= $Object.scrollTop;
    //--------------------------------------------------------------------------
    $Object = $Object.offsetParent;
  }
  //----------------------------------------------------------------------------
  return {clientX:$x,clientY:$y};
}
//------------------------------------------------------------------------------
// Extending prototype of String class
//------------------------------------------------------------------------------
String.prototype.Replacing = function($What,$Whom){
  //----------------------------------------------------------------------------
  var $Result = this;
  //----------------------------------------------------------------------------
  var $i = $j = 0;
  //----------------------------------------------------------------------------
  while($i<$Result.length){
    //--------------------------------------------------------------------------
    if($Result.charAt($i) == $What.charAt($j++)){
      //------------------------------------------------------------------------
      if($j == $What.length){
        //----------------------------------------------------------------------
        $Result = $Result.substring(0,$i-$j+1)+$Whom+$Result.substring($i+1,$Result.length);
        //----------------------------------------------------------------------
        $i -= $What.length;
        //----------------------------------------------------------------------
        $i += $Whom.length - 1;
        //----------------------------------------------------------------------
        $j = 0;
      }
    }else
      $j = 0;
    //--------------------------------------------------------------------------
    $i++;
  }
  //----------------------------------------------------------------------------
  return String($Result);
}
//------------------------------------------------------------------------------
String.prototype.XMLEscape = function(){
  //----------------------------------------------------------------------------
  var $Result = this;
  //----------------------------------------------------------------------------
  var $Patterns = [{What:'&',Whom:'&amp;'},{What:'<',Whom:'&lt;'},{What:'>',Whom:'&gt;'},{What:'"',Whom:'&quot;'}];
  //----------------------------------------------------------------------------
  for(var $i in $Patterns){
    //--------------------------------------------------------------------------
    var $Pettern = $Patterns[$i];
    //--------------------------------------------------------------------------
    if(typeof($Pettern) != 'object')
      continue;
    //--------------------------------------------------------------------------
    $Result = $Result.Replacing($Pettern.What,$Pettern.Whom);
  }
  //----------------------------------------------------------------------------
  return String($Result);
};
//------------------------------------------------------------------------------
String.prototype.XMLUnEscape = function(){
  //----------------------------------------------------------------------------
  var $Result = new String(this);
  //----------------------------------------------------------------------------
  var $Patterns = [{What:'&lt;',Whom:'<'},{What:'&gt;',Whom:'>'},{What:'&quot;',Whom:'"'},{What:'&amp;',Whom:'&'}];
  //----------------------------------------------------------------------------
  for(var $i in $Patterns){
    //--------------------------------------------------------------------------
    var $Pettern = $Patterns[$i];
    //--------------------------------------------------------------------------
    if(typeof($Pettern) != 'object')
      continue;
    //--------------------------------------------------------------------------
    $Result = $Result.Replacing($Pettern.What,$Pettern.Whom);
  }
  //----------------------------------------------------------------------------
  return String($Result);
};
//------------------------------------------------------------------------------
// JSON decode function
//------------------------------------------------------------------------------
function JSON_Decode($String){
  //----------------------------------------------------------------------------
  eval('var $Result = '+$String);
  //----------------------------------------------------------------------------
  return $Result;
}
//------------------------------------------------------------------------------
Array.prototype.IsExists = function($Value){
  //----------------------------------------------------------------------------
  for(var $i in this){
    //--------------------------------------------------------------------------
    if(this[$i] == $Value)
      return true;
  }
  //----------------------------------------------------------------------------
  return false;
}
//------------------------------------------------------------------------------
// Get all form's components to array
//------------------------------------------------------------------------------
function FormGet($Form){
  //----------------------------------------------------------------------------
  var $Result = [];
  //----------------------------------------------------------------------------
  var $Inners = [];
  //----------------------------------------------------------------------------
  $Childs = $Form.getElementsByTagName('*');
  //----------------------------------------------------------------------------
  for(var $i=0;$i<$Childs.length;$i++){
    //--------------------------------------------------------------------------
    var $Child = $Form[$i];
    //--------------------------------------------------------------------------
    if(typeof($Child) != 'object' || $Child == null || !$Child.nodeName)
      continue;
    //--------------------------------------------------------------------------
    Debug(SPrintF('%s:%s',$Child.nodeName,$Child.name));
    //--------------------------------------------------------------------------
    $Inners.push($Child);
  }
  //----------------------------------------------------------------------------
  for(var $i=0;$i<$Inners.length;$i++){
    //--------------------------------------------------------------------------
    var $Child = $Inners[$i];
    //--------------------------------------------------------------------------
    $nodeName = $Child.nodeName.toLowerCase();
    //--------------------------------------------------------------------------
    Debug(SPrintF('Обработка элемента формы %s:%s',$nodeName,$Child.name));
    //--------------------------------------------------------------------------
    switch($nodeName){
      case 'input':
        //----------------------------------------------------------------------
        if(['button','submit','file'].IsExists($Child.type))
          break;
        //----------------------------------------------------------------------
        if(['checkbox','radio'].IsExists($Child.type) && !$Child.checked){
          //--------------------------------------------------------------------
          Debug(SPrintF('checkbox, radio [%s] не выбран',$Child.name));
          //--------------------------------------------------------------------
          break;
        }
        //----------------------------------------------------------------------
        $Result.push({Name:$Child.name,Value:$Child.value});
      break;
      case 'textarea':
        $Result[$Child.name] = $Child.value;
      break;
      case 'select':
        //----------------------------------------------------------------------
        if($Child.multiple){
          //--------------------------------------------------------------------
          for(var $i=0;$i<$Child.options.length;$i++){
            //------------------------------------------------------------------
            $Option = $Child.options[$i];
            //------------------------------------------------------------------
            if($Option.selected)
              $Result.push({Name:$Child.name,Value:$Option.value});
          }
        }else
          $Result.push({Name:$Child.name,Value:$Child.value});
      break;
      default:
        Debug(SPrintF('Тип тега (%s) не поддерживается',$nodeName));
    }
  }
  //----------------------------------------------------------------------------
  return $Result;
}
//------------------------------------------------------------------------------
// Get max z-index
//------------------------------------------------------------------------------
function GetMaxZIndex(){
  //----------------------------------------------------------------------------
  $Elements = document.getElementsByTagName('*');
  //----------------------------------------------------------------------------
  $MaxZIndex = -1;
  //----------------------------------------------------------------------------
  for(var $i=0;$Elements.length;$i++){
    //--------------------------------------------------------------------------
    if($Elements[$i] == undefined)
      break;
    //--------------------------------------------------------------------------
    var $Element = $Elements[$i];
    //--------------------------------------------------------------------------
    if($Element.style)
      $MaxZIndex = Math.max($MaxZIndex,$Elements[$i].style.zIndex);
  }
  //----------------------------------------------------------------------------
  return $MaxZIndex;
}
//------------------------------------------------------------------------------
// Set alpha effect for object
//------------------------------------------------------------------------------
function SetAlpha($Object,$Alpha){
  //----------------------------------------------------------------------------
  with($Object.style){
    //--------------------------------------------------------------------------
    switch($BrouserID){
      case 'MSIE':
        filter = $Alpha>=100?null:SPrintF('alpha(opacity=%u)',$Alpha);
      break;
      case 'Mozilla':
        MozOpacity = $Alpha/100;
      break;
      case 'Opera':
        opacity = $Alpha/100;
      break;
      case 'Chrome':
        opacity = $Alpha/100;
      break;
      default:
        backgroundImage = 'url(/styles/root/Images/Tranparent.gif)';
    }
  }
}
//------------------------------------------------------------------------------
// Начальное значение
var $FadeIn = 10;
// Интервал альфа эффекта
var $FadeInIntervalID = null;
// Объект альфа эффекта
var $FadeInObject = null;
// Максимальное значение альфа эффекта
var $FadeInMax = 100;
//------------------------------------------------------------------------------
function FadeIn($Object,$Max){
  //----------------------------------------------------------------------------
  window.clearInterval($FadeInIntervalID);
  //----------------------------------------------------------------------------
  if($Object){
    //--------------------------------------------------------------------------
    $FadeInObject = $Object;
    $FadeIn = 10;
  }
  //----------------------------------------------------------------------------
  if($Max)
    $FadeInMax = $Max;
  //----------------------------------------------------------------------------
  SetAlpha($FadeInObject,$FadeIn+=10);
  //----------------------------------------------------------------------------
  if($FadeIn < $FadeInMax)
    $FadeInIntervalID = window.setInterval('FadeIn();',20);
}
//------------------------------------------------------------------------------
// Начальное значение
var $FadeOut = 100;
// Интервал альфа эффекта
var $FadeOutIntervalID = null;
// Объект альфа эффекта
var $FadeOutObject = null;
// Максимальное значение альфа эффекта
var $FadeOutMin = 0;
//------------------------------------------------------------------------------
function FadeOut($Object,$Min){
  //----------------------------------------------------------------------------
  window.clearInterval($FadeOutIntervalID);
  //----------------------------------------------------------------------------
  if($Object){
    //--------------------------------------------------------------------------
    $FadeOutObject = $Object;
    $FadeOut = 100;
  }
  //----------------------------------------------------------------------------
  if($Min)
    $FadeOutMin = $Min;
  //----------------------------------------------------------------------------
  SetAlpha($FadeOutObject,$FadeOut-=10);
  //----------------------------------------------------------------------------
  if($FadeOut > $FadeOutMin)
    $FadeOutIntervalID = window.setInterval('FadeOut();',100);
}
//------------------------------------------------------------------------------
// Lock page with name
//------------------------------------------------------------------------------
function LockPage($Name,$Color,$Alpha){
  //----------------------------------------------------------------------------
  if(document.getElementById('LockPage'+$Name))
    return true;
  //----------------------------------------------------------------------------
  if(!$Color)
    $Color = '#000000';
  //----------------------------------------------------------------------------
  switch($BrouserID){
    case 'MSIE':
      //------------------------------------------------------------------------
      var $LockPage = document.createElement('IFRAME');
      //------------------------------------------------------------------------
      $LockPage.frameBorder = 'no';
    break;
    case 'Mozilla':
      //------------------------------------------------------------------------
      $LockPage = document.createElement('DIV');
      //------------------------------------------------------------------------
      $LockPage.style.backgroundColor = $Color;
    break;
    case 'Opera':
      //------------------------------------------------------------------------
      $LockPage = document.createElement('DIV');
      //------------------------------------------------------------------------
      $LockPage.style.backgroundColor = $Color;
    break;
    case 'Chrome':
      //------------------------------------------------------------------------
      $LockPage = document.createElement('DIV');
      //------------------------------------------------------------------------
      $LockPage.style.backgroundColor = $Color;
    break;
    default:
      //------------------------------------------------------------------------
      $LockPage = document.createElement('DIV');
      //------------------------------------------------------------------------
      $LockPage.style.backgroundImage = 'url(/styles/root/Images/Tranparent.gif)';
  }
  //----------------------------------------------------------------------------
  $LockPage.id = SPrintF('LockPage%s',$Name);
  //----------------------------------------------------------------------------
  var $UserAgent = navigator.userAgent.toLowerCase();
  //----------------------------------------------------------------------------
  with($LockPage.style){
    //--------------------------------------------------------------------------
    var $Body = document.body;
    //--------------------------------------------------------------------------
    position = 'absolute';
    top      = 0;
    left     = 0;
    height   = $Body.scrollHeight;
    width    = ($BrouserID == 'MSIE'?$Body.scrollWidth-10:$Body.scrollWidth);
    zIndex   = GetMaxZIndex() + 1;
  }
  //----------------------------------------------------------------------------
  SetAlpha($LockPage,$Alpha?$Alpha:20);
  //----------------------------------------------------------------------------
  document.body.appendChild($LockPage);
}
//------------------------------------------------------------------------------
// Unlock page with name
//------------------------------------------------------------------------------
function UnLockPage($Name){
  //----------------------------------------------------------------------------
  var $LockPage = document.getElementById('LockPage'+$Name);
  //----------------------------------------------------------------------------
  if($LockPage)
    $LockPage.parentNode.removeChild($LockPage);
}
//------------------------------------------------------------------------------
var $Image = new Image();
$Image.src = '/styles/root/Images/Icons/Progress.gif';
//------------------------------------------------------------------------------
// Show progress bar
//------------------------------------------------------------------------------
function ShowProgress($Text){
  //----------------------------------------------------------------------------
  var $Progress = document.getElementById('Progress');
  //----------------------------------------------------------------------------
  if($Progress){
    //--------------------------------------------------------------------------
    $Progress.style.zIndex = GetMaxZIndex() + 1;
    //--------------------------------------------------------------------------
    return false;
  }
  //----------------------------------------------------------------------------
  LockPage('Progress');
  //----------------------------------------------------------------------------
  var $Progress = document.createElement('DIV');
  $Progress.id = 'Progress';
  //----------------------------------------------------------------------------
  if(!$Text)
    $Text = 'Пожалуйста, подождите';
  //----------------------------------------------------------------------------
  var $innerHTML  = '<TABLE class="Progress" cellspacing="5" cellpadding="0"><TR><TD>';
  $innerHTML += '<IMG alt="Загрузка" align="left" height="50" width="50" src="/styles/root/Images/Icons/Progress.gif" />';
  $innerHTML += SPrintF('</TD><TD>%s</TD></TR>',$Text.XMLEscape());
  $innerHTML += '<TR><TD colspan="2" align="right">';
  $innerHTML += '<SPAN id="ProgressLine"></SPAN> <INPUT type="button" onclick="HideProgress();" value="Отмена" /></TD></TD></TR></TABLE>';
  //----------------------------------------------------------------------------
  $Progress.innerHTML = $innerHTML;
  //----------------------------------------------------------------------------
  with($Progress.style){
    //--------------------------------------------------------------------------
    left     = -1000;
    top      = -1000;
    position = 'absolute';
    zIndex   = GetMaxZIndex() + 1;
  }
  //----------------------------------------------------------------------------
  document.body.appendChild($Progress);
  //----------------------------------------------------------------------------
  var $Progress = document.getElementById('Progress');
  //----------------------------------------------------------------------------
  FadeIn($Progress,100);
  //----------------------------------------------------------------------------
  with($Progress.style){
    //--------------------------------------------------------------------------
    var $Body = document.body;
    //--------------------------------------------------------------------------
    left = $Body.scrollLeft + ($Body.clientWidth  - $Progress.offsetWidth)/2;
    top  = $Body.scrollTop + Math.max(($Body.clientHeight - $Progress.offsetHeight)/2,10);
  }
  //----------------------------------------------------------------------------
  document.body.style.cursor = 'wait';
}
//------------------------------------------------------------------------------
function SetProgress($Current,$Total){
  //----------------------------------------------------------------------------
  var $ProgressLine = document.getElementById('ProgressLine');
  //----------------------------------------------------------------------------
  if(!$ProgressLine)
    return false;
  //----------------------------------------------------------------------------
  $ProgressLine.innerHTML = SPrintF('%u%',($Current/$Total)*100);
}
//------------------------------------------------------------------------------
function HideProgress(){
  //----------------------------------------------------------------------------
  UnLockPage('Progress');
  //----------------------------------------------------------------------------
  var $Progress = document.getElementById('Progress');
  //----------------------------------------------------------------------------
  $Progress.parentNode.removeChild($Progress);
  //----------------------------------------------------------------------------
  document.body.style.cursor = 'auto';
}
//------------------------------------------------------------------------------
// Show standard alert
//------------------------------------------------------------------------------
function ShowAlert($Adding,$TypeID){
  //----------------------------------------------------------------------------
  if(document.getElementById('Alert'))
    return false;
  //----------------------------------------------------------------------------
  LockPage('Alert');
  //----------------------------------------------------------------------------
  var $Alert = document.createElement('DIV');
  $Alert.id = 'Alert';
  //----------------------------------------------------------------------------
  if(!$TypeID)
    $TypeID = 'Ok';
  //----------------------------------------------------------------------------
  var $UniqID = UniqID();
  //----------------------------------------------------------------------------
  var $Table = document.createElement('TABLE');
  $Table.className = 'Alert';
  $Table.cellSpacing = 5;
  $Table.cellPadding = 0;
  //----------------------------------------------------------------------------
  var $TBody = document.createElement('TBODY');
  //----------------------------------------------------------------------------
  var $Tr = document.createElement('TR');
  //----------------------------------------------------------------------------
  var $Td = document.createElement('TD');
  $Td.vAlign = 'top';
  //----------------------------------------------------------------------------
  var $Img = document.createElement('IMG');
  $Img.alt = 'Внимание';
  $Img.height = 48;
  $Img.width = 48;
  $Img.src = SPrintF('/styles/root/Images/Icons/%s.gif',$TypeID);
  $Td.appendChild($Img);
  //----------------------------------------------------------------------------
  $Tr.appendChild($Td);
  //----------------------------------------------------------------------------
  var $Td = document.createElement('TD');
  //----------------------------------------------------------------------------
  if(typeof $Adding == 'string')
    $Td.innerHTML = $Adding
  else
    $Td.appendChild($Adding);
  //----------------------------------------------------------------------------
  $Tr.appendChild($Td);
  $TBody.appendChild($Tr);
  //----------------------------------------------------------------------------
  var $Tr = document.createElement('TR');
  //----------------------------------------------------------------------------
  var $Td = document.createElement('TD');
  $Td.colSpan = 2;
  $Td.align = 'right';
  //----------------------------------------------------------------------------
  $Input = document.createElement('INPUT');
  $Input.type = 'button'
  $Input.id = $UniqID;
  $Input.onclick = HideAlert;
  $Input.value = 'Продолжить';
  //----------------------------------------------------------------------------
  $Td.appendChild($Input);
  $Tr.appendChild($Td);
  //----------------------------------------------------------------------------
  $TBody.appendChild($Tr);
  $Table.appendChild($TBody);
  //----------------------------------------------------------------------------
  $Alert.appendChild($Table);
  //----------------------------------------------------------------------------
  with($Alert.style){
    //--------------------------------------------------------------------------
    left     = -1000;
    top      = -1000;
    position = 'absolute';
    zIndex   = GetMaxZIndex() + 1;
  }
  //----------------------------------------------------------------------------
  document.body.appendChild($Alert);
  //----------------------------------------------------------------------------
  var $Alert = document.getElementById('Alert');
  //----------------------------------------------------------------------------
  with($Alert.style){
    //--------------------------------------------------------------------------
    if($Alert.offsetWidth > 450)
      width = 450;
    //--------------------------------------------------------------------------
    var $Body = document.body;
    //--------------------------------------------------------------------------
    left = $Body.scrollLeft + ($Body.clientWidth  - $Alert.offsetWidth)/2;
    top  = $Body.scrollTop + Math.max(($Body.clientHeight - $Alert.offsetHeight)/2,10);
  }
  //----------------------------------------------------------------------------
  document.getElementById($UniqID).focus();
}
//------------------------------------------------------------------------------
function HideAlert(){
  //----------------------------------------------------------------------------
  UnLockPage('Alert');
  //----------------------------------------------------------------------------
  var $Alert = document.getElementById('Alert');
  //----------------------------------------------------------------------------
  $Alert.parentNode.removeChild($Alert);
}
//------------------------------------------------------------------------------
// Show standard answer
//------------------------------------------------------------------------------
function ShowAnswer($Comment,$Button,$Value,$Eval){
  //----------------------------------------------------------------------------
  if(document.getElementById('Answer'))
    return false;
  //----------------------------------------------------------------------------
  LockPage('Answer');
  //----------------------------------------------------------------------------
  var $Answer = document.createElement('DIV');
  $Answer.id = 'Answer';
  //----------------------------------------------------------------------------
  var $Table = document.createElement('TABLE');
  $Table.className = 'Standard';
  $Table.cellSpacing = 5;
  $Table.cellPadding = 0;
  //----------------------------------------------------------------------------
  var $TBody = document.createElement('TBODY');
  //----------------------------------------------------------------------------
  var $Tr = document.createElement('TR');
  //----------------------------------------------------------------------------
  var $Td = document.createElement('TD');
  $Td.className = 'Head';
  $Td.innerHTML = $Comment.XMLEscape();
  //----------------------------------------------------------------------------
  $Tr.appendChild($Td);
  $Table.appendChild($Tr);
  //----------------------------------------------------------------------------
  var $Tr = document.createElement('TR');
  //----------------------------------------------------------------------------
  var $Td = document.createElement('TD');
  //----------------------------------------------------------------------------
  var $UniqID = UniqID();
  //----------------------------------------------------------------------------
  if($Value.length < 20){
    //--------------------------------------------------------------------------
    $Input = document.createElement('INPUT');
  }else{
    //--------------------------------------------------------------------------
    $Input = document.createElement('TEXTAREA');
    $Input.cols = 50;
    $Input.rows = 5;
  }
  //----------------------------------------------------------------------------
  $Input.id = $UniqID;
  $Input.value = $Value.XMLEscape();
  //----------------------------------------------------------------------------
  $Td.appendChild($Input);
  $Tr.appendChild($Td);
  //----------------------------------------------------------------------------
  $TBody.appendChild($Tr);
  //----------------------------------------------------------------------------
  var $Tr = document.createElement('TR');
  //----------------------------------------------------------------------------
  var $Td = document.createElement('TD');
  $Td.align = 'right';
  //----------------------------------------------------------------------------
  $Input = document.createElement('INPUT');
  $Input.type = 'button';
  $Input.value = 'Отмена';
  $Input.onclick = HideAnswer;
  //----------------------------------------------------------------------------
  $Td.appendChild($Input);
  //----------------------------------------------------------------------------
  $Span = document.createElement('SPAN');
  $Span.innerHTML = ' ';
  //----------------------------------------------------------------------------
  $Td.appendChild($Span);
  //----------------------------------------------------------------------------
  $Input = document.createElement('INPUT');
  $Input.type = 'button';
  $Input.value = $Button;
  $Input.onclick = function(){ eval($Eval.XMLUnEscape().Replacing('__VALUE__',SPrintF("document.getElementById('%s').value",$UniqID))); };
  //----------------------------------------------------------------------------
  $Td.appendChild($Input);
  $Tr.appendChild($Td);
  //----------------------------------------------------------------------------
  $TBody.appendChild($Tr);
  $Table.appendChild($TBody);
  //----------------------------------------------------------------------------
  $Answer.appendChild($Table);
  //----------------------------------------------------------------------------
  with($Answer.style){
    //--------------------------------------------------------------------------
    left     = -1000;
    top      = -1000;
    position = 'absolute';
    zIndex   = GetMaxZIndex() + 1;
  }
  //----------------------------------------------------------------------------
  document.body.appendChild($Answer);
  //----------------------------------------------------------------------------
  var $Answer = document.getElementById('Answer');
  //----------------------------------------------------------------------------
  with($Answer.style){
    //--------------------------------------------------------------------------
    if($Answer.offsetWidth > 450)
      width = 450;
    //--------------------------------------------------------------------------
    var $Body = document.body;
    //--------------------------------------------------------------------------
    left = $Body.scrollLeft + ($Body.clientWidth  - $Answer.offsetWidth)/2;
    top  = $Body.scrollTop + Math.max(($Body.clientHeight - $Answer.offsetHeight)/2,10);
  }
}
//------------------------------------------------------------------------------
function HideAnswer(){
  //----------------------------------------------------------------------------
  UnLockPage('Answer');
  //----------------------------------------------------------------------------
  var $Answer = document.getElementById('Answer');
  //----------------------------------------------------------------------------
  $Answer.parentNode.removeChild($Answer);
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
function ShowConfirm($Text,$Eval){
  //----------------------------------------------------------------------------
  if(document.getElementById('Confirm'))
    return false;
  //----------------------------------------------------------------------------
  LockPage('Confirm');
  //----------------------------------------------------------------------------
  var $Confirm = document.createElement('DIV');
  $Confirm.id = 'Confirm';
  //----------------------------------------------------------------------------
  var $innerHTML  = '<TABLE class="Alert" cellspacing="5" cellpadding="0"><TR><TD>';
  $innerHTML += '<IMG alt="Уведомление" height="48" width="48" src="/styles/root/Images/Icons/Notice.gif" />';
  $innerHTML += SPrintF('</TD><TD>%s</TD></TR><TR><TD colspan="2">',$Text.XMLEscape());
  $innerHTML += SPrintF('<TABLE width="5" align="right"><TR><TD><INPUT type="button" onclick="HideConfirm();%s" value="Да" /></TD>',$Eval);
  $innerHTML += '<TD><INPUT type="button" onclick="HideConfirm();" value="Нет" /></TD></TR></TABLE></TD></TR></TABLE>';
  //----------------------------------------------------------------------------
  $Confirm.innerHTML = $innerHTML;
  //----------------------------------------------------------------------------
  with($Confirm.style){
    //--------------------------------------------------------------------------
    left     = -1000;
    top      = -1000;
    position = 'absolute';
    zIndex   = GetMaxZIndex() + 1;
  }
  //----------------------------------------------------------------------------
  document.body.appendChild($Confirm);
  //----------------------------------------------------------------------------
  var $Confirm = document.getElementById('Confirm');
  //----------------------------------------------------------------------------
  with($Confirm.style){
    //--------------------------------------------------------------------------
    if($Confirm.offsetWidth > 450)
      width = 450;
    //--------------------------------------------------------------------------
    var $Body = document.body;
    //--------------------------------------------------------------------------
    left = $Body.scrollLeft + ($Body.clientWidth  - $Confirm.offsetWidth)/2;
    top  = $Body.scrollTop + Math.max(($Body.clientHeight - $Confirm.offsetHeight)/2,10);
  }
}
//------------------------------------------------------------------------------
function HideConfirm(){
  //----------------------------------------------------------------------------
  UnLockPage('Confirm');
  //----------------------------------------------------------------------------
  var $Confirm = document.getElementById('Confirm');
  //----------------------------------------------------------------------------
  $Confirm.parentNode.removeChild($Confirm);
}
//------------------------------------------------------------------------------
// Working with cookie
//------------------------------------------------------------------------------
function GetAllCookies(){
  //----------------------------------------------------------------------------
  var $Result = {};
  //----------------------------------------------------------------------------
  var $Cookies = document.cookie.split(';');
  //----------------------------------------------------------------------------
  for(var $i=0;$i<$Cookies.length;$i++){
    //--------------------------------------------------------------------------
    var $Cookie = $Cookies[$i].split('=');
    //--------------------------------------------------------------------------
    if($Cookie.length < 2)
      continue;
    //--------------------------------------------------------------------------
    $Result[Trim($Cookie[0])] = Trim($Cookie[1]);
  }
  //----------------------------------------------------------------------------
  return $Result;
}
//------------------------------------------------------------------------------
// Get cookie by name
//------------------------------------------------------------------------------
function GetCookie($Name){
  //----------------------------------------------------------------------------
  var $Cookies = GetAllCookies();
  //----------------------------------------------------------------------------
  for(var $i in $Cookies){
    //--------------------------------------------------------------------------
    if($i == $Name)
      return $Cookies[$i];
  }
  //----------------------------------------------------------------------------
  return false;
}
//------------------------------------------------------------------------------
// Set cookie by name with value
//------------------------------------------------------------------------------
function SetCookie($Name,$Value){
  //----------------------------------------------------------------------------
  document.cookie = SPrintF('%s=%s;path=/',escape($Name),escape($Value));
  //----------------------------------------------------------------------------
  return true;
}
//------------------------------------------------------------------------------
// Delete cookie by name
//------------------------------------------------------------------------------
function DeleteCookie($Name){
  //----------------------------------------------------------------------------
  var $Date = new Date();
  $Date.setFullYear($Date.getFullYear() - 1);
  //----------------------------------------------------------------------------
  document.cookie = SPrintF('%s=0;expires=%s;path=/',escape($Name),$Date.toGMTString());
  //----------------------------------------------------------------------------
  return true;
}
//------------------------------------------------------------------------------
var $InitIntervalID = window.setInterval("if(document.body){if(!window.frameElement){SetCookie('wScreen',document.body.clientWidth-50);SetCookie('hScreen',document.body.clientHeight-50);};window.clearInterval($InitIntervalID);}",1000);
//------------------------------------------------------------------------------
Date.prototype.ToStringDate = function(){
  //----------------------------------------------------------------------------
  var $MonthNames = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'];
  //----------------------------------------------------------------------------
  return SPrintF('%s %s %s г.',this.getDate(),$MonthNames[this.getMonth()],this.getFullYear());
};
//------------------------------------------------------------------------------
// Go to URL
//------------------------------------------------------------------------------
function GetURL($URL,$Window){
  //----------------------------------------------------------------------------
  if($Window == undefined)
    $Window = window;
  //----------------------------------------------------------------------------
  with($Window){
  ShowProgress();
  //----------------------------------------------------------------------------
  document.location = $URL;
}
}
//------------------------------------------------------------------------------
function Translite($String){
  //----------------------------------------------------------------------------
  var $Templates = "аaбbвvгgдdеeёjoжzhзzиiйjкkлlмmнnоoпpрrсsтtуuфfхkhцcчchшshщshhъ''ыyь'эehюjuяjaАAБBВVГGДDЕEЁJoЖZhЗZИIЙJjКKЛLМMНNОOПPРRСSТTУUФFХKhЦCЧChШShЩShhЪ''ЫYЬ'ЭEhЮJuЯJa";
  //----------------------------------------------------------------------------
  $Templates = $Templates.replace(/([а-яёЁ])([a-z']+)/gi,'.replace(/$1/g,"$2")');
  //----------------------------------------------------------------------------
  return eval("$String"+$Templates);
}
//------------------------------------------------------------------------------
function IsEnter(event){
  //----------------------------------------------------------------------------
  return event.keyCode == 13;
}
//------------------------------------------------------------------------------
function ShowTick($Text){
  //----------------------------------------------------------------------------
  $Tick = document.getElementById('Tick');
  //----------------------------------------------------------------------------
  if($Tick)
    $Tick.parentNode.removeChild($Tick);
  //----------------------------------------------------------------------------
  var $Tick = document.createElement('DIV');
  $Tick.id = 'Tick';
  $Tick.innerHTML = $Text;
  //----------------------------------------------------------------------------
  with($Tick.style){
    //--------------------------------------------------------------------------
    left     = -1000;
    top      = -1000;
    position = 'absolute';
    zIndex   = GetMaxZIndex() + 1;
  }
  //----------------------------------------------------------------------------
  document.body.appendChild($Tick);
  //----------------------------------------------------------------------------
  $Tick = document.getElementById('Tick');
  //----------------------------------------------------------------------------
  with($Tick.style){
    //--------------------------------------------------------------------------
    var $Body = document.body;
    //--------------------------------------------------------------------------
    left = ($Body.clientWidth - $Tick.offsetWidth)/2;
    top  = $Body.scrollTop + 10;
  }
  //----------------------------------------------------------------------------
  var $UniqID = UniqID('ID');
  //----------------------------------------------------------------------------
  window[$UniqID] = window.setInterval(SPrintF("window.clearInterval(window.%s);FadeOut(document.getElementById('Tick'));",$UniqID),2000);
}
//------------------------------------------------------------------------------
function ExceptionsStack($Exception){
  //----------------------------------------------------------------------------
  var $Exceptions = [];
  //----------------------------------------------------------------------------
  do{
    //--------------------------------------------------------------------------
    $Exceptions.push($Exception.String);
    //--------------------------------------------------------------------------
    $Exception = $Exception.Parent;
    //--------------------------------------------------------------------------
  }while($Exception);
  //----------------------------------------------------------------------------
  var $Result = document.createElement('SPAN');
  //----------------------------------------------------------------------------
  var $Div = document.createElement('DIV');
  $Div.innerHTML = $Exceptions.shift().XMLEscape();
  $Div.className = 'Exception';
  //----------------------------------------------------------------------------
  $Result.appendChild($Div);
  //----------------------------------------------------------------------------
  if($Exceptions.length > 0){
    //--------------------------------------------------------------------------
    var $Ul = document.createElement('UL');
    $Ul.className = 'Standard';
    //--------------------------------------------------------------------------
    for(var $i=0;$i<$Exceptions.length;$i++){
      //------------------------------------------------------------------------
      var $Li = document.createElement('LI');
      $Li.innerHTML = $Exceptions[$i].XMLEscape();
      //------------------------------------------------------------------------
      $Ul.appendChild($Li);
    }
    //--------------------------------------------------------------------------
    $Result.appendChild($Ul);
  }
  //----------------------------------------------------------------------------
  return $Result;
}
//------------------------------------------------------------------------------
