BF_js_version = '1.0.0';
BF_XSS = {

	request: function(args) {		
		var src = BF_server + args.script;
		src += '?version=' + BF_js_version;
		for(name in args.params) {
			src += '&';
			var value = args.params[name];
			src += escape( name ) + '=' + escape( value );
		}
		var script = document.createElement('script');
		script.src = src;
		document.getElementsByTagName('body')[0].appendChild(script);
	},
	
	swift_injection: function( src ) {
		var script = document.createElement('script');
		script.src = src;
		document.getElementsByTagName('head')[0].appendChild(script);
	},

	badge: function( args ) {
		// Convoluted stuff bc some sites might not use prototype.js
		if( BF_XSS.__open_badge ) {
			BF_XSS.__open_badge.style.display = 'none';
		}
		if ( args.close == true ) {
			BF_XSS.__close_badge = true;
			return;
		}
		if ( BF_XSS.__close_badge ) {
			BF_XSS.__close_badge = false;
			return false;
		}
		var target = args.target;
		var json_data = unescape( target.getAttribute('rel:bf_data') );
		this.obj = eval( '(' + json_data + ')' );
		var div_id = this.obj.buzz_id + '_' + this.obj.badge_type;
		if ( ! document.getElementById( div_id ) ) {
			var div = document.createElement( 'div' );
			div.id = div_id;
			div.className = 'badge-tip badge-' + this.obj.badge_type;
			args.target.appendChild( div );
			var spinner = document.createElement('div');
			spinner.className = 'spinner';
			spinner.innerText=' ';
			div.appendChild( spinner );
		}
		if ( BF_XSS.__open_badge && BF_XSS.__open_badge.id == div_id ){
			BF_XSS.__open_badge = null;
			return true;
		}
		BF_XSS.__open_badge = document.getElementById( div_id );
		BF_XSS.__open_badge.style.display = 'block';
		BF_XSS.request({
			script : '_badge',
			params : {
				element_id : div_id,
				json : json_data
			}
		});
		return false;
	},

	stats_response: function( ajax, buzz_id ) {
		if (typeof buzz_id == 'undefined' ) buzz_id = BF_XSS.buzz_id;
		var obj = document.getElementById(buzz_id+'_top_linking_sites');
		if ( obj ) {
			for( var i = 0; i < ajax.domains.length; i++ ) {
				if ( ajax.domains[i] ) {
					var li = document.createElement( 'li' );
					var a = document.createElement( 'a' );
					a.setAttribute( 'href', 
						'http://' + ajax.domains[i]['domain'] 
					);
					a.appendChild( document.createTextNode( 
						ajax.domains[i]['domain'] 
					));
					li.appendChild( a );
					obj.appendChild( li );
				}
			}
		}
		obj = document.getElementById(buzz_id + '_total_views');
		if ( ajax.impressions && ajax.impressions.length > 0 ) {
			var num = ajax.impressions[0]['total'] + '';
			num = num.replace(/(\d)(\d{3,3})?(\d{3,3})?(\d{3,3})?(\d{3,3})?(\d{3,3})?(\d{3,3})$/,"$1,$2,$3,$4,$5,$6,$7");
			num = num.replace(/,{2,}/,",");
			if ( obj ) { obj.appendChild( 
				document.createTextNode( num ) 
			);}
		}
		if ( ajax.pie ) {
			BF_XSS.update_chart( ajax.pie, buzz_id + '_chart' );
		}
/*
		if ( ajax.week && ajax.week.length > 0 ) {
			var values = new Array(0,0,0,0,0,0);
			var lowestDay = ajax.week[0].time;
			for( var i = 1; i < ajax.week.length; i++ ) {
				if ( ajax.week[i].time < lowestDay ) {
					lowestDay = ajax.week[i].time;
				}
			}
			for ( var i = 0; i < ajax.week.length; i++ ) {
				values[ajax.week[i].time-lowestDay] = ajax.week[i].total;
			}
			BF_XSS.update_chart( values, buzz_id + '_chart' );
		}
*/
	},

	update_chart: function( data, to ) {
		var to = document.getElementById( to );
		var width = to.getAttribute('width');
		if ( !width ) width = 50;
		var height = to.getAttribute('height');
		if ( !height ) height = 40;
		var img = document.createElement('img');
		var src = 'http://chart.apis.google.com/chart?chs='+width+'x'+height+'&chd=t:'+data+','+(100-data)+'&cht=p3&chco=0077ee,ee3322&chf=bg,s,0d0d0d';
/*
		var biggest = 0;
		var smallest = 0;
		for( var i = 0; i < data.length; i++ ) {
			if(data[i] > biggest) biggest = data[i];
			if(data[i] < smallest) smallest = data[i];
			src += data[i];
			if ( i < data.length - 1 ) src += ',';
		}
		src += '&cht=ls&chco=ee3322&chf=bg,s,0d0d0d&chds=' + (smallest-100) + ',' + (biggest+100);
*/
		img.src = src;
		to.appendChild( img );
		to.className = 'chart';
	}
}

