Skip to content

Commit 6ee4285

Browse files
committed
Reporteria OSTICKETS Alpha
0 parents  commit 6ee4285

File tree

561 files changed

+31474
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

561 files changed

+31474
-0
lines changed

Ajax.js

Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
function asignaVariables()
2+
{
3+
// Funcion que asigna variables que se usan a lo largo de las funciones
4+
v=1; nuevaBusqueda=1; busqueda=null; ultimaBusquedaNula=null;
5+
divLista=document.getElementById("lista");
6+
inputLista=document.getElementById("input_2");
7+
elementoSeleccionado=0;
8+
ultimoIdentificador=0;
9+
}
10+
11+
function nuevoAjax()
12+
{
13+
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
14+
lo que se puede copiar tal como esta aqui */
15+
var xmlhttp=false;
16+
try
17+
{
18+
// Creacion del objeto AJAX para navegadores no IE
19+
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
20+
}
21+
catch(e)
22+
{
23+
try
24+
{
25+
// Creacion del objet AJAX para IE
26+
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
27+
}
28+
catch(E) { xmlhttp=false; }
29+
}
30+
if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
31+
32+
return xmlhttp;
33+
}
34+
35+
function eliminaEspacios(cadena)
36+
{
37+
var x=0, y=cadena.length-1;
38+
while(cadena.charAt(x)==" ") x++;
39+
while(cadena.charAt(y)==" ") y--;
40+
return cadena.substr(x, y-x+1);
41+
}
42+
43+
44+
function formateaLista(valor)
45+
{
46+
// Funcion encargada de ir colocando en negrita las palabras y asignarle un ID a los elementos
47+
var x=0, verificaExpresion=new RegExp("^("+valor+")", "i");
48+
49+
while(divLista.childNodes[x]!=null)
50+
{
51+
// Asigo el ID para reconocerlo cuando se navega con el teclado
52+
divLista.childNodes[x].id=x+1;
53+
// Coloco en cada elemento de la lista en negrita lo que se haya ingresado en el input
54+
divLista.childNodes[x].innerHTML=divLista.childNodes[x].innerHTML.replace(verificaExpresion, "<b>$1</b>");
55+
x++;
56+
}
57+
}
58+
59+
function limpiaPalabra(palabra)
60+
{
61+
// Funcion encargada de sacarle el codigo HTML de la negrita a las palabras
62+
palabra=palabra.replace(/<b>/i, "");
63+
palabra=palabra.replace(/<\/b>/i, "");
64+
return palabra;
65+
}
66+
67+
function coincideBusqueda(palabraEntera, primerasLetras)
68+
{
69+
/* Funcion para verificar que las primeras letras de busquedaActual sean iguales al
70+
contenido de busquedaAnterior. Se devuelve 1 si la verificacion es afirmativa */
71+
if(primerasLetras==null) return 0;
72+
var verificaExpresion=new RegExp("^("+primerasLetras+")", "i");
73+
if(verificaExpresion.test(palabraEntera)) return 1;
74+
else return 0;
75+
}
76+
77+
function nuevaCadenaNula(valor)
78+
{
79+
/* Seteo cual fue la ultima busqueda que no arrojo resultados siempre y cuando la cadena
80+
nueva no comience con las letras de la ultima cadena que no arrojo resultados */
81+
if(coincideBusqueda(valor, ultimaBusquedaNula)==0) ultimaBusquedaNula=valor;
82+
}
83+
84+
function busquedaEnBD()
85+
{
86+
/* Funcion encargada de verificar si hay que buscar el nuevo valor ingresado en la base
87+
de datos en funcion de los resultados obtenidos en la ultima busqueda y en base a que
88+
la cadena bsucada anteriormente este dentro de la nueva cadena */
89+
var valor=inputLista.value;
90+
91+
if((coincideBusqueda(valor, busqueda)==1 && nuevaBusqueda==0) || coincideBusqueda(valor, ultimaBusquedaNula)==1) return 0;
92+
else return 1;
93+
}
94+
95+
function filtraLista(valor)
96+
{
97+
// Funcion encargada de modificar la lista de nombres en base a la nueva busqueda
98+
var x=0;
99+
100+
while(divLista.childNodes[x]!=null)
101+
{
102+
// Saco la negrita a los elementos del listado
103+
divLista.childNodes[x].innerHTML=limpiaPalabra(divLista.childNodes[x].innerHTML);
104+
if(coincideBusqueda(limpiaPalabra(divLista.childNodes[x].innerHTML), valor)==0)
105+
{
106+
/* Si remuevo el elemento x, el elemento posterior pasa a ocupar la posicion de
107+
x, entonces quedaria sin revisar. Por eso disminuyo 1 valor a x */
108+
divLista.removeChild(divLista.childNodes[x]);
109+
x--;
110+
}
111+
x++;
112+
}
113+
}
114+
115+
function reiniciaSeleccion()
116+
{
117+
mouseFuera();
118+
elementoSeleccionado=0;
119+
}
120+
121+
function navegaTeclado(evento)
122+
{
123+
var teclaPresionada=(document.all) ? evento.keyCode : evento.which;
124+
125+
switch(teclaPresionada)
126+
{
127+
case 40:
128+
if(elementoSeleccionado<divLista.childNodes.length)
129+
{
130+
mouseDentro(document.getElementById(parseInt(elementoSeleccionado)+1));
131+
}
132+
return 0;
133+
134+
case 38:
135+
if(elementoSeleccionado>1)
136+
{
137+
mouseDentro(document.getElementById(parseInt(elementoSeleccionado)-1));
138+
}
139+
return 0;
140+
141+
case 13:
142+
if(divLista.style.display=="block" && elementoSeleccionado!=0)
143+
{
144+
clickLista(document.getElementById(elementoSeleccionado))
145+
}
146+
return 0;
147+
148+
default: return 1;
149+
}
150+
}
151+
152+
function rellenaLista()
153+
{
154+
var valor=inputLista.value;
155+
156+
// Valido con una expresion regular el contenido de lo que el usuario ingresa
157+
var reg=/(^[a-zA-Z0-9.@ ]{2,40}$)/;
158+
if(!reg.test(valor)) divLista.style.display="none";
159+
else
160+
{
161+
if(busquedaEnBD()==0)
162+
{
163+
// Si no hay que buscar el valor en la BD
164+
busqueda=valor;
165+
166+
// Hago el filtrado de la nueva cadena ingresada
167+
filtraLista(valor);
168+
// Si no quedan elementos para mostrar en la lista
169+
if(divLista.childNodes[0]==null) { divLista.style.display="none"; nuevaCadenaNula(valor); }
170+
else { reiniciaSeleccion(); formateaLista(valor); }
171+
}
172+
else
173+
{
174+
/* Si se necesita verificar la base de datos, guardo el patron de busqueda con el que se
175+
busco y luego recibo en una variable si existen mas resultados de los que se van a mostrar */
176+
busqueda=valor;
177+
178+
var ajax=nuevoAjax();
179+
ajax.open("POST", "index_proceso.php?", true);
180+
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
181+
ajax.send("busqueda="+valor);
182+
183+
ajax.onreadystatechange=function()
184+
{
185+
if (ajax.readyState==4)
186+
{
187+
if(!ajax.responseText) { divLista.style.display="none"; }
188+
else
189+
{
190+
var respuesta=new Array(2);
191+
respuesta=ajax.responseText.split("&");
192+
193+
/* Obtengo un valor que representa si tengo que ir a BD en las proximas
194+
busquedas con cadena similar */
195+
nuevaBusqueda=respuesta[0];
196+
197+
// Si se obtuvieron datos los muestro
198+
if(respuesta[1]!="vacio")
199+
{
200+
divLista.style.display="block"; divLista.innerHTML=respuesta[1];
201+
// Coloco en negrita las palabras
202+
reiniciaSeleccion();
203+
formateaLista(valor);
204+
}
205+
// En caso contrario seteo la busqueda actual como una busqueda sin resultados
206+
else nuevaCadenaNula(valor);
207+
}
208+
}
209+
}
210+
}
211+
}
212+
}
213+
214+
function clickLista(elemento)
215+
216+
{
217+
/* Se ejecuta cuando se hace clic en algun elemento de la lista. Se coloca en el input el
218+
valor del elemento clickeado */
219+
v=1;
220+
valor=limpiaPalabra(elemento.innerHTML);
221+
busqueda=valor; inputLista.value=valor;
222+
divLista.style.display="none"; elemento.className="normal";
223+
}
224+
225+
function mouseFuera()
226+
{
227+
// Des-selecciono el elemento actualmente seleccionado, si es que hay alguno
228+
if(elementoSeleccionado!=0 && document.getElementById(elementoSeleccionado)) document.getElementById(elementoSeleccionado).className="normal";
229+
}
230+
231+
function mouseDentro(elemento)
232+
{
233+
mouseFuera();
234+
elemento.className="resaltado";
235+
// Establezco el nuevo elemento seleccionado
236+
elementoSeleccionado=elemento.id;
237+
}

Browser.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
2+
//funcion para validar el tipo de browser para indicar que browser esta usando
3+
function Browser() {
4+
this.init = function() { //busca que tipo de browser esta usando antes de asignar el chrome
5+
var navs = [
6+
{ name:'Opera Mobi', fullName:'Opera Mobile', pre:'Version/' },
7+
{ name:'Opera Mini', fullName:'Opera Mini', pre:'Version/' },
8+
{ name:'Opera', fullName:'Opera', pre:'Version/' },
9+
{ name:'MSIE', fullName:'Microsoft Internet Explorer', pre:'MSIE ' },
10+
{ name:'BlackBerry', fullName:'BlackBerry Navigator', pre:'/' },
11+
{ name:'BrowserNG', fullName:'Nokia Navigator', pre:'BrowserNG/' },
12+
{ name:'Midori', fullName:'Midori', pre:'Midori/' },
13+
{ name:'Kazehakase', fullName:'Kazehakase', pre:'Kazehakase/' },
14+
{ name:'Chromium', fullName:'Chromium', pre:'Chromium/' },
15+
{ name:'Flock', fullName:'Flock', pre:'Flock/' },
16+
{ name:'Galeon', fullName:'Galeon', pre:'Galeon/' },
17+
{ name:'RockMelt', fullName:'RockMelt', pre:'RockMelt/' },
18+
{ name:'Fennec', fullName:'Fennec', pre:'Fennec/' },
19+
{ name:'Konqueror', fullName:'Konqueror', pre:'Konqueror/' },
20+
{ name:'Arora', fullName:'Arora', pre:'Arora/' },
21+
{ name:'Swiftfox', fullName:'Swiftfox', pre:'Firefox/' },
22+
{ name:'Maxthon', fullName:'Maxthon', pre:'Maxthon/' },
23+
// { name:'', fullName:'', pre:'' } //add new broswers
24+
// { name:'', fullName:'', pre:'' }
25+
{ name:'Firefox',fullName:'Mozilla Firefox', pre:'Firefox/' },
26+
{ name:'Chrome', fullName:'Google Chrome', pre:'Chrome/' },
27+
{ name:'Safari', fullName:'Apple Safari', pre:'Version/' }
28+
];
29+
30+
var agent = navigator.userAgent, pre;
31+
//set names
32+
for (i in navs) {
33+
if (agent.indexOf(navs[i].name)>-1) {
34+
pre = navs[i].pre;
35+
this.name = navs[i].name.toLowerCase(); //the code name is always lowercase
36+
this.fullName = navs[i].fullName;
37+
if (this.name=='msie') this.name = 'iexplorer';
38+
if (this.name=='opera mobi') this.name = 'opera';
39+
if (this.name=='opera mini') this.name = 'opera';
40+
break; //when found it, stops reading
41+
}
42+
}//for
43+
44+
45+
};//function
46+
47+
this.init();
48+
49+
}//Browser class

0 commit comments

Comments
 (0)