/*Version: $Id: presentation1.js 2278 2006-09-11 09:34:19Z ray $*/

var newwindow = '';

function myVoid() { ; } // do nothing

/*--------------------------------*/
/* Trim function
/*--------------------------------*/

function trim(sString) {
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

/*---------------------------------*/
/*Code for generating rollover images
/*---------------------------------*/

function rollover(doc_name, image_name, image_src) {
	doc_name.getElementById(image_name).src = image_src;
}

/*---------------------------------*/
/*Code for generating png rollover images
/*---------------------------------*/

/*
	the idea with these is to have a hyperlink containing both an img and a span. the img is used for moz, the span for ie.
	eg:
	<a href="#">
		<img ... />
		<span ... />
	</a>

	the following css defs may be useful:

	div#bodyFX div#documentBanner div#buttons a {
		text-decoration:none;
		width:153px;
		height:100px;
	}
	
	body > div#bodyFX div#documentBanner div#buttons span {
		display:none;
	}
	
	* html div#bodyFX div#documentBanner div#buttons img {
		display:none;
	}
	
	* html div#bodyFX div#documentBanner div#buttons span {
		display:block;
		float:left;
		width:153px;
		height:100px;
	}

*/

function pngrollover(doc_name, image_name, image_src) {
	if (document.all) {
		doc_name.getElementById(image_name + 'div').style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader (src=\'' + image_src + '\', sizing Method=\'scale\')';
	} else {
		doc_name.getElementById(image_name + 'img').src = image_src;
	}
	
}

/*---------------------------------*/
/*Code for generating random banners
/*---------------------------------*/

function bannerRotate (banners, anchor_target_id, image_target_id, myIndex, image_target_attribute) {
	var n;
	//pick a random image number

	if (!myIndex) {
		n = Math.floor(Math.random() * banners.length);
	} else {
		n = myIndex
	}

	switch (image_target_attribute) {
		case 'backgroundImage':
			document.getElementById(image_target_id).style.backgroundImage = "url(" + banners[n][0] + ")";
			break
		default:
			document.getElementById(image_target_id).src = banners[n][0];
			if (anchor_target_id != null) {
				document.getElementById(anchor_target_id).href = banners[n][1];
			}
	}

	return n;
}

/*---------------------------------*/
/*Code for generating random banner text
/*---------------------------------*/

function bannerTextRotate (banners, div_target_id) {
	var n;
	//pick a random image number
	n = Math.floor(Math.random() * banners.length);
	document.getElementById(div_target_id).innerHTML = banners[n];
	return 0;
}

/*---------------------------------*/
/*Code for fixing Internet Explorer!!!
/*Fortunately, can use some DOM1 methods with IE5 but still have to resort to IE5 DHTML to retrieve objects.
/*IE4, like NS4, does not support the DOM model at all and therefore the help elements probably won't disappear, anyway... i think
/*---------------------------------*/

function fixIERender(doc_name) {
	var imgs = document.body.all.tags("img");
	for (i = 0; i < imgs.length; i++) {
		if (imgs[i].getAttributeNode('class').value == 'infoBubbleDiv') {
			imgs[i].style.visibility = 'inherit';
		}
	}
}

/*****************************/
/*more code for fixing ie redraw bugs*/
/*****************************/

function forceIERedraw() {
	if (document.all) {
	   var cn=document.body.className;
	   document.body.className="nodisplay";
	   document.body.className=cn;
	   return 0;
	  }
}

/*---------------------------------*/
/*Automatic execution*/
/*---------------------------------*/

window.onload = function() {	

	if (document.getElementById('quoteDiv')) {
		//document.getElementById('quoteDiv').innerHTML = getRandomQuote();
	}
/*
	if (document.layers) { // Netscape
		document.captureEvents(Event.MOUSEMOVE);
		document.onmousemove = captureMousePosition;
	} else if (document.getElementById) { // Netcsape 6
		document.getElementById("documentBody").onmousemove = captureMousePosition;
	}
*/

	if (document.all && document.getElementById) {

		window.event.cancelBubble = true;
	
		myMenus = document.getElementsByClass("menu");
		myId = document.getElementById("menu");
		
		if (myId) myMenus[myMenus.length] = myId;

		for (i = 0; i < myMenus.length; i++) {
			sfHover(myMenus[i]);
		}
		
	}
	
	forceIERedraw();
	
	/* now initialise the font resizing script*/
	
/*dw_fontSizerDX.init();*/
}

/*---------------------------------*/
/*Generally useful*/
/*---------------------------------*/

document.getElementsByClass = function (needle)
{
  var         my_array = document.getElementsByTagName("*");
  var         retvalue = new Array();
  var        i = 0;
  var        j = 0;

  for (i = 0, j= 0; i < my_array.length; i++)
  {
    var c = " " + my_array[i].className + " ";
    if (c.indexOf(" " + needle + " ") != -1)
      retvalue[j++] = my_array[i];
  }
  return retvalue;
}

/*---------------------------------*/
/*menu gubbins*/
/*son of suckerfish: http://www.htmldog.com/articles/suckerfish/dropdowns/*/
/*---------------------------------*/

sfHover = function(menuElement) {
	var sfEls = menuElement.getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
	
		sfEls[i].onmouseover=function() {
//			window.status="over li";
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
//			window.status="off li";
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}

}

/*---------------------------------*/
/*font size functions            */
/*---------------------------------*/

/* swiped from: http://www.dynamicdrive.com/dynamicindex9/textsizer.js */

//Specify affected tags. Add or remove from list:
//var tgs = new Array( 'div','td','tr');
var tgs = new Array( 'body');

//Specify spectrum of different font sizes:
var szs = new Array( 'xx-small','x-small','small','medium','large','x-large','xx-large' );
var startSz = 2;

function setFontSize(trgt,inc,mode) {

	if (!document.getElementById) return
	var d = document,cEl = null,sz = startSz,i,j,cTags;
	
	sz += inc;
	if ( sz < 0 ) sz = 0;
	if ( sz > 6 ) sz = 6;
	startSz = sz;
		
	if ( !( cEl = d.getElementById( trgt ) ) ) cEl = d.getElementsByTagName( trgt )[ 0 ];

	if (mode == 'relative') {
		cEl.style.fontSize = szs[ sz ];
	
		for ( i = 0 ; i < tgs.length ; i++ ) {
			cTags = cEl.getElementsByTagName( tgs[ i ] );
			for ( j = 0 ; j < cTags.length ; j++ ) cTags[ j ].style.fontSize = szs[ sz ];
		}
	} else {
		cEl.style.fontSize = inc + "em";
	
		for ( i = 0 ; i < tgs.length ; i++ ) {
			cTags = cEl.getElementsByTagName( tgs[ i ] );
			for ( j = 0 ; j < cTags.length ; j++ ) cTags[ j ].style.fontSize = inc + "em";
		}
	}
}

/*---------------------------------*/
/*popup window           */
/* this is the old style inline javascript window. Has been superceded by superPopUp which is called automagically using the article_popup uri*/
/*---------------------------------*/

function newPopUp (url, name, options) {
	
	//assume for the time being it is 3 characters 
	var myWidth = options.substr(options.indexOf("width=") + 6, 3);
	var myHeight = options.substr(options.indexOf("height=") + 7, 3);

	if (!newwindow.closed && newwindow.location)
	{
		newwindow.location.href = url;
		newwindow.resizeTo(myWidth, myHeight);
		newwindow.focus();
	}
	else
	{
		newwindow=window.open(url,name,options);
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}

}

/*---------------------------------*/
/*popup window           */
/*---------------------------------*/

function superPopUp (myWindow, myWidth, myHeight, options) {
	myWindow.resizeTo(myWidth, myHeight);
	return;
}

/*---------------------------------*/
/*kev's pagination script          */
/*---------------------------------*/

  function pagination(anchor, current_page, maxpage, thisURI ) {
     var work_str = '';

     if ( current_page == 0 && maxpage == 1 ) {
        return '';
     }
     for ( i=0; i<maxpage; i++) {
       if ( i == current_page ) {
          work_str = work_str+' '+(i+1);
       }
       else {
           if ( !thisURI ) { 
              thisURI = '';
           }   
           work_str = work_str+' <a href="'+thisURI+'?pa='+i+'#'+anchor+'">'+(i+1)+'</a>';
       }
     }
     return work_str;
  }

/*---------------------------------*/
/*kev's 'new' and 'updated' flags  */
/*---------------------------------*/

		  function newFlag(dateString,createdString,startString) {
		  var today=new Date();
		  var one_day=1000*60*60*24;
		  var publishedDate = new Date(getDateFromFormat(dateString,'yyyy-MM-dd HH:mm')); 
		  var createdDate = new Date(getDateFromFormat(createdString,'yyyy-MM-dd HH:mm')); 
		  
		  var PublishedDaysOld = Math.ceil((today.getTime()-publishedDate.getTime())/(one_day)); 
		  var CreatedDaysOld = Math.ceil((today.getTime()-createdDate.getTime())/(one_day)); 
		  
		  if ( startString ) {
		     var startDate = new Date(getDateFromFormat(startString,'yyyy-MM-dd HH:mm')); 
		     var StartDaysOld = Math.ceil((today.getTime()-startDate.getTime())/(one_day)); 
                     if ( StartDaysOld < 30 ) {
                         return '<span class="newarticle">New!</span>';
                     }
		     if ( createdDate >= startDate ) {
                        if ( PublishedDaysOld < 30 && (PublishedDaysOld < StartDaysOld ) ) {
                          return '<span class="newarticle">Updated!</span>';
		        }
		      } 
		  }
		  if ( PublishedDaysOld < 30 ) {
                     if ( CreatedDaysOld < 30 || ( CreatedDaysOld <= PublishedDaysOld) ) {
                        return '<span class="newarticle">New!</span>';
                     }
                  else {
                     return '<span class="newarticle">Updated!</span>';
                  }
               }
               return ''; 
               } 
               
    /***************************/
    /* date & time              */
    /***************************/
    
			function getCalendarDate()
			{
			   var months = new Array(13);
			   months[0]  = "January";
			   months[1]  = "February";
			   months[2]  = "March";
			   months[3]  = "April";
			   months[4]  = "May";
			   months[5]  = "June";
			   months[6]  = "July";
			   months[7]  = "August";
			   months[8]  = "September";
			   months[9]  = "October";
			   months[10] = "November";
			   months[11] = "December";
			   var days   = new Array(7);
			   days[0]    = "Sunday";
			   days[1]    = "Monday";
			   days[2]    = "Tuesday";
			   days[3]    = "Wednesday";
			   days[4]    = "Thursday";
			   days[5]    = "Friday";
			   days[6]    = "Saturday";
			   var now         = new Date();
			   var monthnumber = now.getMonth();
			   var monthname   = months[monthnumber];
			   var monthday    = now.getDate();
			   var weekday     = days[now.getDay()];
			   var year        = now.getYear();
			   if(year < 2000) { year = year + 1900; }
			   var dateString = weekday +
			                    '&#xA0;' +			   
			                    monthname + 
								'&#xA0;' + 
								monthday + 
								'&#xA0;' + 
								year;
			   return dateString;
			}
	
			function getClockTime()
			{
			   var now    = new Date();
			   var hour   = now.getHours();
			   var minute = now.getMinutes();
			   var ap = "AM";
			   if (hour   > 11) { ap = "PM";             }
			   if (hour   > 12) { hour = hour - 12;      }
			   if (hour   == 0) { hour = 12;             }
			   //if (hour   < 10) { hour   = "0" + hour;   }
			   if (minute < 10) { minute = "0" + minute; }
			   var timeString = hour + 
								':' + 
								minute + 
								" " + 
								ap;
			   return timeString;
			}
			
	function doDate(dateString,dateFormat,nopadding) { 
	
		var createdDate = new Date(getDateFromFormat(dateString,'yyyy-MM-dd HH:mm'));
		if ( !(dateFormat) ) {
			dateFormat = 'd NNN y';
		}
                var spacer = '&#xA0;';
                if ( nopadding ) {
                    spacer = '';
                }

		return spacer+formatDate(createdDate,dateFormat)+spacer;
	}

/* we're also going to need the tab objects we use everywhere for the lawgroup directory thingy */

//tab object

function initTab(objName) {
        this.obj = objName;
        this.aNodes = [];
};


//Node definition

function tabNode(id, name, url, title) {
        this.id = id;
        this.name = name;
        this.url = url;
        this.title = title;
};

//Add node

initTab.prototype.add = function(id, name, url, title) {

        this.aNodes[this.aNodes.length] = new tabNode(id, name, url, title);
};

//Function to dump tabs as linked list

initTab.prototype.dumpTabs = function () {

        var outputStr = "";

        for (n = 0; n < this.aNodes.length; n++) {
                outputStr = outputStr + '<li id=\"tab' + this.aNodes[n].id + 'l\"><a name=\"tab' + this.aNodes[n].id + '\" href=\"#\" id=\"tab' + this.aNodes[n].id + 'r\" onclick=\"' + this.aNodes[n].url + '\">' + this.aNodes[n].title + '</a></li>\n'
        }

        return outputStr;
}

//Function to write tabs to div

initTab.prototype.doTabs = function(myDiv) {

        outputStr = '<ul id="mb1" style="margin:0px;padding:0px;top:0px;left:0px;vertical-align:top;">' + initialTab.dumpTabs() + '</ul>';

        myDiv.innerHTML = outputStr;

        return;
}

function changePage(doc_name, page_name, tabclass) {

        var myPageIndex = -1;

        var dataPages = doc_name.getElementsByClass(tabclass);

        for (i = 0; i < dataPages.length; i++) {
                dataPages[i].style.display="none";
                if (dataPages[i].id == page_name) myPageIndex = i;
        }

        if (doc_name.getElementById("tab" + myPageIndex + "l")) {
                doc_name.getElementsByTagName("body").item(0).id = "body_tab" + myPageIndex;
        }

        doc_name.getElementById(page_name).style.display = "block";

        return true;

}

//this function allows us to dynamically add, remove, swap & check css classes for an object

function jscss(a,o,c1,c2)
{
  switch (a){
    case 'swap':
      o.className=!jscss('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
      break;
    case 'add':
      if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
      break;
    case 'remove':
      if(!jscss('check',o,c1)) return;
      var rep=o.className.match(' '+c1)?' '+c1:c1;
      o.className=o.className.replace(rep,'');
      break;
    case 'check':
      return new RegExp('\\b'+c1+'\\b').test(o.className)
      break;
  }
}

/***********************************************/
/* staffsearch profile switcher */
/***********************************************/

function profile_switch() {
        if (document.getElementById('professional_biography').style.display != 'none') {document.getElementById('professional_biography').style.display = 'none';document.getElementById('personal_biography').style.display = 'block';document.getElementById('profile_switcher').value = 'View Professional Profile';} else {document.getElementById('professional_biography').style.display = 'block';document.getElementById('personal_biography').style.display = 'none';document.getElementById('profile_switcher').value = 'View Personal Profile';}}

/***********************************************/
/* show/hide faq function */
/***********************************************/

function skift(divId) { 
 var d = IDObject(divId);
 var Stat = d.style.display; 
 if (Stat != 'block') { 
	d.style.display = 'block'; 
 }else{ 
	d.style.display = 'none';
 }
}

function IDObject(id) {
 if (ie4) {
  return document.all[id]; 
 } else {
  return document.getElementById(id); 
 }
}

var ie4 = false;
if(document.all) {
  ie4 = true; 
}

/***********************************************/
/* more show/hide faq function */
/***********************************************/

function expandFirst() {
document.getElementById(expandFirst.arguments[0]).style.display = "block";
for (var i=1; i<expandFirst.arguments.length; i++) {
document.getElementById(expandFirst.arguments[i]).style.display = "none";
}
}
function expandCollapse() {
for (var i=0; i<expandCollapse.arguments.length; i++) {
var element = document.getElementById(expandCollapse.arguments[i]);
element.style.display = (element.style.display == "none") ? "block" : "none";
}
}

