_PLACEHOLDERS_NO = null 
_BC_ADVERT_ID = null
_BC_ACTION = null
_BC_ADSERVER_TIMEOUT = 40000
_BC_ADSERVER_APPEND_TIMEOUT = 30000


var _adcontainer = {
    containerscl : new Array(),
    containershl : new Array(),
    child : null,
    p : null,
    q : null,
    r : null,
    parent_node : null,
    done : false,
    accept : null,
    word_min_length : 5,
    word_enders: [/ami$/,/zie$/,/ego$/,/cie$/,/em$/,/ie$/,/ym$/,/sc$/,/ow$/],
    word_enders_no: [/owy$/,/owa$/,/owe$/,/owym$/],
    word_enders_ne: [/e$/,/y$/,/i$/,/a$/,/u$/,/o$/],
    ommit_word : '2009,aby,ale,az,beda,bez,bo,byl,co,cos,czego,czy,czym,dla,dosc,dzis,dzisiaj, gdy,gdyz,ich,ja,jak,jakakolwiek,jakiekolwiek,jakikolwiek,je,jego,jej,jest,juz,kim,kogo,komu,kto,lub,mam,moze,'
    + 'mozna,nad,nam,nie,niego,nim,nimi,niz,nowe,obie,obok,oby,one,oraz,pod,procchca,przez,przy,'
    + 'sa,sama,same,sami,samo,sie,siebie,sobie,tak,taka,taki,takich,takie,takze,tego,tej,temu,ten,tez,tylko,tym,tys,ze',
    skip : new Array(),
    plChars : unescape("%u0105%u0107%u0119%u0142%u0144%u00F3%u015B%u017C%u017A%u0104%u0106%u0118%u0141%u0143%u00D2%u015A%u017B%u0179%u010D%u0117%u012F%u0161%u0173%u016B%u017E%u010C%u0116%u012E%u0160%u0172%u016A%u017D"),
    max_url : 850,
    timeEnd : null,
    
    read_cookie : function (name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    },
    get_proto : function () {
        var js_host = (("https:" == document.location.protocol) ? "https://" : "http://");
        return js_host;
    },
    prepare : function () {
        var c = document.getElementsByTagName('div');
        _adcontainer.containershl = new Array()
        _adcontainer.containerscl = new Array()
        for (var i=0;i<c.length;i++) {
            if (c[i].className.match(/^(__ads__)*.{64}$/)) {
                var ch_n = 0;
                try {
                    ch_n = c[i].childNodes.length;
                }   
                catch(e){}
                /*
                if (ch_n > 0)
                    continue;
                */
                var tmp = c[i].className.split('__')
                var cn = ''
                if (tmp.length==3)
                    cn = tmp[2]
                else
                    cn = tmp[0]
                _adcontainer.containerscl.push(cn);   
                _adcontainer.containershl.push(c[i]);   
            }   
        }   
        if (_PLACEHOLDERS_NO != null) {
            placeholders_found = _adcontainer.containershl.length
            if (placeholders_found < _PLACEHOLDERS_NO) {
                _adcontainer.q = window.setInterval(_adcontainer.prepare, 5000)
            }   
            else {
                window.clearInterval(_adcontainer.q)
            }   
        }   
    },  
    run : function () {
        _adcontainer.prepare();
        _adcontainer.init_splitter();
        
        

        if (_BC_ACTION != null) {
            if (_BC_ACTION == 2)
                _adcontainer.click()
            
            //old lead codes functionality     
            if (_BC_ACTION == 3)
                _adcontainer.lead(_BC_ADVERT_ID)
        }

        if (_adcontainer.containershl.length > 0) {
        	var d = new Date();
	        var s = document.createElement('script');
	        var url  = _adcontainer.get_proto() + "ads.businessclick.com/awrapper";
	        url += "?data="+_adcontainer.containerscl.join('|');
	        url += _adcontainer.get_params()
	        url += "&"+d.getSeconds()
	        url += '&kwd=' + _adcontainer.mySplitter();
	        s.setAttribute('src', url)
	        s.setAttribute('charset', 'utf-8')
	
	        _adcontainer.child = s
	        
            //parent_node = _adcontainer.containershl[_adcontainer.containershl.length-1].parentNode
            _adcontainer.parent_node = _adcontainer.containershl[_adcontainer.containershl.length-1].parentNode
            //parent_node.appendChild(s);
            _adcontainer.r = window.setInterval(_adcontainer.append_child, 50)
            _adcontainer.p = window.setInterval(_adcontainer.check, 10)
            window.setTimeout(_adcontainer.append_cancel, _BC_ADSERVER_APPEND_TIMEOUT)
            window.setTimeout(_adcontainer.cancel, _BC_ADSERVER_TIMEOUT)
        }
        
        
    },
    append_child : function () {
        _adcontainer.parent_node.appendChild(_adcontainer.child)
        window.clearInterval(_adcontainer.r)
    },
    trace : function(str) {
    	if (document.getElementById('_ic_console')) document.getElementById('_ic_console').innerHTML += '<span>' + str + '</span><br/>';
    },
    check : function () {
    	
        if ((typeof(_adverts_std) != 'undefined' && typeof(_adverts_std.show) == 'function') || (typeof(_adverts_int) != 'undefined' && typeof(_adverts_int.show) == 'function')) {   
            try {
                _adverts_int.show();
            }
            catch(e){}
            try {
                _adverts_std.show();
            }
            catch(e){}
            window.clearInterval(_adcontainer.p)
            _adcontainer.done = true;
        } 
    },
    cancel : function () {
        window.clearInterval(_adcontainer.p)
    },
    append_cancel : function () {
        window.clearInterval(_adcontainer.r)
    },
    redir : function () {
        var redir_host    = arguments[0]
        var redir_params  = arguments[1]
        var target_window = arguments[2]
        var advert_type   = arguments[3]
        var url = redir_host + '?' + redir_params + _adcontainer.get_params() 
        if (target_window == '_new') {
            window.open(url, target_window)
        }
        else {
            top.document.location.href = url
        }
    },
    lead : function (advert_id) {
        var d = new Date();
        var s = document.createElement('script');
        var redir_host  = _adcontainer.get_proto() + "ads.businessclick.com/redir";
        var redir_params = ''
        var url = redir_host + '?aid=' + advert_id + '&et=3' + redir_params + _adcontainer.get_params()
        s.setAttribute('src', url)
        s.setAttribute('charset', 'utf-8')
        parent_node = document.getElementsByTagName('body')[0]
        parent_node.appendChild(s);
    },
    click : function () {
        var d = new Date();
        var s = document.createElement('script');
        var redir_host  = _adcontainer.get_proto() + "ads.businessclick.com/redir";
        var url = redir_host + '?aid=' + _BC_ADVERT_ID + '&et=2' + _adcontainer.get_params()
        s.setAttribute('src', url)
        s.setAttribute('charset', 'utf-8')
        parent_node = document.getElementsByTagName('body')[0]
        parent_node.appendChild(s);
    },
    
    init_splitter : function() {
        this.skip = this.ommit_word.split(',');
    },
    
    get_params : function () {
        var ccd = screen.colorDepth ? screen.colorDepth : 0;
        var os  = "";
        var av = navigator.appVersion;
        if (av.indexOf("Win")!=-1)   os = "Windows";
        if (av.indexOf("Mac")!=-1)   os = "MacOS";
        if (av.indexOf("X11")!=-1)   os = "UNIX";
        if (av.indexOf("Linux")!=-1) os = "Linux";
        var referer = document.referrer ? encodeURIComponent(document.referrer) : ''
        var webpage = encodeURIComponent(document.location.href)
        var ref1 = referer 
        var ref2 = webpage 
        var redir_params  = '&cw=' + screen.width + '&ch=' + screen.height + '&ccd=' + ccd + '&cos=' + os + '&referer=' + referer +'&webpage=' + webpage + '&ref1=' + ref1 + '&ref2=' + ref2
        
        return redir_params
    },
    
    print_array : function(obj) {
    	var ret = '<pre>';
	    for (var i in obj) {
	      ret += '[' + i + '] ';
	      if (typeof(obj[i]) == "object") {
	      	    for (var a in obj[i]) ret += a+':' + obj[i][a] + ', ';
  	     }
  	     ret += '\n';
	    }
	    ret += '</pre>';
	    return ret;
    },
    
    plLower : function(text){
	    var ret = "";
	    for(var p = 0; p < text.length; p++) {
	      var j = text.charAt(p);
	      ret += this.plChars[j] ? this.plChars[j] : j;
	    }
	    return ret;
    },
    
    startTime : function() {
        this.timeEnd = (new Date()).getTime();
    },
                
    getEndTime : function() {
        if (this.timeEnd) return (new Date()).getTime() - this.timeEnd;
    },
    
    mySplitter : function(){
    	this.startTime();
		var re= /<\S[^><]*>/g
		var crap = new RegExp("[0-9\?\.\n\t\r]+", "g");
		var new_data = '';
		var c = document.getElementsByTagName('div');
		var s_array = new Array();
		var s_array_copy = new Array();
		var a, word, tb;
		var my_url = '';
		
        for (var i=0;i<c.length;i++) {
            if (c[i].className.match(/^.{64}$/) && c[i].innerHTML) {
            	if (c[i].innerHTML.length > 0) {
				  new_data = c[i].innerHTML.replace(re, "")
		          if (new_data.length > 1) {
		          	a = new_data.split(' ');

		          	this.trace('data_length:' + a.length, 'red');

		          	for (var k=0; k < a.length; k++) {
		          		word = this.getWordBaseForm(a[k].replace(crap, ''));
		          		word = this.plLower(word.toLowerCase());
		          		
		          		
		          		if (this.skip[word] || word.length <= this.word_min_length) continue;
		          		else
		          		if (s_array[word]) {
                           s_array[word] += 1;
		          		}
		          		else {
		                    s_array[word] = 1;     
		          		}
		          	}
		          }
            	}
            }
        }
        
        
        for (var w in s_array) { 
            tb = new Object()
            tb.val = s_array[w];
            tb.word = w;
            s_array_copy.push(tb);
        }
        
        /* now get the hell out of it */
        s_array_copy.sort(function(a,b){ return (a.val < b.val)?1:-1; });
        s_array = null;
        
        /* now into URL */
        for (var i=0; i < s_array_copy.length; i++) {
        	if (my_url.length < this.max_url) my_url += encodeURIComponent(s_array_copy[i].word) + ',';
        	else break;
        }
        
        //this.trace(this.print_array(s_array_copy), 'green');
        this.trace(my_url, 'red');
        this.trace('parser finished: ' + this.getEndTime() + ' ms', 'red');
        return my_url;
    },
    
      
    getWordBaseForm : function(word) {
    	return word;
    	
    	var base_form;
    	for(var key=0; key < this.word_enders.length; key++) {
	      if (word.match(this.word_enders[key]) != null) {
	        base_form = word.replace(this.word_enders[key],'');
	        
	        return base_form;
	
	      }
	    }
	    
	    for(var key=0; key<this.word_enders_no.length; key++) {
	      if (word.match(this.word_enders_no[key]) != null) {
	
	        return word;
	      }
	    }
	    
	    for(var key=0; key<this.word_enders_ne; key++) {
	      if (word.match(this.word_enders_ne[key]) != null) {
	        ret.bform = word.replace(this.word_enders_ne[key],'');
	        return base_form;
	      }
	    }
	    
	    return word;
    }

}


if (typeof(done) == 'undefined') {
    var done = null;
    if (_PLACEHOLDERS_NO == null) {
        if (window.addEventListener) window.addEventListener('load',_adcontainer.run, false);
        else if (window.attachEvent) window.attachEvent('onload',_adcontainer.run); 
    }
    else {
        _adcontainer.run();
    }    
}

