String.prototype.isDate = function() {
	try {
		var arrData = new Array();
		arrData = this.split('/');
		var dia = arrData[0];
		var mes = arrData[1]-1;
		var ano = arrData[2];
		var dataEntrada = (arrData[0]*1)+'/'+(arrData[1]*1)+'/'+arrData[2];
		var minhaData = new Date(ano, mes, dia);
		var dataRetorno = minhaData.getDate()+'/'+(minhaData.getMonth()+1)+'/'+minhaData.getFullYear();
		if (dataEntrada == dataRetorno) {
			return true;
		} else {
			return false;
		}
	} catch (e) {
		return false;
	}
};
String.prototype.isMail = function() {
	var ER = new RegExp(/^[A-Za-z0-9]+(([\.\_\-]{1}[A-Za-z0-9]+)+)?@[A-Za-z0-9]+(([\.\_\-]{1}[A-Za-z0-9]+)+)?\.[A-Za-z]{2,4}$/);
	return (ER.test(this));
};

//Object.prototype.format = function(casas) {
String.prototype.format = function(casas) {	
	var ret = new String('');
	while (ret.length<(casas-this.toString().length)) {
		ret += '0';
	}
	return (ret+this);
};

String.prototype.toNumber = function() {
	var ent = this;
	while (ent.indexOf('.')>0) {
		ent = ent.replace('.', '');
	}
	ent = ent.replace(',', '.');
	return Number(ent);
};
String.prototype.toCurrency = function() {
	var ret = new String('');
	var fim = new String(',00');
	var exe = new String(this);
	var isNotFirst = null;
	if (this.indexOf('.')>0) {
		var arr = exe.split('.');
		exe = arr[0];
		while (arr[1].length<2) {
			arr[1] += '0';
		}
		if (arr[1].length>2) {
			arr[1] = arr[1].substr(0, 2);
		}
		fim = ','+arr[1];
	}
	while (exe.length>3) {
		if (isNotFirst) {
			ret = '.'+ret;
		}
		isNotFirst = true;
		ret = exe.substr(exe.length-3, 3)+ret;
		exe = exe.substr(0, exe.length-3);
	}
	if (exe.length>0) {
		if (ret.length>0) {
			ret = exe+'.'+ret;
		} else {
			ret = exe;
		}
	}
	return ret+fim;
};
String.prototype.replaceAll = function(re, su) {
	var ent = this;
	while (ent.indexOf(re)>=0) {
		ent = ent.replace(re, su);
	}
	return ent;
};
Date.prototype.getString = function() {
	return this.getDate().format(2)+'/'+this.getMonth().format(2)+'/'+this.getFullYear();
};
Date.prototype.format = function(f) {
	var gsMonthNames = new Array('janeiro', 'fevereiro', 'maro', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro');
	var gsDayNames = new Array('domingo', 'segunda', 'tera', 'quarta', 'quinta', 'sexta', 'sbado');
	if (!this.valueOf()) {
		return '&nbsp;';
	}
	var d = this;
	return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hhh|hh|nn|ss|a\/p)/gi, function ($1) {
		switch ($1.toLowerCase()) {
		case 'yyyy' :
			return d.getFullYear();
		case 'mmmm' :
			return gsMonthNames[d.getMonth()];
		case 'mmm' :
			return gsMonthNames[d.getMonth()].substr(0, 3);
		case 'mm' :
			return (d.getMonth()+1).format(2);
		case 'dddd' :
			return gsDayNames[d.getDay()];
		case 'ddd' :
			return gsDayNames[d.getDay()].substr(0, 3);
		case 'dd' :
			return d.getDate().format(2);
		case 'hhh' :
			return ((h=d.getHours()%12) ? h : 12).format(2);
		case 'hh' :
			return d.getHours().format(2);
		case 'nn' :
			return d.getMinutes().format(2);
		case 'ss' :
			return d.getSeconds().format(2);
		case 'a/p' :
			return d.getHours()<12 ? 'a' : 'p';
		}
	});
};

String.prototype.isCPF = function() {
	var cpf = this;
	var rrValida = new Array(00000000000,11111111111,2222222222,3333333333,44444444444,5555555555,6666666666,7777777777,8888888888,9999999999);
	for(i=0;i<11;i++){
		if(cpf == rrValida[i]){
			return null;	
		}
	}
	var i;
	var c = cpf.substr(0,9);
	var dv = cpf.substr(9,2);
	var d1 = 0;   
	for (i = 0; i < 9; i++) d1 += c.charAt(i)*(10-i);
	if (d1 == 0) return null;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1) return null;
	d1 *= 2;
	for (i = 0; i < 9; i++) d1 += c.charAt(i)*(11-i);
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1) return null;
	return true;
};

String.prototype.isCNPJ = function() {
    // Retornando falso para valores invlidos
    if (this == undefined || this == null || isNaN(this.replace(/\D/g, ""))
        || this.replace(/\D/g, "").length != 14) {
        return false;
    }
    
    // Definindo vetores e Dac's
    var cnpj     = this.replace(/\D/g, "").substring(0, 12).split(""); 
    var contDac1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    var contDac2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    var dac1     = 0;
    var dac2     = 0;
    
    // Efetuando soma da multiplicao dos valores para o primeiro dgito do Dac
    for (var iDac1 = 0; iDac1 < contDac1.length; iDac1++) {
        dac1 += cnpj[iDac1] * contDac1[iDac1];
    }
    
    // Resgatando resto da diviso para definio do primeiro dgito do Dac
    dac1 = dac1 % 11;
    
    // Verificando se o resto da diviso  menor que 2
    if (dac1 < 2) {
        // Atribuir 0 ao primeiro dgito do Dac se o resto da diviso for 0 ou 1 
        dac1 = 0;
    }
    else {
        // Atribuir 11 subtrado do resto da diviso para o primeiro dgito do
        // Dac
        dac1 = 11 - dac1;
    }
    
    // Adicionar ao vetor de algarismos do CNPJ o primeiro dgito do Dac 
    cnpj.push(dac1);
    
    // Efetuando soma da multiplicao dos valores para o segundo dgito do Dac
    for (var iDac2 = 0; iDac2 < contDac2.length; iDac2++) {
        dac2 += cnpj[iDac2] * contDac2[iDac2]; 
    }
    
    // Resgatando resto da diviso para definio do segundo dgito do Dac
    dac2 = dac2 % 11;
    
    // Verificando se o resto da diviso  menor que 2
    if (dac2 < 2) { 
        // Atribuir 0 ao segundo dgito do Dac se o resto da diviso for 0 ou 1
        dac2 = 0;
    }
    else {
        // Atribuir 11 subtrado do resto da diviso para o segundo dgito do 
        // Dac
        dac2 = 11 - dac2;
    }
    
    // Adicionar ao vetor de algarismos do CNPJ o segundo dgito do Dac
    cnpj.push(dac2);
    
    // Verificando se a unio do CNPJ obtido se assemelha ao CNPJ fornecido
    return (cnpj.join("") == this.replace(/\D/g, ""));
}

Array.prototype.in_array = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val) {
			return true;
		}
	}
	return false;
}