package dbfields;

import android.content.Context;
import android.text.InputFilter;
import android.text.InputType;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import kz.istt.locust.R;

public class TimeInput extends LinearLayout {

	private EditText etH = null;
	private TextView tv1 = null;
	private EditText etM = null;
	//private EditText etS = null; //Закоментил потому что секунды ненужны

	//Задаёт видимость полей
	public void setVisibleHMS(String val)
	{
		if(val.toLowerCase().indexOf("h")==-1)
		{
			if(etH.getParent()!=null)
				((ViewGroup) etH.getParent()).removeView(etH);
			if(tv1.getParent()!=null)
				((ViewGroup) tv1.getParent()).removeView(tv1);
		} else
		{
			if(etH.getParent()==null) addView(etH);
			if(tv1.getParent()==null) addView(tv1);
		}

		if(val.toLowerCase().indexOf("m")==-1)
		{
			if(etM.getParent()!=null)
				((ViewGroup) etM.getParent()).removeView(etM);
			if(tv1.getParent()!=null)
				((ViewGroup) tv1.getParent()).removeView(tv1);
		} else
		{
			if(etM.getParent()==null) addView(etM);
			if(tv1.getParent()==null) addView(tv1);
		}
	}

	public TimeInput(Context context, AttributeSet attr) {
		super(context, attr);

		int maxLength = 10;
		InputFilter[] fArray = new InputFilter[1];
		fArray[0] = new InputFilter.LengthFilter(maxLength);

		LinearLayout.LayoutParams paramMessage = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
		paramMessage.weight = (float) 1.0;
		
		etH = new EditText(context);

		etH.setHint(context.getResources().getString(R.string.Hours));
		etH.setInputType(InputType.TYPE_CLASS_NUMBER);
		etH.setFilters(new InputFilter[] {new InputFilter.LengthFilter(4)}); //Почему-то не работает…
		etH.setMaxEms(10);
		etH.setFilters(fArray);
		addView(etH,paramMessage);
		
		tv1 = new TextView(context);
		tv1.setText(":");
		addView(tv1);

		etM = new EditText(context);
		etM.setHint(context.getResources().getString(R.string.Minutes));
		etM.setInputType(InputType.TYPE_CLASS_NUMBER);
		etM.setFilters(new InputFilter[] {new InputFilter.LengthFilter(4)}); //Почему-то не работает…
		etM.setMaxEms(10);
		etM.setFilters(fArray);
		addView(etM/*,paramMessage*/);
/*
		tv = new TextView(context);
		tv.setText(":");
		addView(tv);

		etS = new EditText(context);
		etS.setHint(context.getResources().getString(R.string.Seconds));
		etS.setInputType(InputType.TYPE_CLASS_NUMBER);
		etS.setFilters(new InputFilter[] {new InputFilter.LengthFilter(4)}); //Почему-то не работает…
		etS.setMaxEms(10);
		etS.setFilters(fArray);
		addView(etS,paramMessage);
*/
	}
	
	
	
	/** 
	 * Секунд с начала дня
	 */
	public void setTime(Long time)
	{
		if(time == null) setTime((Date)null);
		else setTime(new Date(time  * 1000L));
	}

	public void setTime(Date time)
	{
		if(time == null)
		{
			etH.setText("");
			etM.setText("");
			//etS.setText("");
		}else
		{
			etH.setText(new SimpleDateFormat("HH").format(time));
			etM.setText(new SimpleDateFormat("mm").format(time));
			//etS.setText(new SimpleDateFormat("ss").format(time));
		}
	}

	/**
	 * Получить секунд с начала дня по гринвичу с учётом временой зоны
	 * @return
	 */
	public Long getTime()
	{
		Date d=null;
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
		sdf.setTimeZone(TimeZone.getDefault());
		try
		{
			//d = sdf.parse(etH.getText().toString()+":"+etM.getText().toString()+":"+etS.getText().toString());
			String h = etH.getText().toString();
			if(h.equals("")) h="00";

			String m = etM.getText().toString();
			if(m.equals("")) m="00";
			//String s = etS.getText().toString();
			//if(s.equals("")) s="00";

			d = sdf.parse(h+":"+m+":00");
		} catch (ParseException e) {
			return null;
		}
		return d.getTime() / 1000L;
	}
}
