i_gfx_nVersion=0.249;

/**
 * @overview Esta librería la carga i_core.js y contiene los objetos y métodos auxiliares de JS
 * <BR>©2008 Intelygenz - www.intelygenz.com
 * <BR>[JSDOC]	http://intranet-asp.intelygenz.com/ig11_desarrollo_librerias/ig11_01_js/docs/i_gfx.html
 * <BR>[VER] 	P:\IG_IntelyGenZ\IG11_Desarrollo_Librerias\IG11_01_Js\docs\i_gfx.txt 
 * <BR>[DEV]	P:\IG_IntelyGenZ\IG11_Desarrollo_Librerias\IG11_01_Js\src\i_gfx.js 
 * <BR>[PRO]	P:\IG_IntelyGenZ\IG11_Desarrollo_Librerias\IG11_01_Js\pro
 *
 * @name i_gfx.js
 * @author <a href="mailto:manuel.martin-vivaldi@intelygenz.com">Manuel</a>
 * @version    0.249
 */


oIGZ.f_loadLib("i_gfx", i_gfx_nVersion);
oIGZ.f_require("i_igz", 0.814);	//0.242
oGFX = new function (){
	this.m_sObj	 	= "oGFX";
	this.m_nVersion = i_gfx_nVersion;
	this.m_sKeyName = "[i_gfx v"+this.m_nVersion+"] ";

	//
	// Utils
	//
	this.f_checkObjDOM = function ( vIdOrNameOrObjDOM ) {
		var oObjDom = vIdOrNameOrObjDOM;
		if ( GetType(vIdOrNameOrObjDOM) == String ) {
			oObjDom = GetElement(vIdOrNameOrObjDOM);
			if ( IsNull(oObjDom) ) {
				// oObjDom = document.getElementsByName(vIdOrNameOrObjDOM)[0];
				// if ( !IsNull(vIdOrObjDOM) && vIdOrObjDOM.length==1 ) vIdOrObjDOM = vIdOrObjDOM[0];
			}
		}
		return (oObjDom);
	}

	//
	// Estaticos ()
	//
	//Aplica opacidad a cualquier elemento DOM
	this.f_opacity = function(oObjDOM, nAlpha){
		oObjDOM = this.f_checkObjDOM(oObjDOM);
		oObjDOM.m_nAlpha = nAlpha;
		if(oIGZ.m_bIE) oObjDOM.style.filter="alpha(opacity:"+oObjDOM.m_nAlpha+")";
		else oObjDOM.style.opacity=oObjDOM.m_nAlpha/100;
	}
	//Calcula la posicion X de cualquier elemento DOM
	this.f_getPosX = function (oObjDOM) {
		oObjDOM = this.f_checkObjDOM(oObjDOM);
		var nPosX = 0;
		while (oObjDOM.offsetParent) {
			nPosX += oObjDOM.offsetLeft
			oObjDOM = oObjDOM.offsetParent;
		}
		return (nPosX);
	}
	//Calcula la posicion Y de cualquier elemento DOM
	this.f_getPosY = function (oObjDOM) {
		oObjDOM = this.f_checkObjDOM(oObjDOM);
		var nPosY = 0;
		while (oObjDOM.offsetParent) {
			nPosY += oObjDOM.offsetTop
			oObjDOM = oObjDOM.offsetParent;
		}
		return (nPosY);
	}

	//Devuelve el tamaño x de cualquier elemento DOM
	this.f_getSizeX = function (oObjDOM){ oObjDOM = this.f_checkObjDOM(oObjDOM); return (oObjDOM.clientWidth); }

	//Devuelve el tamaño y de cualquier elemento DOM
	this.f_getSizeY = function (oObjDOM){ oObjDOM = this.f_checkObjDOM(oObjDOM); return (oObjDOM.clientHeight); }

	//Devuelve el tamaño x de la ventana actual
	this.f_getWinSizeX = function (){ 
  		var nW = 0
		if( typeof( window.innerWidth ) == 'number' ) {    //Non-IE
			nW = window.innerWidth;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {//IE 6+ in 'standards compliant mode'
			nW = document.documentElement.clientWidth;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {		//IE 4 compatible
			nW = document.body.clientWidth;
		}
		return nW;
	}

	//Devuelve el tamaño y de la ventana actual
	this.f_getWinSizeY = function (){ 
  		var nH = 0
		if( typeof( window.innerWidth ) == 'number' ) {    //Non-IE
			nH = window.innerHeight;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {    //IE 6+ in 'standards compliant mode'
			nH = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {    //IE 4 compatible
			nH = document.body.clientHeight;
		}		
		return nH;
	}

	//Devuelve el tamaño de ventana del frame actual
	this.f_getFrameSizeX = function (){ return (document.body.clientWidth); }
	this.f_getFrameSizeY = function (){ return (document.body.clientHeight); }
	//Devuelve el tamaño con contenidos del frame actual (es >=f_getFrameSizeX)
	this.f_getFrameScrollX = function (){ return (document.body.scrollWidth); }
	this.f_getFrameScrollY = function (){ return (document.body.scrollHeight); }

	//Devuelve la posición del scroll horizontal
	this.f_getScrollX = function () { return  (document.documentElement && document.documentElement["scrollLeft"])? document.documentElement["scrollLeft"] : document.body["scrollLeft"]; }

	//Devuelve la posición del scroll vertical
	this.f_getScrollY = function () { return  (document.documentElement && document.documentElement["scrollTop"])? document.documentElement["scrollTop"] : document.body["scrollTop"]; }

	// Pasa RGB a Hexadecimal
	this.f_parseRGB2HEX = function (sRGB_Color){
		sRGB_Color = sRGB_Color.toUpperCase();
		var sHEX = "#";
		if (sRGB_Color.indexOf("RGB")!=-1){
			sHEX += parseInt(sRGB_Color.substring(4, sRGB_Color.indexOf(","))).toString(16);
			sHEX += parseInt(sRGB_Color.substring(sRGB_Color.indexOf(",")+2, sRGB_Color.lastIndexOf(","))).toString(16);
			sHEX += parseInt(sRGB_Color.substring(sRGB_Color.lastIndexOf(",")+2, sRGB_Color.length-1)).toString(16);
		}
		else sHEX = sRGB_Color;
		return ( sHEX.toUpperCase() );
	}
	// Pasa Hexadecimal a RGB
	this.f_parseHEX2RGB = function (sHEX_Color){
		sHEX_Color = sHEX_Color.toUpperCase()
		var sRGB = "";
		if (sHEX_Color.indexOf("#")!=-1){
			sRGB += parseInt(sHEX_Color.substring(1, 3) , 16)+", ";
			sRGB += parseInt(sHEX_Color.substring(3, 5) , 16)+", ";
			sRGB += parseInt(sHEX_Color.substring(5, 7) , 16);
		}
		else sRGB = sHEX_Color;
		return ( sRGB.toUpperCase() );
	}
	// Devuelve el color correspondiente entre dos colores dependiendo del número de
	// pasos total y un paso especifico
	this.f_getBetweenColor = function (sHexColor1, sHexColor2, nPasosK, nPasoC ){
		var sHexColor, nColor1, nColor2;
		for (var f=0; f<3; f++){
			nColor1 = parseInt("0x"+ sHexColor1.substr(1+(f*2), 2));
			nColor2 = parseInt("0x"+ sHexColor2.substr(1+(f*2), 2));
			nColor1 = Math.round( nColor1 + ((nColor2-nColor1)*nPasoC)/nPasosK );
			if (nColor1<16) sHexColor += "0";
			sHexColor += nColor1.toString(16);			//Dec2Hex
		}
		return (sHexColor);
	}

	this.f_changeStyle = function (sClass,sRule) {
		var oSheet = null;
		var nSheets = document.styleSheets.length

		while (nSheets-- && IsNull(oSheet)) {
			oSheet = document.styleSheets[nSheets]
			if (
			!IsNull(oSheet.href)&& // 0.236 (eromera) en Opera no existe propiedad href
			oSheet.href.indexOf("chrome")!=-1 	//0.200	Bug de FF2 ???
			) oSheet=null
		}

		if (!IsNull(oSheet)) {
			if(oIGZ.m_bIE) {
				var nRule = oSheet.rules.length
				oSheet.addRule(sClass,sRule,nRule);
			}
			else {
				try{	//BUG en FF !!!
					var nRule = oSheet.cssRules.length
					oSheet.insertRule(sClass+"{ "+sRule+" }",nRule);
				}
				catch (ex) {
					ErrorJS(this.m_sKeyName+".f_changeStyle: Error en document.styleSheets["+nSheets+"].cssRules (C:"+sClass+" R:"+sRule+")");
				}
			}
		}
	}

	//
	// Dinamicos ()
	//

	// Fade
	//
	this.f_fadeStop = function (oObjDOM){ clearInterval(oObjDOM.m_stFade); }
	this.f_fade = function (oObjDOM, nAlpha0, nAlpha1, nAlphaK, nAlphaT, nAlphaF){
		oObjDOM = this.f_checkObjDOM(oObjDOM);
		if (oObjDOM.m_stFade) this.f_fadeStop(oObjDOM);
		oObjDOM.f_fadeLoop = this.f_fadeLoop;
		oObjDOM.m_nAlpha0 = nAlpha0;
		oObjDOM.m_nAlpha1 = nAlpha1;
		oObjDOM.m_nAlphaC = 0;
		oObjDOM.m_nAlphaK = nAlphaK;
		oObjDOM.m_nAlphaF = nAlphaF;
		oObjDOM.m_stFade  = setInterval( function () { oObjDOM.f_fadeLoop(); }, nAlphaT);
	}
	this.f_fadeLoop = function (){
		this.m_nAlpha = Math.round(this.m_nAlpha0+(((this.m_nAlpha1-this.m_nAlpha0)/this.m_nAlphaK)*this.m_nAlphaC++));
		oGFX.f_opacity(this, this.m_nAlpha);
		if(this.m_nAlphaC>this.m_nAlphaK){
			oGFX.f_opacity(this, this.m_nAlpha1);
			clearInterval(this.m_stFade);
			if (this.m_nAlphaF) this.m_nAlphaF();
		}
	}


 /**
 * @description Genera el código HTML necesario para pintar un fichero flash
 *
 * @param {string} sSWF Ruta del fichero flash.
 * @param {integer} nW Ancho del OBJECT generado.
 * @param {integer} nH Alto del OBJECT generado.
 * @param {string} [sExtra] Parámetros extra para el objeto flash (embed).
 * @param {hashTable} [hDatos] {campo1:'valor1',campo2:'valor2',....} [Old: {string} [sBG] Color de fondo.]
 * @example
 * oGFX.f_drawFlash('producto.swf',200,100,'',{name:'id de mi flash',quality:'high',wmode:'transparent',bgcolor:'#FF0000'})
 * http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_12701
 * http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_4150
 */

	this.f_drawFlash = function (sSWF,nW,nH,sExtra,hDatos) {
		if (!sExtra) sExtra="";
		var sExtraIE = sExtra;
		var	 sBG = "#FFFFFF";	
		if (typeof(hDatos)=='string') {
			sBG = hDatos;
			hDatos = null;
		}
		if (!hDatos) {
			hDatos = {quality:'high',wmode:'transparent',bgcolor:sBG,allowScriptAccess:"sameDomain"};	
		}	

		var sIE = "", sFF="";
		for(var sItem in hDatos) {
			sCampo = sItem;
			vValor = hDatos[sItem];
			if (sItem=='name') {	//IE
				sExtraIE += " id='"+hDatos[sItem]+"'"
			}
			else {
				sIE  += "<PARAM NAME="+sCampo+" VALUE='"+vValor+"'>"
			}
			sFF += " "+sCampo+"='"+vValor+"'"	
		}
		
		var sF = "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'"
		sF += " WIDTH='"+nW+"' HEIGHT='"+nH+"' "+sExtraIE+">"
		sF += "<PARAM NAME=movie VALUE='"+sSWF+"'>"
//		sF += "<PARAM NAME=quality VALUE=high>"
//		sF += "<PARAM NAME=wmode VALUE=transparent>"
//		sF += "<PARAM NAME=bgcolor VALUE="+sBG+">"
		sF += sIE
		sF += "<embed src='"+sSWF+"' width='"+nW+"' height='"+nH+"' "+sExtra
		sF += " type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'"
//		sFF += " quality=high wmode=transparent bgcolor="+sBG
		sF += sFF + ">"
		sF += "</embed>"
		sF += "</OBJECT>"
		return sF;	
	}

	// Color Fade
	//
	this.f_colorFadeStop = function (oObjDOM){ clearInterval(oObjDOM.m_stColorFade); }
	this.f_colorFade = function (oObjDOM, hColor1, hColor2, nColorK, nColorT, bText, f_onFinish){
		oObjDOM = this.f_checkObjDOM(oObjDOM);
		if (oObjDOM.m_stColorFade) this.f_colorFadeStop(oObjDOM);
		oObjDOM.m_hColor1  = hColor1;
		oObjDOM.m_hColor2  = hColor2;
		oObjDOM.m_nColorC  = 0;
		oObjDOM.m_nColorK  = nAlphaK;
		oObjDOM.m_nColorT  = nAlphaT;
		oObjDOM.m_bText    = bText;
		oObjDOM.f_onColorFadeFinish = f_onFinish;
		oObjDOM.m_stColorFade  = setInterval(function (){ oObjDOM.f_colorFadeLoop(); }, nColorT);
	}
	this.f_colorFadeLoop= function (){
		var sHEXColor = "";
		var sColor    = "";
		var nColor1, nColor2;
		for (var f=0; f<3; f++) {
			nColor1 = parseInt("0x"+ this.m_hColor1.substr(1+(f*2),2));
			nColor2 = parseInt("0x"+ this.m_hColor2.substr(1+(f*2),2));
			nColor1 = Math.round( nColor1 + ((nColor2-nColor1)*this.m_nColorC)/this.m_nColorK );
			if (sHEXColor<16) sHEXColor +="0";
			sColor=nColor1.toString(16);
			if(sColor.length<1) sColor="00";
			else if(sColor.length<2) sColor="0"+sColor;
			sHEXColor += sColor;			//Dec2Hex
		}
		if(this.m_bText) this.style.color="#"+sHEXColor;
		else this.style.backgroundColor="#"+sHEXColor;

		if(this.m_nColorC>this.m_nColorK){
			clearInterval(this.m_stColorFade);
			if(this.f_onColorFadeFinish) this.f_onColorFadeFinish();
		}
	}

	this.f_displayElements = function ( a_oElementOrElementName, sDisplay ) {
		if ( !IsArray(a_oElementOrElementName) ) a_oElementOrElementName = [a_oElementOrElementName];
		var a_oElements, oElement;
		for ( var f=0, F=a_oElementOrElementName.length; f<F; f++ ) {
	// Busca por ID
			oElement = this.f_checkObjDOM(a_oElementOrElementName[f]);
			if ( oElement==null ) {
	// Busca por NAME
				a_oElements = GetElementsByName( a_oElementOrElementName[f] );
				if ( a_oElements.length>0 ) {
					for ( var g=0, G=a_oElements.length; g<G; g++ ) {
						this.f_setDisplay( a_oElements[g], sDisplay);
					}
				}
				else {
	// Busca por TAG
					a_oElements = GetElementsByTag( a_oElementOrElementName[f] );
					for ( var g=0, G=a_oElements.length; g<G; g++ ) {
						this.f_setDisplay( a_oElements[g], sDisplay);
					}
				}
			}
			else this.f_setDisplay( oElement, sDisplay);
		}
	}

// si sDisplay="" restablece el valor anterior
	this.f_setDisplay = function (oElement, sDisplay) {
		if ( IsNull(oElement) ) ErrorJS(this.m_sKeyName+"- f_setDisplay("+oElement+", '"+sDisplay+"') - No existe el elemento");
		else {
			var sDisplayT = oElement.style.display;
			var sDisplayL = oElement.getAttribute("_display")
			if (IsNull(sDisplayL)) oElement.setAttribute ("_display",sDisplayT)
			if (sDisplay!=sDisplayT) {
				oElement.setAttribute ("_display",sDisplayT)
				if (sDisplay=="" && !IsNull(sDisplayL) ) {
					oElement.style.display = sDisplayL;
				}
				else {
					oElement.style.display = sDisplay;
				}
			}
		}
	}

	this.f_showElements = function (oElement) {
		this.f_visibilityElements(oElement, "visible");
	}
	this.f_hideElements = function (oElement) {
		this.f_visibilityElements(oElement, "hidden");
	}
	this.f_restoreElements = function (oElement) {
		this.f_visibilityElements(oElement, "");
	}
	this.f_visibilityElements = function ( a_oElementOrElementName, sVisibility ) {
		if ( !IsArray(a_oElementOrElementName) ) a_oElementOrElementName = [a_oElementOrElementName];
		var a_oElements, oElement;
		for ( var f=0, F=a_oElementOrElementName.length; f<F; f++ ) {
	// Busca por ID
			oElement = this.f_checkObjDOM(a_oElementOrElementName[f]);
			if ( oElement==null ) {
	// Busca por NAME
				a_oElements = GetElementsByName( a_oElementOrElementName[f] );
				if ( a_oElements.length>0 ) {
					for ( var g=0, G=a_oElements.length; g<G; g++ ) {
						this.f_setVisibility( a_oElements[g], sVisibility);
					}
				}
				else {
	// Busca por TAG
					a_oElements = GetElementsByTag( a_oElementOrElementName[f] );
					for ( var g=0, G=a_oElements.length; g<G; g++ ) {
						this.f_setVisibility( a_oElements[g], sVisibility);
					}
				}
			}
			else this.f_setVisibility( oElement, sVisibility);
		}
	}

	this.f_setVisibility = function (oElement, sVisibility) {
		if ( IsNull(oElement) ) ErrorJS(this.m_sKeyName+"- f_setVisibility("+oElement+", '"+sVisibility+"') - No existe el elemento");
		else {
			var sVisibilityNow = oElement.style.visibility;
			var sVisibilityIni = oElement.getAttribute("_visibilityIni");
			if (IsNull(sVisibilityIni)) {
				oElement.setAttribute ("_visibilityIni", sVisibilityNow);
				sVisibilityIni = sVisibilityNow;
			}

			if (sVisibility=="" && !IsNull(sVisibility) ) {
					oElement.style.visibility = sVisibilityIni;
			}
			else {
				oElement.style.visibility = sVisibility;
			}
		}
	}
	this.f_setVisible = function (oElement) {
		this.f_setVisibility(oElement, "visible");
	}
	this.f_setHidden = function (oElement) {
		this.f_setVisibility(oElement, "hidden");
	}

//sColor,[nSizeX],[nSizeY],[nBorder],[sBorderColor]
	this.f_drawBox= function (sColor,nSizeX,nSizeY,nBorder,sBorderColor,sXtra) {
		if (!nSizeX) nSizeX = 10
		if (!nSizeY) nSizeY = 10
		if (IsNull(nBorder)) nBorder = 1
		if (!sBorderColor) sBorderColor = "#000000"
//Ver porque falla si no le ponemos un  src='/pix/magic.gif'
		return "<IMG width="+nSizeX+" height="+nSizeY+" style='border:"+nBorder+" solid "+sBorderColor+";background-color:"+sColor+"' border=0 "+sXtra+" >"
	}

	// FastHelper 3
	// Necesita estilos .FastHelper de la css general de IGZ [ HH - 25.04.2008]
	//
	this.m_oFH = new function () {
		this.m_sObj = "oGFX.m_oFH";
		this.m_sId  = "SPAN_GFX_FH";
		this.m_oObj = null;

		this.m_sEXML = "<DIV class='fhMain'><INNER /></DIV>";

		this.f_draw = function () { return ("<DIV id='"+this.m_sId+"' style='position:absolute; z-index:100; background: #AAA;' class='FastHelper' onmouseover='clearTimeout("+this.m_sObj+".m_stHide);'></DIV>"); }
		oIGZ.m_a_sStartDraws.push( this.m_sObj+".f_draw()" );

		this.m_a_sTAGs = ["TD", "SPAN", "A"];
		this.f_init = function () {
			oIGZ.f_mouseMoveOn();
			this.m_oObj = document.getElementById( this.m_sId );
			this.m_oObj.m_oFH = this;
			this.m_oObj.onmouseover = function () { clearTimeout(this.m_oFH.m_stHide); }
			this.m_oObj.onmouseout  = function () { this.m_oFH.f_hide(); }
		}
		oIGZ.m_a_sStartUps.push(this.m_sObj+".f_init()");


		this.f_autoFH = function () {
			var sInner, sTAG, a_oElements, oElement;
			var f = -1, F = this.m_a_sTAGs.length;
			while ( ++f < F ) {
				sTAG = this.m_a_sTAGs[f];
				a_oElements = document.getElementsByTagName(sTAG);
				var g = -1, G = a_oElements.length;
				while ( ++g < G ) {
					oElement = a_oElements[g];
					sInner   = oElement.getAttribute("fh_tit");
					if ( sInner!=null ) {
						oElement.f_mouseOver = oElement.onmouseover;
						oElement.onmouseover = function () {
							this.f_mouseOver();
							oGFX.m_oFH.f_show(this, sInner);
						}
						oElement.f_mouseOut = oElement.onmouseout;
						oElement.onmouseout = function () {
							this.f_mouseOut();
							oGFX.m_oFH.f_hide();
						}
					}
				}
			}
		}

		this.m_stShow = null;
		this.f_show = function (oDOM, sInner) {
			if (this.m_oObj) {		//0.232
				clearTimeout(this.m_stHide);
				this.m_oObj.innerHTML  = this.m_sEXML.f_replace("<INNER />", sInner);
				this.f_setPos();
				this.f_autoPos();	
				this.m_oObj.style.display = "block";
			}
		}

		this.m_stAutoPos = null;
		this.f_autoPos = function (){
			var oThis = this;
			clearInterval(this.m_stAutoPos);
			this.m_stAutoPos = setInterval( function (){
									oThis.f_setPos();
								}
								, 10
								);
		}
		this.f_setPos = function (){	//0.245
			var nOffset = 5;
			var nPosX = oIGZ.m_nMouseX + nOffset;
			var nPosY = oIGZ.m_nMouseY -(nOffset + oGFX.f_getSizeY(this.m_oObj));

			if ( nPosX+oGFX.f_getSizeX(this.m_oObj) > oGFX.f_getFrameSizeX()+oGFX.f_getScrollX() ) {
				nPosX = oIGZ.m_nMouseX - (oGFX.f_getSizeX(this.m_oObj)+ nOffset);
			}
			if ( nPosY < oGFX.f_getScrollY() ) {
				nPosY = oIGZ.m_nMouseY+nOffset;
			}
			
			this.m_oObj.style.left = nPosX;
			this.m_oObj.style.top  = nPosY;
		}

		this.m_stHide = null;
		this.f_hide = function () {
			var oThis = this;
			var oObj  = this.m_oObj;

			if (oObj) {		//0.232
				clearTimeout(this.m_stHide);
	
				this.m_stHide = setTimeout ( function () { 
											clearInterval(oThis.m_stAutoPos);
											oObj.style.display = "none";
											oObj.innerHTML  = "";
											oObj.style.left = 0;
											oObj.style.top  = 0;
										}
									, 50
									);
			}
		}
	}
	this.m_oFH.m_oGFX = this;
}

// FastHelper 3
//
//onmouseover='FHON(this)' onmouseout='FHOFF()' fh_tit='inner text'
function FHON (oDOM) {
	var sInner = oDOM.getAttribute("fh_tit");
	oGFX.m_oFH.f_show(oDOM, sInner);
}
function FHOFF() { oGFX.m_oFH.f_hide(); }
function FH_DrawEvents(fh_tit){
	return " onmouseover='FHON(this)' onmouseout='FHOFF()' fh_tit='"+fh_tit+"' ";
}

iGFX = oGFX; // Retro-compatibilidad

/*******************************************/
/**************** SHIELD *******************/
/*******************************************/

oShield = new function () {
	this.m_nAlpha = 75;
	this.m_bFade  = 0;
	this.m_bLock  = 0;
	this.m_sDefaultMSG = oIGZ.f_langText("TextoShield");		//"procesando datos ...";
	this.m_sDefaultTmp = "";
	this.m_sClassNameDIV = ""

	this.f_on = function (sMSG, sClassNameDIV, sClassNameInner, bLock) {				
		if ( this.m_bLock == 0 ) {
			this.m_bLock  = bLock | 0;
			if ( this.m_sClassNameDIV )   sClassNameDIV = this.m_sClassNameDIV;
			if ( this.m_sClassNameInner ) sClassNameInner = this.m_sClassNameInner;
			this.m_sDefaultTmp = sMSG ? sMSG : this.m_sDefaultMSG;
			sClassNameInner = IsNull(sClassNameInner) ? " style='color: #000000; font-size: 12px; text-align: center; vertical-align: middle;' " : " class='"+sClassNameInner+"' ";
			this.m_sClassNameInnerTmp = sClassNameInner;
			var sHTML;
			this.m_oDIV = GetElement("GFX_DIV_Shield");
			if ( this.m_oDIV==null ) {
				this.m_oDIV = document.createElement("DIV");
				this.m_oDIV.id 			     = "GFX_DIV_Shield";
				this.m_oDIV.style.position   = "absolute";
				this.m_oDIV.style.visibility = "hidden";
				this.m_oDIV.style.zIndex     = 50;
				document.getElementsByTagName("BODY")[0].appendChild( this.m_oDIV );
			}
	
			this.m_oDIV.className = sClassNameDIV;
			if (!sClassNameDIV) {
				this.m_oDIV.style.backgroundColor = "#F0F0F0";
			}
	
			var nPosX = (document.documentElement && document.documentElement["scrollLeft"])? document.documentElement["scrollLeft"] : document.body["scrollLeft"];
			var nPosY = (document.documentElement && document.documentElement["scrollTop"]) ? document.documentElement["scrollTop"]  : document.body["scrollTop"];
	
			this.m_oDIV.style.left = nPosX;
			this.m_oDIV.style.top  = nPosY;
	
			var nSizeX = oGFX.f_getWinSizeX() //oGFX.f_getFrameSizeX()-10;
			var nSizeY = oGFX.f_getWinSizeY()	//oGFX.f_getFrameSizeY()-10;
	
			this.m_oDIV.innerHTML = this.f_drawInner(nSizeX, nSizeY);
	
			// oGFX.f_displayElements("SELECT", "none");
			if ( oIGZ.m_bIE  && oIGZ.m_nVersionMajor<7) {
				oGFX.f_hideElements("SELECT");
			}
	
			if (this.m_bFade) {
				oGFX.f_opacity(this.m_oDIV, 0);
				oGFX.f_fade(this.m_oDIV, 0, this.m_nAlpha, 10, 10);
			}
			else oGFX.f_opacity(this.m_oDIV, this.m_nAlpha);
	
			this.m_oDIV.style.visibility = "visible";
	
			oIGZ.m_a_sOnResize.push("oShield.f_resize();");
			oIGZ.m_a_sOnScroll.push("oShield.f_repos();");
		}
	}

	this.f_off = function (bUnlock) {
		if(bUnlock==1) this.m_bLock = 0;
		if(this.m_bLock==0) {
			oIGZ.m_a_sOnResize = oIGZ.m_a_sOnResize.f_delElements("oShield.f_resize();");
			oIGZ.m_a_sOnScroll = oIGZ.m_a_sOnScroll.f_delElements("oShield.f_repos();");
			if ( !IsNull(this.m_oDIV) ) {
				if (this.m_bFade) {
					var oDiv = this.m_oDIV;
					oGFX.f_fade(this.m_oDIV, this.m_oDIV.m_nAlpha, 0, 5, 5, function (){ oShield.f_clear(); } );
				}
				else {
					this.f_clear();
				}
			}
		}
	}
	this.f_clear = function (){
		//oGFX.f_opacity(this.m_oDIV, 0);
		this.m_oDIV.style.visibility = "hidden";
		this.m_oDIV.style.left = 0;
		this.m_oDIV.style.top  = 0;
		this.m_oDIV.innerHTML = "";
		// oGFX.f_displayElements("SELECT", "");
		// oGFX.f_hideElements("SELECT", "");
		if ( oIGZ.m_bIE && oIGZ.m_nVersionMajor<7) {
			oGFX.f_restoreElements("SELECT");
		}
	}

	this.f_drawInner = function (nSizeX, nSizeY) {
		var sHTML  = "<TABLE cellpadding=0 cellspacing=0 border=0 width="+nSizeX+" height="+nSizeY+">";
		sHTML += "<TR>";
		sHTML += "<TD "+this.m_sClassNameInnerTmp+">"+this.m_sDefaultTmp+"</TD>";
		sHTML += "</TR>";
		sHTML += "</TABLE>";
		return sHTML;
	}

	this.f_resize = function () {
		var nSizeX = oGFX.f_getFrameSizeX();
		var nSizeY = oGFX.f_getFrameSizeY();
		this.m_oDIV.innerHTML = this.f_drawInner(nSizeX, nSizeY);
	}

	this.f_repos = function () {
		var nPosX = (document.documentElement && document.documentElement["scrollLeft"])? document.documentElement["scrollLeft"] : document.body["scrollLeft"];
		var nPosY = (document.documentElement && document.documentElement["scrollTop"]) ? document.documentElement["scrollTop"]  : document.body["scrollTop"];
		this.m_oDIV.style.left = nPosX;
		this.m_oDIV.style.top  = nPosY;
	}
}

/******************************************/
/**************** IWIN ********************/
/******************************************/

var IWIN_PARENT_TEMP;
var IWIN_CLOSE_TEMP;
var IWIN_NO_EVENT_TEMP;
function IWIN (sObj){
	this.m_sObj    = sObj;
	this.m_sBaseId = "IWIN_"+this.m_sObj;
	this.m_nVersion = 0.11;

	this.m_oDIV = null;
	this.m_sDIV	= "IWIN_"+this.m_sObj+"_DIV";
	this.m_sStatusId = this.m_sBaseId+"_Status";
	this.m_sIFrameId = this.m_sBaseId+"_IFrame";

	this.m_oIEXML = new IEXML(sObj+".m_oIEXML");

	this.m_oIEXML.f_addOwnTAG("<MOVE_ON />", this.m_sObj+".f_initDrag()");
	this.m_oIEXML.f_addOwnTAG("<RESIZEX_ON />", this.m_sObj+".f_initResizeDrag(this, 1)");
	this.m_oIEXML.f_addOwnTAG("<RESIZEY_ON />", this.m_sObj+".f_initResizeDrag(this, 0, 1)");
	this.m_oIEXML.f_addOwnTAG("<RESIZEXY_ON />", this.m_sObj+".f_initResizeDrag(this, 1, 1)");
	this.m_oIEXML.f_addOwnTAG("<EVENT_CLOSE />", this.m_sObj+".f_close(1)");

	this.m_oIEXML.f_addOwnTAG("<ICO />", "<IMG src='"+oIGZ.m_sRootPath+"pix/ico_logo.gif' width=32 height=32 border=0 />");
	this.m_oIEXML.f_addOwnTAG("<TITLE />", "");
	this.m_oIEXML.f_addOwnTAG("<BOT_CLOSE />", "<IMG src='"+oIGZ.m_sRootPath+"pix/win_close.gif' width=32 height=32 border=0 />");
	this.m_oIEXML.f_addOwnTAG("<CONTENT />", "");
	this.m_oIEXML.f_addOwnTAG("<STATUS />", "");
	this.m_oIEXML.f_addOwnTAG("<SIZEX />", "");
	this.m_oIEXML.f_addOwnTAG("<SIZEY />", "");

	this.f_defineTopEXML    = function (sEXML) {
		this.m_oIEXML.f_addBlock("<TOP />", sEXML);
	}
	this.f_defineBodyEXML   = function (sEXML) {
		this.m_oIEXML.f_addBlock("<BODY />", sEXML);
	}
	this.f_defineBottomEXML = function (sEXML) {
		this.m_oIEXML.f_addBlock("<BOTTOM />", sEXML);
	}
	this.m_sEXML = "";
	this.f_build = function (sEXML){
		this.m_sEXML = sEXML;
	}

	oIGZ.f_mouseEventsOn();

	// EXML Por defecto
	this.f_defineTopEXML("<TABLE cellpadding=0 cellspacing=0 border=0 ><TR>"
						   +"<TD class='WinMSGIco'><ICO /></TD>"
						   +"<TD class='WinMSGTit' width='100%' style='cursor: move;' onmousedown='<MOVE_ON />;return false;' ><TITLE /></TD>"
						   +"<TD class='WinMSGTools' onclick='<EVENT_CLOSE />'><BOT_CLOSE /></TD>"
						   +"</TR></TABLE>"
					       );
	this.f_defineBodyEXML("<TABLE cellpadding=0 cellspacing=0 border=0><TR>"
						 +"<TD class='WinMSGBody'><CONTENT /></TD>"
						 +"</TR></TABLE>"
					     );
	this.f_defineBottomEXML("<TABLE cellpadding=0 cellspacing=0 border=0><TR>"
							+"<TD id='"+this.m_sStatusId+"' class='WinMSGStatus'><STATUS /></TD>"
							+"</TR></TABLE>"
					       	);
	this.f_build ("<TABLE cellpadding=0 cellspacing=0 border=0 class='WinMSG'>"
				 +"<TR><TD colspan=3 id='TD_"+this.m_sBaseId+"_TOP'><TOP /></TD></TR>"
				 +"<TR><TD></TD><TD><BODY /></TD><TD style='cursor: W-resize; width: 2px;' onmousedown='<RESIZEX_ON />;return false;'></TD></TR>"
				 +"<TR><TD style='cursor: N-resize; height: 2px;' onmousedown='<RESIZEY_ON />;return false;' colspan=2><BOTTOM /></TD><TD style='cursor: NW-resize;' onmousedown='<RESIZEXY_ON />;return false;'></TD></TR>"
				 +"</TABLE>"
				 );

	this.f_create = function (){
		if ( IsNull(this.m_oDIV) ) {
			this.m_oDIV = document.createElement("DIV");
			this.m_oDIV.id 		 	     = this.m_sDIV;
			this.m_oDIV.style.position   = "absolute";
			this.m_oDIV.style.zIndex     = 90;
			this.m_oDIV.style.visibility = "hidden";
			document.getElementsByTagName("BODY")[0].appendChild( this.m_oDIV );
		}
	}

	this.f_buildHTML = function (sTitle, sURL, nSizeX, nSizeY){
		this.m_oIEXML.f_setOwnTAG("<TITLE />", sTitle);
		this.m_oIEXML.f_setOwnTAG("<CONTENT />", this.f_drawIFrame(sURL, nSizeX, nSizeY) );
		this.m_oIEXML.f_setOwnTAG("<SIZEX />", nSizeX);
		this.m_oIEXML.f_setOwnTAG("<SIZEY />", nSizeY);
		return this.m_oIEXML.f_buildBlocks(this.m_sEXML);
	}

	this.f_drawIFrame = function (sURL, nSizeX, nSizeY){
		var oThis = this;
		if ( sURL.indexOf("?")==-1 ) sURL += "?";
		sURL += "&"+(new Date()).f_drawFormat("nYYYYnMMnDDnHH24nMMNnSSnMIL");
		return oIFRAME.f_draw (this.m_sIFrameId, sURL, nSizeX, nSizeY, "auto", 0, ""
							  , function () {
							  		if ( GetElement(oThis.m_sStatusId)!=null ) {
										GetElement(oThis.m_sStatusId).innerHTML = "Listo";
									}
									oThis.m_bLoaded = 1;
								}
							);
	}
/**
* @description Abre una ventana emergente
* @param {string} sTitle Titulo que aparecerá en la ventana emergente
* @param {string} sURL URL de la página que se mostrará en la ventana emergente
* @param {integer} nSizeFrameX Anchura de la ventana emergente
* @param {integer} nSizeFrameY Altura de la ventana emergente
* @param {integer} nPosX Posición relativa de la ventana emergente
* @param {integer} nPosY Posición relativa de la ventana emergente
* @param {boolean} bAutoPos [1|0] Si el valor es 1, la ventana se colocará en una posición central (nPosX y nPosY dejan de tener utilidad)
* @param {boolean} bMove [1|0] Si el valor es 1, la ventana emergente se podrá mover con el ratón
* @param {boolean} bResize [1|0] Si el valor es 1, la ventana emergente se podrá cambiar de tamaño
* @param {function} f_onClose Se puede pasar una función que se ejecutará al cerrar la ventana emergente
* @param {boolean} bNoShield 
* @example
*
* oWinShield.f_open("Mi Ventana", "ventana.asp", 600, 500, null, null, 1);
*
* Crea una ventana con titulo "Mi Ventana", usando ventana.asp, con tamaño 600x500, autposicionándolo en la pantalla
*/
	this.f_open = function (sTitle, sURL, nSizeFrameX, nSizeFrameY, nPosX, nPosY, bAutoPos, bMove, bResize, f_onClose, bNoShield) {
		if ( GetType("oIEXML", 1) ) {
			this.m_bMove    = bMove    ? bMove    : 0;
			this.m_bResize  = bResize  ? bResize  : 0;
			this.m_bAutoPos = bAutoPos ? bAutoPos : 0;
			this.f_onClose  = f_onClose ? f_onClose : function () { };

			this.f_create();

			this.m_oDIV.style.left = 0;
			this.m_oDIV.style.top  = 0;
			this.m_oDIV.innerHTML = this.f_buildHTML(sTitle, sURL, nSizeFrameX, nSizeFrameY);

			if ( !bNoShield ) oShield.f_on(" ", null, null, 1);

			var oIFrame = oIFRAME.f_parse2ObjIFRAME(this.m_sIFrameId, function (){ } );
			if (oIFrame.getAttribute("m_sSrc")!=oIFrame.getAttribute("src")){ //0.248
				oIFrame.f_load(oIFrame.getAttribute("m_sSrc"), oIFRAME.m_maIFramesInit.f_maGetValIf("sId", this.m_sIFrameId, "f_onload"));
			}

			this.m_oDIV.style.visibility = "visible";
			this.m_oDIV.style.display = "inline";

			nSizeX = oGFX.f_getSizeX(this.m_oDIV)	//0.198	Problema SizeReal = Frame+HTML bordes
			nSizeY = oGFX.f_getSizeY(this.m_oDIV)
			this.f_setPos ( nSizeX, nSizeY, nPosX, nPosY );

			var oThis = this;

			if (bAutoPos) {
				this.f_autoPos(nSizeX, nSizeY, bMove);
			}

			oIGZ.f_onMouseUp = function (){
				oThis.f_stopDrag();
				oThis.f_stopResizeDrag();
			}

			this.m_stMouseMove = setInterval( function () {
												oThis.f_move();
												oThis.f_resize();
											}
											, 5 );
		}
		else {
			ErrorJS("i_gfx - Para poder usar IWIN es necesaria la librería i_exml");
		}
	}

	this.f_setPos = function (nSizeX, nSizeY, nPosX, nPosY) {
			if ( IsNull(nSizeX) ) nSizeX = 400;
			if ( IsNull(nSizeY) ) nSizeY = 300;

			if ( IsNull(nPosX) ) {
				if (oGFX.f_getWinSizeX()<nSizeX) {		//0.235
					nPosX=0
				}
				else{
					nPosX = (oGFX.f_getWinSizeX()-nSizeX)/2;
				}
//top.status += nPosX +"="+oGFX.f_getWinSizeX()+"-"+nSizeX + "/"

			}
			if ( IsNull(nPosY) ) {
				if (oGFX.f_getWinSizeY()<nSizeY) {		//0.235
					nPosY=0
				}
				else{
					nPosY = (oGFX.f_getWinSizeY()-nSizeY)/2;
				}
			}

//alert (nPosX+"\n"+nPosY+"\n"+ document.documentElement["scrollTop"]+"\n"+this.m_oDIV.style.top  )
			if (nPosX<0) {
				nPosX=0
			}
			if (nPosY<0) {
				nPosY=0
			}
			if (nPosX!=0) {		//0.235
				nPosX += (document.documentElement && document.documentElement["scrollLeft"])? document.documentElement["scrollLeft"] : document.body["scrollLeft"];
			}
			if (nPosY!=0) {		//0.235
				nPosY += (document.documentElement && document.documentElement["scrollTop"]) ? document.documentElement["scrollTop"]  : document.body["scrollTop"];
			}
			this.m_oDIV.style.left = parseInt(nPosX)+"px";
			this.m_oDIV.style.top  = parseInt(nPosY)+"px";
	}

	this.m_stAutoPos = null;
	this.f_autoPos = function ( nSizeX, nSizeY, bMove ) {
		var oThis = this;
		this.f_setPos( nSizeX, nSizeY, null, null );
		if (!bMove) {
			this.m_stAutoPos = setTimeout( function (){ oThis.f_autoPos(nSizeX, nSizeY); }, 1000 );
		}
	}

	this.f_swapLockUnlock = function () {
		if ( this.m_bMove ) this.m_bMove = 0;
		else  this.m_bMove = 1;
	}

	this.f_initDrag = function () {
		if ( this.m_bMove ) {
			var oDIV = this.m_oDIV;
			//if ( !IsNull(GetElement(this.m_sIFrameId)) ) GetElement(this.m_sIFrameId).style.visibility = "hidden";
			if ( !IsNull(GetElement(this.m_sIFrameId)) ) GetElement(this.m_sIFrameId).style.visibility = "hidden";
			oGFX.f_opacity(this.m_oDIV, 60);
			var nPosX = oGFX.f_getPosX(oDIV);
			var nPosY = oGFX.f_getPosY(oDIV);
			this.m_nDifX = oIGZ.m_nMouseX-nPosX;
			this.m_nDifY = oIGZ.m_nMouseY-nPosY;
			this.m_bActive = 1;
			this.f_onMouseMoveOld = oIGZ.f_onMouseMove;
		}
	}

	this.f_move = function () {
		if ( this.m_bActive && this.m_bMove ) {
			var nIman = 15;
			var nPosX = oIGZ.m_nMouseX-this.m_nDifX;
			var nPosY = oIGZ.m_nMouseY-this.m_nDifY;

			if ( nPosX<oGFX.f_getScrollX()+nIman ) nPosX = oGFX.f_getScrollX();
			else if ( nPosX+oGFX.f_getSizeX(this.m_oDIV)>oGFX.f_getFrameSizeX()+oGFX.f_getScrollX()-nIman ) nPosX = oGFX.f_getFrameSizeX()+oGFX.f_getScrollX()-oGFX.f_getSizeX(this.m_oDIV);
			this.m_oDIV.style.left = nPosX;

			if ( nPosY<oGFX.f_getScrollY()+nIman ) nPosY = oGFX.f_getScrollY();
			else if ( nPosY+oGFX.f_getSizeY(this.m_oDIV)>oGFX.f_getFrameSizeY()+oGFX.f_getScrollY()-nIman ) nPosY = oGFX.f_getFrameSizeY()+oGFX.f_getScrollY()-oGFX.f_getSizeY(this.m_oDIV);
			this.m_oDIV.style.top  = nPosY;
		}
	}

	this.f_stopDrag = function () {
		if ( !IsNull(this.m_oDIV) ) {
			if ( this.m_bActive==1 ) {
				// if ( !IsNull(GetElement(this.m_sIFrameId)) ) GetElement(this.m_sIFrameId).style.visibility = "visible";
				if ( !IsNull(GetElement(this.m_sIFrameId)) ) GetElement(this.m_sIFrameId).style.visibility = "visible";
				oGFX.f_opacity(this.m_oDIV, 100);
				this.m_bActive = 0;
				oIGZ.f_onMouseMove = this.f_onMouseMoveOld;
			}
		}
	}

	this.m_bResizeActive = 0;
	this.f_initResizeDrag = function (oObj, bX, bY){
		if ( this.m_bResize ) {
			// if ( !IsNull(GetElement(this.m_sIFrameId)) ) GetElement(this.m_sIFrameId).style.visibility = "hidden";
			if ( !IsNull(GetElement(this.m_sIFrameId)) ) GetElement(this.m_sIFrameId).style.visibility = "hidden";
			oGFX.f_opacity(this.m_oDIV, 60);
			var nPosX = oGFX.f_getPosX(oObj);
			var nPosY = oGFX.f_getPosY(oObj);
			this.m_nDifX = (oIGZ.m_nMouseX-nPosX)+oGFX.f_getSizeX(oObj);
			this.m_nDifY = (oIGZ.m_nMouseY-nPosY)+oGFX.f_getSizeY(oObj)+oGFX.f_getSizeY(GetElement("TD_"+this.m_sBaseId+"_TOP"));
			if ( bX ) this.m_bResizeActiveX = 1;
			if ( bY ) this.m_bResizeActiveY = 1;
			this.f_onMouseMoveOld = oIGZ.f_onMouseMove;
		}
	}

	this.f_resize = function () {
		var oIFrame = GetElement(this.m_sIFrameId);
		if ( this.m_bResizeActiveX ) {
			var nPosX  = oIGZ.m_nMouseX-this.m_nDifX;			
			var nSizeX = nPosX-parseInt(this.m_oDIV.style.left);
			GetElement(this.m_sIFrameId).width  = nSizeX;
		}
		
		if ( this.m_bResizeActiveY ) {
			var nPosY  = oIGZ.m_nMouseY-this.m_nDifY;
			var nSizeY = nPosY-parseInt(this.m_oDIV.style.top);

			GetElement(this.m_sIFrameId).height = nSizeY;
		}
	}
	this.f_stopResizeDrag = function (){
		if ( this.m_bResizeActiveX==1 || this.m_bResizeActiveY==1 ) {
			oGFX.f_opacity(this.m_oDIV, 100);
			// if ( !IsNull(GetElement(this.m_sIFrameId)) ) GetElement(this.m_sIFrameId).style.visibility = "visible";
			if ( !IsNull(GetElement(this.m_sIFrameId)) ) GetElement(this.m_sIFrameId).style.visibility = "visible";
			this.m_bResizeActiveX = 0;
			this.m_bResizeActiveY = 0;
			oIGZ.f_onMouseMove = this.f_onMouseMoveOld;
		}
	}

	this.f_close = function (bNoEventOnClose) {
		if ( !IsNull(this.m_oDIV) ) {
			clearInterval(this.m_stAutoPos);
			clearInterval(this.m_stMouseMove);

//GetElement(this.m_sIFrameId).onunload = function (){IWIN.f_closed(9); }
//		if (oIFrame && oIFrame.contentWindow && oIFrame.contentWindow.document && oIFrame.contentWindow.document.body) {
//GetElement(this.m_sIFrameId)).contentWindow.g_bAvisarCambios)

			oIGZ.f_removeEventListener (GetElement(this.m_sIFrameId).contentWindow,'unload',CloseIWIN_event,false);		//0.243

			IWIN_PARENT_TEMP = GetElement(this.m_sIFrameId).contentWindow
			IWIN_CLOSE_TEMP = this;	//0.241
			IWIN_NO_EVENT_TEMP = bNoEventOnClose;	//0.241

			oIGZ.f_addEventListener (IWIN_PARENT_TEMP,'unload',CloseIWIN_event,false);

/*
			 if (window.addEventListener){
				GetElement(this.m_sIFrameId).contentWindow.window.addEventListener('unload',function (){ IWIN_CLOSE_TEMP.f_closed(bNoEventOnClose)},false);
			}
			else if(window.attachEvent) {	//IE7
				GetElement(this.m_sIFrameId).contentWindow.window.attachEvent ('onunload',function(){IWIN_CLOSE_TEMP.f_closed(bNoEventOnClose);});
			}
			else {					// Navegadores antiguos
				GetElement(this.m_sIFrameId).contentWindow.onunload = function (){ IWIN_CLOSE_TEMP.f_closed(bNoEventOnClose)}
			}

*/
			
			if ( !IsNull(GetElement(this.m_sIFrameId)) ) {
				GetElement(this.m_sIFrameId).src = "about:blank";
			}

// alert( GetElement(this.m_sIFrameId).contentWindow.g_salirSinGuardar );			
/*
			oShield.f_off(1);
			// this.m_oDIV.style.visibility = "hidden";
			this.m_oDIV.style.display = "none";
			this.m_oDIV.style.left = 0;
			this.m_oDIV.style.top  = 0;
*/

// document.focus();
//			if (!bNoEventOnClose) this.f_onClose();

/*
			var oThis = this;

			setTimeout( function () {
							if ( !IsNull(GetElement(oThis.m_sIFrameId)) ) {
								GetElement(oThis.m_sIFrameId).src = "about:blank";
							}
						}
					, 100
					);
	*/				
			setTimeout ( function (){		//0.243
					oIGZ.f_removeEventListener (IWIN_PARENT_TEMP,'unload',CloseIWIN_event,false);
				}
				,100		
			)	//0.247 si ponemos 10 falla en FF3.05

		}

	}
	
	this.f_closed = function (bNoEventOnClose){	//0.241 no llamar nunca, se usa desde f_close
		oShield.f_off(1);
		// this.m_oDIV.style.visibility = "hidden";
		this.m_oDIV.style.display = "none";
		this.m_oDIV.style.left = 0;
		this.m_oDIV.style.top  = 0;
		
		if (!bNoEventOnClose) {
			this.f_onClose();
		}
	}
	
}

function CloseIWIN_event () {
	IWIN_CLOSE_TEMP.f_closed(IWIN_NO_EVENT_TEMP)
}

/********************************************/
/*************** IWinSelector ***************/
/********************************************/

/** Definición de Selectores
	sSelectorName : Nombre único de este selector
	oIWin		  : Objeto IWin que se usará para abrir el selector
	sTitle		  : Titulo que aparecerá tanto en la ventana como en el texto emergente del icono
	sUrl		  : Url de la página (normalmente de búsqueda) donde estará la llamada "parent.IWinSelector.f_select(g_idUnique, maData)"
	nSizeX		  : Ancho de la ventana IWin
	nSizeY		  : Ancho de la ventana IWin
	sCampoValor	  : Nombre del campo
	sExml		  :
	sHtmlIcon	  :
	IWinSelector.f_add("User", "Selector de usuario", oIGZ.m_sRootPath+"iwin/user.jsp", 400, 300, "nsIdUser@WIPersona", "<BD>nsNombreCompleto@WIPersona</BD>", oWinShield, oIGZ.f_drawItem("SELECTOR_IWIN") );

	Pintado de Selectores
		En JS  : "..."+IWinSelector.f_draw("n_fkIdUsuarioAprobador@Procedimiento", "<BD>nsUsuarioAprobador@Procedimiento</BD>", "User", [sExtra])+"...";
		En HTML: <SCRIPT>IWinSelector.f_print("n_fkIdUsuarioAprobador@Procedimiento", "<BD>nsUsuarioAprobador@Procedimiento</BD>", "User", [sExtra]);</SCRIPT>

	Hay que recoger siempre el parámetro "iWinSelector_idUnique"
	y que una vez el usuario haya seleccionado un elemento hacer
	parent.
	Ej. JAVA
		<%
		Integer idUnique = IntegerUtils.valueOf(request.getParameter("iWinSelector_idUnique"));	// deprecated
		%>
		...
		<SCRIPT>
		g_idUnique = <%=idUnique%>	// deprecated
		...
		parent.IWinSelector.f_select(g_idUnique, maData); 	// deprecated

		parent.IWinSelector.f_selectOne(maData);
		parent.IWinSelector.f_selectMultiple(maData);

		function Init(){
			...
			IWinSelector.f_init(maData, maForm);
		}

		</SCRIPT>
**/


IWinSelector = new function (){
	this.m_sObj 	= "IWinSelector";
	this.m_nVersion = 0.05;
	this.m_sKeyName = "["+this.m_sObj+" v"+this.m_nVersion+"] ";

	this.m_nIdUniqueActive = null;
	this.m_maSelectores = new MArray(["sSelectorName", "oIWin", "sTitle", "sUrl", "nSizeX", "nSizeY", "sCampoValor", "sExml", "sHtmlIcon", "sHtmlIconBorrar"], []);

	this.f_add = function (sSelectorName, oIWin, sTitle, sUrl, nSizeX, nSizeY, sCampoValor, sExml, sHtmlIcon, sHtmlIconBorrar){
		this.m_maSelectores.f_addRow([sSelectorName, oIWin, sTitle, sUrl, nSizeX, nSizeY, sCampoValor, sExml, sHtmlIcon, sHtmlIconBorrar]);
	}

	this.m_nInputSelectorC = 0;
	this.m_maInputSelector = new MArray(["idUnique", "sInputTextName", "sInputValueName", "sSelectorName"], []);

/**
 * @description Genera el código HTML del selector.
 *
 * @param {string} sInputTextName Valor que tendrá el atributo id y name del input.
 * @param {string} sInputValueName Valor que tendrá el name del input oculto. (Su id será: "INPUT_" + sInputValueName)
 * @param {string} sSelectorName Nombre del selector.
 * @param {string} sExtra Código HTML que se añadirá al tag del input.
 *
 * @example
 *
 * IWinSelector.f_draw("nsNombre", "n_fkIdUsuario", "User");
 *
 */
	this.f_draw =  function (sInputTextName, sInputValueName, sSelectorName, sExtra){
		var idUnique = ++this.m_nInputSelectorC;
		var sIcon  = this.m_maSelectores.f_getValIf("sSelectorName", sSelectorName, "sHtmlIcon");
		var sIconBorrar  = this.m_maSelectores.f_getValIf("sSelectorName", sSelectorName, "sHtmlIconBorrar");
		var sTitle = this.m_maSelectores.f_getValIf("sSelectorName", sSelectorName, "sTitle");
		this.m_maInputSelector.f_addRow([idUnique, sInputTextName, sInputValueName, sSelectorName]);
		if ( !sExtra )  sExtra = "class='IWinSelector'";
		var sHTML = "<TABLE cellpadding=0 cellspacing=0 border=0 style='display: inline;'><TR>"
				  + "<TD><INPUT readonly type='text' id='INPUT_"+sInputTextName+"' name='"+sInputTextName+"' "+ sExtra +" /></TD>"
				  + "<TD onclick='IWinSelector.f_open("+idUnique+")' style='cursor: pointer;' onmouseover='FHON(this)' onmouseout='FHOFF()' fh_tit='"+sTitle+"'>"+sIcon+"</TD>"
				  + "<TD onclick='IWinSelector.f_clear("+idUnique+")' style='cursor: pointer;' onmouseover='FHON(this)' onmouseout='FHOFF()' fh_tit='borrar'>"+sIconBorrar+"</TD>"
				  + "</TR></TABLE><INPUT type='hidden' name='"+sInputValueName+"' id='INPUT_"+sInputValueName+"' />"
				  ;
		return sHTML;
	}
	
/**
 * @description Pinta el selector, el input con sus correspondientes botones.
 *
 * @param {string} sInputTextName Valor que tendrá el atributo id y name del input.
 * @param {string} sInputValueName Valor que tendrá el name del input oculto. (Su id será: "INPUT_" + sInputValueName)
 * @param {string} sSelectorName Nombre del selector.
 * @param {string} sExtra Código HTML que se añadirá al tag del input.
 *
 * @example
 *
 * IWinSelector.f_print("nsNombre", "n_fkIdUsuario", "User");
 *
 */
	this.f_print = function (sInputTextName, sInputValueName, sSelectorName, sExtra){
		document.write( this.f_draw(sInputTextName, sInputValueName, sSelectorName, sExtra) );
	}

	this.f_open = function (idUnique){
		var sSelectorName = this.m_maInputSelector.f_getValIf("idUnique", idUnique, "sSelectorName");

		// Datos del selector
		var nReg 	 = this.m_maSelectores.f_getReg("sSelectorName", sSelectorName);
		var sTitle 	 = this.m_maSelectores.f_getVal("sTitle", nReg);
		var sUrl   	 = this.m_maSelectores.f_getVal("sUrl", nReg);
		if(sUrl.indexOf("?")==-1) sUrl+="?";
		else sUrl+="&";
		sUrl+= "iWinSelector_idUnique="+idUnique;
		var nSizeX 	 = this.m_maSelectores.f_getVal("nSizeX", nReg);
		var nSizeY 	 = this.m_maSelectores.f_getVal("nSizeY", nReg);

		var oIWin = this.m_maSelectores.f_getVal("oIWin", nReg);
		oIWin.f_open(sTitle, sUrl, nSizeX, nSizeY);
		this.m_nIdUniqueActive = idUnique;
	}

	// deprecated
	this.f_select = function (idUnique, maData, bClose){
		// Datos del input
		var nReg = this.m_maInputSelector.f_getReg("idUnique", idUnique);
		var sSelectorName   = this.m_maInputSelector.f_getVal("sSelectorName", nReg);
		var sInputTextName  = this.m_maInputSelector.f_getVal("sInputTextName", nReg);
		var sInputValueName = this.m_maInputSelector.f_getVal("sInputValueName", nReg);

		// Datos del selector
		nReg 	 		= this.m_maSelectores.f_getReg("sSelectorName", sSelectorName);
		var sCampoValor = this.m_maSelectores.f_getVal("sCampoValor", nReg);
		var sExml	    = this.m_maSelectores.f_getVal("sExml", nReg);
		GetElement("INPUT_"+sInputValueName).value = maData.f_getVal(sCampoValor, 0);
		GetElement("INPUT_"+sInputTextName).value  = oIEXML.f_parseEXMLs(sExml, maData, 0);
		if ( bClose ) {
			this.m_maSelectores.f_getVal("oIWin", nReg).f_close();
		}
	}

	this.f_selectOne = function (maData, bClose){
		this.f_privateSelect(maData, bClose, 1);
	}

	this.f_selectMultiple = function (maData, bClose, nResultados){
		this.f_privateSelect(maData, bClose, nResultados);
	}

	this.f_privateSelect = function (maData, bClose, nResultados){
		// Datos del input
		var nReg = this.m_maInputSelector.f_getReg("idUnique", this.m_nIdUniqueActive);
		var sSelectorName   = this.m_maInputSelector.f_getVal("sSelectorName", nReg);
		var sInputTextName  = this.m_maInputSelector.f_getVal("sInputTextName", nReg);
		var sInputValueName = this.m_maInputSelector.f_getVal("sInputValueName", nReg);

		// Datos del selector
		nReg 	 		= this.m_maSelectores.f_getReg("sSelectorName", sSelectorName);
		var sCampoValor = this.m_maSelectores.f_getVal("sCampoValor", nReg);
		var sExml	    = this.m_maSelectores.f_getVal("sExml", nReg);
		
		if ( !nResultados || nResultados > maData.f_length() ) nResultados = maData.f_length();
		GetElement("INPUT_"+sInputValueName).value = maData.f_getVal(sCampoValor, 0);
		GetElement("INPUT_"+sInputTextName).value  = oIEXML.f_parseEXMLs(sExml, maData, 0);
		for ( var f=1, F=nResultados; f<F; f++ ) {
			GetElement("INPUT_"+sInputValueName).value += ","+maData.f_getVal(sCampoValor, f);
			GetElement("INPUT_"+sInputTextName).value  += ","+oIEXML.f_parseEXMLs(sExml, maData, f);
		}
		if(bClose){
			this.m_maSelectores.f_getVal("oIWin", nReg).f_close();
			this.m_nIdUniqueActive = null;
		}
	}
	this.f_clear=function(idUnique){
		var nReg = this.m_maInputSelector.f_getReg("idUnique", idUnique);
		var sSelectorName   = this.m_maInputSelector.f_getVal("sSelectorName", nReg);
		var sInputTextName  = this.m_maInputSelector.f_getVal("sInputTextName", nReg);
		var sInputValueName = this.m_maInputSelector.f_getVal("sInputValueName", nReg);
//		GetElement("INPUT_"+sInputValueName).value = null;
		GetElement("INPUT_"+sInputValueName).value = "";
		GetElement("INPUT_"+sInputTextName).value  = "";
	}
}


//
// HTML Groups (Como un FIELDSET pero plegable)
//
// <SCRIPT>IGroup.f_printGroupIni(sGroupName, sTitle, sXtra, bFixed, f_onOpen, f_onClose, a_sNamesValuesConfig)</SCRIPT>
// ...
// ...
// <SCRIPT>IGroup.f_printGroupEnd(sGroupName)</SCRIPT>
IGroup = new function () {
	this.m_sObj     = "IGroup";
	this.m_nVersion = 0.18;
	this.m_sKeyName = "["+this.m_sObj+" v"+this.m_nVersion+"] ";

	// Config [
	//
	this.m_maConfig = [["nBorderColor", "hBorderColor"
					 ,"HtmlInner_Fold", "HtmlInner_Unfold", "HtmlInner_GoTop", "HtmlInner_HiddenMsg"
					 ,"ClassName_Title", "ClassName_FoldUnfold", "ClassName_GoTop", "ClassName_HiddenMsg", "ClassName_Inner"
					 ]
					,[1, "#000000"
					  ,"[-]", "[+]", "", "[ Ocultando contenido, pulsa aquí para mostrarlo ]"
					  ,"IGroupTitle", "IGroupFoldUnfold", "IGroupGoTop", "IGroupHiddenMsg", "IGroupInner"

					 ]
					];
	this.f_setConfig = function ( a_sNamesValues ) {
		for ( var f=0, F=a_sNamesValues.length; f<F; f+=2 ) {
			this.m_maConfig.f_maSetVal(a_sNamesValues[f], a_sNamesValues[f+1], 0);
		}
	}
	this.f_getConfig = function ( sGroupName, sName ) {
		var maOwnConfig = this.f_getGroup (sGroupName, "maOwnConfig");
		return maOwnConfig.f_maGetVal(sName, 0);
	}
	//
	// ] Config


	// Manager [
	//
	this.m_maHtmlGroups = [["sGroupName", "sTitle", "bFixed", "f_onOpen", "f_onClose", "maOwnConfig", "bBuildEnd"], []];
	this.f_addGroup = function (sGroupName, sTitle, bFixed, f_onOpen, f_onClose, a_sNamesValuesConfig,bRedraw) {
		var nReg = this.m_maHtmlGroups.f_maGetReg("sGroupName", sGroupName);
		if (!bRedraw && nReg!=-1 ) ErrorJS(this.m_sKeyName+"- Ya existe un IGroup con el nombre '"+sGroupName+"'. (Usar bRedraw si necesira repintarlo)");
		else {
			var maOwnConfig = this.m_maConfig;
			this.m_maHtmlGroups.f_maNewRow([sGroupName, sTitle, bFixed, f_onOpen, f_onClose, maOwnConfig, 0]);
			if ( a_sNamesValuesConfig ) {
				for ( var f=0, F=a_sNamesValuesConfig.length; f<F; f+=2 ) {
					maOwnConfig.f_maSetVal(a_sNamesValuesConfig[f], a_sNamesValuesConfig[f+1], 0);
				}
				this.m_maHtmlGroups.f_maSetVal("maOwnConfig",maOwnConfig, this.m_maHtmlGroups.f_maGetRegs()-1);
			}
		}
	}
	this.f_getGroup = function (sGroupName, sName) {
		var vValue = null;
		var nReg = this.m_maHtmlGroups.f_maGetReg("sGroupName", sGroupName);
		if ( nReg==-1 ) ErrorJS(this.m_sKeyName+"- No existe ningún IGroup con el nombre '"+sGroupName+"'");
		else {
			vValue = this.m_maHtmlGroups.f_maGetVal(sName, nReg);
		}
		return vValue;
	}
	this.f_endGroup = function (sGroupName) {
		var nReg = this.m_maHtmlGroups.f_maGetReg("sGroupName", sGroupName);
		if ( nReg==-1 ) ErrorJS(this.m_sKeyName+"- No existe ningún IGroup con el nombre '"+sGroupName+"'");
		else {
			this.m_maHtmlGroups.f_maSetVal("bBuildEnd", 1, nReg);
		}
	}
	//
	// ] Manager


	// Construcción [
	//
	this.f_printGroupIni = function (sGroupName, sTitle, sXtra, bFixed, f_onOpen, f_onClose, a_sNamesValuesConfig, bRedraw) { document.write( this.f_drawGroupIni(sGroupName, sTitle, sXtra, bFixed, f_onOpen, f_onClose, a_sNamesValuesConfig, bRedraw) ); }
	this.f_drawGroupIni  = function (sGroupName, sTitle, sXtra, bFixed, f_onOpen, f_onClose, a_sNamesValuesConfig, bRedraw) {
		this.f_addGroup(sGroupName, sTitle, bFixed, f_onOpen, f_onClose, a_sNamesValuesConfig,bRedraw);

		var nBorderColor		  = this.f_getConfig( sGroupName, "nBorderColor" );
		var hBorderColor 	 	  = this.f_getConfig( sGroupName, "hBorderColor" );
		var sClassName_Title 	  = this.f_getConfig( sGroupName, "ClassName_Title");
		var sClassName_FoldUnfold = this.f_getConfig( sGroupName, "ClassName_FoldUnfold" );
		var sClassName_GoTop 	  = this.f_getConfig( sGroupName, "ClassName_GoTop" );
		var sClassName_HiddenMsg  = this.f_getConfig( sGroupName, "ClassName_HiddenMsg" );
		var sClassName_Inner  	  = this.f_getConfig( sGroupName, "ClassName_Inner" );
		var sInnerFold  	= this.f_getConfig( sGroupName, "HtmlInner_Fold");
		if(bFixed==-1) sInnerFold  	= this.f_getConfig( sGroupName, "HtmlInner_Unfold");
		var sInnerHiddenMsg = this.f_getConfig( sGroupName, "HtmlInner_HiddenMsg");

		var sIdFoldUnfoldTop = "TD_IGroup_"+sGroupName+"_FoldUnfold_Top";
		var sIdHiddenMsg 	 = "SPAN_IGroup_"+sGroupName+"_Msg";

		var sHTML = "";

		sHTML += "<DIV "+sXtra+" ><A name='"+sGroupName+"'></A>"
			   + "<TABLE cellpadding=0 cellspacing=0 border=0 width='100%'>"
			   ;

		// Header
		sHTML += "<TR><TD colspan=3 style='padding: 0px;'>"
			   + "<TABLE cellpadding=0 cellspacing=0 border=0 width='100%'>"
			   + "<TR>"
			   + "<TD>&#160;</TD>"
			   + "<TD rowspan=2 style='vertical-align: middle; white-space: nowrap;' class='"+sClassName_Title+"'>"+sTitle+"</TD>"
			   + "<TD width='100%'>&#160;</TD>"
			   ;
		if ( bFixed==1 ) {
			sHTML += "<TD>&#160;</TD>";
		}
		else {
			sHTML += "<TD id='"+sIdFoldUnfoldTop+"' rowspan=2 style='vertical-align: middle; cursor: pointer; white-space: nowrap;' onclick='"+this.m_sObj+".f_foldUnfold(\""+sGroupName+"\")' >"+sInnerFold+"</TD>";
		}
		sHTML += "<TD>&#160;</TD>"
		       + "</TR>"
			   + "<TR>"
			   + "<TD style='border-top: "+nBorderColor+"px solid "+hBorderColor+"; border-left: "+nBorderColor+"px solid "+hBorderColor+";'>&#160;</TD>"
			   + "<TD style='border-top: "+nBorderColor+"px solid "+hBorderColor+";'>&#160;</TD>"
			   ;
		if ( bFixed==1 ) {
			sHTML += "<TD style='border-top: "+nBorderColor+"px solid "+hBorderColor+";'>&#160;</TD>"
		}
		sHTML += "<TD style='border-top: "+nBorderColor+"px solid "+hBorderColor+"; border-right: "+nBorderColor+"px solid "+hBorderColor+";'>&#160;</TD>"
			   + "</TR>"
			   + "</TABLE>"
			   ;
		sHTML += "</TD></TR>";

		sHTML += "<TR>"
			   + "<TD style='border-left: 1px solid "+hBorderColor+";'>&#160;</TD>"
			   + "<TD>"
			   + "<TABLE cellpadding=0 cellspacing=0 border=0 id='"+sIdHiddenMsg+"' style='"+((bFixed==-1)? "" : "display:none;")+"' width='100%'><TR>"
			   + "<TD onclick='"+this.m_sObj+".f_foldUnfold(\""+sGroupName+"\")' style='cursor: pointer;' class='"+sClassName_HiddenMsg+"'>"+sInnerHiddenMsg+"</TD>"
			   + "</TR></TABLE>"
			   + "<SPAN id='SPAN_IGroup_"+sGroupName+"_Inner' class='"+sClassName_Inner+"' style='"+((bFixed==-1)? "display:none;" : "")+"'>"
			   ;

		return sHTML;
	}
	this.f_printGroupEnd = function (sGroupName) { document.write( this.f_drawGroupEnd(sGroupName) ); }
	this.f_drawGroupEnd = function (sGroupName) {
		this.f_endGroup(sGroupName);
		var bFixed = this.f_getGroup( sGroupName, "bFixed");

		var nBorderColor		  = this.f_getConfig( sGroupName, "nBorderColor" );
		var hBorderColor 	 	  = this.f_getConfig( sGroupName, "hBorderColor" );
		var sClassName_FoldUnfold = this.f_getConfig( sGroupName, "ClassName_FoldUnfold" );
		var sClassName_GoTop 	  = this.f_getConfig( sGroupName, "ClassName_GoTop" );
		var sInnerGoTop  		  = this.f_getConfig( sGroupName, "HtmlInner_GoTop");
		var sInnerFold  		  = this.f_getConfig( sGroupName, "HtmlInner_Fold");
		if(bFixed==-1) sInnerFold  	= this.f_getConfig( sGroupName, "HtmlInner_Unfold");
	

		var sIdFoldUnfoldBottom = "TD_IGroup_"+sGroupName+"_FoldUnfold_Bottom";

		var sHTML = "";
		sHTML = "</SPAN></TD>"
			  + "<TD style='border-right: "+nBorderColor+"px solid "+hBorderColor+";'>&#160;</TD>"
			  + "</TR>"
			  ;

		// Bottom
		sHTML += "<TR><TD colspan=3 style='padding: 0px;'>"
			   + "<TABLE cellpadding=0 cellspacing=0 border=0 width='100%'>"
			   + "<TR>"
			   + "<TD style='border-bottom: "+nBorderColor+"px solid "+hBorderColor+"; border-left: "+nBorderColor+"px solid "+hBorderColor+";'>&#160;</TD>"
			   + "<TD rowspan=2 style='vertical-align: middle; white-space: nowrap; cursor: pointer;' class='"+sClassName_GoTop+"' onclick='"+this.m_sObj+".f_goTop(\""+sGroupName+"\")' >"+sInnerGoTop+"</TD>"
			   + "<TD style='border-bottom: "+nBorderColor+"px solid "+hBorderColor+";' width='100%'>&#160;</TD>"
			   ;
		if ( bFixed==1 ) {
			sHTML += "<TD style='border-bottom: "+nBorderColor+"px solid "+hBorderColor+";'>&#160;</TD>";
		}
		else {
			sHTML += "<TD id='"+sIdFoldUnfoldBottom+"' rowspan=2 style='vertical-align: middle; cursor: pointer; white-space: nowrap;' onclick='"+this.m_sObj+".f_foldUnfold(\""+sGroupName+"\")' >"+sInnerFold+"</TD>";
		}
		sHTML += "<TD style='border-bottom: "+nBorderColor+"px solid "+hBorderColor+"; border-right: "+nBorderColor+"px solid "+hBorderColor+";'>&#160;</TD>"
		       + "</TR>"
			   + "<TR>"
			   + "<TD>&#160;</TD>"
			   + "<TD>&#160;</TD>"
			   + "<TD>&#160;</TD>"
			   + "</TR>"
			   + "</TABLE>"
			   ;
		sHTML += "</TD></TR>";

		sHTML += "</TABLE></DIV>";

		return sHTML;
	}
	//
	// ] Construcción


	// Funcionalidades [
	//
	this.f_goTop = function (sGroupName) {
		document.location.href="#"+sGroupName;
	}
	this.f_foldUnfold = function (sGroupName) {
		var nReg 		= this.m_maHtmlGroups.f_maGetReg("sGroupName", sGroupName);
		var oInner      	  = GetElement("SPAN_IGroup_"+sGroupName+"_Inner");
		var oFoldUnfoldTop 	  = GetElement("TD_IGroup_"+sGroupName+"_FoldUnfold_Top");
		var oFoldUnfoldBottom = GetElement("TD_IGroup_"+sGroupName+"_FoldUnfold_Bottom");
		var oMsg        	  = GetElement("SPAN_IGroup_"+sGroupName+"_Msg");

		if ( oInner.style.display=="none" ) {
			var sInnerFold  	= this.f_getConfig( sGroupName, "HtmlInner_Fold");
			oFoldUnfoldTop.innerHTML 	= sInnerFold;
			oFoldUnfoldBottom.innerHTML = sInnerFold;

			oMsg.style.display   = "none";
			oInner.style.display = "";
			var f_open = this.f_getGroup( sGroupName, "f_onOpen" );
			if ( f_open ) f_open();
		}
		else {
			var sInnerUnfold  	= this.f_getConfig( sGroupName, "HtmlInner_Unfold");
			oFoldUnfoldTop.innerHTML 	= sInnerUnfold;
			oFoldUnfoldBottom.innerHTML = sInnerUnfold;

			oInner.style.display = "none";
			oMsg.style.display   = "";
			oInner.height = 0;
			var f_close = this.f_getGroup( sGroupName, "f_onClose" );
			if ( f_close ) f_close();
		}
	}
	//
	// ] Funcionalidades
}

// EBar
//
//
oEBar = new function (){
	this.m_a_oEBars = [];
	this.f_draw = function (sObj, nPercent, nSizeX, nSizeY, sFill, sVoid, nAnimStepK){
		eval(sObj+" = new EBar(sObj, nPercent, nSizeX, nSizeY, sFill, sVoid, nAnimStepK);");
		this.m_a_oEBars.push( eval(sObj) );
		return ( eval(sObj+".f_draw()") );
	}
	this.f_print = function (sObj, nPercent, nSizeX, nSizeY, sFill, sVoid, nAnimStepK){
		document.write( this.f_draw(sObj, nPercent, nSizeX, nSizeY, sFill, sVoid, nAnimStepK) );
	}
	this.f_refreshAll = function (){
		var f = -1, F = this.m_a_oEBars.length;
		while (++f<F) {
			this.m_a_oEBars[f].f_init();
		}
	}
}

function EBar(sObj, nPercent, nSizeX, nSizeY, sFill, sVoid, nAnimStepK){
	this.m_sObj	    = sObj;

	this.m_nPercent = nPercent;
	this.m_nSizeX   = nSizeX;
	this.m_nSizeY   = nSizeY;
	this.m_sFill    = sFill;
	this.m_sVoid    = sVoid;

	if ( isNaN(this.m_nPercent)
	  || String(this.m_nPercent).toUpperCase()=="INFINITY"
	){
		this.m_nPercent=0;
	}
	if (this.m_nPercent>100) this.m_nPercent = 100;
	nPercent = this.m_nPercent;
	if (this.m_nPercent==0) nPercent=1;

	this.m_nSizeXFill = Math.ceil((this.m_nSizeX*nPercent)/100);

	this.m_nSizeXVoid = Math.ceil(this.m_nSizeX-this.m_nSizeXFill);
	if (this.m_nSizeXVoid==0) this.m_nSizeXVoid = 1;

	this.m_nAnimStepC = 0;
	this.m_nAnimStepK = nAnimStepK ? nAnimStepK : 0;

	this.m_oTDFill = null;
	this.m_oTDVoid = null;
	this.m_sTDFill = "TD_"+this.m_sObj+"_Fill";
	this.m_sTDVoid = "TD_"+this.m_sObj+"_Void";

	this.f_init = function (){
		this.m_oTDFill = document.getElementById(this.m_sTDFill);
		this.m_oTDVoid = document.getElementById(this.m_sTDVoid);

		if (!this.m_nAnimStepK){
			this.m_oTDFill.width = this.m_nSizeXFill;
			this.m_oTDVoid.width = this.m_nSizeXVoid;
		}
		else {
			var oObj = this;
			this.m_stAnim = setInterval(function (){ oObj.f_anim() }, 50);
		}
	}
	oIGZ.m_a_sStartUps.push(this.m_sObj+".f_init()");

	this.f_draw = function (){
		var sHTML = "";

		var sFill = (this.m_sFill.substring(0,1)=="#") ? "style='background-color: "+this.m_sFill+";'" : "class='"+this.m_sFill+"'";
		var sVoid = (this.m_sVoid.substring(0,1)=="#") ? "style='background-color: "+this.m_sVoid+";'" : "class='"+this.m_sVoid+"'";

		var nSizeXFill = this.m_nSizeXFill;
		var nSizeXVoid = this.m_nSizeXVoid;
		if (this.m_nAnimStepK>0) {
			nSizeXFill = 1;
			nSizeXVoid = this.m_nSizeX-1;
		}
		sHTML = "<TABLE cellpadding=0 cellspacing=0 border=0 width="+this.m_nSizeX+" height="+this.m_nSizeY+" title='"+this.m_nPercent+"%'>"
			  + "<TR><TD id='"+this.m_sTDFill+"' width="+nSizeXFill+" "+sFill+" nowrap></TD><TD id='"+this.m_sTDVoid+"' width="+nSizeXVoid+" "+sVoid+"></TD></TR>"
			  + "</TABLE>"
			  ;
		return (sHTML);
	}
	this.f_print = function (){
		document.write( this.f_draw() );
	}

	this.f_anim = function (){
		var nSizeXFill = Math.floor( (this.m_nSizeXFill/this.m_nAnimStepK)*this.m_nAnimStepC++ );
		if (nSizeXFill==0) nSizeXFill=1;
		var nSizeXVoid = this.m_nSizeX-nSizeXFill;
		if (nSizeXVoid==0) nSizeXVoid=1;

		this.m_oTDFill.width = nSizeXFill;
		this.m_oTDVoid.width = nSizeXVoid;

		if (this.m_nAnimStepC>=this.m_nAnimStepK) clearInterval(this.m_stAnim);
	}

}

