
var wnd;
var ns4 = (document.layers) ? true : false;
var ie4 = (document.getElementById) ? true : false;
var moz = (document.getElementById) ? true : false;





// Libreria de Funciones Generales Javascript
// Optimizada para Netscape 4, Netscape 6, Explorer 4, Explorer 5.
//

function openNewWindowPrint(popupUrl)
{
	wnd = NewWindow(popupUrl, "WND", 580, 600, "auto", "no", "no", "no", "no", "no");
}

//Abre ventanas externas predefinidas
function openwindow(url,num)
{
	switch (num) {
		case 1:
			var wnd1;
			wnd=window.open(url,"WND1","scrollbars=no,location=no,resizable=no,menubar=no,status=no,toolbar=no,width=500,height=500");
			break;
		case 2:
			var wnd2;
			wnd=window.open(url,"WND2","scrollbars=no,location=no,resizable=no,menubar=no,status=no,toolbar=no,width=400,height=420");
			break;
		case 3:
			var wnd3;
			wnd=window.open(url,"WND3","scrollbars=no,location=no,resizable=no,menubar=no,status=no,toolbar=no,width=400,height=310");
			break;
		case 4:
			var wnd4;
			wnd=window.open(url,"WND4","scrollbars=no,location=no,resizable=no,menubar=no,status=no,toolbar=no,width=400,height=450");
			break;
		case 5:
			var wnd1;
			wnd=window.open(url,"WND1","scrollbars=yes,location=no,resizable=yes,menubar=no,status=no,toolbar=no,width=650,height=500");
			break;
			}
}

//Funciones MACROMEDIA
//Precarga de imagenes
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

//Oculta o muestra capas
function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

//Busqueda de objetos DIV
function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

//Rollover
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//Restaura TODOS los cambios realizados por la funcion MM_swapImage()
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


function exportarOptions(opt){
	switch (opt){
		case 1:
			MM_showHideLayers('LyExportaCompetencias',' ','show','LyExportaEvaluado',' ','show','LyExportaButtons',' ','show','LyExportaPlanes',' ','hide');
			break;
		case 2:
			MM_showHideLayers('LyExportaCompetencias',' ','show','LyExportaEvaluado',' ','hide','LyExportaButtons',' ','show','LyExportaPlanes',' ','show');
			break;
	}
}

 // when user clicks Enter, it executes the function Search()
 
  function CaptureEnter(event){
	var iKeyCode;
	if (document.layers){ 
		iKeyCode = event.which; 
	}else {
  		if (document.all) 
  			iKeyCode = window.event.keyCode;
  		else
  			iKeyCode = event.keyCode;
  	}
	if (iKeyCode == 13 ) {
	
		//doSearch();}
		search();}
 }
 
  // when user clicks Enter, it executes the function Search()
 
  function CaptureEnterBackOffice(event){
	var iKeyCode;
	if (document.layers){ 
		iKeyCode = event.which; 
	}else {
  		if (document.all) 
  			iKeyCode = window.event.keyCode;
  		else
  			iKeyCode = event.keyCode;
  	}
	if (iKeyCode == 13 ) {
	
		doSearch();}
 }  
  //La creamos vacía para que en los lugares donde no exista la función javascript no dé error
  function doSearch(){}
  function search(){}
  

//______________________________________________________________________________
// close PopUP SelectKeyWords with name WND.
function CloseOpenWindows(){
 
  if ( eval(wnd)){
	    wnd.close();
	}
}

// Funciones para listas de seleccion (html:select)

// Para un primer par de listas:
// El ActionForm debe tener estas propiedades:
//	private ArrayList notAssigned1 = new ArrayList();
//	private ArrayList assigned1 = new ArrayList();
//	private String[] selectNotAssigned1;
//	private String[] selectAssigned1;
//
// assign1: desasigna un registro (su ID) de selectNotAssigned1 y lo asigna (su ID) a selectAssigned1
// parámetro: form, ejemplo: document.forms[0]
function assign1(form)
{
	var oAssigned = form.selectAssigned1;
	var oNotAssigned = form.selectNotAssigned1;
	var sValue;
	if (oNotAssigned.selectedIndex >= 0) 
	{
	  	sValue= oNotAssigned.options[oNotAssigned.selectedIndex].value;
		if (oNotAssigned.options[oNotAssigned.selectedIndex].value != "#"
		  && !valueInTermSelected(oAssigned, sValue))
		{
			var option = new Option(oNotAssigned.options[oNotAssigned.selectedIndex].text, sValue);
			oAssigned.options[oAssigned.length]=option;
			oNotAssigned.options[oNotAssigned.selectedIndex] = null;
		}
	}
}

// deassign: desasigna un registro (su ID) de selectAssigned1 y lo asigna a selectNotAssigned1
// parámetro: form, ejemplo: document.forms[0]
function deassign1(form)
{
	var oAssigned = form.selectAssigned1;
	var oNotAssigned = form.selectNotAssigned1;
	var sValue;	
	if (oAssigned.selectedIndex >= 0) 
	{
	  	sValue= oAssigned.options[oAssigned.selectedIndex].value;	
		if (oAssigned.options[oAssigned.selectedIndex].value != "#"
		  && !valueInTermSelected(oNotAssigned, sValue))
		{
			var option = new Option(oAssigned.options[oAssigned.selectedIndex].text, sValue);
			oNotAssigned.options[oNotAssigned.length]=option;
			oAssigned.options[oAssigned.selectedIndex] = null;
		}
	}
}	

// Para un segundo par de listas:
// El ActionForm debe tener estas propiedades:
//	private ArrayList notAssigned2 = new ArrayList();
//	private ArrayList assigned2 = new ArrayList();
//	private String[] selectNotAssigned2;
//	private String[] selectAssigned2;

// assign: mueve un registro de la lista de desasignados a la de asignados
// parámetro: form, ejemplo: document.forms[0]
function assign2(form)
{
	var oAssigned = form.selectAssigned2;
	var oNotAssigned = form.selectNotAssigned2;
	var sValue;	
	if (oNotAssigned.selectedIndex >= 0) 
	{
		sValue= oNotAssigned.options[oNotAssigned.selectedIndex].value;
		if (oNotAssigned.options[oNotAssigned.selectedIndex].value != "#"
		  && !valueInTermSelected(oAssigned, sValue))
		{
			var option = new Option(oNotAssigned.options[oNotAssigned.selectedIndex].text, sValue);
			oAssigned.options[oAssigned.length]=option;
			oNotAssigned.options[oNotAssigned.selectedIndex] = null;
		}
	}
}

// deassign: mueve un registro de la lista de asignados a la de desasignados
// parámetro: form, ejemplo: document.forms[0]
function deassign2(form)
{
	var oAssigned = form.selectAssigned2;
	var oNotAssigned = form.selectNotAssigned2;
	var sValue;	
	if (oAssigned.selectedIndex >= 0) 
	{
		sValue= oAssigned.options[oAssigned.selectedIndex].value;
		if (oAssigned.options[oAssigned.selectedIndex].value != "#"
		  && !valueInTermSelected(oNotAssigned, sValue))
		{
			var option = new Option(oAssigned.options[oAssigned.selectedIndex].text, sValue);
			oNotAssigned.options[oNotAssigned.length]=option;
			oAssigned.options[oAssigned.selectedIndex] = null;
		}
	}
}

// getAssigned(): rellena el oAssign pasado como paramétro 
//		con las opciones disponibles en el html:select informado
//		NO tiene en cuenta opciones con valor "#"
// parámetro: oAssign
// Ejemplo: getAssigned(document.forms[0].selectAssigned1);
function getAssigned(oAssign)
{
	for (i=0; i<oAssign.length; i++)
	{
		//alert(oAssign[i].value); 
		if (oAssign[i].value != "#")
		{
	  		oAssign[i].selected=true;
	  	}
	}
}	

// getDeAssigned(): rellena el oDeAssign pasado como paramétro
//		con las opciones disponibles en el html:select informado
//		NO tiene en cuenta opciones con valor "#"
// parámetro: oDeAssign
// Ejemplo: getDeAssigned(document.forms[0].selectDeAssigned1);
function getDeAssigned(oDeAssign)
{
	for (i=0; i<oDeAssign.length; i++)
	{
	    //alert(oDeAssign[i].value);
		if (oDeAssign[i].value != "#")
		{	  
			oDeAssign[i].selected=false;
		}	
	}
}	


function valueInTermSelected(oAssign,  vValue)
{
  var i;
  var sText, sValue;
  if (oAssign.length >= 1)
  {

	for (i=0; i < oAssign.length; i++)
	{
	  if (oAssign.options[i].value == vValue)
		return true;
	}
  }
  return false;
}

  //*************************************************************************** 
  // Tokenizadores; pantallas multiidioma (Term, Aggregator, Glossary, Survey)
  //***************************************************************************  
  function getLanguages() 
  {
	var form = document.forms[0];
	var totalElements= form.elements.length;
	var languages = "";
	var element;
	var n=0;
	for (var i=0 ; i < totalElements ; i++) 
	{
		element = form.elements[i];
	   	if (element.type == "hidden" 
	   		&& element.name.substring(0,9) == "language_") 
		{	
  			languages+= element.value + "@@@";
		}
	}
	return languages;
  } 

  function getNames() 
  {
	var form = document.forms[0];
	var totalElements= form.elements.length;
	var names = "";
	var element;
	var n=0; 
	for (var i=0 ; i < totalElements ; i++) 
	{
		element = form.elements[i];
	   	if (element.type == "text" 
	   		&& element.name.substring(0,5) == "name_") 
		{	
			if (trim(element.value) == '')
			{
				contentNoInformado= 'true';
			}
  			names+= trim(element.value) + "@@@";
		}
	}
	return names;
  } 

  function getNames2() 
  {
	var form = document.forms[0];
	var totalElements= form.elements.length;
	var names2 = "";
	var element;
	var n=0;
	for (var i=0 ; i < totalElements ; i++) 
	{
		element = form.elements[i];
	   	if (element.type == "text" 
	   		&& element.name.substring(0,6) == "name2_") 
		{	
			if (trim(element.value) == '')
			{
				contentNoInformado= 'true';
			}
  			names2+= trim(element.value) + "@@@";
		}
	}
	return names2;
  } 

  function getDescriptions() 
  {
	var form = document.forms[0];
	var totalElements= form.elements.length;
	var descriptions = "";
	var element;
	var n=0;
	for (var i=0 ; i < totalElements ; i++) 
	{
		element = form.elements[i];
	   	if (element.type == "text" 
	   		&& element.name.substring(0,12) == "description_") 
		{	
			if (trim(element.value) == '')
			{
				contentNoInformado= 'true';
			}
			descriptions+= trim(element.value) + "@@@";
		}
	}
	return descriptions;
  }
  
  //Función genérica para GestSurvey
   function getIndexedValues(fieldName, iSubStr, obligatorio) 
  {
	var form = document.forms[0];
	var totalElements= form.elements.length;
	var fieldsValue = "";
	var element;
	var n=0;
	for (var i=0 ; i < totalElements ; i++) 
	{
		element = form.elements[i];
	   	if ( (element.type == "text" || element.type == "hidden")
	   		&& element.name.substring(0,iSubStr) == fieldName ) 
		{	
			if (trim(element.value) == '')
			{
				contentNoInformado = obligatorio;
			}
			//si el campo no es obligatorio y está vacio, ponemos un caracter de relleno "~" (después se quitará en el action)
			if (trim(element.value) == '' && obligatorio == 'false') {
				fieldsValue+= '~' + "@@@";
			} else{
  				fieldsValue+= trim(element.value) + "@@@";
  			}
		}
	}
	return fieldsValue;
  } 
  
  
  //***************************************************************************  
  
  
  //Función para centrar Window open
  function NewWindow(mypage, myname, w, h, scroll, resizable, location, menubar, status, toolbar)
  {
    var winl = (screen.width - w) / 2;
    var wint = (screen.height - (Math.ceil(h) + 100)) / 2;
    winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable='+resizable+',location='+location+',menubar='+menubar+',status='+status+',toolbar='+toolbar
    
    win = window.open(mypage, myname, winprops)
    if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
    return win;
  }
  
// whitespace characters
var whitespace = " \t\n\r";  

  // Returns true if string s is empty or 
  // whitespace characters only.
  function isWhitespace (s)
  {
    var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;

  }
  
  //
  // Check whether string s is empty.
  //
  function isEmpty(s)
  {
     return ((s == null) || (s.length == 0))
  }
  
  //mira si value esta en el array
  function isInArray(value, array)
  {
    var iElements = array.length;
    
    for(i=0; i<iElements; i++)
    { 
      if (array[i] == value){
       return true;
      }
    }
    
    return false;
  }
  
  
  function show(id)
  {
  	var obj;
  	if (ns4)
  		document.layers[id].visibility = "show"
  	else if (ie4) {
  		document.all[id].style.visibility = "visible";
  	}else if (moz){
  		document.getElementById(id).style.visibility="visible"; 
  	}
  }
  
  function hide(id)
  {
  	var obj;
  	if (ns4)
  		document.layers[id].visibility = "hide"
  	else if (ie4) {
  		document.all[id].style.visibility = "hidden";
  	}else if (moz){
  		document.getElementById(id).style.visibility="hidden"; 
  	}
  }
  
  function openNewWindow(sURL,sTitle,sFeatures){
	  var wnd=window.open(sURL,sTitle,sFeatures);
  }      
  
  // utilizada en footerFO.jsp para abrir el popUp de Aviso Legal
  function openAvisoLegal()
  {
		// Safe URL conversion for compatibility with non Explorer browsers 
		popupUrl = "AvisoLegal.do";
		wnd = NewWindow(popupUrl, "AvLegal", 627, 600, "yes", "no", "no", "no", "no", "no");
  }

  // utilizada en footerFO.jsp para abrir el popUp de Aviso Legal
  function openCompromisos()
  {
		// Safe URL conversion for compatibility with non Explorer browsers 
		popupUrl = "Compromisos.do";
		wnd = NewWindow(popupUrl, "CCompr", 627, 600, "yes", "no", "no", "no", "no", "no");
  }
  
  // utilizada en footerFO.jsp para abrir el popUp de Aviso Legal
  function openIso()
  {
		// Safe URL conversion for compatibility with non Explorer browsers 
		popupUrl = "Iso9001.do";
		wnd = NewWindow(popupUrl, "Iso", 730, 600, "yes", "no", "no", "no", "no", "no");
  }
  
  // utilizada en footerFO.jsp para abrir el popUp de Mapa Web
  function openWebMap()
  {
		// Safe URL conversion for compatibility with non Explorer browsers 
		popupUrl = "SelectClassification.do?operation=show";
		wnd = NewWindow(popupUrl, "AvLegal", 488, 470, "yes", "no", "no", "no", "no", "no");
  }
  
  // Control de tamaño entre las columnas de la Izquierda y la Derecha
  function resizeColumms()
  {
  	
  	var menuIzq = document.getElementById("menuIzq");
	var heightMenuIzq = 0;
	if(menuIzq != null){
	  heightMenuIzq = menuIzq.offsetHeight ;
	}
	
	var menuDer = document.getElementById("menuPlusContent");
	var heightMenuDer = 0;
	if(menuDer != null){
	  heightMenuDer = menuDer.offsetHeight ;
	}
	 
	if(heightMenuDer < heightMenuIzq){
		document.getElementById("menuPlusContent").height = heightMenuIzq;
	}
	
  }
  //*************************************************************************** 

   function showSpecific(sSpecificTerm)
  {
  	
  	 var oForm = document.Nivel1Form;
   	  
	  oForm.termID.value = "";
	  //oForm.optContentTerms.value = "";
	  oForm.optContentTerms.value = sSpecificTerm;
	  oForm.optSpecificTerms.value = sSpecificTerm;	
	    
	  oForm.submit();
	
  }

    	