//smartsite site root: equivalent to ~/
var siteroot = (typeof(fullsiteroot) == "function") && (typeof(sitehost) == "function") ? fullsiteroot().replace(sitehost(), "") : "/";
//the current page, mostly for Google Analytics (fixes virtual directories)
var absolutePath = location.pathname.replace(siteroot, "/").replace(".ssx", "");
//get google-analytics-friendly path name from a fully qualified url
var extractPath = function(url) {return "/" + url.substring(url.indexOf(siteroot) + siteroot.length);};
//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);}
//changes a string to something that can used as a Google Analytics parameter
var toGatString = function(string) {
	var str = string.replace(/^[\w]+\:\/\//, "");
	var offset = str.indexOf("/");
	var path = offset > -1 ? str.substring(offset) : "";
	str = str.substring(0, offset);
	str = str.replace(/\s|\./g, "_").replace(/[^\w_]/gim, "") + path;
	return str;
}
//IE background image cache script
//@cc_on try {document.execCommand("BackgroundImageCache", false, true);} catch(e) {}

//google analytics: pass relative url + keyword
var keyword, lastGaValue;
var googleanalytics = function(keyword) {
	var id = normalizePath(absolutePath + "/" + keyword + "/");
	if (typeof(pageTracker) != "undefined") {
		if (id != lastGaValue) pageTracker._trackPageview(id);
		lastGaValue = id;//safeguard against double calls
	}
	else setTimeout(function() {googleanalytics(keyword)}, 100);
}

var ignoreGlobalGaTracker = false;
var overwriteGlobalTracker = false;

var callFromFlashLeaving = function() {};
var callFromFlashPopup = function() {};

Event.observe(window, "load", function() {
	//@cc_on document.documentElement.style.display = "block";//this is here to prevent people from breaking the page by clicking on things too early in IE6. See also top of standard layout
	//generic
	var createPopup = function(urlFn, titleFn, pluginFn, creationFn, bindFn) {
		return function(element) {
			var popup = creationFn(function() {
				var popup = document.createElement("div");
				popup = $(popup);
				popup.innerHTML = 
					"<div class='hidden modal-container'>\
						<div class='modal-mask'>" +
							//@cc_on "<iframe frameborder='0' src='javascript:document.write(\"<html><body></body></html>\");document.close();'></iframe>" +
						"</div>\
						<div class='modal-body'>\
							<h1><a class='modal-closer' href='javascript:;'>CLOSE</a><span class='modal-title'></span></h1>\
							<div class='modal-content'></div>\
						</div>\
					</div>"
				;
				document.body.appendChild(popup);
				return popup;
			})
			var container = popup.down("div.modal-container");
			var title = popup.down("span.modal-title");
			var body = popup.down("div.modal-content");
			var y = window.pageYOffset || document.documentElement.scrollTop;

			bindFn(element, function() {
				var url = urlFn(element)
				new Ajax.Updater(body, url, {method:"GET", evalScripts : true, onComplete : function() {
					title.innerHTML = titleFn(element) + "&nbsp;"; //@cc_on setTimeout(function() {title.innerHTML = title.innerHTML;},10)//force redraw in IE7
					container.removeClassName("hidden");
					popup.select("div.modal-mask,div.modal-mask iframe").invoke("setStyle", {
						height : document.documentElement.scrollHeight + document.documentElement.scrollTop + 40 + "px",
						width : document.body.offsetWidth + "px"
					});
					var scroll = document.body.scrollTop || document.documentElement.scrollTop;
					var centered = ((document.viewport.getHeight() / 2) - (body.offsetHeight / 2));
					var width;
					popup.select("div.klick-leaving-container").each(function(e){
						width = e.offsetWidth + 40;
					})
					popup.select("div.modal-body").invoke("setStyle", {
						top : (centered < 0 ? 20 : centered) + scroll + "px",
						left : ((document.viewport.getWidth() / 2) - (width / 2)) + "px",
						width : width + "px"
					});
					$$("a.klick-popup-closer,button.klick-popup-closer").each(function(el){
						el.observe("click", function(e){
							e.stop();
							$(this).up("div.modal-container").addClassName("hidden");
						});
					})
					pluginFn(element);
				}});
				popup.down("a.modal-closer").observe("click", function() {
					container.addClassName("hidden");
				});
			})
		}
	}
	var javascriptVoid = /javascript:void\('(.*)'\)/;
	$$("a.klick-popup").each(createPopup(
		function(element) {
			//this allows wrapping the url in a javascript:void() to prevent the function from running if the user clicks on it too early
			return !javascriptVoid.test(element.href) ? element.href : element.href.replace(javascriptVoid, function(match, token) {
				return token;
			});
		},
		function(element) {return element.title;},
		function(element) {return "";},
		function(fn) {return fn();},
		function(element, callback) {
			element.observe("click", function(e) {
				e.stop();
				callback();
			})
		}
	))

	$$("a[href^='http']").findAll(function(el) {return !$(el).hasClassName("nowarn")}).each(createPopup(
		function(element) {return normalizePath(siteroot + "/elements/widgets/leaving/");},
		function(element) {return "You are leaving...";},
		function(element) {
			$$("a.klick-confirm-leaving,button.klick-confirm-leaving").each(function(link) {
				link.observe("click", function(e) {
					e.stop();
					$(this).up("div.modal-container").addClassName("hidden");
					var newWindow = window.open(element.href, '_blank');
					newWindow.focus();
					pageTracker._trackPageview("/outboundlink/" + toGatString(element.href));
				})
			})
		},
		function(fn) {return fn();},
		function(element, callback) {
			element.observe("click", function(e) {
				e.stop();
				callback();
			})
		}
	))
	
	$$("a.rozeremlink").each(function(el) {
		Event.observe(el, "click", function(e) {
			Event.stop(e);
			pageTracker._link(el.href);
		});
		Element.addClassName(el, "tracked");
	});
	
	var cache = {};
	callFromFlashLeaving = function(outsidelink) {
		var url = normalizePath(siteroot + "/elements/widgets/leaving/")
		createPopup(
			function(element) {return url},
			function(element) {return "You are leaving..."},
			function(element) {
				$$(".klick-confirm-leaving").each(function(link) {
					link.observe("click", function(e) {
						e.stop();
						var newWindow = window.open(outsidelink, '_blank');
						newWindow.focus();
					})
				})
			},
			function(fn) {
				if (!cache[url]) {
					cache[url] = fn();
				}
				return cache[url];
			},
			function(element, fn) {fn()}
		)(null);
	}

	callFromFlashPopup = function(url, title) {
		var url = normalizePath(siteroot + url)
		createPopup(
			function(element) {return url},
			function(element) {return title},
			function(element) {return ""},
			function(fn) {
				if (!cache[url]) {
					cache[url] = fn();
				}
				return cache[url];
			},
			function(element, fn) {fn()}
		)(null);
	}
});

var selecttab = function(target) {
	els = document.getElementsByTagName('ul');
	for(i=1;i<els.length;i++){
		if (els[i].id == target) els[i].style.display = 'block';
		else els[i].style.display = 'none';
	}
	el = document.getElementsByClassName('selected');
	for(i=1;i<el.length;i++) {
		el[i].removeClassName('selected');
	}
	if(el != ''){
		var tabname = target + 'tab';
		$(tabname).addClassName('selected');
	}
};

var openform = function(el) {
	if($('trialincluded').checked) $(el).style.display = 'block';
	else $(el).style.display = 'none';
}

var togglefaq = function(obj){
	if (Element.hasClassName(obj,"expanded")){
		Element.removeClassName(obj,"expanded");
		Element.addClassName(obj,"hidden");		
	} else if (Element.hasClassName(obj,"hidden")){
		Element.removeClassName(obj,"hidden");
		Element.addClassName(obj,"expanded");
	}
	if (obj.previous(".question")) obj.previous(".question").toggleClassName("selectedquestion");
}

var back = function() {location.href = siteroot + lang + "/tools_for_sleep/sleep_quality_score/";}
var whatrisks = function() {callFromFlashPopup("/en/about_sleep/lack_of_sleep/_risk", "What Do These Risks Mean?");}
var learn_day = learn_night = learn_copd = learn_elderly = function() {location.href = siteroot + lang + "/about_rozerem/";}
var free = function() {
	pageTracker._link($("vouchersite").getAttribute("content")+ "?token=" + sessionToken);
}
var quality = function() {location.href = siteroot + lang + "/tools_for_sleep/sleep_quality_score/";}
var doctor = function() {location.href = siteroot + lang + "/talk_to_your_doctor/";}
var support = function() {pageTracker._link($("ecrmsite").getAttribute("content") + "/en/about_program/?token=" + sessionToken);}
// learn more popup window for sleep quality score section flash
var learnmoretitle = "<img src='"+siteroot+"local/images/score/questionmark.gif' style='float:left;margin-right:10px;'> Did You Know?";
var learnMore1 = function() {
	callFromFlashPopup("/en/tools_for_sleep/sleep_quality_score/_learnmore1/", learnmoretitle);
	googleanalytics("SQS1/answer/DYK/");
}
var learnMore2 = function() {
	callFromFlashPopup("/en/tools_for_sleep/sleep_quality_score/_learnmore2/", learnmoretitle);
	googleanalytics("SQS2/answer/DYK/");
}
var learnMore3 = function() {
	callFromFlashPopup("/en/tools_for_sleep/sleep_quality_score/_learnmore3/", learnmoretitle);
	googleanalytics("SQS3/answer/DYK/");
}
var learnMore4 = function() {
	callFromFlashPopup("/en/tools_for_sleep/sleep_quality_score/_learnmore4/", learnmoretitle);
	googleanalytics("SQS4/answer/DYK/");
}
var learnMore5 = function() {
	callFromFlashPopup("/en/tools_for_sleep/sleep_quality_score/_learnmore5/", learnmoretitle);
	googleanalytics("SQS5/answer/DYK/");
}
var learnMore6 = function() {
	callFromFlashPopup("/en/tools_for_sleep/sleep_quality_score/_learnmore6/", learnmoretitle);
	googleanalytics("SQS6/answer/DYK/");
}
var learnMore7 = function() {
	callFromFlashPopup("/en/tools_for_sleep/sleep_quality_score/_learnmore7/", learnmoretitle);
	googleanalytics("SQS7/answer/DYK/");
}

submitAjaxForm = function(form, targetElement)
{
	try {document.body.style.cursor='progress';}
	catch (e) {document.body.style.cursor='wait';}

	new Ajax.Updater(targetElement, form.action,
		{
			onComplete:function(data)
			{
				if (document.body != null)
					document.body.style.cursor = 'default';
			},
			parameters:Form.serialize(form),
			method:"POST",
			asynchronous:true,
			evalScripts:true
		}
	);
}

var _hcplink = function()
{
	var href = "http://hcp.rozerem.com/";
	pageTracker._trackPageview("/outboundlink/" + toGatString(href));
	var newWindow = window.open(href, '_blank');
	newWindow.focus();
}

var _takedalink = function()
{
	var href = "http://www.tpna.com/";
	pageTracker._trackPageview("/outboundlink/" + toGatString(href));
	var newWindow = window.open(href, '_blank');
	newWindow.focus();
}

var gotoRef = function() {
	googleanalytics('references')
	callFromFlashPopup('/en/tools_for_sleep/sleep_quality_score/references/', 'References for Sleep Quality Score')
}