/**
 * Copyright (c) "IG 74", LTD
 * Content: Functions to make money
 */

/**
 * Money postloader
 */

function sb_loader(){
	this.domain = '';
	this.place_tag = 'div'; // тэг для баннерных мест
	this.place_class = 'surbis_banner'; // опознавательный класс для баннерных мест
	this.place_params_tag = 'p'; // тэг для параметров баннерных мест
	this.default_b_type = 'multi'; // как запрашивать (multi - пачками, single - по одному)
	this.default_prog = 'http://www.surbis.ru/cgi-bin/banjs_inner.cgi';
	this.default_multi_prog = 'http://www.surbis.ru/cgi-bin/banjs_inner.cgi';
	this.multi_max = 32;
	this.rule = [[3, 1, 1, 3, ''],[3, 3, 1, 3, ''],[3, 2, 2, 4, ''],[2, 0, 0, 1, "-/."],[3, 2, 1, 2, ''],[3, 3, 1, 4, ''],[3, 1, 2, 3, ''],[3, 2, 1, 3, ''],[2, 0, 1, 1, "/"],[2, 0, 1, 1, "strx"],[3, 3, 3, 5, ''],[2, 0, 1, 1, "/"]];
	this.rule_multi = [[3, 1, 1, 3, ''],[3, 3, 1, 3, ''],[3, 2, 2, 4, ''],[2, 0, 0, 1, "-/."],[3, 2, 1, 2, ''],[3, 3, 1, 4, ''],[3, 1, 2, 3, ''],[3, 2, 1, 3, ''],[2, 0, 1, 1, "/"],[2, 0, 1, 1, "imva"],[3, 3, 3, 5, ''],[2, 0, 1, 1, "/"]];
	this.t = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";
}

sb_loader.prototype.rand = function(a, b){
	if(a > b){var t = a;a = b;b = t;}
	return Math.floor(Math.random() * (b - a + 1) + a);
}

sb_loader.prototype.randstr = function(rule){
	var scnt, cnt, buf = '', symb = '';
	for(var i in rule){
		switch(rule[i][0]){
		case 1: break;
		case 2: 
			if(rule[i][3] != rule[i][2]) cnt = this.rand(rule[i][2], rule[i][3]);
			else cnt = rule[i][3];
			scnt = rule[i][4].length - 1;
			for(var j = 0; j < cnt; j++) buf+= rule[i][4].charAt(this.rand(0, scnt));
			break;
		case 3:
			if(rule[i][3] != rule[i][2]) cnt = this.rand(rule[i][2], rule[i][3]);
			else cnt = rule[i][3];
			scnt = -1;
			if(rule[i][1] & 1) scnt+= 26;
			if(rule[i][1] & 2) scnt+= 10;
			if(scnt == 0 || cnt == 0) break;
			for(var j = 0; j < cnt; j++){
				symb = this.rand(0, scnt) + 48;
				if(!(rule[i][1] & 2) && rule[i][1] & 1) symb+= 49;
				else if(rule[i][1] & 2 && rule[i][1] & 1 && symb > 57) symb+= 39;
				buf+= String.fromCharCode(symb);
			}
			break;
		}
	}
	return buf;
}

sb_loader.prototype.init = function(f_load){
	this.default_prog = '/'+this.randstr(this.rule);
	this.default_multi_prog = '/'+this.randstr(this.rule_multi);

	this.addEvent(window, 'load', f_load, false);
	this.getDomain();
};

sb_loader.prototype.getElementsByClass = function(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
};

sb_loader.prototype.addEvent = function(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
};

sb_loader.prototype.getDomain = function(){
	this.domain = window.location.hostname;
	if(this.domain.substr(0, 4) == 'www.') this.domain = this.domain.substr(4);
};

sb_loader.prototype.show = function(){
	var multi_banners = {};
	var surbis_banners = this.getElementsByClass(this.place_class, null, this.place_tag);
	if(surbis_banners.length==0) return false;
	var surbis_bannersLen = surbis_banners.length;
	for (var i = 0; i < surbis_bannersLen; i++) {
		var prog = this.default_prog;
		var multi_prog = this.default_multi_prog;
		var b_type = this.default_b_type;
		var params = {
			'p': this.domain
		};
		var els = surbis_banners[i].getElementsByTagName(this.place_params_tag);
		var elsLen = els.length;
		for(var j = 0; j < elsLen; j++) {
			if( els[j].className == '' ) continue;
			if( els[j].className == 'prog' ){
				prog = els[j].innerHTML;
				multi_prog = els[j].innerHTML;
				continue;
			}
			if( els[j].className == 'type' ){
				b_type = els[j].innerHTML;
				continue;
			}
			params[els[j].className] = els[j].innerHTML;
		}
		var query = '';
		for(var par in params){
			if(typeof params[par] == 'string'){
				query += '&' + par + '=' + escape(params[par]);
			}
		}
		if(b_type == 'single')
		{
			this.putScript(prog, surbis_banners[i].id.substr(3), params.p);
		}
		else
		{
			if(typeof multi_banners[multi_prog] == 'undefined'){ multi_banners[multi_prog] = {};}
			if(typeof multi_banners[multi_prog][query] == 'undefined'){ multi_banners[multi_prog][query] = new Array;}
			multi_banners[multi_prog][query].push(surbis_banners[i].id.substr(3));
		}
	}
	// выгребаем баннеры пачками
	for(var bans in multi_banners){
		if(typeof multi_banners[bans] == 'object'){
			for(var bans2 in multi_banners[bans]){
				if(typeof multi_banners[bans][bans2] == "object" )
				{
					while( multi_banners[bans][bans2].length > this.multi_max ){
						var bbb = multi_banners[bans][bans2].slice(0, this.multi_max);
						this.putScript(bans, bbb.join(","), params.p);
						multi_banners[bans][bans2] = multi_banners[bans][bans2].slice(this.multi_max)
					}
					if(multi_banners[bans][bans2].length > 0){
						this.putScript(bans, multi_banners[bans][bans2].join(","), params.p);
					}
				}
			}
		}
	}
};

sb_loader.prototype.putScript = function(prog, id, query){
	var js = document.createElement('SCRIPT');
	js.type = 'text/javascript';
	js.language = 'javascript';
	js.src = prog + this.encode(id) + '/' + this.encode(query) + '/';
	document.body.appendChild(js);
};

sb_loader.prototype.encode = function(s){
	var p = 0;var l = s.length;var d = '';
	while(true){
		d+= this.t.charAt(s.charCodeAt(p) >> 2);
		if(l == 1){
			d+= this.t.charAt((s.charCodeAt(p) & 3) << 4);
			break;}
		d+= this.t.charAt((s.charCodeAt(p + 1) >> 4) + ((s.charCodeAt(p) & 3) << 4));
		if(l == 2){
			d+= this.t.charAt((s.charCodeAt(p + 1) & 15) << 2);
			break;}
		d+= this.t.charAt((s.charCodeAt(p + 2) >> 6) + ((s.charCodeAt(p + 1) & 15) << 2));
		d+= this.t.charAt(s.charCodeAt(p + 2) & 63);

		if(l <= 3)break;
		l-= 3;p+= 3;}
	return d;
};

sb_loader.prototype.decode = function(s){
	var p = 0;var l = s.length;var d = '';var c0,c1,c2,c3;
	while(true){
		if(l >= 1) c0 = this.t.indexOf(s.charAt(p));		else c0 = 0;
		if(l >= 2) c1 = this.t.indexOf(s.charAt(p + 1));	else c1 = 0;
		if(l >= 3) c2 = this.t.indexOf(s.charAt(p + 2));	else c2 = 0;
		if(l >= 4) c3 = this.t.indexOf(s.charAt(p + 3));	else c3 = 0;
		if(l == 1){
			d+= String.fromCharCode((c0 << 2) & 255);
			break;}
		d+= String.fromCharCode(((c1 >> 4) + (c0 << 2)) & 255);
		if(l == 2){
			d+= String.fromCharCode((c1 << 4) & 255);
			break;}
		d+= String.fromCharCode(((c1 << 4) + (c2 >> 2)) & 255);
		if(l == 3){
			d+= String.fromCharCode((c2 << 6) & 255);
			break;}
		d+= String.fromCharCode(((c2 << 6) + c3) & 255);

		if(l <= 4)break;
		l-= 4;p+= 4;}
	return d;
};

var sb_loader_ex = new sb_loader();
sb_loader_ex.init(function(){sb_loader_ex.show();});


/**
 * Richmedia functions
 */

function sc_rich_loader(name){
	this.banners = new Array();
	this.bans = null;
	this.showed = new Array();
	this.tohide = new Array();
	this.is_popupscript=1;
}

sc_rich_loader.prototype.showPopupBunner = function(a)
{
	obj = (a) ? a.target : event.srcElement;
	sc_rich_loader_ex.bans = obj;
	setTimeout('sc_rich_loader_ex.showPopupBunner_()', 200);
};

sc_rich_loader.prototype.showPopupBunner_ = function()
{
	if(this.bans != null)
	{
		obj = document.getElementById(this.bans.id+'_big');
		obj.style.display='block';
		this.showed[this.bans.id] = true;
		this.tohide[this.bans.id] = false;
	}
};

sc_rich_loader.prototype.hidePopupBunner = function(a)
{
	obj = (a) ? a.target : event.srcElement;
	sc_rich_loader_ex.bans = sc_rich_loader_ex.banners[obj.id];
	sc_rich_loader_ex.tohide[sc_rich_loader_ex.bans] = true;
	setTimeout('sc_rich_loader_ex.hidePopupBunner_(\''+sc_rich_loader_ex.bans+'\')', 1000);
};

sc_rich_loader.prototype.hidePopupBunner_ = function(name)
{
	if(this.showed[name] == true && this.tohide[name] == true)
	{
		obj = document.getElementById(name+'_big');
		obj.style.display='none';
		this.bans = null;
		this.showed[name] = false;
		this.tohide[name] = false;
	}
};

sc_rich_loader.prototype.popupMouseMove = function(a)
{
	obj = (a) ? a.target : event.srcElement;
	if(sc_rich_loader_ex.bans != null && sc_rich_loader_ex.showed[sc_rich_loader_ex.bans.id] == false)
	{
		if(obj != sc_rich_loader_ex.bans)
			sc_rich_loader_ex.bans = null;
	}
	if(sc_rich_loader_ex.bans != null && sc_rich_loader_ex.showed[sc_rich_loader_ex.bans.id] == true && sc_rich_loader_ex.tohide[sc_rich_loader_ex.bans.id] == false)
	{
		if(obj.id != sc_rich_loader_ex.bans.id+'_hide')
		{
			sc_rich_loader_ex.tohide[sc_rich_loader_ex.bans.id] = true;
			sc_rich_loader_ex.bans = sc_rich_loader_ex.bans.id;
			setTimeout('sc_rich_loader_ex.hidePopupBunner_(\''+sc_rich_loader_ex.bans+'\')', 1000);
		}			
	}
};

sc_rich_loader.prototype.addPopupBanner = function(name,doc)
{
	this.banners[name+'_hide'] = name;
	doc.getElementById(name).onmouseover = this.showPopupBunner;
	doc.getElementById(name+'_hide').onmouseout = this.hidePopupBunner;
	doc.body.onmousemove = this.popupMouseMove;
	this.showed[name] = false;
	this.tohide[name] = false;
};

var sc_rich_loader_ex = new sc_rich_loader();