/*
Nombre de Archivo   : sigpro_validators.js
Objetivo            : Funciones principales del sistema SIGPRO.
Empresa             : SIGPRO
Autor               : Rene Bustamante Jara.
Fecha               : 22/08/2008
*/

String.prototype.trim = function() 
{
   return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() 
{
   return this.replace(/^\s+/g,"");
}
String.prototype.rtrim = function() 
{
   return this.replace(/\s+$/g,"");
}



function cambiar_num_caract(caracteres)
{
document.getElementById('caract1').innerHTML = caracteres;
caract_tserv=caracteres;
}

function count_caract(obj)
{
cant = obj.value.length;
rest = 1000 - cant;
document.getElementById('caract1').innerHTML = rest;
if(rest < 0)
{ 
obj.value = obj.value.substr(0, 1000); 
document.getElementById('caract1').innerHTML = 0;
}
}




/* Descripción: Permite el ingreso de n caracteres
*  Parámetros Entrada: Trae el objeto a validar y la cantidad máxima de elementos que puede poseer este elemento
*/
function count_caract_Max(obj,max, mensaje)
{
    cant = obj.value.length;
    rest = max - cant;
    document.getElementById(mensaje).innerHTML = rest;
        
    if(rest < 0)
    { 
        obj.value = obj.value.substr(0, max); 
        document.getElementById(mensaje).innerHTML = 0;
    }
}




function fncRTrim(charreplace)
{
    var intIndex;
    intIndex = 0;
    blnEstado = false;
    
	for (i=this.length-1; i>=0 && !blnEstado; i--)
	{
	    if (this.charAt(i) != charreplace )
	    {
	        intIndex = i+1;
	        blnEstado = true;
	    }
	}
	if (intIndex > 0)
	    return this.substring(0, intIndex);
	else
	    return "";
}

String.prototype.rtrim=fncRTrim;

function ChkRUTCustomValidate(source, arguments)
{
    control = eval(source.id);
    textbox = document.getElementById(control.controltovalidate);
    ChkRutPersona(textbox, arguments, false)
}

function ChkRutEmpresa(source, arguments)
{
    control = eval(source.id);
    textbox = document.getElementById(control.controltovalidate);
    topeRut = 1000000000;
    ChkRutPersona(textbox, arguments, false,true)
}

function ChkRutPersona(source, arguments, IsAlert, validarEmpresa)
{   
    if ( validarEmpresa == undefined || validarEmpresa == null ) { validarEmpresa = false; }
    if ( IsAlert == undefined || IsAlert == null ) { IsAlert = true; }
    
    var rut;
    rut = source.value.trim().rtrim("_");
    
    var tmpstr = "";
    for ( i=0; i < rut.length ; i++ )
        if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' )
            tmpstr = tmpstr + rut.charAt(i);
    
    rut = tmpstr;
    largo = rut.length;
    if (largo <= 0) 
    {
        if (arguments != null)
            arguments.IsValid=false;
        return false;
    }

    tmpstr = "";
    for ( i=0; rut.charAt(i) == '0' ; i++ );
        for (; i < rut.length ; i++ )
            tmpstr = tmpstr + rut.charAt(i);
    rut = tmpstr;
    largo = rut.length;
    
    if ( largo < 2 )
    {
        if (IsAlert) 
        {
            alert("Debe ingresar el RUT completo.");
            if (arguments != null)
                source.value="";
            source.focus();
            source.select();
        }
        if (arguments != null)
            arguments.IsValid=false;
        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') )
        {
            if (IsAlert)
            {
                alert("El valor ingresado no corresponde a un RUT válido.");
                if (arguments != null)
                    source.value="";
                source.focus();
                source.select();
            }
            if (arguments != null)
                arguments.IsValid=false;
            return false;
        }
    }
  
    //Valida rango de valores posibles
    rutMax = rut;
    tmpstr="";
    for ( i=0; i < rutMax.length ; i++ )
        if ( rutMax.charAt(i) != ' ' && rutMax.charAt(i) != '.' && rutMax.charAt(i) != '-' )
            tmpstr = tmpstr + rutMax.charAt(i);
          
    tmpstr = tmpstr.substring(0, tmpstr.length - 1);
    
    if (!validarEmpresa)
    {
        if ( !(tmpstr < 50000000) )
        {
            if (IsAlert)
            {
	            alert('El Rut ingresado no corresponde a un RUT de Persona Natural')
  		        if (arguments != null)
  		            source.value="";
  		        source.focus();
  		        source.select();
	        }
	        if (arguments != null)
                arguments.IsValid=false;		
  		    return false;
        }
    }
    else
    {
        if ( !(tmpstr >= 50000000) )
        {
            if (IsAlert)
            {
	            alert('El Rut ingresado no corresponde a un RUT de Persona Juridica')
  		        if (arguments != null)
  		            source.value="";
  		        source.focus();
  		        source.select();
	        }
	        if (arguments != null)
                arguments.IsValid=false;		
  		    return false;
        }
    }
  
    var invertido = "";
    for ( i=(largo-1),j=0; i>=0; i--,j++ )
        invertido = invertido + rut.charAt(i);
  
    var drut = "";
    drut = drut + invertido.charAt(0);
    drut = drut + '-';
    cnt = 0;
    for ( i=1,j=2; i<largo; i++,j++ )
    {
        if ( cnt == 3 )
        {
            drut = drut + '.';
            j++;
            drut = drut + invertido.charAt(i);
            cnt = 1;
        }
        else
        {
            drut = drut + invertido.charAt(i);
            cnt++;
        }
    }
    
    invertido = "";
    for ( i=(drut.length-1),j=0; i>=0; i--,j++ )
    {
  	    if (drut.charAt(i)=='k')
  		    invertido = invertido + 'K';
  	    else
    	    invertido = invertido + drut.charAt(i);
    }
    
    source.value = invertido;
    if(!checkDVPersona(source, rut, IsAlert, arguments)) 
    {
        if (IsAlert)
        {
  		    if (arguments != null)
  		        source.value="";
  		    source.focus();
  		    source.select();
  		}
  		if (arguments != null)
	        arguments.IsValid=false;
	    return false;
    }
    if (arguments != null)
        arguments.IsValid=true;
    return true;
}

function checkDVPersona(source, crut, IsAlert, arguments)
{
    largo = crut.length;
    if(largo < 2)
    {
        if (IsAlert)
        {
            alert("Debe ingresar el RUT completo.");
  		    if (arguments != null)
                source.value="";
            source.select();
            source.focus();
        }
        return false;
    }
    
    if(largo > 2)
        rut = crut.substring(0, largo - 1);
    else
        rut = crut.charAt(0);
  
    dv = crut.charAt(largo-1);

    if(!checkCDVPersona(source, dv, IsAlert, arguments))
    {
  		if (arguments != null)
            source.value="";
        source.select();
        source.focus();
        return false;
    }

    if(rut == null || dv == null)
    {
        if (arguments != null)
            source.value="";
        source.select();
        source.focus();
        return false;
    }

    var dvr = '0';
    suma = 0;
    mul  = 2;
    
    for (i= rut.length -1 ; i >= 0; i--)
    {
        suma = 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())
    {
        if (IsAlert)
        {
            alert("El RUT es incorrecto.");
            if (arguments != null)
                source.value="";
            source.select();
            source.focus();
        }
        return false;
    }
    return true;
}

function checkCDVPersona(source, dvr, IsAlert, arguments)
{
    dv = dvr + "";
    if(dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k'  && dv != 'K')
    {
        if (IsAlert)
        {
            alert("Debe ingresar un dígito verificador válido.");
            if (arguments != null)
                source.value="";
            source.select();
            source.focus();
        }
        return false;
    }
    return true;
}

function fncOpenShowUploadPhotoEmpresa(source_name, path_photo, name_img, rut)
{
    var strAccion = "0";
    var strUrl = "/Util/Upload/Default.aspx?FileType=1&path_photo=" + escape(path_photo);
        
    if(rut!='')
       strUrl=strUrl + '&BuscarRut=' + rut;
        
    var Arguments = new Array(strAccion);
    var ConfigurePage = "dialogHeight: 280px; dialogWidth: 500px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; resizable: No; status: No; help: No;";

    var Arguments = window.showModalDialog(strUrl, Arguments, ConfigurePage);
    

try
    {
        if(Arguments == null)
        {
            Arguments[0] = "";
        }
        else
            if (Arguments[0] != "")
            {
                if(rut!='') //Es cuando se levanta un pop por el lado del administrador
                   { parent.document.aspnetForm.Hhidden.value = Arguments[0];
                    __doPostBack('ctl00$cphMain$wucIDCreacionEmpresa$UpdPanTabs1','');
                   }
                else
                  { parent.document.aspnetForm.Hhidden.value = Arguments[0];
                    __doPostBack('ctl00$cphMain$wuIDCreacionEmpresa','');
                  }
                
               
             }
    }
    catch(err)
    {
    }     

    return false;
}



function fncOpenShowUploadPhoto(source_name, path_photo, name_img, rut)
{
    var strAccion = "0";
    var strUrl = "/Util/Upload/Default.aspx?FileType=1&path_photo=" + escape(path_photo);
        
    if(rut!='')
       strUrl=strUrl + '&BuscarRut=' + rut;
        
    var Arguments = new Array(strAccion);
    var ConfigurePage = "dialogHeight: 280px; dialogWidth: 500px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; resizable: No; status: No; help: No;";

    var Arguments = window.showModalDialog(strUrl, Arguments, ConfigurePage);
    

try
    {
        if(Arguments == null)
        {
            Arguments[0] = "";
        }
        else
            if (Arguments[0] != "")
            {
                if(rut!='') //Es cuando se levanta un pop por el lado del administrador
                   { parent.document.form1.Hhidden.value = Arguments[0];
                     __doPostBack('wucPersonaID$lnkMnuTab01','');
                   }
                else
                  { parent.document.aspnetForm.Hhidden.value = Arguments[0];
                    __doPostBack('ctl00$cphMain$WucPersona1$lnkMnuTab01','');
                  }
             }
    }
    catch(err)
    {
    }     

    return false;
}


function fncOpenShowUploadCV(strUrl, path, configure)
{
    var strAccion = "0";
//    var strUrl = "/Util/Upload/Default.aspx?FileType=1&path_photo=" + escape(path_photo);
    var Arguments = new Array(strAccion);
//    var ConfigurePage = "dialogHeight: 280px; dialogWidth: 500px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; resizable: No; status: No; help: No;";

    var Arguments = window.showModalDialog(strUrl, Arguments, configure);
    

try
    {
        if(Arguments == null)
        {
            Arguments[0] = "";
        }
        else
            if (Arguments[0] != "")
            {
                //textbox = eval(document.getElementById(source_name));

                //_img = document.getElementById(name_img);
                //_img.src = path_photo.replace("~", "") + Arguments[0] + '';
                //textbox.value = Arguments[0];

//                parent.document.aspnetForm.Hhidden.value = Arguments[0];
//                __doPostBack('ctl00$cphMain$WucPersona1$lnkMnuTab01','');
 

            }
    }
    catch(err)
    {
    }     

    return false;
}




///nombrePaginaMensaje: es el nombre de la página de mensaje, si no trae nada, dejará por defecto una.
///nombrePaginaMensaje: es la página a la cual se devolverá una vez finalizada la ventana pop up
///nombreControl: es el nombre del control localizado en el padre al cual se le devolverá un valor
///datosURL: Al ser una página genérica de mensajes, aquí se coloca el texto a desplegar codificado
function fncOpenShowPopUpMessage(nombrePaginaMensaje,nombrePagina,nombreControl,datosURL)
{
    var strAccion = "0";
    var strUrl = "/Public/PaginaMensaje.aspx";
    var Arguments = new Array(strAccion);
    var ConfigurePage = "dialogHeight: 150px; dialogWidth: 500px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; resizable: No; status: off; help: No;";
   
   //se le agregan todos los parámetros que se necesitan recibir al otro lado
   if(datosURL != "")
   { strUrl= strUrl + datosURL;
   }
   
   //se cambia si solamente si existe alguna página de mensaje indicada
   if((nombrePaginaMensaje != null)&&(nombrePaginaMensaje !=""))
    { strUrl= nombrePaginaMensaje; }
   
    var Arguments = window.showModalDialog(strUrl, Arguments, ConfigurePage);
   
    try
    { //son los datos que se devolverán a la página padre
        if((Arguments == null) || (nombreControl==null) ||(nombreControl==""))
        {
            Arguments = "";
        }
        else
            if (Arguments != "")
            {   parent.document.forms[0].elements[nombreControl].value = Arguments; 
                __doPostBack(nombrePagina,'');
             }
    }
    catch(err)
    {
    }     

    return false;
}

function fncCargarDatos()
{
//var val1 = "<%=request.getAttribute("FirmwareVersion")%>";

//var myTextField = document.getElementById('btnAceptar');
//btnCancelar
//	if(myTextField.value != "")
//		alert("You entered: " + myTextField.value)
//	else
//		alert("Would you please enter some text?")		
}





function fncCloseWindow(respuesta)
{ window.returnValue = respuesta;
 window.close();
    }

function fncLargoTexto(objAreaTexto,intMax, IsNotMsgAlert)
{
    var strPaso,intLargo
    strPaso = objAreaTexto.value;
    intLargo = strPaso.length;

    if (intLargo > intMax && intMax > 0 )
    {
		if (IsNotMsgAlert == null || IsNotMsgAlert == false) 
			alert("No se pueden Ingresar mas de " + intMax + " caracteres");
			
	    objAreaTexto.value = strPaso.substring(0, intMax);
        objAreaTexto.focus();
        return false;
    }
    return true;
}


function FormatRutPersona(obj)
{
    StringValueRut = obj.value.replace(".", "").replace("-", "");
    if (StringValueRut.length >= 8)
        ChkRutPersona(obj, null, true);
    
}
