var defaultEmptyOK = false;

// m abrevia "missing" (faltante)
var mMessage = "Error: no puede dejar este espacio vacio"

// p abrevia "prompt"
var pPrompt = "Error: ";
var pAlphanumeric = "ingrese un texto que contenga solo letras y/o numeros";
var pAlphabetic   = "ingrese un texto que contenga solo letras";
var pInteger = "ingrese un numero entero";
var pNumber = "ingrese un numero";
var pPhoneNumber = "ingrese un número de teléfono";
var pEmail = "ingrese una dirección de correo electrónico válida";
var pRadio = "seleccione una opción";
var pNice = "no puede utilizar comillas aqui";

/*	*	*	*	*	*	Notifications Functions	*	*	*	*	*/
// warnEmpty (theField, s, inFoco)		indica que theField esta vacio
function warnEmpty (theField, mEmpty, inFoco)
{   
	if(inFoco)
	theField = inFoco;
	
	theField.focus();
	
    alert(mEmpty)
    return false;
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isArray(a) {
    return isObject(a) && a.constructor == Array;
}
// warnInvalid (theField, s, inFoco)	indica que theField es inválido
function warnInvalid(theField, s, inFoco)
{   
	if(inFoco)
		theField = inFoco;
	
	theField.focus();
	if(theField.type == "text" || theField.type == "textarea")
    	theField.select();
	
    alert(s);
    return false;
}

// Validador de Rut
function isRut(theRut)
{
	rut = theRut.value;
	var tmpstr = "";
	largo = rut.length;
	for ( i=0; i < largo; i++ )
		if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' )
			tmpstr = tmpstr + rut.charAt(i);
	rut = tmpstr;
	largo = rut.length;
	if ( largo < 2 )
	{
		return false;
	}

	for (i=0; i < largo ; i++ )
	{ 
		if ( rut.charAt(i) !="0" && rut.charAt(i) != "1" && rut.charAt(i) !="2" && rut.charAt(i) != "3" && rut.charAt(i) != "4" && rut.charAt(i) !="5" && rut.charAt(i) != "6" && rut.charAt(i) != "7" && rut.charAt(i) !="8" && rut.charAt(i) != "9" && rut.charAt(i) !="k" && rut.charAt(i) != "K" )
		{
			return false;
		}
	}
	var dtexto = "";
	cnt = 0;
	for ( i=largo-1, j=largo-1+3; i>=0; i--, j-- )
	{
		if ( cnt == 3 )
		{
			dtexto = rut.charAt(i) + dtexto;
			dtexto = '.' + dtexto;
			cnt = 1;
		}
		else
		{ 
			dtexto = rut.charAt(i) + dtexto;
			if( cnt == 0 )
				dtexto = '-' + dtexto;
			cnt++;
		}
	}
	return checkDV(rut);
}

function checkDV( crut )
{
	largo = crut.length;
	if ( largo > 2 )
		rut = crut.substring(0, largo - 1);
	else
		rut = crut.charAt(0);
	dv = crut.charAt(largo-1);
	if ( rut == null || dv == null )
		return 0;
	var dvr = '0';
	suma = 0;
	mul  = 2;
	for (i = rut.length - 1 ; i >= 0; i--)
	{
		suma += rut.charAt(i) * mul;
		if (mul == 7)
			mul = 2;
		else    
			mul++;
	}
	res = suma % 11;
	if (res == 1)
		dvr = 'k';
	else if (res == 0)
		dvr = '0';
	else
	{
		dvi = 11-res;
		dvr = dvi + "";
	}
	if ( dvr != dv.toLowerCase() )
		return false;

	return true;
}

function isMail(campo)
{	
	var valor = campo.value;
	var pattern=new RegExp("^([a-zA-Z0-9_\\.\-]+)\@(([a-zA-Z0-9\-]+)\\.)+([a-zA-Z0-9]{2,4})$");
    return valor.match(pattern);
}
function isPhone(campo)
{	
	var valor = campo.value;
    var pattern=new RegExp("^[0-9\-\ ]+$");
    return valor.match(pattern);
}
function isAlphanumeric(campo)
{
	var valor = campo.value;
    var pattern=new RegExp("^[a-zA-Z0-9ñÑáéíóúÁÉÍÓÚ ]+$");
    return valor.match(pattern);
}
function isAlphabetic(campo)
{
	var valor = campo.value;
    var pattern=new RegExp("^[a-zA-ZñÑáéíóúÁÉÍÓÚ ]+$");
    return valor.match(pattern);
}
function isInteger(campo) {
	var valor = campo.value;
    var pattern=new RegExp("^[0-9]+$");
    return valor.match(pattern);
}

function isEmpty(s){   
	return ((s == null) || (s.length == 0))
}

function isEvaluacion(value, Bot, Top){
	return (parseInt(value) >= Bot && parseInt(value) <= Top);
}

function comprobarSelect(campo){
	if(isEmpty(campo.value))
		return false;
	else
		return true;	
}

// Valida RadioButton
function comprobarRadio(campo)
{
  for(var i=0; i<campo.length; i++)
	if(campo[i].checked)
	  return true;
  return false;
}

// ############################################################################
// ### y2k:
// ############################################################################
function y2k(number) {
    rtn = number;
    if (rtn>=0 && rtn<50)
        rtn += 2000;
    else
    if (rtn>=50 && rtn<100)
        rtn += 1900;
    return (rtn < 1000) ? rtn + 1900 : rtn;
}

// ############################################################################
// ### isDate:
// ###
// ### checks if date passed is valid
// ### will accept dates in following format:
// ### isDate(dd,mm,ccyy), or
// ### isDate(dd,mm) - which defaults to the current year, or
// ### isDate(dd) - which defaults to the current month and year.
// ### Note, if passed the month must be between 1 and 12, and the
// ### year in ccyy format.
// ############################################################################
function isDate (day,month,year) {
     var today = new Date();
     year = ((!year) ? y2k(today.getYear()):year);
     month = ((!month) ? today.getMonth():month-1);
     if (!day) return false
     var test = new Date(year,month,day);
	 	//alert(year + "  - "+ day == test.getDate()  +" / " + month == test.getMonth())

     if ( (y2k(test.getYear())==year || y2k(test.getYear())==year+1900 || y2k(test.getYear())==year+2000) &&
          (month == test.getMonth()) &&
          (day == test.getDate()) )
     {
         return true;
     } else
     {
         return false;
     }
}

function EsFecha(s)
{
	var i = 0;
	valor = s.value;
    var sLength = valor.length;	
	if (sLength>7)
		{
			var dia="";
			var mes="";
			var anio="";
			var cadena="";
			var barra=0;
			while (i < sLength)
			{
				if (valor.charAt(i)!="/")
					{cadena=cadena + valor.charAt(i)}
				else
					{
						if (barra==0)
							{dia=cadena;
							cadena="";
							barra=barra+1
							}
						else
							{
								if (barra==1)
									{
									mes=cadena;
									cadena="";
									barra=barra+1	
									}
								else
									{
									return false;
									}
							}
					}
				i++
			}
			anio=cadena
			if (anio.length<4)
				{fechacorrecta = true;
				return false;}
			else
				{
				if ((dia.length > 0) && (mes.length > 1))
					{
						if (isDate(dia,mes,anio))
							{return true;}
						else
							{return false}
					}
				else
					{fechacorrecta=true;
					return false;}
			
				}
		
		}
	else
		{
		return false;
		}
}

// the center of everything: checkField
function checkField (theField, theFunction, s, emptyOK, d, inFoco)
{   
    var msg;
	if (checkField.arguments.length < 3)
	{
		alert("Llamado de Función incorrecta");
		return false;
	}

	if (checkField.arguments[2] != "") {
        msg = s;
    } 
	else {
        if( theFunction == isAlphabetic ) msg = pAlphabetic;
        if( theFunction == isAlphanumeric ) msg = pAlphanumeric;
        if( theFunction == isInteger ) msg = pInteger;
        //if( theFunction == isNumber ) msg = pNumber;
        if( theFunction == isMail ) msg = pEmail;
		
        if( theFunction == comprobarRadio ) msg = pRadio;
        if( theFunction == comprobarSelect ) msg = pRadio;
    }
	/* * * * * * * Empty * * * * * * */
	if (checkField.arguments.length > 3)
	{
		if (checkField.arguments.length < 4 || checkField.arguments[3] == "") emptyOK = defaultEmptyOK;
		
		if (isEmpty(theField.value) && emptyOK) 
			return true;
		if (checkField.arguments[4] != "") 
			mEmpty = d;
		else
			mEmpty = mMessage;
			
		if ((emptyOK == false) && (isEmpty(theField.value))) 
			return warnEmpty(theField, mEmpty, inFoco);
			
		/* * * * * * * Function * * * * * * */
		if (theFunction(theField)  || theFunction(theField) == true) 
			return true;
		else
			return warnInvalid(theField, msg, inFoco);
	}
	else
	{
		/* * * * * * * Function * * * * * * */
		if (theFunction(theField)  || theFunction(theField) == true) 
			return true;
		else
			return warnInvalid(theField[0],msg,inFoco);
	}

}


var para_Volver;
function mover_pagina(mostrar){
	items = new Array;
	items = [null,'item_1','item_2','item_3','item_4','item_5','item_6'];
	for(var i=1; i<items.length; i++)
		$(items[i]).className = "ocultar";
		
	
	if (mostrar != 'back'){
		para_Volver = parseInt(mostrar) - 1;
	}
	else{
		mostrar = para_Volver;
		para_Volver = parseInt(mostrar) - 1;
	}
		
	$('pasos').innerHTML = "Paso " + mostrar + " de 6";
	$(items[mostrar]).className = "mostrar";
	
	if(mostrar == 1)
		$('volver').style.display = "none";	
	else
		$('volver').style.display = "inline";	
}
//checkField("ID de campo a validar", "funcion a validar", "Se permite campo vacio", "mensaje de alerta en caso de no validar funcion", "mensaje de alerta en caso de vacio");
function enviar(){
	var cf = document.getElementById('mandato_ahorro');
	
	var sigue = true;
		sigue = checkField(cf.rut, isRut, "Debe ingresar un Rut válido", false, "Debe ingresar su Rut.");
	if(sigue)
		sigue = checkField(cf.nombres, isAlphabetic, "Debe ingresar un Nombre correcto (Sólo letras)", false, "Debe ingresar su Nombre.");
	if(sigue)
		sigue = checkField(cf.apepat, isAlphabetic,  "Debe ingresar un Apellido Paterno válido (Sólo letras)", false, "Debe ingresar su Apellido Paterno.");
	if(sigue)
		sigue = checkField(cf.apemat, isAlphabetic,  "Debe ingresar un Apellido Materno válido (Sólo letras)", false, "Debe ingresar su Apellido Materno.");
	if(sigue)
		sigue = checkField(cf.domicilio, isAlphanumeric,  "Debe ingresar un Domicilio válido (Sólo letras y números)", false, "Debe ingresar su Domicilio");
	if(sigue)
		sigue = checkField(cf.ciudad, isAlphabetic,  "Debe ingresar una Ciudad válida (Sólo letras)", false, "Debe ingresar su Ciudad de Residencia");
	if(sigue)
		sigue = checkField(cf.pais, isAlphabetic,  "Debe ingresar un Pais válido (Sólo letras)", false, "Debe ingresar su Pais de Residencia");
	if(sigue)
		sigue = checkField(cf.cta_ahorro, isInteger,  "Debe ingresar un Nº Cuenta de Ahorro válido (Sólo números)", false, "Debe ingresar su Nº Cuenta de Ahorro");


	if(sigue)
		cf.submit();
}

