// whitespace characters
var whitespace = " \t\n\r";
var defaultEmptyOK = false


function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)
{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

function isEmail (s) {
   if (isEmpty(s)) {
      if (isEmail.arguments.length == 1) {
       	return defaultEmptyOK;
      }
      else return (isEmail.arguments[1] == true);
   }
   
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function isValidEuroDate(dateStr) { 
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/; 
	
	var matchArray = dateStr.match(datePat); // is the format ok? 
	if (matchArray == null) { 
		//alert("Date is not in a valid format.") 
		return false; 
	} 

	day = matchArray[1]; // parse date into variables 
	month = matchArray[3]; 
	year = matchArray[4]; 
	if (day < 1 || day > 31) {
		return false; 
	} 
	if (month < 1 || month > 12) { // check month range 
		return false; 
	} 
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false 
	} 
	if (month == 2) { // check for february 29th 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); 
		if (day>29 || (day==29 && !isleap)) { 
			return false; 
		} 
	} 
	return true; // date is valid 
} 

function isValidUSDate(dateStr) { 
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/; 
	
	var matchArray = dateStr.match(datePat); // is the format ok? 
	if (matchArray == null) { 
		return false; 
	} 

	month = matchArray[1]; // parse date into variables 
	day = matchArray[3]; 
	year = matchArray[4]; 
	if (day < 1 || day > 31) {
		return false; 
	} 
	if (month < 1 || month > 12) { // check month range 
		return false; 
	} 
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false 
	} 
	if (month == 2) { // check for february 29th 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); 
		if (day>29 || (day==29 && !isleap)) { 
			return false; 
		} 
	} 
	return true; // date is valid 
} 

function ChangeFirmDirectory(objForm)
{
	var strUrl
	var intSelectedIndex
	intSelectedIndex = objForm.frmFirmDirectory.selectedIndex;
	strUrl = objForm.frmFirmDirectory.options[intSelectedIndex].value;
	if(strUrl == 'spacer'){objForm.frmFirmDirectory.selectedIndex = 0;}
	if(strUrl != '' && strUrl != 'spacer'){document.location = strUrl;}
	return true;
}  

function UpdateDate(myForm,DropValue)
	{	
		// This JavaScript is used to try and to keep the dates on the filter drop down
		// as user friendly as possible by making sure that the from date is never bigger 
		// that the to date and by switching on / off the month date pairs when Any is selected
//			var objForm = eval(myForm)
		var objForm = myForm
		
		var objToMonth = objForm.frmToMonth
		var objFromMonth = objForm.frmFromMonth
		var objToYear = objForm.frmToYear
		var objFromYear = objForm.frmFromYear
		
		// conditions below rely on first year and months being the third entry
		if (UpdateDate.arguments.length == 3) {
			if (UpdateDate.arguments[2] == true) {
				var dtToday = new Date()

// alert('From Year:' +objFromYear.selectedIndex + ', From Month:' + objFromMonth.selectedIndex + ', Compare:' + (dtToday.getMonth() + 2))

				if ((objFromYear.selectedIndex == 2) && (objFromMonth.selectedIndex < (dtToday.getMonth() + 2))) {
					objFromMonth.selectedIndex = dtToday.getMonth() + 2
				}
				if ((objToYear.selectedIndex == 2) && (objToMonth.selectedIndex < (dtToday.getMonth() + 2))) {
					objToMonth.selectedIndex = dtToday.getMonth() + 2
				}

			}
		}
		

		if(DropValue == 'FromMonth')
		{
		
			if(objFromMonth.selectedIndex != 0)
			{
						if(objFromYear.selectedIndex == 0)
						{	
							if(objToYear.selectedIndex != 0)
							{
								objFromYear.selectedIndex = objToYear.selectedIndex
							}
							else
							{
								objFromYear.selectedIndex = 1
							};
						};
										   
			}
			
			if(objFromMonth.selectedIndex == 0)
			{
						if(objFromYear.selectedIndex != 0)
						{objFromYear.selectedIndex = 0};
										   
			}
										   			
		
		}
		
		if(DropValue == 'FromYear')
		{
		
			if(objFromYear.selectedIndex != 0)
			{
						if(objFromMonth.selectedIndex == 0)
						{objFromMonth.selectedIndex = 1};
										   
			}
			
			if(objFromYear.selectedIndex == 0)
			{
						if(objFromMonth.selectedIndex != 0)
						{objFromMonth.selectedIndex = 0};
										   
			}
		}
			
		if(DropValue == 'ToMonth')
		{
		
			if(objToMonth.selectedIndex != 0)
			{
						if(objToYear.selectedIndex == 0)
						{objToYear.selectedIndex = 1};
										   
			}
			
			if(objToMonth.selectedIndex == 0)
			{
						if(objToYear.selectedIndex != 0)
						{objToYear.selectedIndex = 0};
										   
			}
										   			
		
		}
		
		if(DropValue == 'ToYear')
		{
		
			if(objToYear.selectedIndex != 0)
			{
						if(objToMonth.selectedIndex == 0)
						{objToMonth.selectedIndex = 1};
										   
			}
			
			if(objToYear.selectedIndex == 0)
			{
						if(objToMonth.selectedIndex != 0)
						{objToMonth.selectedIndex = 0};
										   
			}
										   
		
		 }
		 
		 if((objFromYear.selectedIndex != 0) && (objToYear.selectedIndex != 0))
		 {
			if(objFromYear.selectedIndex > objToYear.selectedIndex)
			{
					if(DropValue = 'ToYear')
					{
						objFromYear.selectedIndex = objToYear.selectedIndex;
					}
					
					if(DropValue = 'FromYear')
					{
						objToYear.selectedIndex = objFromYear.selectedIndex;						
					}
			}
			
			if(objFromYear.selectedIndex == objToYear.selectedIndex)
			{
				if(objFromMonth.selectedIndex > objToMonth.selectedIndex)
				{
					objToMonth.selectedIndex = objFromMonth.selectedIndex;
				}
			}			
		 }
	}	

function SetPageTargetName(strTargetName)
{
	if(window.name == "")
		{window.name = strTargetName;}
	return true;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

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_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0

  var strOptionValue; 
  
  strOptionValue = selObj.options[selObj.selectedIndex].value;
  if(strOptionValue=='spacer'){selObj.selectedIndex = 0;}
  else{
	if(strOptionValue != ''){
			eval(targ+".location='"+strOptionValue+"'");
			if (restore) selObj.selectedIndex=0;
		}
   }							 
}

function openWindow2(winfile)
{
	window.open (winfile,'','scrollbars=yes,width=614,Height=500')
}

function checkboxupdate(){
// This function removes text from the keywords text box if both of the filed search checkboxes have
// been unchecked.
	if((frmPubSearch.frmTitleSearch.checked==false)&&(frmPubSearch.frmDescriptionSearch.checked==false)){
			frmPubSearch.frmKeywords.value='';};
	}
function keywordupdate(){
// This function makes sure that atleast the title checkbox is selected is any text is entered into the
// keyword textbox.
	if((frmPubSearch.frmTitleSearch.checked==false)&&(frmPubSearch.frmDescriptionSearch.checked==false)&&(frmPubSearch.frmKeywords.value!='')){
		frmPubSearch.frmTitleSearch.checked = true;
	}	
}

function ValidateSpacerSelect(selObj)
{
	var strOptionValue
	var strOptionCurrentValue
	
	strOptionValue = selObj.options[selObj.selectedIndex].value;
	while((strOptionValue == 'spacer') && (selObj.selectedIndex != 0))
	{
		selObj.selectedIndex = selObj.selectedIndex - 1;
		strOptionValue = selObj.options[selObj.selectedIndex].value;
	}
	if(((selObj.selectedIndex - 1) != 0) && (strOptionValue != 'spacer'))
	{
		strOptionCurrentValue = strOptionValue;
		strOptionValue = selObj.options[selObj.selectedIndex - 1].value;
		while((strOptionValue == strOptionCurrentValue) && ((selObj.selectedIndex - 1) != 0))
		{
			selObj.selectedIndex = selObj.selectedIndex - 1;
			strOptionValue = selObj.options[selObj.selectedIndex - 1].value;
		}
	}
 return true;
}

function LoadDotCom(strURL)
{
	var objDotComWin = window.open(strURL, 'linklatersMain');
	objDotComWin.focus()
}

function LoadCareers(strURL)
{
	var objDotComWin = window.open(strURL, 'linklatersCareers');
	objDotComWin.focus()
}

function ValidateSearch(objForm)
{
	if(isWhitespace(objForm.frmKeywords.value) || isEmpty(objForm.frmKeywords.value))
	{	
		document.location = '/search/index.asp';
		return false
	}
return true
}

