/*

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('font', {
	image: 'font.gif',
	width: 926,
	height: 26,
	'A': [0, 16, 3, 15],
	'B': [17, 17, 4, 16],
	'C': [35, 13, 3, 12],
	'Ç': [49, 1, 1, 29],
	'D': [51, 15, 1, 14],
	'E': [67, 15, 4, 14],
	'F': [83, 14, 3, 13],
	'G': [98, 15, 3, 14],
	'H': [114, 16, 1, 15],
	'I': [131, 12, 3, 11],
	'J': [144, 17, 7, 16],
	'K': [162, 14, 3, 13],
	'L': [177, 15, 3, 14],
	'M': [193, 24, 4, 23],
	'N': [218, 15, 1, 14],
	'O': [234, 11, 0, 10],
	'P': [246, 17, 4, 16],
	'Q': [264, 11, 0, 10],
	'R': [276, 17, 4, 16],
	'S': [294, 11, 1, 10],
	'T': [306, 16, 4, 15],
	'U': [323, 14, 0, 13],
	'V': [338, 17, 4, 16],
	'W': [356, 20, 1, 19],
	'X': [377, 14, 1, 13],
	'Y': [392, 15, 3, 14],
	'Z': [408, 17, 3, 16],
	'a': [426, 12, 3, 11],
	'b': [439, 11, 0, 10],
	'c': [451, 10, 3, 10],
	'ç': [462, 1, 1, 29],
	'd': [464, 13, 3, 12],
	'e': [478, 10, 3, 9],
	'f': [489, 10, 3, 9],
	'g': [500, 10, 0, 9],
	'h': [511, 11, 3, 10],
	'i': [523, 5, 1, 4],
	'j': [529, 11, 7, 10],
	'k': [541, 11, 3, 10],
	'l': [553, 5, 1, 4],
	'm': [559, 16, 1, 15],
	'n': [576, 12, 3, 11],
	'o': [589, 10, 3, 9],
	'p': [600, 11, 3, 10],
	'q': [612, 12, 3, 11],
	'r': [625, 9, 3, 8],
	's': [635, 9, 3, 8],
	't': [645, 9, 3, 8],
	'u': [655, 12, 3, 11],
	'v': [668, 12, 3, 11],
	'w': [681, 14, 3, 14],
	'x': [696, 12, 3, 11],
	'y': [709, 12, 3, 11],
	'z': [722, 10, 0, 9],
	'0': [733, 11, 1, 10],
	'1': [745, 7, 0, 6],
	'2': [753, 11, 1, 10],
	'3': [765, 14, 1, 13],
	'4': [780, 14, 3, 13],
	'5': [795, 14, 3, 13],
	'6': [810, 12, 3, 11],
	'7': [823, 12, 3, 11],
	'8': [836, 14, 3, 13],
	'9': [851, 11, 3, 11],
	'&': [863, 12, 1, 12],
	'!': [876, 4, 0, 4],
	'?': [881, 11, 0, 10],
	'-': [893, 8, 1, 8],
	' ': [902, 7, 1, 6],
	'.': [910, 3, 0, 2],
	'\"': [914, 6, 1, 5],
	'\'': [921, 4, 1, 3]
});
FontJazz.register('tromatic', {
	image: 'font.png',
	width: 935,
	height: 19,
	'A': [0, 14, 3, 11],
	'B': [15, 12, 1, 9],
	'C': [28, 14, 1, 11],
	'D': [43, 12, 1, 9],
	'E': [56, 12, 0, 8],
	'F': [69, 12, 1, 8],
	'G': [82, 15, 1, 12],
	'H': [98, 13, 1, 9],
	'I': [112, 10, 1, 7],
	'J': [123, 13, 1, 10],
	'K': [137, 12, 1, 9],
	'L': [150, 11, 0, 8],
	'M': [162, 15, 1, 11],
	'N': [178, 13, 1, 10],
	'O': [192, 14, 1, 10],
	'P': [207, 13, 1, 9],
	'Q': [221, 14, 1, 11],
	'R': [236, 13, 1, 10],
	'S': [250, 14, 1, 11],
	'T': [265, 15, 1, 11],
	'U': [281, 13, 0, 9],
	'V': [295, 13, 1, 10],
	'W': [309, 15, 1, 12],
	'X': [325, 13, 1, 10],
	'Y': [339, 13, 1, 9],
	'Z': [353, 14, 0, 11],
	'a': [368, 14, 3, 11],
	'b': [383, 12, 1, 9],
	'c': [396, 14, 1, 11],
	'd': [411, 12, 1, 9],
	'e': [424, 12, 0, 8],
	'f': [437, 12, 1, 8],
	'g': [450, 15, 1, 12],
	'h': [466, 13, 1, 9],
	'i': [480, 5, 0, 2],
	'j': [486, 13, 1, 10],
	'k': [500, 12, 1, 9],
	'l': [513, 11, 0, 8],
	'm': [525, 15, 1, 11],
	'n': [541, 13, 1, 10],
	'o': [555, 14, 1, 10],
	'p': [570, 13, 1, 9],
	'q': [584, 14, 1, 11],
	'r': [599, 13, 1, 10],
	's': [613, 14, 1, 11],
	't': [628, 15, 1, 11],
	'u': [644, 13, 0, 9],
	'v': [658, 13, 1, 10],
	'w': [672, 15, 1, 12],
	'x': [688, 13, 1, 10],
	'y': [702, 13, 1, 9],
	'z': [716, 14, 0, 11],
	'0': [731, 12, 1, 9],
	'1': [744, 7, 1, 4],
	'2': [752, 12, 0, 8],
	'3': [765, 13, 1, 9],
	'4': [779, 11, 1, 7],
	'5': [791, 13, 1, 10],
	'6': [805, 12, 1, 9],
	'7': [818, 12, 0, 9],
	'8': [831, 12, 1, 9],
	'9': [844, 12, 0, 8],
	'&': [857, 13, 1, 10],
	'!': [871, 7, 0, 4],
	'?': [879, 11, 0, 8],
	'-': [891, 11, 0, 8],
	' ': [903, 10, 1, 7],
	'.': [914, 5, 0, 3],
	'\"': [920, 8, 1, 5],
	'\'': [929, 5, 0, 2]
});


