/**
 * Returns the value of the selected radio button in the radio group, null if
 * none are selected, and false if the button group doesn't exist
 *
 * @param {radio Object} or {radio id} el
 * OR
 * @param {form Object} or {form id} el
 * @param {radio group name} radioGroup
 */
Element.addMethods({
    onmouseenter: function(element,observer) {
        element = $(element);
        element.observe('mouseover',function(evt,currentTarget) {
            var relatedTarget = $(evt.relatedTarget || evt.fromElement);
            if( relatedTarget!=currentTarget && relatedTarget.childOf(currentTarget)==false ) {
                observer();
            }
        }.bindAsEventListener({},element));
        return element;
    },
    onmouseleave: function(element,observer) {
        element = $(element);
        element.observe('mouseout',function(evt,currentTarget) {
            var relatedTarget = $(evt.relatedTarget || evt.toElement);
            if( relatedTarget!=currentTarget &&
relatedTarget.childOf(currentTarget)==false ) {
                observer();
            }
        }.bindAsEventListener({},element));
        return element;
    }
});


function $RF(el, radioGroup) {
    if($(el).type && $(el).type.toLowerCase() == 'radio') {
        var radioGroup = $(el).name;
        var el = $(el).form;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }

    var checked = $(el).getInputs('radio', radioGroup).find(
    function(re) {return re.checked;}
);
    return (checked) ? $F(checked) : null;
}

Element.GetWindowSize = function(w) {

    var array = [];

    w = w ? w : window;
    array.width = array[0] = w.innerWidth || (w.document.documentElement.clientWidth || w.document.body.clientWidth);
    array.height = array[1] = w.innerHeight || (w.document.documentElement.clientHeight || w.document.body.clientHeight);

    return array;

}

Element.Center = function(element, parent) {
    var w, h, pw, ph;
    var d = Element.getDimensions(element);
    w = d.width;
    h = d.height;
    Position.prepare();
    if (!parent) {
        var ws = Element.GetWindowSize();
        pw = ws[0];
        ph = ws[1];
    } else {
        pw = parent.offsetWidth;
        ph = parent.offsetHeight;
    }

    element.style.position = "absolute";
    element.style.top = (ph/2) - (h/2) -  Position.deltaY + "px";
    element.style.left = (pw/2) - (w/2) -  Position.deltaX + "px";

}