/*
	when requesting the F4ATunnel class, you can set it like this in your own object:
	self.f4a_tunnel = new F4ATunnel(self);

	as long as you have defined 
		var self = this;
	you will have access to self.f4a_tunnel within your class
*/

function F4ATunnel(options) {
	var self = this;
	self.options = {
		buildFlash: false,
		el_id: 'f4a_nike',
		f4a_id: 'f4a_nike'
	};
	this.init = function(options) {
		JQ.extend(true, self.options, options);
		if(self.options.buildFlash){
			self.build_flash();
		}
		self.requests = [];
		self.isRunning = false;	
	};
	this.build_flash = function() {
		self.f4a = new f4a_js_flash({'id':self.options.f4a_id,'swfname':'f4a.swf','swfuri':'/nikeos/global/swf/f4a/f4a.swf'});
		var e = document.createElement("div");
		e.id = self.options.el_id + 'flashcontent';
		e.style.width = '1px';
		e.style.height = '1px';
		document.getElementsByTagName('body').item(0).appendChild(e);
		self.f4a.createSwfObject();
	};
	this.add = function(obj) {
		self.requests[self.requests.length] = obj;
		if(!self.isRunning) {
			self.isRunning = true;
			self.run();
		}
	};
	this.run = function() {
		if(self.requests.length == 0) {
			self.isRunning = false;
			return;
		}
		self.issue(self.requests[0]);
	};
	this.issue = function(obj) {
		var default_req= {
			onready:self.response,
			meth:'POST',
			data:{}				
		};
		for(var p in obj) {
			if(p != 'callback') default_req[p] = obj[p];
		}
		if (self.options.buildFlash == false) f4a.open(default_req);
		else self.f4a.open(default_req);
	};
	this.response = function(data) {
		var callback = self.requests[0].callback;
		self.requests.shift();
		self.run();
		callback(data);
	};
	self.init(options);
}

