 if (typeof document.defaultView == 'undefined')
   document.defaultView = {};

 if (typeof document.defaultView.getComputedStyle == 'undefined')  {
    document.defaultView.getComputedStyle = function(element, pseudoElement) {
       return element.currentStyle;
    }
 }

 var moveflag='';
 
 function fadeIn(value) {
   var elementLayout = document.getElementById('layout');
     value +=5;
     elementLayout.style.opacity = value/100;
     if (value<100) setTimeout('fadeIn('+value+')',1);
 }
 
 function getPageSize() {
  var xScroll, yScroll;

  if (window.scrollMaxX) {  
    xScroll = window.innerWidth  + window.scrollMaxX;
    yScroll = window.innerHeight + window.scrollMaxY;
  } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
    xScroll = document.body.scrollWidth;
    yScroll = document.body.scrollHeight;
  } 
  
  var windowWidth, windowHeight;
  if (self.innerHeight) { // all except Explorer
    windowWidth = self.innerWidth;
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) { // other Explorers
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
  } 

  // for small pages with total height less then height of the viewport
  pageHeight = Math.max(windowHeight, yScroll);

  // for small pages with total width less then width of the viewport
  pageWidth = Math.max(windowWidth, xScroll);

  return { page: { width: pageWidth, height: pageHeight }, window: { width: windowWidth, height: windowHeight } };
}  

function updateHomepageLayout() {
  var elementLayout = document.getElementById('main');
  //document.getElementById('content').innerHTML = getPageSize().window.height;
  maintop = Math.round((getPageSize().window.height-parseInt(document.defaultView.getComputedStyle(elementLayout, null).height))/2);
  if (maintop<0) maintop = 0;
  elementLayout.style.top = maintop  +'px';;
}


function contentbkg(element_name,contentx,dx) {
  document.getElementById(element_name).style.backgroundPosition = contentx+"px 0px";
  if (contentx+dx>1600||contentx+dx<0) dx=-dx;
  setTimeout('contentbkg(\''+element_name+'\','+(contentx+dx)+','+dx+')',70);
}
 
function Move(element_name,dx,stop_x,dy,stop_y) {   
   if (moveflag=='') {
   moveflag = element_name;
   var element = document.getElementById(element_name);
   var computedStyle = document.defaultView.getComputedStyle(element, null);
   var ret = false;
   if (dx==0)
   if (stop_x-parseInt(computedStyle.left)>0) { if (dx<0) dx=-dx; else dx=5; } else { if (dx>0) dx=-dx; else dx=-5 }
   
   if (((dx<0)&&(stop_x<(parseInt(computedStyle.left)+ Math.round(dx))))||
       ((dx>0)&&(stop_x>(parseInt(computedStyle.left)+ Math.round(dx))))||
       ((dy<0)&&(stop_y<(parseInt(computedStyle.top)+ Math.round(dy))))||
       ((dy>0)&&(stop_y>(parseInt(computedStyle.top)+ Math.round(dy))))       
       
       ) {
     if (dx!=0) {
       element.style.left = parseInt(computedStyle.left) + Math.round(dx) +'px';
       if (Math.abs(dx)<50) dx += dx/10;
       if (Math.abs(Math.abs(stop_x)-Math.abs(parseInt(computedStyle.left)))<Math.abs(dx)*10) 
         if (Math.abs(dx)>1) dx -= dx/6;
      }
     if (dy!=0) {
       element.style.top = parseInt(computedStyle.top) + Math.round(dy) +'px';
       if (Math.abs(dy)<50) dy += dy/10;
       if (Math.abs(Math.abs(stop_y)-Math.abs(parseInt(computedStyle.top)))<Math.abs(dy)*10) 
         if (Math.abs(dy)>1) dy -= dy/6;
     }


     setTimeout('MoveMove(\''+element_name+'\','+dx+','+stop_x+','+dy+','+stop_y+')',10);
   } 
    else 
   {
     if (stop_x!=parseInt(computedStyle.left)&&dx!=0) 
      {
	     element.style.left = stop_x + 'px';	
         ret = true;
         moveflag='';
     }
     if (stop_y!=parseInt(computedStyle.top)&&dy!=0) 
      {
	     element.style.top = stop_y + 'px';	
         ret = true;
         moveflag='';
     }
     
   }
   }
 return ret;

}


function MoveMove(element_name,dx,stop_x,dy,stop_y) {   
   var element = document.getElementById(element_name);
   var computedStyle = document.defaultView.getComputedStyle(element, null);
   var ret = false;
   if (dx==0)
   if (stop_x-parseInt(computedStyle.left)>0) { if (dx<0) dx=-dx; else dx=5; } else { if (dx>0) dx=-dx; else dx=-5 }
   
   if (((dx<0)&&(stop_x<(parseInt(computedStyle.left)+ Math.round(dx))))||
       ((dx>0)&&(stop_x>(parseInt(computedStyle.left)+ Math.round(dx))))||
       ((dy<0)&&(stop_y<(parseInt(computedStyle.top)+ Math.round(dy))))||
       ((dy>0)&&(stop_y>(parseInt(computedStyle.top)+ Math.round(dy))))       
       
       ) {
     if (dx!=0) {
       element.style.left = parseInt(computedStyle.left) + Math.round(dx) +'px';
       if (Math.abs(dx)<50) dx += dx/10;
       if (Math.abs(Math.abs(stop_x)-Math.abs(parseInt(computedStyle.left)))<Math.abs(dx)*10) 
         if (Math.abs(dx)>1) dx -= dx/6;
      }
     if (dy!=0) {
       element.style.top = parseInt(computedStyle.top) + Math.round(dy) +'px';
       if (Math.abs(dy)<50) dy += dy/10;
       if (Math.abs(Math.abs(stop_y)-Math.abs(parseInt(computedStyle.top)))<Math.abs(dy)*10) 
         if (Math.abs(dy)>1) dy -= dy/6;
     }


     setTimeout('MoveMove(\''+element_name+'\','+dx+','+stop_x+','+dy+','+stop_y+')',10);
   } 
    else 
   {
     if (stop_x!=parseInt(computedStyle.left)&&dx!=0) 
      {
	     element.style.left = stop_x + 'px';	
         ret = true;
         moveflag='';
     }
     if (stop_y!=parseInt(computedStyle.top)&&dy!=0) 
      {
	     element.style.top = stop_y + 'px';	
         ret = true;
         moveflag='';
     }
     
   }
 return ret;

}


 
function MoveXContent (element,stopx) {
    Move(element,-1,stopx,0,0);
}
 
 
function setElementOpacity(oElem, nOpacity)
{
	var p = getOpacityProperty();
	(setElementOpacity = p=="filter"?new Function('oElem', 'nOpacity', 'nOpacity *= 100;	var oAlpha = oElem.filters["DXImageTransform.Microsoft.alpha"] || oElem.filters.alpha;	if (oAlpha) oAlpha.opacity = nOpacity; else oElem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";'):p?new Function('oElem', 'nOpacity', 'oElem.style.'+p+' = nOpacity;'):new Function)(oElem, nOpacity);
}

// Функция getOpacityProperty() возвращает свойство которое используется для смены прозрачности или undefined, и может использоваться для проверки возможности изменения прозрачности
function getOpacityProperty()
{
	var p;
	if (typeof document.body.style.opacity == 'string') p = 'opacity';
	else if (typeof document.body.style.MozOpacity == 'string') p =  'MozOpacity';
	else if (typeof document.body.style.KhtmlOpacity == 'string') p =  'KhtmlOpacity';
	else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) p =  'filter';
	
	return (getOpacityProperty = new Function("return '"+p+"';"))();
}

/* Функции для плавного изменения прозрачности:

1) fadeOpacity.addRule('opacityRule1', 1, 0.5, 30); //вначале создаем правило, задаем имя правила, начальную прозрачность и конечную, необязательный параметр задержки, влийяющий на скорость смены прозрачности
2) fadeOpacity('elemID', 'opacityRule1'); // выполнить плавную смену прозрачности элемента с id равным elemID, по правилу opacityRule1
3) fadeOpacity.back('elemID'); //вернуться в исходное сотояние прозрачности
*/
function fadeOpacity(sElemId, sRuleName, bBackward)
{
	var elem = document.getElementById(sElemId);
	if (!elem || !getOpacityProperty() || !fadeOpacity.aRules[sRuleName]) return;
	
	var rule = fadeOpacity.aRules[sRuleName];
	var nOpacity = rule.nStartOpacity;
	
	if (fadeOpacity.aProc[sElemId]) {clearInterval(fadeOpacity.aProc[sElemId].tId); nOpacity = fadeOpacity.aProc[sElemId].nOpacity;}
	if ((nOpacity==rule.nStartOpacity && bBackward) || (nOpacity==rule.nFinishOpacity && !bBackward)) return;

	fadeOpacity.aProc[sElemId] = {'nOpacity':nOpacity, 'tId':setInterval('fadeOpacity.run("'+sElemId+'")', fadeOpacity.aRules[sRuleName].nDalay), 'sRuleName':sRuleName, 'bBackward':Boolean(bBackward)};
}

fadeOpacity.addRule = function(sRuleName, nStartOpacity, nFinishOpacity, nDalay){fadeOpacity.aRules[sRuleName]={'nStartOpacity':nStartOpacity, 'nFinishOpacity':nFinishOpacity, 'nDalay':(nDalay || 30),'nDSign':(nFinishOpacity-nStartOpacity > 0?1:-1)};};

fadeOpacity.back = function(sElemId){fadeOpacity(sElemId,fadeOpacity.aProc[sElemId].sRuleName,true);};

fadeOpacity.run = function(sElemId)
{
	var proc = fadeOpacity.aProc[sElemId];
	var rule = fadeOpacity.aRules[proc.sRuleName];
	
	proc.nOpacity = Math.round(( proc.nOpacity + .1*rule.nDSign*(proc.bBackward?-1:1) )*10)/10;
	setElementOpacity(document.getElementById(sElemId), proc.nOpacity);
	
	if (proc.nOpacity==rule.nStartOpacity || proc.nOpacity==rule.nFinishOpacity) clearInterval(fadeOpacity.aProc[sElemId].tId);
}
fadeOpacity.aProc = {};
fadeOpacity.aRules = {}; 

var dx1=0;
var dx2=0;

function StartScroll () {
    
if (dx1==0) {
   dx1=5;
   contentbkg('ctn1',0,dx1);
   }
if (dx2==0)  {
    dx2=2;
  contentbkg('ctn2',0,dx2);
}
}
 
function InitPage() {

  //  updateHomepageLayout();
    var elementLayout = document.getElementById('content');
 //   elementLayout.style.left = "1048px";
    fadeOpacity.addRule('oR1', .7, 1, 10);
    fadeOpacity.addRule('oRrow', .5, 1, 10);
    fadeOpacity.addRule('oRmenuOut', 1, 0, 10);
    fadeOpacity.addRule('oRmenuIn', 0, 1, 10);
    fadeOpacity('content', 'oRmenuIn');
   // MoveXContent('content',220);
}
