function pageX() {
  if ( window.pageXOffset ) return window.pageXOffset;
  if ( document.documentElement && document.documentElement.scrollLeft ) return document.documentElement.scrollLeft;
  if ( document.body && document.body.scrollLeft ) return document.body.scrollLeft;
  return 0;
}


function pageY() {
  if ( window.pageYOffset ) return window.pageYOffset;
  if ( document.documentElement && document.documentElement.scrollTop ) return document.documentElement.scrollTop;
  if ( document.body && document.body.scrollTop ) return document.body.scrollTop;
  return 0;
}


function eventMouseX( event ) {
  if ( event == undefined ) event = window.event;
  if ( event ) {
    if ( event.pageX ) return event.pageX;
    if ( window.opera ) return event.clientX;
    
    return event.clientX + pageX();
  } // if
} // function eventMouseX


function eventMouseY( event ) {
  if ( event == undefined ) event = window.event;
  if ( event ) {
    if ( event.pageY ) return event.pageY;
    if ( window.opera ) return event.clientY;
    
    return event.clientY + pageY();
  } // if
} // function eventMouseY(


function realTop( element ) {
  var el  = element;
  var res = 0;
  while( el && el.tagName.toLowerCase() != 'body' ){
    res += el.offsetTop;
    el = el.offsetParent;
  }
  return res;
}


function realLeft( element ) {
  var el  = element;
  var res = 0;
  while( el && el.tagName.toLowerCase() != 'body' ){
    res += el.offsetLeft;
    el = el.offsetParent;
  }
  return res;
}

function getPos( element ) {
  var pos  = Element.positionedOffset( element );
  var dims = Element.getDimensions( element ); 
  
  var res = {
    leftTopX      : pos.left,
    leftTopY      : pos.top,
    rightTopX     : pos.left + dims.width,
    rightTopY     : pos.top,
    leftBottomX   : pos.left,
    leftBottomY   : pos.top + dims.height,
    rightBottomX  : pos.left + dims.width,
    rightBottomY  : pos.top + dims.height
  }
  
  return res;
}

function getDims( element ) {
  return Element.getDimensions( element );
}

function setPos( element, xPos, yPos ) {
	element.style.left  = xPos + "px";
	element.style.top   = yPos + "px";
}


function toScreenCenter( blockElement, withCorrection ) {
  var elWidth  = Element.getWidth( blockElement );
  var elHeight = Element.getHeight( blockElement );
  
  withCorrection = withCorrection == undefined ? true : ( withCorrection == true );
  
  if ( elWidth > 0 || elHeight > 0 ) {
    var styleHash  = {
      left : '0px',
      top  : '0px'
    }
    
    var marginLeft = ( Body.visibleWidth()  - elWidth ) / 2;
    var marginTop  = ( Body.visibleHeight() - elHeight ) / 2;
    
    if ( marginLeft > 0 ) { 
      var left = Body.scrollLeft();
      styleHash.left = left + marginLeft + 'px';
    } // if
    
    if ( marginTop > 0 ) {
      var top = Body.scrollTop();
      var k   = withCorrection ? ( marginTop / 2 ) : 0;
      
      styleHash.top = top  + marginTop - k + 'px';
    } // if
    
    Element.setStyle( blockElement, styleHash );
  } // if
} // function toScreenCenter

function showHide( elementID ) {
  var el = $( elementID );
  if ( el.style.display == 'none' ) {
    el.style.display = 'block';
  } else {
    el.style.display = 'none';
  }
} // function showHide

function photoOnIcon( imgLayer ) {
  var layer    = $( imgLayer );
  var elements = layer.childElements() || [];
  var img;
  
  elements.each( function( element ) {
    if ( element.tagName ) {
      var tagName = element.tagName.toUpperCase();
      
      if ( tagName == 'IMG' ) {
        img = element;
        throw $break;
      } // if
    } // if
  });
  
  if ( layer && img ) {
    layer.img = img;
    
    layer.onmouseover = function( event ) {
      var posX        = eventMouseX( event );
      var posY        = eventMouseY( event );
      var imgWidth    = this.img.getWidth();
      var imgHeight   = this.img.getHeight();
      var layerWidth  = layer.getWidth();
      var layerHeight = layer.getHeight();
      
      var leftValue = posX + layerWidth;
      var topValue  = posY - ( imgHeight / 2 );
      
      var styleHash = {
        left     : leftValue + 'px',
        top      : topValue + 'px',
        position : 'absolute'
      }
      
      Element.setStyle( this.img, styleHash );
      
      this.img.show();
    } // onmouseover
    
    layer.onmouseout = function( event ) {
      this.img.hide();
    } // onmouseout
  } // if
} // function photoOnIcon