package com.androidbegin.buttonclicktutorial;

import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;






















import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextWatcher;
import android.text.method.ScrollingMovementMethod;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.Scroller;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.graphics.Color;
import android.app.ActionBar.LayoutParams;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;

public class infos_appointment03 extends Activity 
{
		CheckBox checkBox;

	
		TimeWidgetSlider start_timeSliderHour = null;
		TimeWidgetSlider start_timeSliderMinutes = null;
		TimeWidgetSlider end_timeSliderHour = null;
		TimeWidgetSlider end_timeSliderMinutes = null;
		
		private Button btnStartTime = null;
		private Calendar dateStart = null;
		
		private String date_event;
	    
	    LinearLayout layout1;
	    private static int viewsCount = 0;
	    private List<View> allViews = new ArrayList<View>();
	    LinearLayout.LayoutParams params;
	    
    
		private static String sStrSelect = "Select time";
		private static String sStrSet = "set";
		private static String sStrNone = "none";
		
		public static final int SELECT_TIME_REQUEST = 112;
		public static final int iSliderViewWidth = 276;
		private static final int iSmallButtonWidth = 100;	
		
		private LinearLayout layContent = null;
		private LinearLayout layContent2 = null;
		
		private Button btnNone = null;
		private Button btnOK = null;
		
		//fields
		private boolean bNoneButton = true;
		private boolean b24HourMode = false;
		private int start_hour = -1;
		private int start_minutes = -1;
		private int end_hour = -1;
		private int end_minutes = -1;
		
		private RelativeLayout mLayout;
		 
		String display_date = "";
		 
		int starthour;
		int startminute;
		int endhour; 
		int endminute;
		
		String date_selection;
		int index;
		
		DB_alarm db;
		appointment class_id = new appointment();
		
		String sid , titre,  start_timestamp , end_timestamp , phone , notes , option_delai, delai, option_vibrate, option_ringtone , status ,	 creation,  modification; 
		
		TextView tv_set_time_start;
		TextView tv_set_time_end;
		
	    static final int TIME_DIALOG_START = 1200;
	    static final int TIME_DIALOG_END = 1300;
	    	 
		int hour;
		int minute;
		
		int global_start_hour = 0; 
		int global_start_min = 0;

		int global_end_hour = 0; 
		int global_end_min = 0;

		String option_alarm;
		
		CheckBox checkBox_option_delai;
		CheckBox checkBox_option_vibrate;
		CheckBox checkBox_option_ringtone;
		

	
	@Override
	public void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		  
		db = new DB_alarm(getApplicationContext());
		
		ActionBar actionBar = getActionBar();
        getActionBar().setHomeButtonEnabled(true);
        getActionBar().setDisplayHomeAsUpEnabled(true);
        setTitle("Rendez-vous");
        
		
		Bundle extras = getIntent().getExtras();
		index = extras.getInt("index");
		date_selection = extras.getString("date_selection");
		
		//cal_display
		String[]tmp = date_selection.split(" ");
	    int jour = Integer.parseInt(tmp[0]);
	    int mois = Integer.parseInt(tmp[1]);
	    int annee = Integer.parseInt(tmp[2]);
	    mois = mois - 1;
	    Calendar cal = Calendar.getInstance();
	    cal.set(annee, mois, jour, 0, 0, 0); 
	    cal.set(Calendar.MILLISECOND, 0);
		
	    SimpleDateFormat formatter = new SimpleDateFormat("d MMMM, yyyy", Locale.ENGLISH);
        date_event = formatter.format(cal.getTime());

        /* lecture de la database*/
        
    	String id = String.valueOf(index);
		String requete = "SELECT * FROM table_appointment WHERE _id = " + id ;
 	
		Cursor Cursor = db.DB_query(requete);
		int val = Cursor.getCount();
		
		if(val != 0)
		{
				if (Cursor.moveToFirst()) 
				{
 					do 
 					{
							sid = Cursor.getString(Cursor.getColumnIndex(DB_alarm.KEY_ID ));
	 						titre = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_TITRE ));
	 						start_timestamp = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_START_TIME ));
	 						end_timestamp = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_END_TIME ));
	 						phone = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_PHONE ));
	 						
	 						//option_delai = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_OPTION_DELAI ));
	 						option_delai = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_DELAI ));
	 						option_vibrate = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_OPTION_VIBRATE ));
	 						option_ringtone = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_OPTION_RINGTONE ));
	 						
	 						notes = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_NOTES ));
	 						status = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_STATUS ));
	 						creation = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_CREATEDTIME ));
	 						modification = Cursor.getString(Cursor.getColumnIndex(DB_alarm.COL_MODIFIEDTIME ));
 					} while (Cursor.moveToNext());
 					
				}
		}
	
        
        /**/
        
		//class_id = MainActivity.appointment_DB.get(index-1);
		//titre = class_id.getTitre();
		//Date start_time = class_id.getStart_time(); 
		//Date end_time = class_id.getEnd_time(); 
		//phone =  class_id.getPhone(); 
		//notes = class_id.getNotes(); 
		
		
		//class_id = agenda02.appointment_liste.get(index-1);
		//titre = class_id.getTitre();
		//Date start_time = class_id.getStart_time(); 
		//Date end_time = class_id.getEnd_time(); 
		//phone =  class_id.getPhone(); 
		//notes = class_id.getNotes(); 
		
		Date start_time = new Date(Long.parseLong(start_timestamp));
		Date end_time = new Date(Long.parseLong(end_timestamp));

		
        //
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(start_time);
		starthour = calendar.get(Calendar.HOUR_OF_DAY); // 24 hour clock
		startminute = calendar.get(Calendar.MINUTE);
		calendar.setTime(end_time);
		endhour = calendar.get(Calendar.HOUR_OF_DAY); // 24 hour clock
		endminute = calendar.get(Calendar.MINUTE);
		
		
		layout();
	   //setContentView(widget());
		
		//registerForContextMenu(getListView());

			
	}
	
	public void layout()
	{
		
		LinearLayout layMain = createLayout(LinearLayout.VERTICAL);  	
 		layMain.setPadding(8, 8, 8, 8);
 		
 		ScrollView scrollView= new ScrollView(this);
        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);               
        
/******************** Image *************************/    
        
 		LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(0); 
 		ImageView imageView = new ImageView(this);
 		imageView.setImageResource(R.drawable.appointment);
 		LayoutParams layoutParams=new LayoutParams(75, 75);
 	    layoutParams.setMargins(10,10,0,0);
 	    imageView.setLayoutParams(layoutParams);
 	    ll.addView(imageView);
        mainLayout.addView(ll);

/******************** Titre *************************/    
        
 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        ll.setTag(1); 
        TextView tv = new TextView(this);
        tv.setText("Evenement");
        tv.setPadding(10, 10, 0, 0);
 	    ll.addView(tv);
        mainLayout.addView(ll);
        
 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(2); 
        final EditText editText = new EditText(this);
        editText.setEnabled(false);
        editText.setId(150);
        //editText.setText("titre");
        layoutParams=new LayoutParams(450, 75);
        editText.setLayoutParams(layoutParams);
        editText.setSingleLine(true);
        editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(20) });
 	    ll.addView(editText);
        mainLayout.addView(ll);

/******************** Date *************************/    
        
 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(3); 
 		/**/
        tv = new TextView(this);
        String tmp = "Date : " + date_event;
        tv.setText(tmp);
        tv.setPadding(10, 30, 0, 30);
        /**/
 	    ll.addView(tv);
        mainLayout.addView(ll);
         
/******************** Heure *************************/    
        
        String str_starthour = pad(starthour); 
        String str_startminute = pad(startminute);
        
        String str_endhour = pad(endhour); 
        String str_endminute = pad(endminute);
        
        String start = str_starthour + ":" + str_startminute;
        String end = str_endhour + ":" + str_endminute;
        
 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        ll.setTag(4); 
        tv = new TextView(this);
        tv.setText("Start Time : ");
        tv.setPadding(10, 10, 0, 30);
 	    ll.addView(tv);
//       mainLayout.addView(ll);
        
//      ll = new LinearLayout(this);
//      ll.setOrientation(LinearLayout.HORIZONTAL);
        tv_set_time_start = new TextView(this);
        tv_set_time_start.setText(start); 
        tv_set_time_start.setPadding(10, 10, 50, 30);
 	    ll.addView(tv_set_time_start);
        mainLayout.addView(ll);

 		ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        ll.setTag(4); 
        tv = new TextView(this);
        tv.setText("End Time : ");
        tv.setPadding(10, 10, 0, 30);
 	    ll.addView(tv);
//        mainLayout.addView(ll);
        
//        ll = new LinearLayout(this);
//        ll.setOrientation(LinearLayout.HORIZONTAL);
        tv_set_time_end = new TextView(this);
        tv_set_time_end.setText(end);
        tv_set_time_end.setPadding(10, 10, 50, 30);
 	    ll.addView(tv_set_time_end);
        mainLayout.addView(ll);
       
/******************** option alarme *************************/        
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        ll.setTag(8); 
        
        tv = new TextView(this);
 	   	tv.setText("Delay");
       	tv.setPadding(10, 10, 0, 30);
	   	ll.addView(tv);

 	    final Spinner Spinner_alarm = new Spinner(this);  
        Spinner_alarm.setId(900);
        Spinner_alarm.setPadding(20, 10, 0, 10);
        layoutParams=new LayoutParams(125, 75);
        layoutParams.width += 50;  //
        Spinner_alarm.setLayoutParams(layoutParams);
        List<String> myArraySpinner = new ArrayList<String>();
        myArraySpinner.add("0min");
        myArraySpinner.add("15min");
        myArraySpinner.add("30min");     
        myArraySpinner.add("1H");
        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, myArraySpinner);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        Spinner_alarm.setAdapter(spinnerArrayAdapter);
        Spinner_alarm.setEnabled(false);
        Spinner_alarm.setVisibility(View.VISIBLE); 
 	    ll.addView(Spinner_alarm);
        mainLayout.addView(ll);

        final RadioGroup rg = new RadioGroup(getApplicationContext());
        rg.setOrientation(RadioGroup.HORIZONTAL);
        rg.setId(1234);
        RadioButton rb_ringtone = new RadioButton(getApplicationContext());
        rb_ringtone.setId(1678);
        rb_ringtone.setEnabled(false);
        rb_ringtone.setText("Ringtone");
        rb_ringtone.setTextColor(Color.BLACK);
        rg.addView(rb_ringtone);
        RadioButton rb_vibrate = new RadioButton(getApplicationContext());
        rb_vibrate.setId(2678);
        rb_ringtone.setEnabled(false);
        rb_vibrate.setText("Vibrate");
        rb_vibrate.setTextColor(Color.BLACK);
        rg.addView(rb_vibrate);
        mainLayout.addView(rg);
        
/******************** Phone *************************/        
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(9); 
        tv = new TextView(this);
        tv.setText("Phone");
        tv.setTag(50);
        tv.setPadding(10, 10, 0, 10);
 	    ll.addView(tv);
        mainLayout.addView(ll);
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        ll.setTag(10); 
        EditText editText_phone = new EditText(this);
        editText_phone.setId(100);
        editText_phone.setEnabled(false);
        //editText.setText(phone);
        layoutParams=new LayoutParams(300, 75);
        editText_phone.setLayoutParams(layoutParams);
        editText_phone.setSingleLine(true);
        editText_phone.setFilters(new InputFilter[] { new InputFilter.LengthFilter(10) });
        editText_phone.setInputType(InputType.TYPE_CLASS_PHONE);
 	    ll.addView(editText_phone);
 	  //  mainLayout.addView(ll);
 	    
 	    Button btn_phone = new Button(this);
 	    btn_phone.setId(567);
 	    btn_phone.setPadding(0,0,0,0);
 	    btn_phone.setText("Call");
        ll.addView(btn_phone);
        mainLayout.addView(ll);
		

/******************** Note *************************/        
        
        ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setTag(8); 
        tv = new TextView(this);
        tv.setText("Notes");
        tv.setPadding(10, 10, 0, 10);
 	    ll.addView(tv);
        mainLayout.addView(ll);
		
        ll = new LinearLayout(this);
       	ll.setOrientation(LinearLayout.VERTICAL);
       	ll.setTag(9); 
       	final View childView = getLayoutInflater().inflate(R.layout.notes_view, null);
        ll.addView(childView);
        mainLayout.addView(ll);
 
/******************** Boutons *************************/        
           
       ll = new LinearLayout(this);
       ll.setOrientation(LinearLayout.HORIZONTAL);
       ll.setGravity(Gravity.CENTER);
       //Button b1 = new Button(this);
       //b1.setId(1);
       //b1.setText("Sauver");
       //ll.addView(b1);
       Button b2 = new Button(this);
       b2.setId(2);
       b2.setText("Delete");
       ll.addView(b2);
       Button b3 = new Button(this);
       b3.setId(3);
       b3.setText("Exit");
       ll.addView(b3);
       mainLayout.addView(ll);

/******************** Insert  la vue layout *************************/        
        
        scrollView.addView(mainLayout);
        layMain.addView(scrollView);
        setContentView(layMain);

/******************** Remplir les champs *************************/        
        
        
        EditText idtitre = (EditText)findViewById(150);  
        idtitre.setText(titre);
        
        final EditText idphone = (EditText)findViewById(100);  
        idphone.setText(phone);
        
        EditText idnotes = (EditText)findViewById(R.id.notes);  
        idnotes.setText(notes);
        idnotes.setEnabled(false);

        
        int spinner_position = 0;
   	   	switch (option_delai) 
   	   	{
  					case "0": // 1000 * 60 * 15 
  						spinner_position = 0;
   						break;
	    	   		case "900000": // 1000 * 60 * 15 
	    	   			spinner_position = 1;
	   					break;
	   				case "1800000": // 1000 * 60 * 30
	   					spinner_position = 2;
	   					break;
	   				case "3600000": // 1000 * 60 * 60
	   					spinner_position = 3;
	   					break;
	   	}

	    // affectation    
	    Spinner_alarm.setSelection(spinner_position);
		
	    if(option_ringtone.equals("ringtone"))
		{
			rb_ringtone.setChecked(true);
			rb_vibrate.setChecked(false);
		}
		if(option_ringtone.equals("noringtone"))
		{
			rb_ringtone.setChecked(false);
			rb_vibrate.setChecked(true);
		}
	
		if(option_vibrate.equals("vibrate"))
		{
	        rb_vibrate.setChecked(true);
			rb_ringtone.setChecked(false);
		}
		if(option_vibrate.equals("novibrate"))
		{
	        rb_vibrate.setChecked(false);
			rb_ringtone.setChecked(true);
		}

        
        btn_phone = (Button) findViewById(567);

        if(phone.length() == 10)
        {
        	btn_phone.setVisibility(View.VISIBLE);
        }
        else
        {
        	btn_phone.setVisibility(View.INVISIBLE);
        }
       
    	btn_phone.setOnClickListener(new OnClickListener() 
 	    {
 				@Override
 				public void onClick(View arg0) 
 				{
			        EditText phone = (EditText)findViewById(100);  
			        String string_phone = phone.getText().toString();
 					//String telno = "0951747420";
 		            //Toast.makeText(infos_appointment02.this, "Changed", Toast.LENGTH_SHORT).show();
 					Intent intent = new Intent(Intent.ACTION_CALL);
 					intent.setData(Uri.parse("tel:"+string_phone ));//provide the phone number
 					startActivity(intent);//call
 				}
 	   });		
        
        
/********************************************************************/
        
        Button btn_supprimer = (Button) findViewById(2);
        btn_supprimer.setOnClickListener(new OnClickListener() 
 	    {
 				@Override
 				public void onClick(View arg0) 
 				{
 					//Toast.makeText(getApplicationContext(), "Supprimer", Toast.LENGTH_LONG).show();
 					
 					delete_appointment();
 				}
 	    });
		
        
        Button btn_quitter = (Button) findViewById(3);
        btn_quitter.setOnClickListener(new OnClickListener() 
 	    {
 				@Override
 				public void onClick(View arg0) 
 				{
 					finish();
 				}
 	    });
        
	}
	
	private static String pad(int c)
	{
		if (c >= 10)
		   return String.valueOf(c);
		else
		   return "0" + String.valueOf(c);
	}
		
	/********************************************/
	
	public void delete_appointment()
    {
    	
							AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

							alertDialogBuilder.setTitle("Confirmation");
			
							// set dialog message
							alertDialogBuilder
							.setMessage("Click yes to delete !")
							.setCancelable(false)
							.setPositiveButton("Yes",new DialogInterface.OnClickListener()
							{
								public void onClick(DialogInterface dialog,int id)
								{
									Toast.makeText(getApplicationContext(), "Suppression du rendez-vous OK", Toast.LENGTH_LONG).show();
									//db.delete_appointment(sid); 
//				 					Intent cancelThis = new Intent(infos_appointment.this, AlarmService.class);
//				 					cancelThis.putExtra("ALARMID", String.valueOf(index));
//				 					cancelThis.putExtra("TITRE", "");
//				 					cancelThis.putExtra("startTime", "");
//				 					cancelThis.setAction(AlarmService.CANCEL);
//				 					startService(cancelThis);

									
									
									//db.cancelNotification(sid);
									
									db.delete_appointment(sid);
									Intent cancelThis = new Intent(infos_appointment03.this, AlarmService.class);
									
			 						long indice = Long.parseLong(sid);   

									
									cancelThis.putExtra("ALARMID", indice );
									//cancelThis.putExtra("ALARMID", sid);
				 					
									cancelThis.putExtra("TITRE", "");
				 					cancelThis.putExtra("startTime", "");
									cancelThis.setAction(AlarmService.CANCEL);
									startService(cancelThis);
									
									String coco = "5";
									int a = coco.length();
									
									finish();
									
									//refresh = true;

									
								}
							})
							
							.setNegativeButton("No",new DialogInterface.OnClickListener()
							{
								public void onClick(DialogInterface dialog,int id)
								{
									dialog.cancel();
									//Toast.makeText(getApplicationContext(), "No", Toast.LENGTH_LONG).show();
								}
							});

							// create alert dialog
							AlertDialog alertDialog = alertDialogBuilder.create();

							// show it
							alertDialog.show();
    }
	
	
	
	public LinearLayout createLayout(int Orientation)
	{
			LinearLayout lay = new LinearLayout(this);		
			lay.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
			lay.setOrientation(Orientation);
			return lay;
	}
	
		
    /********************************************************/
    
	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		getMenuInflater().inflate(R.menu.menu_infos_appointment, menu);
		return true;
	}


	@Override
	public boolean onOptionsItemSelected(MenuItem item)
	{
	      switch (item.getItemId())
	      {
	      		case android.R.id.home:
	      			this.finish();
	      			return true;
	      
	      		case R.id.edit:
	      			Toast.makeText(getApplicationContext(),"Edition du rendez-vous",Toast.LENGTH_SHORT).show();
	      			Intent Intent = new Intent(infos_appointment03.this, edit_infos_appointment.class);
	      			Intent.putExtra("index", index);
		            Intent.putExtra("date_selection", date_selection);
	      			startActivity(Intent);
	      			return true;

	      		default:
	      			return super.onOptionsItemSelected(item);
		 }
	}

	
	/*****************************************/

	
	
}