/*******************************************************************************************
*	popUpMiniPopin( param1, param2, param3 ) -> first function 
*	param1: imagen q lo llama
*	param2: control a ser llenado al seleccionar un MiniPopin (param2.value = "#codColor";)
*	param3: funcion javascript, llamada al seleccionar un color
*	closeColor() -> last function

Example:
	OPEN: popUpMiniPopin(document.getElementById("div").innerHTML, document.getElementById("tdTitle"), false, "Title");
	CLOSE: closeMiniPopin();
******************************************************************************************* */

var miniPopin = {};

var xLeftMove = 0;
var yTopMove = 20;
var bAjaxIsMac = (navigator.appVersion.toLowerCase().indexOf("mac")!=-1);

miniPopin.mShadow = function(){
    document.getElementById( "divSwMiniPopin" ).style.display="block";
    document.getElementById( "divSwMiniPopin" ).style.border="solid 1px white";
    miniPopin.setOpacity( "divSwMiniPopin", 0 );
    var ibox_op_level = 4;
    setIboxOpacity = miniPopin.setOpacity;
    for (var i=0;i<=ibox_op_level;i++) {setTimeout("setIboxOpacity('divSwMiniPopin',"+i+")",70*i);}
}

miniPopin.posToCenter = function(elem, xx, yy )
{
	if ( xx == null ) xx = 0;
	if ( yy == null ) yy = 0;
	var scrollPos = new miniPopin.getScrollPos();
	var pageSize = new miniPopin.getPageSize();
	var emSize = new miniPopin.getElementSize(elem);
	var x = Math.round(pageSize.width/2) - (emSize.width /2) + scrollPos.scrollX;
	var y = Math.round(pageSize.height/2) - (emSize.height /2) + scrollPos.scrollY;	
	x = x + xx;
	y = y + yy;
	elem.style.left = x+'px';
	elem.style.top = y+'px';
}

miniPopin.getScrollPos = function()
{
	var docElem = document.documentElement;
	this.scrollX = self.pageXOffset || (docElem&&docElem.scrollLeft) || document.body.scrollLeft;
	this.scrollY = self.pageYOffset || (docElem&&docElem.scrollTop) || document.body.scrollTop;
}

miniPopin.getPageSize = function()
{
	var docElem = document.documentElement
	this.width = self.innerWidth || (docElem&&docElem.clientWidth) || document.body.clientWidth;
	this.height = self.innerHeight || (docElem&&docElem.clientHeight) || document.body.clientHeight;
}

miniPopin.getElementSize = function(elem)
{
	this.width = elem.offsetWidth ||  elem.style.pixelWidth;
	this.height = elem.offsetHeight || elem.style.pixelHeight;
}

miniPopin.maintPos = function() {
	var ibox = document.getElementById('divSwMiniPopin');
	var iboxBorder = document.getElementById('divSwMiniPopin');
	var box_w = document.getElementById('divSwMiniPopin');
	var pagesize = new miniPopin.getPageSize();
	var ua = navigator.userAgent;
	if(ua.indexOf("MSIE ") != -1) {box_w.style.width = pagesize.width+'px';} 
	else {box_w.style.width = pagesize.width-16+'px';}
	
	if(ua.indexOf("Opera/9") != -1) {box_w.style.height = document.body.scrollHeight+'px';}
	else {box_w.style.height = document.body.scrollHeight+0+'px';}
}
miniPopin.setOpacity = function (elemid,value)
{
		var e = document.getElementById(elemid);
		e.style.opacity = value/10;
		e.style.filter = 'alpha(opacity=' + value*10 + ')';
}
miniPopin.GetPageHeight = function()
{
	if (self.innerHeight) // all except Explorer
		screenY = self.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)	// Explorer 6 Strict Mode
		screenY = document.documentElement.clientHeight;
	else if (document.body) // other Explorers
		screenY = document.body.clientHeight;
	return screenY;
}

function hideElement(elmId, overDiv)
{
	if (document.all)
	{
		// Find the div's offsetTop and offsetLeft relative to the BODY tag.
		divLeft = overDiv.offsetLeft;
		divTop = overDiv.offsetTop;
		divParent = overDiv.offsetParent;
		if (divParent)
		{
			if (divParent.tagName)
			{
				while (divParent.tagName.toUpperCase() != "BODY")
				{
					divLeft  += divParent.offsetLeft;
					divTop   += divParent.offsetTop;
					divParent = divParent.offsetParent;
				}
			}
		}
		divBottom = divTop + overDiv.offsetHeight - 1;
		divRight = divLeft + overDiv.offsetWidth - 1;
		for (i=0; i<document.getElementsByTagName(elmId).length; i++)
		{
			obj = document.getElementsByTagName(elmId)[i];
			if (!obj || !obj.offsetParent)
			{
				continue;
			}
			// Find the element's offsetTop and offsetLeft relative to the BODY tag.
			objLeft   = obj.offsetLeft;
			objTop    = obj.offsetTop;
			objParent = obj.offsetParent;
			while (objParent.tagName.toUpperCase() != "BODY")
			{
				objLeft  += objParent.offsetLeft;
				objTop   += objParent.offsetTop;
				objParent = objParent.offsetParent;
			}
			objBottom = objTop + obj.offsetHeight - 1;
			objRight = objLeft + obj.offsetWidth - 1;
			if ((
				((objLeft >= divLeft) && (objLeft <= divRight)) ||
				(((objRight) >= divLeft) && (objRight <= divRight)) ||
				((objLeft <= divLeft) && (objRight >= divRight))
				)
				&&
				(
				((objTop >= divTop) && (objTop <= divBottom)) ||
				((objBottom >= divTop) && (objBottom <= divBottom)) ||
				((objTop <= divTop) && (objBottom >= divBottom))
				))
			{
				obj.style.visibility = "hidden";
			}
		}
	}
}
function showElement(elmId)
{
	if (document.all)
	{
		for (i=0; i<document.getElementsByTagName(elmId).length; i++)
		{
			obj = document.getElementsByTagName(elmId)[i];	  
			if (!obj || !obj.offsetParent)
			{
				continue;
			}
			obj.style.visibility = "";
		}
	}
}
function hideDivScroll(overDiv,sShowClass,sHideClass)
{
	// Find the div's offsetTop and offsetLeft relative to the BODY tag.
	divLeft = overDiv.offsetLeft;
	divTop = overDiv.offsetTop;
	divParent = overDiv.offsetParent;
	if (divParent)
	{
		if ( divParent.tagName )
		{
			while ( divParent.tagName.toUpperCase() != "BODY" )
			{
				divLeft  += divParent.offsetLeft;
				divTop   += divParent.offsetTop;
				divParent = divParent.offsetParent;
			}
		}
	}
	divBottom = divTop + overDiv.offsetHeight - 1;
	divRight = divLeft + overDiv.offsetWidth - 1;
	for ( var i = 0; i < document.getElementsByTagName( "DIV" ).length; i++ )
	{
		obj = document.getElementsByTagName( "DIV" )[ i ];
		if ( obj.className == sShowClass )
		{
			// Find the element's offsetTop and offsetLeft relative to the BODY tag.
			objLeft   = obj.offsetLeft;
			objTop    = obj.offsetTop;
			objParent = obj.offsetParent;
			var ss = "";
			if ( typeof(objParent) != "undefined" )
				for (iii in objParent ) ss+=", "+iii; 
			if ( ss == "" ) 
				break;
			if ( objParent.id == overDiv.id ) 
				break;
			while ( objParent.tagName.toUpperCase() != "BODY" )
			{
				objLeft  += objParent.offsetLeft;
				objTop   += objParent.offsetTop;
				objParent = objParent.offsetParent;
				
				if ( objParent.id == overDiv.id  ) 
					break;
			}
			if ( objParent.id == overDiv.id  ) 
				break;
			objBottom = objTop + obj.offsetHeight - 1;
			objRight = objLeft + obj.offsetWidth - 1;
			objLeft = objRight - 20;
			if ((
				((objLeft >= divLeft) && (objLeft <= divRight)) ||
				(((objRight) >= divLeft) && (objRight <= divRight)) ||
				((objLeft <= divLeft) && (objRight >= divRight))
				)
				&&
				(
				((objTop >= divTop) && (objTop <= divBottom)) ||
				((objBottom >= divTop) && (objBottom <= divBottom)) ||
				((objTop <= divTop) && (objBottom >= divBottom))
				))
			{
				obj.className = sHideClass;
			}
		}
	}
}
function showDivScroll(sShowClass, sHideClass)
{
	for (i=0; i<document.getElementsByTagName("DIV").length; i++)
	{
		obj = document.getElementsByTagName("DIV")[i];
		if (obj.className == sHideClass)
		{
			obj.className = sShowClass;
		}
	}
}

/* *********************************** START *** CUSTOMIZE ******************************** */
var imgDirMiniPopin = "../Images";			// directory for images ... e.g. var imgDirCol="/img/"
var autoMoveLayerMiniPopin = true;          // reubicar pop-up si sale de pantalla?
/* *********************************** END *** CUSTOMIZE ******************************** */

var callFunctionMiniPopin = "";
var	fixedXMiniPopin = -1			        // x position (-1 if to appear below control)
var	fixedYMiniPopin = -1			        // y position (-1 if to appear below control)
var	crossobjMiniPopin, ctlNowMiniPopin
var	bPageLoadedMiniPopin=false
var	ieMiniPopin=document.all
var	domMiniPopin=document.getElementById
var bWithShadow = true;

var	ns4MiniPopin=document.layers
var bShow_MiniPopin = false;

if (domMiniPopin)
{
	//general table
	document.write ("<div id='divSwMiniPopin' style='position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;margin:0;padding:0px;DISPLAY:none;Z-INDEX:0;background-color: #000;filter:alpha(opacity=50) !important;-moz-opacity: 0.5 !important;opacity: 0.5 !important;'></div>");
	document.write ("<div onclick='bShow_MiniPopin=true' id='divMiniPopin' style='z-index:+898;position:absolute;visibility:hidden;'>");
	document.write ("</div>");
}
function getStartMiniPopin( sTitle )
{
	var s = "";
	var txt ="<table class='external_1' cellspacing=0 cellpadding=0 border=0><tr><td>";
	txt+="<table class='external_2' cellspacing=0 cellpadding=0 border=0><tr><td>";
	txt+="<table class='external_3' cellspacing=0 cellpadding=0 border=0><tr><td>";
	txt+="<table class='external_4' cellspacing=0 cellpadding=0 border=0><tr><td>";
	txt+="<table class='external_5' cellspacing=0 cellpadding=0 border=0><tr><td>";
	s+=txt;
	if ( sTitle != "" )
	{
	s+='<table class="external" cellSpacing="0" cellPadding="0" border="0">';// width="481"
		s+='<tr vAlign="top">';
			s+='<td>	';
				s+='<table class="newtitlemain" height="20" cellSpacing="0" cellPadding="0" width="100%" border="0">';
					s+='<tr>';
						s+='<td class="title" align="left" width="98%">' + sTitle + '</td>';
						s+='<td align="right" width="60">';
							s+='<table cellSpacing="0" cellPadding="0" border="0">';
								s+='<tr>';
									s+='<td><input class="imagebutton" id="btnClose_MiniPopin" style="background-Image:url(' + imgDirMiniPopin + '/icons/close-window-icon.gif);PADDING-LEFT: 16px; WIDTH: 53px; HEIGHT: 18px"';
											s+='onclick="closeMiniPopin();" type="button" value="Close" name="btnClose_MiniPopin"></td>';
								s+='</tr>';
							s+='</table>';
						s+='</td>';
					s+='</tr>';
				s+='</table>';
			s+='</td>';
		s+='</tr>';
		s+='<tr>';
			s+='<td class="horizontaldivisor"></td>';
		s+='</tr>';
		s+='<tr vAlign="top">';
			s+='<td>';
							s+='<table border="0" cellSpacing="0" cellPadding="0" width="100%">';
								s+='<tr>';
									s+='<td>';
	}
	return s;
}
function getEndMiniPopin( sTitle )
{
	var s = "";
	if ( sTitle != "" )
	{
										s+='</td>';
								s+='</tr>';
							s+='</table>';
			s+='</td>';
		s+='</tr>';
	s+='</table>';
	}
	var txt="</td></tr></table>";
	txt+"</td></tr></table>";
	txt+"</td></tr></table>";
	txt+"</td></tr></table>";
	txt+"</td></tr></table>";
	s+=txt;

	return s;
}
function initMiniPopin(){
	if (!ns4MiniPopin)
	{
		crossobjMiniPopin=(domMiniPopin)?document.getElementById("divMiniPopin").style : ieMiniPopin? document.all.divMiniPopin : document.divMiniPopin
		hideMiniPopin()
		bPageLoadedMiniPopin=true
	}
}
function hideMiniPopin(){
	if (crossobjMiniPopin)
	{
		document.getElementById("divMiniPopin").innerHTML = "";
		if ( crossobjMiniPopin.visibility != "hidden" )
		{
//			if (document.getElementById( "hdnPageLocation" ))
//				document.getElementById( "hdnPageLocation" ).value = GetPageNamePopin();
			crossobjMiniPopin.visibility="hidden";

			showElement( 'SELECT' );
			showElement( 'APPLET' );
			
			if ( bAjaxIsMac )
				showDivScroll("list","listhidescrollbyminipopin");		
		}
	}
}
function closeMiniPopin()
{
	var	sTmp;
	
	fnSetMiniPopin = "setMiniPopin()";		
	
	document.getElementById("divSwMiniPopin").style.display="none";
	hideMiniPopin();
	
	if ( callFunctionMiniPopin != "" )
	{
		eval( callFunctionMiniPopin );
	}
}

function showPopin(divObjName, bWithSw){
    bWithShadow = bWithSw;
    document.getElementById(divObjName).style.display = "block";
    if(bWithShadow) miniPopin.mShadow();
    miniPopin.posToCenter(document.getElementById(divObjName),0,20);
}

function closePopin(divObjName){
    if(bWithShadow) document.getElementById("divSwMiniPopin").style.display="none";
    document.getElementById(divObjName).style.display = "none";
}
function GetPageNamePopin()
{
	var sTextSeparator = "#minipopin#";
//	var sActualPageNameForHelp = document.getElementById( "hdnPageLocation" ).value;
	var iIndexChar = sActualPageNameForHelp.indexOf( sTextSeparator );
	if ( iIndexChar != -1 )
		sActualPageNameForHelp = sActualPageNameForHelp.substring( 0, iIndexChar );
	else
		sActualPageNameForHelp = aPageHistorySystem[ iPageHistorySystem ];
	return sActualPageNameForHelp;
}

/*** MiniPopin ***/
function constructMiniPopin( sText, sTitle )
{
	sHTML = sText;
	if ( typeof( sTitle ) == "boolean" )
	{
		if ( sTitle == false )
			document.getElementById("divMiniPopin").innerHTML = sHTML;
	}
	else
		document.getElementById("divMiniPopin").innerHTML = getStartMiniPopin( sTitle ) + sHTML + getEndMiniPopin( sTitle );
}
var bIfInitExecuted_MiniPopin = false;
var OldFunction_MiniPopin = "";
function popUpMiniPopin( sContent, ctl, bFromControl, sTitle, bIsPage, bAutoMoveLayerMiniPopin )
{
	miniPopin.mShadow();
	autoMoveLayerMiniPopin = true;
	if ( bAutoMoveLayerMiniPopin != null ) autoMoveLayerMiniPopin = bAutoMoveLayerMiniPopin;
	if ( bIsPage == null ) bIsPage = false;
	bShow_MiniPopin = true;
	if ( bFromControl != null ){ bShow_MiniPopin = bFromControl;}
	else {bFromControl = false;}
	//if ( !bIsPage ) document.getElementById( "hdnPageLocation" ).value += "#minipopin#OnlyText";
	if ( sTitle == null ){ sTitle = "";}
	if (!bIfInitExecuted_MiniPopin)
	{
		bIfInitExecuted_MiniPopin = true;
		initMiniPopin();
	}
	callFunctionMiniPopin = "";
	var	leftpos=0
	var	toppos=0

	if (bPageLoadedMiniPopin)
	{
		if ( crossobjMiniPopin.visibility == "hidden" )
		{
			//***if ( bAjaxIsMac )//if (!document.all)//
			//***{
				//***showDivScroll("listhidescrollbyminipopin","list");
			//***}			
			var aTag;
			aTag = ctl;
			do {
				aTag = aTag.offsetParent;
				leftpos	+= aTag.offsetLeft;
				toppos += aTag.offsetTop;
			} while(aTag.tagName!="BODY");

			var iScrollPos = 0;
			aTag = ctl
			do {
			    aTag = aTag.parentNode;
			    if (aTag.scrollTop)
			        iScrollPos += aTag.scrollTop;
			} while (aTag.tagName != "BODY");
			toppos = toppos - iScrollPos;
			var iLeftP = 0;
			var iTopP = 0;
			iLeftP = fixedXMiniPopin==-1 ? ctl.offsetLeft	+ leftpos :	fixedXMiniPopin;
			crossobjMiniPopin.left = iLeftP + "px";
			iTopP = fixedYMiniPopin==-1 ? ctl.offsetTop +	toppos + ctl.offsetHeight +	2 :	fixedYMiniPopin;
			crossobjMiniPopin.top = iTopP + "px";
			
			constructMiniPopin( sContent, sTitle );
			if ( autoMoveLayerMiniPopin )
			{
				heightLayer = document.getElementById( "divMiniPopin" ).offsetHeight + 30;
				widthLayer = document.getElementById( "divMiniPopin" ).offsetWidth + 15;
				if (window.innerHeight) {
					if ((parseInt(crossobjMiniPopin.top) + heightLayer) > (window.innerHeight + window.pageYOffset))
						iTopP = window.innerHeight + window.pageYOffset - heightLayer;
				} else {
					if ((parseInt(crossobjMiniPopin.top) + heightLayer) > (document.body.clientHeight + document.body.scrollTop))
						iTopP = document.body.clientHeight + document.body.scrollTop - heightLayer;
				}
				crossobjMiniPopin.top = iTopP + "px";
				if (window.innerWidth) {
					if ((parseInt(crossobjMiniPopin.left) + widthLayer) > (window.innerWidth + window.pageXOffset))
					 {
						iLeftP = window.innerWidth + window.pageXOffset- widthLayer;
					}
				} else {
					if ((parseInt(crossobjMiniPopin.left) + widthLayer) > (document.body.clientWidth + document.body.scrollLeft))
					{
						iLeftP = document.body.clientWidth + document.body.scrollLeft - widthLayer;
						}
				}
				crossobjMiniPopin.left = iLeftP + "px";
			}
			else
			{
				heightLayer = document.getElementById( "divMiniPopin" ).offsetHeight + 30;
				widthLayer = document.getElementById( "divMiniPopin" ).offsetWidth + 15;
				var topC = crossobjMiniPopin.top;
				var leftC = 0;
				if (window.innerHeight) {
					if ((parseInt(crossobjMiniPopin.top) + heightLayer) > (window.innerHeight + window.pageYOffset))
						topC = window.innerHeight + window.pageYOffset - heightLayer;
				} else {
					if ((parseInt(crossobjMiniPopin.top) + heightLayer) > (document.body.clientHeight + document.body.scrollTop))
						topC = document.body.clientHeight + document.body.scrollTop - heightLayer;
				}
				if (window.innerWidth) {
					if ((parseInt(crossobjMiniPopin.left) + widthLayer) > (window.innerWidth + window.pageXOffset))
						leftC = window.innerWidth + window.pageXOffset - widthLayer;
				} else {
					if ((parseInt(crossobjMiniPopin.left) + widthLayer) > (document.body.clientWidth + document.body.scrollLeft))
						leftC = document.body.clientWidth + document.body.scrollLeft - widthLayer;
				}
				if ( bAjaxIsMac )
				{
					if ( topC != parseInt( crossobjMiniPopin.top ) )
					{
						crossobjMiniPopin.top = topC;
						heightLayer = document.getElementById( "divMiniPopin" ).offsetHeight + 30;
						crossobjMiniPopin.top = parseInt(crossobjMiniPopin.top) - heightLayer + 5;
					}
				}
				else
				{
					heightLayer = document.getElementById( "divMiniPopin" ).offsetHeight + 30;
					crossobjMiniPopin.top = parseInt(crossobjMiniPopin.top) - heightLayer + 5;
				}
				crossobjMiniPopin.left = leftC;
			}
			hideElement( 'SELECT', document.getElementById("divMiniPopin") );
			hideElement( 'APPLET', document.getElementById("divMiniPopin") );
			constructMiniPopin( sContent, sTitle );
			crossobjMiniPopin.visibility=(domMiniPopin||ieMiniPopin)? "visible" : "show"
		}
		else
		{
			hideMiniPopin()
			if (ctlNowMiniPopin!=ctl)
			{
				popUpMiniPopin( sContent, ctl, bFromControl, sTitle, bIsPage, bAutoMoveLayerMiniPopin );
			}
		}
		ctlNowMiniPopin = ctl
		miniPopin.posToCenter(document.getElementById("divMiniPopin"),0,20);
	}
}

window.onscroll = miniPopin.maintPos;
window.onresize = miniPopin.maintPos;

