//
function of_trim(as_value)
{
    var len, st, off;
    if (null==as_value || ""==as_value) {
        return as_value;
    }
    len=as_value.length;
    off=0;
    st=0;
    while ((st < len) && ( as_value.charAt(off+st) <=' ') ) st++;
    while ((st < len) && ( as_value.charAt(off+len-1) <=' ') ) len--;

    return ((st > 0) || (len < as_value.length)) ? as_value.substring(st, len) : as_value;
}
function rutCLASS (rut)
{
	function _isRUT()
	{
        var lsRUT="";
        var lsRUTAccum="";
        var lsCurrChar;
        var liStrLen=0;
        var liIndex=0;
		if (null==this.is_rut) return 0;
		if (""==this.is_rut) return 0;
		this.is_rut=this.is_rut.toUpperCase();
		for (var i=0; i < this.is_rut.length && this.is_rut.charAt(i)!='-'; i++) ;
		if (i==this.is_rut.length) return 0;
        lsRUT=of_trim(this.is_rut.substring(0, i));
        liStrLen=lsRUT.length;
        for (liIndex=0; liIndex<liStrLen; liIndex++) {
            lsCurrChar=lsRUT.charAt(liIndex);
            if (lsCurrChar!='.' && lsCurrChar!=';' && lsCurrChar!=',' && lsCurrChar!=' ') 
                lsRUTAccum += lsCurrChar;
        }
		this.il_rut=parseInt(lsRUTAccum);
		if (isNaN(this.il_rut)==true) return 0;
        if (this.il_rut==0) return 0;
		this.is_dv=of_trim(this.is_rut.substring(i+1, this.is_rut.length));
		if (null==this.is_dv) return 0;
		if (""==this.is_dv) return 0;
		this.ib_isvalid=true;
		return 1;
	}
	function _checkDV()
	{
		var START_FACTOR=2, END_FACTOR=8;
		if (this.ib_isvalid==false)  {
			return 0;
		}
		var ls_rut=String(this.il_rut);
		var ll_mult=0, ll_mod=0, ll_cnt=0;
		var ls_dv="";
		ll_cnt=START_FACTOR;
		for (var ll_i=ls_rut.length; ll_i>0; ll_i--)
		{
			ll_mult += ( ls_rut.charAt(ll_i - 1) * ll_cnt++ );
			if (ll_cnt==END_FACTOR) {ll_cnt=START_FACTOR;}
		}
		ll_mod=ll_mult % 11;
		if (ll_mod==1) ls_dv="K";
		else if (ll_mod==0) ls_dv="0";
		else ls_dv=(11-ll_mod);
		if (ls_dv==this.is_dv) {
			this.ib_isvalid=true;
			return 1;
		}
		return 0;
	}
	this.of_isRUT=_isRUT;
	this.of_checkDV=_checkDV;
	this.ib_isvalid=false;
	this.il_rut=0;
	this.is_dv="";
	this.is_rut=rut;
}

