function srsTrace(str) {
	var now = new Date();
	document.getElementById('srsTraceLog').value = now + '\n' + str + '\n------------------------------\n' + document.getElementById('srsTraceLog').value;	
}
			
function gateway(url) {
	this.url = url;
	this.iframeId = "srsIframe" + srsIframeCounter;
	srsIframeCounter += 1;
	if ( this.url.indexOf("?") < 0 )
		this.url = this.url + "?";
	this.request = request;
	this.listener = "alert";
	this.setArguments = setArguments;
	this.setListener = setListener;
	this.resetArguments = resetArguments;	
	this.arguments = new Object();
	if ( srsTracing )
		srsTrace('Creating gateway: ' + this.url);
	var span = document.createElement("span");
	if ( srsTracing )
		span.innerHTML = "<iframe id='" + this.iframeId + "' marginwidth='0' marginheight='0' width='300' height='200' frameborder='1'></" + "iframe>";
	else
		span.innerHTML = "<iframe id='" + this.iframeId + "' marginwidth='0' marginheight='0' width='0' height='0' frameborder='0'></" + "iframe>";
	document.getElementById('srsBox').appendChild(span);

	function request() {
		var src = this.url;
		if ( srsTracing ) {
			srsTrace('Invoking gateway: ' + this.url);
			src = src + "&srstrace=true";
		}
		src = src + "&srslistener=" + escape(this.listener);
		for ( var key in this.arguments )
			src = src + "&" + escape(key) + '=' + escape(this.arguments[key]);
		document.getElementById(this.iframeId).src = src;
		return this;
	}
	
	function setArguments( obj ) {
		if ( srsTracing ) {
			var traceStr = 'Setting argument(s): ';
			var first = true;
			for ( var key in obj ) {
				if ( !first )
					traceStr = traceStr + ', ';
				traceStr = traceStr + key;
				first = false;
			}
			srsTrace(traceStr);
		}
		for ( var key in obj )
			this.arguments[key] = obj[key];
		return this;
	}	
	
	function setListener( str ) {
		if ( srsTracing )
			if ( str.length == 0 )
				srsTrace('Setting no listener.');
			else
				srsTrace('Setting listener.');
		this.listener = str;
		return this;
	}	
	
	function resetArguments() {
		if ( srsTracing )
			srsTrace('Resetting arguments.');
		this.arguments = new Array();
		return this;
	}		

}

function srsLoadSelect(select, packet, value, name, prompt, promptValue) {
	var j = select.childNodes.length;
	for ( var i = 0; i < j; i++ )
		select.removeChild(select.childNodes[0]);
	if ( prompt && prompt.length > 0 )  {
		var option = document.createElement("option"); 
		option.innerHTML = prompt;
		option.value = promptValue;
		select.appendChild(option);
		}
	if ( packet[value].length == 0)
		select.disabled = true;	
	else {	
		for ( var i = 0 ; i < packet[value].length; i++ ) {
			var option = document.createElement("option"); 
			option.innerHTML = packet[name][i];
			option.value = packet[value][i];
			select.appendChild(option);
		}
		select.disabled = false;
	}
}
