﻿// JScript File
// open a popup window center screen
// author: p. jodoin
function PopUpWindow(sUrl, iWidth, iHeight, sScroll)
{
	
	var sWindowString;
	var dNew = new Date();
	var sRandName = dNew.getUTCMilliseconds();
	sRandName = sRandName.toString();

	var Xpos= (screen.availWidth - iWidth)/2;
	var Ypos= (screen.availHeight - iHeight)/2-10;

	if (sScroll == "")
		{
		sScroll = "no";
		}

	sWindowString = "width=" + iWidth + ",height=" + iHeight + ",screenX=" + Xpos + ",screenY="  + Ypos + ",toolbar=1,scrollbars=" + sScroll + ",location=1,directories=0,status=1,menubar=1,resizable=yes";
	newWindow = open(sUrl, sRandName, sWindowString);
	newWindow.moveTo(Xpos, Ypos);
	newWindow.location=sUrl;
 
}//nw()

// displays a slideshow image with id imgMain
// author: b. popova
function displayImage(imageGuid,albumGuid)
{
    //set the image to be displayed
    document.getElementById('ctl00_cphMainContent_imgMain').src = '/get_file.aspx?file=' + imageGuid + '&folder=' + albumGuid;
}//displayImage

// drop down menus

// capture active menu
var _activeMenu = new String();
_activeMenu = '';
var _tO;

function showMenu(m) {
	
	var isDOM; 
	var obj;
	
	//compliant browser
	isDOM = document.getElementById(m)&&true;
	
	if(isDOM){
		//clear timeout....
		window.clearTimeout(_tO);
		if(_activeMenu != '') {
			hideMenu(_activeMenu);
		}//if()
		if(document.getElementById(m).style.visibility != 'visible') {
			document.getElementById(m).style.visibility = 'visible';
			_activeMenu = String(m);
		}//if()
		//hide the window after 3 seconds if another mouseover is not encountered
		_tO = window.setTimeout('hideMenu()', 2500);
	}//if()

}//showMenu()

function hideMenu() {
	
	var isDOM; 
	var obj;
	
	//compliant browser
	if(_activeMenu != '') {
		isDOM = document.getElementById(_activeMenu)&&true;
	
		if(isDOM){
			if(document.getElementById(_activeMenu).style.visibility != 'hidden') {
				document.getElementById(_activeMenu).style.visibility = 'hidden';
			}//if()
		}//if()
	}//if()

}//hideMenu()

// end drop down menus

// From http://www.mckinley.com (http://www.mckinley.com/portal_javascripts/Plone%20Default/js/utilities.js):
// EventManager
// Dom
// preloadImages()

var EventManager = {
	//EventManager: Object to contain managing js event functions
		
	add: function(obj,type,fn) {
		//attaches a new event listener to an element
		//takes which element to attach to, which event, and function to call when event is triggered
		//returns true if addEventListener, result of attachEvent for non-addEventListener-compatible, or false if no compatability
	  if (obj.addEventListener){
	    obj.addEventListener(type, fn, false);
		return true;
	  }
	  else if (obj.attachEvent){
		var r = obj.attachEvent("on"+type, fn);
	    return r;
	  }
	  else {
		return false;
	  }
	},
	
	remove: function(obj,type,fn) {
		//deletes an event listener from an element
		//takes which element to remove from, which event, and (function the event calls when triggered)??
		//returns true if removeEventListener, result of detachEvent for non-removeEventListener-compatible, or false if no compatability
	  if (obj.removeEventListener){
	    obj.removeEventListener(type, fn, false);
		return true;
	  }
	  else if (obj.detachEvent){
		var r = obj.detachEvent("on"+type, fn);
	    return r;
	  }
	  else {
		return false;
	  }	
	}
};

var Dom = {
    //Dom: Object to contain dealing with elements simplification functions
		
    create: function(newElement) {
	        //creates an element based on an input Object's parameters
	        /*takes an Object with structure:			
	         {
		        tag: String - element's html tag name
		        attributes: Array - pairs of [String, (String / Int)] to use to created elements attributes
		        src: String - quicker access to src attribute
		        text: String - text to add as new element's inner text - TextNode
	         }
	         */
	         //returns new element or false if input Object had no tag specified
        if (newElement.tag) {
	        var element = document.createElement(newElement.tag);
	        if (!newElement.attributes) newElement.attributes = new Array();
	        if (newElement.src) newElement.attributes.push("src",newElement.src);
	        if (newElement.href) newElement.attributes.push("href",newElement.href);
	        if (newElement.attributes.length) {			
		        for (var c=0; c<newElement.attributes.length; c+=2) {
			        element.setAttribute(newElement.attributes[c], newElement.attributes[c+1]);
		        }
	        }
	        if (newElement.text) element.appendChild(document.createTextNode(newElement.text));
	        return element;
        }
        return false;
    },
	
    add: function(newElement, id) {
	        //more usable access to create function, creates a new element then adds it to the DOM
	        //takes input Object as specified for create(), and the id of the receiving element
	        //returns nothing
        var element = Dom.create(newElement);
        document.getElementById(id).appendChild(element);
    },
	
    remove: function(obj) {		
	        //removes an element from the DOM -- slightly simpler function call			
        obj.parentNode.removeChild(obj);
    }
};

var preloadingImages = new Array();
function preloadImages() {
        //loads images into the cache
        //takes an Array of images' src's
        //returns nothing
    for(var i=0;i<arguments.length;i++){
       var newImage = {tag: "img", src: arguments[i]};
       preloadingImages.push(Dom.create(newImage));
    }
}