
function vacio(inputStr) {

        if (inputStr == "" || inputStr == null) {
                return true
        }
        return false
}
// funcion numero entero positivo
function esnumero(inputStr) {
        for (var i = 0; i < inputStr.length; i++) {
                var oneChar = inputStr.charAt(i)
                if (oneChar < "0" || oneChar > "9") {
                        return false
                }
        }
        return true
}
// rango dia
function rangodia(inputStr) {
        num = parseInt(inputStr)
        if (num < 1 || num > 31) {
                return false
        }
        return true
}

// rango año
function rangoanio(inputStr) {
        num = parseInt(inputStr)
        if (num < 1900 || num > 3000) {
                return false
        }
        return true
}

// valida dia
function diavalido(inputStr) {
        if (vacio(inputStr)) {
                alert("Debe ingresar el día")
                return false
        } else {
                if (!esnumero(inputStr)) {
                        alert("El día debe ser un número")
                        return false
                } else {
                        if (!rangodia(inputStr)) {
                                alert("Ingrese un día válido.")
                                return false
                        }
                }
        }
        return true
}

// valida año
function aniovalido(inputStr) {
        if (vacio(inputStr)) {
                alert("Debe ingresar el año")
                return false
        } else {
                if (!esnumero(inputStr)) {
                        alert("El año debe ser un número")
                        return false
                } else {
                        if (!rangoanio(inputStr)) {
                                alert("Ingrese un año válido")
                                return false
                        }
                }
        }
        return true
}

function tabla(n) {
        this.length = n
        for (var i=1; i <= n; i++)
                this[i] = null
                return this
}

var maxday = new tabla(12)
maxday[1] = 31
maxday[2] = 28
maxday[3] = 31
maxday[4] = 30
maxday[5] = 31
maxday[6] = 30
maxday[7] = 31
maxday[8] = 31
maxday[9] = 30
maxday[10] = 31
maxday[11] = 30
maxday[12] = 31

var monthname = new tabla(12)
monthname[1] = "Enero"
monthname[2] = "Febrero"
monthname[3] = "Marzo"
monthname[4] = "Abril"
monthname[5] = "Mayo"
monthname[6] = "Junio"
monthname[7] = "Julio"
monthname[8] = "Agosto"
monthname[9] = "Septiembre"
monthname[10] = "Octubre"
monthname[11] = "Noviembre"
monthname[12] = "Diciembre"

var adddays = new tabla(7)
adddays[1] = 14
adddays[2] = 35
adddays[3] = 70
adddays[4] = 84
adddays[5] = 161
adddays[6] = 189
adddays[7] = 280


// Calcula la fecha
function calcNewDate(month,day,year,adddays) {
        newday = eval(day) + adddays
        newmonth = month + 1
        newyear = eval(year)
        var max

        for (var i = 0; i < 12; i++) {
          if (newmonth == 2 && (newyear % 4) == 0) {
            max = 29
          } else
            max = maxday[newmonth]

          if (newday > max) {
            newday = newday - max
            newmonth = newmonth + 1
            if (newmonth > 12) {
              newyear = newyear + 1
              newmonth = 1
            }
          }
          else
            break
        }
        var datestring = newday + " de " + monthname[newmonth] +  " de " + newyear
        return datestring
}

// calcula fechas
function calc(form) {
        day = form.day.value
        year = form.year.value
        monthnum = form.month.selectedIndex

        if (diavalido(day)) {
          if (aniovalido(year)){
            form.duedate.value = calcNewDate(monthnum,day,year,adddays[7])
          }
        } 
}

