var msg="";
function addMsg(pMsg) {
	if (pMsg != "" && pMsg+"" != "undefined") {
		msg=msg+"\n"+pMsg;
	}
}
function showMsg(f,title) {
	var mtitle;
	mtitle=title||"Verifique";
	if (msg!="") {
		alert(mtitle + "\n"+msg);
		msg="";
		return false;
	}
	return true;
	//f.submit();
}
function validarText(text,msg,min) {
/**valida la mínima longitud de un campo*/
	if (text.value.split(' ').join('').length < min ) {
		addMsg(msg);
	}
}
function validarCampoText(text,min) {
/**valida la mínima longitud de un campo*/

	if (text.value.split(' ').join('').length < min ) {
		return false;
	}
	return true;
}
function isStdName(ptext) {
  var re = new RegExp("[a-zA-Z]");
  return ((re.test(ptext.substr(0,1))));  
}
function validateStdName(text,msg,min) {
/**valida la mínima longitud de un campo y que el valor inicie con una letra*/
  if (text.value.split(' ').join('').length < min || !isStdName(text.value)) {
	addMsg(msg);
  }
}
function isEmail(ptext) {
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(ptext) && r2.test(ptext));
}
function validateEmail(text, msg, poptional) {
  var optional=poptional||false;
  
  if (optional) {
    if (text.value.split(' ').join('').length > 0 && !isEmail(text.value)) {
    	addMsg(msg);
    }
   } else {
    if (!isEmail(text.value)) {
	addMsg(msg);
    }   	
   }
}
function isSelected(pLista, pIndiceInicial,pMsg) {
    if (!pIndiceInicial && pIndiceInicial != 0) {
        pIndiceInicial = 1;
    }
    if (pLista.selectedIndex < pIndiceInicial) {
		addMsg(pMsg);
        return false;
    }
    return true;
}
function isChecked(field,pMsg) {
/**valida si existe almenos un dato checked*/

if (field+"" == "undefined") {addMsg(pMsg); return false;}

	if (field.length>1){
		for (var i = 0; i < field.length; i++) {
			if (field[i].checked) {
				return true;
			}
		}
	} else {
		if (field.checked) {
			return true;
		}
	}
	addMsg(pMsg);
	return false;
}
function getChecked(field) {
	for (var i = 0; i < field.length; i++) {
		if (field[i].checked) {
			return i;
		}
	}
	return  -1;
}
function isFloat(number)  {
  number = number.split(' ').join('')
  if (parseFloat(number) + ' ' == 'NaN ') {
	 return false
  }
  return true;
}
function isFloatRange(number,min,max)  {
/*Esta funcion recibe un float y un rango y lo valida*/

  number = number.split(' ').join('')
  if (parseFloat(number) + ' ' == 'NaN ') {
	 return false
  }
  return (parseFloat(number) >= min && parseFloat(number) <= max)
}
function isInt(number)  {
  number = number.split(' ').join('')
  if (parseInt(number) + ' ' == 'NaN ' ||
	  number.indexOf('.') != -1) {
	return false
  }
  return true;
}
function isIntRange(number,min,max)  {
/*Esta funcion recibe un entero y un rango y lo valida*/

  number = number.split(' ').join('')
  if (!isInt(number)) {
	 return false
  }
  return (parseInt(number) >= min && parseInt(number) <= max)
}
function isTime(time)  {
/*Esta funcion valida una hora y retorna falso o verdadero*/
/* Recibe el formato de HH:MM*/

  var HP
  time = time.split(' ').join('')
  HP = time.split(":")
  if (HP.length != 2) return false
  return(HP[0] < 24 && HP[0] >= 0 && HP[1] < 60 && HP[1] >= 0)
}
function isDateDMY(date)  {
/*Esta funcion valida una fecha y retorna falso o verdadero*/
/* Recibe el formato de Dia/Mes/Ano*/

  var FP
  date = date.split(' ').join('')
  FP = date.split("/")
  if (FP.length != 3) {
	  return false
  }
  return isSplitDateDMY(FP[0],FP[1],FP[2])
}
function isSplitDateDMY(day,month,year)  {
  if (!isInt(day) || !isInt(month) || !isInt(year)) {
	return false;
  }
  date = new Date(year,month-1,day)
  return (date.getDate() == day) && ((date.getMonth()+1) == month) && (date.getFullYear() == year)
}
// Retorna si la fecha inferior efectivamente es inferior
// que la fecha superior. La fecha debe encontrarse en formato dd/mm/yyyy
// -1 a < b, 0 a == b, 1 a > b
function compareFechasDMY(a,b) {
  var firstDateArray,secondDateArray
  firstDateArray = a.split("/");
  secondDateArray = b.split("/");
  aDate = new Date(firstDateArray[2],firstDateArray[1]-1,firstDateArray[0]);
  bDate = new Date(secondDateArray[2],secondDateArray[1]-1,secondDateArray[0]);
  if (aDate.getTime() < bDate.getTime()) {
	return -1;
  }
  if (aDate.getTime() == bDate.getTime()) {
	return 0;
  }
  return 1;
}
function validarLongitud(teclaPresionada,campo,maximaLongitud) {
 var version4 = parseInt(navigator.appVersion) >= 4;
 var IE4 = ((navigator.userAgent.indexOf("MSIE") != -1) && version4);

 var longitud = campo.value.length;

 if (IE4){
   if (parseInt(teclaPresionada.keyCode,10) != 8 &&
parseInt(teclaPresionada.keyCode,10) != 46) {
       if (longitud > maximaLongitud-1){
        campo.blur();
       }
   }
 }
}
//Estas son funciones para mover listas
function moverSeleccion(lstOrigen,lstDestino) {
/**Traslada los items seleccionados de lstOrigen y
los coloca en lstDestino*/

    var idxLista;
    var idxPara;

    idxPara=lstDestino.length;
    idxLista=0;

    while(idxLista<lstOrigen.length) {
        if(lstOrigen.options[idxLista].selected){
                lstDestino.options[idxPara]=new Option(lstOrigen.options[idxLista].text,lstOrigen.options[idxLista].value);
                lstOrigen.remove(idxLista);
                idxPara++;
        } else {
            idxLista++;
        }
    }
}

function moverTodos(lstOrigen,lstDestino) {
/**Traslada todos los items de lstOrigen y
los coloca en lstDestino*/

    var idxLista;
    var idxPara;

    idxPara=lstDestino.length;
    idxLista=0;

    while(idxLista<lstOrigen.length) {
        lstDestino.options[idxPara]=new Option(lstOrigen.options[idxLista].text,lstOrigen.options[idxLista].value);
        lstOrigen.remove(idxLista);
        idxPara++;
    }
}

function marcarTodo(lst) {
/**Marca todos los items de lst como selected
para que puedan ser recibidos por el request.*/

    var idx;
    idx=0;
    while(idx<lst.length) {
        lst.options[idx].selected = true;
        idx++;
    }
}

function lstRemoveAll(lst) {
//retira todos los elementos de la lista.
	for(var i=lst.length; i>0; i--){
      		lst.remove(i-1);
	}
}
function addOptionLst(plst,pvalue, pname) {
	//add new option to select
    plst.options[plst.length]=new Option(pname,pvalue);
}
function lstRemoveSelected(lst) {
//remove all selected options
	for(var i=lst.length; i>0; i--){
	      if(lst.options[i-1].selected) {
		lst.remove(i-1);
	      }
	}
}

function lstRemoveSelectedIdem(lst,lstIdem) {
//remove all selected options
for(var i=lst.length; i>0; i--){
      if(lst.options[i-1].selected) {
      	lst.remove(i-1);
      	lstIdem.remove(i-1);
      }
}
}

function getFirstSelected(lst) {
//return then first selected options
	for(var i=0; i<lst.length; i++){
	      if(lst.options[i].selected) {
			return i;
	      }
	}
	return -1;
}

function changePosOptions(lst,ipos,newPos) {
	if (ipos == newPos || ipos<0 || ipos>=lst.length || newPos<0 || newPos>=lst.length) {return;}
	var tvalue = lst.options[ipos].value;
	var ttext = lst.options[ipos].text;
	lst.options[ipos].value = lst.options[newPos].value;
	lst.options[ipos].text = lst.options[newPos].text;
	lst.options[ipos].selected = false;
	lst.options[newPos].value = tvalue;
	lst.options[newPos].text = ttext;
	lst.options[newPos].selected = true;
	return;
}

function moveOptionUp(lst) {
	var isel=getFirstSelected(lst);
	changePosOptions (lst,isel,isel-1)
}

function moveOptionDown(lst) {
	var isel=getFirstSelected(lst);
	changePosOptions (lst,isel,isel+1)
}

function moveOptionUpIdem(lst,lstIdem) {
	var isel=getFirstSelected(lst);
	changePosOptions (lst,isel,isel-1)
	changePosOptions (lstIdem,isel,isel-1)
}

function moveOptionDownIdem(lst,lstIdem) {
	var isel=getFirstSelected(lst);
	changePosOptions (lst,isel,isel+1)
	changePosOptions (lstIdem,isel,isel+1)
}

function allCheckedValue(pcampo,pvalue){
//funcion para desmarcar o marcar todos los checkbox de una lista
if (pcampo+"" == "undefined") {return;}
if (pcampo.length>1){
	for (var i=0; i < pcampo.length; i++){
		pcampo[i].checked=pvalue;
	}
}else {
	pcampo.checked = pvalue; 
  }
}


function Par(Codigo, Nombre){
/**
*Carga el par de código y nombre para llenar arreglos
*/

	this.Codigo = Codigo;
	this.Nombre = Nombre;
}

function setSubLista(arrPar,lista,subLista){
/**
*Esta función permite llenar una lista a partir de un arreglo de datos
*tipo Par(Codigo,Nombre), para los elementos que hacen parte de la lista
*dependiente.
*El codigo en la estructura par debe estar con el formato extkey: keyRel-key
*donde key es la clave o codigo de la sublista, y keyRel de la lista a filtrar
*/
	var keyEval = lista.options[lista.selectedIndex].value;
	lstRemoveAll(subLista);
	var j = 1;
	var arrSubKey;
	var key="";
	for(var i=0; i<arrPar.length; i++)	{
		arrSubKey = arrPar[i].Codigo.split("-");
		key=arrSubKey[1];
		if(keyEval == key) {
			// Actualizar el campo evalSelect
			subLista.options[j++]=new Option(arrPar[i].Nombre,arrPar[i].Codigo);
		}
	}
}

function openPopup(purl,pwidth, pheight, ptarget, palign, pscrollbars, presizable){
//Esta funcion abre la ventana con el nombre especificado en purl
  var target = ptarget||"newWin";
  var align = palign||"top";
  var resizable = presizable||1;
  var scrollbars = pscrollbars||1; 
  var top=0;
  var left=0;
  
  if (align=="center") {
  	top = (screen.height- pheight)/2;
  	left = (screen.width - pwidth)/2;
  }
  
  window.open(purl,target,"width=" + pwidth + ",height=" + pheight + ",top=" + top + ",left=" + left + ",toolbar=0,directories=0,menubar=0,status=0,resizable=" + resizable + ",location=0,scrollbars=" + scrollbars + ",copyhistory=0");
}

function ast_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=ast_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];}}
    }
}

function ast_showPrintDgl() {
	if (window.print) {	window.print();
	} else {
		var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
		document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
		WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";
	}
}

