<!--
// 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, tcolor)
{ 
  if (isEmpty(tcolor)) tcolor = ''; 	
  if (!src.contains(event.fromElement))
  { 
    src.style.cursor = 'hand'; 
    //src.bgColor = '#DEDEEF'
    src.bgColor = color;
    src.style.color = tcolor;    
  } 
} 

function mOut(src, color, tcolor)
{ 
  if (isEmpty(tcolor)) tcolor = ''; 	
  if (!src.contains(event.toElement))
  { 
    src.style.cursor = 'default'; 
    src.bgColor = color;
    src.style.color = tcolor;
  } 
}

function OnMSBanner()
{
	window.open(URL_MSBANNER);
}

function FormatPrice(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(newnum,",###.00");		
			number = "-" + newnum;
		}
		else
			number = formatNumber(number,",###.00");		
	}
		
	return number;
}

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(newnum,",###." + Length);		
			number = "-" + newnum;
		}
		else
			number = formatNumber(number,",###." + Length);		
	}
		
	return number;
}

function FormatQty(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 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 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=\"..\/..\/aibbecos\/images/arrow_up.gif\" border=\"0\" align=\"absmiddle\">";
		}
		else if (change < 0)
		{
			strChange = "<font color=\"red\">"+change+"<img SRC=\"..\/..\/aibbecos\/images/arrow_down.gif\" border=\"0\" align=\"absmiddle\"><\/font>";
		}
		else
			strChange = formatNumber(0,",###.000")+"<img SRC=\"..\/..\/aibbecos\/images/arrow_neutral.gif\" border=\"0\" align=\"absmiddle\">";
	}
	return strChange;
}

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 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 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 OnReload()
{
	window.location.reload()
}

function SetTimer()
{
	self.setTimeout("OnReload()", 60000);
}

function OnDownload(type, fname, action)
{
  var w=650, h=400, t=(screen.height - (h+150))/2, l=(screen.width - w)/2;
  var url = "downloadsession.asp?type="+type+"&fn="+escape(fname)+"&action="+action;
  var ExtDoc = "doc";
  var ExtFile = fname.substr((fname.length - 3), 3);
  if (ExtFile == ExtDoc)
    action = 'D';
    
  if (action == DOWNLOADFLAG_DOWNLOAD)
    window.location = "downloadfrm.asp?type="+type+"&fn="+escape(fname)+"&action="+action;
  else
  {
    var openwin = window.open(url, "openwin", "top="+t+",left="+l+", width="+w+", height="+h+",toolbar=1,location=1,menubar=1,status=1,scrollbars=1,resizable=1");
    openwin.focus();
  }
}

function ValidateStr(DataStr, Type)
{
  var bAllowed = true;
  var CheckStr = "";
  if (Type == CHECKFLAG_EMAIL)
  {
		CheckStr = CHECKESTR_EMAIL;
		if (DataStr.indexOf("@") == -1)
			return false;
	}
	else
		CheckStr = CHECKSTR_USER;
		
  for (i=0; i<DataStr.length && bAllowed; i++)
  {
    var bChecked = false;
    ch = DataStr.charAt(i);
    for (j = 0; j < CheckStr.length; j++)
    {
      if (ch == CheckStr.charAt(j))
      {
        bChecked = true;
        break;
      }
    }
    if (j == CheckStr.length)
    {
      if (!bChecked)
        bAllowed = false;
    }
  }
	return bAllowed;
}

function WinPopup(url, name, width, height, top, left, features)
{
	var w = width, h = height;
	if (!top)
		top = (screen.Height-h)/2;
	if (!left)
		left = (screen.Width-w)/2;
	if (isEmpty(features))
		features = "top="+top+",left="+left+",width="+w+",height="+h+",toolbar=0,location=0,menubar=0,status=1,location=0,scrollbars=1,resizable=1";
	else
		features = "top="+top+",left="+left+",width="+w+",height="+h+","+features;
		
	var NewWin = window.open(url,name,features);
	NewWin.focus();
}

function WinOpenQuotes(url)
{	var NewWin;
	try
	{	
		 NewWin = window.open(url,"QuotesWin");
	}
	catch(e)
	{
		var NewWin = window.open(url,"QuotesWin");
	}
	NewWin.focus();
}
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 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 ValidateSymbol(Data, CheckStr)
{
	var bValid = false;
	var Temp = "";
	for (var i=0; i<Data.length; i++)
	{
		Temp = Data.substring(i, i+1);
		if (CheckStr.indexOf(Temp) == -1)
		{
			bValid = false;
		}
		else
		{
			bValid = true;
			break;
		}
	}	
	return bValid;
}

function ValidateEmail(Email)
{
	var bValid = false;
	var str = Email;
	var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
	var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
	var reg1 = new RegExp(reg1str);
	var reg2 = new RegExp(reg2str);
	if (!reg1.test(str) && reg2.test(str))
	{
		bValid = true;
	}
	return bValid;
}


function ValidateNumber(Number)
{
// allow the contact no to have hyphen and space
  var reg1str = "([0-9])|(-)|( )";
  var reg2str = "([a-zA-Z!-'.-/:-@[-_{-~*])";
	var reg1 = new RegExp(reg1str);
	var reg2 = new RegExp(reg2str);
	if (reg1.test(sNumber) && !reg2.test(sNumber)){
		return true;
	}	
	else {
		return false;
	}	
}

function SetSelOption(objSel, Val)
{
		for (var i=0; i<objSel.length; i++)
		{
			if (objSel[i].value == Val)
			{
				objSel[i].selected = true;
				break;
			}
		}	
}

function GetKeyCodesVal(KeyCodes)
{
	var sKeyCode = "";
	for (var i=0; i<KEYCODES_TOTAL; i++)
	{
		var KeyCodesMem = eval("KEYCODES_MEMBERS"+i);
		var KeyCodeArray = String(KeyCodesMem).split(",");
		//alert(KeyCodesMem+" "+KeyCodeArray.length+" "+KeyCodeArray[0][KEYCODES_VALUE] + " "+KeyCodes);
		//break;
		if (String(KeyCodeArray[KEYCODES_VALUE]) == String(KeyCodes))
		{
			sKeyCode = KeyCodeArray[KEYCODES_DESC];
			break;
		}
	}
	return sKeyCode;
}

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 GetCookie(sID, sType)
{
	//var sName = String(sType + sID);
	var sName = String(sID);
	var aCookie = document.cookie.split("; ");
	var sNameInp = RTrim(String(sName));
	for (var i=0; i<aCookie.length; i++)
	{
		//a name/value pair (a crumb) is separated by an equal sign
		var aCrumb = aCookie[i].split("=");
		if (aCrumb[0].indexOf(sName) !=-1) {
			strCrumb = aCookie[i].substr(aCrumb[0].indexOf(sName)+sName.length+1);
			var aSubCookie = strCrumb.split("&");
			for (var j=0; j<aSubCookie.length; j++)
			{
				var aSubCrumb = aSubCookie[j].split("=");
				if (sType == aSubCrumb[0]) 
					return unescape(aSubCrumb[1]);
			}
		}	
	}
	return null;
}

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;
}

//--------------------Online Payment_20061027---------------------//
function validateSelectItem(form, objid, val, ref) 
{
	with (form) 
	{
		ref=(ref==""?val:ref);
		
		var checkboxObj = "", txtObj = "";
		var chkval = "", remval = "";
		var selItem = "", selRemItem = "";
		selItem = String(ref);
		selRemItem = String(val);
		if (objid == "checkboxST")
			checkboxObj = document.all["checkboxST"];
		else if (objid == "checkboxRP")
			checkboxObj = document.all["checkboxRP"];
		else if (objid == "checkboxCL")
			checkboxObj = document.all["checkboxCL"];			
		txtObj = document.all[objid];	
		
		if (!isEmpty(checkboxObj) && checkboxObj.length > 1)	{  
			for (i=0;i<checkboxObj.length;i++) {
				chkval = String(checkboxObj[i].value);
				remval = String(txtObj[i].value);
				var tmp = selRemItem;
				if (!checkboxObj[i].checked) {
					if (selItem.indexOf(chkval)!=-1) {
						selRemItem = RemoveItem(selRemItem, selItem, chkval, 1);
						selItem = RemoveItem(selItem, selItem, chkval, 1);
					}
				} else {
					if (selItem.indexOf(chkval)==-1) {
						if (selRemItem!="") selRemItem += ",";
							selRemItem += remval;
						if (selItem!="") selItem += ",";
							selItem += chkval;
					}
				}
			}
		} else if (!isEmpty(checkboxObj))	{  
			chkval = String(checkboxObj.value);
			remval = String(txtObj.value);
			var tmp = selRemItem;
			
			if (!checkboxObj.checked) {
				if (selItem.indexOf(chkval)!=-1) {
					selRemItem = RemoveItem(selRemItem, selItem, chkval, 1);
				}
			} else {
				if (selItem.indexOf(chkval)==-1) {
					if (selRemItem!="") selRemItem += ",";
					selRemItem += remval;
				}
			}
		}
	}
	return selRemItem;
}

function RemoveItem(sRemList, sList, sItem, bChkItem) {
	var tmpList = "";
	var arrList = sList.split(",");
	var arrRemList = sRemList.split(",");
	for(var i=0; i<arrList.length; i++) {
		if (sItem!=String(arrList[i])) {
			if (tmpList!="") tmpList+=",";
			if (bChkItem)
				tmpList+=arrList[i];
			else
				tmpList+=arrRemList[i];
		}	
	}	
	return tmpList;
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;   
}

function dateDiff(DOB, CurDate, Period)
{
  var bValid = false;
  date1 = new Date(DOB);
  date2 = new Date(CurDate);
  diff  = new Date();

  date1temp = new Date(DOB);
  date1.setDate(date1temp.getDate());
  date1.setMonth(date1temp.getMonth());
  date1.setYear(date1temp.getYear());

  date2temp = new Date(CurDate);
  date2.setDate(date2temp.getDate());
  date2.setMonth(date2temp.getMonth());
  date2.setYear(date2temp.getYear());
  
  diff.setYear((date2.getYear() - date1.getYear()));
  timediff = diff.getYear();
  
  
  DOBmonthdiff = date1.getMonth();
  Curmonthdiff = date2.getMonth();
  DOBdaydiff = date1.getDate();
  Curdaydiff = date2.getDate();
  
  years = timediff;
  //alert("timediff="+timediff+", DOBmonthdiff="+DOBmonthdiff+",Curmonthdiff="+Curmonthdiff+", DOBdaydiff="+DOBdaydiff+", Curdaydiff="+Curdaydiff);
  
  if(years==Period)
  {
    if(DOBmonthdiff>=Curmonthdiff)
    {
      if(DOBdaydiff>Curdaydiff)
      {
        bValid = true;
      }
    }
  }
  else if(years<=Period)
  {
    bValid = true;
  }

  return bValid;

}

function ConvertDate(date)
{
  var newdate = "";
  if (!isEmpty(date))
  {
    var newdateArr = String(date).split("/");
    newdate = newdateArr[1]+"/"+newdateArr[0]+"/"+newdateArr[2];
  }
  return newdate;
}
//----------------------------------------------------------------//
//-->