
if (!cv) {
  var cv = {
    // This variable should be set to a new value if the erc files are not placed in
    // the root directory of a web application
    basePath: '',
    
    // This variable should be set to the mapviewer's id/name if the map viewer is on the page.
    mapViewerId: 'mapviewer',
    
    // This variable should be set to the URL of the page with the map viewer in it.
    mapViewerHtmlUrl: 'mapviewer.html',
    
    // Default versions for flash.  These can be changed, but shouldn't be set lower.
    requiredMajorVersion: 9,
    requiredMinorVersion: 0,
    requiredRevision: 28,
    
    // These variables are provided for reference only, and should not be changed 
    contentViewerDiv: 'popupdiv',
    contentViewerSWF: 'popupswf',
    contentViewerPreloaderDiv: "preloaderdiv",
    contentViewerPreloaderSWF: "preloaderswf",
    aDOM: 0,
    ieDOM: 0,
    nsDOM: 0,
    stdDOM: document.getElementById,
    
    // This var helps load the CV "on demand"
    initialized: false,
    useShim: false,
    shimId: 'cvShim'
  };

  // Keep content viewer covering the page as it is scrolled
  // Cross Browser DOM
  // copyright Stephen Chapman, 4th Jan 2005
  // you may copy this code but please keep the copyright notice as well
  if (cv.stdDOM) { 
    cv.aDOM = 1; 
  } else {
    cv.ieDOM = document.all; 
    if (cv.ieDOM) {
      cv.aDOM = 1; 
    } else {
      cv.nsDOM = ((navigator.appName.indexOf('Netscape') != -1) && (parseInt(navigator.appVersion) ==4)); 
      if (cv.nsDOM) {
        cv.aDOM = 1;
      }
    }
  }
}


function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
 	} else {
		return document[movieName];
	}
}


//Keep content viewer covering the page as it is scrolled
	// Cross Browser DOM
	// copyright Stephen Chapman, 4th Jan 2005
	// you may copy this code but please keep the copyright notice as well

function xDOM(objectId, wS) {
	if (cv.stdDOM) return wS ? document.getElementById(objectId).style : document.getElementById(objectId);
	if (cv.ieDOM) return wS ? document.all[objectId].style: document.all[objectId];
	if (cv.nsDOM) return document.layers[objectId];
}                  
function moveObjTo(objectID,x,y) {
	var objs = xDOM(objectID,1); objs.left = x; objs.top = y;
}
function posTop() {
	return typeof window.pageYOffset != 'undefined' ?  window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;
}
function posLeft() {
	return typeof window.pageXOffset != 'undefined' ? window.pageXOffset :document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;
}
function scrollContentViewerWithPage() {
	var x = posLeft() + 'px';
	var y = posTop() + 'px';
	moveObjTo(cv.contentViewerDiv,x,y);
	moveObjTo(cv.contentViewerPreloaderDiv,x,y);
	if (document.getElementById(cv.shimId)) {
		moveObjTo(cv.shimId,x,y);
	}
	if (cv.initialized) {
		thisMovie(cv.contentViewerSWF).setTopPosition(posTop());
	}
}
window.onscroll = scrollContentViewerWithPage;


//Show content viewer
function openContentViewer(sType, sTitle, aList, iSelection) {
//	alert("openContentViewer(" + sType + "," + sTitle + "," + aList.length + "," + iSelection + ")\n"); // + aList);
	addShim();
	MM_showHideLayers(cv.contentViewerDiv,'','show');
	
	if (cv.initialized) {
		MM_showHideLayers(cv.contentViewerSWF,'','show');
		thisMovie(cv.contentViewerSWF).showList(sType, sTitle, aList, iSelection);
	} else {
		MM_showHideLayers(cv.contentViewerPreloaderDiv,'','show');
		MM_showHideLayers(cv.contentViewerPreloaderSWF,'','show');
		thisMovie(cv.contentViewerPreloaderSWF).show();
		//alert("CREATE CONTENT VIEWER OBJECT")
		var oFlashVars = {
			basepath: cv.basePath,
			init_type: sType,
			init_title: sTitle,
			init_list: aList.toString(),
			init_selection: iSelection
		};
		var oAttrib = {
			id: cv.contentViewerSWF,
			name: cv.contentViewerSWF
		};
		var oParams = {
			wmode: "transparent",
			quality: "best"
		};
		swfobject.embedSWF(cv.basePath + 'contentviewer.swf', cv.contentViewerSWF, '100%', '100%', '9.0.124', false, oFlashVars, oParams, oAttrib);
		scrollContentViewerWithPage();
	}
}

function addShim() {
  if (cv.useShim) {
    // This is a workaround for a Firefox 3 / Windows issue.
    // If the content viewer overlaps part of the page that has
    // overflow: auto, then mouse events don't work correctly.
    // Adding an invisible iframe behind the content viewer
    // is a workaround.
    var shimmer = document.createElement('iframe');
    shimmer.id=cv.shimId;
    shimmer.style.position='absolute';
    shimmer.style.width='100%';
    shimmer.style.height='100%';
    shimmer.style.top=posTop() + 'px';
    shimmer.style.left=posLeft() + 'px';
    // convent viewer zIndex is 100, preloader is 99
    shimmer.style.zIndex=98;
    shimmer.setAttribute('frameborder','0');
    document.body.appendChild(shimmer);    
  }
}

function removeShim() {
  if (cv.useShim) {
    var shimmer = document.getElementById(cv.shimId);
    if (shimmer) {
      document.body.removeChild(shimmer);
    }
  }
}

//Initalize content viewer
function cvInit() {
	//alert("Content Viewer Initialized");
	cv.initialized = true;
	cvReady();
	scrollContentViewerWithPage();
}


//Hide content viewer
function closeContentViewer() {
	removeShim();
	MM_showHideLayers(cv.contentViewerDiv,'','hide');
	MM_showHideLayers(cv.contentViewerSWF,'','hide');
}

//Hide preloading layer
function cvReady() {
	//alert("cvReady()");
	MM_showHideLayers(cv.contentViewerPreloaderDiv,'','hide');
	MM_showHideLayers(cv.contentViewerPreloaderSWF,'','hide');
}

//Cancel from preloader
function cvCancel() {
	//alert("Cancelling CV loading");
	MM_showHideLayers(cv.contentViewerPreloaderDiv,'','hide');
	MM_showHideLayers(cv.contentViewerPreloaderSWF,'','hide');
	MM_showHideLayers(cv.contentViewerDiv,'','hide');
	MM_showHideLayers(cv.contentViewerSWF,'','hide');
}


function includeContentViewerSwf() {
	
	document.write('<div id="' + cv.contentViewerPreloaderDiv + '">\n');
		document.write('<div id="' + cv.contentViewerPreloaderSWF + '">\n');
		document.write('</div>\n');
	document.write('</div>\n');
	document.write('<div id="' + cv.contentViewerDiv + '">\n');
		document.write('<div id="' + cv.contentViewerSWF + '">\n');
		document.write('</div>\n');
	document.write('</div>\n');

	var oFlashVars = {
	};
	var oAttrib = {
		id: cv.contentViewerPreloaderSWF,
		name: cv.contentViewerPreloaderSWF
	};
	var oParams = {
		wmode: "transparent",
		quality: "best"
	};
	swfobject.embedSWF(cv.basePath + 'preloader.swf', cv.contentViewerPreloaderSWF, '100%', '100%', '9.0.124', false, oFlashVars, oParams, oAttrib);
	cvReady();
}


// handle "show on map" link from content viewer
function showOnMap(sType, lsContentId) {
	if (thisMovie(cv.mapViewerId)) {
		thisMovie(cv.mapViewerId).highlightItem(sType, lsContentId);
		closeContentViewer();
	} else {
		var sUrl = cv.mapViewerHtmlUrl + "?hltContentId=" + lsContentId;
		document.location = sUrl;
	}
}

function detectUseShim() {
  cv.useShim = (navigator.platform.indexOf("Win") >= 0) 
      && (navigator.userAgent.indexOf("Firefox/3.") >= 0); 
}

detectUseShim();
