/*! NV Fonts v2.0 <http://nvinteractive.co.nz>
	Copyright (c) NV Interactive
	
	References:
		swfobject.js
		utilities.2.0.js
*/

var fontBasePath = "nvfonts/";
var nvfontsEnabled = true;
var nvfontsUseDomLoad = false;

var fonts = new Array(
{
 	selector: "#latest_news h3, .quote-form h3",
	skip: true // Use to override flash replace
	}
,
{
 	selector: ".content_phone_number",
	css: "div {font-family: __standard; font-size: 30px; color:#ffffff; letter-spacing: -1px; leading: 0px; text-align: right;} strong{font-family: __standard; font-size: 28px; color:#880202; display: inline; letter-spacing: -1px; leading: 0px; text-align: right;}" ,
	fontFile: "myriad.bold.swf",
	textThickness: 50,
	textThickness: 0,
	skip: false,
	defaultInteraction: true
	}
,
{
 	selector: ".content_welcome_note",
	css: "div {font-family: __standard; font-size: 36px; color:#ffffff; letter-spacing: -1px; leading: 0px;} strong{font-family: __standard; font-size: 36px; color:#e4b713; letter-spacing: -1px; leading: 0px;}" ,
	fontFile: "myriad.bold.swf",
	textThickness: 50,
	textThickness: 0,
	skip: false,
	defaultInteraction: true
	}
,
{
 	selector: "#content_welcome_note h2, #content_our_services h2",
	css: "div {font-family: __standard; font-size: 20px; color:#ffffff; letter-spacing: 0px; leading: 0px;}" ,
	fontFile: "myriad.bold.swf",
	textThickness: 50,
	textThickness: 0,
	skip: false,
	defaultInteraction: true
	}
,
{
 	selector: "#content_our_services h1",
	css: "div {font-family: __standard; font-size: 36px; color:#ffffff; letter-spacing: -1px; leading: -10px;}",
	fontFile: "myriad.bold.swf",
	textThickness: 50,
	textThickness: 0,
	skip: false,
	defaultInteraction: true
	}
,
{
 	selector: "h1",
	css: "div {font-family: __standard; font-size: 36px; color:#880202; letter-spacing: -1px; leading: 0px;} strong{font-family: __standard; font-size: 36px; color:#E50404; letter-spacing: -1px; leading: -10px;}" ,
	fontFile: "myriad.bold.swf",
	textThickness: 50,
	textThickness: 0,
	skip: false,
	defaultInteraction: true
	}
,	
{
 	selector: "h2",
	css: "div {font-family: __standard; font-size: 20px; color:#E50404; letter-spacing: 0px; leading: 0px;}",
	fontFile: "myriad.bold.swf",
	textThickness: 50}	

,	
{
 	selector: "#sub_menu_container h3",
	css: "div {font-family: __standard;  font-size: 18px; color: #E50404; letter-spacing: 0px; leading: 0px;}",
	fontFile: "myriad.bold.swf",
	textThickness: 50}
,	
{
 	selector: "h3",
	css: "div {font-family: __standard; font-size: 16px; color: #E50404; letter-spacing: 0px; leading: 0px;}",
	fontFile: "myriad.swf",
	textThickness: 50}
	
	
);

nvfonts = function(){

	var fontFlashObjs;
	var checkFlashBlockerInterval;
	
	/* Hide Font html elements until we process them after domloaded 
	if(swfobject.getFlashPlayerVersion().major >= flashVersion && fonts.length > 0){
		document.write('<style type="text/css">');
		for(var g=0; g < fonts.length; g++)
			document.write(fonts[g].selector + " {visibility: hidden;} ");
		document.write('</style>');
	}*/
	
	
	/* ============ */
	/* Public Methods */
	/* ============ */
	function addFont(fontObj){
		if(swfobject.getFlashPlayerVersion().major < flashVersion)return;
		fonts.unshift(fontObj);
		document.write('<style type="text/css">');
		document.write(fontObj.selector + " {visibility: hidden;}");
		document.write('</style>');
	}
	
	
	function flashCallback(flashId){
		
		Debug.addLine("nvfonts.js", "flashCallback", flashId);
		
		clearInterval(checkFlashBlockerInterval);
		var flashObj = document.getElementById(flashId);
		
		if(flashObj.parentNode.isPreloader){
			render(fontFlashObjs[flashObj.parentNode.id].fontObjs);
			flashObj.parentNode.parentNode.removeChild(flashObj.parentNode);		
			return;
		}
	
		flashObj.init();
		
		if(flashObj.defaultInteraction){
			flashObj.onmouseover = function(){this.mouseover();}
			flashObj.onmouseout = function(){this.mouseout();}
		}
	}
	
	/* ============ */
	/* Private Methods */
	/* ============ */
	
	function init(){

		//fontFlashObjs = new Object();

		Debug.addLine("nvfonts.js", "init", fonts.length);
		//Debug.addLine("heading_replace.js", "initHeadingReplace", navigator.platform);

		for(var j=0; j<fonts.length; j++){
			
			var font = fonts[j];
	
			font.cssOver = 				font.cssOver == undefined ? font.css : font.cssOver;
			font.textThickness = 		font.textThickness == undefined ? 0 : font.textThickness;
			font.textSharpness = 		font.textSharpness == undefined ? 0 : font.textSharpness;
			font.skip = 				font.skip == undefined ? false : font.skip;
			font.defaultInteraction = 	font.defaultInteraction == undefined ? true : font.defaultInteraction;
			font.wmode = 				font.wmode == undefined ? "transparent" : font.wmode;
			
			var selectors = font.selector.split(",");

			Debug.addLine("nvfonts.js", "init", selectors);

      for(var s = 0; s<selectors.length; s++){
				var selector = selectors[s].replace(/^[ \t]+|[ \t]+$/, "");
				var els = getElementsBySelector(selector);
				for(var i=0; i<els.length; i++){
					var el = els[i];
					processFontObj(el, font);
				}
			}
		}
	
		preload();
		//renderFontFlash();
		
		if(navigator.userAgent.toLowerCase().indexOf("firefox") > -1){
			checkFlashBlockerInterval = setInterval(checkFlashBlocker, 100);
		}
	}
	
	
	function checkFlashBlocker(){
		
		Debug.addLine("nvfonts.js", "checkFlashBlocker", fontFlashObjs);
		
		if(fontFlashObjs == undefined){
			clearInterval(checkFlashBlockerInterval);
		}
		
		for(var i in fontFlashObjs){
			var preloaderEl = document.getElementById(i);
	
			if(preloaderEl.firstChild.tagName == "DIV"){
				preloaderEl.parentNode.removeChild(preloaderEl);
				restoreFontHtml();
				clearInterval(checkFlashBlockerInterval);
			}
		}
	}
	
	function restoreFontHtml(){
		for(var i=0; i<fonts.length; i++){
			els = getElementsBySelector(fonts[i].selector);
			for(var j=0; j<els.length; j++){
				els[j].style.visibility = "visible";
			}
		}
	}
	
	function render(fontObjs){
	
		for(var i=0; i<fontObjs.length;i++){
			var fontFlashObj = fontObjs[i];
			var el = fontFlashObj.el;
			var fontFile = fontBasePath + fontFlashObj.fontFile;
			var width = fontFlashObj.width;
			var height = fontFlashObj.height;
			var pars = fontFlashObj.pars;
			var flashObj = writeFlash(el, fontFile, width, height, pars);
			fontFlashObj.id = flashObj.id;
			flashObj.defaultInteraction = fontFlashObj.defaultInteraction;
		}
		
	}
	
	/* ================================ */
	
	function preload(){
		

		
		for(var i in fontFlashObjs){

			var fontFile = fontBasePath + fontFlashObjs[i].fontFile;
			
			var el = document.createElement("div");
			
			el.id = i;
			with(el.style){
				position = "fixed";
				top = "1px";
				left = "1px";
			}
			document.getElementsByTagName("body")[0].appendChild(el);
			var pars = { wmode: "window" };
			var preLoadObj = writeFlash(el, fontFile, 1, 1, pars, {isPreloader: true});
		}
	}
	
		
	/* ================================= */
	
	function processFontObj(el, font){
	
		if(el.skip)return;
		if(font.skip) {
			el.skip = "skip";
			el.style.visibility = "visible";
			return
		}
		
		el.skip = "skip"; 
		if(el.tagName == "A"){
			link = el.href;
		}else if(el.parentNode.tagName == "A") {
			link = el.parentNode.href;
		}else{
			link = "";
		}
		
		
		//Default Offset widths, these include padding.
		var height = el.offsetHeight< 0 ? 0 : el.offsetHeight;
		var width = el.offsetWidth < 0 ? 0 : el.offsetWidth;
		
		//Allow for padding
		if(window.getComputedStyle){ // Firefox etc
			width = window.getComputedStyle(el, null).getPropertyValue("width");
			height = window.getComputedStyle(el, null).getPropertyValue("height");
			
			width = width != "auto" ? width.substr(0, width.length - 2) : width;
			height = height != "auto" ? height.substr(0, height.length - 2) : height;
		
		}else if(el.currentStyle){ // IE
			var pl;
			var pr;
			var pt;
			var pb;
			pl = el.currentStyle.paddingLeft;
			pr = el.currentStyle.paddingRight;
			pt = el.currentStyle.paddingTop;
			pb = el.currentStyle.paddingBottom;
			
			pl = pl.substr(0, pl.length - 2);
			pr = pr.substr(0, pr.length - 2);
			pt = pt.substr(0, pt.length - 2);
			pb = pb.substr(0, pb.length - 2);
			
			height = height - pt - pb ;
			width = width - pl - pr;
			
			height = height < 0 ? 0 : height;
			width = width < 0 ? 0 : width;
		}
			  
		//Fix Firefox rendering bug, holds the element open
		var h = height.toString().indexOf("%")>-1 || height.toString() == "auto" ?height:height+"px";
		el.style.height = h;
	
		//Pull the text out of the node
		var content = "<div>" + getInnerHtml(el); + "</div>";
		
		var flashVars = "content=" + encodeURIComponent(content) +
			"&css=" +			escape(font.css) +
			"&link=" + 			encodeURIComponent(link) +
			"&css_over=" + 		escape(font.cssOver) +
			"&aa_thickness=" + 	font.textThickness +
			"&aa_sharpness=" + 	font.textSharpness;
		
		var pars = {
			flashvars: 			flashVars,
			wmode: 				font.wmode
			};
		
		var fontFlashObj = {
			el:					el,
			width:				width,
			height:				height,
			fontFile:			font.fontFile,
			defaultInteraction:	font.defaultInteraction,
			pars:				pars
			};
			
		
		//Debug.addLine("heading_replace.js", "processFontObj", flashVars);
				
		//fontFlashObjs.push(fontFlashObj);
		var fontFileId = font.fontFile.replace(".", "_");
		if(fontFlashObjs == undefined){
			fontFlashObjs = new Object();
		}
		if(fontFlashObjs[fontFileId]==undefined)fontFlashObjs[fontFileId] = new Object({fontFile: font.fontFile, fontObjs: []});
		fontFlashObjs[fontFileId].fontObjs.push(fontFlashObj);
		
	}
	
	return {
	/* Public API
	*/
	init: init,
	addFont: addFont,
	flashCallback: flashCallback
	}
	
}();

function nvfontsFlashCallback(flashid){
	Debug.addLine("nvfonts.js", "nvfontsFlashCallback", flashid);
	nvfonts.flashCallback(flashid);
}

function nvfontsStart(){
	if(!nvfontsUseDomLoad){
		EventUtils.addEventListener(window, "load", nvfonts.init);
	}else{
		nvfonts.init();
	}
}

swfobject.addDomLoadEvent(nvfontsStart);