/* String.prototype */
String.prototype.Trim = function(){
	return this.replace(/^\s+|\s+$/g, "");
}

String.prototype.LTrim = function(){
	return this.replace(/^\s+/, "");
}

String.prototype.RTrim = function(){
	return this.replace(/\s+$/, "");
}

String.prototype.isWhitespace = function(){
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(this) != -1);
}

String.prototype.ltrim = function(){
	var re = /\s*((\S+\s*)*)/;
	return this.replace(re, "$1");
}

String.prototype.rtrim = function(){
	var re = /((\s*\S+)*)\s*/;
	return this.replace(re, "$1");
}

String.prototype.trim = function(){
	return this.ltrim().rtrim();
}

String.prototype.left = function(n){
    if (n <= 0)
	    return "";
	else if (n > this.length)
	    return this;
	else
	    return this.substring(0, n);
}

String.prototype.right = function(n){
    if (n <= 0)
       return "";
    else if (n > this.length)
       return str;
    else {
       var iLen = this.length;
       return this.substring(iLen, iLen - n);
    }
}

String.prototype.Email = function(){
    var sEmail = this.trim();

	while (sEmail != ''){
		c = sEmail.charAt(0);	
		if (c==' ' || c=='<' || c==39 || c==':' || c=='.'){
			sEmail = sEmail.substr(1);
		}else{
			break;
		}
	}

	i = sEmail.indexOf('>');
	if (i==-1){
		while (sEmail != ''){
			c = sEmail.charAt(sEmail.length - 1);
			if (c==' ' || c==39 || c=='.'){
				sEmail = sEmail.substr(0, sEmail.length - 1);
			}else{
				break;
			}
		}
	}else{
		sEmail = sEmail.substr(0, i);
	}

	if (sEmail.length > 96)
		return '';

	i = sEmail.lastIndexOf('@');
	j = sEmail.lastIndexOf('.');
	if (i < j)
		i = j;

	switch (sEmail.length - i - 1){
	    case 2:
		    break;
	    case 3:
		    switch (sEmail.substr(i)){
		        case '.com':
		        case '.net':
		        case '.org':
		        case '.edu':
		        case '.mil':
		        case '.gov':
		        case '.biz':
		        case '.pro':
		        case '.int':
			        break;
		        default:
			        return '';
		    }
		    break;
	    default:
		    switch (sEmail.substr(i)){
		        case '.name':
		        case '.info':
			        break;
		        default:
			        return '';
		    }
		    break;
	}
    
	sEmail = sEmail.toLowerCase();

	if (sEmail == '')
		return '';

	if (sEmail.indexOf(' ') != -1)
		return '';

	if (sEmail.indexOf('..') != -1)
		return '';

	if (sEmail.indexOf('.@') != -1)
		return '';

	if (sEmail.indexOf('@.') != -1)
		return '';

	if (sEmail.indexOf(':') != -1)
		return '';

	for (i=0; i < sEmail.length; i++){
		c = sEmail.charAt(i);

		if (c >= '0' && c <= '9')
			continue;
		
		if (c >= 'a' && c <= 'z')
			continue;
		
		if ('`~!#$%^&*-_+=?/\\|@.'.indexOf(c) != -1)
			continue;

		return '';
	}

	if ((i=sEmail.indexOf('@'))==-1)
		return '';

	if (sEmail.substr(i + 1).indexOf('@')!=-1)
		return '';

	if (sEmail.charAt(0)=='.' || sEmail.charAt(sEmail.length - 1)=='.')
		return '';

	return sEmail;
}

/* String Function */
function ltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}

function rtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}

function trim(str) {
	return ltrim(rtrim(str));
}

function left(str, n){
	if (n <= 0)
	    return "";
	else if (n > str.length)
	    return str;
	else
	    return str.substring(0, n);
}

function right(str, n){
    if (n <= 0)
       return "";
    else if (n > str.length)
       return str;
    else {
       var iLen = str.length;
       return str.substring(iLen, iLen - n);
    }
}

/* Email Function: 
    - CheckEmailAddress(Email)
*/
function CheckEmailAddress(Email){
	Email = trim(Email);

	while (Email != ''){
		c = Email.charAt(0);	
		if (c==' ' || c=='<' || c==39 || c==':' || c=='.'){
			Email = Email.substr(1);
		}else{
			break;
		}
	}

	i = Email.indexOf('>');
	if (i==-1){
		while (Email != ''){
			c = Email.charAt(Email.length - 1);
			if (c==' ' || c==39 || c=='.'){
				Email = Email.substr(0, Email.length - 1);
			}else{
				break;
			}
		}
	}else{
		Email = Email.substr(0, i);
	}

	if (Email.length > 96)
		return '';

	i = Email.lastIndexOf('@');
	j = Email.lastIndexOf('.');
	if (i < j)
		i = j;

	switch (Email.length - i - 1){
	    case 2:
		    break;
	    case 3:
		    switch (Email.substr(i)){
		        case '.com':
		        case '.net':
		        case '.org':
		        case '.edu':
		        case '.mil':
		        case '.gov':
		        case '.biz':
		        case '.pro':
		        case '.int':
			        break;
		        default:
			        return '';
		    }
		    break;
	    default:
		    switch (Email.substr(i)){
		        case '.name':
		        case '.info':
			        break;
		        default:
			        return '';
		    }
		    break;
	}
    
	Email = Email.toLowerCase();

	if (Email == '')
		return '';

	if (Email.indexOf(' ') != -1)
		return '';

	if (Email.indexOf('..') != -1)
		return '';

	if (Email.indexOf('.@') != -1)
		return '';

	if (Email.indexOf('@.') != -1)
		return '';

	if (Email.indexOf(':') != -1)
		return '';

	for (i=0; i < Email.length; i++){
		c = Email.charAt(i);

		if (c >= '0' && c <= '9')
			continue;
		
		if (c >= 'a' && c <= 'z')
			continue;
		
		if ('`~!#$%^&*-_+=?/\\|@.'.indexOf(c) != -1)
			continue;

		return '';
	}

	if ((i=Email.indexOf('@'))==-1)
		return '';

	if (Email.substr(i + 1).indexOf('@')!=-1)
		return '';

	if (Email.charAt(0)=='.' || Email.charAt(Email.length - 1)=='.')
		return '';

	return Email;
}