

//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);
  }