var lowercase = [".","_","-","/","a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "ñ", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "á", "é", "í", "ó", "ú"];
var uppercase = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "Ñ", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Á", "É", "Í", "Ó", "Ú"];

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

String.prototype.SpanishLetter = function() {
        var letter = this.toString();
        for (var i = 0; i<lowercase.length; i++) {
                if (letter == lowercase[i] || letter == uppercase[i]) {
                        return true;
                }
        }
        return false;
};


String.prototype.Num = function() {
        var num = this.toString();
		if (num!=""){
			if ((num>="0") && (num<="9")) {
					return true;
			} else {
					return false;
			}
		}else{
			return true;
		}
};

String.prototype.Float = function() {
        var temp = this.toString();
		if (temp!=""){
			var filter = /^([+-]?((([0-9]+)|([0-9]*\,[0-9]+))?))$/;
			if (!filter.test(temp)) {		
				return false;
			}else{
				return true;
			}
		}else{
			return true;
		}
};

String.prototype.Alphanumeric = function() {
        var temp = this.toString();
        for (var i = 0; i<temp.length; i++) {
                var character = temp.charAt(i);
                if (!(character.SpanishLetter() || character.Num())) {
                        return false;
                }
        }
        return true;
};

String.prototype.Email = function() {
        var temp = this.toString();
		if (temp!=""){
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (!filter.test(temp)) {		
				return false;
			}else{
				return true;
			}
		}else{
			return true;
		}
};


String.prototype.Date = function() {
        var temp = this.toString();
		if (temp!=""){
			var filter = /^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$/;
			if (!filter.test(temp)) {		
				return false;
			}else{

				var dd=temp.split("/")[0];
				var mm=temp.split("/")[1];				
				var yy=temp.split("/")[2];

				var dayobj = new Date(yy, mm-1, dd);
				
				if ((dayobj.getMonth()+1!=mm)||(dayobj.getDate()!=dd)||(dayobj.getFullYear()!=yy)){
					return false;
				}else{
					return true;
				}			

			}
		}else{
			return true;
		}
};

String.prototype.URLEncode = function( )
{
	var temp = this.toString();
	var encoded = "";

	if (temp!=""){
		// The Javascript escape and unescape functions do not correspond
		// with what browsers actually do...
		var SAFECHARS = "0123456789" +					// Numeric
						"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
						"abcdefghijklmnopqrstuvwxyz" +
						"-_.!~*'()";					// RFC2396 Mark characters
		var HEX = "0123456789ABCDEF";

		var plaintext = temp;		
		for (var i = 0; i < plaintext.length; i++ ) {
			var ch = plaintext.charAt(i);
			if (ch == " ") {
				encoded += "+";				// x-www-urlencoded, rather than %20
			} else if (SAFECHARS.indexOf(ch) != -1) {
				encoded += ch;
			} else {
				var charCode = ch.charCodeAt(0);
				if (charCode > 255) {
					/*
					alert( "Unicode Character '" 
							+ ch 
							+ "' cannot be encoded using standard URL encoding.\n" +
							  "(URL encoding only supports 8-bit characters.)\n" +
							  "A space (+) will be substituted." );
					*/
					encoded += "+";					
				} else {
					encoded += "%";
					encoded += HEX.charAt((charCode >> 4) & 0xF);
					encoded += HEX.charAt(charCode & 0xF);
				}
			}
		} // for		
	}

	return(encoded);
};

String.prototype.URLDecode = function()
{
	var temp = this.toString();
	var encoded = "";

	if (temp!=""){
	   // Replace + with ' '
	   // Replace %xx with equivalent character
	   // Put [ERROR] in output if %xx is invalid.
	   var HEXCHARS = "0123456789ABCDEFabcdef"; 
	   var encoded = temp;
	   var plaintext = "";
	   var i = 0;
	   while (i < encoded.length) {
		   var ch = encoded.charAt(i);
		   if (ch == "+") {
			   plaintext += " ";
			   i++;
		   } else if (ch == "%") {
				if (i < (encoded.length-2) 
						&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
						&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
					plaintext += unescape( encoded.substr(i,3) );
					i += 3;
				} else {
					/*
					alert( 'Bad escape combination near ...' + encoded.substr(i) );
					plaintext += "%[ERROR]";
					*/
					i++;
				}
			} else {
			   plaintext += ch;
			   i++;
			}
		} // while	   
   }
   return(encoded);
};

String.prototype.doFormat = function( )
{
	var temp = this.toString();
	var encoded=temp.replace("&","%26");


	
	return(encoded);
};