var dom = {
  gI: function (el) {
    return document.getElementById(el);
  },
  gT: function (d, tagName) {
    return d.getElementsByTagName(tagName);
  },
  gTo: function (n, t) {
	  if(typeof n == "undefined")
		  return;
	  
	  var c = n.childNodes, i, l = c.length, it = [];
	  
	  for(i = 0; i < l; i++) {
		  if(typeof c[i] != "undefined") {
			  if(c[i].tagName == t) {
				  it.push(c[i]);
			  }
		  }
	  }
	  
	  //alert(it[0].childNodes);
	  
	  return {
		  tags: it
	  };
  },
  cE: function (el) {
    return document.createElement(el);
  },
  cT: function(txt) {
    return document.createTextNode(txt);
  },
  pI: function (num) {
    return parseInt(num);
  },
  sS: function (e, p, v) { //setStyle|object element, css property, property value
    try {
      eval('e.style.' + p + ' = "' + v + '"');
    } catch(error) {
      alert(error); //exception error
    }
    return;
  },
  pN: function (n) {
	return n.parentNode;
  },
  cN: function (el) {
    return el.childNodes;
  },
  aC: function (p, c) {
    return p.appendChild(c);
  },
  iB: function (p, n, b) {
	return p.insertBefore(n, b);
  },
  aE: function (elm, evtType, evtFn, set) {
    if(document.addEventListener) {
      if((elm == window) && window.opera) {
        elm == document;
      } 
      elm.addEventListener(evtType, evtFn, set);
    }else{
      elm.attachEvent('on' + evtType, evtFn);
    }
  },
  rE: function (elm, evtType, evtFn, set) {
    if(document.addEventListener) {
      if((elm == window) && window.opera) elm == document;
      elm.removeEventListener(evtType, evtFn, set);
    }else{
      elm.detachEvent('on' + evtType, evtFn);
    }
  },
  fE: function(e) {
    if(typeof e == 'undefined') e = window.event;
    return e;
  },
  gE: function (ev) {
    var target = (window.event) ? ev.srcElement : ev.target;
    return target;
  },
  gW: function (ev) {
    var target = (typeof ev.id == 'undefined') ? dom.gE(ev) : ev, done = false;
    
    while(target.className != 'windowInstance') {
      target = target.parentNode;
    }
    
    return target;
  },
  gV: function (n) {
	  return n.nodeValue;
  },
  gA: function (el, an) {
	  return el.getAttribute(an);
  },
  hA: function (el, an) {
	  return el.hasAttribute(an);
  },
  sA: function (el, an, av) {
	  return el.setAttribute(an, av);
  },
  rA: function (el, an) {
      return el.removeAttribute(an);
  }
};
