<!--

// CONSTANTS
var separator = ","; // use comma as 000's separator
var decpoint = "."; // use period as decimal point
var percent = "%";
var currency = "$"; // use dollar sign for currency

function formatNumber(number, format, print) 
{ // use: formatNumber(number, "format")

  if (print) 
    document.write("formatNumber(" + number + ", \"" + format + "\")<br>");

  if (number - 0 != number) 
    return null; // if number is NaN return null
  var useSeparator = format.indexOf(separator) != -1; // use separators in number
  var usePercent = format.indexOf(percent) != -1; // convert output to percentage
  if (usePercent) 
    number *= 100;
  var useCurrency = format.indexOf(currency) != -1; // use currency format
  format = strip(format, separator + percent + currency); // remove key characters
  number = "" + number; // convert number input to string

  // split number and format into LHS and RHS using decpoint as divider
  var dec = number.indexOf(decpoint) != -1;
  var nleftEnd = (dec) ? number.substring(0, number.indexOf(".")) : number;
  var nrightEnd = (dec) ? number.substring(number.indexOf(".") + 1) : "";
  dec = format.indexOf(decpoint) != -1;
  var sleftEnd = (dec) ? format.substring(0, format.indexOf(".")) : format;
  var srightEnd = (dec) ? format.substring(format.indexOf(".") + 1) : "";
  //if (nrightEnd.length > 3)
  //	var srightEnd = (dec) ? format.substring(format.indexOf(".") + 2) : "";

  // adjust decimal places by cropping or adding zeros to LHS of number
  if (srightEnd.length < nrightEnd.length) 
  {
    var nextChar = nrightEnd.charAt(srightEnd.length) - 0;
    nrightEnd = nrightEnd.substring(0, srightEnd.length);
    if (nextChar >= 5) nrightEnd = "" + ((nrightEnd - 0) + 1); // round up
    if (srightEnd.length < nrightEnd.length) 
    {
      nrightEnd = nrightEnd.substring(1);
      nleftEnd = (nleftEnd - 0) + 1;
    }
  } 
  else 
  {
    for (var i=nrightEnd.length; srightEnd.length > nrightEnd.length; i++) 
    {
      if (srightEnd.charAt(i) == "0") 
        nrightEnd += "0"; // append zero to RHS of number
      else break;
    }
  }
  // adjust leading zeros
  sleftEnd = strip(sleftEnd, "#"); // remove hashes from LHS of format
  while (sleftEnd.length > nleftEnd.length)
    nleftEnd = "0" + nleftEnd; // prepend zero to LHS of number
  if (useSeparator) 
    nleftEnd = separate(nleftEnd, separator); // add separator
  var output = nleftEnd + ((nrightEnd != "") ? "." + nrightEnd : ""); // combine parts
  return ((useCurrency) ? currency : "") + output + ((usePercent) ? percent : "");
}

function strip(input, chars) 
{ // strip all characters in 'chars' from input
  var output = ""; // initialise output string
  for (var i=0; i < input.length; i++)
    if (chars.indexOf(input.charAt(i)) == -1)
      output += input.charAt(i);
  return output;
}

function separate(input, separator) 
{ // format input using 'separator' to mark 000's
  var output = ""; // initialise output string
  for (var i=0; i < input.length; i++) 
  {
    if (i != 0 && (input.length - i) % 3 == 0) output += separator;
    output += input.charAt(i);
  }
  return output;
}

function LTrim(str) 
{
  var s = new String(str);
  while (s.charAt(0) == ' ')
    s = s.substring(1);
  return s;
}

function LTrimZero(str) 
{
  var s = new String(str);
  while (s.charAt(0) == '0')
    s = s.substring(1);
  return s;
}

function RTrim(str) 
{
  // We don't want to trip JUST spaces, but also tabs,
  // line feeds, etc.  Add anything else you want to
  // "trim" here in Whitespace
  var whitespace = new String(" ");
  var s = new String(str);
  if (whitespace.indexOf(s.charAt(s.length-1)) != -1) 
  {
    // We have a string with trailing blank(s)...
    var i = s.length - 1;       // Get length of string
    // Iterate from the far right of string until we
    // don't have any more whitespace...
    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
      i--;

    // Get the substring from the front of the string to
    // where the last non-whitespace character is...
    s = s.substring(0, i+1);
  }
  return s;
}

function checkNaN(str)
{
  var bVal = false;
  if (isNaN(str) == false)
  {
    if (str.indexOf(".") == -1)
      bVal = true;
  }
  return bVal;
}

function isEmpty(str)	
{
  var b = false;
      
  strTemp = new String(str);	
  if (strTemp == null)
    b = true;
  else 
    if (strTemp == 'undefined' || strTemp=='null'|| strTemp.length == 0) 
      b = true;
  
  return b;
}

function ValidateCSWPrice(Price)
{
  if (Price == "-")
    Price = 0;
    
  return Price;
}

function mOvr(src, color)
{ 
  if (!src.contains(event.fromElement))
  { 
    src.style.cursor = 'hand'; 
    //src.bgColor = '#DEDEEF'
    src.bgColor = color
  } 
} 

function mOut(src, color)
{ 
  if (!src.contains(event.toElement))
  { 
    src.style.cursor = 'default'; 
    src.bgColor = color;
  } 
}

function OnMSBanner()
{
  window.open(URL_MSBANNER);
}

function Round(number,X) 
{
  // rounds number to X decimal places, defaults to 2
  X = (!X ? 2 : X);
  return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

function SetSelOption(objSel, Val)
{
  for (var i=0; i<objSel.length; i++)
  {
    if (objSel[i].value == Val)
    {
      objSel[i].selected = true;
      break;
    }
  }	
}

function OnReset(form)
{
  form.reset();
}

function ValidateData(Data, CheckStr)
{
  var bValid = true;
  var Temp = "";
  for (var i=0; i<Data.length; i++)
  {
    Temp = Data.substring(i, i+1);
    if (CheckStr.indexOf(Temp) == -1)
    {
      bValid = false;
      break;
    }
  }	
  return bValid;
}

function OnReload()
{
  window.location.reload();	
}

function SetTimer()
{
  self.setTimeout("OnReload()", 60000);
}

function ShowGainColor(Price, Type)
{
  var str = Price;
  if (Price < 0)
  {
    if (Type == GAINCOLOR_BOLD)
      str = "<font color=red><b>"+Price+"<\/b><\/font>";
    else
      str = "<font color=red>"+Price+"<\/font>";
      
    //str += "<img src=../images\/arrow_down.gif align=absmiddle>";
  }
  else if (Price > 0)
  {
    if (Type == GAINCOLOR_BOLD)
      str = "<b>"+Price+"<\/b>";
      
    //str += "<img src=../images\/arrow_up.gif align=absmiddle>";
  }
  //alert(str);
  return str;
}

function GenerateMarketInfo(StockArray, InfoType)
{
  var Title = "";
  if (InfoType == MARKETINFO_ACTIVE)
    Title = MARKETINFOMSG_ACTIVE;
  else if (InfoType == MARKETINFO_GAINER)
    Title = MARKETINFOMSG_GAINER;
  else
    Title = MARKETINFOMSG_LOSER;
    
  var StrTable = "<table width=\"225\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"clsExTitle\">";
  StrTable += "<tr align=\"center\"><td colspan=\"4\"><b>"+Title+"<\/b><\/td><\/tr>";
  StrTable += "<tr class=\"clsTitle\">";
  StrTable += "<td width=\"75\">Name<\/td>";
  StrTable += "<td width=\"50\" align=\"center\">Last<\/td>";
  StrTable += "<td width=\"50\" align=\"center\">Change<\/td>";
  StrTable += "<td width=\"50\" align=\"center\">Vol<\/td>";
  StrTable += "<\/tr>";	
  for (var x=0; x<StockArray.length; x++)
  {
    if (x % 2 == 0)
      StrTable += "<tr bgcolor=\"#FFFFFF\">";
    else
      StrTable += "<tr>";
    StrTable += "<td width=\"75\">"+RTrim(StockArray[x][MKTINFOARR_STK])+"<\/td>";
    StrTable += "<td width=\"50\" align=\"right\">"+StockArray[x][MKTINFOARR_LD]+"<\/td>";
    if (InfoType == MARKETINFO_ACTIVE)				
      StrTable += "<td width=\"50\" align=\"right\">"+ShowGainColor(StockArray[x][MKTINFOARR_CHG], "")+"<\/td>";
    else
      StrTable += "<td width=\"50\" align=\"right\">"+StockArray[x][MKTINFOARR_CHG]+"<\/td>";
    StrTable += "<td width=\"50\" align=\"right\">"+StockArray[x][MKTINFOARR_VOL]+"<\/td>";
    StrTable += "<\/tr>";
  }
  StrTable += "<\/table>";
  return StrTable;
}

function CountData(Data, Type)
{
  var alphaCount = 0;
  var digitCount = 0;
  for (var i = 0; i < Data.length ; i++)
  {
    if (isNaN(Data.slice(i,i+1)))
    { 
      alphaCount++; 
    }
    else
    { 
      digitCount++; 
    }
  }
  if (Type == 0)
    return alphaCount;
  else
    return digitCount;
}

function CheckAll(cbAllBox, chkbox)
{

  var ObjChkBox = document.all[chkbox];
  if (!isEmpty(ObjChkBox))
  {
    if (ObjChkBox.length > 0)
    {
      for (var x=0; x<ObjChkBox.length; x++)
      {
        if (ObjChkBox[x].disabled == false)
          ObjChkBox[x].checked = cbAllBox.checked;
      }
    }
    else
    {
      if (ObjChkBox.disabled == false)
        ObjChkBox.checked = cbAllBox.checked;
    }
  }
}

function ValidateCheck(chkbox)
{
  var bCheck = false;
  
  var ObjChkBox = document.all[chkbox];
  if (!isEmpty(ObjChkBox))
  {
    if (ObjChkBox.length > 0)
    {  
      for (var x=0; x<ObjChkBox.length; x++)
      {
        if (ObjChkBox[x].checked)
        {
          bCheck = true;
          break;
        }
      }
    }
    else
    {
      if (ObjChkBox.checked)
        bCheck = true;
    }
  }
  return bCheck;
}

function FormatPrice(number)
{
  if (isEmpty(number))
    number = 0;
  number = new String(number);
  if (number != "-")
  {
    var Pos = number.indexOf("-");
    if (Pos != -1)
    {
      var newnum = number.substr(1, String(number).length-1);
      newnum = formatNumber(newnum,",###.0000");		
      number = "-" + newnum;
    }
    else
      number = formatNumber(number,",###.0000");		
  }		
  return number;
}

function FormatValue(number)
{
  if (isEmpty(number))
    number = 0;
  number = new String(number);
  if (number != "-")
  {
    var Pos = number.indexOf("-");
    if (Pos != -1)
    {
      var newnum = number.substr(1, String(number).length-1);
      newnum = formatNumber(newnum,",###.00");		
      number = "-" + newnum;
    }
    else
      number = formatNumber(number,",###.00");		
  }		
  return number;
}

function FormatQty(number)
{
  if (isEmpty(number))
    number = 0;
  number = new String(number);
  if (number != "-")
  {
    var Pos = number.indexOf("-");
    if (Pos != -1)
    {
      var newnum = number.substr(1, String(number).length-1);
      newnum = formatNumber(newnum,"###,###");		
      number = "-" + newnum;
    }
    else
      number = formatNumber(number,"###,###");		
  }		
  return number;
}

function FormatCurrency(number)
{
  number = new String(number);
  if (number != "-")
  {
    var Pos = number.indexOf("-");
    if (Pos != -1)
    {
      var newnum = number.substr(1, String(number).length-1);
      newnum = formatNumber(Round(newnum,2),",###.00");		
      number = "-" + newnum;
    }
    else
      number = formatNumber(Round(number,2),",###.00");		
  }		
  return number;
}

function formatAmt(number, dp) 
{
  if (number >= 0)		
    return formatQty(Math.floor(number-0) + '') + formatdec(number - 0, dp);
  else	
  {	
  number = Math.abs(number);
  return "-"+formatQty(Math.floor(number-0) + '') + formatdec(number - 0, dp);
  }    	
}

function formatQty(number) 
{
  if (number.length <= 3)
      return (number == '' ? '0' : number);
  else 
  {
      var mod = number.length%3;
      var output = (mod == 0 ? '' : (number.substring(0,mod)));
      for (i=0 ; i < Math.floor(number.length/3) ; i++) 
      {
          if ((mod ==0) && (i ==0))
              output+= number.substring(mod+3*i,mod+3*i+3);
          else
              output+= ',' + number.substring(mod+3*i,mod+3*i+3);
      }
      return (output);
  }
}

function formatdec(amount, dp) 
{
  var output;
  var j= 0;
  var maxlen = 0;
  var amtlen = 0;
  maxlen = String(Math.pow(10,dp)).length -1;
  amount = Math.round( ( (amount) - Math.floor(amount) ) * Math.pow(10,dp));
  amtlen = String(amount).length; 
  output = '.'+formatStrZero(maxlen-amtlen)+amount;		
  return(output);
  //return (amount < 10 ? '.0' + amount : '.' + amount);
}

function formatStrZero(num)
{
  var strZero = "";
  for(var i=0; i<num; i++)		
  {
    strZero += "0";     	
  }
  return strZero;
}

function WinPopup(url, name, width, height)
{
  var w = width, h = height, l = (screen.Width-w)/2, t = (screen.Height-h)/2;
  var setting = "top="+t+",left="+l+",width="+w+",height="+h+",toolbar=0,location=0,menubar=0,status=1,location=0,scrollbars=1,resizable=1";
  var NewWin = window.open(url,name,setting);
  
  NewWin.focus();
}

function ConvertDate(date)
{
  var newdate = "";
  if (!isEmpty(date))
  {
    var newdateArr = String(date).split("/");
    newdate = newdateArr[1]+"/"+newdateArr[0]+"/"+newdateArr[2];
  }
  return newdate;
}

function CheckPriceBid(Price)
{
  var nPrice,PriceBid,NearestPrice;
  nPrice = Round(Price*1000, 3);
  if (nPrice <= 0 || nPrice >= 1000000)
  {
    alert("This is an invalid price. Please try again.");  
    return 0;
  }
  else
  {
    if (nPrice >= 100000) 
      PriceBid = 500; //0.5
    else if (nPrice >= 25000)
      PriceBid = 250; //0.25
    else if (nPrice >= 10000)
      PriceBid = 100; //0.1
    else if (nPrice >= 5000)
      PriceBid = 50; //0.05
    else if (nPrice >= 3000)
      PriceBid = 20; //0.02
    else if (nPrice >= 1000)
      PriceBid = 10; //0.01
    else 
      PriceBid = 5; //0.005

    NearestPrice = parseInt(nPrice / PriceBid);
    NearestPrice = parseInt(NearestPrice * PriceBid);
    //alert("nPrice="+nPrice+" NearestPrice="+NearestPrice);
    if (nPrice != NearestPrice)
    {
      nPrice = NearestPrice;
      var sTemp = (parseFloat(nPrice)) / 1000.0;
      alert("Invalid price bid, nearest price used.");    		  
      return Round(sTemp,3);
    }
    return Round((parseFloat(nPrice) / 1000.0),3);  
  }
}

function PriceChange(LastDone, RefPrice)
{
  var strChange = "";
  if (LastDone == "-" || RefPrice == "-")
    strChange = "-";
  else
  {
    var change = Round((LastDone - RefPrice), 3);
    change = formatNumber(change,",###.000");
    //var change = ValidatePFPrice((LastDone - RefPrice));
    if (change > 0)
    {
      strChange = change+"<img SRC=\"../images/arrow_up.gif\" border=\"0\" align=\"absmiddle\">";
    }
    else if (change < 0)
    {
      strChange = "<font color=\"red\">"+change+"<img SRC=\"../images/arrow_down.gif\" border=\"0\" align=\"absmiddle\"><\/font>";
    }
    else
      strChange = formatNumber(0,",###.000")+"<img SRC=\"../images/arrow_neutral.gif\" border=\"0\" align=\"absmiddle\">";
  }
  return strChange;
}

function CalculateTransactionCost(StockName, Quantity, Price, StampDutyMin, StampDutyMax, StampDutyVal, ClearingFee, MaxClearingFee, MinBrokNormal, MinBrokOther, BrokerageRate)
{
  var TransactionCost = 0;

  if (isEmpty(StampDutyMin) || isEmpty(BrokerageRate))
  {
    StampDutyMin = TCOST_STAMPDUTY;
    StampDutyMax = TCOST_STAMPDUTYMAX;
    StampDutyVal = TCOST_STAMPDUTYVAL;
    ClearingFee = TCOST_CLEARINGFEE;
    MaxClearingFee = TCOST_CLEARINGFEEMAX;
    MinBrokNormal = TCOST_MINBROKNORMAL;
    MinBrokOther = TCOST_MINBROKOTHER;
    BrokerageRate = TCOST_BROKERAGERATE;
  }

  var StockValue = CalculateStockValue(Quantity, Price);
  TransactionCost += CalculateBrokerage(StockName, BrokerageRate, StockValue, MinBrokNormal, MinBrokOther) * 1;
  TransactionCost += CalculateStampDuty(StockValue, StampDutyMin, StampDutyMax, StampDutyVal) * 1;
  TransactionCost += CalculateClearingFee(StockValue, ClearingFee, MaxClearingFee) * 1;
  return TransactionCost;
}

function CalculateStockValue(Quantity, Price)
{
  return Quantity * Price;
}

function CalculateBrokerage(StockName, BrokerageRate, StockValue, MinBrokNormal, MinBrokOther)
{
  var Brokerage = (BrokerageRate * StockValue) / 100;
  var dBrokerage = Brokerage * 100;
  var iBrokerage = parseInt(dBrokerage);
  if ((dBrokerage - iBrokerage) >= 0.5)
    iBrokerage = iBrokerage + 1;

  Brokerage = iBrokerage / 100;
  var MinBrokerage = 0;
  if (StockName.indexOf(STOCKNAMEPATTERNBOND) != -1)
    MinBrokerage = 	MinBrokOther;
  else
    MinBrokerage = MinBrokNormal;
  
  if (Brokerage < MinBrokerage)
    Brokerage = MinBrokerage;

  return Brokerage;
}

function CalculateStampDuty(StockValue, StampDutyMin, StampDutyMax, StampDutyVal)
{
  var StampDuty = 0;
  if (StampDutyMin > 0 && StampDutyMax > 0)
  {
    var dMultiplier = StockValue / StampDutyMax;
    var iMultiplier = parseInt(dMultiplier);
    if (dMultiplier - iMultiplier > 0)
      iMultiplier = iMultiplier + 1;
      
    StampDuty = StampDutyMin * iMultiplier;
  }
  if (StampDuty > StampDutyVal)
    StampDuty = StampDutyVal;

  return StampDuty;
}

function CalculateClearingFee(StockValue, ClearingFee, MaxClearingFee)
{
  var ClearingFeeInDollar = (StockValue * ClearingFee) / 100;
  //round up
  ClearingFeeInDollar = ClearingFeeInDollar * 100;

  if (Round(ClearingFeeInDollar,2) != Round(parseInt(ClearingFeeInDollar),2))
    ClearingFeeInDollar = parseInt(ClearingFeeInDollar) + 1;
    
  ClearingFeeInDollar = ClearingFeeInDollar / 100;
    
  if (ClearingFeeInDollar > MaxClearingFee)
    ClearingFeeInDollar = MaxClearingFee;

  return ClearingFeeInDollar;
}

function dateDiff(SelDate, CurDate, Period)
{
  var bValid = false;
  date1 = new Date(SelDate);
  date2 = new Date();
  if (CurDate != "")
    date2 = new Date(CurDate);
  diff  = new Date();

  date1temp = new Date(SelDate);
  date1.setDate(date1temp.getDate());
  date1.setMonth(date1temp.getMonth());
  date1.setYear(date1temp.getYear());

  date2temp = new Date();
  if (CurDate != "")
    date2temp = new Date(CurDate);
  date2.setDate(date2temp.getDate());
  date2.setMonth(date2temp.getMonth());
  date2.setYear(date2temp.getYear());
  
  diff.setYear((date2.getYear() - date1.getYear()));
  YearDiff = diff.getYear();
  
  MonthDiff = date1.getMonth();
  CurMonthDiff = date2.getMonth();
  DayDiff = date1.getDate();
  CurDayDiff = date2.getDate();
  
  if(YearDiff==Period)
  {
    if(MonthDiff>=CurMonthDiff)
    {
      if(DayDiff>CurDayDiff)
      {
        bValid = true;
      }
    }
  }
  else if(YearDiff<=Period)
  {
    bValid = true;
  }
  return bValid;
}

function FormatPrice1(number, dec) 
{
  return FormatQty(Math.floor(number-0) + '') + FormatCent(number - 0, dec);
}

function FormatCent(amount, dec) 
{
  var Mtp = 1000;	// default multiplier to 3 decimal point
  var length = 3; // default length if dec is not provided
  var output;
  
  if (!isEmpty(dec)) {
    var sMtp = "1";
    for (var i=0; i<dec; i++) {
      sMtp = sMtp + "0";
    }
    Mtp = parseInt(sMtp);
    length = dec;
  }
  
  amount = Math.round( ( (amount) - Math.floor(amount) ) * Mtp);
  output = '.' + Padout(amount, length);

  return(output);
}

function Padout(number, length)
{
    var str = '' + number;
    while (str.length < length)
        str = '0' + str;
    return str;
}

function ValidateDate(date, oldfmt)
{
  var dtdate = "";
  var bValid = false;
  
  if (!isEmpty(date))
  {
    bValid = true;
    if (date.indexOf("/") == -1)
    {
      if (date.length == 8)
      {
        //Convert year xxxx to xx
        if (oldfmt == DMY || oldfmt == MDY)
          dtdate = String(date).substring(0,2) + "/" + String(date).substring(4,2) + "/" + String(date).substring(8,6);  
        else if (oldfmt == YMD || oldfmt == YDM)
          dtdate = String(date).substring(4,2) + "/" + String(date).substring(6,4) + "/" + String(date).substring(8,6);  
      }
      else if (date.length == 6)
        dtdate = String(date).substring(0,2) + "/" + String(date).substring(4,2) + "/" + String(date).substring(6,4);
    }
    
    var dateArr = String(dtdate).split("/");
    //change any oldfmt to DMY standard format     
    var day = "";
    var month = "";
    var year = "";
    switch (oldfmt)
    {    
      case MDY:
      day = dateArr[1];
      month = dateArr[0];
      year = dateArr[2];    
      bValid = ValidateDateDetail(day, month, year);
      break;
      
      case YMD:
      day = dateArr[2];
      month = dateArr[1];
      year = dateArr[0];     
      bValid = ValidateDateDetail(day, month, year);
      break;
      
      case YDM:
      day = dateArr[1];
      month = dateArr[2];
      year = dateArr[0];     
      bValid = ValidateDateDetail(day, month, year);
      break;
      
      default:
      day = dateArr[0];
      month = dateArr[1];
      year = dateArr[2];     
      bValid = ValidateDateDetail(day, month, year);
      break;    
    } 
    
    dtdate = day + month + year;
  }
  
  if (bValid)
  {   
    var reg1str = "(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])([0-9]{2})";
    var reg1 = new RegExp(reg1str);
    bValid = reg1.test(dtdate)? true: false;	
  }	
  
  return bValid;	
}

function ValidateDateDetail(day, month, year)
{
  var bValid = true;
  
  if (day == "31" && (month == 4 || month == 6 || month == 9 || month == 11))
    bValid = false;
  else if (day >= 30 && month == 2)
    bValid = false;
  else if (month == 2 && day == 29 && !(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)))   
    bValid = false;
    
  return bValid;
}

function CheckAll(cbAllBox, chkbox)
{

  var ObjChkBox = document.all[chkbox];
  if (!isEmpty(ObjChkBox))
  {
    if (ObjChkBox.length > 0)
    {
      for (var x=0; x<ObjChkBox.length; x++)
      {
        if (ObjChkBox[x].disabled == false)
          ObjChkBox[x].checked = cbAllBox.checked;
      }
    }
    else
    {
      if (ObjChkBox.disabled == false)
        ObjChkBox.checked = cbAllBox.checked;
    }
  }
}

// CheckOne
function CheckOne(objChkOne, objChkAll)
{
  var objChkOne = document.all[objChkOne.name];
  var objChkAll = document.all[objChkAll];

  if (isEmpty(objChkOne.length))
    objChkAll.checked = objChkOne.checked;
  else if (!isEmpty(objChkOne))
  {
    var bChecked = true;
    for (var i = 0; i < objChkOne.length; i++)
    { 
      if(objChkOne[i].disabled == false)
        bChecked &= objChkOne[i].checked;
    }
    objChkAll.checked = bChecked;
  }
}

function SaveOldValue(txtPymtTrustAmt, hPymtTrustAmtId)
{
  var ObjtxtPymtTA = document.getElementById(txtPymtTrustAmt.id);
  var ObjhPymtTA = document.getElementById(hPymtTrustAmtId);
  
  ObjhPymtTA.value = ObjtxtPymtTA.value;
}

function RoundNum(dNum)
{
  return Math.round(dNum * 100) / 100;
}

function ValidateTrustDepositVal(obj)
{

  var objNum = document.getElementById(obj.id);
  var obhTrustDeposit = document.getElementById('hTrustDeposit');
  var ObjTxtPBankTtl = document.getElementById('txtPBankTtl');
  var ObjTxtGrandTtl = document.getElementById('txtGrandTtl');

  var dNum = parseFloat(String(objNum.value).replace(/,/g, ''));
  var dOldTrustDeposit = parseFloat(String(obhTrustDeposit.value).replace(/,/g, ''));
  var dTxtPBankTtl = parseFloat(String(ObjTxtPBankTtl.value).replace(/,/g, ''));
  var dTxtGrandTtl = parseFloat(String(ObjTxtGrandTtl.value).replace(/,/g, ''));

  if (isNaN(dNum))
    dNum = 0.00;

  objNum.value = FormatCurrency(RoundNum(dNum));

  if (dNum < dOldTrustDeposit)
  {
    //dNum = RoundNum(dNum) * -1;
  }

  if (dNum < 0)
  {
    dNum = 0.00;
    objNum.value = FormatCurrency(0.00);
  }
  dTxtPBankTtl = RoundNum(dTxtPBankTtl) - RoundNum(dOldTrustDeposit) + RoundNum(dNum);
  dTxtGrandTtl = RoundNum(dTxtGrandTtl) - RoundNum(dOldTrustDeposit) + RoundNum(dNum);
  
  obhTrustDeposit.value = RoundNum(Math.abs(dNum));

  ObjTxtPBankTtl.value = FormatCurrency(RoundNum(dTxtPBankTtl));
  ObjTxtGrandTtl.value = FormatCurrency(RoundNum(dTxtGrandTtl));
  
}

function CalPymtBank(txtPymtTrustAmt, dPymtTotal, txtPymtBankAmtId, hPymtTrustAmtId, hContBankVal)
{
  var ObjPymtTA = document.getElementById(txtPymtTrustAmt.id);
  var ObjPymtBA = document.getElementById(txtPymtBankAmtId);
  var ObjTxtPTrustTtl = document.getElementById('txtPTrustTtl');
  var ObjTxtPBankTtl = document.getElementById('txtPBankTtl');
  var ObjTxtGrandTtl = document.getElementById('txtGrandTtl');
  var ObjhPTrustAmt = document.getElementById(hPymtTrustAmtId);

  var ObjhContBankVal = document.getElementById(hContBankVal);


  var dOldPymtTA = RoundNum(parseFloat(String(ObjhPTrustAmt.value).replace(/,/g, '')));

  var dPymtBTtl = RoundNum(parseFloat(String(ObjTxtPBankTtl.value).replace(/,/g, '')));
  var dPymtGrandTtl = RoundNum(parseFloat(String(ObjTxtGrandTtl.value).replace(/,/g, '')));
  var dPymtTATtl = RoundNum(parseFloat(String(ObjTxtPTrustTtl.value).replace(/,/g, '')));
  var dPymtTA = RoundNum(parseFloat(String(ObjPymtTA.value).replace(/,/g, '')));

  if (isNaN(dPymtTA))
    dPymtTA = 0.00;
  
  if (dPymtTA > dPymtTotal)
  {
    dPymtTA = dPymtTotal;
    ObjPymtTA.value = FormatCurrency(RoundNum(dPymtTA));
  }
  else if (dPymtTA < 0.00)
  {
    dPymtTA = 0.00;
    ObjPymtTA.value = FormatCurrency(RoundNum(dPymtTA));
  }

  dPymtTA = RoundNum(dPymtTA);

  if (!isEmpty(ObjPymtBA))
  {
    if (!isEmpty(ObjPymtTA))
    {
      ObjPymtBA.value = FormatCurrency(RoundNum(dPymtTotal) - RoundNum(dPymtTA));


      dPymtTATtl = RoundNum(dPymtTATtl) - RoundNum(dOldPymtTA) + RoundNum(dPymtTA);
      dPymtTATtl = RoundNum(dPymtTATtl);
      ObjTxtPTrustTtl.value = FormatCurrency(RoundNum(dPymtTATtl));

      dPymtBTtl = RoundNum(dPymtGrandTtl) - RoundNum(dPymtTATtl);
      dPymtBTtl = RoundNum(dPymtBTtl);
      ObjTxtPBankTtl.value = FormatCurrency(RoundNum(dPymtBTtl));
    }
    else
      ObjPymtBA.value = FormatCurrency(0.00);
  }
  else
    ObjPymtBA.value = FormatCurrency(0.00);

  ObjPymtTA.value = FormatCurrency(RoundNum(dPymtTA));
  ObjhContBankVal.value = ObjPymtTA.value;
}

// AccCheckAll
function AccCheckAll(cbAllBox, chkbox, sContType, txtPymtBankAmt, /*dTotal,*/ objCheckedCont, objContNo)
{

  var ObjTxtPTrust = document.all['txtPTrust' + sContType];
  var ObjChkBox = document.all[chkbox];
  var ObjhTotal = document.all['hTotal' + sContType];
  var ObjTxtPBankTtl = document.getElementById('txtPBankTtl');
  var ObjTxtPTrustTtl = document.getElementById('txtPTrustTtl');
  var ObjTxtGrandTtl = document.getElementById('txtGrandTtl');
  var dPBankValTtl = parseFloat(String(ObjTxtPBankTtl.value).replace(/,/g, ''));
  var dGrandTtl = parseFloat(String(ObjTxtGrandTtl.value).replace(/,/g, ''));
  var dPymtTATtl = parseFloat(String(ObjTxtPTrustTtl.value).replace(/,/g, ''));

  var ObjPymtBA = document.all[txtPymtBankAmt];
  

  var objCheckedCont = document.all[objCheckedCont];
  var objContNo = document.all[objContNo];

  if (!isEmpty(ObjChkBox))
  {
    if (ObjChkBox.length > 0)
    {
      for (var x=0; x<ObjChkBox.length; x++)
      {
        if (ObjChkBox[x].disabled == false)
        {

    if (cbAllBox.checked == true)
    {
      if (ObjChkBox[x].checked != cbAllBox.checked)
      {
        ObjChkBox[x].checked = cbAllBox.checked;
        ObjTxtPTrust[x].disabled = false;
        ObjTxtPTrust[x].value = FormatCurrency(0);
        ObjPymtBA[x].value = FormatCurrency(RoundNum(parseFloat(String(ObjhTotal[x].value).replace(/,/g, ''))));

        dPBankValTtl = RoundNum(dPBankValTtl) + RoundNum(parseFloat(String(ObjPymtBA[x].value).replace(/,/g, '')));
              ObjTxtPBankTtl.value = FormatCurrency(RoundNum(dPBankValTtl));
        dGrandTtl = RoundNum(dGrandTtl) + RoundNum(parseFloat(String(ObjhTotal[x].value).replace(/,/g, '')));
        ObjTxtGrandTtl.value = FormatCurrency(RoundNum(dGrandTtl));

              if (isEmpty(String(objCheckedCont.value).match(objContNo[x].value)))
              {
                if (objCheckedCont.value != "")
                  objCheckedCont.value += ",";
            
                  objCheckedCont.value = objCheckedCont.value + objContNo[x].value;

              }
            }
    }
    else
    {
      if (ObjChkBox[x].checked != cbAllBox.checked)
      {
        //var dhTtlTemp = RoundNum(parseInt(parseFloat(String(ObjhTotal[x].value).replace(/,/g, '')) * 100) / 100);
        var dhTtlTemp = RoundNum(parseFloat(String(ObjhTotal[x].value).replace(/,/g, '')));
        var dPymtBATemp = RoundNum(parseFloat(String(ObjPymtBA[x].value).replace(/,/g, '')));
        var dPTrustTtlTemp = RoundNum(parseFloat(String(ObjTxtPTrust[x].value).replace(/,/g, '')));
        ObjChkBox[x].checked = cbAllBox.checked;

        //dPBankVal = parseInt(dPBankVal * 100) / 100 - dPymtBATemp;
        //ObjTxtPBankTtl.value = FormatCurrency(dPBankValTtl);

        dGrandTtl = RoundNum(dGrandTtl) - RoundNum(dhTtlTemp);

        ObjTxtGrandTtl.value = FormatCurrency(RoundNum(dGrandTtl));
        dPymtTATtl = RoundNum(dPymtTATtl) - RoundNum(dPTrustTtlTemp);
              dPymtTATtl = RoundNum(dPymtTATtl);
        ObjTxtPTrustTtl.value = FormatCurrency(RoundNum(dPymtTATtl));

        dPBankValTtl = RoundNum(dGrandTtl) - RoundNum(dPymtTATtl);
        dPBankValTtl = RoundNum(dPBankValTtl);
        ObjTxtPBankTtl.value = FormatCurrency(RoundNum(dPBankValTtl));

        ObjTxtPTrust[x].disabled = true;
        ObjTxtPTrust[x].value = "";
        ObjPymtBA[x].value = "";

              if (objCheckedCont.value != "")
              {
                if (!isEmpty(String(objCheckedCont.value).match(objContNo[x].value)))
                {
                  objCheckedCont.value = String(objCheckedCont.value).replace(objContNo[x].value, "");
          
                  var iLen = String(objCheckedCont.value).length;
                  if (!isEmpty(String(objCheckedCont.value).match(",,")))
                    objCheckedCont.value = String(objCheckedCont.value).replace(",,", ",");
                  else if (String(objCheckedCont.value).charAt(iLen - 1) == ",")
                    objCheckedCont.value = String(objCheckedCont.value).substring(0, iLen - 1);
                  else if (String(objCheckedCont.value).charAt(0) == ",")
                    objCheckedCont.value = String(objCheckedCont.value).substring(1, iLen);
                }
              }
            }
    }
        }
      }
    }
    else
    {
      if (ObjChkBox.disabled == false)
      {
        ObjChkBox.checked = cbAllBox.checked;
        if (cbAllBox.checked == true)
        { 
    ObjTxtPTrust.disabled = false;
    ObjTxtPTrust.value = FormatCurrency(0);
    ObjPymtBA.value = FormatCurrency(RoundNum(parseFloat(String(ObjhTotal.value).replace(/,/g, ''))));

    dPBankValTtl = RoundNum(dPBankValTtl) + RoundNum(parseFloat(String(ObjPymtBA.value).replace(/,/g, '')));
          ObjTxtPBankTtl.value = FormatCurrency(RoundNum(dPBankValTtl));
    dGrandTtl = RoundNum(dGrandTtl) + RoundNum(parseFloat(String(ObjhTotal.value).replace(/,/g, '')));
          ObjTxtGrandTtl.value = FormatCurrency(RoundNum(dGrandTtl));

          if (isEmpty(String(objCheckedCont.value).match(objContNo.value)))
          {
            if (objCheckedCont.value != "")
              objCheckedCont.value += ",";

            objCheckedCont.value = objCheckedCont.value + objContNo.value;
          }

        }
        else
        {
          var dhTtlTemp = RoundNum(parseFloat(String(ObjhTotal.value).replace(/,/g, '')));
    var dPymtBATemp = RoundNum(parseFloat(String(ObjPymtBA.value).replace(/,/g, '')));
    var dPTrustTtlTemp = RoundNum(parseFloat(String(ObjTxtPTrust.value).replace(/,/g, '')));

    //dPBankValTtl = dPBankVal * 100 / 100 - dPymtBATemp;
    //ObjTxtPBankTtl.value = FormatCurrency(dPBankValTtl);
    dGrandTtl = RoundNum(dGrandTtl) - RoundNum(dhTtlTemp);
    ObjTxtGrandTtl.value = FormatCurrency(dGrandTtl);
    dPymtTATtl = RoundNum(dPymtTATtl) - RoundNum(dPTrustTtlTemp);
    dPymtTATtl = RoundNum(dPymtTATtl);
    ObjTxtPTrustTtl.value = FormatCurrency(RoundNum(dPymtTATtl));

    dPBankValTtl = RoundNum(dGrandTtl) - RoundNum(dPymtTATtl);
          dPBankValTtl = RoundNum(dPBankValTtl);
    ObjTxtPBankTtl.value = FormatCurrency(RoundNum(dPBankValTtl));

    ObjTxtPTrust.disabled = true;
    ObjTxtPTrust.value = "";
    ObjPymtBA.value = "";

          if (objCheckedCont.value != "")
          {
            if (!isEmpty(String(objCheckedCont.value).match(objContNo.value)))
            {
              objCheckedCont.value = String(objCheckedCont.value).replace(objContNo.value, "");
          
              var iLen = String(objCheckedCont.value).length;
              if (!isEmpty(String(objCheckedCont.value).match(",,")))
                objCheckedCont.value = String(objCheckedCont.value).replace(",,", ",");
              else if (String(objCheckedCont.value).charAt(iLen - 1) == ",")
                objCheckedCont.value = String(objCheckedCont.value).substring(0, iLen - 1);
              else if (String(objCheckedCont.value).charAt(0) == ",")
                objCheckedCont.value = String(objCheckedCont.value).substring(1, iLen);
            }
          }
        }
      }
    }
  }

}

// AccCheckOne
function AccEnabledTxtBox(txtPymtTrustAmtId, objChkOne, txtPymtBankAmtId, hTotalId, objCheckedCont, objContNo)
{
  var objChkOne = document.getElementById(objChkOne.id);
  var objTxtBox = document.getElementById(txtPymtTrustAmtId);
  var ObjhTotal = document.getElementById(hTotalId);
  var ObjTxtPBankTtl = document.getElementById('txtPBankTtl');
  var ObjTxtPTrustTtl = document.getElementById('txtPTrustTtl');
  var ObjTxtGrandTtl = document.getElementById('txtGrandTtl');
  var dPBankVal = parseFloat(String(ObjTxtPBankTtl.value).replace(/,/g, ''));
  var dGrandTtl = parseFloat(String(ObjTxtGrandTtl.value).replace(/,/g, ''));
  var dPymtTATtl = parseFloat(String(ObjTxtPTrustTtl.value).replace(/,/g, ''));

  var objCheckedCont = document.all[objCheckedCont];
  var objContNo = document.getElementById(objContNo);

  var ObjPymtBA = document.getElementById(txtPymtBankAmtId);

  if (objChkOne.checked)
  {
    objTxtBox.disabled = false;
    objTxtBox.value = FormatCurrency(0.00);
    ObjPymtBA.value = FormatCurrency(parseFloat(String(ObjhTotal.value).replace(/,/g, '')));

    dPBankVal = RoundNum(dPBankVal) + parseFloat(String(ObjPymtBA.value).replace(/,/g, ''));
    ObjTxtPBankTtl.value = FormatCurrency(dPBankVal);
    dGrandTtl = RoundNum(dGrandTtl) + parseFloat(String(ObjhTotal.value).replace(/,/g, ''));
    ObjTxtGrandTtl.value = FormatCurrency(dGrandTtl);

    if (isEmpty(String(objCheckedCont.value).match(objContNo.value)))
    {
      if (objCheckedCont.value != "")
        objCheckedCont.value += ",";

      objCheckedCont.value = objCheckedCont.value + objContNo.value;
    }
  }
  else
  {
    var dPTrustTtlTemp = RoundNum(parseFloat(String(objTxtBox.value).replace(/,/g, '')));
    var dhTtlTemp = RoundNum(parseFloat(String(ObjhTotal.value).replace(/,/g, '')));
    var dPymtBATemp = RoundNum(parseFloat(String(ObjPymtBA.value).replace(/,/g, '')));

    //dPBankVal = dPBankVal * 100 / 100 - dPymtBATemp;
    //ObjTxtPBankTtl.value = FormatCurrency(dPBankVal);
    dGrandTtl = RoundNum(dGrandTtl) - RoundNum(dhTtlTemp);
    ObjTxtGrandTtl.value = FormatCurrency(RoundNum(dGrandTtl));
    dPymtTATtl = RoundNum(dPymtTATtl) - RoundNum(dPTrustTtlTemp);
    ObjTxtPTrustTtl.value = FormatCurrency(RoundNum(dPymtTATtl));

    dPBankVal = RoundNum(dGrandTtl) - RoundNum(dPymtTATtl);
    ObjTxtPBankTtl.value = FormatCurrency(RoundNum(dPBankVal));

    objTxtBox.disabled = true;
    objTxtBox.value = "";
    ObjPymtBA.value = "";

    if (objCheckedCont.value != "")
    {
      if (!isEmpty(String(objCheckedCont.value).match(objContNo.value)))
      {
        objCheckedCont.value = String(objCheckedCont.value).replace(objContNo.value, "");
        
        var iLen = String(objCheckedCont.value).length;
        if (!isEmpty(String(objCheckedCont.value).match(",,")))
          objCheckedCont.value = String(objCheckedCont.value).replace(",,", ",");
        else if (String(objCheckedCont.value).charAt(iLen - 1) == ",")
          objCheckedCont.value = String(objCheckedCont.value).substring(0, iLen - 1);
        else if (String(objCheckedCont.value).charAt(0) == ",")
          objCheckedCont.value = String(objCheckedCont.value).substring(1, iLen);
      }
    }
  }
}

function FormatPriceLength(number, PrecisionLength)
{
  var Length = "";
  if (PrecisionLength < 0)
    Length = "00";
  else
  {
    for (var i=0; i < PrecisionLength; i++)
      Length += "0";
  }
  number = new String(number);
  if (number != "-")
  {
    var Pos = number.indexOf("-"); 
    if (Pos != -1)
    {
      var newnum = number.substr(1, String(number).length-1);
      newnum = formatNumber(Round(newnum,PrecisionLength),",##0." + Length);		
      number = "-" + newnum;
    }
    else
      number = formatNumber(Round(number,PrecisionLength),",##0." + Length);		
  }		
  return number;
}
//-->
