// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
// ===================================================================
function LTrim(str)
{
	if(str==null){return null;}
	for(var i=0;str.charAt(i)==" ";i++);
	return str.substring(i,str.length);
}

function RTrim(str)
{
	if(str==null){return null;}
	for(var i=str.length-1;str.charAt(i)==" ";i--);
	return str.substring(0,i+1);
}

function Trim(str){return LTrim(RTrim(str));}

function LTrimAll(str)
{
	if(str==null){return str;}
	for(var i=0;str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t";i++);
	return str.substring(i,str.length);
}

function RTrimAll(str)
{
	if(str==null){return str;}
	for(var i=str.length-1;str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t";i--);
	return str.substring(0,i+1);
}

function TrimAll(str){return LTrimAll(RTrimAll(str));}

function isNull(val){return(val==null);}

function isBlank(val)
{
	if(val==null){return true;}
	for(var i=0;i<val.length;i++)
	{
		if(  (val.charAt(i)!=' ')&&(val.charAt(i)!="\t")
			&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
	}
	return true;
}

function isInteger(val)
{
	if(isBlank(val)){return false;}
	for(var i=0;i<val.length;i++){if(!isDigit(val.charAt(i))){return false;}}
	return true;
}

function isNumeric(val){return(parseFloat(val,10)==(val*1));}

function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}

function isDigit(num)
{
	if(num.length>1){return false;}
	var string="1234567890";
	if(string.indexOf(num)!=-1){return true;}
	return false;
}

function setFieldsToUpperCase()//input fields' name
{
	for(var i=0;i<arguments.length;i++){arguments[i].value = arguments[i].value.toUpperCase();}
}

function commifyArray(obj,delimiter)
{
	if(typeof(delimiter)=="undefined" || delimiter==null){delimiter = ",";}
	var s="";
	if(obj==null||obj.length<=0){return s;}
	for(var i=0;i<obj.length;i++){s=s+((s=="")?"":delimiter)+obj[i].toString();}
	return s;
}

function getSingleInputValue(obj,use_default,delimiter)
{
	switch(obj.type)
	{
		case 'radio': 
		case 'checkbox': 
			return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);
		case 'text': 
		case 'hidden': 
		case 'textarea': 
			return(use_default)?obj.defaultValue:obj.value;		
		case 'password':
			return((use_default)?null:obj.value);
		case 'select-one':
			if(obj.options==null){return null;}
			if(use_default)
			{
				var o=obj.options;
				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}
				return o[0].value;
			}
			if(obj.selectedIndex<0){return null;}
			return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;
		case 'select-multiple':
			if(obj.options==null){return null;}
			var values=new Array();
			for(var i=0;i<obj.options.length;i++)
			{
				if((use_default&&obj.options[i].defaultSelected)
					||(!use_default&&obj.options[i].selected))
				{
					values[values.length]=obj.options[i].value;
				}
			}
			return(values.length==0)?null:commifyArray(values,delimiter);
	}
	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this page");
	return null;
}

function getSingleInputText(obj,use_default,delimiter)
{
	switch(obj.type)
	{
		case 'radio': 
		case 'checkbox': 	
			return "";
		case 'text': 
		case 'hidden': 
		case 'textarea': 
			return(use_default)?obj.defaultValue:obj.value;
		case 'password': 
			return((use_default)?null:obj.value);
		case 'select-one':
			if(obj.options==null){return null;}
			if(use_default)
			{
				var o=obj.options;
				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}
				return o[0].text;
			}
			if(obj.selectedIndex<0){return null;}
			return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;
		case 'select-multiple':
			if(obj.options==null){return null;}
			var values=new Array();
			for(var i=0;i<obj.options.length;i++)
			{
				if((use_default&&obj.options[i].defaultSelected)
					||(!use_default&&obj.options[i].selected))
				{
					values[values.length]=obj.options[i].text;
				}
			}
			return(values.length==0)?null:commifyArray(values,delimiter);
	}
	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
	return null;
}


function getInputValue(obj,delimiter)
{
	var use_default=(arguments.length>2)?arguments[2]:false;
	if(isArray(obj) &&(typeof(obj.type)=="undefined"))
	{
		var values=new Array();
		for(var i=0;i<obj.length;i++)
		{
			var v=getSingleInputValue(obj[i],use_default,delimiter);
			if(v!=null){values[values.length]=v;}
		}
		return commifyArray(values,delimiter);
	}
	return getSingleInputValue(obj,use_default,delimiter);
}

function getInputText(obj,delimiter)
{
	var use_default=(arguments.length>2)?arguments[2]:false;
	if(isArray(obj) &&(typeof(obj.type)=="undefined"))
	{
		var values=new Array();
		for(var i=0;i<obj.length;i++)
		{
			var v=getSingleInputText(obj[i],use_default,delimiter);
			if(v!=null){values[values.length]=v;}
		}
		return commifyArray(values,delimiter);
	}
	return getSingleInputText(obj,use_default,delimiter);
}

function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}

function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}

function isChanged(obj){return(getInputValue(obj)!=getInputDefaultValue(obj));}

function isBlank(val)
{
	if(val==null){return true;}
	for(var i=0;i<val.length;i++)
	{
		if((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r"))
		{return false;}
	}
	return true;
}

function disallowBlank(obj)
{
	var msg=(arguments.length>1)?arguments[1]:"";
	var dofocus=(arguments.length>2)?arguments[2]:false;
	if(isBlank(getInputValue(obj)))
	{
		if(!isBlank(msg)){alert(msg);}
		if(dofocus)
		{
			if(isArray(obj) &&(typeof(obj.type)=="undefined")){obj=obj[0];}
			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password"){obj.select();}
			obj.focus();
		}
		return true;
	}
	return false;
}
//----------------------------------
/* gioi han so ky tu cua textarea*/
function checkLimit(event,formObject, maxlen) 
{
     if (window.event)
       key = window.event.keyCode;
     else if (event)
        key = event.which;
        
     // allow delete, backspace, and other basic editing key strokes
     if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 ) {
        return true;
     }
     else {  
        var content = formObject.value;
        var re = /\s/g;
        content = content.replace(re,"");
	      if (content.length > maxlen-1 )
	        return false;
	   }
}

function countChars(el, maxlen)
{
	var content = el.value;
	re = /\s/g;
	content = content.replace(re,"");
	if( ! content.length ) {
	   el.form.charcount.value = maxlen;
	} else {
		if(content.length > maxlen) {				
		  el.value = el.value.substring(0, maxlen);		 
		}
		content = el.value;
	   el.form.charcount.value = maxlen - content.length > 0 ? maxlen - content.length : 0;
	}
}
function is_email(str_email)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(str_email)) return false;
	return true;
}
function is_emails(str_emails)
{
	var filter  = /^(([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+([;]{0,}){0,})+$/;
	if (!filter.test(str_emails)) return false;
	return true;
}
function is_phone(str_phone)
{
	var filter  = /^([0-9\/ \ \- \.\(\)\;\-\_\,])+$/;
	if (!filter.test(str_phone))	 return false;
	return true;
}
function Browser() {

	var ua, s, i;	
	this.isIE    = false;  // Internet Explorer
	this.isNS    = false;  // Netscape
	this.version = null;
	
	ua = navigator.userAgent;	
	s = "MSIE";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isIE = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}	
	s = "Netscape6/";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}	
	// Treat any other "Gecko" browser as NS 6.1.	
	s = "Gecko";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.version = 6.1;
		return;
	}
}

