
var prevValue = ''; // usada por rutinas de captura con mascara

var scripturl = '/scripts/criiiext.dll'; // direccion de la extension de comprared

var requestName = 'UTILREQ'; // nombre del campo solicitud de Comprared

////////////////////////////////////////
// Funciones para captura con mascara //
////////////////////////////////////////

function correctNumber(ctrl, event, maxDecimals, decimalSeparator )
{
        var invalid = 0, dotPos = 0;
        var acceptDecimalSeparator = maxDecimals>0;
        var value='';

        // permitir caracteres especiales de edicion (TAB,BACKSPACE,etc)
        if (event.keyCode<32) return true;

        // verificar que solo hayan digitos y un separador decimal
        for (i=0; i<ctrl.value.length; i++)
        {
                ch = ctrl.value.charAt(i);
                if ( (ch == decimalSeparator) && acceptDecimalSeparator )
                        acceptDecimalSeparator = 0;
                else if ( ch < '0' || ch > '9' )
                        invalid = 1;
                if (invalid) break;
        }

        // verificar que no se excedan la cantidad de decimales
        if ( (invalid==0) && (maxDecimals>0))
        {
                dotPos = ctrl.value.indexOf(decimalSeparator);
                if (dotPos>=0)
                        invalid = (ctrl.value.length-dotPos-1)>maxDecimals;
        }
        if (invalid>0)
        {
                ctrl.value = prevValue;
                return false;
        }

        return true;
}

function startValidation(ctrl)
{
        prevValue = ctrl.value;
        return true;
}
function forceNumber(ctrl, event, maxDecimals, decimalSeparator)
// controla que solo se introduzcan digitos o el separador decimal
// en un campo numerico
{
        var keyCode = event.keyCode ? event.keyCode : event.charCode;
        // no permitir que el separador decimal se incluya mas de una vez
        keyCode = String.fromCharCode(keyCode);
        prevValue = ctrl.value;
        if (keyCode==decimalSeparator && maxDecimals>0)
        {
                if ( ctrl.value.indexOf(decimalSeparator)>=0 )
                        return false;
                else
                        return true;
        }
        // solo permitir digitos
        if (keyCode<'0' || keyCode>'9') return false;
}

function correctDate(ctrl, event, dateSeparator )
{
        // separar componentes de fecha
        var comps = ctrl.value.split(dateSeparator);
        var value = '';

        // permitir caracteres especiales de edicion (TAB,BACKSPACE,etc)
        if (event.keyCode<32) return true;

        // si esta el dia entonces tratar de completar ese componente
        if (comps.length>0)
        {
                dia = comps[0];
                if (dia.length==1)
                {
                        if ( dia.charAt(0)>'3' )
                                dia = '0' + dia;
                        else if ( comps.length>1 )
                                dia = '0'+ dia;
                }
                if (dia.length==2)
                        dia += dateSeparator;

                if (dia=='00/') dia ='01/';

                value += dia;
        }

        // si esta el mes entonces tratar de completar ese componente
        if (comps.length>1)
        {
                mes = comps[1];
                if (mes.length==1)
                {
                        if (mes.charAt(0)>'1')
                                mes = '0' + mes;
                        else if ( comps.length>2 )
                                mes = '0' + mes;
                }
                if (mes.length==2)
                        mes += dateSeparator;
                value += mes;
        }

        // si esta el autonces tratar de completar ese componente
        if (comps.length>2)
        {
                agno = comps[2];
                if (agno.length==2)
                {
                        if ('12'.indexOf(agno.charAt(0))==-1)
                                agno = '20' + agno;
                }
                value += agno;
        }
        if (value!=ctrl.value)
                ctrl.value = value;

        return true;
}

function forceDate(ctrl, event, dateSeparator)
// controla que se introduzca una fecha bien formada
{
        var keyCode = event.keyCode ? event.keyCode : event.charCode;

        keyCode = String.fromCharCode(keyCode);
        prevValue = ctrl.value;

        // no permitir que el separador de fecha se incluya mas de una vez
        if (keyCode==dateSeparator && prevValue.length>0)
        {
                // contar las veces que aparece el separador de fecha
                var sepCount = 0;
                for (i=0;i<ctrl.value.length;i++)
                {
                        if (ctrl.value.charAt(i)==dateSeparator) sepCount++;
                }
                if (sepCount>=2)
                        return false;
                else
                        return true;
        }
        // solo permitir digitos
        if (keyCode<'0' || keyCode>'9') return false;
}

////////////////////////////////////////
// Funciones para captura con mascara //
////////////////////////////////////////

function correctIP(ctrl, event )
{
        var invalid = 0, dotPos = 0;
        var value='';
        var numDots=0;
        // permitir caracteres especiales de edicion (TAB,BACKSPACE,etc)
        if (event.keyCode<32) return true;

        // verificar que solo hayan digitos y un separador decimal
        for (i=0; i<ctrl.value.length; i++)
        {
                ch = ctrl.value.charAt(i);
                if ( ch == '.' )
                {
                        numDots++;
                        invalid = numDots>3;
                }
                else if ( ch < '0' || ch > '9' )
                        invalid = 1;
                if (invalid) break;
        }

        if (invalid>0)
        {
                ctrl.value = prevValue;
                return false;
        }

        return true;
}

function forceIP(ctrl, event )
// controla que solo se introduzcan digitos o el separador decimal
// en un campo numerico
{
        var numDots = 0;

        var keyCode = event.keyCode ? event.keyCode : event.charCode;
        // no permitir que el separador decimal se incluya mas de una vez
        keyCode = String.fromCharCode(keyCode);

        // solo permitir digitos
        if ( keyCode != '.' )
            if ( keyCode<'0' || keyCode>'9' ) return false;

        prevValue = ctrl.value;

        var invalid = 0;

        if (keyCode == '.' ) numDots++;

        // verificar que solo hayan digitos y 3 puntos
        for (i=0; i<ctrl.value.length; i++)
        {
                ch = ctrl.value.charAt(i);
                if ( ch == '.' )
                {
                        numDots++;
                        invalid = numDots>3;
                }
                if (invalid) break;
        }

        if (invalid>0)
             return false;
        else
             return true;
}

////////////////////////////////////////
// Funciones del minicalendario       //
////////////////////////////////////////


// mostrar popup del minicalendario
function miniCalendar(targetField,formName)
{
        window.targetField = targetField;
        url = scripturl + '?UTILREQ=MINICAL&FECHA='+targetField.value;
        settings= "toolbar=0,location=0,directories=0,"+
            "status=0,menubar=0,scrollbars=0,"+
            "resizable=0,width=200,height=200,"+
            "titlebar=0'"
        win = window.open( url, 'miniCal', settings );
        win.focus();
}

// asignar fecha seleccionada a campo de ventana principal
function miniCalendarAssign(fecha)
{
        opener.targetField.value = fecha;
        window.close();
}

// desplegar el mes correspondiente a 'fecha' en el calendario
function miniCalendarNext(fecha)
{
        url = scripturl + '?UTILREQ=MINICAL&FECHA='+fecha;
        settings= "toolbar=0,location=0,directories=0,"+
            "status=0,menubar=0,scrollbars=0,"+
            "resizable=0,width=200,height=200,"+
            "titlebar=0'"
        win = window.location.href=url;
}

function botonRegresar( request, params )
{
	var url = "'"+scripturl + "?" + requestName + "=" + request;
	if ( params != "" ) url += '&' + params;
	url += "'";
        if ( request != '' )
	        document.write( '<input class="button" type="button" value="Regresar" onclick="javaScript: window.location='+url+'">');
        else
	        document.write( '<input class="button" type="button" value="Regresar" onclick="javaScript: window.history.back()">');
}

function formid ()
{
        document.write( '<input type="hidden" name="FORMID" value="'+this.name+'">' );
        document.write(this.name);
}

function signatureError( errormsg )
{
        alert(errormsg);
}

////////////////////////////////////////
// Funciones del popup de usuarios    //
////////////////////////////////////////

function popupUsuarios( targetField )
{
        window.targetField = targetField;
        url = scripturl + '?UTILREQ=POPUPUSU';
        settings= "toolbar=0,location=0,directories=0,"+
            "status=0,menubar=0,scrollbars=0,"+
            "resizable=0,width=300,height=500,"+
            "titlebar=0'"
        win = window.open( url, 'popupusuarios', settings );
        win.focus();
}

function botonPopupUsuarios(targetFieldName)
{
        document.write( '<input class="button" type="button" value="..." onclick="javaScript:popupUsuarios('+targetFieldName+')">');
}

// asignar proveedor seleccionado a campo de ventana principal
function popupUsuariosAssign(proveedor)
{
        opener.targetField.value = proveedor;
        window.close();
}


function correctTime(ctrl, event )
{
        //a solicitud de Carlos Badilla, eliminar las restricciones
        return true;

        // separar componentes de hora
        var comps = ctrl.value.split(':');
        var value = '';

        // permitir caracteres especiales de edicion (TAB,BACKSPACE,etc)
        if (event.keyCode<32) return true;

        // si esta el dia entonces tratar de completar ese componente
        if (comps.length>0)
        {
                hora = comps[0];
                if (hora.length==1)
                {
                        if ( hora.charAt(0)>'1' )
                                hora = '0' + hora;
                        else if ( comps.length>1 )
                                hora = '0'+ hora;
                }
                if (hora.length==2)
                        hora += ':';

                if (hora=='00:') hora ='01:';

                value += hora;
        }

        // si esta el mes entonces tratar de completar ese componente
        if (comps.length>1)
        {
                min = comps[1];
                if (min.length==1)
                {
                        if (min.charAt(0)>'5')
                                min = '0' + min;
                        else if ( comps.length>2 )
                                min = '0' + min;
                }
                if (min.length==2)
                        min += ':';
                value += min;
        }

        // si esta el autonces tratar de completar ese componente
        if (comps.length>2)
        {
                seg = comps[2];
                value += seg;
        }
        if (value!=ctrl.value)
                ctrl.value = value;

        return true;
}

function forceTime(ctrl, event)
// controla que se introduzca una fecha bien formada
{
        //a solicitud de Carlos Badilla, eliminar las restricciones
        return true;

        var keyCode = event.keyCode ? event.keyCode : event.charCode;

        keyCode = String.fromCharCode(keyCode);
        prevValue = ctrl.value;

        // no permitir que el separador de fecha se incluya mas de una vez
        if (keyCode==':' && prevValue.length>0)
        {
                // contar las veces que aparece el separador de fecha
                var sepCount = 0;
                for (i=0;i<ctrl.value.length;i++)
                {
                        if (ctrl.value.charAt(i)==':') sepCount++;
                }
                if (sepCount>=2)
                        return false;
                else
                        return true;
        }
        // solo permitir digitos
        if (keyCode<'0' || keyCode>'9') return false;
}


function mensajeConfirmacion(nombreTransacccion, datos) {
	var mensaje;

	mensaje = 'Confirmación de transacción:  ' + nombreTransacccion;

	if (datos != '') {
		mensaje = mensaje
			+ '\n\n\n  DATOS DE LA TRANSACCIÓN  ' + '\n**********************************'
			+ '\n' + datos
			+ '\n**********************************'
		;
	}

	mensaje = mensaje
		+ '\n\n\n Si desea continuar la transacción presione el botón OK, de lo contrario presione el botón Cancelar.'
	;


	return confirm(mensaje);
}

function showImage() {
  var url = document.URL.toUpperCase();

  if (url.indexOf("EVENTTARGET=LINKSINFOCLIMATICA") > -1) {
  	document.write( '<A HREF="|/ciudades.html"></A>');
  }
  if (url.indexOf("EVENTTARGET=LINKSPREDICCIONESMAREALES") > -1) {
  	document.write( '<A HREF="|/mareas.html"></A>');
  }
}

function showImageTop() {
  var url = document.URL.toUpperCase();

  if (url.indexOf("EVENTTARGET=LINKSINFOCLIMATICA") > -1) {
  	document.write( '<A HREF="|/ciudades-top.html"></A>');
  }
  if (url.indexOf("EVENTTARGET=LINKSPREDICCIONESMAREALES") > -1) {
  	document.write( '<A HREF="|/mareas-top.html"></A>');
  }
}

//////////////////////////////////////
//Funciones Nuevas Pronostico Marino//
//////////////////////////////////////
function ChangeImagenLugarMarino(lugar) {
	var img = document.getElementById("imagenLugarMarino");

	if (img != null)
		img.src = "/imn/prototipos/lugarMarino" + lugar + ".gif"
}

function ShowMarineImage(url) {
	var img = document.getElementById("imagenOtroMarino");

	if (img != null)
		img.src = url;
}

function ChangeImagenLugarMarino(lugar) {
	var img = document.getElementById("imagenLugarMarino");

	img.src = "/imn/prototipos/lugarMarino" + lugar + ".gif"
}
