if(!Unizeto) {
    var Unizeto = {};
}
Unizeto.sealConfig = {
    baseUrl: '//magneticpoint.com/seal/www',
    infoUrl: '/seal/info/code/{code}',
    clickUrl: '/seal/click/code/{code}/encode/{encode}',
    imageUrl: '/track.php?code={code}&id={browser}&img={id}',
    imageUrlRejected: '/static/img/nocert_pl.gif',
    sealBgImg: '/static/img/seal-bg.png',
    sealCloseImg: '/static/img/seal-close.gif',
    sealShadowImgPng: '/static/img/seal-shadow.png'
};

Unizeto.Seal = {
    install: function(code, id) {
        this.location = window.location.href;
        this.code = code;
        this.id = id;
        this.createImg();
        for (var i in Unizeto.sealConfig) {
            if(i != 'baseUrl')
                Unizeto.sealConfig[i] = parent.location.protocol + Unizeto.sealConfig.baseUrl + Unizeto.sealConfig[i];
        }

        if (this.getCookie('status')) {
            var browser = this.getCookie('browser');
            if (this.checkStatus()) {
                this.image.src = Unizeto.sealConfig.imageUrl.replace('{id}', this.id)
                                                            .replace('{code}', this.code)
                                                            .replace('{browser}', browser);
            }
            else {
                this.image.id = 'UnizetoCertRejected';
                this.image.src = Unizeto.sealConfig.imageUrlRejected.replace('{id}', this.id)
                                                                    .replace('{code}', this.code)
                                                                    .replace('{browser}', browser); //inny img
            }
        }
        else {
            //pierwszy raz
            this.request(Unizeto.sealConfig.infoUrl.replace('{code}',this.code),'UnizetoSealInfo');
        }
    },
    
    detectShadowSupport: function(value) {
      var docEl = document.documentElement, s;
      if (docEl && (s = docEl.style)) {
          if (typeof s.boxShadow == "string")
            return 'default';
          else if (typeof s.MozBoxShadow == "string")
            return 'moz';
          else if (typeof s.WebkitBoxShadow == "string")
            return 'webkit';
          else if (typeof s.KhtmlBoxShadow == "string")
            return 'khtml';
      }
      return null;
    },
    
    detectMaxWidth: function() {
      var docEl = document.documentElement, s;
      if (docEl && (s = docEl.style)) {
          return typeof s.maxWidth == "string" 
      }
      return null;
    },

    createImg: function() {
        var holder = document.getElementById('UnizetoSeal' + this.code);
        this.a = document.createElement('a');
        this.a.href = 'http://www.certum.pl/';
        var that = this;
        var encode = this.checkCoding();
        this.a.onclick = (function(e) {
            if (that.image.id != 'UnizetoCertRejected') {
                if (e && e.preventDefault) {
                    e.preventDefault();
                }
                else {
                    if (!e) 
                        var e = window.event;
                    e.returnValue = false;
                }
                if (!document.getElementById('sealInfo')) 
                    that.createHTML();
                that.request(Unizeto.sealConfig.clickUrl.replace('{code}', that.code).replace('{encode}',encode), 'UnizetoSealClick');
            }
        });
        holder.appendChild(this.a);
        this.image = document.createElement('img');
        this.image.border = '0';
        this.a.appendChild(this.image);
    },
    
    checkCoding: function() {
        var metas = document.getElementsByTagName('meta');
        var l = metas.length
        for(var i = 0; i < l; i++) {
            if(metas[i].content.indexOf('charset=')>-1) {
                var charset = metas[i].content.substr(metas[i].content.indexOf('charset=')+8,metas[i].content.length);
                return charset;
            }
        }
    },

    createHTML: function() {
        var div = document.createElement('div');
        document.body.appendChild(div);
        div.id = 'sealInfo';
        if(this.detectMaxWidth()) {
            div.style.position = 'fixed';
            div.style.top = '20px';
        }
        else {
            div.style.position = 'absolute';
        }
        div.style.top = '50px';
        div.style.left = '20%';
        div.style.visibility = 'hidden';
        div.style.width = '455px';
        div.style.height = '348px';
        div.style.margin = '20px 80px';
        div.style.background = !this.detectShadowSupport() && this.detectMaxWidth() ? /* jesli nie box shadow -> png */ 'transparent url("' + Unizeto.sealConfig.sealShadowImgPng + '") 100% 100% no-repeat' : 'transparent';
        div.style.font = 'normal 12px Times New Roman, serif';
        div.style.color = '#12466d';
        if(!this.detectMaxWidth()) {
            div.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + Unizeto.sealConfig.sealShadowImgPng + '")';
        }
    },

    hide: function() {
        e = document.getElementById('sealInfo');
        e.style.visibility = 'hidden';
    },

    show: function(response) {
        e = document.getElementById('sealInfo');
        e.style.visibility = 'visible';
        var style = {
            header: 'margin:123px 50px 5px;font-weight:bold;font-size:20px;text-align:center',
            headerLabel: 'font-size:15px;line-height:20px;',
            items: 'margin:10px 40px 0;font:normal 12px/14px Tahoma,Verdana,sans-serif;',
            item: 'margin:0 20px;font-weight:bold;text-align:center;clear:both;height:20px;',
            label: 'font-weight:normal;display:block;float:left;width:150px;text-align:right;margin:0 5px;',
            value: 'display:block;float:left;width:120px;text-align:left;font-size:13px;margin:0 5px;'
        }
	 var tmp;
        tmp = '<div style="width:450px;height:343px;background:transparent url(' + Unizeto.sealConfig.sealBgImg + ') 0 0 no-repeat" id="sealInfoGraphic"><div style="height:0px;overflow:hidden;margin-top:-15px;">&nbsp;</div><div style="text-align:right;margin:11px 9px;"><a href="#" id="UnizetoSealClose" style="background:url(' + Unizeto.sealConfig.sealCloseImg + ') no-repeat -23px -23px;display:block;float:right;height:23px;overflow:hidden;padding:0;text-align:left;text-indent:-999999px;width:23px;" title="' + response.labels.close + '">' + response.labels.close + '</a></div>'
                      + '<div style="' + style.header + '"><span style="' + style.headerLabel + '">' + response.labels.certifiedFor + ':</span><br />' + response.certifiedFor + '</div>'
                      + '<div style="' + style.items + '">'
                      + '<div style="' + style.item + '"><span style="' + style.label + '">' + response.labels.domain + ':</span> <span style="' + style.value + '">' + response.domain + '</span></div>'
                      + '<div style="' + style.item + '"><span style="' + style.label + '">' + response.labels.serial + ':</span> <span style="' + style.value + '">' + response.serial + '</span></div>'
                      + '<div style="' + style.item + '"><span style="' + style.label + '">' + response.labels.valid.from + ':</span> <span style="' + style.value + '">' + response.valid.from + '</span></div>'
                      + '<div style="' + style.item + '"><span style="' + style.label + '">' + response.labels.valid.to + ':</span> <span style="' + style.value + '">' + response.valid.to + '</span></div>';
                      
        if (response.https==1){
            tmp = tmp + '<div style="' + style.item + '"><span style="' + style.label + '">' + response.labels.protocol + ':</span> <span style="' + style.value + '">' + response.protocol + '</span></div>'
		;
        }                       

        tmp = tmp 
                      + '</div>'
                      + '<div style="display:block;text-align:center;clear:both;padding:6px;"><a href="http://www.certum.pl/" style="color:#00a3c6;font:normal 15px/15px Tahoma,Verdana,sans-serif;" target="_blank">' + response.labels.more + '</a></div></div>'
                      ;

         e.innerHTML = tmp; 
         var that = this;
         var close = document.getElementById('UnizetoSealClose');
         var graphic = document.getElementById('sealInfoGraphic');
         if (graphic && this.detectShadowSupport()) {
            var type = this.detectShadowSupport();
            if (type == 'default')
              graphic.style.boxShadow = '3px 3px 4px #666';
            else if (type == 'moz')
              graphic.style.MozBoxShadow = '3px 3px 4px #666';
            else if (type == 'default')
              graphic.style.WebkitBoxShadow = '3px 3px 4px #666';
            else if (type == 'khtml')
              graphic.style.KhtmlBoxShadow = '3px 3px 4px #666';
        }
         close.onclick = (function(){
            that.hide();
         });
         close.onmouseover = (function(){
            close.style.backgroundPosition = '0 0';
         });
         close.onmouseout = (function(){
            close.style.backgroundPosition = '-23px -23px';
         });
    },

    request: function(url,id) {
        var head = document.getElementsByTagName('head')[0];
        var p = document.getElementById(id);
        if (p) {
            head.removeChild(p);
        }
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.id = id;
        script.src = url;
        head.appendChild(script);
    },

    infoResponse: function(response) {
        if (this.checkStatus()) {
            this.image.src = Unizeto.sealConfig.imageUrl.replace('{id}', this.id)
                                                        .replace('{code}', this.code)
                                                        .replace('{browser}', Unizeto.Seal.Info.Browse);
        }
        else {
            this.image.id = 'UnizetoCertRejected';
            this.image.src = Unizeto.sealConfig.imageUrlRejected.replace('{id}', this.id)
                                                                .replace('{code}', this.code)
                                                                .replace('{browser}', Unizeto.Seal.Info.Browser); //inny img
        }
        this.setCookie('browser',Unizeto.Seal.Info.Browser);
    },

    checkStatus: function() {
        if (Unizeto.Seal.Info && Unizeto.Seal.Info.active || this.getCookie('status')) {
            this.setCookie('status', true);
            var status = 'active';
            return true;
        }
        else {
            var status = 'disabled';
            return false;
        }
    },

    setCookie: function(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        } else {
            var expires = "";
        }
        
        document.cookie = name+"="+value+expires+"; path=/";
    },

    getCookie: function(c_name)
    {
        if (document.cookie.length>0) {
            c_start=document.cookie.indexOf(c_name + "=");
            if (c_start!=-1){
                c_start=c_start + c_name.length+1;
                c_end=document.cookie.indexOf(";",c_start);
                if (c_end==-1) c_end=document.cookie.length;
                return unescape(document.cookie.substring(c_start,c_end));
            }
        }
        return null;
    }
};