(function(window, document) {
    var context = [];
    var cIndex  = 0;

    var completion = function(ctx, res, code, emsg, ecode) {
        ctx = ctx ? parseInt(ctx) : 0;

        if (code == 200) {
            o = context[ctx];
            context[ctx] = null;
            if (o)
                o.onSearchComplete(res, code, emsg, ecode);
        } else {
            /* alert(emsg); */
        }
    };

    makeIFrame = function(obj, query) {
        var q   = "";

        var k;
        for (k in query) {
            if (typeof query[k] != 'function')
                q += (q.length == ""  ? '?' : '&') + encodeURIComponent(k) + '=' + encodeURIComponent(query[k]);
        }
        
        var url = 'http://' + (query.sourcehost || "partner.mylife.com") + '/psw/render.widget' + q;

        var width  = query.width  || "100%";
        var height = query.height || "173";

        var iframe = '<iframe src="' + url +'" id="' + obj.id + '_iframe" height="'+height+'" width="'+width+'" marginheight="0" marginwidth="0" frameborder="no" vspace="0" hspace="0" allowtransparency="true" scrolling="no"></iframe>'; 
        if ((e = document.getElementById(obj.id)) == null) {
            document.write(iframe);
        } else {
            e.innerHTML = iframe;
        }
    };

    makeRequest = function(obj, query) {
            var ctx = cIndex++;
            context[ctx] = obj;

            query.callback    = 'mylife_search_completion';
            query.id          = ctx;
            query.nocache     = (new Date).getTime();

            var q = "";

            for (var k in query) {
                if (typeof query[k] != 'function')
                    q += (q.length == 0  ? '?' : '&') + encodeURIComponent(k) + '=' + encodeURIComponent(query[k]);
            }

            // url = WinkSearch.BASE + '/services/sjson' + q;
            // var url = 'http://beta-koblas.wink.com/widget/v1' + q;
            var url = 'http://' + (query.sourcehost || "partner.mylife.com") + '/psw/render.widget' + q;

            //
            // One cross site AjaxRequest...
            //
            var head = document.getElementsByTagName("head")[0];
            var stag = document.createElement('script');

            stag.type = "text/javascript";
            stag.charset = "utf-8";
            stag.src = url;

            var rfunc = function(v) {
                            if (v.parentNode)
                                v.parentNode.removeChild(v);
                            delete v;
                        };

            if (navigator.product == "Gecko") {
                stag.onload = function() { rfunc(stag); };
            } else {
                stag.onreadystatechange = function(e) {
                                            evt = e ? e : window.event;
                                            el  = evt.target ? evt.target : evt.srcElement;
                                            if (el.readyState == 'loaded' || el.readyState == 'complete')
                                                rfunc(stag); 
                                        };
            }

            head.appendChild(stag); 
    };


    window.mylife_search_completion = completion;

    function init() {
            // get the global parameters...
            
            var names = [
                'nm',    , 'fn'     , 'ln'     , 'state'  , 'age'    , 'city'   , 'zip'    , 
                'locale' ,
                'pid'    , 'width'  , 'height' , 'proxy'  , 'client' ,
                'slot'   , 'partner', 'type'   , 'format' , 'channel',
                'lp'     ,
                'sourcehost', 
                null
            ];

            var params = { };

            for (var i = 0; i < names.length; i++) {
                if (names[i]) {
                    var k = 'mylife_widget_' + names[i];
                    if (window[k])
                        params[names[i]] = window[k];
                }
            }

            for (var k in window) {
                if (k.substring(0, 14) == 'mylife_widget_') {
                    if (!params[k.substring(14)])
                        params[k.substring(14)] = window[k];
                }
            }

            var id = (typeof(mylife_widget_div) == 'undefined') ? null : mylife_widget_div;

            if (!id) {
                id = 'mylife_' + Math.floor(Math.random() * 100000);
                document.write("<span id='" + id + "'></span>"); 
            }

            var cbobj = {
                'id' : id,
                'onSearchComplete': function(res, code, emsg, ecode) {
                    content = document.getElementById(id);
                    content.innerHTML = res.html;
                }
            }

            makeIFrame(cbobj, params);
    };

    init();
})(window, document);
