/*
 * TEXT COUNTER
 *
 * Conta qual o número de caractéres restantes para o preenchimento de um dado campo.
 */
function textCounter(field, counterField, maxlimit) {
    if (field.value.length > maxlimit){
        field.value = field.value.substring(0, maxlimit);
    }
    else{
        counterField.value = maxlimit - field.value.length;
    }
}

function setDisplayByID(id, value) {
    obj = document.getElementById(id);
    obj.style.display = value;
}

function keyCodeToAllBrowsers(event) {
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    return keyCode;
}

function isNumber(value) {
    return !isNaN(value);
}

/*
 *  Verifica se a string recebida é uma data no formato DD/MM/AAAA.
 *  Returna true caso a string seja uma data válida.
 */
function isDate(dateStr) {

    var datePat = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // Verifica o formato da data, no caso dd/mm/aaaa

    if (matchArray == null) {
        alert("Por favor, entre com uma data no formato DD/MM/AAAA.");
        return false;
    }

    day = matchArray[1];
    month = matchArray[3];
    year = matchArray[5];

    if (day < 1 || day > 31) {
        alert("O dia deve ser um valor entre 1 e 31.");
        return false;
    }

    if (month < 1 || month > 12) {
        alert("O mês deve ser um valor entre 1 e 12.");
        return false;
    }

    if ((month==4 || month==6 || month==9 || month==11) && day==31) { // Verifica se o mês possui 31 dias.
        alert("O mês " + month + " não tem 31 dias.")
        return false;
    }

    if (month == 2) { // Verifica se o fevereiro do ano informado possui 29 dias.
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            alert("Fevereiro de " + year + " não possui " + day + " dias.");
            return false;
        }
    }
    return true; // a data é válida
}

/*
 * Clock
 */
function digitalClock(displayObj) {
    var time = "";
    var date = new Date();
    var dayOfWeek = "";

    switch(date.getDay()) {
        case 0:
            dayOfWeek = "Domingo";
            break;
        case 1:
            dayOfWeek = "Segunda";
            break;
        case 2:
            dayOfWeek = "Ter\u00E7a";
            break;
        case 3:
            dayOfWeek = "Quarta";
            break;
        case 4:
            dayOfWeek = "Quinta";
            break;
        case 5:
            dayOfWeek = "Sexta";
            break;
        case 6:
            dayOfWeek = "S\u00E1bado";
            break;
        default:
            break;
    }
    if (date.getDay() != 0 && date.getDay() != 6) {
        dayOfWeek += "-feira";
    }
    dayOfWeek += ", ";

    var dayOfMonth = date.getDate() < 10 ? "0" + date.getDate()
    : date.getDate();
    var month = (date.getMonth() + 1) < 10 ? "0" + (date.getMonth() + 1)
    : (date.getMonth() + 1);
    var hour = date.getHours() < 10 ? "0" + date.getHours()
    : date.getHours();
    var minute = date.getMinutes() < 10 ? "0" + date.getMinutes()
    : date.getMinutes();
    var second = date.getSeconds() < 10 ? "0" + date.getSeconds()
    : date.getSeconds();
    var year = navigator.appName != "Microsoft Internet Explorer"
    ? (date.getYear() + 1900) + ""
    : date.getYear() + "";

    time = dayOfWeek + dayOfMonth + "/" + month + "/" + year + " "
    + hour + ":" + minute + ":" + second;
    displayObj.value = time;
}

function getURLContent(url,method) {
    var text = new XMLHttpRequest();

    text.open(method.toUpperCase(),url,false);
    text.send();

    return text.responseText;
}
