/**********************************************************
* Description   : Library Javascript - Process String
* Library Name  : lib_string.js
* Dated         : 24/09/2007
* Modified      : 
************************************************************/


/*******************************************************
* Function	: Strip whitespace (or other characters) from the beginning of a string 
* Return	: 
* Parameter : 
*		str		: String
*		limit	: Char that you want to be stripped
*********************************************************/
function lTrim(str, limit)
{
	n = limit.length
	while (str.substring(0,n)==limit)
	{
		str = str.substring(n,str.length)
	}
    return str
}

/*******************************************************
* Function	: Strip whitespace (or other characters) from the end of a string 
* Return	: 
* Parameter : 
*		str		: String
*		limit	: Char that you want to be stripped
*********************************************************/
function rTrim(str, limit)
{
	n = limit.length
	while (str.substring(str.length-n,str.length+n)==limit)
	{
		str = str.substring(0,str.length-n)
	}
    return str
}

/*******************************************************
* Function	: Strip whitespace (or other characters) from the beginning and end of a string 
* Return	: 
* Parameter : 
*		str		: String
*		limit	: Char that you want to be stripped
*********************************************************/
function Trim(str, limit)
{
	str = lTrim(str,limit)
	str = rTrim(str,limit)
	return str
}

/*******************************************************
* Function	: Return part of a string from the left n characters
* Return	: 
* Parameter : 
*		str	: String
*		n	: Number of Character
*********************************************************/
function leftStr(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

/*******************************************************
* Function	: Return part of a string from the right n characters
* Return	: 
* Parameter : 
*		str	: String
*		n	: Number of Character
*********************************************************/
function rightStr(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

/*******************************************************
* Function	: Convert string from NCR-Decimal to Unicode (Alert Javascript)
* Return	: 
* Parameter : 
*	    str1: String
*********************************************************/
function toRealCharCode(str1) 
{
	var c0
	var str2='' ;
	var strx=''
	var idx
 
	idx = str1.indexOf('&')
	if( idx<0 ) return str1

	var i = 0
	while ( i < str1.length )
	{
		c0 = str1.substring(i,i+1)
		i++
		if( c0 != '&' ) continue

		strx  += str1.substring(0,i-1)
		str1 = str1.substring(i-1,str1.length)
		idx = str1.indexOf(';')
		if(idx <0 ) break;
	  
		str2 = str1.substring(1,idx)
    
		//2001/03/26 Bo sung them phan nhan biet cac ky tu web (31 ky tu)
		//Cac ky tu co code < 255 khong duoc IE luu duoi dang &#xxx; ma duoi dang &abc;, do do phai chu y den ngoai le nay !!!
		if (str2=='aacute') str2='225' //a'
		else if (str2=='agrave') str2='224' //a`
		else if (str2=='atilde') str2='227'  //a~
		else if (str2=='Aacute') str2='193'  //A'
		else if (str2=='Agrave') str2='192'  //A`
		else if (str2=='Atilde') str2='195'  //A~

		else if (str2=='acirc') str2='226'  //a^
		else if (str2=='Acirc') str2='194'  //A^

		else if (str2=='eacute') str2='233'  //e'
		else if (str2=='egrave') str2='232'  //e`
		else if (str2=='Eacute') str2='201'  //e'
		else if (str2=='Egrave') str2='200'  //e`

		else if (str2=='ecirc') str2='234'  //e^
		else if (str2=='Ecirc') str2='202'  //E^ 

		else if (str2=='iacute') str2='237'  //i'
		else if (str2=='igrave') str2='236'  //i`
		else if (str2=='Iacute') str2='205'  //I'
		else if (str2=='Igrave') str2='204'  //I`

		else if (str2=='oacute') str2='243'  //o'
		else if (str2=='ograve') str2='242'  //o`
		else if (str2=='otilde') str2='245'  //o~
		else if (str2=='Oacute') str2='243'  //O'
		else if (str2=='Ograve') str2='242'  //O`
		else if (str2=='Otilde') str2='245'  //O~

		else if (str2=='ocirc') str2='244'  //o^
		else if (str2=='Ocirc') str2='212'  //O^

		else if (str2=='uacute') str2='250'  //u'
		else if (str2=='ugrave') str2='249'  //u`
		else if (str2=='Uacute') str2='218'  //U'
		else if (str2=='Ugrave') str2='217'  //U`

		else if (str2=='yacute') str2='253'  //y'
		else if (str2=='Yacute') str2='221' //Y'

		else str2=str2.substring(1,str2.length);

		str1 = str1.substring(idx+1,str1.length)

		strx += String.fromCharCode(str2)
		i = 0
	}
	return strx+str1 ;
}

/*******************************************************
* Function	: Check input Integer number
* Return	: None
* Parameter : 
*		e		: Event object
*********************************************************/
function checkNumInt(e)
{
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;

	if (keycode>31 && (keycode < 48 || keycode > 57))
	{
		e.cancelBubble = true
		e.preventDefault? e.preventDefault() : e.returnValue = false;	
	}		
}
/*******************************************/

/*******************************************************
* Function	: Check input Real number
* Return	: None
* Parameter : 
*		field	: "this" pointer of control
*		e		: Event object
*********************************************************/
function checkNumReal(field, e)
{		
	check=true;
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;
	if(keycode<=31)
		return;
	var keychar = String.fromCharCode(keycode);
	str=field.value;

	if(str=='')			
		reg = new RegExp("[0-9]")
	else
		reg = new RegExp("[0-9,]")
	if (!reg.test(keychar))
		check=false;
	else
	{
		count=0;
		if(str.indexOf(",")==0)
			check=false;
		else
		{
			for(i=0;i<str.length;i++)
				if(str.indexOf(",")>0)
					count++;
			if(count>1	&&	keychar==",")
			{
				check=false;
			}
		}
	}
	if(check==false)
	{
		e.cancelBubble = true
		e.preventDefault? e.preventDefault() : e.returnValue = false;
	}
		
}

/*******************************************************
* Function	: Check input valid character
* Return	: None
* Parameter : 
*		e		: Event object
*********************************************************/
/*Check invalid character*/
function checkInvalidChar(e)
{
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;
	
	var keychar = String.fromCharCode(keycode);

	reg=new RegExp("[\~\`\$\#\%\^\&\*\^\{\}\"]");

	if(reg.test(keychar))
	{
		e.cancelBubble = true
		e.preventDefault? e.preventDefault() : e.returnValue = false;	
	}
}

/*******************************************************
* Function	: Check only input char
* Return	: None
* Parameter : 
*		e		: Event object
*********************************************************/
function inputOnlyChar(e)
{
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;
	
	var keychar = String.fromCharCode(keycode);

	reg=new RegExp("[^a-zA-Z]");

	if(reg.test(keychar))
	{
		e.cancelBubble = true
		e.preventDefault? e.preventDefault() : e.returnValue = false;	
	}
}

/*******************************************************
* Function	: Check input hour ( 0<= hh <24 )
* Return	: None
* Parameter : 
*		field	: "this" pointer of control
*		e		: Event object
*********************************************************/
function checkTypeHour(field, e)
{
	var val = lTrim(field.value, "0");
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;

	if (val>23)
	{
		val = leftStr(val, 1);
	}
	if(val!="00" && val!="")
		field.value = (val<10)?"0"+val:val;
}

/*******************************************************
* Function	: Check input minute ( 0<= mm <60 )
* Return	: None
* Parameter : 
*		field	: this pointer of control
*		e		: Event object
*********************************************************/
function checkTypeMinute(field, e)
{
	var val = lTrim(field.value, "0");
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;

	if (val>59)
	{
		val = leftStr(val, 1);
	}
	if(val!="00" && val!="")
		field.value = (val<10)?"0"+val:val;
}

/*******************************************************
* Function	: Check input mark with : Max mark shoule be larger min mark
* Return	: None
* Parameter : 
*		idMarkMin	: ID of Control Min mark
*		idMarkMax	: ID of Control Max mark
*		e			: Event object
*********************************************************/
function checkTypeMark(idMarkMin, idMarkMax, e)
{
	var minMark = document.getElementById(idMarkMin).value;
	var maxMark = document.getElementById(idMarkMax).value;
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;

	if(minMark>=100)
		document.getElementById(idMarkMin).value = leftStr(minMark, 2);
	if(maxMark>100)
		document.getElementById(idMarkMax).value = leftStr(maxMark, 2);

	if (minMark>=maxMark)
	{
		document.getElementById(idMarkMax).value = leftStr(maxMark, 1);
	}
	if (keycode>31 && (keycode < 48 || keycode > 57))
	{
		e.cancelBubble = true
		e.preventDefault? e.preventDefault() : e.returnValue = false;	
	}
}

/*********************************************************
* Function  : check phone number
* Return    : None
* Parameter :
*		e	: event
*********************************************************/
function checkFoneNum(e)
{
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;

	var keychar = String.fromCharCode(keycode);

	reg=new RegExp("[^0-9\-\(\)\]");

	if(reg.test(keychar))
	{
		e.cancelBubble = true
		e.preventDefault? e.preventDefault() : e.returnValue = false;	
	}		
}	