
/* This is an Mac IE fix for the content positioning (both main and right column) */
 if ((navigator.platform == "MacPPC") && (navigator.userAgent.indexOf("MSIE 5")!=-1))  {
 	document.write("<style type='text/css'>@import url(http:bc.edu/schools/csom/meta-elements/css/macie.css);<\/style>");
}

/* end */


function RollOvers() {}

RollOvers.prototype.preloaded = false; // whether or not this has been preloaded
RollOvers.prototype.createNormalState = true; // whether or not to automatically create a "normal" state
RollOvers.prototype.rollovers = new Object(); // storage for all rollover images

RollOvers.prototype.createImage = function( uri ) {
	var img = new Image();
	img.src = uri;
	return img;
}

RollOvers.prototype.swapImage = function( id, newState ) {
	if( document.images && this.preloaded && this.rollovers[id] ) {
		if( newState == null && this.defaultStates[id] ) newState = this.defaultStates[id];
		if( newState == null ) return true;

		if( this.rollovers[id][newState] ) {
			// use getElementByID instead of document.images[id] to allow for <input type="image" />
			var ele = document.getElementById(id);
			if( ele && ele.src )
				ele.src = this.rollovers[id][newState].src;
		}
	}
	return true;
}

RollOvers.prototype.addRollover = function( ids, states, urlPrefix, urlSuffix, stateDelimiter, createNormalState ) {
	if( typeof ids == "string" ) ids = [ids];
	if( typeof states == "string" ) states = [states];

	if( createNormalState != true && createNormalState != false ) createNormalState = this.createNormalState;

	for( var i=0; i<ids.length; i++ ) {
		this.rollovers[ids[i]] = new Object();

		if( this.createNormalState ) this.rollovers[ids[i]].normal = this.createImage( urlPrefix + ids[i] + urlSuffix );

		for( var j=0; j<states.length; j++ ) {
			this.rollovers[ids[i]][states[j]] = this.createImage( urlPrefix + ids[i] + stateDelimiter + states[j] + urlSuffix );
		}
	}
}

RollOvers.prototype.addGenericRollover = function( genericId, states, urlPrefix, urlSuffix, stateDelimiter, createNormalState ) {
	if( typeof states == "string" ) states = [states];

	if( createNormalState != true && createNormalState != false ) createNormalState = this.createNormalState;

	this.rollovers[genericId] = new Object();

	if( this.createNormalState ) this.rollovers[genericId].normal = this.createImage( urlPrefix + urlSuffix );

	for( var j=0; j<states.length; j++ ) {
		this.rollovers[genericId][states[j]] = this.createImage( urlPrefix + stateDelimiter + states[j] + urlSuffix );
	}
}


RollOvers.prototype.swapGenericImage = function( id, genericId, newState ) {
	if( document.images && this.preloaded && this.rollovers[genericId] ) {
		if( newState == null && this.defaultStates[id] ) newState = this.defaultStates[id];
		if( newState == null ) return true;

	if( this.rollovers[genericId][newState] ) {
			var ele = document.getElementById(id);
			if( ele && ele.src )
				ele.src = this.rollovers[genericId][newState].src;
		}
	}
	return true;
}

RollOvers.prototype.defaultStates = new Object();
RollOvers.prototype.setDefaultState = function( id, state ) {
	if( id == null || id == "" ) return;
	
	if( typeof id == "string" ) id = [id];

	for( var i=0; i<id.length; i++ ) {
		if( state == null || state == "" ) delete this.defaultStates[id[i]];
		else this.defaultStates[id[i]] = state;
	}
}


/*** non-class items ***/
function createNavItemList( items, activeItem, divider ) {
	items.activeItem = activeItem;
	items.genericId = divider;

	// index the items
	for( var i=0; i<items.length; i++ ) {
		items[items[i]] = i;
	}

	return items;
}

// NH, 11/16/06 removed: "contact_csom","search_csom"

var bcRightNavItems = createNavItemList( ["deans_welcome","faculty2","faculty","academic_departments","news_and_events","about_csom","research_centers","winston","center_asset","contact_csom","search_csom","for_alumni","for_employers"],
		"",
		"divider" );
 
var bcProgramNavItems = createNavItemList( ["undergraduate","mba","msf","msa","phd_programs","dual_degrees"],
		"",
		"pipe" );

var ro = new RollOvers();
ro.preload = function() {
	if( !document.images ) return false;
	this.addRollover( // right nav
		bcRightNavItems,
		["over"],"http://bc.edu/meta-elements/site/csom/_img/nav/right/",".gif","-",true);

	this.addGenericRollover( // right nav divider
		"divider",
		["over"],"http://bc.edu/meta-elements/site/csom/_img/nav/right/divider",".gif","-",true);

	this.addRollover( // program nav
		bcProgramNavItems,
		["over"],"http://bc.edu/meta-elements/site/csom/_img/nav/program/",".gif","-",true);

	this.addGenericRollover( // program nav divider
		"pipe",
		["over"],"http://bc.edu/meta-elements/site/csom/_img/nav/program/pipe",".gif","-",true);

	this.addGenericRollover( // features read more btn
		"features_more",
		["over"],"http://bc.edu/schools/csom/meta-elements/home/features/more_btn",".gif","-",true);

	return this.preloaded = true;
}


function dividedNavSwap( id, itemList, newState ) {
	if( itemList[id] == null ) return;
	if( id == itemList.activeItem ) return;

	if( itemList[id] > 0 && itemList.activeItem != itemList[itemList[id]-1] ) {
		ro.swapGenericImage( itemList[itemList[id]-1] + '_' + itemList.genericId, itemList.genericId, newState );
	}

	if( itemList[id]-1 < itemList.length && itemList.activeItem != itemList[itemList[id]+1] ) {
		ro.swapGenericImage( id + '_' + itemList.genericId, itemList.genericId, newState );
	}

	return ro.swapImage( id, newState );
}

