﻿// version: beta
// created: 2005-08-30
// updated: 2005-08-31
// mredkj.com
function extractNumber(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\,?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\,?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? ',' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\,/g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + ',' + reg3Right;
		}
	}
	
	obj.value = temp;
}



function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == ',' && obj.value.indexOf(',') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}

//////////////////////////////// Modified by Hung Vo Si
function blockNonNumbers1(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	var isFirstD = allowDecimal ? keychar == ',' && obj.value.indexOf(',') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}

//////////////////////////////// Modified by Hung Vo Si
function blockNonNumbers2(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	//alert(keychar)
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl )
	{
		return true;
	}

    reg = /\d/;
	var isFirstN = allowNegative ? keychar == '.' && obj.value.indexOf('.')  == -1 : false;
	var isFirstD = allowDecimal ? keychar == ',' && obj.value.indexOf(',') == -1 : false;
	
	
	return isFirstN || isFirstD || reg.test(keychar);
		
}

function blockNonNumbers3(obj, e, allowDecimal, allowNegative, allowMinus)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	//alert(keychar)
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl )
	{
		return true;
	}
	reg = /\d/;
	//var isFirstM = allowMinus ? keychar == '-' &&  obj.value.indexOf('-') == -1 : false;
	
	if( allowMinus && keychar == '-' && obj.value.indexOf('-') == -1 ) 
	{
	    obj.value = "-"+ obj.value;
	}
	
	var isFirstN = allowNegative ? keychar == '.' && obj.value.indexOf('.')  == -1 : false;
	var isFirstD = allowDecimal ? keychar == ',' && obj.value.indexOf(',') == -1 : false;
	
	
	return isFirstN || isFirstD || reg.test(keychar);
		
}
///////////////////////////////////////////////////////////////////////////
function extractNumber1(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\,?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\,?[0-9]*';
	}
	reg0Str = allowNegative ? '^.?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? ',' : '') + (allowNegative ? '.' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '.';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '.' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\,/g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + ',' + reg3Right;
		}
	}
	obj.value = temp	
}

function fill_Negative(obj, allowNegative)
{
	var temp0 = '';
	var temp = '';
	var temp1 ='';
	var temp2 ='';
	var tempD ='';
	
	temp2 = obj.value
	temp0 = temp2.indexOf('-') == 0 ? temp2.substring(0,1):''; 
	temp2 = temp2.indexOf('-') == 0 ? temp2.substring(1):temp2; 
	temp2 = trim_zero_first(temp2);
	
	if (allowNegative==true)
	{
		temp = temp2.indexOf(',') >= 0 ? temp2.substring(0,temp2.indexOf(',')):temp2; 
		tempD = temp2.indexOf(',') >= 0 ? temp2.substring(temp2.indexOf(','),4):''; 
		
		temp = trim_str(temp,'.'); //temp.replace('.', '');
		temp1 = ''; 
		for (i=temp.length-1;i>=0;i--)
		{
			if (temp.charAt(i).toString != '.')
			{
				if ((i+1)%3 ==0 && i<temp.length-1)
				{
				 
					temp1 +=  '.'+temp.charAt(temp.length-1-i);
					
				}
				else
				{
					temp1 += temp.charAt(temp.length-1-i)
				}
			}
		}
	}
	else
	{
		temp1= temp
	}
	if(temp1=='')
		temp1=0;
	obj.value = temp0 + temp1  + tempD;
}

function trim_str(value,key)
{
	while (value.indexOf(key)>=0)
	{
		value = value.replace(key,'');
	}
	return value;
}

function replace_str(value,key1,key2)
{
    var tmp=value;
    var key = new RegExp(key1,'g');
    value = value.replace(key,key2);
	return value;
}

function trim_zero_first(value)
{
	while (value.indexOf('0')==0 && value.indexOf(',')!=1)
	{
		value = value.replace('0','');
	}
	return value;
}

function trim_zero_end(value)
{
    
    if (value.indexOf(',') >= 0)
    {
        var temp = value;
        for (var i = temp.length-1; i>=0; i--)
	    {
	        if( temp.charAt(i) == '0' )
	        {
	            temp = temp.substring(0, i);   
	        }
	        else
	        {
	            break;
	        }
	    }
	    value = temp;
	}
	return value;
}

// LTrim(string) : Returns a copy of a string without leading spaces.
function ltrim(str)
{
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(0)) != -1) {
      var j=0, i = s.length;
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;
      s = s.substring(j, i);
   }
   return s;
}

//RTrim(string) : Returns a copy of a string without trailing spaces.
function rtrim(str)
{
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
      var i = s.length - 1;       // Get length of string
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
      s = s.substring(0, i+1);
   }
   return s;
}

// Trim(string) : Returns a copy of a string without leading or trailing spaces
function trim(str) {
   return rtrim(ltrim(str));
}

function KiemTraPhanTram( obj, sl, slmua)
{
    sl = (sl!='')?parseInt(trim_str(sl,'.')):0;
    slmua = (slmua!='')?parseInt(trim_str(slmua,'.')):0;
    
    if (sl>0)
    {
        if (sl < slmua)
        {
            alert('Số lượng cổ phần đã đăng ký mua không hợp lệ!\nSố lượng cổ phần đã đăng ký mua theo từng loại phải NHỎ HƠN số lượng cổ phần theo từng loại.')
            obj.value = sl;
            obj.focus();
            return false;
        }
        else
        if (slmua < (sl*20)/100)
        {
            alert('Số lượng cổ phần đã đăng ký mua không hợp lệ!\nSố lượng cổ phần đã đăng ký mua theo từng loại phải BẰNG ÍT NHẤT 20% số lượng cổ phần theo từng loại.')
            obj.value = sl;
            obj.focus();
            return false;
        }
    }
    else
    return true;
 
}
function set_SoLuongCoPhan(totalvalue,obj,objDis)
{
    value1=0;
    ttvalue=0;
    value1 = (obj.value!='')?parseInt(trim_str(obj.value,'.')):0;
    ttvalue = (totalvalue!='')?parseInt(trim_str(totalvalue,'.')):0;
    if (value1<=ttvalue)
    {
        if(value1 > 0 )
        {
            socp=ttvalue/value1;
            eval('document.forms[0].'+objDis).value = parseInt(socp);
        }
        else
        {
            eval('document.forms[0].'+objDis).value = '';
        }
    }
    else if (value1!='' && value1>ttvalue)
    {
        alert('Mệnh giá cổ phần không hợp lệ! (Mệnh giá cổ phần không được lớn hơn tổng vốn đầu tư.)')
        obj.value = 0;
        obj.focus();
    }
   
}
function set_SoLuongCoPhanGop(tongvongop,menhgiacp,objDis)
{
    var vongop = (tongvongop!='')?parseInt(trim_str(tongvongop,'.')):0;
    var menhgia =  (menhgiacp!='')?parseInt(trim_str(menhgiacp,'.')):0;
    var slcpgop = (menhgia!=0)?vongop/menhgia:0;
    eval('document.forms[0].'+objDis).value = slcpgop;
    //alert('menhgiacp ' + menhgiacp);
    //alert('tongvongop ' + tongvongop);
}
function KiemTraTongGiaTriTaiSan(valuetong, sonhomts)
{
    tong =0;
    tong1=0;
    if (valuetong!=0)
        valuetong = trim_str(valuetong,'.');
//    else
//    {
//        alert('Phải nhập giá trị tài sản khác');
//        document.forms[0].txtTaiSanKhac.select();
//        return false;
//    }
    
    if (valuetong>0)
    {
        for(i=0;i<sonhomts;i++)
        {
            tong1=0;
            tong1=parseInt(trim_str(eval('document.forms[0].txtSoLuongTS_' + i.toString()).value,'.')) * parseInt(trim_str(eval('document.forms[0].txtGiaTriTS_' + i).value,'.'));
            tong+=tong1;
        }
        
        if(tong!=valuetong )
        {
           //alert('tong:'+tong + ' valutong:'+valuetong);
           alert('CÁC GIÁ TRỊ TÀI SẢN KHÔNG HỢP LỆ.\n(Tổng giá trị các tài sản phải bằng giá trị vốn của mục tài sản khác)');
           document.forms[0].txtSoLuongTS_0.focus();
           return false;
        }
        else
            return true;
    }
  }
function KiemTraTongSoLuongCoPhan(valuetong, soloaicp)
{
    tong =0;
    if (valuetong != '')
        valuetong = trim_str(valuetong,'.');
    else
    {
        alert('Vui lòng nhập mệnh giá cổ phần!...');
        document.forms[0].txtMenhGia.focus();
        return false;
    }
    if (valuetong>0)
    {
        tong = get_TongSoCoPhanNhapVao(soloaicp);
        if(tong != valuetong)
        {
            alert('Số lượng cổ phần không hợp lệ!\nTổng số lượng cổ phần theo từng loại PHẢI BẰNG tổng số cổ phần!...');
            document.forms[0].txtSoLuongCP_0.focus();
            return false;
        }
        else return true;
    }
    else
    {
        document.forms[0].txtSoLuongCP_0.focus();
        return false;
    }
  }
  
function get_TongSoCoPhanNhapVao(soloaicp)
{
    tongslcp = 0
    if (soloaicp>0)
    {
        for(i=0;i<soloaicp;i++)
        {
            tongslcp+=parseInt(trim_str(eval('document.forms[0].txtSoLuongCP_' + i.toString()).value),'.');
        }
    }
    return tongslcp;
}

function set_TongVonGop(obj,ctrlName,ctrlName1)
{
    t1 = 0;
    t1=(obj.value!='')?parseInt(trim_str(obj.value,'.')):0;
    t2 = 0;
    temp=eval('document.forms[0].'+ctrlName).value;
    t2=(temp!='')?parseInt(trim_str(temp,'.')):0;
    t=t1+t2;
    eval('document.forms[0].'+ctrlName1).value = t;
    if(document.forms[0].txtMenhGia && document.forms[0].txtSoCoPhanGop)
        set_SoLuongCoPhanGop(document.forms[0].txtTongVonGop.value,document.forms[0].txtMenhGia.value,'txtSoCoPhanGop');
}
//function test_Element_Exists(formName, eName)
//{
//    if (document.all)
//    {
//        for(i=0;i<document.forms.length-1;i++)
//        {
//            if (document.forms[i].name==formName)
//            {
//                alert(formName); 
//               for(j=0;j<document.forms[i].elements.length-1;j++)
//                {
//                    alert(document.forms[i].elements[j].name); 
//                    if (document.forms[i].elements[j].name==eName)
//                    {
//                                   
//                        return true;
//                        break;
//                    }
//                }
//                break;
//            }
//        }
//        return false;
//    }
//   
//   //alert(document.forms[0].elements[i].name)
//}
function KiemTraTongVon()
{
    alertText = '';
    TongVon=document.forms[0].txtVonBanDau.value;
    tienVN=document.forms[0].txtTienVietNam.value;
    TSKhac=document.forms[0].txtTaiSanKhac.value;
    
    tt = 0;
    total = 0;
    tien1 = 0;
    tien2 = 0;
    total = (TongVon!='')?parseInt(trim_str(TongVon,'.')):0;
    tien1 = (tienVN!='')?parseInt(trim_str(tienVN,'.')):0;
    tien2 = (TSKhac!='')?parseInt(trim_str(TSKhac,'.')):0;
    
    if (total == 0)
    { 
        alert('Vui lòng nhập tổng vốn đầu tư vào! ....\nChú ý: TỔNG VỐN ĐẦU TƯ = TIỀN VN + TÀI SẢN KHÁC');
        document.forms[0].txtVonBanDau.select();
        return false;
    }
    else if (tien1 ==0)
    {
        alert('Vui lòng nhập tiền Việt Nam! ....\nChú ý: TỔNG VỐN ĐẦU TƯ = TIỀN VN + TÀI SẢN KHÁC');
        document.forms[0].txtTienVietNam.select();
        return false;
    }
    else
    {
            tt=tien1+tien2;
            
            if (total > 0)
            {
               if (total != tt)
               {
                   alertText='Tổng vốn đầu tư phải bằng tiền Việt Nam + Tài sản khác! ....\nChú ý: TỔNG VỐN ĐẦU TƯ = TIỀN VN + TÀI SẢN KHÁC';
               }
            }
            else if (total==0)
            {
                alertText='Vui lòng nhập tổng vốn đầu tư vào! ....\nChú ý: TỔNG VỐN ĐẦU TƯ = TIỀN VN + TÀI SẢN KHÁC';
            }
           
            if (alertText != '')
            {
                alert(alertText);
                if (document.forms[0].txtTienVietNam.value.length > 1)
                    document.forms[0].txtTaiSanKhac.select();
                else
                    document.forms[0].txtTienVietNam.select();
                return false;
            }
            else
                return true;
    }
}

function trim_str(value,key)
{
	while (value.indexOf(key)>=0)
	{
		value = value.replace(key,'');
	}
	return value;
}

function replace_str(value,key1,key2)
{
    try
    {
        var tmp=value;
       // alert(value);
        var key = new RegExp(key1,'g');
        tmp = tmp.replace(key,key2);
	    return tmp;
	}
	catch(e)
	{
	    alert(e.toString()+'on function replace_str()!...');
	    return value;
	}
}

function trim_zero_first(value)
{
	while (value.indexOf('0')==0 && value.indexOf(',')!=1)
	{
		value = value.replace('0','');
	}
	return value;
}