

//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2008 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
    var version;
    var axo;
    var e;
    // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
    try {
        // version will be set for 7.X or greater players
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
        version = axo.GetVariable("$version");
    } catch (e) {
    }
    if (!version)
    {
        try {
            // version will be set for 6.X players only
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
            
            // installed player is some revision of 6.0
            // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
            // so we have to be careful. 
            
            // default to the first public version
            version = "WIN 6,0,21,0";
            // throws if AllowScripAccess does not exist (introduced in 6.0r47)        
            axo.AllowScriptAccess = "always";
            // safe to call for 6.0r47 or greater
            version = axo.GetVariable("$version");
        } catch (e) {
        }
    }
    if (!version)
    {
        try {
            // version will be set for 4.X or 5.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = axo.GetVariable("$version");
        } catch (e) {
        }
    }
    if (!version)
    {
        try {
            // version will be set for 3.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = "WIN 3,0,18,0";
        } catch (e) {
        }
    }
    if (!version)
    {
        try {
            // version will be set for 2.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            version = "WIN 2,0,0,11";
        } catch (e) {
            version = -1;
        }
    }
    
    return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
    // NS/Opera version >= 3 check for Flash plugin in plugin array
    var flashVer = -1;
    
    if (navigator.plugins != null && navigator.plugins.length > 0) {
        if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
            var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
            var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
            var descArray = flashDescription.split(" ");
            var tempArrayMajor = descArray[2].split(".");            
            var versionMajor = tempArrayMajor[0];
            var versionMinor = tempArrayMajor[1];
            var versionRevision = descArray[3];
            if (versionRevision == "") {
                versionRevision = descArray[4];
            }
            if (versionRevision[0] == "d") {
                versionRevision = versionRevision.substring(1);
            } else if (versionRevision[0] == "r") {
                versionRevision = versionRevision.substring(1);
                if (versionRevision.indexOf("d") > 0) {
                    versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
                }
            }
            var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
        }
    }
    // MSN/WebTV 2.6 supports Flash 4
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
    // WebTV 2.5 supports Flash 3
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
    // older WebTV supports Flash 2
    else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
    else if ( isIE && isWin && !isOpera ) {
        flashVer = ControlVersion();
    }    
    return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
    versionStr = GetSwfVer();
    if (versionStr == -1 ) {
        return false;
    } else if (versionStr != 0) {
        if(isIE && isWin && !isOpera) {
            // Given "WIN 2,0,0,11"
            tempArray         = versionStr.split(" ");     // ["WIN", "2,0,0,11"]
            tempString        = tempArray[1];            // "2,0,0,11"
            versionArray      = tempString.split(",");    // ['2', '0', '0', '11']
        } else {
            versionArray      = versionStr.split(".");
        }
        var versionMajor      = versionArray[0];
        var versionMinor      = versionArray[1];
        var versionRevision   = versionArray[2];
            // is the major.revision >= requested major.revision AND the minor version >= requested minor
        if (versionMajor > parseFloat(reqMajorVer)) {
            return true;
        } else if (versionMajor == parseFloat(reqMajorVer)) {
            if (versionMinor > parseFloat(reqMinorVer))
                return true;
            else if (versionMinor == parseFloat(reqMinorVer)) {
                if (versionRevision >= parseFloat(reqRevision))
                    return true;
            }
        }
        return false;
    }
}
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }
  document.write(str);
}
function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    
    switch (currArg){    
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":    
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}


//-------------------------------------

// One object tracks the current modal dialog opened from this window.
var dialogWin = new Object();

// this function uses a js variable "project" defined in CMS templates.
//var project = "#RDE-VAR:rdeProjectID/#"; 

function openWin(winURL) {
            var host = window.location.host;
            var h = (window.screen.availHeight - 60);
            var w = (window.screen.availWidth - 20);
            var url = "/cps/rde/xchg/" + project + "/site/direct.xml?molURL=" + winURL.replace(/\&/,"%26");            
            window.open( url , 'Statement', 'width=' + w + ',height=' + h + ',screenX=5,screenY=5,left=5,top=5,resizable=yes,menubar=no,scrollbars=yes,titlebar=no,toolbar=no,status=no,location=no');
        }

function openDialog(url, width, height, returnFunc, args) {
    
    if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {

        if (width < 250) width = 250;
        // Initialize properties of the modal dialog object.
        dialogWin.returnFunc = returnFunc
        dialogWin.returnedValue = ""
        dialogWin.args = args
        dialogWin.url = 
           "/cps/rde/xchg/" + project + "/site/mol-general.html?molURL=" + url           
        if ( url.indexOf("tfn_entry.jsp") > 0 ){
                dialogWin.url = 
                   "/cps/rde/xchg/" + project + "/site/mol-tfn.html"        
            }
        dialogWin.width = width
        dialogWin.height = height
        // Keep name unique so Navigator doesn't overwrite an existing dialog.
        dialogWin.name = (new Date()).getSeconds().toString()
        // Assemble window attributes and try to center the dialog.

        // The best we can do is center in screen.
        dialogWin.left = (screen.width - dialogWin.width) / 2
        dialogWin.top = (screen.height - dialogWin.height) / 2
        var attr = "left=" + dialogWin.left + ",screenX=" + dialogWin.left + ",top=" + 
           dialogWin.top + ",screenY=" + dialogWin.top + ",resizable=no,width=" + dialogWin.width + 
           ",height=" + dialogWin.height + ",scrollbars=yes" ;
        
        // Generate the dialog and make sure it has focus.
        
        dialogWin.win=window.open(dialogWin.url, dialogWin.name, attr)
        //dialogWin.win=window.open(dialogWin.url, dialogWin.name, "")        
        dialogWin.win.focus()
    } else {
        dialogWin.win.focus()
    }
}

// START LOADING FUNCTIONS
var formSubmitted = false;

function setPageLoading(){
    formSubmitted = true;
}

function isPageLoading(){
    return formSubmitted;
}

// the same as submit loading url except get the url from a function.
function submitLoadingURLWithFunct(func) {

    if (!isPageLoading()) {
        //alert("about to load funct");
        if (func()) {
            setPageLoading();
        }
    }
}

function submitLoadingURL(theForm, url) {

    if (!isPageLoading()) {
        if (url != ''){
            theForm.action=url;
        }
        setPageLoading();
        theForm.submit();
    }
}


function submitLoading( theForm ) {
    submitLoadingURL(theForm, '' );
}

/* focus */
// Set focus on the first element that the user is reqd to fill in
function setFirstFocus(){
    var theForm;
    var formFound = false;
    var excluded = "account_selector helpid";
    for(var i=0; i < document.forms.length; i++) {
        var tmpName = document.forms[i].id;
        if(excluded.indexOf(tmpName) == -1) {
            var tmpForm = document.forms[tmpName];
            if(isDefined(tmpForm)) {
                theForm = tmpForm;
                formFound = true;
                break;
            }        
        }
    }
    if(formFound) {
        var smallestIndex = -1;
        var smallestElement;
        for(var i=0, elementCount = theForm.elements.length; i < elementCount; i++) {
            var element = theForm.elements[i];
            if (isFocusable(element)) {
                if(smallestIndex == -1) {
                    smallestIndex = element.tabIndex;
                    smallestElement = element;
                } else if(element.tabIndex < smallestIndex){
                    smallestIndex = element.tabIndex;
                    smallestElement = element;    
                }
            }        
        }
        if(smallestIndex != -1) {
            smallestElement.focus()
        }
    }    
}

function isFocusable(element) {
    return element.tabIndex > 0 && 
        (element.type.indexOf('text') != -1 || element.type == 'password') &&
        !( (element.type.indexOf('text') != -1) && element.readOnly) && 
        !element.disabled;
}


function removeCommas(inString) {
    if (inString == null) {
        return null;
    }
    var resultingString = "";
    for(var i=0; i < inString.length; i++) {
        if (inString.charAt(i) != ',') {
            resultingString += inString.charAt(i);
        }
    }
    return resultingString;
}

function cleanRound(in_string, dp) {
    in_string = round(in_string, dp);
    
    // a unusual result created from the round function
    if (in_string == "00" ){
        in_string = "0.";
        for (var i=0; i < dp; ++i){
            in_string += "0";    
        }            
    } else {
        if (in_string.length > 1 && in_string.charAt(0) == 0 && in_string.charAt(1) != "." ){
            in_string = in_string.substr(1,in_string.length-1);
        }
    }
    
    // decimal places are zero but not catered for
    if (in_string.charAt(in_string.length-1) == '.') {
        in_string = in_string.substr(0,in_string.length-1)
    }
    
    // only decimal but no zero
    if (in_string.charAt(0) == '.'){
        in_string = "0" + in_string;    
    }
    return in_string;
}

function round(in_string, dp) {
    in_string = "" + in_string;
    if(is_number(in_string)) {
        num = parseFloat(in_string);
        temp = "";
        if(num == 0) {
            temp = "0";
            for(i=0;i<dp;++i) {
                temp += "0";
            }
        } else {
            if(num < 1 && num > 0) {
                temp = "0";
            }
            temp += Math.round(num * Math.pow(10, dp));
        }
        retval = temp.substring(0, temp.length - dp);
        if (dp != 0){
            retval = retval + "." + temp.substring(temp.length - dp, temp.length);
            if (retval.charAt(0) == "." ){
                retval = "0" + retval;    
            }
        }
        
        return retval;
    } else {
        return in_string;
    }
}


function focusAndSelect(obj) {
    if(obj && obj.type != 'hidden' && obj.type != 'span') {
        if(obj.select) {
            obj.select();
        }
        if(obj.focus) {
            obj.focus();
        }
    }
}

function isNumber(fld) {
    return is_number(fld.value);
}

function is_number(in_string) {
    allow = '0123456789.';
    if (in_string == '') {
        return false;
    }
    var i;
    for (i = 0; i < in_string.length; i++){
        if (allow.indexOf(in_string.charAt(i)) == -1){
            if (!(i == 0 && in_string.length > 1 && in_string.charAt(i) == '-')) {
                return false;
            }
        }
    }
    return true;
}

function onlinePopupWin(app,height,width,target) {
    h = (window.screen.availHeight - 100);
    w = (window.screen.availWidth - 30);
    if (width != undefined && height != undefined)
    {
        h = height;
        w = width;
    }
    t = 'GESB'
    if (target != undefined) {t = target;}
    t = t.replace(/-/g,'');
    t = t.replace(/\s/g,'');
    var winRef=window.open(app, t, 'width=' + w + ',height=' + h + ',screenX=5,screenY=5,left=5,top=5,resizable=yes,menubar=no,scrollbars=yes,titlebar=no,menubar=no,toolbar=no,status=yes');
    winRef.focus();
}

function isDefined(a) {
    return typeof a != 'undefined';
}
  
function formatLastLoggedIn(date, label){
      var offset = new Date().getTimezoneOffset();
      offset *= -1;
      var GMT = new String();
      if((offset % 60) != 0){
          GMT = ((offset - 30) / 60) + ":30 GMT";
      } 
      else{
          GMT = offset / 60 + " GMT";
      }
      var text = label + " " + formatDay(date) + " " + formatMonth(date) + " " + 
      date.getDate() + " " + date.getFullYear() + ", " + formatDecimal(date.getHours()) + ":" +
      formatDecimal(date.getMinutes()) + " (Time Zone " + GMT +")";
      return text;
  }
  
  /* 
  Gets the hour or minute and formats it to the correct decimal place
  */
  function formatDecimal(t){
      var time = new String();
      if(t < 10){
          time = "0" + t;    
      }    
      else{
          time = t;
      }
      return time;
  }
  /* 
  Gets the month name as a string from a date object
  */
  function formatMonth(D) {
      var MA = new String('JanFebMarAprMayJunJulAugSepOctNovDec')
      var M3 = 3*D.getMonth();
      var month = MA.substring(M3, M3+3);
      return month;
  }
  
  /* 
  Gets the day name as a string from a date object
  */
  function formatDay(D) {
      var DA = new String('SunMonTueWedThuFriSat')
      var D3 = 3*D.getDay();
      var day = DA.substring(D3, D3+3);
      return day;
  }
   /*
  Find the position of the parent element
  */
  function findPos(obj) 
  {
    var curleft = curtop = 0;
      if (obj.offsetParent)
      {
        do
        {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curleft,curtop];
  }
  
  /*
  Re-position the element...needed since IE6 is behaving differently
  */
  function rePosition(objAddThis)
  {
    var myArray = [2];
    var objReturn = addthis_open(objAddThis, '', '[URL]', '[TITLE]');
    
    if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) == 6))
    {
        objPopup = document.getElementById("at15s");
        objParent = document.getElementById("addthis-img");
        myArray = findPos(objParent);
        myArray[0] = myArray[0] - (objPopup.clientWidth - objParent.width);
        myArray[1] = myArray[1] + objParent.height + 1;
        objPopup.style.left = myArray[0] + 'px';
        objPopup.style.top = myArray[1] + 'px';
    }
    return (objReturn);
  }
  
/* Functions copied in from ePass file global.js */
function isEmpty(value) {
	if (typeof value == 'object') {
		value = value.value;
	}
	return value == null || trim(value).length == 0;
}

function trim(str) {
	while((str.lastIndexOf(" ") == str.length-1) && (str.length > 0)) {
		str = str.substring(0, str.length-1);
	}
	return str;
}


// Function to fix Investments Issue here
/* changes and help */

function checkUnsavedChange( field, form_name, event) {	
	if ( document.forms[form_name].unsaved_changes.value == "true") {
		return;
	} else {
		if (field.type == 'checkbox') {
			if (event == 'onchange') {
				registerUnsavedChange(form_name);
			}
		}	
		else if (field.type == 'select-one') {
			if (event == 'onchange') {
				registerUnsavedChange(form_name);
			}
		} else if (field.value != field.defaultValue) {
			registerUnsavedChange(form_name);
		}
	}
}

function registerUnsavedChange( form_name ) {
	var unsavedField = document.forms[form_name].unsaved_changes;
	if (!unsavedField) {
		return;	
	}
	var firstSave = "false" == unsavedField.value;
	if (firstSave) {
		unsavedField.value = "true";
		
		var unsavedMessageDiv = document.getElementById('l-unsaved-changes');
		unsavedMessageDiv.className = 'active-unsaved-changes';	
	}
}

function checkUnsavedRefresh( form_name ) {
	var unsavedField = document.forms[form_name].unsaved_changes;
	if ("true" == unsavedField.value) {
		unsavedField.value = "false";
		registerUnsavedChange( form_name );	
	}
}


function setHelpText( helpText ) {
	var helpDiv = document.getElementById("l-help");
	helpDiv.innerHTML = '<p>' + helpText + '</p>';
}

function resetHelpText( helpText ) {
	var helpDiv = document.getElementById("l-help");
	helpDiv.innerHTML = '';
}

function help() {
	//determine which page is showing and open the help for it
	url = document.forms['helpid'].help.value;
	var pageName = getRootDirectory() + 'member/help.jsp?page=' + url;
	window.open(pageName,'helpwin');
}




//Proj 19277 on 12/6/2007 by lxb : Uses new formatLastLoggedDate method containing extra parameters
function formatLastLoggedIn(date, label, dateFormat){
	return label + " " + formatLastLoggedInDate(date, dateFormat);
}

// --------------------------------------------------------------------------------
// Proj 19277 on 12/6/2007 by lxb : Using this function to format the date and time
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// Note: To escape a character that is also a token (e.g. problem found when adding separator 'at')
// prefix the character with '\\'. Example format: E MMM d yyyy \\at hh:mm a
// --------------------------------------------------------------------------------
var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}

/*
 * The format string consists of the following abbreviations:
 * 
 * Field        | Full Form          | Short Form
 * -------------|--------------------|-----------------------
 * Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
 * Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
 *              | NNN (abbr.)        |
 * Day of Month | dd (2 digits)      | d (1 or 2 digits)
 * Day of Week  | EE (name)          | E (abbr)
 * Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
 * Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
 * Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
 * Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
 * Minute       | mm (2 digits)      | m (1 or 2 digits)
 * Second       | ss (2 digits)      | s (1 or 2 digits)
 * AM/PM        | a                  |
 * Timezone(GMT)| z
 *
 * Any characters not in the above list, will not be formatted
 * To exclude characters from being formatted, use the escape character \\.
 * 
 * Example: E NNN d yyyy \\at HH:mm (Ti\\m\\e Zon\\e z G\\MT)
 * Output: Tue Jun 12 2007 at 15:17 (Time Zone 9:30 GMT) 
 */
function formatDateText(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var z = date.getTimezoneOffset();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	//Calculate GMT time
	z *= -1;
	var tz = new String();
	if((z % 60) != 0){
		tz = ((z - 30) / 60) + ":30";
	} else{
		tz = z / 60 + "";
	}
	value["z"]=tz;
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null && (i_format < 2 || format.charAt(i_format-2) != '\\')) { result=result + value[token]; }
		else { 
		    token = token.replace('\\', '');
		    result=result + token; }
		}
	return result;
	}
	


function filter_number(in_string){
	var lookup='0123456789.'
	var temp=''
	in_string=in_string+""

	for (i=0; i< in_string.length; i++){
		if (lookup.indexOf(in_string.charAt(i))!=-1){
			temp+=in_string.charAt(i)
		}
	}
	return temp
}

function split_numeric(in_string) {
	var new_array=new Array()
	var lookup='0123456789'
	var j=0
	var temp=""
	var i

	in_string=in_string+""
	for (i=0; i< in_string.length; i++){
		if (lookup.indexOf(in_string.charAt(i))==-1){
			if (temp !=''){
				new_array[j]=temp
				temp=""
				j++
			}
		}else{
			temp+=in_string.charAt(i)
		}
	}
	if(temp!="")
		new_array[j]=temp
	return new_array
}

function check_date(day,month,year){
  day=parseInt(day+"", 10)
  month=parseInt(month+"", 10)
  year=parseInt(year+"", 10)
  if (month == 1||month == 3||month == 5||month == 7||month == 8||month == 10||month == 12)
      if (31 >= day && day >=1)
          return true
  if (month == 2){
      days=28
      if (year%4==0)
          days=29
      if (year%100==0)
          days=28
      if (year%400==0)
          days=29
      if (days >=day && day >=1)
          return true
  }
  if (month == 4||month == 6||month == 9||month == 11)
      if (30 >= day && day >=1)
          return true
  return false
}



function format(element) {
	element.value = round(element.value, 2);
}

function checkDate(field){
	var nw=new Date()
	var val = field.value
	val = val+''

	strings = split_numeric(val)
	if (strings.length == 3) {
		day = parseInt(strings[0], 10);
		month = parseInt(strings[1], 10);
		year = parseInt(strings[2], 10);
	} else {
		return false;
	}
	if (day > 31 && 32>year){
		temp=day
		day=year
		year=temp
	}
	if (year < 100){
		//proj 23046 by uxk on 24/10/2008 : fixed incorrect date conversion error. 
		cy= nw.getFullYear()
		cy=cy+""
		cn = cy.substring(0, cy.length-2)+"00"
		cn=parseInt(cn)
		
		if (Math.abs(cy - (cn+year))>Math.abs(cy - (cn+year -100))){
            year=cn+year -100
		}else if(Math.abs(cy - (cn+year))>Math.abs(cy - (cn+year +100))){
            year=cn+year +100
		}else{
            year=cn+year
		}
	}
	if (!check_date(day,month,year)){
		return false
	}
	field.value=((10>day)?"0":"")+day+"/"+((10>month)?"0":"")+month+"/"+year
	return true
}

//These are the nice functions that should be called
//from other pages.

function isBlank(fld) {
    return (fld.value == '');
}


function isDate(fld) {
    return checkDate(fld);
}

function trim(str) {
	while((str.lastIndexOf(" ") == str.length-1) && (str.length > 0)) {
		str = str.substring(0, str.length-1);
	}
	return str;
}

function trim2(before) {
	arrayOfStrings = before.split(" ");
	var after = "";
	for (var i=0; i<arrayOfStrings.length; i++) {
		after = after.concat(arrayOfStrings[i]);
	}
	return after;
}

function selected(sel) {
	return sel.options[sel.selectedIndex].value;
}

function selectedOption(sel) {
	return sel.options[sel.selectedIndex];
}

function filterNumber(fld) {
	fld.value = filter_number(fld.value);
	return fld;
}

function validateExpiry(strMonth, strYear) {
    /*
     * kb. (25/07/01). SIR 1030. Contrib expiry date not recognising month numbers starting with zero.
     * eg. '09'. Fixed parseInt invocations to specify the base.
     */
	expiry_month = parseInt(strMonth, 10);
	expiry_year = parseInt(strYear, 10);

	current = new Date();
	current_year = current.getYear();
	current_month = current.getMonth() + 1;

	if (expiry_month > 12 || expiry_month < 1) {
		return -1;
	} else if (expiry_year < current_year) {
		return -2;
	} else if ((expiry_year == current_year) && (expiry_month < current_month)) {
		return -3;
	} else {
		return 0;
	}
}

function formatDate(date) {
	return date.getDate() + "/" + (date.getMonth()+1) + "/" + (date.getYear() <= 1900 ? date.getYear() + 1900 : date.getYear());
}


/* This function comparse to date1 to date2
 * If date1 is less than date2 then -1 is returned
 * If date1 is greater than date2 1 is returned
 * If date1 is equal to date2 then 0 is returned
 */

function dateComparison(date1, date2) {
	var date1Year = date1.getYear() <= 1900 ? date1.getYear() + 1900 : date1.getYear();
	var date2Year = date2.getYear() <= 1900 ? date2.getYear() + 1900 : date2.getYear();
	if (date1Year < date2Year) {
		return -1;
	} else if (date1Year > date2Year) {
		return 1;
	} else {
		if (date1.getMonth() < date2.getMonth()) {
			return -1;
		} else if (date1.getMonth() > date2.getMonth()) {
			return 1;
		} else {
			if (date1.getDate() < date2.getDate()) {
				return -1;
			} else if (date1.getDate() > date2.getDate()) {
				return 1;
			} else {
				return 0;
			}
		}
	}
}


/* Compares the two dates which are strings in the form dd/MM/yyyy.
 * Returns 0 if date1 = date2
 * -1 if date1 is less than date2
 * 1 if date1 is greater than date2
 * -2 if an error occurred
 * NOTE that some kind of validation should first be performed on the given
 * dates. eg. checkDate() - see above
 */

function dateComparisonStr(date1, date2)
{
	var nw = new Date()

	firstDate = split_numeric(date1);
	secondDate = split_numeric(date2);

	if (firstDate.length == 3)
	{
		firstDay = parseInt(firstDate[0], 10);
		firstMonth = parseInt(firstDate[1], 10);
		firstYear = parseInt(firstDate[2], 10);
	}
	else
	{
		return -2;
	}

	if (secondDate.length == 3)
	{
		secondDay = parseInt(secondDate[0], 10);
		secondMonth = parseInt(secondDate[1], 10);
		secondYear = parseInt(secondDate[2], 10);
	}
	else
	{
		return -2;
	}

	if (firstYear == secondYear)
	{
		if (firstMonth == secondMonth)
		{
			if (firstDay == secondDay)
			{
				return 0;
			}
			else
			{
				return ((firstDay > secondDay) ? 1 : -1);
			}
		}
		else
		{
			return ((firstMonth > secondMonth) ? 1 : -1);
		}
	}
	else
	{
		return ((firstYear > secondYear) ? 1 : -1);
	}
}



function displayParentDiv(obj) {
	
	if (!obj.parentNode && obj.parentElement) {
		obj.parentNode = obj.parentElement;
	}
	if (!obj.parentNode) {
		return;
	}
	p = obj.parentNode ;
	
	if (p != null) {
		if (String(p.nodeName)=="SPAN" || String(p.nodeName)=="DIV") {
			//alert("found div");
			if (p.style.display == 'none') {
				p.style.display = 'inline';
			}
		}
		displayParentDiv(p);
	}
}

function radioValue(obj) {
	if (obj.length) {
		// more than 1 in the group
		for (var i=0; i<obj.length; ++i) {
			if (obj[i].checked) {
				return obj[i].value;
			}
		}
		return null;
	} else {
		return obj.value;
	}
}
function setRadioValue(obj, value) {
	alert(obj.length);
	for (var i=0; i<obj.length; ++i) {
		alert(obj[i]);
	}
}

// format number into #,##0.00 format
function formatDollarString(num,dp){
	var fnum = cleanRound(num, dp);
	
	if ( fnum.length >= 7 ){ 
		fnum = fnum.substr(0,fnum.length-6) + "," + fnum.substr(fnum.length-6,fnum.length);
	}
	if ( fnum.length >= 11 ){
		fnum = fnum.substr(0,fnum.length-10) + "," + fnum.substr(fnum.length-10,fnum.length);
	}
	if ( fnum.length >= 15 ){
		fnum = fnum.substr(0,fnum.length-14) + "," + fnum.substr(fnum.length-14,fnum.length);
	}
	
	return fnum;
}


function isUndefined(a) {
    return !isDefined(a);
}


function isDefinedAndEmpty(field) {
	if (!isDefined(field)) {
		return false;
	} else {
		return isEmpty(field);
	}
}

function isDefinedAndNotEmpty(field) {
	if (!isDefined(field)) {
		return false;
	} else {
		return !isEmpty(field);
	}
}

function isEmpty(value) {
	if (typeof value == 'object') {
		value = value.value;
	}
	return value == null || trim(value).length == 0;
}

function setValueIfDefined(field,value) {
	if (typeof field != 'undefined') {
		field.value = value;
	}
}

function clearIfDefined(field) {
	setValueIfDefined(field,'');
}

function enableFirst() {
	for(var i=1; i < arguments.length; i++) {
		var name = arguments[i];
		if (name != arguments[0]) {
			var ds = document.getElementById(name);
			if (ds) {
				ds.disabled = true;
			}
		}
	}
	var en = document.getElementById(arguments[0]);
	if (en) {
		en.disabled = false;
	}
	en.focus();
}

function checkRadioIfExists(name) {
	var radio = document.getElementById( name );
	if (radio) {
		radio.checked = true;
	}
}

function areCookiesEnabled(){
	//if not IE4+ nor NS6+
	if (!isDefined(navigator.cookieEnabled)){ 
	  	var tmpcookie = new Date();
	  	chkcookie = (tmpcookie.getTime() + '');
  		document.cookie = "chkcookie=" + chkcookie + "; path=/";
  		var cookieEnabled = !(document.cookie.indexOf(chkcookie,0) < 0);
		document.cookie=""; //erase dummy value
		return cookieEnabled;
	} else {
		return navigator.cookieEnabled;
	}
}

/*
 * Opens a 'generic' popup window. 
 */
function openPopupWindow(URL, width, height) {
	var h = height;
	var w = width;
	var top = 10;
	var left = 25;
	var params = 'width=' + w + ',screenX=5,screenY=5,height=' + h + ',left=' + left + ',top=' + top + ',resizable=yes,menubar=no,scrollbars=no,titlebar=no,toolbar=no,status=no';
    window.open(URL, new Date().getTime(), params);
}

// PG moved doPDF() to a central location
function doPDF(pdfURL) {
	openPopupWindowWithBorder(pdfURL, 50);
}

function openPopupWindowWithBorder(URL, border) {
	var h = Math.round(screen.availHeight - border);
	var w = Math.round(screen.availWidth - border);
	openPopupWindow(URL, w, h);
}

function openMemberPDF(url) {		
	var pdf_loc = getRootDirectory()+'members/pdf/'+url;		
	doPDF(pdf_loc);
}

/*
 * Valid return values NoJava, JavaUnknown, Java1.4-, Java5+
 */
function getJavaVersion() {
	var numPlugs=navigator.plugins.length;
	var lessJava15 = false;
	var equalMoreJava15 = false;
	if (numPlugs) {
		for (var x=0; x<numPlugs; x++) {
			var description = navigator.plugins[x].description;
			if (description.match('Java.* [2-9][.][0-9]')) {
				equalMoreJava15 = true;
			} else if (description.match('Java.* 1[.][5-9]')) {
				equalMoreJava15 = true;
			} else if (description.match('Java.* 1.[1-4]')) {
				lessJava15 = true;
			}
		}
	} else {
		return navigator.javaEnabled() ? 'JavaUnknown' : 'NoJava'
	}
	if (equalMoreJava15) {
		return 'Java5+';
	} else if (lessJava15) {
		return 'Java1.4-';
	} else {
		return 'NoJava';
	}
}

/*
	Show or hide a folder's files. Also change the icon on the folder to either
	folder-open or folder-closed.
*/
function changeFolderTree(id) {
	var files = document.getElementById(id);
	var shouldHide = (files.style.display != "none");
	files.style.display = shouldHide ? "none" : "inline";
	var folder = document.getElementById(id + 'folder');
	folder.className = shouldHide ? "folder-closed" : "folder-open";
}

function showSection(divId) {
	if (isDefined(document.getElementById(divId))) {
		document.getElementById(divId).style.display = "block";
	}
}

function hideSection(divId) {
	if (isDefined(document.getElementById(divId))) {
		document.getElementById(divId).style.display = "none";	
	}
}

/** can disable an entire editable results table row */ 
function disableRow(rowNumber) {
	var rowFields = getFieldsOfRow(rowNumber);
	
	for (var j = 0; j<rowFields.length; j++) {
		disableField(rowFields[j]);
	}
}

/** can enable an entire editable results table row */ 
function enableRow(rowNumber) {
	var rowFields = getFieldsOfRow(rowNumber);
	
	for (var j = 0; j<rowFields.length; j++) {
		enableField(rowFields[j]);
	}
}

function getFieldsOfRow(rowNumber) {
	var fields = new Array();
	var counter = 0;
	var trElement = document.getElementById('r_' + rowNumber);

	for (var i = 0; i<trElement.childNodes.length; i++) {
		
		if (trElement.childNodes[i].nodeName == "TD") {
			var inputFields = trElement.childNodes[i].getElementsByTagName("input");
			for (var j = 0; j<inputFields.length; j++) {
				fields[counter++] = inputFields[j];
			}
			
			var selectFields = trElement.childNodes[i].getElementsByTagName("select");
			for (var k = 0; k<selectFields.length; k++) {
				fields[counter++] = selectFields[k];
			}
		}
	}
	
	return fields;
}

function disableField(inputField) {
	if (!(inputField.className.substring(inputField.className.length-9,inputField.className.length) == ' disabled')) {
		inputField.className = inputField.className + " disabled";
	}
	inputField.disabled = 'disabled';
}

function enableField(inputField) {
	if (inputField.className.substring(inputField.className.length-9,inputField.className.length) == ' disabled') {
		inputField.className = inputField.className.substring(0,inputField.className.length-9);
		inputField.disabled = null;
	}
}

function login() {
	document.forms[0].submit();
	
	// Change cursor to wait
	var elem = document.getElementById('t-wrapper');
	if (elem) elem.style.cursor = 'wait';
	elem = document.getElementById('login_button')
	if (elem) elem.style.cursor = 'wait';
	
	// If logon msg exists, show it, and hide the error msg
	elem = document.getElementById('l-info');
	if (elem) {
		elem.style.display = 'block';
		elem = document.getElementById('l-error');
		if (elem) elem.style.display = 'none'
	}
}

function update(field, newValue) {
	field = document.getElementById(field);
	if (field != null && isDefined(field)) {
		if (field.nodeName == 'CHECKBOX') {
			field.checked = newValue;
		} else {
			field.value = newValue;	
		}
		var form = field.parentNode;
		while(isDefined(form)) {
			if (form.nodeName == 'FORM') {
				registerUnsavedChange( form.name );
				break;
			}
			form = form.parentNode;
		}
	}
}


// End functions to fix investment issue.

