package com.linx.dposandroid;

import android.app.Fragment;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.view.View.OnKeyListener;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;

public class CFragmentNumero extends Fragment {
	public String sLabel;
	public String sValorInicial;
	public String sNumeroMinimo;
	public String sNumeroMaximo;
	public int iMinimoDigitos = 0;
	public int iMaximoDigitos = 0;
	public int iDigitosExatos = 0;	
	public CDPOSDRVTELA cdposdrvtela;
	public boolean bFinalizada = false;
	private EditText edtNum;
	private TextView txtLabel;
	private String sAux;
    private FakeR fakeR;

	private void showKeyboard() {
     	InputMethodManager imm = (InputMethodManager) cdposdrvtela.getSystemService(Context.INPUT_METHOD_SERVICE);
     	imm.showSoftInput(edtNum, 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_numero_layout"), container, false);		
		txtLabel=(TextView) view.findViewById(fakeR.getId("id","txtLabelString"));		
     	edtNum=(EditText) view.findViewById(fakeR.getId("id","edtNumero"));
     	txtLabel.setText(sLabel);
     	edtNum.setTextSize(12);
     	if(sValorInicial!="")
     		edtNum.setText(sValorInicial);
     	else
     		edtNum.setText("");

     	showKeyboard();     	
     	edtNum.requestFocus();

     	edtNum.setOnEditorActionListener(new OnEditorActionListener() {
	    @Override
	    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
	    	boolean bResult = false;
	    	
	    	//System.out.println("[CFragmentNumero] onEditorAction event ");
	    	
	    	if (actionId == EditorInfo.IME_ACTION_DONE) {
	    		System.out.println("[CFragmentNumero] ENTER do teclado pressionado");
	    		bResult = DadosValidos();
	    		if (bResult) {
		    		hideKeyboard();
	    		}
	    	}
	    	
	    	return bResult;
	    }
		});
		
     	edtNum.setOnKeyListener(new OnKeyListener() 
 		{
 			public boolean onKey(View v, int keyCode, KeyEvent event) 
 			{ 	 
 				boolean bResult = false;
 				
 				// if keydown and "enter" is pressed
 				if ((event.getAction() == KeyEvent.ACTION_DOWN)
 						&& (keyCode == KeyEvent.KEYCODE_ENTER)) 
 				{ 					
 					bResult = DadosValidos();
 		    		if (bResult) {
 			    		hideKeyboard();
 		    		}
 				}
 				else
 	 			if (event.getAction() == KeyEvent.ACTION_UP && (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9))
 	 			{
 	 				sAux=edtNum.getText().toString();
 	 				if(iMaximoDigitos>0 && sAux.length()>iMaximoDigitos)
 	 				{
 	 					sAux=sAux.substring(0,iMaximoDigitos);
 	 					edtNum.setText(sAux);
 	 					edtNum.setSelection(sAux.length());
 	 				}
 	 			}
 				
 				return bResult;
 			}
 		});   		
        return view;  
	}
	
	private boolean DadosValidos() {
 		if (iMinimoDigitos!=0 || iMaximoDigitos!=0 || iDigitosExatos!=0 )
 	        		{
 			if (iMinimoDigitos!=0)
 	        			{ 	        		             				
 	        				if(edtNum.getText().length() < iMinimoDigitos)
 	        				{
 	                			cdposdrvtela.bOKPressionado = false;
 					return false;
 	        				}
 	        			}
 			
 			if (iMaximoDigitos!=0)
 	        			{       				
 	        				if(edtNum.getText().length() > iMaximoDigitos)
 	        				{
 	                			cdposdrvtela.bOKPressionado = false;
 					return false;
 	        				}
 	        			}
 			
 			if (iDigitosExatos!=0)
 	        			{        				
 				if (edtNum.getText().length() != iDigitosExatos)
 	        				{
 	                			cdposdrvtela.bOKPressionado = false;
 					return false;
 	        				}
 	        			} 					
 	        		}
 					
 					cdposdrvtela.bOKPressionado = true;
		return true;
	}
	
    public String numeroCartaoDigitado() {
    	return edtNum.getText().toString();    	
    }
	
		
    
    
}
