
LS = {};
LS.baseurl = 'http://webfonts.biz';
LS.key = 'b97cf5c2f868dc5e081223544f1cc3db2bde3dfc';
LS.font = false;
LS.fonts = ['Free Sans Oblique', 'kawoszeh', 'Smart and Sexy', 'Casa Sans', 'Rostock Kaligraph', 'LT Oksana Italic', 'Nuncio Regular', 'LT Oksana Medium Bold', 'Free Sans Bold Oblique', 'Ubuntu-Title', 'Good Times', 'Free Sans', 'Free Sans Bold', 'Smart and Sexy Bold'];

LS.insertImageForElement = function (e, fontName, wrap)
{
	if (! e) return;
	if (! fontName) fontName = LS.font;

	log(e.nodeType);
	log(e.hasChildNodes());
	var text = MochiKit.Format.strip(MochiKit.DOM.scrapeText(e));
	var size = MochiKit.Style.getStyle(e,'font-size');
	var color = MochiKit.Color.Color.fromComputedStyle(e,'color').toHexString();
        var parent = e.parentNode;
	var bgcol;
        
        bgcol = MochiKit.Color.Color.fromComputedStyle(e,'background-color');
        while (parent && !bgcol) {
            bgcol = MochiKit.Color.Color.fromComputedStyle(parent,'background-color');
            if (bgcol) break;
            if (!parent.parentNode) break;
            parent = parent.parentNode;
        }

	if (bgcol) {
		bgcol = bgcol.toHexString();
	} else {
		bgcol = 'transparent';
	}

	var align = MochiKit.Style.getStyle(e,'text-align');
	if (align == 'justify') // FIXME: missing feature/textimage bug
		align = 'left';
	var dim = MochiKit.Style.getElementDimensions(e, contentSize=true);
	var tpad = MochiKit.Style.getStyle(e,'padding-top');
	var rpad = MochiKit.Style.getStyle(e,'padding-right');
	var bpad = MochiKit.Style.getStyle(e,'padding-bottom');
	var lpad = MochiKit.Style.getStyle(e,'padding-left');
	var width = parseInt(dim['w']) + parseInt(lpad) + parseInt(rpad);
	var height = parseInt(dim['h']) + parseInt(tpad) + parseInt(bpad);


	MochiKit.DOM.addElementClass(e,'wfnt-orig');

	size = MochiKit.Format.rstrip(size,'px');
	tpad = MochiKit.Format.rstrip(tpad,'px');
	rpad = MochiKit.Format.rstrip(rpad,'px');
	bpad = MochiKit.Format.rstrip(bpad,'px');
	lpad = MochiKit.Format.rstrip(lpad,'px');
        var padding = tpad + ',' + rpad + ',' + bpad + ',' + lpad;
	color = MochiKit.Format.lstrip(color,'#');
	bgcol = MochiKit.Format.lstrip(bgcol,'#');
	if (align == 'start') align = 'left';

	var args = {'key':LS.key,'text':text,'bgcol':bgcol,'size':size,'color':color,'align':align,'width':width,'height':height,'padding':padding};
	if (fontName && (MochiKit.Base.findValue(LS.fonts,fontName)>=0)) 
		args['font'] = fontName;

	if (wrap)
		var url = LS.baseurl + '/phrase?' + MochiKit.Base.queryString(args);
	else
		var url = LS.baseurl + '/label?' + MochiKit.Base.queryString(args);

	var txtnode = SPAN({'class': 'wfnt-text'}, text);
	var imgnode = IMG({'class': 'wfnt-image','width':width,'height':height,'title':text,'src':url});

	var curclass = MochiKit.DOM.getNodeAttribute(e,'class');
	if (curclass) 
		curclass = curclass + ' wfnt-text';
	else
		curclass = 'wfnt-text';

	MochiKit.DOM.replaceChildNodes(e, txtnode, imgnode);
}

LS.setImages = function (selector, fontName, parent, wrap)
{
	var el;
	if (! parent) parent = MochiKit.DOM.currentDocument();
	el = MochiKit.Selector.findChildElements(parent, [selector]);
	for (var i = 0; i < el.length; i++) {
		LS.insertImageForElement(el[i], fontName, wrap);	
	}
}

function LabelImage(selector, fontName, parent)
{
	LS.setImages(selector, fontName, parent, false);
}

function PhraseImage(selector, fontName, parent)
{
	LS.setImages(selector, fontName, parent, true);
}


document.write('<script type="text/javascript" src="' + LS.baseurl + '/MochiKit.js"></script>');

