// Wrap element
Element.addMethods({
  wrap: function(element, wrapper) {
    element = $(element);
    element.parentNode.replaceChild(wrapper, element);
    wrapper.appendChild(element);
    return Element.extend(wrapper);
  }
});
//---------------------------------------------------------------------------

// Unwrap element
Element.addMethods({
  unwrap: function(element, wraperTag, wraperClass) {
    element = $(element);
	if( (wraperTag.length? element.parentNode.tagName.toLowerCase==wraperTag.toLowerCase : 0) && (wraperClass.length? element.parentNode.className==wraperClass : 0) )
	{
		element.parentNode.parentNode.replaceChild(element, element.parentNode);
	} 
	return Element.extend(element);
  }
});
//---------------------------------------------------------------------------

// create new element
function crElem(name, attrs, style, text) {
    var e = document.createElement(name);
    if (attrs) {
        for (key in attrs) {
            if (key == 'class') {
                e.className = attrs[key];
            } else if (key == 'id') {
                e.id = attrs[key];
            } else {
                e.setAttribute(key, attrs[key]);
            }
        }
    }
    if (style) {
        for (key in style) {
            e.style[key] = style[key];
        }
    }
    if (text) {
		if(e.tagName=='INPUT') e.value = text;
		else if(typeof(text)=='object') {
			var i, N;
			for(i=0, N=text.size(); i<N; i++) {
				if(typeof(text[i])=='string') e.appendChild(document.createTextNode(text[i]));
				else e.appendChild(text[i]);
			}
		}
        else e.appendChild(document.createTextNode(text));
    }
    return Element.extend(e);
}
//---------------------------------------------------------------------------

function pageLocation(o, t){
	var x = 0

	while(o.offsetParent){
		x += o['offset' + t]
		o = o.offsetParent
	}
	x += o['offset' + t]

	return x
}
//---------------------------------------------------------------------------