var gamingpartners = (function() {
    if(typeof gamingpartners == 'object') {
        return gamingpartners;
    }

    var U = "undefined",
	htm = '',
	opt = 	{	code:       'def',
	            staticHost:	'gamingpartners.org',
				statHost:	'js.gamingpartners.org',
				flashVer:	'9.0.0'
			},
	banners  = new Array(),
	data     = new Array(),
	inc_data = new Array(),
	idx      = 0,
	include  = function(link) {
        document.write('<script type="text/javascript" src="http://' + link + '"></scr' + 'ipt>');
	},
	setOpts = function(addOpts) {
        banners[idx].width     = typeof addOpts.width  != U    ? parseInt(addOpts.width) : 0;
        banners[idx].height    = typeof addOpts.height != U    ? parseInt(addOpts.height) : 0;
        banners[idx].style     = typeof addOpts.style  != U    ? addOpts.style : '';
        banners[idx].className = typeof addOpts.className != U ? addOpts.className : '';
        banners[idx].imgBorder = typeof addOpts.imgBorder != U ? parseInt(addOpts.imgBorder) : 0;
	};
	function displayBanner(banner_idx) {
        banners[banner_idx].displayed = true;
	    var banner = banners[banner_idx];
        var b_data = data[banner.code];
        var obj_id = 'span_gamingpartners_' + banner_idx;
        if( b_data.files.length > 1 ) {
			var file = b_data.files[ Math.round(Math.random() * (b_data.files.length - 1)) ];
		} else {
			var file = b_data.files[0];
		}
		file.url = b_data.url.replace('%%CODE%%', file.c + 't' + banner.tracker);

		if(b_data.type==0) {
			document.getElementById(obj_id).innerHTML = '<a href="http://'+file.url+'">'+file.t+'</a>';
		} else if(b_data.type==1 || b_data.type==2) {
		    if(file.e == 'swf') {

				swfobject.embedSWF(	'http://'+opt.staticHost+'/banners/'+file.i+'.'+file.e,
									obj_id,
									b_data.width,
									b_data.height,
									opt.flashVer,
									'http://'+opt.staticHost+'/banners/ei.swf',
									{partnerlink:'http://'+file.url},
									{wmode: 'transparent'}
								  );
			} else {
				htm = '<a href="http://'+file.url+'"><img src="http://'+opt.staticHost+'/banners/'+file.i+'.'+file.e+'" alt="'+file.t+'" style="width:'+b_data.width+'px;height:'+b_data.height+'px;border:'+banner.imgBorder+';'+banner.style+'"'+(banner.className != '' ? ' class="'+banner.className+'"' : '')+'/></a>';
				document.getElementById(obj_id).innerHTML = htm;
			}
		}
	};
	function displayBanners (code) {
	    if(typeof data[code] == U || typeof data[code].files == U || data[code].files.length == 0 || typeof data[code].url == U) {
	        return;
	    }

        for(banner_idx in banners) {
            if(!banners[banner_idx].displayed && banners[banner_idx].code == code) {
                displayBanner(banner_idx);
            }
        }
    };

    return {
		getBanner: function(code, tracker, addOpts) {

		    tracker = typeof tracker == U ? 0 : parseInt(tracker);
			idx = banners.length;
			banners[idx] = { code: code,
                             tracker: tracker,
                             displayed: false
                           };

			if(typeof addOpts == U) {
			    addOpts = {};
			}
		    setOpts(addOpts);

			if(banners[idx].width != 0 && banners[idx].height != 0) {
    			    var size_style = 'style="width: ' + banners[idx].width + 'px; height: ' + banners[idx].height + 'px; display: block;"';
			} else {
			    var size_style = '';
			}
    			document.write('<span id="span_gamingpartners_' + idx + '"' + size_style + '>&nbsp;</span>');

			if(typeof data[code] != U) {
                displayBanners(code);
			} else {
			    if(typeof inc_data[code] == U) {
                    inc_data[code] = true;
			        include(opt.staticHost + '/jp/' + code + '.js');
			        include(opt.statHost + '/jv/' + code + 't' + tracker + '_' + Math.floor(Math.random()*10000+1) + '.js');
			    }
			}
		},
        setData: function(sd) {
    		if(typeof sd.f == U || sd.f.length == 0 || typeof sd.t == U || typeof sd.c == U || typeof sd.u == U) {
    		    return false;
    		}
		    if(typeof data[sd.c] != U) {

		        displayBanners(sd.c);
                return false;
		    }
			data[sd.c] = { type  : sd.t,
			               files : sd.f,
			               url   : sd.u,
	               		   width : (typeof sd.w !== U ? sd.w : 0),
			               height: (typeof sd.h !== U ? sd.h : 0)
			};
    		displayBanners(sd.c);
    	}
    };
})();
