//String Class
String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g,''); 
} 
String.prototype.rtrim = function() { 
    return this.replace(/\s+$/g,''); 
}
String.prototype.ltrim = function() { 
    return this.replace(/^\s+/g,''); 
}

String.prototype.meta = function() 
{
    var str = this;
    var result = ""
    
    for(var i = 0; i < str.length; i++) 
    {
        if((/([\$\(\)\*\+\.\[\]\?\\\^\{\}\|]{1})/).test(str.charAt(i))) 
        {
            result += str.charAt(i).replace((/([\$\(\)\*\+\.\[\]\?\\\^\{\}\|]{1})/), "\\$1");
        }
        else
        {
            result += str.charAt(i);
        }
    }
    return result;
}

// remove
String.prototype.remove = function(regix) { return (regix == null) ? this : eval("this.replace(/[" + regix.meta() + "]/g, \"\")"); }

/* Checker */
// is Number  arguments[0] is permit String
String.prototype.IsNumber = function() { return (/^[0-9]+$/).test(this.remove(arguments[0])); }

// is Alphabet arguments[0] is permit String
String.prototype.IsAlphabet = function() { return (/^[a-zA-Z]+$/).test(this.remove(arguments[0])); }

// is Number or Alphabet arguments[0] is permit String
String.prototype.IsNumberOrAlphabet = function() { return (/^[0-9a-zA-Z]+$/).test(this.remove(arguments[0]));  }

// is null or Empty 
String.prototype.IsNullOrEmpty = function()
{
    var strText = this.trim();
    for(var i=0;i < strText.length; i++)
    {
        if( (strText.charAt(i) != "\t") && (strText.charAt(i) != "\n") && (strText.charAt(i) != "\r")){return false;}
    }
    return true;   
}


/* Checker Custom */
// is ID start Alphabet and permit string is alphabet, number , - , _ 
String.prototype.IsUserId = function() { return (/^[a-zA-z]{1}[0-9a-zA-Z_-]{3,14}$/).test(this.remove(arguments[0])); }

// is Password
String.prototype.IsPassWord = function() { return (/^[A-Za-z0-9`\-=\\\[\];',\./~!@#\$%\^&\*\(\)_\+|\{\}:"<>\?]{6,20}$/).test(this.remove(arguments[0]));}

// is Email
String.prototype.IsEmail = function() { return (/[-!#$%&'*+\/^_~{}|0-9a-zA-Z]+(\.[-!#$%&'*+\/^_~{}|0-9a-zA-Z]+)*@[-!#$%&'*+\/^_~{}|0-9a-zA-Z]+(\.[-!#$%&'*+\/^_~{}|0-9a-zA-Z]+)*/).test(this.remove(arguments[0])); }

// is Phone
String.prototype.IsPhone = function() 
{
    var delimiter = arguments[0] ? arguments[0] : "-";
    return eval("(/(02|0[3-9]{1}[0-9]{1})" + delimiter + "[1-9]{1}[0-9]{2,3}" + delimiter + "[0-9]{4}$/).test(this)");        
}

// is Mobile
String.prototype.IsMobile = function() 
{
    var delimiter = arguments[0] ? arguments[0] : "-";
    return eval("(/01[016789]" + delimiter + "[1-9]{1}[0-9]{2,3}" + delimiter + "[0-9]{4}$/).test(this)");        
}

// is businessnumber 
String.prototype.IsBusinessNumber = function()
{
    var delimiter = arguments[0] ? arguments[0] : "-";
    var businessNumber = eval("this.match(/[0-9]{3}" + delimiter + "[0-9]{2}" + delimiter + "[0-9]{5}$/)");
    if( businessNumber == null)
    {
        return false
    }
    else
    {
        businessNumber = businessNumber.toString();
    }
    
    var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);    
    var i = 0, sum=0; c2=0; re =0;
    var sum = 0;
    for( i=0; i<= 7 ; i++) { sum += checkID[i] * businessNumber.charAt(i);}
    c2 = "0" + (checkID[8] * businessNumber.charAt(8));
    c2 = c2.substring(c2.length - 2, c2.length);
    sum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1));
    re = (10 - (sum % 10)) % 10;
    
    if (Math.floor(bizID.charAt(9)) != re)
    {
        return false;
    }
    
    return true;
}

