﻿// Dinh dang tien
var sep=",";
var dec=".";
var empty="";
var comma=',';
var dot='.';
// Format ngay
var numCheck = "0123456789";
var date_symbol = "ddMMyyyy";
var date_separator = "/";
var date_format = "dd/MM/yyyy";

/*
  Muc dinh: kiem tra mot gia tri co null hoac rong hay khong
  Ghi chu: 
  Dau vao: chuoi str
*/
function isEmpty(val)
{
	return(val==null||val=="");
}
/*
  trim : trim mot str
*/
function trim(s)
{
	return s.toString().replace(/^\s*/,"").replace(/\s*$/, "");
}
/*
	Dinh dang 1 so . Dau vao String num la kieu so
	Dau vao: Chuoi can format
	Optional: So chu so thap phan sau dau phay
	Dau ra: chuoi da duoc format
*/
function formatSo(num,precision) 
{
  if (isEmpty(precision)) precision=2;
  var x=Math.pow(10,precision); 
  num=num.toString().replace(/\,/g,dot);  
  if(isNaN(num))  num="0";
  num=Math.floor(num*x+0.50000000001);
  var cents=num%x;
  num=Math.floor(num/x).toString();
  if (cents!=0)
  {
  	var len=cents.toString().length;
    if (len<precision)
  	{
     for (i=1;i<=precision-len;i++)  cents="0"+cents;
  	}
  }
  for (var i=0;i<Math.floor((num.length-(1+i))/3); i++)
  num=num.substring(0,num.length-(4*i+3))+sep+num.substring(num.length-(4*i+3));
  if (cents==0)  return num;
  else return (num+dec+cents);
}

/*
  Muc dinh: Kiem tra mot so co phai la ky tu dac biet khong
  Ghi chu: 
  Dau vao: chuoi can kiem tra chua ky tu dac biet
  Dau ra: tra ve true neu chuoi chua ky tu dac biet, false neu nguoc lai
*/    
function isSpecialCharacter(str)
{
  var myChars = "~`!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
  for(var i=0; i<str.length; i++)
  {
    if( myChars.indexOf(str.charAt(i)) != -1 )
      return true;
  }
  return false;
}

/*
  Muc dinh: Kiem tra chuoi co dau cach hay khong
  Ghi chu: 
  Dau vao: chuoi can kiem tra chua dau cach
  Dau ra: tra ve true neu chuoi chua dau cach, false neu nguoc lai
*/    
function isSpace(str)
{
  if( str.indexOf(' ') != -1 )
    return true;
  return false;
}

/*
* isNumber : Kiem tra 1 ctr co phai la kieu so ?
* type=% : %
* type=i : integer
*/
function isNumber(ctrName,type,precision)
{
  var ctr=eval(ctrName);
  var val=ctr.value;
  if (trim(val).length<1) return true;
  val=val.toString().replace(/\s/g,empty);
  val=val.split(sep).join(empty);
  if (type=="i")
  {
  	objRegExp=/^\d+$/;
  }
  else
  {
    if      (dec==comma)     objRegExp =/^([0-9]*|\d*\,\d{1}?\d*)$/; 
    else if (dec==dot)       objRegExp =/^([0-9]*|\d*\.\d{1}?\d*)$/; 
  }

	if (!objRegExp.test(val))   
	{
	   alert("Dữ liệu nhập vào không là kiểu số");
	   ctr.focus();
	   ctr.select();
	   return  false; 
	}

	if (type=="%" && val>100)    
	{
	    alert("Dữ liệu nhập vào không là kiểu số");
	    ctr.focus();
	    ctr.select();
	    return  false; 
	}
  ctr.value = formatSo(val,precision);
  return  true; 
}
function isNoData(ctrName)
{
  if ( isEmpty(ctrName.value) )
  {
	alert("Bạn chưa nhập dữ liệu.");
	ctrName.focus();
  }
}

/*
isTime
Purpose: Kiem tra dinh dang thoi gian hh:mm 
*/
function isTime(ctrName)
{
  var ctr=eval(ctrName);
  var val=ctr.value;
  if (trim(val).length<1) val="00:00";
  if (val.indexOf(":")<0)  val+=":00";
  var arr=val.split(":");
  var hh=arr[0];
  var mi=arr[1];
  if  (hh.length<2) hh="0"+hh;
  if  (mi.length<2) mi="0"+mi;
  val=hh+":"+mi  
  var objRegExp=/^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/
  if (!objRegExp.test(val))   
    {
      alert("Sai định dạng giờ");
      ctr.focus();
      ctr.select();
      return false;
    }
  ctr.value=val;
  return true;
}
function formatTime(ctrName) {
  var ctr=eval(ctrName);
  var val=ctr.value;
  var len=val.length;
  if (len>5) return false; 
  key=String.fromCharCode(event.keyCode);  
  if (numCheck.indexOf(key)==-1) return false;
  if (len==2)  ctr.value=val+":";
  return true;
}

function formatDate(ctrName) {
  var ctr=eval(ctrName);
  var val=ctr.value;
  var len=val.length;
  if (len>10) return false; 
  key=String.fromCharCode(event.keyCode);  
  if (numCheck.indexOf(key) == -1) return false;
  if (((date_symbol=="MMddyyyy"||date_symbol=="ddMMyyyy") && (len==2||len==5))||((date_symbol=="yyyyMMdd"||date_symbol=="yyyyddMM")&& (len==4||len==7)))  ctr.value=val+date_separator;
  return true;
}
function isDate(ctrName) 
{
   var strD;
   var strM;
   var strY;
   var ctr=eval(ctrName);
   var strDate=ctr.value;
   var len=strDate.length;
   if (len<1) return true;
   if (len!=8&&len!=10)
   {
    alert("Ngày không hợp lệ.");
    ctr.focus();
    ctr.select();
    return false;
   }
    var arr=strDate.split(date_separator);
    if (arr.length!=3) 
    {
      alert("Ngày không hợp lệ.");
      ctr.focus();
      ctr.select();
      return false; 
    }
    else 
    {
		strD=arr[0];
		strM=arr[1];
		strY=arr[2];
   	}
    if (strY.length==2)
    {
         if (strY>"30")  strY="19"+strY;
         else            strY="20"+strY;
    }
	if (!validDate(strD,strM,strY)) 
	{
		alert("Ngay khong hop le");
		ctr.focus();
		ctr.select();
		return false;
	}
	if (len==8)
	{
		ctr.value=strD+date_separator+strM+date_separator+strY; 
	}
	return true;
}
function validDate(strD,strM,strY) 
{
    var intY=parseInt(strY,10);
    if (isNaN(intY)) return false;
    var intD=parseInt(strD,10);
    if (isNaN(intD)) return false;
    if (intD<1)      return false;
    var intM=parseInt(strM,10);
    if (isNaN(intM))      return false;
    if (intM>12||intM<1)  return false;
    if ((intM == 1 || intM == 3 || intM == 5 || intM == 7 || intM == 8 || intM == 10 || intM == 12) && (intD > 31)) return false;
    if ((intM == 4 || intM == 6 || intM == 9 || intM == 11) && (intD > 30)) return false;
    if (intM == 2) {
     if (LeapYear(intY)) 
     {
      if (intD>29) return false;
     }
     else 
     {
      if (intD>28) return false;
     }
    }
    return true;
}
function LeapYear(intY) {
    if (intY % 100 == 0) 
    {
      if (intY % 400 == 0)   return true; 
    }
    else 
    {
      if ((intY % 4) == 0) return true; 
    }
    return false;
}
/*
* Muc dich : Kiem tra tinh hop le cua dia chi email
*/
function isEmail(str)
{
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	var msg = "Địa chỉ Email không hợp lệ.";
	if ( str.indexOf(at) == -1 ) {
		alert(msg)
		return false
	}
	if ( str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr ) {
		alert(msg);
		return false;
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		alert(msg);
		return false;
	}
	if (str.indexOf(at,(lat+1))!=-1) {
		alert(msg);
		return false;
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {
		alert(msg);
		return false;
	}
	if (str.indexOf(dot,(lat+2))==-1) {
		alert(msg);
		return false
	}
	if (str.indexOf(" ")!=-1) {
		alert(msg);
		return false;
	}

 	return true;
}

/*
* Muc dich : Loc bo cac ky tu filter trong val
*/
function filterString(val,filter)
{   
    var result="";
    var str = trim(val);
    for (var i=0; i<str.length; i++)
    {   
        var c = str.charAt(i);
        if (filter.indexOf(c) == -1)  result +=c;
    }
    return result;
}
/*
* Muc dich : Kiem tra tinh hop le cua so dien thoai
*/
function isPhone(ctr)
{
	var val = trim(ctr.value);
	val = filterString(val,"()-+.;");
	var len = val.length;
	if ( (!isNumeric(val)) || (len<6) || (len>50) )
	{
		alert("Số điện thoại không hợp lệ.");
		ctr.focus();
		return false;
	}
	return true;
}
 /*
    Muc dinh: kiem tra mot chuoi co phai la so hay khong (chuoi chi gom cac ky tu so tu 0-9 )
    Ghi chu: chuoi chi chua cac ky tu so tu 0-9
    Dau vao: chuoi str
    Dau ra: tra ve true neu dung, false neu sai
  */
function isNumeric(val)
{
	for (var i=0; i<val.length; i++)
	{
		var c = val.charAt(i);
		if ( (c < "0") || (c > "9") ) return false;
	}
	return true;
}
//  End -->
