﻿// © mbizo
// http://www.mbizo.com/
// version: 1.1

function elementById(id) {
  return document.getElementById(id);
}

function styleById(id) {
  var item = elementById(id);

  if (item == null)
    return null;

  return item.style;
}

function getClientSize() {
  var size = new Object();

  size.width = parseInt(
    document.compatMode == 'CSS1Compat' && !window.opera ?
      document.documentElement.clientWidth : document.body.clientWidth
  );

  size.height = parseInt(
    document.compatMode == 'CSS1Compat' && !window.opera ?
      document.documentElement.clientHeight : document.body.clientHeight
  );

  return size;
}

function getElementRelativeRectangle(id) {
  var element = elementById(id);
  var rect = new Object();

  rect.x = element.offsetLeft;
  rect.y = element.offsetTop;
  rect.width = element.offsetWidth;
  rect.height = element.offsetHeight;
  return rect;
}

function getElementAbsoluteRectangle(id) {
  var element = elementById(id);
  var w = element.offsetWidth;
  var h = element.offsetHeight;
  var x = 0;
  var y = 0; 
  
  while (element) {
    x += element.offsetLeft;
    y += element.offsetTop;
    element = element.offsetParent;
  }
  
  return { 'x' : x, 'y' : y, 'width' : w, 'height' : h };
}

function showElement(id) {
  styleById(id).visibility = 'visible';
}

function hideElement(id) {
  styleById(id).visibility = 'hidden';
}

function moveElement(id, x, y, width, height) {
  var elementStyle = styleById(id);

  elementStyle.left = x + 'px';

  if (width != null)
    elementStyle.width = width + 'px';

  elementStyle.top = y + 'px';

  if (height != null)
    elementStyle.height = height + 'px';
}

function setElementForAttribute(element, value) {
  if (navigator.appName == 'Microsoft Internet Explorer')
    element.setAttribute('htmlFor', value);
      
  else element.setAttribute('for', value);
}

function setElementCheckedAttribute(element) {
  if (navigator.appName == 'Microsoft Internet Explorer')
    element.setAttribute('defaultChecked', 'defaultChecked');
      
  else element.setAttribute('checked', 'checked');
}

function setElementClassAttribute(element, value) {
  if (navigator.appName == 'Microsoft Internet Explorer' && navigator.appVersion.indexOf('MSIE 8.0') == -1)
    element.setAttribute('className', value);
      
  else element.setAttribute('class', value);
}

function attachEventHandler(element, eventName, code) {
  if (element.attachEvent != null)
    element.attachEvent(eventName, function() { eval(code); });
    
  else element.setAttribute(eventName, code);
}