/* Variables y Constantes globales */

var K_VISIBLE = 'visible';
var K_HIDE = 'hide';
var K_VAL_PAR = 'par';
var K_VAL_IMPAR = 'impar';
var K_VAL_CENTER = 'center';
var K_VAL_RIGHT = 'right';
var K_VAL_LEFT = 'left';
var K_VAL_MIDDLE = 'middle';
var K_VAL_TOP = 'top';
var K_VAL_BOTTOM = 'bottom';

var K_ATR_CLASE = 'className';
var K_ATR_ALIGN = 'align';
var K_ATR_VALIGN = 'valign';
var K_ATR_WIDTH = 'width';
var K_ATR_HEIGHT = 'height';

var K_TXT_OK = 'OK';

var K_SELECTED = 'selected';

var K_COL_VERDE = '#78CC29';
var K_COL_VERDE2 = '#C0D9AB';
var K_COL_AZUL = '#4069FF';
var K_COL_AZUL2 = '#BAC9FF';
var K_COL_CELESTE = '#5297FF';
var K_COL_CELESTE2 = '#C3CFE3';
var K_COL_NARANJA = '#FC9F30';
var K_COL_NARANJA2 = '#E6C8A6';
var K_COL_ROJO = '#D96D6D';
var K_COL_ROJO2 = '#D9AEAE';
var K_COL_GRANATE = '#CF4646';
var K_COL_GRANATE2 = '#CFA6A6';
var K_COL_VIOLETA = '#CC68C1';
var K_COL_VIOLETA2 = '#D6BAD3';
var K_COL_GRIS0 = '#3F3F3F';
var K_COL_GRIS1 = '#666666';
var K_COL_GRIS2 = '#8C8C8C';
var K_COL_GRIS3 = '#B2B2B2';
var K_COL_GRIS4 = '#DEDEDE';

var K_URL_IMAGES = 'images/';
var K_URL_INDEX = 'index.php';

// Variables para la posiciï¿½n del cursor.
var maxX = null;
var maxY = null;
var minX = 0;
var minY = 0;
var pX = 0;
var pY = 0;

// Variable que indica si ha habido cambios
var v_cambios = false;

// Objetos para FADE.
var nereidFadeObjects = new Object();
var nereidFadeTimers = new Object();

// Variables para el menÃº...
var v_ar_flg_boton = new Array;
var v_ar_flg_menu = new Array;

/* Funciones del menÃº */
function f_chg_boton(p_id,p_modo) {
  v_ar_flg_boton[p_id] = p_modo;
  f_check_menu(p_id);
}
  
function f_chg_menu(p_id,p_modo) {
  v_ar_flg_menu[p_id] = p_modo;
  f_check_menu(p_id);
}
  
function f_check_menu(p_id) {
  var v_nom_bot = "bot_sup_" + p_id;
  var v_nom_div = "div_menu_" + p_id;
  var v_nom_img = "images/slices/22_boton_" + p_id + ".jpg";
  var v_nom_img_over = "images/slices/22_boton_over_" + p_id + ".jpg";
  var v_bot = document.getElementById(v_nom_bot);
  var v_div = document.getElementById(v_nom_div);
  if(v_ar_flg_boton[p_id] == 1 || v_ar_flg_menu[p_id] == 1) {
    v_bot.src = v_nom_img_over;
	v_div.className = K_VISIBLE;
  } else {
	v_bot.src = v_nom_img;
	v_div.className = K_HIDE;
  }
}

function f_go_opcion(p_url) {
  document.forms[k_form].action = p_url;
  document.forms[k_form].submit();
}

/* Funciones obtenidas de otras pï¿½ginas */

/*
 * Funciï¿½n que en un intervalo de tiempo cambia la opacidad de un objeto.
 * Parï¿½metros:
 *  - object: Objeto a cambiar la opacidad.
 *  - destOp: Valor de la opacidad.
 *  - rate: Intervalo de tiempo para cada cambio de opacidad (milisegundos).
 *  - delta: Intervalo de opacidad que cambia por cada 'crono'.
 */
function nereidFade(object, destOp, rate, delta){
  if (!document.all)
    return
  if (object != "[object]"){  //do this so I can take a string too
    setTimeout("nereidFade("+object+","+destOp+","+rate+","+delta+")",0);
    return;
  }        
  clearTimeout(nereidFadeTimers[object.sourceIndex]);    
  diff = destOp-object.filters.alpha.opacity;
  direction = 1;
  if (object.filters.alpha.opacity > destOp){
    direction = -1;
  }
  delta=Math.min(direction*diff,delta);
  object.filters.alpha.opacity+=direction*delta;
  if (object.filters.alpha.opacity != destOp){
    nereidFadeObjects[object.sourceIndex]=object;
    nereidFadeTimers[object.sourceIndex]=setTimeout("nereidFade(nereidFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
  }
}

/*
 * Funciï¿½n que detecta si hay Flash instalado.
 * Devuelve:
 *  -> 0 Si no hay flash.
 *  -> 1 Si hay flash.
 *  -> 2 Si es versiï¿½n vieja.
 *  -> -1 Si no se pudo detectar.
 */
function detectarFlash() {
  var v_res = -1;
  var noautoinstall = ""
  if(navigator.appName == "Microsoft Internet Explorer" && (navigator.appVersion.indexOf("Mac") != -1 || navigator.appVersion.indexOf("3.1") != -1)) {
    noautoinstall = "true";
  }
  if (navigator.appName == "Microsoft Internet Explorer" && noautoinstall != "true") {
    v_res = 1;
  } else if(navigator.plugins) {
    if(navigator.plugins["Shockwave Flash"]) {
	  v_res = 1;
    } else if(navigator.plugins["Shockwave Flash 2.0"]) {
      v_res = 2;
    } else {
	  v_res = 0;
	}
  } else {
    v_res = -1;
  }
  return v_res;
}

// Opción de flash...
var k_flash = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="365" height="30" id="slideshow_as2" align="middle">\n';
k_flash += '<param name="allowScriptAccess" value="sameDomain" />\n';
k_flash += '<param name="movie" value="frases.swf" />\n';
k_flash += '<param name="quality" value="high" />\n';
k_flash += '<param name="bgcolor" value="#ffffff" />\n';
k_flash += '<embed src="frases.swf" quality="high" bgcolor="#FFFFFF" width="365" height="30" wmode="transparent" name="fsh_frase" align="center" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />\n';
k_flash += '</object>\n';
var k_frase = '<font class="titulo_peq">potencie sus ventajas competitivas en el mercado</font>\n';

/* 
 * Funciï¿½n que obtiene la posiciï¿½n del ratï¿½n.
 * Parï¿½metros:
 *  - Sin parï¿½metros.
 */
function getXY() {
  pX = event.clientX + document.body.scrollLeft;
  pY = event.clientY + document.body.scrollTop;
}

/*
 * Funciï¿½n que llama a una lov y permite seleccionar valores.
 * Parï¿½metros:
 *  - pFormDest: Formulario que recibirï¿½ los valores.
 *  - pTxtDest: Elemento de texto que recibirï¿½ informaciï¿½n.
 *  - pValDest: Elemento oculto que recibirï¿½ informaciï¿½n.
 *  - pModo: Modo en que se recibe la informaciï¿½n.
 *  - pAccion: pï¿½gina que abrirï¿½ la lov.
 */
function listarLov(pFormDest,pTxtDest,pValDest,pModo,pAccion) {
  llamarLov(pFormDest,pTxtDest,pValDest,pModo);
  document.formEnlaces.action = pAccion;
  document.formEnlaces.submit();
  document.formEnlaces.target = "";
  change(true);
}

/*
 * Funciï¿½n que genera la lov anterior.
 * Parï¿½metros:
 *  - pFormDest: Formulario que recibirï¿½ los valores.
 *  - pTxtDest: Elemento de texto que recibirï¿½ informaciï¿½n.
 *  - pValDest: Elemento oculto que recibirï¿½ informaciï¿½n.
 *  - pModo: Modo en que se recibe la informaciï¿½n.
 */
function llamarLov(pFormDest,pTxtDest,pValDest,pModo) {
  document.formEnlaces.target = "LovWindow";
  window.open("","LovWindow","toolbar=no, width=350, height=250, left=220");
  document.formEnlaces.p_modo.value = pModo;
  document.formEnlaces.p_form_dest.value = pFormDest;
  document.formEnlaces.p_txt_dest.value = pTxtDest;
  document.formEnlaces.p_val_dest.value = pValDest;
}

/* Funciones generales */

// Funciï¿½n que desconecta  aun usuario:
function f_desconectar() {
  if(confirm("Deseas desconectarte?")) {
	document.forms[k_form].p_modo.value = 2;
	document.forms[k_form].action = K_URL_INDEX;
	document.forms[k_form].submit();
  }
}

//Funciï¿½n que muestra u oculta el detalle de un elemento
function f_mostrar_detalle(p_detalle){
  var v_row = document.getElementById(p_detalle);
  if (v_row != null) {
    if (v_row.className == K_VISIBLE) {
	  v_row.className = K_HIDE;
    } else {
	  v_row.className = K_VISIBLE;			
    }
  }
}

function f_mostrar(p_row){
  var v_row = document.getElementById("row_" + p_row);
  var v_boton = document.getElementById("bot_" + p_row);
  var v_flg = document.getElementById("p_flg_" + p_row);
  if(v_row != null) {
    if(v_row.className == K_VISIBLE) {
	  v_row.className = K_HIDE;
	  v_boton.src = "images/iconos/ico_ges_mostrar.gif";
	  v_boton.alt = "Mostrar registros";
	  v_boton.title = "Mostrar registros";
	  v_flg.value = 0;
	} else {
	  v_row.className = K_VISIBLE;
	  v_boton.src = "images/iconos/ico_ges_ocultar.gif";
	  v_boton.alt = "Ocultar registros";
	  v_boton.title = "Ocultar registros";
	  v_flg.value = 1;
	}
  }
}

function f_print_b_mostrar(p_row,p_estado){
  var v_txt_b;
  var v_alt;
  var v_src;
  if(p_estado == 1) {
  	v_alt = "Ocultar registros";
	v_src = "images/iconos/ico_ges_ocultar.gif";
  } else {
  	v_alt = "Mostrar registros";
	v_src = "images/iconos/ico_ges_mostrar.gif";
  }
  if(k_C == FLG_ON) {
	v_txt_b = '<img border="0" id="bot_' + p_row + '" name="bot_' + p_row + '" alt="' + v_alt + '" title="' + v_alt + '" style="cursor:pointer;" src="' + v_src + '" onClick="f_mostrar(\'' + p_row + '\');" />';
	document.write(v_txt_b);
  }  
}
  
/* 
 * Funciï¿½n que obtiene la reoluciï¿½n de la pantalla y devuelve un valor.
 * Parï¿½metros:
 *  - valA: Valor que devolverï¿½ en caso de resoluciï¿½n 800 x 600.
 *  - valB: Valor que devolverï¿½ en caso de resoluciï¿½n 1024 x 768.
 */
function f_get_res (valA,valB,valC) {
  if (screen.height == 600)
    return valA;
  else if(screen.height == 768)
    return valB;
  else
    return valC;
}

/*
 * Funciï¿½n que maximiza automï¿½ticamente la ventana.
 * Parï¿½metros:
 *  - Sin parï¿½metros.
 */
function f_maximizar() {
  window.resizeTo(screen.availWidth, screen.availHeight); 
  window.moveTo(0,0);
}

/*
 * Funciï¿½n que abre una ventana de ediciï¿½n de texto.
 * Parï¿½metros:
 *  - p_form: Formulario donde estarï¿½ el texto.
 *  - p_elem: Elemento donde se mostrarï¿½ el texto.
 *  - p_len: Mï¿½xima cantidad de caracteres permitidos.
 */
function f_mostrar_edicion(p_form,p_elem,p_len){
   var v_elem_ini = document.forms[p_form].elements[p_elem].value;
   document.forms[p_form].elements[p_elem].value = window.showModalDialog('pc_ges_edit.php?p_texto=' + document.forms[p_form].elements[p_elem].value + '&p_len=' + p_len, ' ', 'dialogWidth:26; dialogHeight:16; help:no; resizeable:no; status:no');
   //Si el valor inicial cambia, se anota
   if (v_elem_ini != document.forms[p_form].elements[p_elem].value)	f_change(true);
}

// Convierte una fecha de formato dd/mm/yyyy a yyyy-mm-dd
function f_formato_fecha(p_fecha) {
  var v_dia = null;
  var v_mes = null;
  var v_ani = null;
  var v_res;
  if(esFecha(p_fecha)) {
	v_dia = p_fecha.substr(0,2);
    v_mes = p_fecha.substr(3,2);
    v_ani = p_fecha.substr(6,4);
	if(String(v_ani.length) == 2) {
	  if(parseInt(v_ani) > 50) v_ani = "19" + v_ani;  
	  else v_ani = "20" + v_ani;
	}
	v_res = v_ani + "-" + v_mes + "-" + v_dia;
	return v_res;
  } else {
	return false;  
  }
}

// Indica si ha habido algun cambio.
function f_change(modo){
  v_cambios=modo;
}

// Navega a una pantalla.
function f_navega(p_url) {
  document.forms[k_form].action = p_url;
  document.forms[k_form].submit();
}

/* Funciones que devuelven si un elemento es de un formato especï¿½fico */

// Comprueba que un dï¿½gito de control de una cuenta sea correcto:
function dcOK(p_cad_oficina,p_cad_cuenta) {
  var v_ar_pesos = new Array(1,2,4,8,5,10,9,7,3,6);
  var v_dc_1 = 0;
  var v_dc_2 = 0;
  var v_resto = 0;
  var v_digito = 0;
  var v_res = "";
  
  for(i=8;i>0;i--) {
	v_digito = p_cad_oficina.substr((i-1),1);
	v_dc_1 += v_ar_pesos[i+1]*v_digito;
  }
  v_resto = v_dc_1 % 11;
  v_dc_1 = 11 - v_resto;
  if (v_dc_1 == 10) v_dc_1 = 1;
  if (v_dc_1 == 11) v_dc_1 = 0;
  
  for(i=10;i>0;i--) {
	v_digito = p_cad_cuenta.substr((i-1),1);
	v_dc_2 += v_ar_pesos[i-1]*v_digito;
  }
  v_resto = v_dc_2 % 11;
  v_dc_2 = 11 - v_resto;
  if (v_dc_2 == 10) v_dc_2 = 1;
  if (v_dc_2 == 11) v_dc_2 = 0;
  
  v_res = v_dc_1 + ""+ v_dc_2;
  
  return v_res;
}

// Comprueba la validez de una hora.
function esHora(p_hora) {
  var k_sep = ":";
  var v_hora;
  var v_minutos;
  var v_sep;
  var v_res = K_TXT_OK;
  if(p_hora.length != 5) {
	v_res = "La hora indicada no tiene una longitud vï¿½lida. Su formato ha de ser hh:mm.";
	return v_res;
  }
  v_hora = p_hora.substr(0,2);
  v_sep = p_hora.substr(2,1);
  v_minutos = p_hora.substr(3,2);
  if(!esEntero(v_hora) || v_hora < 0 || v_hora > 24) {
	v_res = "Has de indicar un nï¿½mero del 00 al 24 para la hora.";
	return v_res;
  }
  if(!esEntero(v_minutos) || v_minutos < 0 || v_minutos > 59) {
	v_res = "Has de indicar un nï¿½mero del 00 al 59 para los minutos.";
	return v_res;
  }
  if(v_sep != k_sep) {
	v_res = "El separador de horas y minutos ha de ser '" + k_sep + "'";
	return v_res;
  }
  return v_res;
}

// comprueba la validez de una fecha.
function esFecha(p_fecha) {
  var v_ar_dias = new Array;
  var v_dia = null;
  var v_mes = null;
  var v_ani = null;
	
  v_ar_dias[1] = 31;
  v_ar_dias[2] = 28;
  v_ar_dias[3] = 31;
  v_ar_dias[4] = 30;
  v_ar_dias[5] = 31;
  v_ar_dias[6] = 30;
  v_ar_dias[7] = 31;
  v_ar_dias[8] = 31;
  v_ar_dias[9] = 30;
  v_ar_dias[10] = 31;
  v_ar_dias[11] = 30;
  v_ar_dias[12] = 31;
	
  if(p_fecha.length != 10 && p_fecha.length != 8) {
    //alert("La fecha indicada ha de tener 8 o 10 caracteres dd/mm/yy o dd/mm/yyyy.");
    return false;
  }
	
  var v_sep = '/';
  if(p_fecha.indexOf(v_sep) < 0)
    v_sep = '-';
  if(p_fecha.indexOf(v_sep) < 0) {
    //alert("La fecha debe tener como separador de dia mes y aï¿½o el caracter / o - dd/mm/yyyy o dd-mm-yyyy"); 
    return false
  }
	
  v_dia = p_fecha.substr(0,2);
  v_mes = p_fecha.substr(3,2);
  v_ani = p_fecha.substr(6,4);
	
  if(!esEntero(v_dia)) {
    //alert("El dia indicado no es un valor numerico valido.");
    return false;
  }
  if(!esEntero(v_mes)) {
    //alert("El mes indicado no es un valor numerico valido.");
    return false;
  }
  if(!esEntero(v_ani)) {
    //alert("El aï¿½o indicado no es un valor numerico valido.");
    return false;
  }
  if((p_fecha.substr(2,1) != '-' && p_fecha.substr(2,1) != '/') || (p_fecha.substr(5,1) != '-' && p_fecha.substr(5,1) != '/')) {
	//alert("Los separadores no son correctos.");
    return false;
  }
	
  if(parseInt(v_ani,10) % 4 == 0 && (!(parseInt(v_ani,10) % 100 == 0) || parseInt(v_ani,10) % 400 == 0))
    v_ar_dias[2] = 29;
	
  if(parseInt(v_mes,10) < 1 || parseInt(v_mes,10) > 12) {
    //alert("El mes ha de tener un valor comprendido entre 1 y 12.");
    return false;
  }
	
  if(parseInt(v_dia,10) < 1 || parseInt(v_dia,10) > v_ar_dias[parseInt(v_mes,10)]) {
    //alert("Para el mes " + v_mes + " el dia ha de tener un valor comprendido entre 1 y " + v_ar_dias[parseInt(v_mes,10)] + ".");
    return false;
  }
	
  return true;
}
  
// Funciï¿½n que indica si una cadena es un entero o no.
function esEntero(p_numero) {
  v_numero = String(p_numero);
  for(v_i=0;v_i<v_numero.length;v_i++) {
    if(v_numero.charAt(v_i) < '0' || v_numero.charAt(v_i) > '9')
      return false;
  }
  return true;
}

//Functiï¿½n que devuelve si un valor es numerico o no
function esNum(p_num) {
	
  var v_flg_signo = 0;
  var v_num_coma = 0;
  var v_num_punto = 0;	
    
  p_num = p_num.toString();

  //Se sustituyen el posible punto decimal por la coma
  while (p_num.indexOf('.') != -1) {
	p_num = p_num.replace('.',',');
  }    

  if (p_num.length == 0) return true;

  for (var n = 0; n < p_num.length; n++){
   	if ((n == 0 ) && ((p_num.substring(0, 1) == '+') || (p_num.substring(0, 1) == '-'))) {
	  v_flg_signo = 1; // En principio no tiene utilidad.
    } else if (p_num.substring(n, n+1) == "." ) {
	  v_num_punto = v_num_punto + 1;
	} else if (p_num.substring(n, n+1) == "," ) {
	  v_num_coma = v_num_coma + 1;
	} else if (p_num.substring(n, n+1) < "0" || p_num.substring(n, n+1) > "9") {
	  //alert("El campo introducido debe ser un numerico !!");
	  return false;
	}
  }
		
  if (v_num_punto > 1 || v_num_coma > 1) {
	//alert("El campo introducido debe ser un numerico !!");			
	return false;
  }
  return true;
}

//------------------------------------------------------------------------------------------//
