// Formatea un número.
function formatNumber(number) {
	var result="";
	
	for(var i=number.length-1;i >= 0;i=i-3) {
		result=number.substring(i-2,i+1) + "." + result;
	}
	
	if(result.length == 0)
		return number;
	else {
		result=result.substring(0,result.length-1);
		return result;
	}
}

// Formatea el rut para hacerlo más amistoso.
function formatRut(rut) {
	var cleanRut=clearRut(trim(rut));
	if(cleanRut.length > 1) {
		var digVerif=cleanRut.substring(cleanRut.length-1);
		var rest=cleanRut.substring(0,cleanRut.length-1);
		
		var formatRest=formatNumber(rest);
		var result=formatRest + "-" + digVerif;
		
		return result;
	}
	
	return cleanRut;
}

// Formatea el rut para hacerlo más amistoso. 
// El rut y el dv se ingresan por separado.
function formatRutVD(rut, vd){
	var cleanRut=clearRutVD(trim(rut));
	var cleanVD=clearRut(trim(vd));
	if((cleanRut.length>1)&&(cleanVD.length)){
		var formatRut=formatNumber(cleanRut);
		var result=formatRut + " " +cleanVD
		return result;
	}	
	return cleanRut+ " " +cleanVD;
}

// Formatea el rut (din digito verificador) para hacerlo más amistoso.
function formatRutWithoutVD(rut){
	var cleanRut=clearRutVD(trim(rut));
	if (cleanRut.length>1){
		var result=formatNumber(cleanRut);
		return result;
	}
	return cleanRut;
}

function trim(cadena) {
	cadena="" + cadena;
	var nuevacadenal="";
	var nuevacadenar="";
	var intLimitel;
	var intLimiter;
	 
	for(i=0;i<cadena.length;i++) {
	  if(cadena.charAt(i)==" ") {
	    intLimitel++;
	  } else {
	  	break;
	  }
	}
	
	nuevacadenal=cadena.substring(intLimitel,cadena.length);
	
	intLimiter=nuevacadenal.length;
	for(i=nuevacadenal.length-1;i>=0;i--) {
	    if(nuevacadenal.charAt(i)==" ") {
			intLimiter--;
	    } else {
		  break;
		}
	}
	
	nuevacadenar=nuevacadenal.substring(0,intLimiter);
	
	return(nuevacadenar)
}

// Retorna el Digito verificador de un RUT.
function digitoVerificador(strRut) {
    var Largo, LargoN, i, Total;
    var Numero="", Verif, Carac, CaracVal;
    var tmpRut,intTmp;
    
    tmpRut = trim(strRut)
    Largo = tmpRut.length
    LargoN = 0
    for(i=0;i<Largo;i++) {
        Carac = parseInt(tmpRut.charAt(i),10);
        if(Carac >=0 && Carac <=9) {
			Numero+=tmpRut.charAt(i);
            LargoN++;
	 	}
    }

	Total=0;
    for(i=LargoN-1;i>=0;i--) {
		if((LargoN - i) < 7) {
		   intTmp=LargoN - i + 1;
		} else {
		   intTmp=LargoN - i - 5;
		}
        Total+= parseInt(Numero.charAt(i),10) * intTmp 
    }
    
    CaracVal = 11 - (Total % 11)
    
    if(CaracVal==10) {
       return('K');
	}
	
	if(CaracVal >=0 && CaracVal <=9) {
       return(CaracVal);
	}
	
	if(CaracVal==11) {
	   return(0);
    }
}

// Quita puntos y guiones del rut.
function clearRut(rut) {
	var result="";
	var mask="0123456789kK";
	
	for(var i=0;i < rut.length;i++) {
		if(mask.indexOf(rut.charAt(i)) >= 0)
			result+=rut.charAt(i);
	}
	
	return result;
}

// Quita puntos, guiones y caracteres del rut.
function clearRutVD(rut){
	var result="";
	var mask="0123456789";
	
	for(var i=0;i < rut.length;i++) {
		if(mask.indexOf(rut.charAt(i)) >= 0)
			result+=rut.charAt(i);
	}	
	
	return result;
}

// Verifica que el Digito verificador se corresponda
// con el RUT.
function isValidRut(strRut,eok) {
   eok=(eok==null || typeof(eok)=='undefined')?false:eok;
   
   if(strRut.length==0)
   	 return eok;
   	
   var digVerif="";
   var cleanRut=clearRut(strRut);
   var strDigito=cleanRut.substring(cleanRut.length-1);
   cleanRut=cleanRut.substring(0,cleanRut.length-1);
   digVerif="" + digitoVerificador(cleanRut);
   
   if(digVerif.toUpperCase()==strDigito.toUpperCase())
       return(1);
   else
   	   return(0);
}

//Estados del resultado de un popup.
var POPUP_CANCEL=0;
var POPUP_ACCEPT=1;


//Crea una nueva ventana pop-up.
function newWindow(mypage, myname, w, h, scroll) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'status=1,height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable';
	return window.open(mypage, myname, winprops);
}

//Retorna un arreglo de controles con el nombre especificado.
function getControlArray(control) {
	if(document.all) {
		if(typeof(document.all[control])=='undefined' || document.all[control]==null)
			return new Array();
		
		var item=document.all[control];
		var items=new Array();
		
		if(item!=null && typeof(item)!='undefined' && typeof(item.tagName)!='undefined') {
			// It isn't array.
			items.push(item);
		} else {
			items=item;
		}
		return items;
	} else {
		var candidates=document.forms[0].elements;
		var result=new Array();
		for(var i=0;i < candidates.length;i++) {
			if(candidates[i].name==control)
				result[result.length]=candidates[i];
		}
		
		return result;
	}
}

// Desactiva los checkbox dados por controlName
function cancelSelection(controlName) {
	changeSelectState(controlName,false);
}

function selectAll(controlName) {
	changeSelectState(controlName,true);
}

function areSelected(controlName) {
	var inputs=document.getElementsByTagName("input");
	var elem;

	for(var i=0;i < inputs.length;i++) {
		elem=inputs[i];
		if(elem.type=='checkbox' && elem.name.lastIndexOf(controlName)==(elem.name.length-controlName.length)) {
			if(elem.checked)
				return true;
		}
	}
	
	return false;
}

function changeSelectState(controlName,checked) {
	var inputs=document.getElementsByTagName("input");
	var elem;
	for(var i=0;i < inputs.length;i++) {
		elem=inputs[i];
		if(elem.type=='checkbox' && elem.name.lastIndexOf(controlName)==(elem.name.length-controlName.length)) {
			elem.checked=checked;
		}
	}
}


// Asocia un botón cuando se presiona Enter en una caja de texto.
function bindButton(btn){
  var elem=document.getElementById(btn);
  if (document.all) {
  	if (event.keyCode == 13) {
  		event.returnValue=false;
  		event.cancel = true;
  		if(elem!=null && typeof(elem)!='undefined') {
  			elem.click();
  		}
  	}
  }
}

//Establece el foco ante validación de cliente.
function setFocusOnValidation(imageName) {
	if(imageName==null || typeof(imageName)=='undefined' || imageName.length == 0)
		imageName="validator";
		
	var img=getControlArray(imageName);
	var validators;
	if(img!=null && typeof(img)!='undefined') {
		if(typeof(img.length)!='undefined') {
			validators=img;
		} else {
			validators=new Array();
			validators.push(img);
		}
		
		if(validators.length == 0)
			return;
			
		for(var i=0;i < validators.length;i++) {
			var currentValidator=currentValidator=validators[i].parentElement;
			if(currentValidator!=null && typeof(currentValidator)!='undefined') {
				if(currentValidator.style.visibility=='visible') {
					var controlName=currentValidator.getAttribute("controltovalidate");
					if(controlName!=null && typeof(controlName)!='undefined') {
						var control=document.getElementById(controlName);
						if(control!=null && typeof(control)!='undefined' && control.focus) {
							control.focus();
							return;
						}
					}
				}
			}
		}
	}
	
	return;
}



// Move row in a Table.
		// Return true if row was moved.
		function moveDownOption(tableName,index) {
			var optTable=document.getElementById(tableName);
			if(optTable!=null && typeof(optTable)!='undefined') {
				if(index==optTable.rows.length-1)
					return false;

				var selectRow=optTable.rows[index];
				var downRow=optTable.rows[index+1];
				
				for(var i=0;i < selectRow.cells.length;i++) {
					var tmp=downRow.cells[i].innerHTML;
					downRow.cells[i].innerHTML=selectRow.cells[i].innerHTML;
					selectRow.cells[i].innerHTML=tmp;
				}
			}
			
			return true;
		}
		
		// Returns true if row was moved
		function moveUpOption(tableName,index) {
			if(index==1)
				return false;

			var optTable=document.getElementById(tableName);
			if(optTable!=null && typeof(optTable)!='undefined') {
				var selectRow=optTable.rows[index];
				var upperRow=optTable.rows[index-1];
				
				for(var i=0;i < selectRow.cells.length;i++) {
					var tmp=upperRow.cells[i].innerHTML;
					upperRow.cells[i].innerHTML=selectRow.cells[i].innerHTML;
					selectRow.cells[i].innerHTML=tmp;
				}
			}
			
			return true;
		}
		

		
		function moveDown(tableName,checkName) {
			var optTable=document.getElementById(tableName);
			if(optTable!=null && typeof(optTable)!='undefined') {
				var checks=getControlArray(checkName);
				if(checks.length == 0) {
					alert("No hay opciones para mover");
					return;
				}
				
				var selectCount=0;
				for(var i=checks.length-1;i >= 0;i--) {
					if(checks[i].checked) {
						selectCount++;
						if(!moveDownOption(tableName,i+1))
							return;
					}
				}

				if(selectCount == 0) {
					alert("seleccione opciones para mover");
					return;
				}
			}
		}
		
		function moveUp(tableName,checkName) {
			var optTable=document.getElementById(tableName);
			if(optTable!=null && typeof(optTable)!='undefined') {
				var checks=getControlArray(checkName);
				if(checks.length == 0) {
					alert("No hay opciones para mover");
					return;
				}
				
				var selectCount=0;
				for(var i=0;i < checks.length;i++) {
					if(checks[i].checked) {
						selectCount++;
						if(!moveUpOption(tableName,i+1))
							return;
					}
				}

				if(selectCount == 0) {
					alert("seleccione opciones para mover");
					return;
				}
			}
		}
		
