

//Momentum functions to show or hide SIFR
function hideSIFR(){
    var embeds=document.getElementsByTagName("h1");

    for(var mi=0;mi<embeds.length;mi++){
        if(embeds[mi].className == 'sIFR-replaced'){
            embeds[mi].style.display = "none";
            embeds[mi].style.visibility = "hidden";
        }
    }
    var embeds=document.getElementsByTagName("h3");

    for(var mi=0;mi<embeds.length;mi++){
        if(embeds[mi].className == 'sIFR-replaced'){
            embeds[mi].style.display = "none";
            embeds[mi].style.visibility = "hidden";
        }
    }
}

function showSIFR(){
    var embeds=document.getElementsByTagName("h1");
    for(var mi=0;mi<embeds.length;mi++){
        if(embeds[mi].className == 'sIFR-replaced'){
            embeds[mi].style.display = "block";
            embeds[mi].style.visibility = "visible";
        }
    }
    var embeds=document.getElementsByTagName("h3");
    for(var mi=0;mi<embeds.length;mi++){
        if(embeds[mi].className == 'sIFR-replaced'){
            embeds[mi].style.display = "block";
            embeds[mi].style.visibility = "visible";
        }
    }
}




var ibox = {
	indicator_img_path : "./_common/graphics/indicator.gif",
	indicator_img_html : "",
	loadCancelled : false,
	ibox_w_height : 0,
	setIboxOpacity : "",
	http : "",
	init : function() {
		ibox.indicator_img_html = "<img id=\"ibox_indicator\" src=\"" + ibox.indicator_img_path + "\" alt=\"Loading Indicator Image\" width=\"128\" height\"128px\"/><p>Please wait, loading</p><p><a href=\"javascript:void(null);\">Cancel Load</a></p>"; // don't remove the name
		ibox.http = ibox.createRequestObject();
		ibox.createIbox(document.getElementsByTagName("body")[0]); //create our ibox
		var docRoot = document.getElementsByTagName("a");
		var ibAttr = "rel"; 	// our attribute identifier for our iBox elements
		var e;
		for (var i = 0; i < docRoot.length - 1; i++) {
			e = docRoot[i];
			if(e.getAttribute(ibAttr)) {
				var t = e.getAttribute(ibAttr);
				if((t.indexOf("ibox") != -1)  ||  t.toLowerCase() == "ibox") // check if this element is an iBox element
					e.onclick = function() { // rather assign an onclick event
						var t = this.getAttribute(ibAttr);
						var params = ibox.parseQuery(t.substr(5,999));
						var url = this.href;
						if(this.target != "") {url = this.target} 
						var title = this.title;
						ibox.showBG();
						ibox.showIbox(url,title,params); // show ibox
						window.onscroll = ibox.maintPos;
						window.onresize = ibox.maintPos;
						return false;
					};
			}
		}
	},
	createIbox : function(elem) { // a trick on just creating an ibox wrapper then doing an innerHTML on our root ibox element
		var strHTML =	"<div id=\"ibox_w\" style=\"display:none;\"></div>";
		strHTML +=	"<div id=\"ibox_progress\" style=\"display:none;\">";
		strHTML +=		ibox.indicator_img_html;
		strHTML +=	"</div>";
		strHTML +=	"<div id=\"ibox_wrapper\" style=\"display:none\">";
		strHTML +=		"<div id=\"ibox_content\"></div>";
		strHTML +=		"<div id=\"ibox_footer_wrapper\">";
		strHTML +=			"<div id=\"ibox_close\" style=\"float:right;\">";
		strHTML +=				"<a id=\"ibox_close_a\" href=\"javascript:void(null);\" >Close</a>";
		strHTML +=			"</div>";
		strHTML +=			"<div id=\"ibox_footer\">&nbsp;</div></div></div></div>";
		var docBody = document.getElementsByTagName("body")[0];
		var ibox_el = document.createElement("div");
		ibox_el.setAttribute("id","ibox_el");
		ibox_el.style.display = '';
		ibox_el.innerHTML = strHTML;
		elem.appendChild(ibox_el);
	},
	showBG : function() {
		var box_w = ibox.getElem('ibox_w');
		var opacity_level = 8;
		box_w.style.opacity = 0;
		box_w.style.filter = 'alpha(opacity=0)';
		ibox.setIboxOpacity = ibox.setOpacity;
		for(var i = 0; i <= opacity_level; i++){setTimeout("ibox.setIboxOpacity('ibox_w'," + i + ")", 70 * i);} // from quirksmode.org
		box_w.style.display = "";
		var pagesize = new ibox.getPageSize();
		var scrollPos = new ibox.getScrollPos();
		var ua = navigator.userAgent;
		if(ua.indexOf("MSIE ") != -1) {box_w.style.width = pagesize.width + 'px';}
		else {box_w.style.width = pagesize.width - 20 + 'px';}
		box_w.style.height = pagesize.height + scrollPos.scrollY + 'px';
		ibox.selectVisibility("hidden");
	},
	selectVisibility : function(v) { // Scrollbar hiding by Heidi http://liquidlead-art.com/
		var selectElems = document.getElementsByTagName('select');
		for(var i = 0; i < selectElems.length; ++i) {selectElems[i].style.visibility = v;}
	},
	hideBG : function() {
		var box_w = ibox.getElem('ibox_w');
		box_w.style.display = "none";
		ibox.selectVisibility("visible");
	},
	showIndicator : function() {
		var ibox_p = ibox.getElem('ibox_progress');
		ibox_p.style.display = "";
		ibox.posToCenter(ibox_p);
		ibox_p.onclick = function() {
			ibox.hideIbox();
			ibox.hideIndicator();
			ibox.loadCancelled = true;
		}
	},
	hideIndicator : function() {
		var ibox_p = ibox.getElem('ibox_progress');
		ibox_p.style.display = "none";
		ibox_p.onclick = null;
	},
	showIbox : function(url, title, params) {

                hideSIFR();

		var ibox_el = ibox.getElem('ibox_wrapper');
		var ibox_type = 0;
		var ibox_footer = ibox.getElem('ibox_footer'); // set title here
		if(title != "") {ibox_footer.innerHTML = title;}
		else {ibox_footer.innerHTML = "&nbsp;";}
		var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt/gi; // file checking code borrowed from thickbox
		var urlType = url.match(urlString);
		if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif'){
			ibox_type = 0;
			ibox.showIndicator();
			var imgPreloader = new Image();
			imgPreloader.onload = function(){
				var imgWidthHeight = ibox.resizeImageToScreen({width: imgPreloader.width, height:imgPreloader.height}); // Fixed Safari image size
				ibox.hideIndicator();
				ibox.getElem('ibox_content').style.overflow = "hidden";
				var strHTML = "<a href=\"javascript:void(null);\"><img name=\"ibox_img\" src=\"" + url + "\" style=\"width:" + imgWidthHeight.width + "px; height:" + imgWidthHeight.height + "px;\" /></a>";
				if(ibox.loadCancelled == false) { // set width and height
					ibox_el.style.height = imgWidthHeight.height + 'px';
					ibox_el.style.width = imgWidthHeight.width + 'px';
					ibox_el.style.display = "";
					ibox_el.style.visibility = "hidden";
					ibox.posToCenter(ibox_el); 
					ibox_el.style.visibility = "visible";
					ibox.setIBoxContent(strHTML);
				}
			}
			ibox.loadCancelled = false;
			imgPreloader.src = url;
		}
		else if(url.indexOf("#") > 0) {
			var strHTML = "";
			ibox_type = 1;
			if(params['height']){ibox_el.style.height = params['height']+'px';}
			else {ibox_el.style.height = '280px';}
			if(params['width']) {ibox_el.style.width = params['width']+'px';}
			else {ibox_el.style.width = '450px';}
			ibox_el.style.display = "";
			ibox_el.style.visibility = "hidden";
			ibox.posToCenter(ibox_el);
			ibox_el.style.visibility = "visible";
			var elemSrcId = url.substr(url.indexOf("#") + 1, 1000);
			var elemSrc = ibox.getElem(elemSrcId);
			if(elemSrc) {strHTML = elemSrc.innerHTML;}
			ibox.setIBoxContent(strHTML);
		}
		else if(urlType=='.htm'||urlType=='.html'||urlType=='.php'|| urlType=='.asp'||urlType=='.aspx'||urlType=='.jsp'|| urlType=='.jst'||urlType=='.rb'||urlType=='.txt'|| urlType=='.cfm') {
			ibox_type = 2;
			ibox.showIndicator();
			ibox.http.open('get', url, true);
			ibox.http.onreadystatechange = function() {
				if(ibox.http.readyState == 4){
					ibox.hideIndicator();
					if(params['height']) {ibox_el.style.height = params['height'] + 'px';} 
					else {ibox_el.style.height = '280px';}
					if(params['width']) {ibox_el.style.width = params['width'] + 'px';} 
					else {ibox_el.style.width = '450px';}
					ibox_el.style.display = "";
					ibox_el.style.visibility = "hidden";
					ibox.posToCenter(ibox_el); 
					ibox_el.style.visibility = "visible";
					var response = ibox.http.responseText;
					ibox.setIBoxContent(response);
				}
			}
			ibox.http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
			ibox.http.send(null);
		}
		ibox_el.style.opacity = 0;
		ibox_el.style.filter = 'alpha(opacity=0)';
		var ibox_op_level = 10;
		ibox.setIboxOpacity = ibox.setOpacity;
		for(var i = 0; i <= ibox_op_level; i++) {setTimeout("ibox.setIboxOpacity('ibox_wrapper'," + i + ")", 30 * i);}
		if(ibox_type == 1 || ibox_type == 2) {
			ibox_el.onclick = null;
			ibox.getElem("ibox_close_a").onclick = function() {ibox.hideIbox();}
		}
		else {
			ibox_el.onclick = ibox.hideIbox;
			ibox.getElem("ibox_close_a").onclick = null;
		}
	},
	setOpacity : function (elemid, value) {
		var e = ibox.getElem(elemid);
		e.style.opacity = value / 10;
		e.style.filter = 'alpha(opacity=' + value * 10 + ')';
	},
	resizeImageToScreen : function(objImg) {
		var pagesize = new ibox.getPageSize();
		var x = pagesize.width - 100;
		var y = pagesize.height - 100;
		if(objImg.width > x) {
			objImg.height = objImg.height * (x / objImg.width);
			objImg.width = x;
			if(objImg.height > y) {
				objImg.width = objImg.width * (y / objImg.height);
				objImg.height = y;
			}
		}
		else if(objImg.height > y) {
			objImg.width = objImg.width * (y/objImg.height);
			objImg.height = y;
			if(objImg.width > x) {
				objImg.height = objImg.height * (x/objImg.width);
				objImg.width = x;
			}
		}
		return objImg;
	},
	maintPos : function() {
		var ibox_el = ibox.getElem('ibox_wrapper');
		var box_w = ibox.getElem('ibox_w');
		var pagesize = new ibox.getPageSize();
		var ua = navigator.userAgent;
		if(ua.indexOf("MSIE ") != -1) {box_w.style.width = pagesize.width + 'px';} 
		else {box_w.style.width = pagesize.width - 20 + 'px';}
		if(ua.indexOf("Opera/9") != -1) {box_w.style.height = document.body.scrollHeight + 'px';}
		else {box_w.style.height = document.body.scrollHeight + 50 + 'px';}
		ibox.posToCenter(ibox_el);
	},
	hideIbox : function() {

                showSIFR();

		ibox.hideBG();
		var ibox_el = ibox.getElem('ibox_wrapper');
		ibox_el.style.display = "none";
		ibox.clearIboxContent();
		window.onscroll = null;
	},
	posToCenter : function(elem) {
		var scrollPos = new ibox.getScrollPos();
		var pageSize = new ibox.getPageSize();
		var emSize = new ibox.getElementSize(elem);
		var x = Math.round(pageSize.width / 2) - (emSize.width / 2) + scrollPos.scrollX;
		var y = Math.round(pageSize.height / 2) - (emSize.height / 2) + scrollPos.scrollY;	
		elem.style.left = x+'px';
		elem.style.top = y+'px';
	},
	getScrollPos : function() {
		var docElem = document.documentElement;
		this.scrollX = self.pageXOffset || (docElem&&docElem.scrollLeft) || document.body.scrollLeft;
		this.scrollY = self.pageYOffset || (docElem&&docElem.scrollTop) || document.body.scrollTop;
	},
	getPageSize : function() {
		var docElem = document.documentElement
		this.width = self.innerWidth || (docElem&&docElem.clientWidth) || document.body.clientWidth;
		this.height = self.innerHeight || (docElem&&docElem.clientHeight) || document.body.clientHeight;
	},
	getElementSize : function(elem) {
		this.width = elem.offsetWidth ||  elem.style.pixelWidth;
		this.height = elem.offsetHeight || elem.style.pixelHeight;
	},
	setIBoxContent : function(str) {
		ibox.clearIboxContent();
		var e = ibox.getElem('ibox_content');
		e.innerHTML = str;
		if(e.style.overflow != "hidden")
			e.style.overflow = "auto";
	},
	clearIboxContent : function() {
		var e = ibox.getElem('ibox_content');
		e.innerHTML = "";
		e.style.overflow = "hidden";
	},
	getElem : function(elemId) {
		return document.getElementById(elemId);	
	},
	parseQuery : function(query) { // parseQuery code borrowed from thickbox, Thanks Cody!
		var Params = new Object ();
		if (!query) return Params; 
		var Pairs = query.split(/[;&]/);
		for ( var i = 0; i < Pairs.length; i++ ) {
			var KeyVal = Pairs[i].split('=');
			if ( ! KeyVal || KeyVal.length != 2 ) continue;
			var key = unescape( KeyVal[0] );
			var val = unescape( KeyVal[1] );
			val = val.replace(/\+/g, ' ');
			Params[key] = val;
		}
		return Params;
	},
	createRequestObject : function() { // Make this IE7 Compatible, http://ajaxian.com/archives/ajax-on-ie-7-check-native-first
		var xmlhttp;
			/*@cc_on
		@if (@_jscript_version>= 5)
				try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
						try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
						catch (E) {xmlhttp = false;}
				}
		@else
			xmlhttp = false;
		@end @*/
		if (!xmlhttp && typeof XMLHttpRequest != "undefined")
				try {xmlhttp = new XMLHttpRequest();} catch (e) {xmlhttp = false;}
		return xmlhttp;
	}
}
