﻿function $(id)             { return document.getElementById(id); }
function getClientWidth()  { return document.compatMode=='CSS1Compat' && !window.opera ? document.documentElement.clientWidth :  document.body.clientWidth;  }
function getClientHeight() { return document.compatMode=='CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight; }

function get_ScrollOffsetX_ScrollOffsetY()
{
  var scrOfX = 0, scrOfY = 0;

  if(typeof(window.pageYOffset) == 'number') 
  {
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }

  return { 'ScrollOffsetX' : scrOfX, 'ScrollOffsetY': scrOfY };
}

function spw( pdata )
{
  if( pdata == undefined || pdata.lenght == 0)
    return false ;

  var width = 0, height = 0, img_type = '', img_id = -1, title = '', lng = '' ;
  var arg_list = ['width', 'height', 'img_type', 'img_id', 'title', 'lng'];

  for (var i = 1, j=i-1; i < arguments.length; i++, j=i-1)
    eval( arg_list[j] + " = " + arguments[i] + ";");

  // получаем ширину и высоту клиенской области и смещения по осям
  var cWidth = 0, cHeight = 0, ScrollOffsetX = 0, ScrollOffsetY = 0;

  cWidth  = getClientWidth();
  cHeight = getClientHeight();

  r = get_ScrollOffsetX_ScrollOffsetY();

  ScrollOffsetX = r['ScrollOffsetX'];
  ScrollOffsetY = r['ScrollOffsetY'];

  var pid = pdata[0];

  if( $(pid) )
  {
    var left = parseInt((cWidth-width)/2)  + ScrollOffsetX ;
    var top  = parseInt((cHeight-height)/2) + ScrollOffsetY ;

    // pdata - [pid, top_correction, left_corretin, top, left] 
    if( pdata[1] != undefined ) top  += parseInt(pdata[1]); 
    if( pdata[2] != undefined ) left += parseInt(pdata[2]); 
    if( pdata[3] != undefined ) top   = parseInt(pdata[3]) + ScrollOffsetY; 
    if( pdata[4] != undefined ) left  = parseInt(pdata[4]) + ScrollOffsetX; 

    // если overlay не найден, добавляем автоматически
    if( !$('overlay') )
    {
      var dOverlay = document.createElement('div');
      dOverlay.id = 'overlay';

      document.body.appendChild(dOverlay);
    }

    $('overlay').onclick       = function() { cpw(pid); };
    $('overlay').title         = "Закрыть окно";
    $('overlay').style.cursor  = "pointer";

    $(pid).onclick       = function() { cpw(pid); };
    $(pid).style.cursor  = "pointer";
    $(pid).title         = "Закрыть окно";

    if (/MSIE (5|6).+Win/.test(navigator.userAgent))
    {
      $('overlay').style.height = cHeight ;
    
      if( document.body.scrollHeight && document.body.scrollHeight > cHeight )
        $('overlay').style.height = document.body.scrollHeight ;
    }

    $('overlay').style.display = 'block';

    // если значение ненулевое, используем, если нулевое - использются стили из css
    if( top > 0)    $(pid).style.top    = top    + "px"; 
    if( left > 0)   $(pid).style.left   = left   + "px"; 
    if( width > 0)  $(pid).style.width  = width  + "px"; 
    if( height > 0) $(pid).style.height = height + "px"; 

    $(pid).style.display = 'block';
  }

  return false ;
}

function cpw()
{
  // close popup window cpw('wid')
  if( arguments[0] != undefined && $(arguments[0]) )
    $(arguments[0]).style.display = 'none';

  $('overlay').style.display = 'none';
  $('overlay').style.height  = "100%";
}
