/*

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('block', {
	image: 'images/block.png',
	width: 878,
	height: 15,
	'A': [0, 16, 3, 14],
	'B': [17, 14, 1, 12],
	'C': [32, 10, 1, 9],
	'D': [43, 14, 1, 12],
	'E': [58, 11, 1, 10],
	'F': [70, 10, 1, 9],
	'G': [81, 12, 1, 11],
	'H': [94, 13, 1, 12],
	'I': [108, 7, 1, 6],
	'J': [116, 10, 3, 9],
	'K': [127, 14, 1, 12],
	'L': [142, 10, 1, 8],
	'M': [153, 15, 1, 14],
	'N': [169, 14, 1, 13],
	'O': [184, 14, 1, 13],
	'P': [199, 13, 1, 12],
	'Q': [213, 15, 1, 13],
	'R': [229, 13, 1, 12],
	'S': [243, 10, 1, 9],
	'T': [254, 12, 3, 11],
	'U': [267, 13, 1, 12],
	'V': [281, 15, 3, 13],
	'W': [297, 21, 3, 19],
	'X': [319, 15, 3, 13],
	'Y': [335, 15, 3, 14],
	'Z': [351, 10, 1, 9],
	'a': [362, 12, 1, 11],
	'b': [375, 13, 1, 11],
	'c': [389, 9, 1, 8],
	'd': [399, 13, 1, 12],
	'e': [413, 12, 1, 10],
	'f': [426, 8, 1, 7],
	'g': [435, 12, 1, 11],
	'h': [448, 12, 1, 11],
	'i': [461, 6, 1, 5],
	'j': [468, 8, 3, 7],
	'k': [477, 12, 1, 10],
	'l': [490, 6, 1, 5],
	'm': [497, 16, 1, 16],
	'n': [514, 12, 1, 11],
	'o': [527, 13, 1, 11],
	'p': [541, 13, 1, 12],
	'q': [555, 13, 1, 12],
	'r': [569, 9, 1, 8],
	's': [579, 9, 1, 8],
	't': [589, 8, 1, 7],
	'u': [598, 12, 1, 11],
	'v': [611, 13, 3, 12],
	'w': [625, 17, 3, 16],
	'x': [643, 13, 3, 12],
	'y': [657, 13, 3, 11],
	'z': [671, 9, 1, 8],
	'0': [681, 12, 1, 11],
	'1': [694, 9, 1, 8],
	'2': [704, 12, 1, 11],
	'3': [717, 11, 1, 10],
	'4': [729, 12, 1, 11],
	'5': [742, 11, 1, 9],
	'6': [754, 12, 1, 11],
	'7': [767, 10, 1, 9],
	'8': [778, 12, 1, 11],
	'9': [791, 12, 1, 11],
	'-': [804, 7, 1, 6],
	'&': [812, 14, 1, 12],
	'!': [827, 7, 1, 6],
	'?': [835, 11, 1, 10],
	' ': [847, 7, 1, 6],
	'.': [855, 6, 1, 5],
	'\"': [862, 9, 1, 8],
	'\'': [872, 5, 1, 4]
});

