;(function(window, document) {
    

    var EZ = EZ || { },
        console = console || window.console,
        hasOwn = Object.prototype.hasOwnProperty,
        ext = function(object, source, noCall, noOverwrite){
            var index;
            if(!noCall && typeof source == 'function') source = source();
            for(index in source) if(hasOwn.call(source, index) && (noOverwrite ? !(index in object) : true)) object[index] = source[index];
            return object;
        };


    function Marker(params){
        var opts = {type: 'overblog', customs: '', saveCustoms: '', uid: '',
                    tmst: new Date().getTime()+"", fmt: '', frm: '', sfOrds: null,
                    social: null, dbg: {}, withIfr: false, lsDone: false, lsSegsDone: false,
                    posted: []},
            self = this;

        if(!(self instanceof Marker)) return new Marker(params);

        ext(self, opts);
        ext(self,params);

        self.saveCustoms = self.customs;

        

        

        

    }

    ext(EZ,{ Marker: Marker, encode: encodeURIComponent });

    ext(EZ.Marker.prototype, {
        ckok: function () {
            document.cookie = 'ez=ok;expires=' + new Date(new Date().getTime() + 1800000).toGMTString() + ';path=/;';
            if (document.cookie.indexOf('ez=ok') >= 0) {
                document.cookie = 'ez=ok;expires=' + new Date(new Date().getTime() - 60000).toGMTString();
                return 1;
            } else {
                return 0;
            }
        },
        triggerSocialHit: function(socialData){
            var self = this;
            self.social = socialData;
            self.mark();
        },
        addIframe: function(src, id){
            var ils = document.createElement('iframe');
            ils.src = src;
            ils.id = id;
            ils.style.height = '0px';
            ils.style.width = '0px';
            ils.style.padding = '0px';
            ils.style.backgroundColor = 'transparent';
            ils.style.border = '0px none transparent';
            ils.style.overflow = 'hidden';
            var body = document.getElementsByTagName('body')[0];
            body.appendChild(ils);
        }
    });

    
    
    ext(EZ.Marker.prototype, {
        mark: function(){
            var self = this,
                src = '',
                im = null,
                queryString = '',
                all = '',
                ref = EZ.encode(document.referrer),
                dest = 'http://overblog.ezakus.net/marker/image',
                withIfr = false;
            try {
                if(self.withIfr){
                    dest = 'http://lb-1.ezakus.net/marker/iframe';
                    var lsListener = function(event){
                        if(event && event.data && event.data == "done"){
                            self.lsDone = true;
                        }
                    };
                    if (window.addEventListener){
                        window.addEventListener("message", lsListener, false);
                    } else {
                        window.attachEvent("onmessage", lsListener);
                    }

                    self.addIframe('http://lb-1.ezakus.net/marker/iframe/' + self.type + '/lsinfo', 'ezLSInfofr', true);
                }
                src = dest+'/' + self.type;
                self.customs = self.saveCustoms;
                if (self.ckok() < 1) {
                    self.customs += '&ezC=ezCkKo';
                }
                if(self.social){
                    self.customs += '&ezC=' + EZ.encode(self.social);
                }
                queryString = '&hash='+EZ.encode(window.location.hash)+'&tjs=' + self.tmst + self.uid + self.fmt + self.frm + self.customs;
                all = src + '?' + 'cref=' + ref + queryString;
                if(all.length > 2048){
                    var much = all.length - 2047;
                    ref = ref.substring(0, ref.length - much);
                    all = src + '?' + 'cref=' + ref + queryString;
                }
                if(self.withIfr){
                    if(self.lsDone)
                        self.addIframe(all, 'ezLSIfr');
                    else
                        window.setTimeout(function(){ self.addIframe(all, 'ezLSIfr'); }, 500);
                }else{
                    im = new Image();
                    im.src = all;
                    im.onload = function () {
                        im.onload = null;
                    };
                }
            } catch (e) {
                console.log(e);
            }
        }
    });
    
    
    try {
        var opt = {}, ezMarker;
        if (window.ezMarkerType) { opt.type = window.ezMarkerType; }
        if (window.ezUID) { opt.uid = '&uid=' + window.ezUID; }
        if (window.ezFmt) { opt.fmt = '&fmt=' + window.ezFmt; }
        if (top != self) { opt.frm = '&frm=1'; }
        if (window.ezFrm) { opt.frm = '&frm=' + window.ezFrm; }
        if (window.ezSfOrds) { opt.sfOrds = window.ezSfOrds; }
        if (window.ezC) {
            if (Object.prototype.toString.call(window.ezC) == '[object Array]') {
                opt.customs = '';
                for (var i = 0; i < window.ezC.length; i++) {
                    opt.customs += '&ezC=' + EZ.encode(window.ezC[i]);
                }
            } else {
                opt.customs = '&ezC=' + EZ.encode(window.ezC);
            }
        }
        window.ezMarker = EZ.Marker(opt);
        window.ezMarker.mark();

        

        window.addScriptAsync = function(url,id) {
            var script = document.createElement("script");
            if (id) script.setAttribute("id",id);
            script.setAttribute("type","text/javascript");
            script.setAttribute("src",url);
            document.getElementsByTagName("head").item(0).appendChild(script);
        };

        
        

        if(window.ezClb && typeof window.ezClb == 'function'){
            window.ezClb.call(null);
        }

    } catch (err) {
        console.log(err);
    }
})(window, document);