var isFFOnMac = navigator && navigator.userAgent && navigator.userAgent.indexOf("Mac") != -1 && navigator.userAgent.indexOf("Firefox") != -1;

var GetEmbeds = function (Elem, EmbedArray) {
	if (Elem.tagName && Elem.tagName != null && String(Elem.tagName).toLowerCase() == "embed") {
		EmbedArray.push(Elem);
	}
	if (Elem.childNodes && Elem.childNodes != null) {
		for (var i=0; i<Elem.childNodes.length; i++) {
			GetEmbeds(Elem.childNodes[i], EmbedArray);
		}
	}
}

var Modal = {
	html : null,
	confirm : function(options) {
		this.close();//close if open
		this.html = document.createElement("div");
		document.body.appendChild(this.html);
		this.html = $(this.html);
		this.cancelText = options && options.cancelText ? options.cancelText : "Back";
		this.okText = options && options.okText ? options.okText : "Proceed";
		this.html.innerHTML = "\
			<div class='modal-container'>\
				<div class='modal-mask modal-mask-leaving'>" + 
					/*@cc_on 
					"<iframe frameborder='0' src='about:blank'></iframe>" +
					@*/
				"</div>\
				<div class='modal-confirm'>\
					" + options.message + "<br>\
					<br>\
					<input class='modal-cancel-button' type='button' value='" + this.cancelText + "' />\
					<input class='modal-ok-button' type='button' value='" + this.okText + "' />\
				</div>\
			</div>\
		";
		var y = window.pageYOffset || document.documentElement.scrollTop;
		var top = ((document.viewport.getHeight() / 2) - 100 + y);
		var left = ((document.viewport.getWidth() / 2) - 200);
		if (isNaN(top) && isNaN(left)) {//This is true in blackberry
			top = left = 0;
			window.scrollTo(0, 0);
		}
		this.html.select(".modal-confirm").invoke("setStyle", {
			top : top + "px",
			left : left + "px"
		})
		this.html.select(".modal-mask,.modal-mask iframe").invoke("setStyle", {
			height : document.body.offsetHeight + "px",
			width : document.body.offsetWidth + "px"
		})
		this.html.select(".modal-cancel-button").invoke("observe", "click", Modal.close.bind(Modal));
		this.html.select(".modal-ok-button").invoke("observe", "click", function() {
			Modal.close();
			if (options.callback) options.callback();
		});
		
		if (isFFOnMac) {
			var FVs = [];
			GetEmbeds(document.body, FVs);
			for (var i=0; i<FVs.length; i++) {
				FVs[i].style.visibility = "hidden";
			}
		}
		
		if ($("breathevideo")) $("breathevideo").style.visibility = "hidden";
		if ($("paralympicsvideoswf")) $("paralympicsvideoswf").style.visibility = "hidden";
	},
	close : function() {
		if (this.html) {
			this.html.remove();
			this.html = null;
		}
		
		if (isFFOnMac) {
			var FVs = [];
			GetEmbeds(document.body, FVs);
			for(var i=0; i<FVs.length; i++) {
				FVs[i].style.visibility = "";
			}
		}
		if ($("breathevideo")) $("breathevideo").style.visibility = "visible";
		if ($("paralympicsvideoswf")) $("paralympicsvideoswf").style.visibility = "visible";
	},
	resize : function() {
		var y = window.pageYOffset || document.documentElement.scrollTop;
		if(this.html){
			this.html.select(".modal-confirm").invoke("setStyle", {
				top : ((document.viewport.getHeight() / 2) - 100 + y) + "px",
				left : ((document.viewport.getWidth() / 2) - 200) + "px"
			})
			this.html.select(".modal-mask,.modal-mask iframe").invoke("setStyle", {
				height : document.body.offsetHeight + "px",
				width : document.body.offsetWidth + "px"
			})
		}		
	}
}