window.i3.node = {};
window.i3.node.coords  = function(ev)
{
 if (!ev) ev = window.event;

 var x = window.Event?parseFloat(ev.pageX):parseFloat(window.event.clientX)+parseFloat(document.body.scrollLeft)-parseFloat(document.body.clientLeft);
 var y = window.Event?parseFloat(ev.pageY):parseFloat(window.event.clientY)+parseFloat(document.body.scrollTop)-parseFloat(document.body.clientTop);

 /* Firefox 2.0 mousescroll error fix */
 if (ev.delta && window.instance.browserDetect.appname == 'Firefox' && window.instance.browserDetect.version == '2')
 {
  var target = ev.target ? ev.target : ev.srcElement;
  var pos = window.i3.node.pos(target);
  x = pos.x + x/15;
  y = pos.y + y/15;
 }

 return {x: x, y: y}
};

window.i3.node.pos = window.__pos__ = function(node)
{
 var curleft = curtop = 0;

 if (node && node.offsetParent)
 {
  curleft = node.offsetLeft;
  curtop = node.offsetTop;
  while (node = node.offsetParent)
  {
   curleft += node.offsetLeft;
   curtop += node.offsetTop;
  }
 }

 return {x: parseInt(curleft), y: parseInt(curtop)};
};

window.i3.node.change = function(node, type)
{
    var al_node = document.createElement(type);
    
    for(var i=0; i < node.attributes.length; i++)
    {
        var attr = node.attributes[i];
        
        try
        {
            var attrName = attr.nodeName;
            var attrValue = attr.nodeValue;
            
            if (attrName == "class")
                al_node.setAttribute('className', attrValue);
                
            if (attrName == "for") attrName = "htmlFor";            
                al_node.setAttribute('htmlFor', attrValue);
            
            if (attrName == "height" && type.toLowerCase() == 'input') // IE7 default value for height is interesting
                continue;
            
            if (attrValue)
                al_node.setAttribute(attrName, attrValue);
        }
        catch(e){}
    }
    
    return al_node;
}
