function _string_isAlphaExtended(chars){
	var extendedChars = chars.join("");
	var valid = true;			
	for (var i=0; i<this.length; i++){
		var charCode = this.charCodeAt(i);
		
		if ((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)){
			valid = false;	
		}
		
		if (valid == false){
			for (var j=0; j<extendedChars.length; j++){
				if (charCode == extendedChars.charCodeAt(j)){
					valid = true;
					break;
				}
			}
		}
		
		if (valid == false){
			break;	
		}
	}
	return valid;	
}

function _string_isAlphaNumericExtended(chars){
	var extendedChars = chars.join("");
	var valid = true;			
	for (var i=0; i<this.length; i++){
		var charCode = this.charCodeAt(i);
		
		if ((charCode < 48 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)){
			valid = false;	
		}
		
		if (valid == false){
			for (var j=0; j<extendedChars.length; j++){
				if (charCode == extendedChars.charCodeAt(j)){
					valid = true;
					break;
				}
			}
		}
		
		if (valid == false){
			break;	
		}
	}
	return valid;	
}

function _string_isAlphaNumeric(){
	var valid = true;			
	for (var i=0; i<this.length; i++){
		var charCode = this.charCodeAt(i);
		
		if ((charCode < 48 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)){
			valid = false;	
		}
		
		if (valid == false){
			break;	
		}
	}
	return valid;	
}

function _string_isNumeric(){
	var valid = true;			
	for (var i=0; i<this.length; i++){
		var charCode = this.charCodeAt(i);
		
		if ((charCode < 48 || charCode > 57)){
			valid = false;	
		}
		
		if (valid == false){
			break;	
		}
	}
	return valid;	
}

function _string_isNumericExtended(chars){
	var extendedChars = chars.join("");
	var valid = true;			
	for (var i=0; i<this.length; i++){
		var charCode = this.charCodeAt(i);
		
		if ((charCode < 48 || charCode > 57)){
			valid = false;	
		}
		
		if (valid == false){
			for (var j=0; j<extendedChars.length; j++){
				if (charCode == extendedChars.charCodeAt(j)){
					valid = true;
					break;
				}
			}
		}
		
		if (valid == false){
			break;	
		}
	}
	return valid;	
}


function _string_isEmail(){
	var extendedChars = "@.-_";
	var valid = true;	
	
	if (this.length == 0) return true;
	
	var email = this;
	if (email.indexOf("@") != -1){
		email = email.substr(email.indexOf("@")+1,email.length);
	}
	else{
		return false;
	}
	if (email.indexOf(".") != -1){
		email = email.substr(email.indexOf(".")+1,email.length);
	}
	else{
		return false;
	}
	if (email.length == 0) return false;
	
	var email = this;
	for (var i=0; i<extendedChars.length; i++){
		if (email.charCodeAt(0) == extendedChars.charCodeAt(i)) return false;
		if (email.charCodeAt(email.length-1) == extendedChars.charCodeAt(i)) return false;
	}
	
	var count = 0; //count of @
	for (var i=0; i<this.length; i++){
		var charCode = this.charCodeAt(i);
		
		if ((charCode < 48 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)){
			valid = false;	
		}
		
		if (valid == false){
			for (var j=0; j<extendedChars.length; j++){
				if (charCode == extendedChars.charCodeAt(j)){
					valid = true;
					if (charCode == 64){ //64=@
						count++;
					}
					var prevCharCode = 	this.charCodeAt(i-1);
					for (var k=0; k<extendedChars.length; k++){
						if (prevCharCode == extendedChars.charCodeAt(k)){
							valid = false;
							break;
						}
					}
					
					break;
				}
			}
		}
		
		if (valid == false){
			break;	
		}
	}
	
	if (valid == true){
		if (count > 1) valid = false;	
	}
	return valid;	
}


function _string_isDate(month, day, year){
	var valid = true;
	var validMonth = String(month).isNumeric();
	if (validMonth == false || parseInt(month) < 1 || parseInt(month) > 12){
		return false;
	}
	
	var validDay = String(day).isNumeric();
	if (validDay == false || parseInt(day) < 1 || parseInt(day) > 31){
		return false;
	}
	
        var dteNow = new Date();
        var intYear = dteNow.getFullYear();

	var validYear = String(year).isNumeric();
        //if (validYear == false || parseInt(year) < 1900 || parseInt(year) > 2009){
	if (validYear == false || parseInt(year) < 1900 || parseInt(year) > intYear){
		return false;
	}
	
	var days=[31,28,31,30,31,30,31,31,30,31,30,31];
	if (parseInt(day) > days[parseInt(month)-1] && parseInt(month)!=2){
		return false;	
	}
	else if (parseInt(month)==2){
		if (parseInt(year)%400 == 0 && parseInt(day) > 29){
			return false;	
		}
		else if (parseInt(year)%100 == 0 && parseInt(day) > 28){
			return false;	
		}
		else if (parseInt(year)%4 == 0 && parseInt(day) > 29){
			return false;	
		}
		else if (parseInt(year)%4 != 0 && parseInt(day) > 28){
			return false;
		}
	}
	
}


function _string_isHour(){
	var valid = true;
	
	if (this.indexOf(":") == -1){
		return false;	
	}
	
	var h = this.split(":")[0];
	var m = this.split(":")[1];
	
	if (h.length <2 || m.length < 2 || isNaN(h) || isNaN(m)){
		valid = false;
		return false;
	}
	
	if (parseInt(h) <0 || parseInt(h)>23){
		valid = false;
		return false;
	}
	
	if (parseInt(m) <0 || parseInt(m)>59){
		valid = false;
		return false;
	}
	
	return true;
	
}


function _string_stripBlanks(){
	var r, re;                 //Declare variables.
	var ss = this;
	re = / /g;                 //Create regular expression pattern.
	r = ss.replace(re, "");    //Replace "The" with "A".
	return(r);                 //Return string with replacement made.	
}


function _string_randomString(Length) {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz._";
	var string_length = Length;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}



String.prototype.isAlphaExtended = _string_isAlphaExtended;
String.prototype.isAlphaNumericExtended = _string_isAlphaNumericExtended;
String.prototype.isAlphaNumeric = _string_isAlphaNumeric;
String.prototype.isNumeric = _string_isNumeric;
String.prototype.isNumericExtended = _string_isNumericExtended;
String.prototype.isEmail = _string_isEmail;
String.prototype.isDate = _string_isDate;
String.prototype.isHour = _string_isHour;
String.prototype.stripBlanks = _string_stripBlanks;
String.prototype.randomString = _string_randomString;

