
	/**************************************/
	/*                                    */
	/*          Diseno Objetivo           */
	/*      Fono: (56-02) 769 54 46       */
	/*     http://www.disenobjetivo.cl    */
	/*   disenobjetivo@disenobjetivo.cl   */
	/*                                    */
	/***********o***************************/

var lstSucursales_Conexion=false; // Variable que manipula la conexion.
//var lstSucursales_Servidor="http://servicios.cchen.cl/PortalNegocio2/sucursales.asp"; // Determina la pagina donde buscar
var lstSucursales_Servidor="http://servicios.cchen.cl/portalnegocio/sucursales.asp"; // Determina la pagina donde buscar
var lstSucursales_Palabra=""; //Determina la ultima palabra buscada.

// funcion que realiza la conexion con el objeto XMLHTTP...
function login_lista_sucursales_conectar()
{
	if(window.XMLHttpRequest)
		lstSucursales_Conexion=new XMLHttpRequest(); //mozilla
	else if(window.ActiveXObject)
		lstSucursales_Conexion=new ActiveXObject("Microsoft.XMLHTTP"); //microsoft
}

function login_lista_sucursales_contenido(cadena,objrut)
{
	/* readyState devuelve el estado de la conexion. puede valer:
	 *	0- No inicializado (Es el valor inicial de readyState)
	 *	1- Abierto (El método "open" ha tenido éxito)
	 *	2- Enviado (Se ha completado la solicitud pero ningun dato ha sido recibido todavía)
	 *	3- Recibiendo
	 *	4- Respuesta completa (Todos los datos han sido recibidos)
	 */
	//alert(lstSucursales_Conexion.readyState);
	// En espera del valor 4
	if(lstSucursales_Conexion.readyState!=4) return;
	/* status: contiene un codigo enviado por el servidor
	 *	200-Completado con éxito
	 *	404-No se encontró URL
	 *	414-Los valores pasados por GET superan los 512
	 * statusText: contiene el texto del estado
	 */

	if(lstSucursales_Conexion.status==200) // Si conexion HTTP es buena !!!
	{
		//si recibimos algun valor a mostrar...
		if(lstSucursales_Conexion.responseText)
		{
			/* Modificamos el identificador temp con el valor recibido por la consulta
			*	Podemos recibir diferentes tipos de datos:
			*	responseText-Datos devueltos por el servidor en formato cadena
			*	responseXML-Datos devueltos por el servidor en forma de documento XML
			*/
			//document.getElementById('siac_img_check_rut').src = Conexion.responseText;

			objSeleccionable = '<label for="selSucursales">Sucursales:</label><br />'
			objSeleccionable += '<select name="selSucursales" id="selSucursales" class="campo_select" style="width:140px">';
			objSeleccionable += lstSucursales_Conexion.responseText;
			objSeleccionable += '</select>';
			document.getElementById('DIVselSucursales').innerHTML = objSeleccionable;
			
		}
	}else{
		//document.getElementById('selSucursales').disabled = true;
	}

	lstSucursales_Conexion=false;
}

function login_lista_sucursales_comprobar(cadena,objrut)
{
	// si no recibimos cadena, no hacemos nada.
	// Cadena=la cadena a buscar en la base de datos
	/* Si cadena es igual a Palabra, no se realiza la busqueda. Puede ser que pulsen la tecla tabulador,
	 * y no interesa que vuelva a verificar...*/
	if(cadena && cadena!=lstSucursales_Palabra)
	{
		// Si ya esta conectado, cancela la solicitud en espera de que termine
		if(lstSucursales_Conexion) return; // Previene uso repetido del boton.
		
		// Realiza la conexion
		login_lista_sucursales_conectar();
		
		// Si la conexion es correcta...
		if(lstSucursales_Conexion)
		{
			// Esta variable, se utiliza para igualar con la cadena a buscar.
			lstSucursales_Palabra=cadena;

			/* Preparamos una conexion con el servidor:
			*	POST|GET - determina como se envian los datos al servidor
			*	true - No sincronizado. Ello significa que la página WEB no es interferida en su funcionamiento
			*	por la respuesta del servidor. El usuario puede continuar usando la página mientras el servidor
			*	retorna una respuesta que la actualizará, usualmente, en forma parcial.
			*	false - Sincronizado */
			lstSucursales_Conexion.open("POST",lstSucursales_Servidor,true);

			// Añade un par etiqueta/valor a la cabecera HTTP a enviar. Si no lo colocamos, no se pasan los parametros.
			lstSucursales_Conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	
			// Cada vez que el estado de la conexión (readyState) cambie se ejecutara el contenido de esta "funcion()"
			lstSucursales_Conexion.onreadystatechange=function()
			{
				login_lista_sucursales_contenido(cadena,objrut);
			}
			
			date=new Date();
			/* Realiza la solicitud al servidor. Puede enviar una cadena de caracteres, o un objeto del tipo XML
			 * Si no deseamos enviar ningun valor, enviariamos null */
			lstSucursales_Conexion.send("CodigoProyecto="+cadena+"&"+date.getTime());
		}
	}else{
		//document.getElementById('selSucursales').disabled=true;
	}
}

// Funcion que inicia la busqueda.
// Tiene que recibir el identificador donde mostrar el listado, y la cadena a buscar
function login_lista_sucursales(cadena,objrut)
{
	// Comprovamos que la longitud de la cadena sea superior o igual a 1 caracteres
	Rut(cadena,objrut);
	cadena = objrut.value;
	if(cadena.length >= 1 ){
		if((Rut(cadena,objrut))&&(cadena.length>=10)){
			if(lstSucursales_Conexion!=false)
			{
				//si esta en medio de una conexion, la cancelamos
				lstSucursales_Conexion.abort();
				lstSucursales_Conexion=false;
			}
			login_lista_sucursales_comprobar(cadena,objrut);
		}else{
			lstSucursales_Palabra=cadena;
		}
	}
}

function revisarDigito( dvr, objrut )
{	
	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')	
	{		
				
		/*objrut.focus();		
		objrut.select();*/	
		return false;	
	}	
	return true;
}

function revisarDigito2( crut, objrut )
{	
	largo = crut.length;	
	if ( largo < 2 )	
	{		
				
		/*objrut.focus();		
		objrut.select();*/		
		return false;
	}	
	if ( largo > 2 )		
		rut = crut.substring(0, largo - 1);	
	else		
		rut = crut.charAt(0);	
	dv = crut.charAt(largo-1);	
	revisarDigito( dv, objrut );	

	if ( rut == null || dv == null )
		return 0	

	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() )	
	{		
				
		/*objrut.focus();		
		objrut.select();*/		
		return false;	
	}

	return true
}

function Rut(texto,objrut)
{	
	var tmpstr = "";	
	for ( i=0; i < texto.length ; i++ )		
		if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.' && texto.charAt(i) != '-' )
			tmpstr = tmpstr + texto.charAt(i);	
	texto = tmpstr;	
	largo = texto.length;	

	if ( largo < 2 )	
	{		
				
		/*objrut.focus();		
		objrut.select();*/		
		return false;
	}	

	for (i=0; i < largo ; i++ )	
	{			
		if ( texto.charAt(i) !="0" && texto.charAt(i) != "1" && texto.charAt(i) !="2" && texto.charAt(i) != "3" && texto.charAt(i) != "4" && texto.charAt(i) !="5" && texto.charAt(i) != "6" && texto.charAt(i) != "7" && texto.charAt(i) !="8" && texto.charAt(i) != "9" && texto.charAt(i) !="k" && texto.charAt(i) != "K" )
 		{			
						
			/*objrut.focus();			
			objrut.select();*/			
			return false;		
		}	
	}	

	var invertido = "";	
	for ( i=(largo-1),j=0; i>=0; i--,j++ )		
		invertido = invertido + texto.charAt(i);	
	var dtexto = "";	
	dtexto = dtexto + invertido.charAt(0);	
	dtexto = dtexto + '-';	
	cnt = 0;	

	for ( i=1,j=2; i<largo; i++,j++ )	
	{		
		//alert("i=[" + i + "] j=[" + j +"]" );		
		if ( cnt == 3 )		
		{			
			dtexto = dtexto + '.';			
			j++;			
			dtexto = dtexto + invertido.charAt(i);			
			cnt = 1;		
		}		
		else		
		{				
			dtexto = dtexto + invertido.charAt(i);			
			cnt++;		
		}	
	}	

	invertido = "";	
	for ( i=(dtexto.length-1),j=0; i>=0; i--,j++ )		
		invertido = invertido + dtexto.charAt(i);	

	objrut.value = invertido.toUpperCase()		

	if ( revisarDigito2(texto,objrut) )		
		return true;	

	return false;
}