(function(window, defaults)	{
	function format(s, v)	{
		var max= 100;
		if(!s)	return "";
		function rep(m)	{
			if(m=="\\\\" || m=="\\(")	return m.charAt(1);
			if(v && (m= v[m[1]]))	return m;
			return "";
		}
		var re= /\\\\|\\\(|\((\w+)\)/, m;
		if(m= re.exec(s))	{
			var i= max, t= "";
			do	{
				t+= RegExp.leftContext+ rep(m);
				s= RegExp.rightContext;
			}
			while(--i && (m= re.exec(s)));
			return t+ RegExp.rightContext;
		}
		else
			return s;
	}
	function createCallback(lay)	{
		switch(lay.type)	{
			default:
			case "simply":
				return function(d)	{
					if(!lay.container)	return;
					if(!lay.template)	lay.template= defaults.template;
					var c= lay.container;
					c.style.display= "none";
					if(!d || !d.items || !d.items.length)	return;
					c.innerHTML= "";
					if(lay.templateHead)	c.innerHTML+= lay.templateHead;
					for(var item, i= 0; i<d.items.length && (item= d.items[i]); i++)
						c.innerHTML+= format(lay.template, item);
					if(lay.templateFoot)	c.innerHTML+= lay.templateFoot;
					c.style.display= lay.display? lay.display: "";
				};
			case "multiBlock":
				return function(d)	{
					if(!lay.blocks || lay.blocks.length<=0)	return;
					for(var b, bi= 0; bi<lay.blocks.length && (b= lay.blocks[bi]); bi++)	{
						if(!b.container)	continue;
						if(!b.template)	b.template= defaults.template;
						if(!b.offset)	b.offset= 0;
						if(!b.length)	b.length= d.items.length;
						
						var c= b.container;
						c.style.display= "none";
						if(!d || !d.items || !d.items.length)	continue;
						c.innerHTML= "";
						if(b.templateHead)	c.innerHTML+= b.templateHead;
						for(var item, i= b.offset, len= Math.min(i+ b.length, d.items.length); i<len && (item= d.items[i]); i++)
							c.innerHTML+= format(b.template, item);
						if(b.templateFoot)	c.innerHTML+= b.templateFoot;
						c.style.display= b.display? b.display: "";
					}
				};
		}
	}
	var obj=
	window[defaults.binding]=
	function(m)	{
		if(!m)	return;
		if(!m.num || isNaN(m.num))	return;
		if(!m.disp)	return;
		if(!m.ln)	m.ln= defaults.ln;
		
		m.binding= defaults.binding;
		m.version= defaults.version;
		m.timestamp= new Date().getTime();
		if(!m.queryEnc)	m.queryEnc= m.query? encodeURIComponent(""+ m.query): "";
		
		if(m.callback)
			obj.callback= m.callback;
		else if(m.layout)
			obj.callback= createCallback(m.layout);
		else if(m.container)
			obj.callback= createCallback({	container: m.container	});
		else
			return;
		
		document.write('<scr'+ 'ipt src="'+ format(defaults.url, m)+ '"></scr'+ 'ipt>');
	}
	return obj;
})(window, {
	binding: "kingSponsor",
	url: "http://www.b2bking.com/sponsor/data.php?b=(binding)&num=(num)&disp=(disp)&ln=(ln)&v=(version)&t=(timestamp)&q=(queryEnc)",
	template: '<div><h3><a href="(url)" target="_blank">(title)</a></h3>(description)<cite>(visibleUrl)</cite></div>',
	ln:	"*",
	version: 1
});

