i_gfx_nVersion=0.181;

/*
	2006 IntelyGenZ  - www.intelygenz.com
	[DOC] 	 M:\ig_intelygenz\ig05_intranet\desarrollo\areas\dev\docs\i_gfx.txt
	[UPDATE] M:\ig_intelygenz\ig05_intranet\desarrollo\areas\dev\libs\js\i_gfx.js
*/

oIGZ.f_loadLib("i_gfx", i_gfx_nVersion);
oGFX = new function (){
	this.m_sObj	 	= "oGFX";
	this.m_nVersion = i_gfx_nVersion

	//
	// Utils
	//
	this.f_checkObjDOM = function ( vIdOrObjDOM ) {
		if ( GetType(vIdOrObjDOM) == String ) vIdOrObjDOM = GetElement(vIdOrObjDOM);
		return (vIdOrObjDOM);
	}

	//
	// 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 (oObjDOM){ oObjDOM = this.f_checkObjDOM(oObjDOM); return (window.width); }

	//Devuelve el tamaño y de la ventana actual
	this.f_getWinSizeY = function (oObjDOM){ oObjDOM = this.f_checkObjDOM(oObjDOM); return (window.height); }

	//Devuelve el tamaño x del frame actual
	this.f_getFrameSizeX = function (oObjDOM){ oObjDOM = this.f_checkObjDOM(oObjDOM); return (document.body.clientWidth); }

	//Devuelve el tamaño y del frame actual
	this.f_getFrameSizeY = function (oObjDOM){ oObjDOM = this.f_checkObjDOM(oObjDOM); return (document.body.clientHeight); }

	// 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);
	}
	//
	// 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();
		}
	}

	// 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_oElement,sDisplay) {
		var oElement
		if (!sDisplay) sDisplay = "none"
		if(!IsArray(a_oElement)) a_oElement=[a_oElement];
		for (f=0; f<a_oElement.length;f++) {
			oElement = this.f_checkObjDOM(a_oElement[f]);
			oElement.style.display = sDisplay;
		}
	}

//sColor,[nSizeX],[nSizeY],[nBorder],[sBorderColor]
	this.f_drawBox= function (sColor,nSizeX,nSizeY,nBorder,sBorderColor) {
		if (!nSizeX) nSizeX = 10
		if (!nSizeY) nSizeY = 10
		if (IsNull(nBorder)) nBorder = 1
		if (!sBorderColor) sBorderColor = "#000000"
		return "<IMG width="+nSizeX+" height="+nSizeY+" style='border:"+nBorder+" solid "+sBorderColor+";background-color:"+sColor+"' border=0>"
	}

	//
	// Utils ()
	//

	// FastHelper 3
	//
	this.m_oFH = new function () {
		this.m_sObj = "oGFX.m_oFH";
		this.m_sId  = "SPAN_GFX_FH";
		this.m_oObj = null;

		this.m_sEXML = "<TABLE cellpadding=4 cellspacing=0 border=0 style='border: 1px solid #CCCCCC; background-color: #F0F0F0; color: #424E4A;'>"
					 + "<TR>"
					 + "<TD nowrap><B><INNER /></B></TD>"
					 + "</TR>"
					 + "</TABLE>"
					 ;

		this.f_draw = function () { return ("<SPAN id='"+this.m_sId+"' style='position: absolute; cursor: default; z-index:100;'></SPAN>"); }
		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 g, G, f = -1, F = this.m_a_sTAGs.length;
			while ( ++f < F ) {
				sTAG = this.m_a_sTAGs[f];
				a_oElements = document.getElementsByTagName(sTAG);
				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) {
			clearTimeout(this.m_stHide);

			this.m_oObj.innerHTML  = this.m_sEXML.f_replace("<INNER />", sInner);

			var nPosX = oIGZ.m_nMouseX+10;
			var nPosY = oIGZ.m_nMouseY-10;

			if ( nPosX+oGFX.f_getSizeX(this.m_oObj) > oGFX.f_getFrameSizeX() ) nPosX = oIGZ.m_nMouseX-oGFX.f_getSizeX(this.m_oObj)-10;
			if ( nPosY+oGFX.f_getSizeY(this.m_oObj) > oGFX.f_getFrameSizeY() ) nPosY = oIGZ.m_nMouseY-oGFX.f_getSizeY(this.m_oObj)+10;

			this.m_oObj.style.left = nPosX;
			this.m_oObj.style.top  = nPosY;
			this.m_oObj.style.display = "";
		}
		this.m_stHide = null;
		this.f_hide = function () {
			var oObj = this.m_oObj;
			this.m_stHide = setTimeout( function () {
											oObj.innerHTML  = "";
											oObj.style.left = 0;
											oObj.style.top  = 0;
											oObj.style.display = "none";
										}
									  , 200
									  );
		}
	}
	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(); }

iGFX = oGFX; // Retro-compatibilidad




// 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);
	}

}


