var __timeout = 10;
function get_iframe_elements_by_name(iframe, name)
 {
    if (iframe.contentDocument)
    return iframe.contentDocument.getElementsByTagName(name);
    else
    return iframe.document.getElementsByTagName(name);
}

function get_iframe_element_by_id(iframe, id)
 {
    if (iframe.contentDocument)
    return iframe.contentDocument.getElementById(id);
    else
    return iframe.document.getElementById(id);
}

function apply_style_sheet(iframe) {
    var ss = document.createElement("link");
    ss.type = "text/css";
    ss.rel = "stylesheet";
    ss.href = "http://c1579782.cdn.cloudfiles.rackspacecloud.com/recipient_style.css";

    var apply_style_sheet_poll = function() {
        var heads = get_iframe_elements_by_name(iframe, "head");
        if (heads && heads.length > 0)
        {
            heads[0].appendChild(ss);
            return;
        }
        __timeout *= 2;
        __timeout = __timeout > 500 ? 500: __timeout;
        setTimeout(apply_style_sheet_poll, __timeout);
    };
    __timeout = 10;
    setTimeout(apply_style_sheet_poll, __timeout);
}

function find_popup_iframe() {
    function find_popup_iframe_poll() {
        var iframes = $('iframe');
        if (iframes && iframes.length > 0) {
            for (var i = 0; i < iframes.length; i++) {
                if (iframes[i].id.match("^pmi_iframe"))
                {
                    var p = iframes[i].parentNode;
                    if ($(p).css('display') != 'none') {
                        apply_style_sheet(iframes[i]);
                        return;
                    }
                }
            }
        }
        __timeout *= 2;
        __timeout = __timeout > 500 ? 500: __timeout;
        setTimeout(find_popup_iframe_poll, __timeout);
    }
    __timeout = 10;
    setTimeout(find_popup_iframe_poll, __timeout);
}

function setup_sign_up_button(iframe) {
    function sign_up_button_poll() {
        var button = get_iframe_element_by_id(iframe, 'instructions-submit');
        if (button)
        {
            find_collapsed_link_iframe();
            return;
        }
        __timeout *= 2;
        __timeout = __timeout > 500 ? 500: __timeout;
        setTimeout(sign_up_button_poll, __timeout);
    }
    __timeout = 10;
    setTimeout(sign_up_button_poll, __timeout);
}

function find_collapsed_link_iframe() {
    function collapsed_link_iframe_poll() {
        var iframes = $('iframe#pmi_collapsed_details');
        if (iframes && iframes.length > 0)
        {
            setup_collapsed_link(iframes[0]);
            return;
        }
        __timeout *= 2;
        __timeout = __timeout > 500 ? 500: __timeout;
        setTimeout(collapsed_link_iframe_poll, __timeout);
    }
    __timeout = 10;
    setTimeout(collapsed_link_iframe_poll, __timeout);
}

function setup_collapsed_link(iframe) {
    function collapsed_link_poll() {
        var offer = get_iframe_element_by_id(iframe, 'pmi-collapsed-offer');
        if (offer) {
            for (var i = 0; i < offer.childNodes.length; i++) {
                if (offer.childNodes[i].localName == 'a' || offer.childNodes[i].localName == 'A' || offer.childNodes[i].nodeName == 'a' || offer.childNodes[i].nodeName == 'A') {
                    var anchor = offer.childNodes[i];
                    $(anchor).click(function() {
                        find_popup_iframe();
                    });
                    return;
                }
            }
        }
        __timeout *= 2;
        __timeout = __timeout > 500 ? 500: __timeout;
        setTimeout(collapsed_link_poll, __timeout);
    }
    __timeout = 10;
    setTimeout(collapsed_link_poll, __timeout);
}

$(document).ready(function() {
    var check_iframe = function() {
        var iframes = $('iframe');
        if (iframes && iframes.length > 0) {
            var applied = false;
            for (var i = 0; i < iframes.length; i++)
            {
                if (iframes[i].id == 'pmi_collapsed_details') {
                    setup_collapsed_link(iframes[i]);
                    return;
                }
                else if (iframes[i].id.match("^pmi_iframe")) {
                    apply_style_sheet(iframes[i]);
                    setup_sign_up_button(iframes[i]);
                    applied = true;
                }
            }
            if (applied) return;
        }
        __timeout *= 2;
        __timeout = __timeout > 500 ? 500: __timeout;
        setTimeout(check_iframe, __timeout);
    };
    __timeout = 10;
    setTimeout(check_iframe, __timeout);
});
