/*

FontJazz 1.2

http://www.fontjazz.com

(C) Copyright Rasmus Schultz, all rights reserved.

Free for use on all private/commercial websites. You may not
sell this script or FontJazz-generated fonts. Removing this
copyright statement is a violation of the licensing terms.

*/

var FontJazz = {
	
	_fonts: {},
	
	_initialized: false,
	
	_css: null,
	
	_initialize: function() {
		
		for (var fontname in FontJazz._fonts) {
			
			if (!FontJazz._fonts[fontname].initialized) {
				
				var image = FontJazz._fonts[fontname].image;
				var height = FontJazz._fonts[fontname].height;
				
        FontJazz._addRule(
          ".FontJazz-" + fontname + " div",
          "float:left; display:inline; overflow:visible;"
        );
        
				FontJazz._addRule(
					".FontJazz-" + fontname + " span",
					"display:block; float:left; background-image:url(" + image + "); height:" + height + "px;"
				);
				
				FontJazz._addRule(
					".FontJazz-" + fontname + " br",
					"clear:both;"
				);
				
				FontJazz._fonts[fontname].initialized = true;
				
			}
			
		}
		
	},
	
	_addRule: function(selector, rule) {
		
		if (!FontJazz._css) {
			if (document.createStyleSheet) {
				FontJazz._css = document.createStyleSheet();
			} else {
				FontJazz._css = document.createElement('style');
				FontJazz._css.setAttribute('type', 'text/css');
				document.getElementsByTagName("head")[0].appendChild(FontJazz._css);
			}
		}
		
		if (FontJazz._css.addRule) {
			FontJazz._css.addRule(selector, rule);
		} else {
			FontJazz._css.appendChild( document.createTextNode(selector + ' { ' + rule + " }\n") );
		}
		
	},
	
	register: function(fontname, data) {
		FontJazz._fonts[fontname] = data;
		FontJazz.initialized = false;
	},
	
	transform: function(element, fontname) {
		
		if (!document.styleSheets) return;
		
		if (!FontJazz.initialized) FontJazz._initialize();
		
		var font = FontJazz._fonts[fontname];
		var text = element.firstChild.nodeValue + ' ';
		
		var div = document.createElement('div');
		div.className = "FontJazz-" + fontname;
		
		var html = '<span style="overflow:hidden; width:0px;">' + text + '</span>';
		var adjust = font[text.charAt(0)][2];
		
    var word = '', w = 0, wm = 0;
		for (var i=0; i<text.length; i++) {
			var c = text.charAt(i), metrics = font[c];
			if (metrics) {
        w += metrics[1]+(adjust-metrics[2]);
        if (word == '') wm = adjust-metrics[2];
        word += '<span style="' + (word == '' ? '' : 'margin-left: ' + (adjust-metrics[2]) + 'px;') + 'background-position: -' + metrics[0] + 'px 0px; width: ' + metrics[1] + 'px;"></span>';
        if (c == ' ') {
          html += '<div style="margin-left:' + wm + 'px; width:' + (w-wm) + 'px;">' + word + '</div>';
          word = ''; w = 0; wm = 0;
        }
        adjust = metrics[3]-metrics[1];
			}
		}
		
		div.innerHTML = html + "<br />";
		
		element.parentNode.insertBefore(div, element);
		element.parentNode.removeChild(element);
		
	},
	
	apply: function(tagname, fontname, rootnode) {
		
		var collection = (rootnode || document.body).getElementsByTagName(tagname);
		
		var elements = new Array();
		
		for (var i=0; i<collection.length; i++)
			elements[i] = collection[i];
		
		for (var i=0; i<elements.length; i++)
			FontJazz.transform(elements[i], fontname);
		
	}
	
}

FontJazz.register('prod', {
	image: 'font.gif',
	width: 995,
	height: 22,
	'A': [0, 18, 0, 17],
	'B': [19, 14, -2, 16],
	'C': [34, 14, -2, 16],
	'D': [49, 16, -2, 17],
	'E': [66, 13, -2, 15],
	'F': [80, 13, -2, 13],
	'G': [94, 16, -2, 17],
	'H': [111, 16, -2, 18],
	'I': [128, 3, -2, 6],
	'J': [132, 12, -2, 14],
	'K': [145, 15, -2, 15],
	'L': [161, 13, -2, 13],
	'M': [175, 17, -2, 20],
	'N': [193, 15, -2, 18],
	'O': [209, 16, -2, 18],
	'P': [226, 14, -2, 15],
	'Q': [241, 16, -2, 18],
	'R': [258, 16, -2, 16],
	'S': [275, 15, -2, 17],
	'T': [291, 15, 1, 15],
	'U': [307, 15, -2, 17],
	'V': [323, 17, 0, 16],
	'W': [341, 21, 0, 21],
	'X': [363, 17, 0, 17],
	'Y': [381, 16, 1, 17],
	'Z': [398, 14, -1, 15],
	'a': [413, 15, 0, 15],
	'b': [429, 13, -1, 14],
	'c': [443, 13, -1, 13],
	'd': [457, 14, -2, 15],
	'e': [472, 12, -1, 13],
	'f': [485, 12, -1, 12],
	'g': [498, 14, -1, 15],
	'h': [513, 14, -1, 15],
	'i': [528, 3, -1, 5],
	'j': [532, 11, -1, 12],
	'k': [544, 13, -1, 13],
	'l': [558, 11, -1, 11],
	'm': [570, 15, -1, 17],
	'n': [586, 13, -1, 15],
	'o': [600, 14, -1, 15],
	'p': [615, 12, -1, 13],
	'q': [628, 14, -1, 15],
	'r': [643, 14, -1, 13],
	's': [658, 13, -1, 14],
	't': [672, 13, 0, 12],
	'u': [686, 13, -1, 15],
	'v': [700, 15, 0, 14],
	'w': [716, 18, 0, 17],
	'x': [735, 16, 1, 15],
	'y': [752, 15, 1, 14],
	'z': [768, 12, -1, 13],
	'0': [781, 15, -1, 17],
	'1': [797, 6, -5, 13],
	'2': [804, 14, -2, 16],
	'3': [819, 14, -2, 16],
	'4': [834, 16, -1, 17],
	'5': [851, 14, -3, 15],
	'6': [866, 14, -2, 16],
	'7': [881, 14, -2, 16],
	'8': [896, 15, -1, 17],
	'9': [912, 14, -1, 17],
	'&': [927, 17, -1, 17],
	'!': [945, 4, -3, 6],
	'?': [950, 11, -2, 13],
	'-': [962, 7, 0, 7],
	' ': [970, 10, 1, 9],
	'.': [981, 4, -2, 6],
	'\"': [986, 5, 0, 6],
	'\'': [992, 2, 0, 3]
});

