var fEsDOM = (document.getElementById) ? true : false;
var fEsIE = (document.all) ? true : false;
var fEsNN = (document.layers) ? true : false;

function abrirVentana(sURL,sNombre,sOpciones) { 
  return window.open(sURL,sNombre,sOpciones);
}

// referencia a la ventana del calendario. Si esta en "" es que no esta abierta.
// cuando se abre la ventana, se guarda en ella la referencia.
var oVentanaCalendario = "";


/* En sOpcionales se puede agregar:
	- "&sNombreFormulario=[nombre]" si el campo a modificar esta en un formulario que no es el primero en el documento. 
	- "&sEventoSalida=[nombreEvento]" para que llame a dicho evento cuando se cierra la ventana. (Incluyendo parentesis y argumentos)
	- "&sTextoFecha=[texto]" para cambiar la leyenda de la ventana.
Estas opciones se pueden combinar
*/

function abrirCalendario(sNombreCampo, sFecha, sPeriodo, iLargoPeriodo, sOpcionales) {
	oVentana = abrirVentana(codificarURL('calendario.asp?sFecha=' + sFecha + '&sNombreCampo=' + sNombreCampo + '&sPeriodo=' + sPeriodo + '&iLargoPeriodo=' + iLargoPeriodo + sOpcionales), sNombreCampo,'toolbar=false, menubar=false,width=245,height=270,location=no');
	oVentana.focus();
	return oVentana;
}

function codificarURL(sURL) {
	while (sURL.match(/\s/)) {
		sURL = sURL.replace(/\s/,'+');
	}
	return sURL;
}

function precargarImagenes() { 
	var oDoc=document;
	if (oDoc.images){
		if (!oDoc.aoImagenes) oDoc.aoImagenes=new Array();
		var i, j=oDoc.aoImagenes.length, asArgumentos=precargarImagenes.arguments;
		for (i=0; i<asArgumentos.length; i++)
			if (asArgumentos[i].indexOf("#")!=0){
				oDoc.aoImagenes[j]=new Image;
				oDoc.aoImagenes[j++].src=asArgumentos[i];
			}
	}
}


function cambiarImagen() { 
	var i, j=0, oImagen, asArgumentos=cambiarImagen.arguments;
	document.aoImagenesOriginales=new Array;
	for (i=0;i<(asArgumentos.length-2);i+=3)
		if ((oImagen=encontrarObjeto(asArgumentos[i]))!=null){
			document.aoImagenesOriginales[j++]=oImagen;
			if (!oImagen.sSrcViejo) oImagen.sSrcViejo=oImagen.src; oImagen.src=asArgumentos[i+2];
		}
}

function restaurarImagenCambiada() {
	var i, oImagen, aoImagenesOriginales=document.aoImagenesOriginales, asArgumentos=restaurarImagenCambiada.arguments;
	for (i=0;i<(asArgumentos.length);i++)
		if ((oImagen=encontrarObjeto(asArgumentos[i]))!=null&&oImagen.sSrcViejo){
			oImagen.src=oImagen.sSrcViejo;		
		}
}

function encontrarObjeto(sNombre, oDoc) { 
	var p,i,x;
	if (!oDoc) oDoc=document;
	if ((p=sNombre.indexOf("?"))>0&&parent.frames.length) {
		oDoc=parent.frames[sNombre.substring(p+1)].document;
		sNombre=sNombre.substring(0,p);
	}
	if (!(x=oDoc[sNombre])&&oDoc.all)
		x=oDoc.all[sNombre];
	for (i=0;!x&&i<oDoc.forms.length;i++)
		x=oDoc.forms[i][sNombre];
	for (i=0;!x&&oDoc.layers&&i<oDoc.layers.length;i++)
		x=encontrarObjeto(sNombre,oDoc.layers[i].document);
	if (!x && document.getElementById)
		x=document.getElementById(sNombre);
	return x;
}

function obtenerStyleEnDiv(sNombreDiv) {
	var oStyle;
	if (fEsDOM)
		oStyle = document.getElementById(sNombreDiv).style;
	else if (fEsIE)
		oStyle = document.all[sNombreDiv].style;
	else if (fEsNN)
		oStyle = document.layers[sNombreDiv];
	return oStyle;
}

function mostrarOcultarCapas() { 
  var i, p, fVisible, oCapa, asArgumentos=mostrarOcultarCapas.arguments;
  for (i=0; i<(asArgumentos.length-1); i+=2) 
	if ((oCapa=encontrarObjeto(asArgumentos[i]))!=null) { 
		fVisible=asArgumentos[i+1];	
		if (oCapa.style) {
			oCapa=oCapa.style;
			fVisible =(fVisible=='show')?'visible':(fVisible=='hide')?'hidden':fVisible;
		}
		oCapa.visibility=fVisible; 
	}
}

function setearPosicion(oCapa, iIzq, iSup) {
	objLayer.left = iIzq;
	objLayer.top = iSup;
}

function setearPosicionAImagen(oCapa,sNombreImagen,iIzq,iSup) {
	var oImagen;
	if (fEsIE) {
		oImagen = document.all[sNombreImagen];
	} else {
		if (fEsDOM) {
			oImagen = document.getElementById(sNombreImagen);
		} else {
			oImagen = document[sNombreImagen];
		}
	}
	oStyle = obtenerStyleEnDiv(oCapa);
	oStyle.left = obtenerXAbsoluta(oImagen)+iIzq;
	oStyle.top = obtenerYAbsoluta(oImagen)+iSup;
}

function obtenerXAbsoluta(oObjeto) {
	return (oObjeto.x) ? oObjeto.x : obtenerPosicionAbsoluta(oObjeto,"Left");
	
}

function obtenerYAbsoluta(oObjeto) {
	return (oObjeto.y) ? oObjeto.y : obtenerPosicionAbsoluta(oObjeto,"Top");
}

function obtenerPosicionAbsoluta(oObjeto,sCual) {
	iPos = 0;
	while (oObjeto != null) {
		iPos += oObjeto["offset" + sCual];
		oObjeto = oObjeto.offsetParent;
	}
	return iPos;
}

function obtenerValorRadio(oRadio) {
	var sValor;
	for (i=0; i<oRadio.length;i++) {
		if (oRadio[i].checked) sValor = new String(oRadio[i].value);
	}
	return sValor;
}

function escribirEnCapa(oCapa, sTexto) {
	oParrafo = 'p' + oCapa.substring(3);
	if (sTexto == '') {
		mostrarOcultarCapas(oCapa,'hide');
	} else {
		mostrarOcultarCapas(oCapa,'show');
		if (fEsIE) {
			document.all[oParrafo].innerHTML = sTexto;
		} else {
			if (fEsDOM) {
				document.getElementById(oParrafo).innerHTML = sTexto;
			} else {
				document[oParrafo].innerHTML = sTexto;
			}
		}
	}
}


function validarLargo(sTexto, iMin, iMax, fObligatorio) {
	if (!fObligatorio && sTexto.length==0) return '';
	if (sTexto.length < iMin) {
		return MSG_ERROR_LARGO_MIN + iMin;
	} else {
		if (sTexto.length > iMax) {
			return MSG_ERROR_LARGO_MAX + iMax;
		} else {
			return '';
		}
	}
}

function validarEmail(sTexto, fObligatorio) {
	if (!fObligatorio&&sTexto=='')
		return '';

	sAux = validarLargo(sTexto,3,50,fObligatorio) 
	if (sAux != '') {
		return sAux;
	} else {
		if (validarRegExp(sTexto,"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$")) {
			return '';
		} else {
			return MSG_ERROR_EMAIL_INVALIDO;
		}
	}
}

function validarUsuario(sTexto) {
	return validarLargo(sTexto,2,15,true);
}

function validarClave(sTexto, fObligatorio) {
	return validarLargo(sTexto,4,15,fObligatorio)
}

function validarClaveConfirmacion(sClave, sClave2, fObligatorio) {
	sAux = validarLargo(sClave2,4,15,fObligatorio); 
	if (sAux == '') {
		if (sClave != sClave2) {
			return MSG_ERROR_CLAVE_DIFERENTE;
		} else {
			return '';
		}
	} else {
		return sAux;
	}
}

function validarNumero(sTexto, iMin, iMax, fObligatorio) {
	sAux = !isNaN(sTexto)
	if (fObligatorio&&sTexto=='')
		return MSG_ERROR_NO_NUMERICO;
	if (sAux == '') {
		return MSG_ERROR_NO_NUMERICO;
	} else {
		var iNumero = new Number(sTexto);
		if (iMin == 0 && iMax == 0) //no importan las longitudes
			return '';
		else {
			if (iNumero < iMin)
				return MSG_ERROR_NRO_MIN + iMin;
			else { 
				if (iNumero > iMax)
					return MSG_ERROR_NRO_MAX + iMax;
				else
					return '';
			}
		}
	}
}

function definirDecimales(iNumero, iDecimales, fAgregarCeros) {
	var iPosicionDecimal;
	var sEnteros = '';
	var sDecimales = '';
	sNumero = new String(iNumero);	
	iPosicionDecimal = sNumero.indexOf('.')+1;
	if (iPosicionDecimal==0) {
		iPosicionDecimal = sNumero.length;
		sEnteros = sNumero;
	}else{
		sEnteros = sNumero.substring(0,iPosicionDecimal-1);
	}
	
	for (var i = iPosicionDecimal; i<iPosicionDecimal+iDecimales; i++) {
		if (sNumero.length>i)
			sDecimales += sNumero.charAt(i);
		else	
			if (fAgregarCeros)
				sDecimales += 0;
			else
				break;
	}
	
	var sResultado;
	sResultado = sEnteros;
	if (fAgregarCeros&&sDecimales!='')
		sResultado += '.' + sDecimales;
	return sResultado;
}

function validarRegExp(sTexto, sPatron) {
	oRegExp = new RegExp(sPatron);
	return oRegExp.test(sTexto);
}

function validarSeleccion(oCheckBox, iMin, iMax){
	var iCantidad = cantidadSeleccionada(oCheckBox);
	if (iCantidad<iMin)
		return MSG_ERROR_DEBE_SELECCIONAR_MIN + iMin;
	if (iCantidad>iMax)
		return MSG_ERROR_DEBE_SELECCIONAR_MAX + iMax;
	return '';
}
function cantidadSeleccionada(oCheckBox) {
	var i, iCantidad = 0;
	if (!oCheckBox) return 0;
	if (oCheckBox.length) {
		for (i = 0; i<oCheckBox.length; ++i) {
			if (oCheckBox[i].checked) iCantidad++;
		}
	} else {
		if (oCheckBox.checked) iCantidad++;
	}

	return iCantidad;
}

function confirmarAccion(sAccion, sObjetos, fMasculino, iCantidad, sSeleccion) {
	var sGenero, sArticulo, sMensaje = '';
	if (!sSeleccion) sSeleccion = 'seleccionad';
	if (fMasculino) sGenero = 'o';
	else sGenero = 'a';
	
	if (iCantidad>1)
		sMensaje = MSG_CONFIRMACION + 'desea ' + sAccion + ' l' + sGenero + 's ' + sObjetos + 's ' + sSeleccion + sGenero + 's?';
	else {
		if (fMasculino) sArticulo = ' el ';
		else sArticulo = ' la ';
		sMensaje = MSG_CONFIRMACION + 'desea ' + sAccion + sArticulo + sObjetos + ' ' + sSeleccion + sGenero + '?';
	}
	var fRespuesta = confirm(sMensaje);
	return fRespuesta;
}
