function isEmpty (data){
    if(trimx(data)==""){
        return true;
    }else{
        return false;
    }
}

function isDate(vdate)
{
	var FP;
	xdate = vdate.value;

	if(xdate.indexOf("/")!=-1){
		FP = xdate.split("/");
		return isDate1(FP[0],FP[1],FP[2]);
	}else{
		FP = new Array(0, 0, 0);
		if(xdate.length == 8){
			FP[0] = xdate.substr(0, 4);
			FP[1] = xdate.substr(4, 2);
			FP[2] = xdate.substr(6, 2);

			if(isDate1(FP[0],FP[1],FP[2])){
				vdate.value = FP[0] + "/" + FP[1] + "/" + FP[2];
				return true;
			}
		}else{
			return false;
		}
	}        
}

function as400Date(xdate)
{
	var FP;

	if(xdate.length > 0){
		FP = xdate.split("/");
		return Number(FP[0] + FP[1] + FP[2]);
	}else{
		return 99999999;
	}
}

function isDate1(xyear, xmonth, xday)
{
	//alert(xyear+" "+xmonth+" "+xday);
	months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (!isInt(xday,1,31) || !isInt(xmonth,1,12) || !isInt(xyear,1900,3000))
			return false;
	if (xmonth==2){
	   if((xyear%100==0 && xyear%400==0)||(xyear%4==0 && xyear%100!=0)){
			months[1]=29;
		}
	}
	if (isInt(xday,1,months[xmonth-1])){
			return true;
	}

	return false;
}

function isInt(data,Inf,Sup) {
	if (isNaN(data) || data.indexOf(".") != -1){
		return false;
	}
	return (parseInt(data,10) >= Inf && parseInt(data,10) <= Sup);
}

function trimx(data){
	var newData = "";
	var ini = 0;
	
	while(ini < data.value.length){			
		if (data.value.charAt(ini) != ' '){
			break;
		}
		ini++;
	}
	
	fin = data.value.length-1;
	while(fin >= 0){			
		if (data.value.charAt(fin) != ' '){
			break;
		}
		fin--;
	}

	newData = data.value.substr(ini, fin-ini+1);
	data.value = newData;

	return newData;
}

function xsplit(data, sep){
	var aux = new Array();
	
	pos = data.indexOf(sep);
	i = 0;
	while(pos > -1){
	   aux[i] = data.substr(0, pos);
	   data = data.substr(pos+1, data.length);
	   i++;
  	   pos = data.indexOf(sep);
	}

	aux[i] = data;

	return aux;
}

function newWindow(theURL, winName, width_, height_, scrolls) { 
	left_ = (screen.width - width_) / 2;
	top_  = (screen.height - height_) / 2;
	return window.open(theURL,winName, "scrollbars=" + scrolls 
		+ ",status=no,toolbar=no,menubar=no,resizable=yes,left=" + left_ + ",top=" + top_ 
		+ ",width=" + width_ + ",height=" + height_);
}
function newDialog(theURL, winParent, width_, height_, scrolls) { 
	height_+=25;
	width_+=5;
	left_ = (screen.width - width_) / 2;
	top_  = (screen.height - height_) / 2;
	return window.showModalDialog(theURL,winParent, 
		"status: No; resizable:Yes; center: Yes; help:no" 
		+ ";dialogWidth:" + width_ + "px ;dialogHeight:" + height_+"px");
}
/** Valida la entrada numérica por teclado en un elemento INPUT **/
function validateNumberInput(inputText){
	if (!inputText)
		return;
	
	if (inputText.value.lastIndexOf('.')!=inputText.value.length-1)
	   setValue(inputText,parseFloat(inputText.value));
	else
		setValue(inputText,parseFloat(inputText.value)+".");
	if (inputText.value=="NaN" || inputText.value=="NaN.")
		setValue(inputText,0);
}
/** Valida la entrada numérica por teclado en un elemento INPUT, permite cuatro decimales **/
function validateNumberInput4(inputText){
	if (inputText.value.lastIndexOf('.')!=inputText.value.length-1)
	   setValue(inputText,parseFloat(inputText.value));
	else
		setValue(inputText,parseFloat(inputText.value)+".");
	if (inputText.value=="NaN" || inputText.value=="NaN.")
		setValue(inputText,0);
}	
/** Valida la entrada numérica por teclado en un elemento INPUT, puede dejar sin 0 cero. **/
function validateNumberInputNone(inputText){
	if (inputText.value.length==0) 
		return;
	if (inputText.value.lastIndexOf('.')!=inputText.value.length-1)
	   setValue(inputText,parseFloat(inputText.value));
	else
		setValue(inputText,parseFloat(inputText.value)+".");
	if (inputText.value=="NaN" || inputText.value=="NaN.")
		setValue(inputText,0);
}
/** Calcula el porcentaje en textPorc, desde text teniendo como base textbase ***/
function calcPorc(text, textbase, textPorc) {
	if (text.value.length==0 || textbase.value.length==0)
		setValue(textPorc,"");
	else
	if (parseFloat(textbase.value)!=0 && parseFloat(text.value)!=0)
		setValue(textPorc,VCtoString((parseFloat(text.value)*100)/parseFloat(textbase.value)));
	else
		setValue(textPorc,0);
}
/** Calcula el porcentaje inverso (faltante para 100%) en textPorc, desde text teniendo como base textbase ***/
function calcPorcInv(text, textbase, textPorc) {
	calcPorc(text, textbase, textPorc)
	setValue(textPorc,VCtoString(100-parseFloat(textPorc.value)));
}

/** Calcula el valor en text, desde textPorc teniendo como base textbase ***/
function calcValuePorc(text, textbase, textPorc) {
	if (textPorc.value.length==0 || textbase.value.length==0 )
		setValue(text,"");
	else
		setValue(text,VCtoString((parseFloat(textPorc.value)/100)*parseFloat(textbase.value)));
}
/** Calcula el valor en text, desde textPorc teniendo como base textbase ***/
function calcValuePorcInv(text, textbase, textPorc) {
	if (textPorc.value.length==0 || textbase.value.length==0 )
		setValue(text,"");
	else
		setValue(text,VCtoString(((100-parseFloat(textPorc.value))/100)*parseFloat(textbase.value)));
}
function VCparseFloat( stringNum){
	if (stringNum.length==0)
		return 0;
	// borrado de caracteres especiales , '
	//for (VCparseFloatPos=0;VCparseFloatPos<stringNum.length; )	{
	//}
	return parseFloat(stringNum);
}
// corta a dos decimales un float
function VCtoString(floatNum){
	VCtoStringNum=(Math.round(floatNum*100)/100)+"";
	return VCtoStringNum+"";
}
function VCtoString4(floatNum){
	VCtoStringNum=(Math.round(floatNum*10000)/10000)+"";
	VCtoStringPnt=VCtoStringNum.indexOf(".");
	if (VCtoStringPnt!=-1)	{
		VCtoStringNum+="0000";
		VCtoStringNum=VCtoStringNum.substring(0,VCtoStringPnt+5);
	}
	VCtoStringNumF=parseFloat(VCtoStringNum);
	return VCtoStringNumF+"";
}
function setValue(input, val){
	if (input.value!=val)
		{input.value=val;
		}
}
function VCEncodeURI(x){
	while(x.indexOf("\r\n") > 0){
		x = x.replace("\r\n", "%0D%0A");
	}
	return x;
}
// obtiene 
function dateToLong(xdate)
{
	FP = xdate.split("/");
	xyear = parseInt(FP[0],10);
	xmonth = parseInt(FP[1],10);
	xday = parseInt(FP[2],10);
	months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	//alert("dia: " + xday + " mes: " + xmonth+" "+FP[1] + " year: " + xyear);
	if (!isInt(xday+"",1,31) || !isInt(xmonth+"",1,12) || !isInt(xyear+"",1900,3000)){
		return -1;
	}
	if (xmonth==2){
	   if((xyear%100==0 && xyear%400==0)||(xyear%4==0 && xyear%100!=0)){
			months[1]=29;
		}
	}
	if (!isInt(xday+"",1,months[xmonth-1]+"")){
		return -1;
	}

	numDaysM = xday;
	for(i=0; i < (xmonth-1); i++){
		numDaysM = numDaysM + months[i];
	}
	
	r = (((xyear-1970)*365)+(numDaysM))*(86400);
	aux = Math.ceil((xyear-1970)/4);
	r += (aux)*(86400);
	//alert(r*1000);
	return r*1000;
}
/**
* Funcion que reeplaza una cadena sobre otra.
* 
*/
function replaceString(str, oldstr, newstr){
		arrayData = str.split(oldstr);
		rta=arrayData[0];
		for (i=1;i<arrayData.length;i++)
			rta+=newstr+arrayData[i];
		return rta;
}

function validateIntInput(field){
	tmp = parseInt(field.value);
	if(!isNaN(tmp)){
		if(tmp < 0)
			field.value = tmp*-1;
		else
			field.value = tmp;
	}else{
		field.value = "";
	}
}

function formatNumber(val, dec){
	data = val + "";
	
	index = data.indexOf(",");
	while(index > 0){
		aux = data.substr(0, index);
		data = aux + data.substr(index+1, data.length);
		index = data.indexOf(",");
	}
    
    dataDec = "";
	if(dec > 0){
		index = data.indexOf(".");
		if(index > -1){
			dataDec = data.substr(index+1, dec);
			data = data.substr(0, index);
		}
		for(i=dataDec.length; i < dec; i++)
			dataDec += "0";		
	}	

	if(data.length > 3){
		r = "";
		while(true){
			aux = data.substr(data.length-3, data.length);
			data = data.substr(0, data.length-3);
			if(r == ""){
				r = aux;
			}else{
				r = aux + "," + r;
			}
			if(data.length <= 3){
				r = data + "," + r;
				break;
			}
		}		
	}else{
		r = data;
	}
	
	if(dec > 0)
		return r + "." + dataDec;
	else
		return r;	
}

function toNumber(val){
	data = val + "";
	
	index = data.indexOf(",");
	while(index > 0){
		aux = data.substr(0, index);
		data = aux + data.substr(index+1, data.length);
		index = data.indexOf(",");
	}

	return data * 1.0;    
}
function help(helpUrl){
	newWindow(helpUrl, "help", 480, 300, 1);
}
/**
* Retorna un label despues de sustituir valores {0},{1}.
* @param label String
* @param params Array de Strings
*/
function getLabel(label, params){
	for (lbl_i=0;lbl_i<params.length;lbl_i++){
		label=label.replace("{"+lbl_i+"}",params[lbl_i]);
	}
	return label;
}
/**
* Deshabilita el poder seleccionar una seccion de la página por medio de 
* mouse.
*/
function disableSelect(){
	//if IE4+
	document.onselectstart=new Function ("return false")

	//if NS6
	if (window.sidebar){
		document.onmousedown=false 
		document.onclick=false 
	}
}
/**
* Funcion de document.oncontextmenu para IExplorer,  
* usada para ocultar el menú contextual
*/
function clickIE() {
	if (window.document.all) {
		return false;
	}
}
/**
* Funcion de document.onmousedown para Netscape o Mozilla,  
* usada para ocultar el menú contextual
*/
function clickNS(e) {
	if (window.document.layers || (window.document.getElementById&&!window.document.all)) {
		if (e.which==2||e.which==3) {
			return false;
		}
	}
}
/**
* Deshabilita el menu contextual para la página.
*/
function disableContextMenu(){
	if (window.document.layers) {
		window.document.captureEvents(Event.MOUSEDOWN);
		
		window.document.onmousedown=clickNS;
	}else{
		window.document.onmouseup=clickNS;
		window.document.oncontextmenu=clickIE;
	}

	window.document.oncontextmenu=new Function("return false")
}
function showInputError(paramName, index){
	showInput(paramName, index,'#ffeeee');
}
function showInputWarn(paramName, index){
	showInput(paramName, index,'#ffffee');
}
function showInputInfo(paramName, index){
	showInput(paramName, index,'#eeffee');
}
/**
*	Funcion que cambia el color de fondo de un campo de un formulario
*	para indicar un error en los datos ingresados.
*/
function showInput(paramName, index, color){
	if (paramName=="")
		return;
	if (index==-1)
		index=0;
	showI_actualIndex=0;
	for (showI_i=0;showI_i<document.forms.length;showI_i++){
		for (showI_j=0;showI_j<document.forms[showI_i].elements.length;showI_j++){
			if (paramName==document.forms[showI_i].elements[showI_j].name){
				if (showI_actualIndex!=index) {
					showI_actualIndex++;
					continue;
				}
				if (document.forms[showI_i].elements[showI_j].type=="hidden"){
					return;
				}
				document.forms[showI_i].elements[showI_j].focus();
				if (document.forms[showI_i].elements[showI_j].style.backgroundColor==color){
					return;
				}
				window.setTimeout("document.forms["+showI_i+"].elements["+showI_j+"].focus()",500);
				window.setTimeout("document.forms["+showI_i+"].elements["+showI_j+"].style.backgroundColor='"
					+document.forms[showI_i].elements[showI_j].style.backgroundColor+"'",3000);
				document.forms[showI_i].elements[showI_j].style.backgroundColor=color;
				return;
			}
		}
	}
}
/**
* Busca y establece el valor de un parámetro en las formas de una página.
*/
function setParameter(paramName, index, paramValue){
//alert("entra "+paramName+" "+ index+" "+paramValue);
	if (paramName=="")
		return;
	if (index==-1)
		index=0;
	//ciclo de formas
	for (setParam_i=0;setParam_i<document.forms.length;setParam_i++){
		showI_actualIndex=0;
		//ciclo de elemantos en formas
		for (setParam_j=0;setParam_j<document.forms[setParam_i].elements.length;setParam_j++){
			if (paramName==document.forms[setParam_i].elements[setParam_j].name){
				type = document.forms[setParam_i].elements[setParam_j].type;
//alert(document.forms[setParam_i].elements[setParam_j].type +" "+document.forms[setParam_i].elements[setParam_j].name+" "+document.forms[setParam_i].elements[setParam_j].value);

				if (type=="text" || type=="password" || type=="textarea" || type=="hidden"){
					if (showI_actualIndex!=index){
						showI_actualIndex++;
						continue;
					}
					document.forms[setParam_i].elements[setParam_j].value=paramValue;
					return;
				}
				if (type=="select-one" || type == "select-multiple"){
					if (type=="select-one" && showI_actualIndex!=index){
						showI_actualIndex++;
						continue;
					}
					for (setParam_k=0;setParam_k<document.forms[setParam_i].elements[setParam_j].options.length;setParam_k++){
						if (document.forms[setParam_i].elements[setParam_j].options[setParam_k].text==paramValue 
							|| document.forms[setParam_i].elements[setParam_j].options[setParam_k].value==paramValue ){
							document.forms[setParam_i].elements[setParam_j].options[setParam_k].selected=true;
							return;
						}else{
							document.forms[setParam_i].elements[setParam_j].options[setParam_k].selected=false;
						}
					}
					document.forms[setParam_i].elements[setParam_j].options[ document.forms[setParam_i].elements[setParam_j].length ] = new Option(paramValue,paramValue);
				}
				if (type=="checkbox" || type=="radio"){
					if (document.forms[setParam_i].elements[setParam_j].value==paramValue){
						document.forms[setParam_i].elements[setParam_j].checked=true;
						return;
					}
				}
				
			}
		}
	}
}

function chgDomain(wind, domain){
	if (wind.frames["cipbanner"]){
		wind.frames["cipbanner"].document.images["bannercip"].src="image/cip"+domain+".jpg";
	}
}

function calculator(){
	width_=280;
	height_=200;
	left_ = (screen.width - width_) / 2;
	top_  = (screen.height - height_) / 2;
	window.open("../vcsoft/js/calculator.html","calcWindow", "scrollbars=no" 
		+ ",status=no,toolbar=no,menubar=no,resizable=no,left=" + left_ + ",top=" + top_ 
		+ ",width=" + width_ + ",height=" + height_);
}
function printPage(){
	width_=815;
	height_=550;
	left_ = (screen.width - width_) / 2;
	top_  = (screen.height - height_) / 2;
	window.open("","printWindow", "scrollbars=yes" 
		+ ",status=no,toolbar=no,menubar=no,resizable=yes,left=" + left_ + ",top=" + top_ 
		+ ",width=" + width_ + ",height=" + height_);
	oldtarg = document.forma.target;
	document.forma.target="printWindow";
	document.forma.outType.value="print";
	document.forma.submit();
	document.forma.outType.value="html";
	document.forma.target=oldtarg;
}
function printUrl(urlTarget){
	width_=815;
	height_=550;
	left_ = (screen.width - width_) / 2;
	top_  = (screen.height - height_) / 2;
	sep="?";
	if (urlTarget.indexOf(sep)!=-1)
		sep="&";
	window.open(urlTarget+sep+"outType=print","printWindow", "scrollbars=yes" 
		+ ",status=no,toolbar=no,menubar=no,resizable=yes,left=" + left_ + ",top=" + top_ 
		+ ",width=" + width_ + ",height=" + height_);
}
function excelPage(filename){
	windowName="excelWindow"+(new Date().getTime());
	width_=800;
	height_=550;
	//alert(width_+" "+height_+" a");
	
	left_ = (screen.width - width_) / 2;
	top_  = (screen.height - height_) / 2;
	oldtarg = document.forma.target;
	oldact = document.forma.action;
	document.forma.target=windowName;
	document.forma.action="../files/"+filename+".xls";
	document.forma.outType.value="excel";

	excelWindow=window.open("",windowName, "scrollbars=yes" 
		+ ",status=no,toolbar=no,menubar=yes,resizable=yes,left=" + left_ + ",top=" + top_ 
		+ ",width=" + width_ + ",height=" + height_);
	excelWindow.document.write("<html><head><title>Excel</title></head><body  onmousemove='if((new Date().getTime())>i+1000){window.close();}'><script>var i=new Date().getTime();</script></body></html>");
	document.forma.submit();

	document.forma.outType.value="html";
	document.forma.target=oldtarg;
	document.forma.action=oldact;
}
function isInputKey(event){
	//tabulador y tabulador atras
	if(event.keyCode==9)
		return false;
	
	//shift
	if(event.keyCode==16)
		return false;	
	
	return true;
}
trselold=null;
function selRow(trsel){
	if (trselold)
		trselold.className="";
	trselold=trsel;
	trsel.className="celdaDatoEscogido";
}