//smartsite site root: equivalent to ~/
var siteroot = (typeof(fullsiteroot) == "function") && (typeof(sitehost) == "function") ? fullsiteroot().replace(sitehost(), "") : "/";
//language
var lang = location.href.indexOf("/en/") > - 1 ? "en" : "fr";
//fixes double slash in URLs
var normalizePath = function(string) {return string.replace(/(\/+)|\\+/g, "/");}
//escapes <, > & and " into corresponding html entities
var escapeHTML = function(string) {return string.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");}
//rounds a number to two decimals places. Returns a string
var toCurrency = function(number) {return number.toFixed(2);}
//IE background image cache script
//@cc_on document.execCommand("BackgroundImageCache", false, true);

// xDocSize r1, Copyright 2007 Michael Foster (Cross-Browser.com)
// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL
function xDocSize(){
var maskie6 = 0;
//is ie6
if (typeof document.body.style.maxHeight == "undefined") maskie6 = 22;

var b=document.body, e=document.documentElement;var esw=0, eow=0, bsw=0, bow=0, esh=0, eoh=0, bsh=0, boh=0;
if (e) {esw = 0;eow = e.offsetWidth;esh = e.scrollHeight;eoh = e.offsetHeight;}
if (b) {bsw = 0;bow = b.offsetWidth;bsh = b.scrollHeight;boh = b.offsetHeight;}
var w = Math.max(esw,eow,bsw,bow) - maskie6;
var minw = $("layout").getWidth();
if(w<minw) w=minw;
return {w:w,h:Math.max(esh,eoh,bsh,boh)};
}

//Modal mask
/* modal mask */
var Modal = {
	openMask : function(options) {
		this.close();//close if open	
		var hasMask, maskStyle;
		if (options){
			hasMask = options.hasMask;
		}		
		maskStyle = (hasMask) ? "modalDark" : "modalLight";
		var modalcontainer = $("modalcontainer");
		var modalmask = $("modalmask")
		if (modalcontainer.hasClassName("hidden")) modalcontainer.removeClassName("hidden");		
		modalcontainer.setStyle({top : "0", left: "0"})
		var pageDimensions = xDocSize();
		modalmask.className = "modalmask";
		modalmask.addClassName(maskStyle);
		modalmask.setStyle ({ 	
			height : pageDimensions["h"] + "px",
			width : pageDimensions["w"] + "px"
		})
	},
	close : function() {
		var modalcontainer = $("modalcontainer");
		if (!modalcontainer.hasClassName("hidden")) modalcontainer.addClassName("hidden");
	},
	resizeHandler : function(){
		var modalcontainer = $("modalcontainer");
		var modalmask = $("modalmask")
		if (!modalcontainer.hasClassName("hidden")){
			Modal.close();
			Modal.openMask();
		}
	},
	open :function(options){		
		var width, url, contentEl, hasMask;
		var modalbody = $("modalbody");
		if (options){
			width = options.width || 550;
			url = options.url || "";	
			contentEl = options.contentEl || "";			
			hasMask = options.hasMask;
		}
		
		//safari doesn't like document.documentElement.scrollTop & IE7 doesn't like window.pageYOffset
		var safariOffset = 0;
		if (document.documentElement.scrollTop==0 && !isNaN(window.pageYOffset)) safariOffset = 0 + window.pageYOffset;
		else safariOffset = 0 + document.documentElement.scrollTop;

		
		Modal.openMask({hasMask: hasMask});
		modalbody.setStyle({
			width: width + "px",
			top:(100 + safariOffset) + "px",
			left:(document.body.offsetWidth / 2) - (width / 2) + "px"
		});	
		
		
		
		if (url != ""){
			new Ajax.Updater("modalcontent",options.url)	
		} 
		else if (contentEl != ""){
			$("modalcontent").innerHTML = $(contentEl).innerHTML;
			//insanely crappy hack, to appease IE6 and it's refusal to re-render <img>s
			setTimeout(function(){
				$("modalcontent").innerHTML = $("modalcontent").innerHTML
			}, 50);
		}
	}
}
Event.observe (window,"resize",Modal.resizeHandler);

var FaqView = function (ShortName) {
	new Ajax.Request(siteroot + lang + "/what_is_osteoporosis/faq/faqview/" + ShortName, { method:"get" });
}

Event.observe(window,"load",function(){									 
	//modal closer
	if ($("modalcloser"))Event.observe ("modalcloser","click",Modal.close);
	
	//faq
	if($('faq')) {
		var faqelements = $('faq').select('.qfaq');
		var faqanswers  = $('faq').select('.afaq');
		faqelements.invoke('observe','click',function(ev){
			el = $(this);
			if (el.hasClassName('on')) {
				el.removeClassName('on');
				new Effect.BlindUp(el.next('.afaq'), {duration:.2 });
			} else {
				el.addClassName('on');
				new Effect.BlindDown(el.next('.afaq'), {duration:.5 });
				FaqView(el.id);
				if (typeof(pageTracker) != "undefined") pageTracker._trackPageview(relativeUrl + el.getAttribute("ganame") + "/");
			}
			ev.stop();
		})
		
		var qhash = location.hash.replace('#','');
		if ($(qhash)) {
			$(qhash).next('.afaq').show();
			$(qhash).addClassName('on');
		}
	}
	
	if($('faqnav')) {
		$('faqcollapse').observe('click',function(ev){
			faqelements.invoke('removeClassName','on');
			faqanswers.invoke('hide');
			ev.stop();
		})
		
		$('faqexpand').observe('click',function(ev){
			faqelements.invoke('addClassName','on');
			faqanswers.invoke('show');
			ev.stop();
			faqelements.each(function (el) {
						FaqView(el.id);
					});
			if (typeof(pageTracker) != "undefined") pageTracker._trackPageview(relativeUrl + "expand_all/");
		})
	}
	
	//external links
	if($('layout')){
		$('layout').select('a[target="_blank"]').invoke('observe','click',function(ev){
			if(this.href.indexOf(window.location.hostname) == -1 && window.location.href.indexOf('/email/') == -1 ){
				var modalmsg = new Element('div',{'id':'leavemodal','class':'hidden'}).update('You are leaving healthandbone.ca')
				Event.stop(ev);
				var txtmsg = (lang == 'en' ? 'YOU ARE NOW LEAVING <a href="http://www.healthandbone.ca/en/">WWW.HEALTHANDBONE.CA</a> WEB SITE.<br><br>Links to other sites are provided as a convenience to the viewer. Amgen Canada accepts no responsibility for the content of linked sites.' : 'VOUS ETES EN TRAIN DE QUITTER LE SITE WEB <a href="http://www.healthandbone.ca/fr/">WWW.HEALTHANDBONE.CA</a>.<br><br>Les liens vers d&#39;autres sites sont offerts aux utilisateurs à titre de service uniquement.<br><br>Amgen Canada n&#39;assume aucune responsabilité quant au contenu de ces sites.');
				var txtok = (lang == 'en' ? 'Proceed' : 'Avancer');
				var txtcancel = (lang == 'en' ? 'Cancel' : 'Annuler');
				var modalmsg = new Element('div',{'id':'leavemodal','class':'hidden'});
				var modaltxt = new Element('div').update(txtmsg+'<br><br>');
				modaltxt.addClassName('leavemodal');
				var proceedbtn = new Element('button',{'onclick':'openLink("'+this.href+'","")'}).update('<span><span>'+txtok+'</span></span>');
				var cancelbtn = new Element('button',{'onclick':'Modal.close()'}).update('<span><span>'+txtcancel+'</span></span>');
				proceedbtn.addClassName('button');
				cancelbtn.addClassName('button');
				$('layout').insert(modalmsg);
				$('leavemodal').update('');
				$('leavemodal').insert(modaltxt);
				$('leavemodal').down().insert(proceedbtn);
				$('leavemodal').down().insert(cancelbtn);
				Modal.open({contentEl: 'leavemodal'});
			}
		})
	}
	
	//flash
	if($('flash')){
		var flashvars = {};
		var params = {wmode:"transparent"};
		var attributes = {};
		var flashfile = (lang == 'en' ? 'FastFacts_418x102_EN.swf' : 'FastFacts_418x102_FR.swf');
		swfobject.embedSWF( siteroot + "local/flash/" + flashfile, "flash", "418", "102", "8.0.0","", flashvars, params, attributes);
		
	}
	
	//laguage link in primary menu
	if($('toggleLang')) {
		$('toggleLang').observe('click',function(ev){
			ev.stop();
			if (lang == 'en')
				location.href = location.href.replace('/en/','/fr/');
			else
				location.href = location.href.replace('/fr/','/en/');
		})
		
	}
	
	//bone matters page nav stuff
	if ($('nlpagenav')) {
		var cPage = 1;	//current page
		var cElement = "page" + cPage.toString();
		var nPage;	//next page
		var nElement;
		var pageTop = $('articlepagetop');
		var pageBottom = $('articlepagebottom');
		$('nextpage').observe('click',function(ev){
			Event.stop(ev);
			cPage++;
			nPage = cPage + 1;
			pageTop.update(cPage);
			pageBottom.update(cPage);
			$(cElement).toggleClassName('hidden');
			cElement = "page" + cPage.toString();
			nElement = "page" + nPage.toString();
			$(cElement).toggleClassName('hidden');
			scroll(0,0);
			$('prevpage').removeClassName('hidden');
			if(!$(nElement)){ 
				$('nextpage').addClassName('hidden');
				$('back2top').removeClassName('hidden');
			}
			
			if (typeof(pageTracker) != "undefined" && pageTracker != null) {
				var pn;
				if (siteroot != null && siteroot.length > 1) pn = "/" + window.location.pathname.replace(new RegExp(siteroot, "gi"), "");
				else pn = window.location.pathname;
				pn = pn.substr(0, pn.lastIndexOf("/") + 1) + cPage + "/";
				pageTracker._trackPageview(pn); 
			}
		});
		
		$('prevpage').observe('click',function(ev){
			Event.stop(ev);
			cPage--;
			pageTop.update(cPage);
			pageBottom.update(cPage);
			$(cElement).toggleClassName('hidden');
			cElement = "page" + cPage.toString();
			$(cElement).toggleClassName('hidden');
			scroll(0,0);
			$('nextpage').removeClassName('hidden');
			$('back2top').addClassName('hidden');
			if(cPage==1) $('prevpage').addClassName('hidden');
			
			if (typeof(pageTracker) != "undefined" && pageTracker != null) {
				var pn;
				if (siteroot != null && siteroot.length > 1) pn = "/" + window.location.pathname.replace(new RegExp(siteroot, "gi"), "");
				else pn = window.location.pathname;
				pn = pn.substr(0, pn.lastIndexOf("/") + 1) + cPage + "/";
				pageTracker._trackPageview(pn); 
			}
		});
		
		$('back2top').observe('click',function(ev){
			Event.stop(ev);
			$(cElement).toggleClassName('hidden');
			cPage = 1;
			cElement = "page1";
			$(cElement).toggleClassName('hidden');
			scroll(0,0);
			$('nextpage').removeClassName('hidden');
			$('back2top').addClassName('hidden');
			$('prevpage').addClassName('hidden');
			pageTop.update("1");
			pageBottom.update("1");
		});
		
	}
	
})

var openLink = function(href) {
	Modal.close();
	window.open(href);
	
	if (typeof(pageTracker) != "undefined") pageTracker._trackEvent("Exit Links", "Exit", href);
}


var Behaviour = {
	//param: Object sheet = {cssRule : callback}
	//	where cssRule is a string and callback is a function that passes a DOM element as its parameter and returns null, i.e. void callback(DOMElement element)
	register : function(sheet) {Behaviour.list.push(sheet);},
	//call apply after ajaxing stuff if you want behaviour rules to apply to ajaxed elements
	apply : function() {
		for (h = 0; sheet = Behaviour.list[h]; h++) {
			for (selector in sheet) {
				list = $$(selector);
				if (!list) continue;
				for (i = 0; element = list[i]; i++) sheet[selector](element);
			}
		}
	},
	//private
	list : new Array()
}
//behaviours
Event.observe(window, "load", function() {
	Behaviour.register({
		"a" : function (element) {
			if (String(element.href).search(/.*\.(pdf|doc|xls)$/gi) >= 0) {
				Event.observe(element, "click", function () {
							new Ajax.Request(siteroot + "trackfiledownload?href=" + escape(element.href), { method:"get" });
							return true;
						});
			}
		}
	});
	Behaviour.apply();
});

var openModal = function(id,w){
	Modal.open({contentEl: id, width:w});
}
