var ie4=document.all;
var ns6=document.getElementById&&!document.all;
var ns4=document.layers;
var opr6=navigator.userAgent.indexOf("Opera")!=-1;
var fltIEVersion = -1;
if (navigator.userAgent.indexOf("MSIE")!=-1)    
  fltIEVersion = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("MSIE")+5, 3));


var imgArrowDown = new Image;
var imgArrowRight = new Image;

imgArrowDown.src = '/assets/extranet/arrow-down.gif';
imgArrowRight.src = '/assets/extranet/arrow-right.gif';

var curDate = new Date();
  
var curYear = curDate.getYear();
if (curYear < 1900) curYear += 1900;

var arrRecords = new Array();  // VALUES TO HOLD RECORD DATES IN      
var arrMonths = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var objObject, lngYearCounter;

var lngStartYear, intStartMonth, lngEndYear, intEndMonth;
var intAlertChecked; // for persistency with Alert switching


//  Position Logout DIV
window.onresize = fnPositionDiv;


if ((ie4&&!opr6)&&(fltIEVersion>=5))
{
   document.write("<IFRAME id=\'iframe1\' name=\'iframe1\' frameborder=0 src=\"/blank.html\" scroll=none style=\"width: 340px; visibility: hidden; height: 156px; background-color: #f1f1f1; position: absolute; left: 400px; top: 68px; border-color: green; z-index:80; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);\"></iframe>");
}


function windowOpen(w,h,name,URL) {
	newWin = window.open(URL,name,"resizable=no,scrollbars=no,width=" + w + ",height=" + h + ",top=20,left=20");
	if (!(newWin==null))  // Has it been blocked by a popup blocker?
    newWin.focus();
}

function fnSwitch(objObject, imgImageSwitch)
{
  objObject = fnFindBrowserStyle(fnFindBrowserObject(objObject));        

  objObject.display = (objObject.display=='block') ? 'none' : 'block';
  imgImageSwitch.src = (objObject.display=='block') ? imgArrowDown.src : imgArrowRight.src;
}

function fnSwitchAlerts(objChkAlert)
{
  var strIEAdditional;
  
  strIEAdditional = (ie4) ? "linkedform." : "";
  
  if (objChkAlert.checked)
  {
   objObject = fnFindBrowserObject(strIEAdditional + 'daily');    
    objObject.disabled = false;
    objObject = fnFindBrowserObject(strIEAdditional + 'weekly');    
    objObject.disabled = false;
    objObject = fnFindBrowserObject(strIEAdditional + 'immediate');    
    objObject.disabled = false;
    
    for (var intIndex = 0 ; intIndex < document.linkedform.email_frequency.length ; intIndex++)
      if (intAlertChecked == intIndex) document.linkedform.email_frequency[intIndex].checked = true;                   
    
    objObject = fnFindBrowserStyle(fnFindBrowserObject('lbldaily'));
    objObject.color = '#666666';
    objObject = fnFindBrowserStyle(fnFindBrowserObject('lblweekly'));
    objObject.color = '#666666';
    objObject = fnFindBrowserStyle(fnFindBrowserObject('lblimmediate'));
    objObject.color = '#666666';
  }
  else
  {
    for (var intIndex = 0 ; intIndex < document.linkedform.email_frequency.length ; intIndex++)
    {
      if (document.linkedform.email_frequency[intIndex].checked) intAlertChecked = intIndex;
      document.linkedform.email_frequency[intIndex].checked=false;            
    }  
    
    objObject = fnFindBrowserObject(strIEAdditional + 'daily');    
    objObject.disabled = true;
    objObject = fnFindBrowserObject(strIEAdditional + 'weekly');    
    objObject.disabled = true;
    objObject = fnFindBrowserObject(strIEAdditional + 'immediate');    
    objObject.disabled = true;
    
    objObject = fnFindBrowserStyle(fnFindBrowserObject('lbldaily'));
    objObject.color = '#aaaaaa';
    objObject = fnFindBrowserStyle(fnFindBrowserObject('lblweekly'));
    objObject.color = '#aaaaaa';
    objObject = fnFindBrowserStyle(fnFindBrowserObject('lblimmediate'));
    objObject.color = '#aaaaaa';
  }
}

function fnPositionDiv()
{
  var objObject = fnFindBrowserStyle(fnFindBrowserObject('logoutBox'));
  
  var screenX = (window.innerHeight) ? window.innerHeight : document.body.clientHeight;
  var screenY = (window.innerWidth) ? window.innerWidth : document.body.clientWidth;
  
  objObject.width='360px';
  objObject.height='150px';
  
  objObject.left = parseInt(screenY/2 - (parseInt(objObject.width)/2));
  objObject.top = (screenX/2 - (parseInt(objObject.height)/2));
  
  if ((ie4&&!opr6)&&(fltIEVersion>=5))
  {
    document.all.iframe1.style.left = objObject.left;
    document.all.iframe1.style.top = objObject.top;  
  }
}

function fnShowLogout()
{
 var objObject = fnFindBrowserStyle(fnFindBrowserObject('logoutBox')); 

 
 if ((ie4&&!opr6)&&(fltIEVersion>=5))  // Draw iframe below menu but above SELECT
   document.all.iframe1.style.visibility=(document.all.iframe1.style.visibility=="visible") ? "hidden" : "visible";
 
 objObject.display = (objObject.display=='block') ? 'none' : 'block';
}

function fnTurnOffSpacers()
{
  if (!opr6)  // OPERA & Netscape 6 DIV problem removal for other browsers
  {  
    var objSpacer=fnFindBrowserObject('operaspacer');
    
    var objObject;
    
    for (var intIndex=0 ; intIndex < objSpacer.length ; intIndex++)
    {
      objObject = fnFindBrowserStyle(fnFindBrowserObject("operaspacer["+intIndex+"]"));      
      objObject.display="none";
    }           
  }
}

function fnShowMenu(objIdent)
{   
  var objObject = fnFindBrowserStyle(fnFindBrowserObject('absolutemenus'));
  objObject.visibility=(ie4||ns6) ? "visible" : "show";
  
  var objObject = fnFindBrowserStyle(fnFindBrowserObject(objIdent));
  objObject.visibility=(ie4||ns6) ? "visible" : "show";
}

function fnHideMenu(objIdent)
{
  var objObject = fnFindBrowserStyle(fnFindBrowserObject('absolutemenus'));
  objObject.visibility=(ie4||ns6) ? "hidden" : "hide";
  
  var objObject = fnFindBrowserStyle(fnFindBrowserObject(objIdent));
  objObject.visibility=(ie4||ns6) ? "hidden" : "hide";
} 

function fnSwitchColour(objIdent, blnOver)
{
  var objObject = fnFindBrowserStyle(fnFindBrowserObject(objIdent));

  objObject.backgroundColor=(blnOver) ? "#ABADAE" : "#87ADCD";
}

var datMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

function fnDateRangeSetup(lngYear1, intMonth1, intYear2, intMonth2, lngSelectYear, intSelectMonth)
{ 
  lngStartYear = lngYear1;
  intStartMonth = intMonth1;
  lngEndYear = intYear2;
  intEndMonth = intMonth2;
  
  fnInitialiseDates(lngSelectYear, intSelectMonth)
}

function fnInitialiseDates(lngSelectYear, intSelectMonth)
{
  var intOptCount = document.perfdates.perftoyear.options.length;
  
  for (var intIndex = 0 ; intIndex < intOptCount ; intIndex++) document.perfdates.perftoyear.options[0] = null;      
  
  for (intIndex = lngEndYear ; intIndex >= lngStartYear ; intIndex--)
  { 
    document.perfdates.perftoyear.options[document.perfdates.perftoyear.options.length] = new Option(intIndex, intIndex);    
    if (lngSelectYear==intIndex) 
      document.perfdates.perftoyear.selectedIndex = document.perfdates.perftoyear.options.length - 1;
  } 
  
  fnOptDateRange(intSelectMonth);
}

function fnOptDateRange(intSelectMonth)
{
  var intActualStart = 0;
  var intActualEnd = 11;
  var intOptCount = document.perfdates.perftomonth.options.length;
  var intOriginalMonthSelected;
    
  if (isNaN(intSelectMonth)) intSelectMonth = parseInt(document.perfdates.perftomonth.options[document.perfdates.perftomonth.selectedIndex].value);
  
  if (document.perfdates.perftoyear.options[document.perfdates.perftoyear.selectedIndex].value == lngStartYear)
    intActualStart = intStartMonth-1;
  if (document.perfdates.perftoyear.options[document.perfdates.perftoyear.selectedIndex].value == lngEndYear)
    intActualEnd = intEndMonth-1;
  if ((document.perfdates.perftoyear.options[document.perfdates.perftoyear.selectedIndex].value > lngEndYear)||(document.perfdates.perftoyear.options[document.perfdates.perftoyear.selectedIndex].value < lngStartYear))
    intActualEnd = -1;
  
  for (var intIndex = 0 ; intIndex < intOptCount ; intIndex++) document.perfdates.perftomonth.options[0] = null;
  
  if (intActualEnd==-1)
    document.perfdates.perftomonth.options[document.perfdates.perftomonth.options.length] = new Option("---", -1);
  else
  {    
    for (intIndex = intActualStart ; intIndex <= intActualEnd ; intIndex++)
    {
      document.perfdates.perftomonth.options[document.perfdates.perftomonth.options.length] = new Option(datMonths[intIndex], intIndex+1);
      if (intSelectMonth==intIndex+1) document.perfdates.perftomonth.selectedIndex = document.perfdates.perftomonth.options.length - 1;
    }

    //if (intOriginalMonthSelected > document.perfdates.perftomonth.options.length) intOriginalMonthSelected = document.perfdates.perftomonth.options.length - 1;
    //alert("intOriginalMonthSelected now: "+intOriginalMonthSelected);
    /*if ((intOriginalMonthSelected - intActualStart) >= 0) 
    {
      alert("Re-setting month: "+(intOriginalMonthSelected - intActualStart));
      document.perfdates.perftomonth.selectedIndex = intOriginalMonthSelected - intActualStart;
    }*/
  }
}

function selectDuplicates(objSecond)
{
//  objSecond.selectedIndex = objFirst.selectedIndex;
  if(objSecond.id.indexOf('year')!=-1) 
    fnOptDateRange();
}

function fnAddAll(objSelectFrom, objSelectTo)
{
  var objSelection

  if (ie4) objSelection = fnFindBrowserObject(eval('frmDownloader.'+objSelectFrom));
  else objSelection = fnFindBrowserObject(objSelectFrom);

  for (var intIndex=0 ; intIndex < objSelection.options.length ; intIndex++)
    objSelection.options[intIndex].selected = true;
  
  fnAddSelected(objSelectFrom, objSelectTo);        
}

function fnAddSelected(objSelectFrom, objSelectTo)
{
  if (ie4)
  {
    objSelectFrom = fnFindBrowserObject(eval('frmDownloader.'+objSelectFrom));
    objSelectTo = fnFindBrowserObject(eval('frmDownloader.'+objSelectTo));
  }
  else
  {
    objSelectFrom = fnFindBrowserObject(objSelectFrom);
    objSelectTo = fnFindBrowserObject(objSelectTo);
  }
  
  for (var intIndex=0 ; intIndex < objSelectFrom.options.length ; intIndex++)
    if (objSelectFrom.options[intIndex].selected)
    {
     objSelectTo.options[objSelectTo.options.length] = new Option(objSelectFrom.options[intIndex].text, objSelectFrom.options[intIndex].value);
     objSelectFrom.options[intIndex] = null;
     intIndex--;
    }  
}

function fnSwitchOn(strForm, strName)
{
  if (ie4)
    var objObject = fnFindBrowserObject(eval(strForm + "." + strName)); 
  else
    var objObject = fnFindBrowserObject(strName);
  
  objObject.checked = true;  
}


function dateRecord(lngYear, intMonth, intDay, strAlt) 
{
 this.lngYear = lngYear;
 this.intMonth = intMonth;
 this.intDay = intDay;
 this.altTag = strAlt;
}

function fnAddDateRecord(lngYear, intMonth, intDay, strAlt)
{ 
  /*if (!(arrRecords.length))
  {
    alert("here");
    var intOptCount = document.navdates.divDateTo_year.options.length;
    
    for (var intIndex = 0 ; intIndex < intOptCount ; intIndex++)
    {
      document.navdates.divDateTo_year.options[0] = null;      
      document.navdates.navto_year.options[0] = null;
    }
  }
  */
  
  arrRecords[arrRecords.length] = new dateRecord(lngYear, intMonth, intDay, strAlt);
  
  if (lngYear!=lngYearCounter)    
  {
    if (lngYearCounter==undefined)
    {
      var intOptCount = document.navdates.divDateTo_mon.options.length;
      var objdivDateTo_mon, objdivDateTo_day, objnavto_mon, objnavto_day;
      
      for (var intIndex = 0 ; intIndex < intOptCount ; intIndex++)
      { 
        document.navdates.divDateTo_mon.options[0] = null;      
        document.navdates.navto_mon.options[0] = null;
      } 
      
      intOptCount = document.navdates.divDateTo_day.options.length;
      
      for (intIndex = 0 ; intIndex < intOptCount ; intIndex++)
      { 
        document.navdates.divDateTo_day.options[0] = null;      
        document.navdates.navto_day.options[0] = null;
      } 
      
      if (ie4)
      {
        objdivDateTo_mon = fnFindBrowserStyle(fnFindBrowserObject('navdates.divDateTo_mon'));        
        objdivDateTo_day = fnFindBrowserStyle(fnFindBrowserObject('navdates.divDateTo_day'));
        objnavto_mon = fnFindBrowserStyle(fnFindBrowserObject('navdates.navto_mon'));
        objnavto_day = fnFindBrowserStyle(fnFindBrowserObject('navdates.navto_day'));
      }
      else
      {
        objdivDateTo_mon = fnFindBrowserStyle(fnFindBrowserObject('divDateTo_mon'));        
        objdivDateTo_day = fnFindBrowserStyle(fnFindBrowserObject('divDateTo_day'));
        objnavto_mon = fnFindBrowserStyle(fnFindBrowserObject('navto_mon'));
        objnavto_day = fnFindBrowserStyle(fnFindBrowserObject('navto_day'));
      }
      
      objdivDateTo_mon.color = '#aaaaaa';
      objdivDateTo_mon.backgroundColor = '#eeeeee';
      objdivDateTo_day.color = '#aaaaaa';
      objdivDateTo_day.backgroundColor = '#eeeeee';
      objnavto_mon.color = '#aaaaaa';
      objnavto_mon.backgroundColor = '#eeeeee';
      objnavto_day.color = '#aaaaaa';
      objnavto_day.backgroundColor = '#eeeeee';
      
      document.navdates.divDateTo_year.options[document.navdates.divDateTo_year.options.length] = new Option('--', -1);
      document.navdates.navto_year.options[document.navdates.navto_year.options.length] = new Option('--', -1);
      document.navdates.divDateTo_mon.options[document.navdates.divDateTo_mon.options.length] = new Option('--', -1);
      document.navdates.divDateTo_day.options[document.navdates.divDateTo_day.options.length] = new Option('--', -1);
      document.navdates.navto_mon.options[document.navdates.navto_mon.options.length] = new Option('--', -1);
      document.navdates.navto_day.options[document.navdates.navto_day.options.length] = new Option('--', -1);      
    }
    lngYearCounter = lngYear;    
    
    document.navdates.divDateTo_sely.options[document.navdates.divDateTo_sely.options.length] = new Option(lngYearCounter, lngYearCounter);
    document.navdates.navto_sely.options[document.navdates.navto_sely.options.length] = new Option(lngYearCounter, lngYearCounter);
    document.navdates.divDateTo_year.options[document.navdates.divDateTo_year.options.length] = new Option(lngYearCounter, lngYearCounter);
    document.navdates.navto_year.options[document.navdates.navto_year.options.length] = new Option(lngYearCounter, lngYearCounter);
  }
  
  return(arrRecords.length);
}

function fnDateSelectMonths(objSelectYear, objPopulateObj)
{ 
  var intYear = parseInt(eval('document.navdates.' + objSelectYear + '.options[document.navdates.' + objSelectYear + '.selectedIndex].value'));
  var intLastMonth;
 
  if (ie4)
    objPopulateObj = fnFindBrowserObject(eval('navdates.' + objPopulateObj));
  else
    objPopulateObj = fnFindBrowserObject(objPopulateObj);
  
  objObject = fnFindBrowserStyle(objPopulateObj)
  
  objObject.color = 'black';
  objObject.backgroundColor = 'white'; 
  
  var intOptCount = objPopulateObj.options.length;
 // objPopulateObj = eval('document.navdates.' + objPopulateObj);
  
  for (var intIndex = 0 ; intIndex < intOptCount ; intIndex++)
    objPopulateObj.options[0] = null;   
  
  for (intIndex = arrRecords.length-1  ; intIndex >= 0 ; intIndex--)
    if ((arrRecords[intIndex].lngYear==intYear)&&(arrRecords[intIndex].intMonth!=intLastMonth))
    {
      intLastMonth=arrRecords[intIndex].intMonth;
      objPopulateObj.options[objPopulateObj.options.length] = new Option(datMonths[arrRecords[intIndex].intMonth-1], arrRecords[intIndex].intMonth);
    }
}


function fnDateSelectDays(objSelectYear, objSelectMonth, objPopulateObj)
{ 
  var intYear = parseInt(eval('document.navdates.' + objSelectYear + '.options[document.navdates.' + objSelectYear + '.selectedIndex].value'));
  try
  {
    var intMonth = parseInt(eval('document.navdates.' + objSelectMonth + '.options[document.navdates.' + objSelectMonth + '.selectedIndex].value'));
  }
  catch(er)
  {
    intMonth = 0;
  }

  var intLastDay; // to stop duplicate days

  if (ie4)
    objPopulateObj = fnFindBrowserObject(eval('navdates.' + objPopulateObj));
  else
    objPopulateObj = fnFindBrowserObject(objPopulateObj);
  
  objObject = fnFindBrowserStyle(objPopulateObj)
  
  objObject.color = 'black';
  objObject.backgroundColor = 'white'; 
  
  var intOptCount = objPopulateObj.length;
  
  for (var intIndex = 0 ; intIndex < intOptCount ; intIndex++)
    objPopulateObj.options[0] = null;   
  
  for (intIndex = arrRecords.length-1  ; intIndex >= 0 ; intIndex--)
    if ((arrRecords[intIndex].lngYear==intYear)&&(arrRecords[intIndex].intMonth==intMonth)&&(arrRecords[intIndex].intDay!=intLastDay))
    {
      intLastDay=arrRecords[intIndex].intDay;
      objPopulateObj.options[objPopulateObj.options.length] = new Option(arrRecords[intIndex].intDay, arrRecords[intIndex].intDay);
    }
}


function fnPopulateData(strDivName)
{ fnPopulateDays(strDivName, curYear, curDate.getMonth()); }


function fnPopulateDays(strObjectName, lngYear, intMonth) 
{ 
  var datDate = new Date(lngYear, intMonth, 1);
  var strCalender = "<table id='tabSelector' cellpadding=2 cellspacing=1 border=0 summary='This table is used to choose a date'><tr>";
  var intDayCounter = 0;        
                  
  var blnFound = new Boolean;   
  
  if (((lngYear % 4 == 0) && (lngYear % 100 != 0)) || (lngYear % 400 == 0)) arrMonths[1] = 29; else arrMonths[1] = 28;
  
  intDay=1;        
  
  strCalender += "<tr><th align='center' id='header1' valign='middle' class='headerWeekend'>Sun</th><th id='header2' class='headerWeekday' align='center' valign='middle'>Mon</th><th align='center' id='header3' class='headerWeekday' valign='middle'>Tue</th><th align='center' id='header4' class='headerWeekday' valign='middle'>Wed</th><th align='center' id='header5' class='headerWeekday' valign='middle'>Thur</th><th align='center' id='header6' class='headerWeekday' valign='middle'>Fri</th><th align='center' id='header7' valign='middle' class='headerWeekend'>Sat</th></tr>";
  
  for (var intIndex=1 ; intIndex <= datDate.getDay() ; intIndex++)
  {
    strCalender += "<td class='noday' headers='header" + ((intIndex % 7) + 1) + "'>&nbsp;</td>";
    intDayCounter ++;
  }
  
  for (intIndex = 1 ; intIndex <= arrMonths[datDate.getMonth()] ; intIndex++)
  {         
    strCalender += "<td align='center' headers='header" + ((intIndex % 7) + 1) + "' valign='middle'"
    
    if ((intIndex==curDate.getDate())&&(datDate.getMonth()==curDate.getMonth())&&(lngYear==curYear))
      strCalender += " class='curday'";
    else
      if (((intDayCounter % 7)!=0)&&((intDayCounter % 7)!=6))
        strCalender += " class='weekday'";
      else
        strCalender += " class='weekend'";
      
    strCalender += ">";
          
    blnFound = false;          
    
    for (intArrIndex = 0 ; intArrIndex < arrRecords.length ; intArrIndex++)                    
      if ((intIndex==arrRecords[intArrIndex].intDay)&&(datDate.getMonth()==(arrRecords[intArrIndex].intMonth-1))&&(lngYear==arrRecords[intArrIndex].lngYear))
      {
        blnFound = true;
        strCalender += "<A href=\"javascript:fnPopulateDates('" + strObjectName + "', " + intIndex + ", " + intMonth + ", " + lngYear + "); fnSwitchDisplay('" + strObjectName + "')\" title='" + arrRecords[intArrIndex].altTag + "' class='datLink'>" + intIndex + "</A></td>";
      }
             
    if (!blnFound) strCalender += intIndex + "</td>";
    
    intDayCounter ++;
    
    if ((intDayCounter % 7)==0) strCalender += "</tr><tr>";                  
  }
  
  intIndex = (intDayCounter > 35) ? 42 : 35; 
  
  for (intDayCounter ; intDayCounter < intIndex ; intDayCounter++)
    strCalender += "<td class='noday' headers='header" + ((intIndex % 7) + 1) + "'>&nbsp;</td>";
  
  strCalender += "</tr></table>";
  
  objObject=fnFindBrowserObject(strObjectName+'_datedays');                
  objObject.innerHTML = strCalender;
  
  if (ie4)
  {
    fnUpdateControls('navdates.' + strObjectName + '_selm', datDate.getMonth());
    fnUpdateControls('navdates.' + strObjectName + '_sely', lngYear);
  }  
  else
  {
    fnUpdateControls(strObjectName + '_selm', datDate.getMonth());          
    fnUpdateControls(strObjectName + '_sely', lngYear);      
  }                  
  
  fnSortControls(strObjectName);
}

function fnUpdateControls(strIdent, varValue) 
{
  objObject=fnFindBrowserObject(strIdent);
  
  for (var intIndex = 0 ; intIndex < objObject.options.length ; intIndex++)
    if (objObject.options[intIndex].value==varValue) objObject.selectedIndex = intIndex; 
}

function fnAddMonth(strObjectBase, intAddition) 
{ 
  var intMonth;                
  
  if (ie4)
    objObject = fnFindBrowserObject('navdates.' + strObjectBase + '_selm');
  else 
    objObject = fnFindBrowserObject(strObjectBase + '_selm');
    
  
  if (!(((objObject.selectedIndex + intAddition) < 0)||((objObject.selectedIndex + intAddition) > 11)))
  {
    objObject.selectedIndex += intAddition;
    intMonth = objObject.selectedIndex; 
    
    if (ie4)
      objObject = fnFindBrowserObject('navdates.' + strObjectBase + '_sely');
    else 
      objObject = fnFindBrowserObject(strObjectBase + '_sely');                    
      
    fnPopulateDays(strObjectBase, objObject.options[objObject.selectedIndex].value, intMonth);
  }
}

function fnSortControls(strObject)
{
  if (ie4)
    objObject = fnFindBrowserObject('navdates.'+strObject+'_selm');
  else
    objObject = fnFindBrowserObject(strObject+'_selm');
  
  if ((objObject.selectedIndex==0)||(objObject.selectedIndex==11)) 
  {
    if (objObject.selectedIndex==0) objObject = fnFindBrowserObject(strObject + 'LessDate'); else objObject = fnFindBrowserObject(strObject + 'MoreDate');
    objObject = fnFindBrowserStyle(objObject);
    objObject.color = '#333333';
    objObject.cursor = 'none';
  }
  else
  {
    objObject = fnFindBrowserObject(strObject + 'LessDate');
    objObject = fnFindBrowserStyle(objObject);
    objObject.color = 'white';
    objObject.cursor = 'pointer';
    objObject = fnFindBrowserObject(strObject + 'MoreDate');
    objObject = fnFindBrowserStyle(objObject);
    objObject.color = 'white';
    objObject.cursor = 'pointer';
  }
}

function fnSwitchDisplay(strObject)
{
  objObject = fnFindBrowserStyle(fnFindBrowserObject(strObject)); 
  
  objObject.display = (objObject.display=='block') ? 'none' : 'block';
}

function fnPopulateDates(strBaseName, intDay, intMonth, intYear)
{
  if (ie4)
  {
    fnUpdateControls('navdates.' + strBaseName + '_year', intYear);
    fnDateSelectMonths(strBaseName + '_year', strBaseName + '_mon');
    fnUpdateControls('navdates.' + strBaseName + '_mon', intMonth+1);
    fnDateSelectDays(strBaseName + '_year', strBaseName + '_mon', strBaseName + '_day');
    fnUpdateControls('navdates.' + strBaseName + '_day', intDay);        
  }  
  else
  {
    fnUpdateControls(strBaseName + '_year', intYear);
    fnDateSelectMonths(strBaseName + '_year', strBaseName + '_mon');    
    fnUpdateControls(strBaseName + '_mon', intMonth+1);
    fnDateSelectDays(strBaseName + '_year', strBaseName + '_mon', strBaseName + '_day');
    fnUpdateControls(strBaseName + '_day', intDay); 
  }  
}


function chkDownloader(blnVal)
{
  for (var intIndex = 0 ; intIndex < document.frmDownloader.elements.length ; intIndex++)
    if (document.frmDownloader.elements[intIndex].type=="checkbox")
      document.frmDownloader.elements[intIndex].checked=blnVal;
}


function chkCheck()
{ 
  blnResult = true;
  
  for (var intIndex = 0 ; intIndex < document.frmDownloader.elements.length ; intIndex++)
    if ((document.frmDownloader.elements[intIndex].type=="checkbox")&&(document.frmDownloader.elements[intIndex].name!="chkAll"))
      blnResult &= document.frmDownloader.elements[intIndex].checked;
  
  document.frmDownloader.chkAll.checked = blnResult; 
}


function fnCheckAll(objId)
{
   for (var intIndex = 0 ; intIndex < objId.options.length ; intIndex++)
     objId.options[intIndex].selected = true;
}


function fnFindBrowserObject(objIdent)
{ return (ie4 ? eval(objIdent) : ns6 ? document.getElementById(objIdent) : ns4 ? document.objIdent : ""); }

function fnFindBrowserStyle(objIdent)
{ return ((ie4||ns6) ? objIdent.style : objIdent); }






/******************************************************
 * Fund Selection Code used on the 'user profile' page
 * @userprofile (dev bookmark)
 */

var logger = {
    log: function( str ) {
        try { console.log( str ) }
        catch(e) { alert( str ) }
    }
};

var deselect = function( elems ) {
    for ( var i = 0, j = elems.length; i < j; i++ ) {
        elems[i].checked = false;
    }
}

var select = function( elems ) {
    for ( var i = 0, j = elems.length; i < j; i++ ) {
        elems[i].checked = true;
    }
}

var check_this = function( elem ) {
    // alert( 'check_this()' );
    var children = document.getElementById( elem.name + '-funds' ).getElementsByTagName('input');
    if ( elem.checked == false ) {
	deselect( children );
        if ( $('#select-all-funds').get(0).checked == true ) {
            $('#select-all-funds').get(0).checked = false;
        }
    } else {
        select( children );
    }
}

var watch_this = function( elem, p_id ) {
    // alert( p_id );
    var parent = document.getElementById( p_id );
    if ( elem.checked == false && parent.checked == true ) {
        parent.checked = false;
        // by default we should also turn-off global 
        // select all
        document.getElementById('select-all-funds').checked = false;
    }
}

var enable_select_all = function( elem ) {
    $(elem).click(function() {
        check_this( this );
    });

    /**
     * check if all the funds in this section are selected 
     * and if so, set elem.checked to true
     */
    var children = document.getElementById( elem.name + '-funds' ).getElementsByTagName('input');
    var selected = 0;
    for ( var i = 0, j = children.length; i < j; i++ ) {
        var child = children[i];
        $(child).click(function(){
            watch_this( this, elem.id );
        });
        if ( child.checked == true ) selected++;
    }
    if ( children.length == selected ) elem.checked = true;
}

var check_global_select = function( elem, list_str ) {
    var branches = list_str.split(/\;/);
    if ( elem.checked == true ) {
        for ( var i = 0, j = branches.length; i < j; i++ ) {
            var el = document.getElementById( branches[i] );
            if ( el.checked == false ) el.click();
        }
    } else {
        for ( var i = 0, j = branches.length; i < j; i++ ) {
            var el = document.getElementById( branches[i] );
            if ( el.checked == true ) el.click();
        }
    }
}

var enable_master_select_all = function( controller_elem, controlled_elems ) {
    $(controller_elem).click(function() {
        check_global_select( this, controlled_elems.join(';') );
    });
}

var prepareFundSelector = function() {
    // get elements we're interested in
    var user_form = document.getElementById('user-profile-form');
    var fund_list = document.getElementById('list-of-funds');

    /**
     * make height of the funds list the same as the form on the left
     * and enable scroll if needed
     */
    //var sync_height = $(user_form).height();
    //$(fund_list).height( sync_height );
    // alert( $(document).height() );

    /**
     * setup select-all checkboxes
     */
    var checkboxes = fund_list.getElementsByTagName('input');
    var fund_types = new Array();
    for ( i = 0, j = checkboxes.length; i < j; i++ ) {
        if ( checkboxes[i].value.match(/select-all/) ) {
            enable_select_all( checkboxes[i] );
            fund_types.push( checkboxes[i].id );
        }
    }
    // global select-all
    enable_master_select_all( document.getElementById('select-all-funds'), fund_types );
    
};


$(document).ready(function() {
    // alert( $(document).height() );
    prepareFundSelector();
    fnTurnOffSpacers();
    fnPositionDiv();
});

