var arr = []  ;
function GrabarStack( name, value) { document.cookie = name + '=' + escape(value) +   '; path=/' };
function getCookie( name ) {
	var result = null;
	var myCookie = " " + document.cookie + "; ";
	var searchName = " " + name + "=";
	var startOfCookie = myCookie.indexOf( searchName );
	var endOfCookie;
	if( startOfCookie != -1 ) {
		startOfCookie += searchName.length;
		endOfCookie = myCookie.indexOf(";", startOfCookie);
		result = unescape( myCookie.substring( startOfCookie, endOfCookie ));
		}
	return result;
}

function LeerStack( name ) { 
//	if(window.top.frameGlobal){
//		return window.top.frameGlobal.getCookie( name ) ;
//	} else {
//		return ""
//	}
	getCookie( name )
}
function eliminarNulos(arrayp) {
	var trans = [];
	var iz = 0 ; 
	var jz = 0 ;
	for( iz = 0 ; iz <  arrayp.length  ; iz++ ){ 
		if( ( arrayp[iz] != '' ) && ( arrayp[iz] != null )) { trans[jz++] = arrayp[iz]  } ;
	};
	return trans;
} 

function borrarURL(U,arrayt ){
	var iz;
	for( iz = 0 ; iz <  arrayt.length  ; iz++ ){ 
 		if( U.toLowerCase() == arrayt[iz].toLowerCase() ) { 
			arrayt[iz] = null ;
		};
	} ;
	return arrayt ;
}

function eliminarRepetidas( arrayx ) {
	var trans = [];
	var esta = 0; m = 0;
	for( i = 0 ; i < arrayx.length  ; i++ ){
		esta = 0;
		for( j = 0 ; j < trans.length ; j++ ){
			if( arrayx[i] == trans[j] ) { esta = 1 } ;
		}
		if( 0 == esta ) { 	trans[m++] = arrayx[i] } ;
	}
	return trans ;
}

function sStack(){
// Control de Stack en frame "frameMainFrame". No utilizar en navegación fuera del "Frame"
// Esta función debe ser llamada al abrir la página. (Evento "onLoad"), para asegurarse que no se incorporará con un back.
// Al cerrar el navegador se eliminará el stack. (Válido sólo por la sesión).
//
// Al hacer un back se encontrará que la URL local estará en la cabeza del stack.
// Se deberá recorrer el stack y eliminar todas las coincidencias de la URL local y luego procesar el "back"
	var z1 , z , URLlocal , URL1 , i , j ;
	URLlocal = document.URL ;    // URL de este documento (local)
	URL1 = URLlocal.toLowerCase() ;
	var NombreStack = 'C'+LeerStack( 'Sesion' );    //  Valor de la Sesion
	var z = LeerStack( NombreStack );   //  Valor del stack de la sesion
// Si es "null" dejar en ""
	z = z ? z : '' ;   
//	if( null == z ) {  z = '' } ;

	arr = z.split( '#' );
// Ver si la URL está en el stack.  Si esta, borrarla.
	arr = borrarURL(URL1 , arr ) ;
//Eliminar los nulos	
	arr = eliminarNulos( arr ) 
	z = arr.join(  '#' ); 
	z = z ? z : '' ;  
//	if( null == z  ){ z ='' };
// Agregar al comienzo la nueva URL 
	z = URLlocal + ( "" != z  ? '#' + z : '' ) ;
// if( '' != z ){ z = URLlocal + '#' + z } else { z = URLlocal }
// Dividir el string en elementos individuales quedando sólo las últimas 10 URLlocal
	arr = z.split( '#', jsvLargoStack );
	arr =  eliminarRepetidas( arr );
// Reconstruir el string
	z = arr.join(  '#' );
//		alert( "2  Stack queda en: " + z );
// Grabar el nuevo Stack 
	GrabarStack( NombreStack , z );
// alert( "Agregando " + URLlocal );
}
 
function bStack(){
// Esta función debe ser llamada desde un botón "Back o Volver"
// Elimina del stack la URLlocal local, abriendo la primera.
	var z1 , z , URLlocal , URL1 , i , j ;
	URLlocal = document.URL.toLowerCase() ;    // URL de este documento (local)
	var NombreStack = 'C'+LeerStack( 'Sesion' );    //  Valor de la Sesion
	var z = LeerStack( NombreStack );   //  Valor del stack de la sesion
// Si es "null" hacer history.go(-1)
//	if( null == z ){ z=''};
	z = z ? z : '' ; 
 	if( '' == z ) { history.go( -1 ) ; return }  ;
	arr = z.split( '#' );
// Ver si la URL está en el stack.  Si esta, borrar.
	arr = borrarURL( URLlocal , arr );
	arr = eliminarNulos( arr ) ;
// Si no quedaron retornos hacer history.go(-1)
 	if( arr.length < 1 ) { 	history.go( -1 ) ; return } ;  
// Extraer primera URL del stack
 	URL1 = arr[0];
// Reconstruir el string
	arr =  eliminarRepetidas( arr );
 	z = arr.join(  '#'  );
// Grabar el nuevo Stack 
 	GrabarStack( NombreStack , z );
// Ir a nueva URL1, sólo en frame principal.
 	var destino=window.open( URL1 , 'frameMainFrame' );
}