window.adscale = window.adscale ? window.adscale : {};
window.adscale.ih = window.adscale.ih ? window.adscale.ih : "http://ih.adscale.de/adscale-ih/impr";
window.adscale.show = window.adscale.show ? window.adscale.show : "http://ih.adscale.de/adscale-ih/show";
window.adscale.ich = window.adscale.ich ? window.adscale.ich : "http://ich.adscale.de/adserver-ich/ich";


if(!adscaleNS) {
	var adscaleNS = {
        response : null,

	    init : function() {
			if (adscale_slot_id) adscaleNS.initialRequest(adscale_slot_id);
	    },

	    initialRequest	: function(sid) {
			var uri = window.adscale.ih + "?v=2&sid=" + sid + "&t=" + adscaleNS.time();
			document.write("<script type=\"text/javascript\" src=\"" + uri + "\"><" + "/script>");
	    },

	    render : function (response) {
			if (!response.type || response.type == "blank") {
			    return;
			}
			else if (response.type == "backfill") {
			    document.write(response.data);
			}
			else if (response.type == "adscaleAd") {
			    adscaleNS.renderAdscale(response);
			}
            else if (response.type == "popUnder") {
                adscaleNS.renderPopUnder(response);
            }
			else {
			    adscaleNS.renderIframe(response);
			}
	    },

	    renderIframe : function(response) {
			var id = "adscale_"+adscaleNS.time();
			var aid;
            if (response.type == "text") {
                aid = response.aid.join(",");
            }
            else {
                aid = response.aid;
            }

			var req = window.adscale.show + "?v=2&sid=" + response.sid + "&aid=" + aid;

			//write out iframe, set the src afterwards to fix mozilla bug with caching iframe contents
			document.write("<iframe id=\"" + id + "\" width=\"" + response.sX + "\" height=\"" + response.sY + "\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" allowTransparency=\"true\"></iframe>");
			var iframe = document.getElementById(id);
			if (iframe) {
				iframe.src = req;
			}

	    },

	    renderAdscale : function (response) {
			var img = "<img src=\"" + response.iUrl + "\" width=\"" + response.sX + "\" height=\"" + response.sY + "\" style=\"border:none;\">";
			var anchor = "<a href=\"" + response.cUrl + "\" target=\"_blank\">" + img + "</a>";
			document.write(anchor);
	    },

        renderPopUnder: function (response) {
            var poppedWindow = adscaleNS.doPopUnder(response, null);
            if (poppedWindow == null) {
            	// fallback
            	var handler;
            	handler = function() { adscaleNS.doPopUnder(response, handler);};
				            	
            	adscaleNS.addHandler(document.body, "click", handler);
			} 
        },
        
        callIch : function(response) {
        	var params = "?sid=" + response.sid + "&aid=" + response.aid + "&ctid=" + response.ctid + "&ck=" + response.ck;
            var loadTrackingImage = new Image();
			loadTrackingImage.onload = function() { };
            loadTrackingImage.src =  window.adscale.ich + params;
        },
        
	    doPopUnder : function(response, enclosingFunc) {
        	
        	if (enclosingFunc != null) {
        		if (document.body.attachEvent) {
        			document.body.detachEvent("onclick", enclosingFunc);
        		}
        		else {
        			document.body.removeEventListener("click", enclosingFunc, false);
        		}
        	}
        	
            var left;
            var top;
            if (document.body.attachEvent) {
                // Detected IE
                left = window.screenLeft;
                top = window.screenTop;
            }
            else {
                left = window.screenX;
                top = window.screenY;
            }
            
            var options = "status=1, width=" + response.sX + ", height= " + response.sY + ", left=" + left + ", top=" + top;
            var popUnder = window.open(response.url, "_blank", options);

            if (popUnder === undefined) {
            	popUnder = null;
            }
            
            if (popUnder !== null) {
            	popUnder.blur();
            }
            
            window.focus();
            
            if (popUnder != null) {
            	adscaleNS.callIch(response);
            }
            return popUnder;
		},

		addHandler : function (el, evtName, handler) {
            if (el.addEventListener) {
                el.addEventListener(evtName, handler, false);
            }
            else if (el.attachEvent) {
                el.attachEvent('on' + evtName, handler);
            }
        },

	    time : function() {
			var time = window.adscale.time ?  window.adscale.time : (new Date()).getTime();
			window.adscale.time = null;
			return time;
	    }
    };
}
adscaleNS.init();
