package com.linx.dposandroid;

import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnKeyListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;

public class CFragmentValor extends Fragment {
	public CDPOSDRVTELA cdposdrvtela;
	private EditText edtValor;
	private TextView txtLabelValor;
	public String sLabel;
	public String sValor;
	public String sValorMinimo;
	public String sValorMaximo;
	public String sValorAtual;
	public String sMascara=" .   .   ,  ";
  private FakeR fakeR;
	private void showKeyboard() {
     	InputMethodManager imm = (InputMethodManager) cdposdrvtela.getSystemService(Context.INPUT_METHOD_SERVICE);
     	imm.showSoftInput(edtValor, InputMethodManager.SHOW_IMPLICIT);
        imm.toggleSoftInput(0, 0);
	}
	
	private void hideKeyboard() {
     	InputMethodManager imm = (InputMethodManager) cdposdrvtela.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(0, 0);
	}
	
	@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        /** Inflating the layout for this fragment **/
        
    fakeR = new FakeR(getActivity());
        
		View view = inflater.inflate(fakeR.getId("layout","fragment_valor_layout"), container, false);
		txtLabelValor=(TextView) view.findViewById(fakeR.getId("id","txtLabelValor"));
		txtLabelValor.setText(sLabel);
		
     	edtValor=(EditText) view.findViewById(fakeR.getId("id","edtValor"));
     	edtValor.setTextSize(12);
  		sValorAtual = sValor;
     	
  		showKeyboard();  		
		formataMostraValor(sValorAtual);
     	edtValor.setOnKeyListener(new OnKeyListener() 
 		{
 			public boolean onKey(View v, int keyCode, KeyEvent event) 
 			{
 				if (event.getAction() == KeyEvent.ACTION_DOWN && (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9))
 				{ 					
 					/*if (sValorAtual.length() < (sMascara.length()-3))
 					{
 						sValorAtual=sValorAtual + (char)event.getUnicodeChar();
 					}*/
 					
					sValorAtual = sValorAtual + (char)event.getUnicodeChar();
 					formataMostraValor(sValorAtual);
 					keyCode = 0;
 					return true;
 				}
 				else if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) 
 				{
	 				cdposdrvtela.bOKPressionado = true;
	 				hideKeyboard();
 		 			return true;
 				}
 				else if (event.getAction() == KeyEvent.ACTION_DOWN && ((keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_DEL)  && event.getRepeatCount() == 0))
				{
 					if(sValorAtual.length()<=1)
 					{
 						sValorAtual="";
 						formataMostraValor(sValorAtual); 						
 						return true;
 					}
 					
 					sValorAtual=sValorAtual.substring(0,sValorAtual.length()-1);
					formataMostraValor(sValorAtual); 					
 		 			return true;
				}
				else
 				{
					formataMostraValor(sValorAtual); 					
 				} 
 				return false;
 			} 
 		});   		
        return view;  
	}
	
	
    
    public String sStringValor() 
    {
    	return sValorAtual;
    /*	int iLaco,iTamValor,iIndice;
    	String sValor=edtValor.getText().toString();    	
    	char[] cValor = new char[10];
    	char[] cValorDigitado = new char[sValor.length()];
    	iTamValor = sValor.length();
    	cValorDigitado=sValor.toCharArray();
    	iIndice=0;
    	for(iLaco=0;iLaco<10;iLaco++)
    		cValor[iLaco]=0;
    	iLaco=0;
		while (iLaco < iTamValor)
		{
			if(cValorDigitado[iLaco]>='0' && cValorDigitado[iLaco]<='9')
			{
				cValor[iIndice]=cValorDigitado[iLaco];
				iIndice++;
			}
			iLaco++;
		}
		return new String(cValor); */
    }	
    
    public void formataMostraValor(String sValor)
    {
    	int iLaco,iTamValor,iIndice;
    	String sDisplay;
    	char[] cValor = new char[sMascara.length()];
    	char[] cValorDigitado = new char[sValor.length()];
    	
    	iTamValor = sValor.length();
    	if (iTamValor==0)
    		edtValor.setText("0,00");
    	else
    	{
    		Double dbValor = Double.valueOf(sValor);
    		dbValor = dbValor / 100;
    		sDisplay = dbValor.toString();
    		
    		edtValor.selectAll();
    		edtValor.setText(sDisplay);
    	}
    	
    		edtValor.setSelection(edtValor.getText().length());
    		edtValor.requestFocus();    		
    	
    	/*
    	if(iTamValor<=3)
    	{
        	cValorDigitado=sValor.toCharArray();    		
    		if(iTamValor==1)
    			sDisplay="0,0" + sValor;
    		else
        	if(iTamValor==2)
    			sDisplay="0," + sValor;
    		else
    			sDisplay=cValorDigitado[0]+","+cValorDigitado[1]+cValorDigitado[2];
    		edtValor.setText(sDisplay);
			edtValor.setSelection(edtValor.getText().length());
			edtValor.requestFocus();
			return;    		
    	}
    	cValorDigitado=sValor.toCharArray();
    	cValor=sMascara.toCharArray();
    	iIndice=sMascara.length()-1;
    	iLaco=iTamValor-1;
		while (iLaco>=0)
		{
			// procura posicao vazia para colocar numero
			while(iIndice>=0 && cValor[iIndice]!=' ') iIndice--;
			if(iIndice<0)
				break;			
			cValor[iIndice]=cValorDigitado[iLaco];
			iIndice--;
			iLaco--;
		}
		
		if(iIndice<0)
		{
    		edtValor.setText(new String(cValor));
			edtValor.setSelection(edtValor.getText().length());
			edtValor.requestFocus();
			return;
		}
		// procura o primeiro digito
		sDisplay="";
		iIndice++;
		iTamValor=sMascara.length()-1;
		for(iLaco=iIndice;iLaco<=iTamValor;iLaco++)
			sDisplay=sDisplay+cValor[iLaco];
		edtValor.setText(sDisplay);
		edtValor.setSelection(edtValor.getText().length());
		edtValor.requestFocus();
		*/
    }
}
