	var popUpWin=0;
	function popUpWindow(URLStr, left, top, width, height)
	{
	  if(popUpWin)
	  {
	    if(!popUpWin.closed) popUpWin.close();
	  }
	  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
		popUpWin.focus();
	}
	
	// this popup allows scrolling and resizing for the window.
	function popUpWindow2(URLStr, left, top, width, height)
	{
	  if(popUpWin)
	  {
	    if(!popUpWin.closed) popUpWin.close();
	  }
	  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
		popUpWin.focus();
	}	

	// Example: obj = findObj("image1");
	function findObj(theObj, theDoc)
	{
	  var p, i, foundObj;
	  
	  if(!theDoc) theDoc = document;
	  if( (p = theObj.indexOf("?")) > 0 && parent.frames.length)
	  {
		theDoc = parent.frames[theObj.substring(p+1)].document;
		theObj = theObj.substring(0,p);
	  }
	  if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
	  for (i=0; !foundObj && i < theDoc.forms.length; i++) 
		foundObj = theDoc.forms[i][theObj];
	  for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) 
		foundObj = findObj(theObj,theDoc.layers[i].document);
	  if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
	  
	  return foundObj;
	}
	
	// * Dependencies * 
	// this function requires the following snippets:
	// JavaScript/readable_MM_functions/findObj
	//
	// Accepts a variable number of arguments, in triplets as follows:
	// arg 1: simple name of a layer object, such as "Layer1"
	// arg 2: ignored (for backward compatibility)
	// arg 3: 'hide' or 'show'
	// repeat...
	//
	// Example: showHideLayers(Layer1,'','show',Layer2,'','hide');
	function showHideLayers()
	{ 
	  var i, visStr, obj, args = showHideLayers.arguments;
	  for (i=0; i<(args.length-2); i+=3)
	  {
		if ((obj = findObj(args[i])) != null)
		{
		  visStr = args[i+2];
		  if (obj.style)
		  {
			obj = obj.style;
			if(visStr == 'show') {
				visStr = 'visible';
				disStr = 'block';
			}
			else if(visStr == 'hide'){ 
				visStr = 'hidden';
				disStr = 'none';
			}
		  }
		  obj.visibility = visStr;
		  obj.display = disStr;
		}
	  }
	}
	
	function showHideLayers2()
	{ 
	  var i, visStr, obj, args = showHideLayers.arguments;
	  for (i=0; i<(args.length-2); i+=3)
	  {
		if ((obj = findObj(args[i])) != null)
		{
		  visStr = args[i+2];
		  if (obj.style)
		  {
			obj = obj.style;
			if(visStr == 'show') {
				visStr = 'visible';
				disStr = 'block';
			}
			else if(visStr == 'hide'){ 
				visStr = 'hidden';
				disStr = 'none';
			}
		  }
		  obj.visibility = visStr;
		  //obj.display = disStr;
		}
	  }
	}
	
	function toggleView(zObj){
		obj = findObj(zObj);
		objStyle = obj.currentStyle;//obj.style;

		objVis = objStyle.visibility;
		objDis = objStyle.display;
		if(objVis == "visible" || objDis == "block"){
			showHideLayers(zObj,'','hide');
		}else if(objVis == "hidden" || objDis == "none"){
			showHideLayers(zObj,'','show');
		}
		//debug..
		//alert(zObj + ": " + objVis + "/" + objDis);
	}
	
	
	// newValue must UPPERCASE for a valid comparison..
	function changeURLParam(paramName, newValue){
		var newURL	= "";
		var fullURL = window.location.href;
		var found	= false;
		if (fullURL.indexOf("?") > -1 ){
			urlQry	= fullURL.split("?");
			urlQrySring = urlQry[1].toUpperCase();
			
			var aQueryString = urlQrySring.split("&");						
			for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
				if (aQueryString[iParam].indexOf(paramName + "=") > -1 ){
					var aParam = aQueryString[iParam].split("=");
					aParam[1] = newValue;
					//save it back to query string array..
					aQueryString[iParam] = aParam[0] + "=" + aParam[1];								
					found = true;
					break;
				}
			}
			//re-generate new updated URL
			newQueryString = "";
			for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
				newQueryString += aQueryString[iParam];
				if(iParam < aQueryString.length-1)
					newQueryString += "&";
			}
			if(found == false)
				newQueryString += "&" + paramName + "=" + newValue;
		
			newURL = urlQry[0] + "?" + newQueryString;
		}else{
			newURL = fullURL + "?" + paramName + "=" + newValue;;						
		}
		return newURL;
	}
	
	function changeURLParamWithin(paramName, newValue, aurl){	
		var newURL	= "";
		var fullURL = aurl;
		var found	= false;
		if (fullURL.indexOf("?") > -1 ){
			urlQry	= fullURL.split("?");
			urlQrySring = urlQry[1].toUpperCase();
			
			var aQueryString = urlQrySring.split("&");						
			for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
				if (aQueryString[iParam].indexOf(paramName + "=") > -1 ){
					var aParam = aQueryString[iParam].split("=");
					aParam[1] = newValue;
					//save it back to query string array..
					aQueryString[iParam] = aParam[0] + "=" + aParam[1];								
					found = true;
					break;
				}
			}
			//re-generate new updated URL
			newQueryString = "";
			for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
				newQueryString += aQueryString[iParam];
				if(iParam < aQueryString.length-1)
					newQueryString += "&";
			}
			if(found == false)
				newQueryString += "&" + paramName + "=" + newValue;
		
			newURL = urlQry[0] + "?" + newQueryString;
		}else{
			newURL = fullURL + "?" + paramName + "=" + newValue;;						
		}
		return newURL;
	}	
	
	//set Bread Crumb..
	function setBreadCrumb(bcStr){
		bc = findObj("BreadCrumb");
		bc.innerHTML = bcStr;
	}