// FUNCIONES PARA EL TAG NUMBER //

// ON_KEY_PRESS
function sw_inputNumber_Integer(pObject, event, pSizeEnter){
	
	tecla = (document.all) ? event.keyCode : event.which;
	
	// Especiales
	if (tecla == 0 || tecla == 8 || tecla == 13){
		return true;
	}
	
	// Tamanyo
	pValue = pObject.value;
	if (pValue.length >= pSizeEnter) {
		return false;
	}
	
	// Numericos
	if (tecla < 48 || tecla > 57){ 
		return false;
	}
	return true;
}

function sw_inputNumber_Decimal(pObject, pCaracterDecimal, event, pSizeEnter){
	pValue = pObject.value;
	pLength = pObject.value.length;
	
	tecla = (document.all) ? event.keyCode : event.which;
	
	// Especiales
	if (tecla == 0 || tecla == 8 || tecla == 13){
		return true;
	}	
	
	// Condiciono el caracter decimal
	if (pCaracterDecimal == ','){
		if ((tecla == 44 && pLength == 0) 
			|| (tecla == 44 && pValue.indexOf(',') != -1) 
			|| ((tecla < 48 || tecla > 57) && tecla != 44)){ 
			return false;
		}
	} else if (pCaracterDecimal == '.'){	
		if ((tecla == 46 && pLength == 0) 
			|| (tecla == 46 && pValue.indexOf('.') != -1) 
			|| ((tecla < 48 || tecla > 57) && tecla != 46)){ 
			return false;
		}
	}
	
	return true;
}


// ON_FOCUS
function sw_inputNumber_SeparatorsOut(pCampo, pCharMiles){
	pValor = pCampo.value;
	result = "";
	
	for (contador=0 ; contador<pValor.length ; contador++){
		if (pValor.charAt(contador) != pCharMiles){
			result+=pValor.charAt(contador);
		}
	}
	
	pCampo.value = result;
}


// ON_BLUR
function sw_inputNumber_Format(pCampo, pNumeroEnteros, pNumeroDecimales, pMaximo, 
	pMinimo, pCaracterMiles, pCaracterDecimal, pPonerMiles, pEvaluarMaximo, pEvaluarMinimo){

	pValor = pCampo.value;
	
	if (pValor.indexOf(pCaracterDecimal) != -1) {
		entero = pValor.substring(0, pValor.indexOf(pCaracterDecimal));
		if (entero.length > pNumeroEnteros) {
			if (entero != "0"){
				alert (sw_components_number01 + pNumeroEnteros + sw_components_number02);
				pCampo.select();
				return false;	
			}		
		}
	} else {	
		entero = pValor;
		if (entero.length > pNumeroEnteros) {
			if (entero != "0"){
				alert (sw_components_number01 + pNumeroEnteros + sw_components_number02);
				pCampo.select();
				return false;	
			}		
		}
	}
		
	// Evaluo los limites maximo y minimo permitidos
	if (pEvaluarMaximo || pEvaluarMinimo){
		pConversion = pValor.replace(",",".");
		
		if (pEvaluarMaximo){
			if (parseFloat(pConversion) > pMaximo){
				alert (sw_components_number03 + pMaximo);
				pCampo.select();
				return false;			
			}
		}
		if (pEvaluarMinimo){	
			if (parseFloat(pConversion) < pMinimo){
				alert (sw_components_number04 + pMinimo);
				pCampo.select();
				return false;			
			}
		}
	}
	
	// Formateo los decimales permitidos		
	if (pNumeroDecimales == 0){
		ValorDefecto = '0';
	} else {
		ValorDefecto = "0"+pCaracterDecimal;
		for (contador=1 ; contador<=pNumeroDecimales ; contador++){
			ValorDefecto += '0';		
		}
	}	
	
	if (pValor == ''){
		pValor = ValorDefecto;
	}
	
	PosicionComa = pValor.indexOf(pCaracterDecimal);
	
	if (pNumeroDecimales != 0){

		if (PosicionComa==-1){
			pValor += pCaracterDecimal;
			
			for (contador=1;contador<=pNumeroDecimales;contador++){
				pValor+="0";
			}
		}else{
			DecimalesTiene=pValor.length-(PosicionComa+1);
			if (DecimalesTiene<pNumeroDecimales){
				for (contador=DecimalesTiene;contador!=pNumeroDecimales;contador++){
					pValor+="0";
				}
			}	
			
			if (DecimalesTiene > pNumeroDecimales){
				pValor=pValor.substring(0,pValor.length-(DecimalesTiene-pNumeroDecimales));
			}
		}
	}	
	
	if (pPonerMiles){
		PosicionesMiles=0;
			
		result="";
		for (contador=pValor.length ; contador>=0 ; contador--){
			if (pNumeroDecimales!=0){
				if (pValor.length-contador>pNumeroDecimales+1){
					PosicionesMiles++;
					
					if (PosicionesMiles==3 && contador>0){
						PosicionesMiles=0;
						result=pCaracterMiles+pValor.charAt(contador)+result;
					}else{
						result=pValor.charAt(contador)+result;	
					}
				}else{
					result=pValor.charAt(contador)+result;
				}
			}else{
				PosicionesMiles++;
					
				if (PosicionesMiles==4 && contador>0){
					PosicionesMiles=1;
					result=pCaracterMiles+pValor.charAt(contador)+result;
				}else{
					result=pValor.charAt(contador)+result;	
				}
			}
				
		}
		
		pCampo.value=result;
	}else{
		pCampo.value=pValor;
	}	
	
}
