/**
*
*  UTF-8 data encode / decode
*  http://www.webtoolkit.info/
*
**/

var Utf8 = {

	// public method for url encoding
	encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// public method for url decoding
	decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}

function valnum(myfield, e, dec){
    var key;
    var keychar;
    
    if (window.event) 
        key = window.event.keyCode;
    else 
        if (e) 
            key = e.which;
        else 
            return true;
    keychar = String.fromCharCode(key);
    
    // control keys
    if ((key == null) || (key == 0) || (key == 8) ||
    (key == 9) ||
    (key == 13) ||
    (key == 27)) 
        return true;
    
    // numbers
    else 
        if ((("0123456789").indexOf(keychar) > -1)) 
            return true;
        
        // decimal point jump
        else 
            if (dec && (keychar == ".")) {
                myfield.form.elements[dec].focus();
                return false;
            }
            else 
                return false;
}

function searchEnter(e,v,a) {
	var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	if ( (keyCode==13) ) sendSearch(v,a);
}
function sendSearch(v,a) {
	document.location.href=a+v;
}

var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/;
var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/;
var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/;
var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
var reDate5 = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
var reDate = reDate4;

function doDate(pStr, pFmt, msg)
{
	eval("reDate = reDate" + pFmt);
	if (!reDate.test(pStr) && pStr != null && pStr != "") {
		alert(pStr + " Não é uma data válida.");
	}
} // doDate

function mascara_data(field, data){ 
	var mydata = '';
	mydata = mydata + data; 
	if (mydata.length == 2){ 
		mydata = mydata + '/'; 
		$(field).value = mydata; 
	} 
	if (mydata.length == 5){ 
		mydata = mydata + '/'; 
		$(field).value = mydata; 
	} 
	if (mydata.length == 10){
		verifica_data(mydata);
	} 
} 

function verifica_data (d) { 
	situacao = "";

	eval("reDate = reDate1");
	if (!reDate.test(d)) situacao = "falsa";
	
	dia = (d.substring(0,2)); 
	mes = (d.substring(3,5)); 
	ano = (d.substring(6,10)); 
	
	// verifica o dia valido para cada mes 
	if ((dia < 01)||(dia < 01 || dia > '30') && (  mes == 04 || mes == 06 || mes == 9 || mes == 11 ) || dia > 31) { 
		situacao = "falsa";
	} 
	
	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		situacao = "falsa"; 
	} 
	
	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4)))) { 
		situacao = "falsa"; 
	} 
	
	if (d == "") { 
		situacao = "falsa"; 
	} 
	
	if (situacao == "falsa") { 
		alert("Data inválida!");
		return false;
	} 
}

var STR_PAD_LEFT = 1;
var STR_PAD_RIGHT = 2;
var STR_PAD_BOTH = 3;
 
function pad(str, len, pad, dir) {
 
	if (typeof(len) == "undefined") { var len = 0; }
	if (typeof(pad) == "undefined") { var pad = ' '; }
	if (typeof(dir) == "undefined") { var dir = STR_PAD_RIGHT; }
 
	if (len + 1 >= str.length) {
 
		switch (dir){
 
			case STR_PAD_LEFT:
				str = Array(len + 1 - str.length).join(pad) + str;
			break;
 
			case STR_PAD_BOTH:
				var RIGHT = Math.ceil((padlen = len - str.length) / 2);
				var left = padlen - right;
				str = Array(left+1).join(pad) + str + Array(right+1).join(pad);
			break;
 
			default:
				str = str + Array(len + 1 - str.length).join(pad);
			break;
 
		} // switch
 
	}
 
	return str;
 
}

function calcSince(dref, type, num) {
	var data = new Date();
	adref = dref.split('/');
	
	data.setFullYear(adref[2], adref[1]-1, adref[0]);
	
	if (type=='D') data.setDate(data.getDate() - num);
	if (type=='S') data.setDate(data.getDate() - (num*7));
	if (type=='M') data.setMonth(data.getMonth() - num);
	if (type=='A') data.setFullYear(data.getFullYear() - num);
	
	$('since_date').innerHTML = pad(data.getDate().toString(),2,'0',1) + '/' + pad((data.getMonth()+1).toString(),2,'0',1) + '/' + data.getFullYear().toString();
}

function clearInput(field_id, term_to_clear) {
	
	// Clear input if it matches default value
	if (document.getElementById(field_id).value == term_to_clear ) {
		document.getElementById(field_id).value = '';
	}
	
	// If the value is blank, then put back term
	else if (document.getElementById(field_id).value == '' ) {
		document.getElementById(field_id).value = term_to_clear;
	}
} // end clearSearch()

function verifyRadio(field, msg) {
         myOption=-1;
         for (i=0; i<field.length; i++) {
             if (field[i].checked) {
                myOption = i;
             }
         }
         if (myOption==-1) {
            alert(msg); return false;
         }
         return true;
}

function nextFocus(me,next) {
    maxLen = me.attr("maxlength") || 1000; //caso o campo não contenha este atributo
    field = document.getElementById(next);
    (me.val().length+1 > maxLen ? field.focus() : 0)
}

